vulkan 2.1.0.0 → 3.0.0.0
raw patch · 694 files changed
+136576/−75511 lines, 694 filesdep +bytestringdep +extradep +manageddep −cpphsdep ~basedep ~vector-sizednew-component:exe:infonew-component:exe:sdl-triangle
Dependencies added: bytestring, extra, managed, pretty-show, pretty-simple, say, sdl2, text, transformers, vector, vulkan
Dependencies removed: cpphs
Dependency ranges changed: base, vector-sized
Files
- changelog.md +4/−0
- default.nix +99/−0
- examples/info/Main.hs +27/−0
- examples/sdl-triangle/DebugCallback.c +12/−0
- examples/sdl-triangle/Main.hs +654/−0
- examples/sdl-triangle/shader.frag +10/−0
- examples/sdl-triangle/shader.vert +21/−0
- readme.md +188/−19
- src/Graphics/Vulkan.hs +14/−14
- src/Graphics/Vulkan/CStruct.hs +52/−0
- src/Graphics/Vulkan/CStruct/Extends.hs +1314/−0
- src/Graphics/Vulkan/CStruct/Extends.hs-boot +33/−0
- src/Graphics/Vulkan/CStruct/Utils.hs +207/−0
- src/Graphics/Vulkan/Core10.hs +66/−59
- src/Graphics/Vulkan/Core10/APIConstants.hs +226/−0
- src/Graphics/Vulkan/Core10/APIConstants.hs-boot +24/−0
- src/Graphics/Vulkan/Core10/AllocationCallbacks.hs +209/−0
- src/Graphics/Vulkan/Core10/AllocationCallbacks.hs-boot +13/−0
- src/Graphics/Vulkan/Core10/BaseType.hs +326/−0
- src/Graphics/Vulkan/Core10/BaseType.hs-boot +85/−0
- src/Graphics/Vulkan/Core10/Buffer.hs +362/−492
- src/Graphics/Vulkan/Core10/Buffer.hs-boot +17/−0
- src/Graphics/Vulkan/Core10/BufferView.hs +311/−219
- src/Graphics/Vulkan/Core10/BufferView.hs-boot +13/−0
- src/Graphics/Vulkan/Core10/CommandBuffer.hs +891/−837
- src/Graphics/Vulkan/Core10/CommandBuffer.hs-boot +37/−0
- src/Graphics/Vulkan/Core10/CommandBufferBuilding.hs +9843/−7981
- src/Graphics/Vulkan/Core10/CommandBufferBuilding.hs-boot +94/−0
- src/Graphics/Vulkan/Core10/CommandPool.hs +271/−291
- src/Graphics/Vulkan/Core10/CommandPool.hs-boot +13/−0
- src/Graphics/Vulkan/Core10/Constants.hs +0/−115
- src/Graphics/Vulkan/Core10/Core.hs +0/−3597
- src/Graphics/Vulkan/Core10/DescriptorSet.hs +2361/−1861
- src/Graphics/Vulkan/Core10/DescriptorSet.hs-boot +93/−0
- src/Graphics/Vulkan/Core10/Device.hs +841/−490
- src/Graphics/Vulkan/Core10/Device.hs-boot +28/−0
- src/Graphics/Vulkan/Core10/DeviceInitialization.hs +4638/−5492
- src/Graphics/Vulkan/Core10/DeviceInitialization.hs-boot +117/−0
- src/Graphics/Vulkan/Core10/Enums.hs +193/−0
- src/Graphics/Vulkan/Core10/Enums/AccessFlagBits.hs +392/−0
- src/Graphics/Vulkan/Core10/Enums/AttachmentDescriptionFlagBits.hs +50/−0
- src/Graphics/Vulkan/Core10/Enums/AttachmentLoadOp.hs +75/−0
- src/Graphics/Vulkan/Core10/Enums/AttachmentStoreOp.hs +71/−0
- src/Graphics/Vulkan/Core10/Enums/BlendFactor.hs +223/−0
- src/Graphics/Vulkan/Core10/Enums/BlendOp.hs +410/−0
- src/Graphics/Vulkan/Core10/Enums/BorderColor.hs +85/−0
- src/Graphics/Vulkan/Core10/Enums/BufferCreateFlagBits.hs +90/−0
- src/Graphics/Vulkan/Core10/Enums/BufferUsageFlagBits.hs +167/−0
- src/Graphics/Vulkan/Core10/Enums/BufferViewCreateFlags.hs +45/−0
- src/Graphics/Vulkan/Core10/Enums/ColorComponentFlagBits.hs +77/−0
- src/Graphics/Vulkan/Core10/Enums/CommandBufferLevel.hs +50/−0
- src/Graphics/Vulkan/Core10/Enums/CommandBufferResetFlagBits.hs +55/−0
- src/Graphics/Vulkan/Core10/Enums/CommandBufferResetFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core10/Enums/CommandBufferUsageFlagBits.hs +65/−0
- src/Graphics/Vulkan/Core10/Enums/CommandPoolCreateFlagBits.hs +73/−0
- src/Graphics/Vulkan/Core10/Enums/CommandPoolResetFlagBits.hs +51/−0
- src/Graphics/Vulkan/Core10/Enums/CommandPoolResetFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core10/Enums/CompareOp.hs +88/−0
- src/Graphics/Vulkan/Core10/Enums/ComponentSwizzle.hs +108/−0
- src/Graphics/Vulkan/Core10/Enums/CullModeFlagBits.hs +69/−0
- src/Graphics/Vulkan/Core10/Enums/DependencyFlagBits.hs +62/−0
- src/Graphics/Vulkan/Core10/Enums/DependencyFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core10/Enums/DescriptorPoolCreateFlagBits.hs +70/−0
- src/Graphics/Vulkan/Core10/Enums/DescriptorPoolResetFlags.hs +45/−0
- src/Graphics/Vulkan/Core10/Enums/DescriptorPoolResetFlags.hs-boot +7/−0
- src/Graphics/Vulkan/Core10/Enums/DescriptorSetLayoutCreateFlagBits.hs +66/−0
- src/Graphics/Vulkan/Core10/Enums/DescriptorType.hs +213/−0
- src/Graphics/Vulkan/Core10/Enums/DeviceCreateFlags.hs +45/−0
- src/Graphics/Vulkan/Core10/Enums/DeviceQueueCreateFlagBits.hs +49/−0
- src/Graphics/Vulkan/Core10/Enums/DynamicState.hs +246/−0
- src/Graphics/Vulkan/Core10/Enums/EventCreateFlags.hs +45/−0
- src/Graphics/Vulkan/Core10/Enums/FenceCreateFlagBits.hs +50/−0
- src/Graphics/Vulkan/Core10/Enums/Filter.hs +63/−0
- src/Graphics/Vulkan/Core10/Enums/Filter.hs-boot +7/−0
- src/Graphics/Vulkan/Core10/Enums/Format.hs +2443/−0
- src/Graphics/Vulkan/Core10/Enums/Format.hs-boot +7/−0
- src/Graphics/Vulkan/Core10/Enums/FormatFeatureFlagBits.hs +465/−0
- src/Graphics/Vulkan/Core10/Enums/FramebufferCreateFlagBits.hs +52/−0
- src/Graphics/Vulkan/Core10/Enums/FrontFace.hs +57/−0
- src/Graphics/Vulkan/Core10/Enums/ImageAspectFlagBits.hs +107/−0
- src/Graphics/Vulkan/Core10/Enums/ImageCreateFlagBits.hs +206/−0
- src/Graphics/Vulkan/Core10/Enums/ImageCreateFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core10/Enums/ImageLayout.hs +273/−0
- src/Graphics/Vulkan/Core10/Enums/ImageLayout.hs-boot +7/−0
- src/Graphics/Vulkan/Core10/Enums/ImageTiling.hs +72/−0
- src/Graphics/Vulkan/Core10/Enums/ImageTiling.hs-boot +7/−0
- src/Graphics/Vulkan/Core10/Enums/ImageType.hs +61/−0
- src/Graphics/Vulkan/Core10/Enums/ImageType.hs-boot +7/−0
- src/Graphics/Vulkan/Core10/Enums/ImageUsageFlagBits.hs +129/−0
- src/Graphics/Vulkan/Core10/Enums/ImageUsageFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core10/Enums/ImageViewCreateFlagBits.hs +52/−0
- src/Graphics/Vulkan/Core10/Enums/ImageViewType.hs +91/−0
- src/Graphics/Vulkan/Core10/Enums/IndexType.hs +67/−0
- src/Graphics/Vulkan/Core10/Enums/IndexType.hs-boot +7/−0
- src/Graphics/Vulkan/Core10/Enums/InstanceCreateFlags.hs +45/−0
- src/Graphics/Vulkan/Core10/Enums/InternalAllocationType.hs +46/−0
- src/Graphics/Vulkan/Core10/Enums/LogicOp.hs +195/−0
- src/Graphics/Vulkan/Core10/Enums/MemoryHeapFlagBits.hs +60/−0
- src/Graphics/Vulkan/Core10/Enums/MemoryMapFlags.hs +45/−0
- src/Graphics/Vulkan/Core10/Enums/MemoryMapFlags.hs-boot +7/−0
- src/Graphics/Vulkan/Core10/Enums/MemoryPropertyFlagBits.hs +136/−0
- src/Graphics/Vulkan/Core10/Enums/ObjectType.hs +361/−0
- src/Graphics/Vulkan/Core10/Enums/PhysicalDeviceType.hs +80/−0
- src/Graphics/Vulkan/Core10/Enums/PipelineBindPoint.hs +64/−0
- src/Graphics/Vulkan/Core10/Enums/PipelineBindPoint.hs-boot +7/−0
- src/Graphics/Vulkan/Core10/Enums/PipelineCacheCreateFlags.hs +45/−0
- src/Graphics/Vulkan/Core10/Enums/PipelineCacheHeaderVersion.hs +47/−0
- src/Graphics/Vulkan/Core10/Enums/PipelineColorBlendStateCreateFlags.hs +45/−0
- src/Graphics/Vulkan/Core10/Enums/PipelineCreateFlagBits.hs +117/−0
- src/Graphics/Vulkan/Core10/Enums/PipelineDepthStencilStateCreateFlags.hs +45/−0
- src/Graphics/Vulkan/Core10/Enums/PipelineDynamicStateCreateFlags.hs +45/−0
- src/Graphics/Vulkan/Core10/Enums/PipelineInputAssemblyStateCreateFlags.hs +45/−0
- src/Graphics/Vulkan/Core10/Enums/PipelineLayoutCreateFlags.hs +45/−0
- src/Graphics/Vulkan/Core10/Enums/PipelineMultisampleStateCreateFlags.hs +45/−0
- src/Graphics/Vulkan/Core10/Enums/PipelineRasterizationStateCreateFlags.hs +45/−0
- src/Graphics/Vulkan/Core10/Enums/PipelineShaderStageCreateFlagBits.hs +77/−0
- src/Graphics/Vulkan/Core10/Enums/PipelineStageFlagBits.hs +295/−0
- src/Graphics/Vulkan/Core10/Enums/PipelineStageFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core10/Enums/PipelineTessellationStateCreateFlags.hs +45/−0
- src/Graphics/Vulkan/Core10/Enums/PipelineVertexInputStateCreateFlags.hs +45/−0
- src/Graphics/Vulkan/Core10/Enums/PipelineViewportStateCreateFlags.hs +45/−0
- src/Graphics/Vulkan/Core10/Enums/PolygonMode.hs +88/−0
- src/Graphics/Vulkan/Core10/Enums/PrimitiveTopology.hs +152/−0
- src/Graphics/Vulkan/Core10/Enums/QueryControlFlagBits.hs +49/−0
- src/Graphics/Vulkan/Core10/Enums/QueryControlFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core10/Enums/QueryPipelineStatisticFlagBits.hs +190/−0
- src/Graphics/Vulkan/Core10/Enums/QueryPoolCreateFlags.hs +45/−0
- src/Graphics/Vulkan/Core10/Enums/QueryResultFlagBits.hs +69/−0
- src/Graphics/Vulkan/Core10/Enums/QueryResultFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core10/Enums/QueryType.hs +88/−0
- src/Graphics/Vulkan/Core10/Enums/QueryType.hs-boot +7/−0
- src/Graphics/Vulkan/Core10/Enums/QueueFlagBits.hs +117/−0
- src/Graphics/Vulkan/Core10/Enums/RenderPassCreateFlagBits.hs +51/−0
- src/Graphics/Vulkan/Core10/Enums/Result.hs +307/−0
- src/Graphics/Vulkan/Core10/Enums/Result.hs-boot +7/−0
- src/Graphics/Vulkan/Core10/Enums/SampleCountFlagBits.hs +88/−0
- src/Graphics/Vulkan/Core10/Enums/SampleCountFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core10/Enums/SamplerAddressMode.hs +78/−0
- src/Graphics/Vulkan/Core10/Enums/SamplerCreateFlagBits.hs +70/−0
- src/Graphics/Vulkan/Core10/Enums/SamplerMipmapMode.hs +55/−0
- src/Graphics/Vulkan/Core10/Enums/SemaphoreCreateFlags.hs +45/−0
- src/Graphics/Vulkan/Core10/Enums/ShaderModuleCreateFlagBits.hs +40/−0
- src/Graphics/Vulkan/Core10/Enums/ShaderStageFlagBits.hs +139/−0
- src/Graphics/Vulkan/Core10/Enums/ShaderStageFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core10/Enums/SharingMode.hs +96/−0
- src/Graphics/Vulkan/Core10/Enums/SparseImageFormatFlagBits.hs +65/−0
- src/Graphics/Vulkan/Core10/Enums/SparseMemoryBindFlagBits.hs +50/−0
- src/Graphics/Vulkan/Core10/Enums/StencilFaceFlagBits.hs +63/−0
- src/Graphics/Vulkan/Core10/Enums/StencilFaceFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core10/Enums/StencilOp.hs +115/−0
- src/Graphics/Vulkan/Core10/Enums/StructureType.hs +2867/−0
- src/Graphics/Vulkan/Core10/Enums/SubpassContents.hs +61/−0
- src/Graphics/Vulkan/Core10/Enums/SubpassContents.hs-boot +7/−0
- src/Graphics/Vulkan/Core10/Enums/SubpassDescriptionFlagBits.hs +61/−0
- src/Graphics/Vulkan/Core10/Enums/SystemAllocationScope.hs +134/−0
- src/Graphics/Vulkan/Core10/Enums/VendorId.hs +76/−0
- src/Graphics/Vulkan/Core10/Enums/VertexInputRate.hs +53/−0
- src/Graphics/Vulkan/Core10/Event.hs +299/−242
- src/Graphics/Vulkan/Core10/Event.hs-boot +13/−0
- src/Graphics/Vulkan/Core10/ExtensionDiscovery.hs +183/−95
- src/Graphics/Vulkan/Core10/ExtensionDiscovery.hs-boot +13/−0
- src/Graphics/Vulkan/Core10/Fence.hs +363/−274
- src/Graphics/Vulkan/Core10/Fence.hs-boot +17/−0
- src/Graphics/Vulkan/Core10/FuncPointers.hs +235/−0
- src/Graphics/Vulkan/Core10/FuncPointers.hs-boot +16/−0
- src/Graphics/Vulkan/Core10/Handles.hs +970/−0
- src/Graphics/Vulkan/Core10/Handles.hs-boot +119/−0
- src/Graphics/Vulkan/Core10/Image.hs +1718/−1220
- src/Graphics/Vulkan/Core10/Image.hs-boot +36/−0
- src/Graphics/Vulkan/Core10/ImageView.hs +993/−1093
- src/Graphics/Vulkan/Core10/ImageView.hs-boot +27/−0
- src/Graphics/Vulkan/Core10/LayerDiscovery.hs +192/−116
- src/Graphics/Vulkan/Core10/LayerDiscovery.hs-boot +13/−0
- src/Graphics/Vulkan/Core10/Memory.hs +1242/−952
- src/Graphics/Vulkan/Core10/Memory.hs-boot +27/−0
- src/Graphics/Vulkan/Core10/MemoryManagement.hs +383/−297
- src/Graphics/Vulkan/Core10/MemoryManagement.hs-boot +13/−0
- src/Graphics/Vulkan/Core10/OtherTypes.hs +987/−0
- src/Graphics/Vulkan/Core10/OtherTypes.hs-boot +63/−0
- src/Graphics/Vulkan/Core10/Pass.hs +2338/−2079
- src/Graphics/Vulkan/Core10/Pass.hs-boot +64/−0
- src/Graphics/Vulkan/Core10/Pipeline.hs +3461/−4399
- src/Graphics/Vulkan/Core10/Pipeline.hs-boot +179/−0
- src/Graphics/Vulkan/Core10/PipelineCache.hs +327/−256
- src/Graphics/Vulkan/Core10/PipelineCache.hs-boot +13/−0
- src/Graphics/Vulkan/Core10/PipelineLayout.hs +518/−432
- src/Graphics/Vulkan/Core10/PipelineLayout.hs-boot +23/−0
- src/Graphics/Vulkan/Core10/Query.hs +601/−791
- src/Graphics/Vulkan/Core10/Query.hs-boot +17/−0
- src/Graphics/Vulkan/Core10/Queue.hs +792/−955
- src/Graphics/Vulkan/Core10/Queue.hs-boot +17/−0
- src/Graphics/Vulkan/Core10/QueueSemaphore.hs +212/−162
- src/Graphics/Vulkan/Core10/QueueSemaphore.hs-boot +17/−0
- src/Graphics/Vulkan/Core10/Sampler.hs +657/−790
- src/Graphics/Vulkan/Core10/Sampler.hs-boot +17/−0
- src/Graphics/Vulkan/Core10/Shader.hs +283/−203
- src/Graphics/Vulkan/Core10/Shader.hs-boot +17/−0
- src/Graphics/Vulkan/Core10/SharedTypes.hs +665/−0
- src/Graphics/Vulkan/Core10/SharedTypes.hs-boot +72/−0
- src/Graphics/Vulkan/Core10/SparseResourceMemoryManagement.hs +1321/−1198
- src/Graphics/Vulkan/Core10/SparseResourceMemoryManagement.hs-boot +81/−0
- src/Graphics/Vulkan/Core10/Version.hs +0/−97
- src/Graphics/Vulkan/Core11.hs +59/−58
- src/Graphics/Vulkan/Core11/DeviceInitialization.hs +39/−38
- src/Graphics/Vulkan/Core11/Enums.hs +41/−0
- src/Graphics/Vulkan/Core11/Enums/ChromaLocation.hs +54/−0
- src/Graphics/Vulkan/Core11/Enums/ChromaLocation.hs-boot +7/−0
- src/Graphics/Vulkan/Core11/Enums/CommandPoolTrimFlags.hs +46/−0
- src/Graphics/Vulkan/Core11/Enums/CommandPoolTrimFlags.hs-boot +7/−0
- src/Graphics/Vulkan/Core11/Enums/DescriptorUpdateTemplateCreateFlags.hs +45/−0
- src/Graphics/Vulkan/Core11/Enums/DescriptorUpdateTemplateCreateFlags.hs-boot +7/−0
- src/Graphics/Vulkan/Core11/Enums/DescriptorUpdateTemplateType.hs +54/−0
- src/Graphics/Vulkan/Core11/Enums/DescriptorUpdateTemplateType.hs-boot +7/−0
- src/Graphics/Vulkan/Core11/Enums/ExternalFenceFeatureFlagBits.hs +56/−0
- src/Graphics/Vulkan/Core11/Enums/ExternalFenceFeatureFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core11/Enums/ExternalFenceHandleTypeFlagBits.hs +111/−0
- src/Graphics/Vulkan/Core11/Enums/ExternalFenceHandleTypeFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core11/Enums/ExternalMemoryFeatureFlagBits.hs +85/−0
- src/Graphics/Vulkan/Core11/Enums/ExternalMemoryFeatureFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core11/Enums/ExternalMemoryHandleTypeFlagBits.hs +207/−0
- src/Graphics/Vulkan/Core11/Enums/ExternalMemoryHandleTypeFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core11/Enums/ExternalSemaphoreFeatureFlagBits.hs +56/−0
- src/Graphics/Vulkan/Core11/Enums/ExternalSemaphoreFeatureFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core11/Enums/ExternalSemaphoreHandleTypeFlagBits.hs +132/−0
- src/Graphics/Vulkan/Core11/Enums/ExternalSemaphoreHandleTypeFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core11/Enums/FenceImportFlagBits.hs +52/−0
- src/Graphics/Vulkan/Core11/Enums/FenceImportFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core11/Enums/MemoryAllocateFlagBits.hs +70/−0
- src/Graphics/Vulkan/Core11/Enums/MemoryAllocateFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core11/Enums/PeerMemoryFeatureFlagBits.hs +98/−0
- src/Graphics/Vulkan/Core11/Enums/PeerMemoryFeatureFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core11/Enums/PointClippingBehavior.hs +55/−0
- src/Graphics/Vulkan/Core11/Enums/PointClippingBehavior.hs-boot +7/−0
- src/Graphics/Vulkan/Core11/Enums/SamplerYcbcrModelConversion.hs +130/−0
- src/Graphics/Vulkan/Core11/Enums/SamplerYcbcrModelConversion.hs-boot +7/−0
- src/Graphics/Vulkan/Core11/Enums/SamplerYcbcrRange.hs +70/−0
- src/Graphics/Vulkan/Core11/Enums/SamplerYcbcrRange.hs-boot +7/−0
- src/Graphics/Vulkan/Core11/Enums/SemaphoreImportFlagBits.hs +56/−0
- src/Graphics/Vulkan/Core11/Enums/SemaphoreImportFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core11/Enums/SubgroupFeatureFlagBits.hs +101/−0
- src/Graphics/Vulkan/Core11/Enums/TessellationDomainOrigin.hs +60/−0
- src/Graphics/Vulkan/Core11/Enums/TessellationDomainOrigin.hs-boot +7/−0
- src/Graphics/Vulkan/Core11/Handles.hs +72/−0
- src/Graphics/Vulkan/Core11/Handles.hs-boot +12/−0
- src/Graphics/Vulkan/Core11/Originally_Based_On_VK_KHR_protected_memory.hs +376/−0
- src/Graphics/Vulkan/Core11/Originally_Based_On_VK_KHR_protected_memory.hs-boot +41/−0
- src/Graphics/Vulkan/Core11/Originally_Based_On_VK_KHR_subgroup.hs +142/−0
- src/Graphics/Vulkan/Core11/Originally_Based_On_VK_KHR_subgroup.hs-boot +13/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_16bit_storage.hs +114/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_16bit_storage.hs-boot +13/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_bind_memory2.hs +673/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_bind_memory2.hs-boot +28/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_dedicated_allocation.hs +354/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_dedicated_allocation.hs-boot +23/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_descriptor_update_template.hs +685/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_descriptor_update_template.hs-boot +23/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_device_group.hs +935/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_device_group.hs-boot +50/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.hs +307/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.hs-boot +23/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_device_group_creation.hs +324/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_device_group_creation.hs-boot +23/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_fence.hs +90/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_fence.hs-boot +13/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_fence_capabilities.hs +224/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_fence_capabilities.hs-boot +23/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_memory.hs +209/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_memory.hs-boot +32/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_memory_capabilities.hs +568/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_memory_capabilities.hs-boot +59/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore.hs +90/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore.hs-boot +13/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore_capabilities.hs +248/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore_capabilities.hs-boot +27/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs +535/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs-boot +60/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs +1469/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs-boot +96/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_maintenance1.hs +116/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_maintenance2.hs +342/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_maintenance2.hs-boot +50/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_maintenance3.hs +268/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_maintenance3.hs-boot +27/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_multiview.hs +403/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_multiview.hs-boot +32/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_protected_memory.hs +0/−328
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_sampler_ycbcr_conversion.hs +848/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_sampler_ycbcr_conversion.hs-boot +63/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_shader_draw_parameters.hs +91/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_shader_draw_parameters.hs-boot +13/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_subgroup.hs +0/−249
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_variable_pointers.hs +123/−0
- src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_variable_pointers.hs-boot +13/−0
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_16bit_storage.hs +0/−92
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_bind_memory2.hs +0/−472
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_dedicated_allocation.hs +0/−255
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_descriptor_update_template.hs +0/−637
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group.hs +0/−819
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.hs +0/−270
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group_creation.hs +0/−250
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_fence.hs +0/−144
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_fence_capabilities.hs +0/−379
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_memory.hs +0/−175
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_memory_capabilities.hs +0/−802
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_semaphore.hs +0/−151
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_semaphore_capabilities.hs +0/−396
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_get_memory_requirements2.hs +0/−390
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_get_physical_device_properties2.hs +0/−913
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance1.hs +0/−178
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance2.hs +0/−420
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance3.hs +0/−211
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_multiview.hs +0/−358
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_sampler_ycbcr_conversion.hs +0/−1389
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_shader_draw_parameters.hs +0/−68
- src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_variable_pointers.hs +0/−94
- src/Graphics/Vulkan/Core12.hs +1729/−0
- src/Graphics/Vulkan/Core12.hs-boot +41/−0
- src/Graphics/Vulkan/Core12/Enums.hs +17/−0
- src/Graphics/Vulkan/Core12/Enums/DescriptorBindingFlagBits.hs +115/−0
- src/Graphics/Vulkan/Core12/Enums/DescriptorBindingFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core12/Enums/DriverId.hs +127/−0
- src/Graphics/Vulkan/Core12/Enums/DriverId.hs-boot +7/−0
- src/Graphics/Vulkan/Core12/Enums/ResolveModeFlagBits.hs +74/−0
- src/Graphics/Vulkan/Core12/Enums/ResolveModeFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core12/Enums/SamplerReductionMode.hs +63/−0
- src/Graphics/Vulkan/Core12/Enums/SamplerReductionMode.hs-boot +7/−0
- src/Graphics/Vulkan/Core12/Enums/SemaphoreType.hs +57/−0
- src/Graphics/Vulkan/Core12/Enums/SemaphoreType.hs-boot +7/−0
- src/Graphics/Vulkan/Core12/Enums/SemaphoreWaitFlagBits.hs +58/−0
- src/Graphics/Vulkan/Core12/Enums/SemaphoreWaitFlagBits.hs-boot +11/−0
- src/Graphics/Vulkan/Core12/Enums/ShaderFloatControlsIndependence.hs +62/−0
- src/Graphics/Vulkan/Core12/Enums/ShaderFloatControlsIndependence.hs-boot +7/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_EXT_descriptor_indexing.hs +989/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_EXT_descriptor_indexing.hs-boot +50/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_EXT_host_query_reset.hs +173/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_EXT_host_query_reset.hs-boot +13/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_EXT_sampler_filter_minmax.hs +187/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_EXT_sampler_filter_minmax.hs-boot +23/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_EXT_scalar_block_layout.hs +89/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_EXT_scalar_block_layout.hs-boot +13/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_EXT_separate_stencil_usage.hs +118/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_EXT_separate_stencil_usage.hs-boot +13/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_8bit_storage.hs +100/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_8bit_storage.hs-boot +13/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_buffer_device_address.hs +625/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_buffer_device_address.hs-boot +50/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs +1990/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs-boot +75/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_depth_stencil_resolve.hs +289/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_depth_stencil_resolve.hs-boot +23/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_draw_indirect_count.hs +700/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_driver_properties.hs +178/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_driver_properties.hs-boot +23/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_image_format_list.hs +111/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_image_format_list.hs-boot +13/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_imageless_framebuffer.hs +353/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_imageless_framebuffer.hs-boot +41/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_separate_depth_stencil_layouts.hs +211/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_separate_depth_stencil_layouts.hs-boot +32/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_shader_atomic_int64.hs +81/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_shader_atomic_int64.hs-boot +13/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_shader_float16_int8.hs +94/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_shader_float16_int8.hs-boot +13/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_shader_float_controls.hs +243/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_shader_float_controls.hs-boot +13/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_shader_subgroup_extended_types.hs +94/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_shader_subgroup_extended_types.hs-boot +13/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_timeline_semaphore.hs +729/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_timeline_semaphore.hs-boot +59/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_uniform_buffer_standard_layout.hs +90/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_uniform_buffer_standard_layout.hs-boot +13/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_vulkan_memory_model.hs +95/−0
- src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_vulkan_memory_model.hs-boot +13/−0
- src/Graphics/Vulkan/Dynamic.hs +1440/−4490
- src/Graphics/Vulkan/Dynamic.hs-boot +11/−0
- src/Graphics/Vulkan/Exception.hs +49/−0
- src/Graphics/Vulkan/Extensions.hs +376/−284
- src/Graphics/Vulkan/Extensions/Handles.hs +356/−0
- src/Graphics/Vulkan/Extensions/Handles.hs-boot +48/−0
- src/Graphics/Vulkan/Extensions/VK_AMD_buffer_marker.hs +98/−85
- src/Graphics/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs +95/−0
- src/Graphics/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_AMD_display_native_hdr.hs +225/−0
- src/Graphics/Vulkan/Extensions/VK_AMD_display_native_hdr.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_AMD_draw_indirect_count.hs +24/−482
- src/Graphics/Vulkan/Extensions/VK_AMD_gcn_shader.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_AMD_gpu_shader_half_float.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_AMD_gpu_shader_int16.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_AMD_memory_overallocation_behavior.hs +149/−0
- src/Graphics/Vulkan/Extensions/VK_AMD_memory_overallocation_behavior.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_AMD_mixed_attachment_samples.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_AMD_negative_viewport_height.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs +127/−0
- src/Graphics/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_AMD_rasterization_order.hs +127/−122
- src/Graphics/Vulkan/Extensions/VK_AMD_rasterization_order.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_AMD_shader_ballot.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_AMD_shader_core_properties.hs +177/−164
- src/Graphics/Vulkan/Extensions/VK_AMD_shader_core_properties.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs +150/−0
- src/Graphics/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_AMD_shader_explicit_vertex_parameter.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_AMD_shader_fragment_mask.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_AMD_shader_image_load_store_lod.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_AMD_shader_info.hs +329/−216
- src/Graphics/Vulkan/Extensions/VK_AMD_shader_info.hs-boot +27/−0
- src/Graphics/Vulkan/Extensions/VK_AMD_shader_trinary_minmax.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs +83/−59
- src/Graphics/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs +575/−393
- src/Graphics/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs-boot +63/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs +114/−96
- src/Graphics/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs +215/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs +340/−495
- src/Graphics/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs-boot +32/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_buffer_device_address.hs +253/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_buffer_device_address.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs +371/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs-boot +18/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_conditional_rendering.hs +494/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_conditional_rendering.hs-boot +32/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs +328/−322
- src/Graphics/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_debug_marker.hs +416/−331
- src/Graphics/Vulkan/Extensions/VK_EXT_debug_marker.hs-boot +32/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_debug_report.hs +880/−846
- src/Graphics/Vulkan/Extensions/VK_EXT_debug_report.hs-boot +25/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_debug_utils.hs +1516/−1266
- src/Graphics/Vulkan/Extensions/VK_EXT_debug_utils.hs-boot +64/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs +211/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_depth_range_unrestricted.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_EXT_descriptor_indexing.hs +141/−1031
- src/Graphics/Vulkan/Extensions/VK_EXT_direct_mode_display.hs +54/−52
- src/Graphics/Vulkan/Extensions/VK_EXT_discard_rectangles.hs +282/−267
- src/Graphics/Vulkan/Extensions/VK_EXT_discard_rectangles.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_display_control.hs +520/−385
- src/Graphics/Vulkan/Extensions/VK_EXT_display_control.hs-boot +41/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_display_surface_counter.hs +311/−232
- src/Graphics/Vulkan/Extensions/VK_EXT_display_surface_counter.hs-boot +21/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_external_memory_dma_buf.hs +14/−22
- src/Graphics/Vulkan/Extensions/VK_EXT_external_memory_host.hs +258/−174
- src/Graphics/Vulkan/Extensions/VK_EXT_external_memory_host.hs-boot +32/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_filter_cubic.hs +179/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_filter_cubic.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_fragment_density_map.hs +314/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_fragment_density_map.hs-boot +32/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs +121/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs +631/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs-boot +32/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_global_priority.hs +134/−145
- src/Graphics/Vulkan/Extensions/VK_EXT_global_priority.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_hdr_metadata.hs +211/−133
- src/Graphics/Vulkan/Extensions/VK_EXT_hdr_metadata.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_headless_surface.hs +220/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_headless_surface.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_host_query_reset.hs +39/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs +659/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs-boot +59/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_index_type_uint8.hs +107/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_index_type_uint8.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs +329/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs-boot +41/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_line_rasterization.hs +475/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_line_rasterization.hs-boot +32/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_memory_budget.hs +138/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_memory_budget.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_memory_priority.hs +163/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_memory_priority.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_metal_surface.hs +232/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_metal_surface.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_pci_bus_info.hs +105/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_pci_bus_info.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_pipeline_creation_feedback.hs +324/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_pipeline_creation_feedback.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_post_depth_coverage.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_EXT_queue_family_foreign.hs +18/−24
- src/Graphics/Vulkan/Extensions/VK_EXT_sample_locations.hs +779/−661
- src/Graphics/Vulkan/Extensions/VK_EXT_sample_locations.hs-boot +77/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_sampler_filter_minmax.hs +60/−243
- src/Graphics/Vulkan/Extensions/VK_EXT_scalar_block_layout.hs +33/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_separate_stencil_usage.hs +33/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs +107/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_shader_stencil_export.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_EXT_shader_subgroup_ballot.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_EXT_shader_subgroup_vote.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_EXT_shader_viewport_index_layer.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs +300/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs-boot +32/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_swapchain_colorspace.hs +266/−73
- src/Graphics/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs +211/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_texture_compression_astc_hdr.hs +147/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_texture_compression_astc_hdr.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_tooling_info.hs +313/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_tooling_info.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_transform_feedback.hs +1502/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_transform_feedback.hs-boot +32/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_validation_cache.hs +449/−337
- src/Graphics/Vulkan/Extensions/VK_EXT_validation_cache.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_validation_features.hs +270/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_validation_features.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_validation_flags.hs +128/−123
- src/Graphics/Vulkan/Extensions/VK_EXT_validation_flags.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs +262/−128
- src/Graphics/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs-boot +41/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs +108/−0
- src/Graphics/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs +232/−0
- src/Graphics/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_GGP_frame_token.hs +88/−0
- src/Graphics/Vulkan/Extensions/VK_GGP_frame_token.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_GGP_stream_descriptor_surface.hs +234/−0
- src/Graphics/Vulkan/Extensions/VK_GGP_stream_descriptor_surface.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_GOOGLE_decorate_string.hs +22/−0
- src/Graphics/Vulkan/Extensions/VK_GOOGLE_display_timing.hs +360/−199
- src/Graphics/Vulkan/Extensions/VK_GOOGLE_display_timing.hs-boot +41/−0
- src/Graphics/Vulkan/Extensions/VK_GOOGLE_hlsl_functionality1.hs +22/−0
- src/Graphics/Vulkan/Extensions/VK_GOOGLE_user_type.hs +22/−0
- src/Graphics/Vulkan/Extensions/VK_IMG_filter_cubic.hs +14/−29
- src/Graphics/Vulkan/Extensions/VK_IMG_format_pvrtc.hs +14/−50
- src/Graphics/Vulkan/Extensions/VK_INTEL_performance_query.hs +1204/−0
- src/Graphics/Vulkan/Extensions/VK_INTEL_performance_query.hs-boot +72/−0
- src/Graphics/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs +106/−0
- src/Graphics/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_16bit_storage.hs +23/−42
- src/Graphics/Vulkan/Extensions/VK_KHR_8bit_storage.hs +33/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_android_surface.hs +208/−170
- src/Graphics/Vulkan/Extensions/VK_KHR_android_surface.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_bind_memory2.hs +49/−82
- src/Graphics/Vulkan/Extensions/VK_KHR_buffer_device_address.hs +133/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_create_renderpass2.hs +129/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_dedicated_allocation.hs +33/−59
- src/Graphics/Vulkan/Extensions/VK_KHR_depth_stencil_resolve.hs +92/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_descriptor_update_template.hs +79/−113
- src/Graphics/Vulkan/Extensions/VK_KHR_device_group.hs +208/−203
- src/Graphics/Vulkan/Extensions/VK_KHR_device_group_creation.hs +48/−84
- src/Graphics/Vulkan/Extensions/VK_KHR_display.hs +1502/−1087
- src/Graphics/Vulkan/Extensions/VK_KHR_display.hs-boot +68/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_display_swapchain.hs +227/−149
- src/Graphics/Vulkan/Extensions/VK_KHR_display_swapchain.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_draw_indirect_count.hs +33/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_driver_properties.hs +129/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_external_fence.hs +41/−56
- src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_capabilities.hs +105/−104
- src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_fd.hs +277/−213
- src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_fd.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_win32.hs +344/−255
- src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_win32.hs-boot +32/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_external_memory.hs +53/−82
- src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_capabilities.hs +163/−189
- src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_fd.hs +274/−220
- src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_fd.hs-boot +32/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_win32.hs +365/−272
- src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_win32.hs-boot +41/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore.hs +41/−56
- src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_capabilities.hs +112/−109
- src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs +303/−207
- src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs +491/−325
- src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs-boot +41/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_get_display_properties2.hs +653/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_get_display_properties2.hs-boot +50/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs +69/−116
- src/Graphics/Vulkan/Extensions/VK_KHR_get_physical_device_properties2.hs +130/−187
- src/Graphics/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs +410/−198
- src/Graphics/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs-boot +37/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_image_format_list.hs +23/−96
- src/Graphics/Vulkan/Extensions/VK_KHR_imageless_framebuffer.hs +76/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_incremental_present.hs +195/−126
- src/Graphics/Vulkan/Extensions/VK_KHR_incremental_present.hs-boot +32/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_maintenance1.hs +51/−61
- src/Graphics/Vulkan/Extensions/VK_KHR_maintenance2.hs +113/−143
- src/Graphics/Vulkan/Extensions/VK_KHR_maintenance3.hs +38/−69
- src/Graphics/Vulkan/Extensions/VK_KHR_mir_surface.hs +0/−249
- src/Graphics/Vulkan/Extensions/VK_KHR_multiview.hs +48/−80
- src/Graphics/Vulkan/Extensions/VK_KHR_performance_query.hs +1130/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_performance_query.hs-boot +68/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs +947/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs-boot +59/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_push_descriptor.hs +279/−233
- src/Graphics/Vulkan/Extensions/VK_KHR_push_descriptor.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_relaxed_block_layout.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_KHR_sampler_mirror_clamp_to_edge.hs +19/−25
- src/Graphics/Vulkan/Extensions/VK_KHR_sampler_ycbcr_conversion.hs +406/−385
- src/Graphics/Vulkan/Extensions/VK_KHR_separate_depth_stencil_layouts.hs +81/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_shader_atomic_int64.hs +33/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_shader_clock.hs +108/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_shader_clock.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_shader_draw_parameters.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_KHR_shader_float16_int8.hs +43/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_shader_float_controls.hs +57/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_shader_non_semantic_info.hs +22/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_shader_subgroup_extended_types.hs +33/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_shared_presentable_image.hs +295/−119
- src/Graphics/Vulkan/Extensions/VK_KHR_shared_presentable_image.hs-boot +18/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_spirv_1_4.hs +22/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_storage_buffer_storage_class.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_KHR_surface.hs +748/−1112
- src/Graphics/Vulkan/Extensions/VK_KHR_surface.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_surface_protected_capabilities.hs +95/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_surface_protected_capabilities.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_swapchain.hs +2494/−1960
- src/Graphics/Vulkan/Extensions/VK_KHR_swapchain.hs-boot +89/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_swapchain_mutable_format.hs +25/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_timeline_semaphore.hs +148/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_uniform_buffer_standard_layout.hs +33/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_variable_pointers.hs +33/−42
- src/Graphics/Vulkan/Extensions/VK_KHR_vulkan_memory_model.hs +33/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_wayland_surface.hs +227/−189
- src/Graphics/Vulkan/Extensions/VK_KHR_wayland_surface.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs +164/−102
- src/Graphics/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_win32_surface.hs +233/−184
- src/Graphics/Vulkan/Extensions/VK_KHR_win32_surface.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_xcb_surface.hs +230/−191
- src/Graphics/Vulkan/Extensions/VK_KHR_xcb_surface.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_KHR_xlib_surface.hs +232/−191
- src/Graphics/Vulkan/Extensions/VK_KHR_xlib_surface.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_MVK_ios_surface.hs +187/−156
- src/Graphics/Vulkan/Extensions/VK_MVK_ios_surface.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_MVK_macos_surface.hs +188/−156
- src/Graphics/Vulkan/Extensions/VK_MVK_macos_surface.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_NN_vi_surface.hs +197/−163
- src/Graphics/Vulkan/Extensions/VK_NN_vi_surface.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_NVX_device_generated_commands.hs +2365/−1894
- src/Graphics/Vulkan/Extensions/VK_NVX_device_generated_commands.hs-boot +135/−0
- src/Graphics/Vulkan/Extensions/VK_NVX_image_view_handle.hs +198/−0
- src/Graphics/Vulkan/Extensions/VK_NVX_image_view_handle.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs +84/−87
- src/Graphics/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs +191/−147
- src/Graphics/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs +118/−0
- src/Graphics/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_NV_cooperative_matrix.hs +545/−0
- src/Graphics/Vulkan/Extensions/VK_NV_cooperative_matrix.hs-boot +32/−0
- src/Graphics/Vulkan/Extensions/VK_NV_corner_sampled_image.hs +109/−0
- src/Graphics/Vulkan/Extensions/VK_NV_corner_sampled_image.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs +463/−0
- src/Graphics/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs-boot +32/−0
- src/Graphics/Vulkan/Extensions/VK_NV_dedicated_allocation.hs +226/−155
- src/Graphics/Vulkan/Extensions/VK_NV_dedicated_allocation.hs-boot +32/−0
- src/Graphics/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs +107/−0
- src/Graphics/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs +301/−0
- src/Graphics/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_NV_external_memory.hs +120/−102
- src/Graphics/Vulkan/Extensions/VK_NV_external_memory.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs +282/−310
- src/Graphics/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs-boot +21/−0
- src/Graphics/Vulkan/Extensions/VK_NV_external_memory_win32.hs +201/−174
- src/Graphics/Vulkan/Extensions/VK_NV_external_memory_win32.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_NV_fill_rectangle.hs +14/−22
- src/Graphics/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs +155/−138
- src/Graphics/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs +112/−0
- src/Graphics/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs +238/−211
- src/Graphics/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_NV_geometry_shader_passthrough.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_NV_glsl_shader.hs +14/−22
- src/Graphics/Vulkan/Extensions/VK_NV_mesh_shader.hs +1261/−0
- src/Graphics/Vulkan/Extensions/VK_NV_mesh_shader.hs-boot +32/−0
- src/Graphics/Vulkan/Extensions/VK_NV_ray_tracing.hs +3066/−0
- src/Graphics/Vulkan/Extensions/VK_NV_ray_tracing.hs-boot +121/−0
- src/Graphics/Vulkan/Extensions/VK_NV_representative_fragment_test.hs +168/−0
- src/Graphics/Vulkan/Extensions/VK_NV_representative_fragment_test.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_NV_sample_mask_override_coverage.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_NV_scissor_exclusive.hs +336/−0
- src/Graphics/Vulkan/Extensions/VK_NV_scissor_exclusive.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_NV_shader_image_footprint.hs +105/−0
- src/Graphics/Vulkan/Extensions/VK_NV_shader_image_footprint.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs +174/−0
- src/Graphics/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_NV_shader_subgroup_partitioned.hs +14/−24
- src/Graphics/Vulkan/Extensions/VK_NV_shading_rate_image.hs +1125/−0
- src/Graphics/Vulkan/Extensions/VK_NV_shading_rate_image.hs-boot +72/−0
- src/Graphics/Vulkan/Extensions/VK_NV_viewport_array2.hs +14/−16
- src/Graphics/Vulkan/Extensions/VK_NV_viewport_swizzle.hs +252/−240
- src/Graphics/Vulkan/Extensions/VK_NV_viewport_swizzle.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/VK_NV_win32_keyed_mutex.hs +162/−101
- src/Graphics/Vulkan/Extensions/VK_NV_win32_keyed_mutex.hs-boot +13/−0
- src/Graphics/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs +174/−0
- src/Graphics/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs-boot +23/−0
- src/Graphics/Vulkan/Extensions/WSITypes.hs +95/−0
- src/Graphics/Vulkan/Extensions/WSITypes.hs-boot +38/−0
- src/Graphics/Vulkan/NamedType.hs +2/−11
- src/Graphics/Vulkan/Version.hs +37/−0
- src/Graphics/Vulkan/Zero.hs +87/−0
- vulkan.cabal +504/−298
changelog.md view
@@ -1,5 +1,9 @@ # Change Log +## [3.0.0.0] - 2020-02-29+ - Rewrite, bindings are now much more idiomatic Haskell+ - Add `sdl-triangle` and `info` examples+ ## [2.1.0.0] - 2018-04-22 - Expose dynamic loader from Graphics.Vulkan.Dymamic - Turn on platform specific features by default
+ default.nix view
@@ -0,0 +1,99 @@+{ pkgs ? import <nixpkgs> { }, compiler ? "ghc882"+, forShell ? pkgs.lib.inNixShell, hoogle ? forShell }:++let++ compiler' = if compiler != null then+ compiler+ else+ "ghc" + pkgs.lib.concatStrings+ (pkgs.lib.splitVersion pkgs.haskellPackages.ghc.version);++ targets = {+ vulkan = ./.;+ # generate-new = ./generate-new;+ };++ # Any overrides we require to the specified haskell package set+ haskellPackages = with pkgs.haskell.lib;+ pkgs.haskell.packages.${compiler'}.override {+ overrides = self: super:+ (pkgs.lib.mapAttrs (n: v: makeDrv n v) targets) // {+ #+ # Examples+ #+ sdl2 = overrideSrc super.sdl2 {+ src = pkgs.fetchFromGitHub {+ owner = "haskell-game";+ repo = "sdl2";+ rev = "45679ab73fe4113eeae3b17ecaa2bec3b00bfd81";+ sha256 = "0qnzjs23b9b1j6ixlvhjdmp0anlgv0jxg2mxccb3piwkp9hdj6l2";+ };+ };+ bytes = self.bytes_0_17;++ #+ # Generate+ #+ algebraic-graphs = dontCheck super.algebraic-graphs;+ first-class-families = doJailbreak super.first-class-families;+ inline-c = self.inline-c_0_9_0_0;+ polysemy-plugin = self.callCabal2nix "" ((pkgs.fetchFromGitHub {+ owner = "polysemy-research";+ repo = "polysemy";+ rev = "72dc96fbd13dba6d8e9767253b7298e00a781bee";+ sha256 = "09b1n71gjmhf4ggx2wlywxm11jl3qbmhnlmmchj8pyy3hczl6hb5";+ } + "/polysemy-plugin")) { };+ polysemy = self.callCabal2nix "" ((pkgs.fetchFromGitHub {+ owner = "polysemy-research";+ repo = "polysemy";+ rev = "72dc96fbd13dba6d8e9767253b7298e00a781bee";+ sha256 = "09b1n71gjmhf4ggx2wlywxm11jl3qbmhnlmmchj8pyy3hczl6hb5";+ })) { };+ polysemy-zoo = dontCheck (self.callCabal2nix ""+ ((pkgs.fetchFromGitHub {+ owner = "polysemy-research";+ repo = "polysemy-zoo";+ rev = "57c6012e196db7fe1ce7551f1f762cbddc71f095";+ sha256 = "18smd2c66gdn9585sdkn60ykvdvkbvkxrnnl9zix687dca6h9jw0";+ })) { });+ compact = doJailbreak super.compact;+ pandoc = appendPatch super.pandoc+ ./generate-new/patches/pandoc-haddock-tables.patch;+ } // pkgs.lib.optionalAttrs hoogle {+ ghc = super.ghc // { withPackages = super.ghc.withHoogle; };+ ghcWithPackages = p:+ self.ghc.withPackages+ (f: p f ++ (if forShell then [ f.process ] else [ ]));+ };+ };++ buildSet = pkgs.lib.foldl (ps: p: ps // { ${p.pname} = p; }) { } packages;+ packages = map (t: haskellPackages.${t}) (builtins.attrNames targets);+ tools = with pkgs; [ pkgconfig asciidoctor python3 vulkan-headers glslang ];++ # Generate a haskell derivation using the cabal2nix tool on `package.yaml`+ makeDrv = name: src:+ haskellPackages.callCabal2nixWithOptions "" src "--flag=build-examples" ({ }+ // pkgs.lib.optionalAttrs (name == "vulkan") {+ vulkan = pkgs.vulkan-loader;+ });++ addHoogleDatabase = drv:+ if hoogle then+ drv.overrideAttrs (attrs: {+ shellHook = attrs.shellHook + ''+ export HIE_HOOGLE_DATABASE="$(cat $(${pkgs.which}/bin/which hoogle) | sed -n -e 's|.*--database \(.*\.hoo\).*|\1|p')"+ '';+ })+ else+ drv;++in if forShell then+ addHoogleDatabase (haskellPackages.shellFor {+ packages = _: packages;+ buildInputs = tools;+ withHoogle = hoogle;+ })+else+ buildSet
+ examples/info/Main.hs view
@@ -0,0 +1,27 @@+module Main+ where++import Graphics.Vulkan.Version+import Graphics.Vulkan.Zero+import Graphics.Vulkan.Core10+import Text.Pretty.Simple+import Data.Foldable++main :: IO ()+main = withInstance zero Nothing $ \i -> do+ pPrint i+ (_, layers ) <- enumerateInstanceLayerProperties+ (_, extensions) <- enumerateInstanceExtensionProperties Nothing+ pPrint layers+ pPrint extensions+ (_, devices) <- enumeratePhysicalDevices i+ traverse_ deviceInfo devices++deviceInfo :: PhysicalDevice -> IO ()+deviceInfo p = do+ (_, extensions) <- enumerateDeviceExtensionProperties p Nothing+ (_, layers ) <- enumerateDeviceLayerProperties p+ traverse_ pPrint extensions+ traverse_ pPrint layers+ pPrint =<< getPhysicalDeviceFeatures p+ pPrint =<< getPhysicalDeviceProperties p
+ examples/sdl-triangle/DebugCallback.c view
@@ -0,0 +1,12 @@+#include <stdio.h>+#include <vulkan/vulkan.h>++VKAPI_ATTR VkBool32 VKAPI_CALL+debugCallback(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,+ VkDebugUtilsMessageTypeFlagsEXT messageType,+ const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData,+ void *pUserData) {+ /* if (messageSeverity >= VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT) */+ fprintf(stderr, "Validation: %s\n", pCallbackData->pMessage);+ return VK_FALSE;+}
+ examples/sdl-triangle/Main.hs view
@@ -0,0 +1,654 @@+{-# LANGUAGE OverloadedLists #-}+{-# OPTIONS_GHC -Wno-name-shadowing #-}++module Main where++import Control.Exception+import Control.Monad.Trans.Maybe+import Control.Monad+import Control.Monad.Extra+import Data.Ord+import Control.Monad.IO.Class+import Data.Bits+import Data.Traversable+import Foreign.Ptr ( castPtr )+import Data.List ( nub )+import qualified Data.ByteString as BS+import Data.Word+import Say+import System.Exit+import Data.String ( IsString )+import Data.Text hiding ( maximum )+import Control.Monad.Managed+import qualified Data.Vector as V+import Graphics.Vulkan.Core10+import Graphics.Vulkan.Core11+import Graphics.Vulkan.Extensions.VK_KHR_surface+import Graphics.Vulkan.Extensions.VK_KHR_swapchain+import Graphics.Vulkan.Extensions.VK_EXT_debug_utils+import Graphics.Vulkan.Zero+import Graphics.Vulkan.CStruct.Extends+import Graphics.Vulkan.Version+import qualified SDL+import qualified SDL.Video.Vulkan as SDL+import Control.Arrow ( (&&&) )++-- pattern (::&) :: Extensible a => a es -> Chain es -> a es+-- pattern a ::& es <- (id &&& getNext -> (a, es))+-- where a ::& es = setNext a es++-- pattern (:&) :: e -> Chain es -> Chain (e:es)+-- pattern e :& es = (e, es)++main :: IO ()+main = runManaged $ do+ managed_ withSDL++ VulkanWindow {..} <- withVulkanWindow appName windowWidth windowHeight+ renderPass <- Main.createRenderPass vwDevice vwFormat+ graphicsPipeline <- createGraphicsPipeline vwDevice+ renderPass+ vwExtent+ vwFormat+ framebuffers <- createFramebuffers vwDevice vwImageViews renderPass vwExtent+ commandBuffers <- createCommandBuffers vwDevice+ renderPass+ graphicsPipeline+ vwGraphicsQueueFamilyIndex+ framebuffers+ vwExtent+ (imageAvailableSemaphore, renderFinishedSemaphore) <- createSemaphores+ vwDevice+ SDL.showWindow vwSdlWindow+ liftIO . mainLoop $ drawFrame vwDevice+ vwSwapchain+ vwGraphicsQueue+ vwPresentQueue+ imageAvailableSemaphore+ renderFinishedSemaphore+ commandBuffers+ liftIO $ deviceWaitIdle vwDevice++mainLoop :: IO () -> IO ()+mainLoop draw = whileM $ do+ quit <- maybe False isQuitEvent <$> SDL.pollEvent+ if quit+ then pure False+ else do+ draw+ pure True++drawFrame+ :: Device+ -> SwapchainKHR+ -> Queue+ -> Queue+ -> Semaphore+ -> Semaphore+ -> V.Vector CommandBuffer+ -> IO ()+drawFrame dev swapchain graphicsQueue presentQueue imageAvailableSemaphore renderFinishedSemaphore commandBuffers+ = do+ (_, imageIndex) <- acquireNextImageKHR dev+ swapchain+ maxBound+ imageAvailableSemaphore+ zero+ let submitInfo = zero+ { waitSemaphores = [imageAvailableSemaphore]+ , waitDstStageMask = [PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT]+ , commandBuffers = [ commandBufferHandle+ $ commandBuffers+ V.! fromIntegral imageIndex+ ]+ , signalSemaphores = [renderFinishedSemaphore]+ }+ presentInfo = zero { waitSemaphores = [renderFinishedSemaphore]+ , swapchains = [swapchain]+ , imageIndices = [imageIndex]+ }+ queueSubmit graphicsQueue [submitInfo] zero+ _ <- queuePresentKHR presentQueue presentInfo+ pure ()++createSemaphores :: Device -> Managed (Semaphore, Semaphore)+createSemaphores dev = do+ imageAvailableSemaphore <- managed $ withSemaphore dev zero Nothing+ renderFinishedSemaphore <- managed $ withSemaphore dev zero Nothing+ pure (imageAvailableSemaphore, renderFinishedSemaphore)++createCommandBuffers+ :: Device+ -> RenderPass+ -> Pipeline+ -> Word32+ -> V.Vector Framebuffer+ -> Extent2D+ -> Managed (V.Vector CommandBuffer)+createCommandBuffers dev renderPass graphicsPipeline graphicsQueueFamilyIndex framebuffers swapchainExtent+ = do+ let commandPoolCreateInfo :: CommandPoolCreateInfo+ commandPoolCreateInfo =+ zero { queueFamilyIndex = graphicsQueueFamilyIndex }+ commandPool <- managed $ withCommandPool dev commandPoolCreateInfo Nothing+ let commandBufferAllocateInfo :: CommandBufferAllocateInfo+ commandBufferAllocateInfo = zero+ { commandPool = commandPool+ , level = COMMAND_BUFFER_LEVEL_PRIMARY+ , commandBufferCount = fromIntegral $ V.length framebuffers+ }+ buffers <- managed $ withCommandBuffers dev commandBufferAllocateInfo+ _ <- liftIO $ for (V.zip framebuffers buffers) $ \(framebuffer, buffer) ->+ useCommandBuffer+ buffer+ zero { flags = COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT }+ $ do+ let renderPassBeginInfo = zero+ { renderPass = renderPass+ , framebuffer = framebuffer+ , renderArea = Rect2D { offset = zero+ , extent = swapchainExtent+ }+ , clearValues = [Color (Float32 (0.1, 0.1, 0.1, 0))]+ }+ cmdBeginRenderPass buffer+ renderPassBeginInfo+ SUBPASS_CONTENTS_INLINE+ cmdBindPipeline buffer PIPELINE_BIND_POINT_GRAPHICS graphicsPipeline+ cmdDraw buffer 3 1 0 0+ cmdEndRenderPass buffer+ pure buffers++createShaders+ :: Device -> Managed (V.Vector (SomeStruct PipelineShaderStageCreateInfo))+createShaders dev = do+ frag <- liftIO $ BS.readFile "examples/sdl-triangle/frag.spv"+ vert <- liftIO $ BS.readFile "examples/sdl-triangle/vert.spv"+ fragModule <- managed $ withShaderModule dev zero { code = frag } Nothing+ vertModule <- managed $ withShaderModule dev zero { code = vert } Nothing+ let vertShaderStageCreateInfo = zero { stage = SHADER_STAGE_VERTEX_BIT+ , module' = vertModule+ , name = "main"+ }+ fragShaderStageCreateInfo = zero { stage = SHADER_STAGE_FRAGMENT_BIT+ , module' = fragModule+ , name = "main"+ }+ pure+ [SomeStruct vertShaderStageCreateInfo, SomeStruct fragShaderStageCreateInfo]++createRenderPass :: Device -> Format -> Managed RenderPass+createRenderPass dev swapchainImageFormat = do+ let+ attachmentDescription :: AttachmentDescription+ attachmentDescription = zero+ { format = swapchainImageFormat+ , samples = SAMPLE_COUNT_1_BIT+ , loadOp = ATTACHMENT_LOAD_OP_CLEAR+ , storeOp = ATTACHMENT_STORE_OP_STORE+ , stencilLoadOp = ATTACHMENT_LOAD_OP_DONT_CARE+ , stencilStoreOp = ATTACHMENT_STORE_OP_DONT_CARE+ , initialLayout = IMAGE_LAYOUT_UNDEFINED+ , finalLayout = IMAGE_LAYOUT_PRESENT_SRC_KHR+ }+ subpass :: SubpassDescription+ subpass = zero+ { pipelineBindPoint = PIPELINE_BIND_POINT_GRAPHICS+ , colorAttachments =+ [ zero { attachment = 0+ , layout = IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL+ }+ ]+ }+ subpassDependency :: SubpassDependency+ subpassDependency = zero+ { srcSubpass = SUBPASS_EXTERNAL+ , dstSubpass = 0+ , srcStageMask = PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT+ , srcAccessMask = zero+ , dstStageMask = PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT+ , dstAccessMask = ACCESS_COLOR_ATTACHMENT_READ_BIT+ .|. ACCESS_COLOR_ATTACHMENT_WRITE_BIT+ }+ managed $ withRenderPass+ dev+ zero { attachments = [attachmentDescription]+ , subpasses = [subpass]+ , dependencies = [subpassDependency]+ }+ Nothing++createGraphicsPipeline+ :: Device -> RenderPass -> Extent2D -> Format -> Managed Pipeline+createGraphicsPipeline dev renderPass swapchainExtent swapchainImageFormat = do+ shaderStages <- createShaders dev+ pipelineLayout <- managed $ withPipelineLayout dev zero Nothing+ let+ pipelineCreateInfo :: GraphicsPipelineCreateInfo '[]+ pipelineCreateInfo = zero+ { stages = shaderStages+ , vertexInputState = Just zero+ , inputAssemblyState = Just zero+ { topology = PRIMITIVE_TOPOLOGY_TRIANGLE_LIST+ , primitiveRestartEnable = False+ }+ , viewportState = Just . SomeStruct $ zero+ { viewports = Right+ [ Viewport+ { x = 0+ , y = 0+ , width = realToFrac (width (swapchainExtent :: Extent2D))+ , height = realToFrac (height (swapchainExtent :: Extent2D))+ , minDepth = 0+ , maxDepth = 1+ }+ ]+ , scissors = Right+ [Rect2D { offset = Offset2D 0 0, extent = swapchainExtent }]+ }+ , rasterizationState = SomeStruct $ zero+ { depthClampEnable = False+ , rasterizerDiscardEnable = False+ , lineWidth = 1+ , polygonMode = POLYGON_MODE_FILL+ , cullMode = CULL_MODE_NONE+ , frontFace = FRONT_FACE_CLOCKWISE+ , depthBiasEnable = False+ }+ , multisampleState = Just . SomeStruct $ zero+ { sampleShadingEnable = False+ , rasterizationSamples = SAMPLE_COUNT_1_BIT+ , minSampleShading = 1+ , sampleMask = [maxBound]+ }+ , depthStencilState = Nothing+ , colorBlendState = Just . SomeStruct $ zero+ { logicOpEnable = False+ , attachments = [ zero+ { colorWriteMask =+ COLOR_COMPONENT_R_BIT+ .|. COLOR_COMPONENT_G_BIT+ .|. COLOR_COMPONENT_B_BIT+ .|. COLOR_COMPONENT_A_BIT+ , blendEnable = False+ }+ ]+ }+ , dynamicState = Nothing+ , layout = pipelineLayout+ , renderPass = renderPass+ , subpass = 0+ , basePipelineHandle = zero+ }+ fmap V.head $ managed $ withGraphicsPipelines dev+ zero+ [pipelineCreateInfo]+ Nothing++createFramebuffers+ :: Device+ -> V.Vector ImageView+ -> RenderPass+ -> Extent2D+ -> Managed (V.Vector Framebuffer)+createFramebuffers dev imageViews renderPass swapchainExtent =+ for imageViews $ \imageView -> do+ let framebufferCreateInfo :: FramebufferCreateInfo '[]+ framebufferCreateInfo = zero+ { renderPass = renderPass+ , attachments = [imageView]+ , width = width (swapchainExtent :: Extent2D)+ , height = height (swapchainExtent :: Extent2D)+ , layers = 1+ }+ managed $ withFramebuffer dev framebufferCreateInfo Nothing++data VulkanWindow = VulkanWindow+ { vwSdlWindow :: SDL.Window+ , vwDevice :: Device+ , vwSurface :: SurfaceKHR+ , vwSwapchain :: SwapchainKHR+ , vwExtent :: Extent2D+ , vwFormat :: Format+ , vwImageViews :: V.Vector ImageView+ , vwGraphicsQueue :: Queue+ , vwGraphicsQueueFamilyIndex :: Word32+ , vwPresentQueue :: Queue+ }++withVulkanWindow :: Text -> Int -> Int -> Managed VulkanWindow+withVulkanWindow appName width height = do+ -- sayShow =<< SDL.vkLoadLibrary+ -- (Just+ -- "/nix/store/5q53qn1wbg3bpipjwniz565wc7asx9p-swiftshader-2020-03-31/lib/libvulkan.so.1"+ -- )+ -- sayShow "hello"+ -- sayShow =<< Raw.vkLoadLibrary (Ptr "/dev/nul"#)+ window <- managed $ withWindow appName width height+ instanceCreateInfo <- liftIO $ windowInstanceCreateInfo window+ inst <- managed $ withInstance instanceCreateInfo Nothing+ _ <- managed+ $ withDebugUtilsMessengerEXT inst debugUtilsMessengerCreateInfo Nothing+ liftIO $ submitDebugUtilsMessageEXT+ inst+ DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT+ DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT+ zero { message = "Debug Message Test" }+ surface <- managed $ withSDLWindowSurface inst window+ (dev, graphicsQueue, graphicsQueueFamilyIndex, presentQueue, swapchainFormat, swapchainExtent, swapchain) <-+ createGraphicalDevice inst surface+ (_, images) <- liftIO $ getSwapchainImagesKHR dev swapchain+ let imageViewCreateInfo i = zero+ { image = i+ , viewType = IMAGE_VIEW_TYPE_2D+ , format = swapchainFormat+ , components = zero { r = COMPONENT_SWIZZLE_IDENTITY+ , g = COMPONENT_SWIZZLE_IDENTITY+ , b = COMPONENT_SWIZZLE_IDENTITY+ , a = COMPONENT_SWIZZLE_IDENTITY+ }+ , subresourceRange = zero { aspectMask = IMAGE_ASPECT_COLOR_BIT+ , baseMipLevel = 0+ , levelCount = 1+ , baseArrayLayer = 0+ , layerCount = 1+ }+ }+ imageViews <- for images+ $ \i -> managed $ withImageView dev (imageViewCreateInfo i) Nothing+ pure $ VulkanWindow window+ dev+ surface+ swapchain+ swapchainExtent+ swapchainFormat+ imageViews+ graphicsQueue+ graphicsQueueFamilyIndex+ presentQueue++appName :: IsString a => a+appName = "vulkan triangle example"++windowWidth, windowHeight :: Int+windowWidth = 1920+windowHeight = 1080++-- | InstanceCreateInfo for an SDL window+windowInstanceCreateInfo+ :: SDL.Window -> IO (InstanceCreateInfo '[DebugUtilsMessengerCreateInfoEXT])+windowInstanceCreateInfo window = do+ windowExtensions <- traverse BS.packCString+ =<< SDL.vkGetInstanceExtensions window+ let requiredLayers = ["VK_LAYER_LUNARG_standard_validation"]+ requiredExtensions =+ V.fromList $ EXT_DEBUG_UTILS_EXTENSION_NAME : windowExtensions+ pure zero+ { next = (debugUtilsMessengerCreateInfo, ())+ , applicationInfo = Just zero { applicationName = Just appName+ , apiVersion = MAKE_VERSION 1 1 0+ }+ , enabledLayerNames = requiredLayers+ , enabledExtensionNames = requiredExtensions+ }++createGraphicalDevice+ :: Instance+ -> SurfaceKHR+ -> Managed+ (Device, Queue, Word32, Queue, Format, Extent2D, SwapchainKHR)+createGraphicalDevice inst surface = do+ let requiredDeviceExtensions = [KHR_SWAPCHAIN_EXTENSION_NAME]+ (physicalDevice, graphicsQueueFamilyIndex, presentQueueFamilyIndex, surfaceFormat, presentMode, surfaceCaps) <-+ liftIO $ pickGraphicalPhysicalDevice+ inst+ surface+ requiredDeviceExtensions+ (SurfaceFormatKHR FORMAT_B8G8R8_UNORM COLOR_SPACE_SRGB_NONLINEAR_KHR)+ let+ deviceCreateInfo :: DeviceCreateInfo '[]+ deviceCreateInfo = zero+ { queueCreateInfos = V.fromList+ [ SomeStruct $ zero { queueFamilyIndex = i+ , queuePriorities = [1]+ , flags = DEVICE_QUEUE_CREATE_PROTECTED_BIT+ }+ | i <- nub [graphicsQueueFamilyIndex, presentQueueFamilyIndex]+ ]+ , enabledExtensionNames = requiredDeviceExtensions+ }+ dev <- managed $ withDevice physicalDevice deviceCreateInfo Nothing+ graphicsQueue <- liftIO $ getDeviceQueue2+ dev+ zero { queueFamilyIndex = graphicsQueueFamilyIndex+ , flags = DEVICE_QUEUE_CREATE_PROTECTED_BIT+ }+ presentQueue <- liftIO $ getDeviceQueue2+ dev+ zero { queueFamilyIndex = presentQueueFamilyIndex+ , flags = DEVICE_QUEUE_CREATE_PROTECTED_BIT+ }+ let+ swapchainCreateInfo :: SwapchainCreateInfoKHR '[]+ swapchainCreateInfo =+ let (sharingMode, queueFamilyIndices) = if graphicsQueue == presentQueue+ then (SHARING_MODE_EXCLUSIVE, [])+ else+ ( SHARING_MODE_CONCURRENT+ , [graphicsQueueFamilyIndex, presentQueueFamilyIndex]+ )+ in+ zero+ { surface = surface+ , minImageCount = minImageCount+ (surfaceCaps :: SurfaceCapabilitiesKHR)+ + 1+ , imageFormat = (format :: SurfaceFormatKHR -> Format) surfaceFormat+ , imageColorSpace = colorSpace surfaceFormat+ , imageExtent = case+ currentExtent+ (surfaceCaps :: SurfaceCapabilitiesKHR)+ of+ Extent2D w h | w == maxBound, h == maxBound ->+ Extent2D (fromIntegral windowWidth)+ (fromIntegral windowHeight)+ e -> e+ , imageArrayLayers = 1+ , imageUsage = IMAGE_USAGE_COLOR_ATTACHMENT_BIT+ , imageSharingMode = sharingMode+ , queueFamilyIndices = queueFamilyIndices+ , preTransform = currentTransform+ (surfaceCaps :: SurfaceCapabilitiesKHR)+ , compositeAlpha = COMPOSITE_ALPHA_OPAQUE_BIT_KHR+ , presentMode = presentMode+ , clipped = True+ }+ swapchain <- managed $ withSwapchainKHR dev swapchainCreateInfo Nothing+ pure+ ( dev+ , graphicsQueue+ , graphicsQueueFamilyIndex+ , presentQueue+ , format (surfaceFormat :: SurfaceFormatKHR)+ , imageExtent (swapchainCreateInfo :: SwapchainCreateInfoKHR '[])+ , swapchain+ )++-- | Find the device which has the most memory and a graphics queue family index+pickGraphicalPhysicalDevice+ :: Instance+ -> SurfaceKHR+ -> V.Vector BS.ByteString+ -> SurfaceFormatKHR+ -> IO+ ( PhysicalDevice+ , Word32+ , Word32+ , SurfaceFormatKHR+ , PresentModeKHR+ , SurfaceCapabilitiesKHR+ )+pickGraphicalPhysicalDevice inst surface requiredExtensions desiredFormat = do+ (_, devs) <- enumeratePhysicalDevices inst+ -- All devices with support for all the graphical features we want+ graphicsDevs <- fmap (V.mapMaybe id) . for devs $ \dev -> runMaybeT $ do+ graphicsQueue <- MaybeT $ headMay <$> getGraphicsQueueIndices dev+ presentQueue <- MaybeT $ headMay <$> getPresentQueueIndices dev+ guard =<< liftIO (deviceHasSwapChain dev)+ bestFormat <- getFormat dev+ presentMode <- getPresentMode dev+ surfaceCaps <- liftIO $ getPhysicalDeviceSurfaceCapabilitiesKHR dev surface+ score <- liftIO $ deviceScore dev+ pure+ ( score+ , (dev, graphicsQueue, presentQueue, bestFormat, presentMode, surfaceCaps)+ )+ if V.null graphicsDevs+ then do+ sayErr "No suitable devices found"+ exitFailure+ else pure . snd . V.maximumBy (comparing fst) $ graphicsDevs++ where+ headMay = \case+ [] -> Nothing+ xs -> Just (V.unsafeHead xs)++ deviceScore :: PhysicalDevice -> IO Word64+ deviceScore dev = do+ -- may be useful later...+ -- print =<< getPhysicalDeviceProperties2 @'[PhysicalDevicePushDescriptorPropertiesKHR] dev+ print =<< getPhysicalDeviceProperties2 @'[] dev+ print =<< getPhysicalDeviceFeatures dev+ heaps <- memoryHeaps <$> getPhysicalDeviceMemoryProperties dev+ let totalSize = sum $ (size :: MemoryHeap -> DeviceSize) <$> heaps+ pure totalSize++ deviceHasSwapChain :: PhysicalDevice -> IO Bool+ deviceHasSwapChain dev = do+ (_, extensions) <- enumerateDeviceExtensionProperties dev Nothing+ pure $ V.any ((KHR_SWAPCHAIN_EXTENSION_NAME ==) . extensionName) extensions++ getGraphicsQueueIndices :: PhysicalDevice -> IO (V.Vector Word32)+ getGraphicsQueueIndices dev = do+ queueFamilyProperties <- getPhysicalDeviceQueueFamilyProperties dev+ let isGraphicsQueue q =+ (QUEUE_GRAPHICS_BIT .&&. queueFlags q) && (queueCount q > 0)+ graphicsQueueIndices = fromIntegral . fst <$> V.filter+ (isGraphicsQueue . snd)+ (V.indexed queueFamilyProperties)+ pure graphicsQueueIndices++ getPresentQueueIndices :: PhysicalDevice -> IO (V.Vector Word32)+ getPresentQueueIndices dev = do+ -- TODO: implement getNum...+ numQueues <- V.length <$> getPhysicalDeviceQueueFamilyProperties2 @'[] dev+ let queueIndices = V.generate (fromIntegral numQueues) fromIntegral+ V.filterM+ (\i -> (True ==) <$> getPhysicalDeviceSurfaceSupportKHR dev i surface)+ queueIndices++ getFormat :: PhysicalDevice -> MaybeT IO SurfaceFormatKHR+ getFormat dev = do+ (_, formats) <- liftIO $ getPhysicalDeviceSurfaceFormatsKHR dev surface+ pure $ case formats of+ [] -> desiredFormat+ [SurfaceFormatKHR FORMAT_UNDEFINED _] -> desiredFormat+ _+ | V.any+ (\f ->+ format (f :: SurfaceFormatKHR)+ == format (desiredFormat :: SurfaceFormatKHR)+ && colorSpace (f :: SurfaceFormatKHR)+ == colorSpace (desiredFormat :: SurfaceFormatKHR)+ )+ formats+ -> desiredFormat+ _ -> V.head formats++ getPresentMode :: PhysicalDevice -> MaybeT IO PresentModeKHR+ getPresentMode dev = do+ (_, presentModes) <- liftIO+ $ getPhysicalDeviceSurfacePresentModesKHR dev surface+ let desiredPresentModes =+ [ PRESENT_MODE_MAILBOX_KHR+ , PRESENT_MODE_FIFO_KHR+ , PRESENT_MODE_IMMEDIATE_KHR+ ]+ MaybeT+ . pure+ . headMay+ . V.filter (`V.elem` presentModes)+ $ desiredPresentModes++----------------------------------------------------------------+-- Debugging+----------------------------------------------------------------++debugUtilsMessengerCreateInfo :: DebugUtilsMessengerCreateInfoEXT+debugUtilsMessengerCreateInfo = zero+ { messageSeverity = -- DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT+ -- .|. DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT+ -- .|.+ DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT+ .|. DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT+ , messageType = DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT+ .|. DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT+ .|. DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT+ , pfnUserCallback = debugCallbackPtr+ }++foreign import ccall unsafe "DebugCallback.c &debugCallback"+ debugCallbackPtr :: PFN_vkDebugUtilsMessengerCallbackEXT++----------------------------------------------------------------+-- SDL helpers+----------------------------------------------------------------++-- | Run something having initialized SDL+withSDL :: IO a -> IO a+withSDL =+ bracket_+ (SDL.initialize ([SDL.InitEvents, SDL.InitVideo] :: [SDL.InitFlag]))+ SDL.quit+ . bracket_ (SDL.vkLoadLibrary Nothing) SDL.vkUnloadLibrary++-- | Create an SDL window and use it+withWindow :: Text -> Int -> Int -> (SDL.Window -> IO a) -> IO a+withWindow title width height = bracket+ (SDL.createWindow+ title+ (SDL.defaultWindow+ { SDL.windowInitialSize = SDL.V2 (fromIntegral width)+ (fromIntegral height)+ , SDL.windowGraphicsContext = SDL.VulkanContext+ }+ )+ )+ SDL.destroyWindow++isQuitEvent :: SDL.Event -> Bool+isQuitEvent = \case+ (SDL.Event _ SDL.QuitEvent) -> True+ SDL.Event _ (SDL.KeyboardEvent (SDL.KeyboardEventData _ SDL.Released False (SDL.Keysym _ code _)))+ | code == SDL.KeycodeQ || code == SDL.KeycodeEscape+ -> True+ _ -> False++-- | Get the Vulkan surface for an SDL window+getSDLWindowSurface :: Instance -> SDL.Window -> IO SurfaceKHR+getSDLWindowSurface inst window =+ SurfaceKHR <$> SDL.vkCreateSurface window (castPtr (instanceHandle inst))++withSDLWindowSurface :: Instance -> SDL.Window -> (SurfaceKHR -> IO a) -> IO a+withSDLWindowSurface inst window = bracket+ (getSDLWindowSurface inst window)+ (\o -> destroySurfaceKHR inst o Nothing)++----------------------------------------------------------------+-- Bit utils+----------------------------------------------------------------++(.&&.) :: Bits a => a -> a -> Bool+x .&&. y = (/= zeroBits) (x .&. y)+
+ examples/sdl-triangle/shader.frag view
@@ -0,0 +1,10 @@+#version 450+#extension GL_ARB_separate_shader_objects : enable++layout(location = 0) in vec3 fragColor;++layout(location = 0) out vec4 outColor;++void main() {+ outColor = vec4(fragColor, 1.0);+}
+ examples/sdl-triangle/shader.vert view
@@ -0,0 +1,21 @@+#version 450+#extension GL_ARB_separate_shader_objects : enable++layout(location = 0) out vec3 fragColor;++vec2 positions[3] = vec2[](+ vec2(0.0, -0.5),+ vec2(0.5, 0.5),+ vec2(-0.5, 0.5)+);++vec3 colors[3] = vec3[](+ vec3(1.0, 1.0, 0.0),+ vec3(0.0, 1.0, 1.0),+ vec3(1.0, 0.0, 1.0)+);++void main() {+ gl_Position = vec4(positions[gl_VertexIndex], 0.0, 1.0);+ fragColor = colors[gl_VertexIndex];+}
readme.md view
@@ -1,34 +1,203 @@-# Vulkan+# vulkan -Haskell bindings to the Vulkan graphics API+Slightly high level Haskell bindings to the Vulkan graphics API. -## Building+These bindings present an interface to Vulkan which looks like more idiomatic+Haskell and which is much less verbose than the C API. Nevertheless, it retains+access to all the functionality. If you find something you can do in the C+bindings but not in these high level bindings please raise an issue. -This package requires GHC 8.0 or higher due to the use of the-`DuplicateRecordFields` and `Strict` language extensions.+These bindings are intended to be imported qualified and do not feature the+`Vk` prefixes on commands, structures, members or constants. -## Current Status+## Package structure -All the core Vulkan 1.0 and 1.1 functionality is here as well as all the extensions.+Types and functions are placed into modules according to the `features` and+`extensions` portions of the specification. As these sections only mention+functions, a best guess has to be made for types. Types and constants are drawn+in transitively according to the dependencies of the functions. -This is currently a 64 bit only library.+It should be sufficient to import `Graphics.Vulkan.CoreXX` along with+`Graphics.Vulkan.Extensions.{whatever extensions you want}`. You might want to+import `Graphics.Vulkan.Zero` too. -Examples can be found [here](https://github.com/expipiplus1/vulkan-examples)+## Things to know -## Differences from the vulkan API+- Documentation is included more or less verbatim from the Vulkan C API+ documentation. The parameters it references might not map one-to-one with+ what's in these bindings. It should be obvious in most cases what it's trying+ to say. -Bools are strongly typed, this doesn't prevent any valid usage apart from-passing the numeric literals `0` and `1` to functions.+- Parameters are named with the `:::` operator where it would be useful; this+ operator simply ignores the string on the left. -## Ideas+- There exists a `Zero` type class defined in+ [Graphics.Vulkan.Zero](src/Graphics/Vulkan/Zero.hs). This is a class for+ initializing values with all zero contents and empty arrays. It's very handy+ when initializing structs to use something like `zero { only = _, members =+ _, i = _, care = _, about = _ }`. -TODO: Move these to issues:+- The library is compiled with `-XStrict` so expect all record members to be+ strict and unboxed. -Wrappers for passing in size, pointer pair-Wrappers for passing in null terminated list+- Calls to Vulkan are marked as `unsafe` by default. This can be turned off by+ setting the `safe-foreign-calls` flag. This is to reduce FFI overhead,+ however it means that Vulkan functions are unable to safely call Haskell+ code. See the [Haskell+ wiki](https://wiki.haskell.org/Foreign_Function_Interface#Unsafe_calls) for+ more information. This is important to consider if you want to write+ allocation or debug callbacks in Haskell. -`withXXX` functions for `create`/`destroy` pairs.+- Vulkan structures are represented as Haskell records, may incur a copy+ when passing them to and from C (if GHC can't optimise this away), if you+ need an api where Vulkan structures can be handled without copying please+ check out the [vulkan-api](https://github.com/achirkin/vulkan#readme)+ package. -Haddock tables soon:-https://github.com/haskell/haddock/pull/718+- As encouraged by the Vulkan user guide, commands are linked dynamically (with+ the sole exception of `vkGetInstanceProcAddr`).+ - The function pointers are attached to any dispatchable handle to save you+ the trouble of passing them around.+ - The function pointers are+ retrieved by calling `vkGetInstanceProcAddr` and `vkGetDeviceProcAddr`. These+ are stored in two records `InstanceCmds` and `DeviceCmds` which store+ instance level and device level commands respectively. These tables can be+ initialized with the `initInstanceCmds` and `initDeviceCmds` found in+ [Graphics.Vulkan.Dynamic](src/Graphics/Vulkan/Dynamic.hs). +- There are nice `Read` and `Show` instances for the enums and bitmasks. These+ will, where possible, print and parse the pattern synonyms. For example one+ can do the following:++ ```haskell+ > show COMPARE_OP_LESS+ "COMPARE_OP_LESS"+ ```++### Minor things++- To prevent a name clash between the constructors of+ `VkClearColorValue` and `VkPerformanceCounterResultKHR` the latter have had+ `Counter` prefixed.++## How the C types relate to Haskell types++These bindings take advantage of the meta information present in the+specification detailing the validity of structures and arguments. A few+examples:++- If a structure or set of command parameters in the specification contains a+ pointer to an array and an associated length, this is replaced with a+ `Vector` in these bindings. When interfacing with Vulkan these bindings+ automatically set the length of the vector. If the vector is optional but the+ length is not then `Either Word32 (Vector a)` is used, use `Left n` to+ specify that there are `n` elements which you are not providing.++- If a struct member or command parameters in the specification is a optional+ pointer (it may be null) this is replaced with a `Maybe` value.++- If a struct has a member which can only have one possible value (the most+ common example is the `sType` member, then this member is elided.++- C string become `ByteString`. This is also the case for fixed length C+ strings, the library will truncate overly long strings in this case.++- Pointers to `void` accompanied by a length in bytes become `ByteString`++- Shader code is represented as `ByteString`++- `VkBool32` becomes `Bool`++- Some Vulkan commands or structs take several arrays which must be the same+ length. These are currently exposed as several `Vector` arguments which must+ be the same length. If they are not the same length an exception is thrown.++If anything is unclear please raise an issue. The marshaling to and from+Haskell and C is automatically generated and I've not checked every single+function. It's possible that there are some commands or structs which could be+represented better in Haskell, if so please also raise an issue.++### Vulkan errors++If a Vulkan command has the `VkResult` type as a return value, this is checked+and a `VulkanException` is thrown if it is not a success code. If the only+success code a command can return is `VK_SUCCESS` then this is elided from the+return type. If a command can return other success codes, for instance+`VK_EVENT_SET` then the success code is exposed.++### Bracketing commands++There are certain sets commands which must be called in pairs, for instance the+`create` and `destroy` commands for using resources. In order to facilitate+safe use of these commands, i.e. ensure that the corresponding `destroy`+command is always called, these bindings expose `with` commands, which use+`bracket` to. These pairs of commands aren't explicit in the specification, so+a list of them is maintained in the generation code, if you see something+missing please open an issue (these pairs are generated in `Bracket.hs`). An+example is `withInstance` which calls `createInstance` and `destroyInstance`.++At the moment only continuation passing style functions are implemented; it+shouldn't be too hard to implement these functions using `ResourceT` or+whatever other resource handling Monad though.++### Dual use commands++Certain commands, such as `vkEnumerateDeviceLayerProperties` or+`vkGetDisplayModePropertiesKHR`, have a dual use. If they are not given a+pointer to return an array of results then they instead return the total number+of possible results, otherwise they return a number of results. There is an+idiom in Vulkan which involves calling this function once with a null pointer+to get the total number of queryable values, allocating space for querying that+many values and they calling the function again to get the values. These+bindings expose commands which automatically return all the results. As an+example `enumeratePhysicalDevices` has the type `Instance -> IO (Result, Vector+PhysicalDevice)`.++### Structure chains++Most structures in Vulkan have a member called `pNext` which can be a pointer+to another Vulkan structure containing additional information. In these high+level bindings the head of any struct chain is parameterized over the rest of+the items in the chain. This allows for using *type inference* for getting+struct chain return values out of Vulkan, for example:+`getPhysicalDeviceFeatures2 :: (PokeChain a, PeekChain a) => PhysicalDevice ->+IO (PysicalDeviceFeatures2 a)`; here the variable `a :: [Type]` represents the+structures present in the chain returned from `vkGetPhysicalDeviceFeatures2`.++There exists a GADT `SomeStruct` which captures the case of an unknown tail in+the struct chain. This is also used for nested chains inside structs.++Struct chains inside records are represented as nested tuples: `next ::+(Something, (SomethingElse, (AThirdThing, ())))`++## Building++This package requires GHC 8.6 or higher due to the use of the+`QuantifiedConstraints` language extension.++For instructions on how to regenerate the bindings see [the readme in+./generate-new](./generate-new/readme.md).++## Examples++There are a couple of examples in the `examples` directory.++### `sdl-triangle`++This opens a window using SDL and renders a triangle.++You'll need to build the shaders first with `(cd examples/sdl-triangle &&+glslangValidator -V shader.*)`++Make sure that SDL can find `libvulkan.so` either by setting `LD_LIBRARY_PATH`+or `SDL_VULKAN_LIBRARY`, this must be the same `libvulkan.so` that the+`sdl-triangle` binary was compiled against.++Exit with `q`, `escape` or the window exit button.++## Current Status++All the core Vulkan 1.0, 1.1, and 1.2 functionality is here as well as all the+extensions.++This is currently a 64 bit only library.
src/Graphics/Vulkan.hs view
@@ -1,19 +1,19 @@-{-# language Strict #-} {-# language CPP #-}---module Graphics.Vulkan- ( module Graphics.Vulkan.NamedType- , module Graphics.Vulkan.Core10- , module Graphics.Vulkan.Core11- , module Graphics.Vulkan.Extensions- ) where---import Graphics.Vulkan.NamedType+module Graphics.Vulkan ( module Graphics.Vulkan.CStruct+ , module Graphics.Vulkan.Core10+ , module Graphics.Vulkan.Core11+ , module Graphics.Vulkan.Core12+ , module Graphics.Vulkan.Extensions+ , module Graphics.Vulkan.NamedType+ , module Graphics.Vulkan.Version+ , module Graphics.Vulkan.Zero+ ) where+import Graphics.Vulkan.CStruct import Graphics.Vulkan.Core10 import Graphics.Vulkan.Core11+import Graphics.Vulkan.Core12 import Graphics.Vulkan.Extensions--+import Graphics.Vulkan.NamedType+import Graphics.Vulkan.Version+import Graphics.Vulkan.Zero
+ src/Graphics/Vulkan/CStruct.hs view
@@ -0,0 +1,52 @@+{-# language CPP #-}+module Graphics.Vulkan.CStruct ( ToCStruct(..)+ , FromCStruct(..)+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Ptr (Ptr)++-- | A class for types which can be marshalled into a C style+-- structure.+class ToCStruct a where+ -- | Allocates a C type structure and all dependencies and passes+ -- it to a continuation. The space is deallocated when this+ -- continuation returns and the C type structure must not be+ -- returned out of it.+ withCStruct :: a -> (Ptr a -> IO b) -> IO b+ withCStruct x f = allocaBytesAligned (cStructSize @a) (cStructAlignment @a)+ $ \p -> pokeCStruct p x (f p)++ -- | Write a C type struct into some existing memory and run a+ -- continuation. The pointed to structure is not necessarily valid+ -- outside the continuation as additional allocations may have been+ -- made.+ pokeCStruct :: Ptr a -> a -> IO b -> IO b++ -- | Allocate space for an "empty" @a@ and populate any univalued+ -- members with their value.+ withZeroCStruct :: (Ptr a -> IO b) -> IO b+ withZeroCStruct f =+ bracket (callocBytes @a (cStructSize @a)) free $ \p -> pokeZeroCStruct p (f p)++ -- | And populate any univalued members with their value, run a+ -- function and then clean up any allocated resources.+ pokeZeroCStruct :: Ptr a -> IO b -> IO b++ -- | The size of this struct, note that this doesn't account for any+ -- extra pointed-to data+ cStructSize :: Int++ -- | The required memory alignment for this type+ cStructAlignment :: Int+++-- | A class for types which can be marshalled from a C style+-- structure.+class FromCStruct a where+ -- | Read an @a@ and any other pointed to data from memory+ peekCStruct :: Ptr a -> IO a+
+ src/Graphics/Vulkan/CStruct/Extends.hs view
@@ -0,0 +1,1314 @@+{-# language CPP #-}+module Graphics.Vulkan.CStruct.Extends ( BaseOutStructure(..)+ , BaseInStructure(..)+ , Extends+ , PeekChain(..)+ , PokeChain(..)+ , Chain+ , Extendss+ , SomeStruct(..)+ , withSomeCStruct+ , peekSomeCStruct+ , pokeSomeCStruct+ , forgetExtensions+ , Extensible(..)+ ) where++import Data.Maybe (fromMaybe)+import Type.Reflection (typeRep)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import GHC.Base (join)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Proxy (Proxy(Proxy))+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.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Foreign.Ptr (Ptr)+import GHC.TypeLits (ErrorMessage(..))+import GHC.TypeLits (TypeError)+import Data.Kind (Constraint)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureMemoryRequirementsInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (AcquireNextImageInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (AcquireProfilingLockInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (AndroidHardwareBufferFormatPropertiesANDROID)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (AndroidHardwareBufferPropertiesANDROID)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (AndroidHardwareBufferUsageANDROID)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_android_surface (AndroidSurfaceCreateInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (ApplicationInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pass (AttachmentDescription)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (AttachmentDescription2)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (AttachmentDescriptionStencilLayout)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pass (AttachmentReference)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (AttachmentReference2)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (AttachmentReferenceStencilLayout)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_sample_locations (AttachmentSampleLocationsEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (BindAccelerationStructureMemoryInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2 (BindBufferMemoryDeviceGroupInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindBufferMemoryInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2 (BindImageMemoryDeviceGroupInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindImageMemoryInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (BindImageMemorySwapchainInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (BindImagePlaneMemoryInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SparseResourceMemoryManagement (BindSparseInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (BufferCopy)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Buffer (BufferCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address (BufferDeviceAddressCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (BufferDeviceAddressInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (BufferImageCopy)+import {-# SOURCE #-} Graphics.Vulkan.Core10.OtherTypes (BufferMemoryBarrier)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (BufferMemoryRequirementsInfo2)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (BufferOpaqueCaptureAddressCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.BufferView (BufferViewCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_calibrated_timestamps (CalibratedTimestampInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints (CheckpointDataNV)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (ClearAttachment)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SharedTypes (ClearDepthStencilValue)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (ClearRect)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (CmdProcessCommandsInfoNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (CmdReserveSpaceForCommandsInfoNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (CoarseSampleLocationNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (CoarseSampleOrderCustomNV)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBuffer (CommandBufferAllocateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBuffer (CommandBufferBeginInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering (CommandBufferInheritanceConditionalRenderingInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBuffer (CommandBufferInheritanceInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform (CommandBufferInheritanceRenderPassTransformInfoQCOM)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandPool (CommandPoolCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.ImageView (ComponentMapping)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (ComputePipelineCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering (ConditionalRenderingBeginInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (ConformanceVersion)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix (CooperativeMatrixPropertiesNV)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (CopyDescriptorSet)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32 (D3D12FenceSubmitInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerMarkerInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerObjectNameInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerObjectTagInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_report (DebugReportCallbackCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsLabelEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsMessengerCallbackDataEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsMessengerCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectNameInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectTagInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationBufferCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationImageCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationMemoryAllocateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (DescriptorBufferInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (DescriptorImageInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (DescriptorPoolCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block (DescriptorPoolInlineUniformBlockCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (DescriptorPoolSize)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (DescriptorSetAllocateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (DescriptorSetLayoutBinding)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (DescriptorSetLayoutBindingFlagsCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (DescriptorSetLayoutCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3 (DescriptorSetLayoutSupport)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (DescriptorSetVariableDescriptorCountAllocateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (DescriptorSetVariableDescriptorCountLayoutSupport)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template (DescriptorUpdateTemplateCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template (DescriptorUpdateTemplateEntry)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Device (DeviceCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_display_control (DeviceEventInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (DeviceGeneratedCommandsFeaturesNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (DeviceGeneratedCommandsLimitsNVX)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupBindSparseInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupCommandBufferBeginInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation (DeviceGroupDeviceCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentCapabilitiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupRenderPassBeginInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupSubmitInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupSwapchainCreateInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (DeviceMemoryOpaqueCaptureAddressInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_memory_overallocation_behavior (DeviceMemoryOverallocationCreateInfoAMD)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Device (DeviceQueueCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_global_priority (DeviceQueueGlobalPriorityCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (DeviceQueueInfo2)+import {-# SOURCE #-} Graphics.Vulkan.Core10.OtherTypes (DispatchIndirectCommand)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_display_control (DisplayEventInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_display (DisplayModeCreateInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_display (DisplayModeParametersKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayModeProperties2KHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_display (DisplayModePropertiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr (DisplayNativeHdrSurfaceCapabilitiesAMD)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayPlaneCapabilities2KHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_display (DisplayPlaneCapabilitiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayPlaneInfo2KHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayPlaneProperties2KHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_display (DisplayPlanePropertiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_display_control (DisplayPowerInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_display_swapchain (DisplayPresentInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayProperties2KHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_display (DisplayPropertiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_display (DisplaySurfaceCreateInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core10.OtherTypes (DrawIndexedIndirectCommand)+import {-# SOURCE #-} Graphics.Vulkan.Core10.OtherTypes (DrawIndirectCommand)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_mesh_shader (DrawMeshTasksIndirectCommandNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier (DrmFormatModifierPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier (DrmFormatModifierPropertiesListEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Event (EventCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence (ExportFenceCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32 (ExportFenceWin32HandleInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory (ExportMemoryAllocateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_external_memory (ExportMemoryAllocateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32 (ExportMemoryWin32HandleInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_external_memory_win32 (ExportMemoryWin32HandleInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore (ExportSemaphoreCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32 (ExportSemaphoreWin32HandleInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core10.ExtensionDiscovery (ExtensionProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SharedTypes (Extent2D)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SharedTypes (Extent3D)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (ExternalBufferProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities (ExternalFenceProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (ExternalFormatANDROID)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (ExternalImageFormatProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities (ExternalImageFormatPropertiesNV)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory (ExternalMemoryBufferCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory (ExternalMemoryImageCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_external_memory (ExternalMemoryImageCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (ExternalMemoryProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities (ExternalSemaphoreProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Fence (FenceCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd (FenceGetFdInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32 (FenceGetWin32HandleInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_filter_cubic (FilterCubicImageViewImageFormatPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (FormatProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (FormatProperties2)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (FramebufferAttachmentImageInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (FramebufferAttachmentsCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pass (FramebufferCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode (FramebufferMixedSamplesCombinationNV)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (GeometryAABBNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (GeometryDataNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (GeometryNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (GeometryTrianglesNV)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (GraphicsPipelineCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata (HdrMetadataEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_headless_surface (HeadlessSurfaceCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_MVK_ios_surface (IOSSurfaceCreateInfoMVK)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (ImageBlit)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (ImageCopy)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Image (ImageCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier (ImageDrmFormatModifierExplicitCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier (ImageDrmFormatModifierListCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier (ImageDrmFormatModifierPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list (ImageFormatListCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (ImageFormatProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (ImageFormatProperties2)+import {-# SOURCE #-} Graphics.Vulkan.Core10.OtherTypes (ImageMemoryBarrier)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (ImageMemoryRequirementsInfo2)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface (ImagePipeSurfaceCreateInfoFUCHSIA)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (ImagePlaneMemoryRequirementsInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (ImageResolve)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (ImageSparseMemoryRequirementsInfo2)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage (ImageStencilUsageCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Image (ImageSubresource)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SharedTypes (ImageSubresourceLayers)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SharedTypes (ImageSubresourceRange)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (ImageSwapchainCreateInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_astc_decode_mode (ImageViewASTCDecodeModeEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.ImageView (ImageViewCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_image_view_handle (ImageViewHandleInfoNVX)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (ImageViewUsageCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (ImportAndroidHardwareBufferInfoANDROID)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd (ImportFenceFdInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32 (ImportFenceWin32HandleInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd (ImportMemoryFdInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_external_memory_host (ImportMemoryHostPointerInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32 (ImportMemoryWin32HandleInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_external_memory_win32 (ImportMemoryWin32HandleInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd (ImportSemaphoreFdInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32 (ImportSemaphoreWin32HandleInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (IndirectCommandsLayoutCreateInfoNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (IndirectCommandsLayoutTokenNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (IndirectCommandsTokenNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (InitializePerformanceApiInfoINTEL)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (InputAttachmentAspectReference)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (InstanceCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.LayerDiscovery (LayerProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_MVK_macos_surface (MacOSSurfaceCreateInfoMVK)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Memory (MappedMemoryRange)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group (MemoryAllocateFlagsInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Memory (MemoryAllocateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.OtherTypes (MemoryBarrier)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation (MemoryDedicatedAllocateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation (MemoryDedicatedRequirements)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd (MemoryFdPropertiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (MemoryGetAndroidHardwareBufferInfoANDROID)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd (MemoryGetFdInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryGetWin32HandleInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (MemoryHeap)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_external_memory_host (MemoryHostPointerPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (MemoryOpaqueCaptureAddressAllocateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_memory_priority (MemoryPriorityAllocateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.MemoryManagement (MemoryRequirements)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (MemoryType)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryWin32HandlePropertiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_metal_surface (MetalSurfaceCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_sample_locations (MultisamplePropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (ObjectTableCreateInfoNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (ObjectTableDescriptorSetEntryNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (ObjectTableEntryNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (ObjectTableIndexBufferEntryNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (ObjectTablePipelineEntryNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (ObjectTablePushConstantEntryNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (ObjectTableVertexBufferEntryNVX)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SharedTypes (Offset2D)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SharedTypes (Offset3D)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing (PastPresentationTimingGOOGLE)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (PerformanceConfigurationAcquireInfoINTEL)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (PerformanceCounterDescriptionKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (PerformanceCounterKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (PerformanceMarkerInfoINTEL)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (PerformanceOverrideInfoINTEL)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (PerformanceQuerySubmitInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (PerformanceStreamMarkerInfoINTEL)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (PerformanceValueINTEL)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage (PhysicalDevice16BitStorageFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage (PhysicalDevice8BitStorageFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_astc_decode_mode (PhysicalDeviceASTCDecodeFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced (PhysicalDeviceBlendOperationAdvancedFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced (PhysicalDeviceBlendOperationAdvancedPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_device_coherent_memory (PhysicalDeviceCoherentMemoryFeaturesAMD)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering (PhysicalDeviceConditionalRenderingFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization (PhysicalDeviceConservativeRasterizationPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix (PhysicalDeviceCooperativeMatrixFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix (PhysicalDeviceCooperativeMatrixPropertiesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_corner_sampled_image (PhysicalDeviceCornerSampledImageFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode (PhysicalDeviceCoverageReductionModeFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing (PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable (PhysicalDeviceDepthClipEnableFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve (PhysicalDeviceDepthStencilResolveProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles (PhysicalDeviceDiscardRectanglePropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (PhysicalDeviceDriverProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive (PhysicalDeviceExclusiveScissorFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceExternalBufferInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities (PhysicalDeviceExternalFenceInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceExternalImageFormatInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_external_memory_host (PhysicalDeviceExternalMemoryHostPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities (PhysicalDeviceExternalSemaphoreInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (PhysicalDeviceFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceFeatures2)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls (PhysicalDeviceFloatControlsProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map (PhysicalDeviceFragmentDensityMapFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map (PhysicalDeviceFragmentDensityMapPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_fragment_shader_barycentric (PhysicalDeviceFragmentShaderBarycentricFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_fragment_shader_interlock (PhysicalDeviceFragmentShaderInterlockFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation (PhysicalDeviceGroupProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset (PhysicalDeviceHostQueryResetFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceIDProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier (PhysicalDeviceImageDrmFormatModifierInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceImageFormatInfo2)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_filter_cubic (PhysicalDeviceImageViewImageFormatInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (PhysicalDeviceImagelessFramebufferFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_index_type_uint8 (PhysicalDeviceIndexTypeUint8FeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (PhysicalDeviceLimits)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_line_rasterization (PhysicalDeviceLineRasterizationFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_line_rasterization (PhysicalDeviceLineRasterizationPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3 (PhysicalDeviceMaintenance3Properties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_memory_budget (PhysicalDeviceMemoryBudgetPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_memory_priority (PhysicalDeviceMemoryPriorityFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (PhysicalDeviceMemoryProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceMemoryProperties2)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_mesh_shader (PhysicalDeviceMeshShaderFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_mesh_shader (PhysicalDeviceMeshShaderPropertiesNV)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview (PhysicalDeviceMultiviewFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes (PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview (PhysicalDeviceMultiviewProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_pci_bus_info (PhysicalDevicePCIBusInfoPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryFeaturesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryPropertiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PhysicalDevicePipelineExecutablePropertiesFeaturesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (PhysicalDevicePointClippingProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (PhysicalDeviceProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceProperties2)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_push_descriptor (PhysicalDevicePushDescriptorPropertiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (PhysicalDeviceRayTracingPropertiesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test (PhysicalDeviceRepresentativeFragmentTestFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_sample_locations (PhysicalDeviceSampleLocationsPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax (PhysicalDeviceSamplerFilterMinmaxProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (PhysicalDeviceSamplerYcbcrConversionFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout (PhysicalDeviceScalarBlockLayoutFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (PhysicalDeviceSeparateDepthStencilLayoutsFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64 (PhysicalDeviceShaderAtomicInt64Features)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_shader_clock (PhysicalDeviceShaderClockFeaturesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties2 (PhysicalDeviceShaderCoreProperties2AMD)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties (PhysicalDeviceShaderCorePropertiesAMD)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation (PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters (PhysicalDeviceShaderDrawParametersFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8 (PhysicalDeviceShaderFloat16Int8Features)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shader_image_footprint (PhysicalDeviceShaderImageFootprintFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_shader_integer_functions2 (PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shader_sm_builtins (PhysicalDeviceShaderSMBuiltinsFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shader_sm_builtins (PhysicalDeviceShaderSMBuiltinsPropertiesNV)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types (PhysicalDeviceShaderSubgroupExtendedTypesFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (PhysicalDeviceShadingRateImageFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (PhysicalDeviceShadingRateImagePropertiesNV)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceSparseImageFormatInfo2)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (PhysicalDeviceSparseProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup (PhysicalDeviceSubgroupProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control (PhysicalDeviceSubgroupSizeControlFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control (PhysicalDeviceSubgroupSizeControlPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (PhysicalDeviceSurfaceInfo2KHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment (PhysicalDeviceTexelBufferAlignmentFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment (PhysicalDeviceTexelBufferAlignmentPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr (PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (PhysicalDeviceTimelineSemaphoreFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (PhysicalDeviceTimelineSemaphoreProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_tooling_info (PhysicalDeviceToolPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_transform_feedback (PhysicalDeviceTransformFeedbackFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_transform_feedback (PhysicalDeviceTransformFeedbackPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout (PhysicalDeviceUniformBufferStandardLayoutFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers (PhysicalDeviceVariablePointersFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12 (PhysicalDeviceVulkan11Features)+import {-# SOURCE #-} Graphics.Vulkan.Core12 (PhysicalDeviceVulkan11Properties)+import {-# SOURCE #-} Graphics.Vulkan.Core12 (PhysicalDeviceVulkan12Features)+import {-# SOURCE #-} Graphics.Vulkan.Core12 (PhysicalDeviceVulkan12Properties)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model (PhysicalDeviceVulkanMemoryModelFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_ycbcr_image_arrays (PhysicalDeviceYcbcrImageArraysFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.PipelineCache (PipelineCacheCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced (PipelineColorBlendAdvancedStateCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (PipelineColorBlendAttachmentState)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (PipelineColorBlendStateCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_pipeline_compiler_control (PipelineCompilerControlCreateInfoAMD)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_framebuffer_mixed_samples (PipelineCoverageModulationStateCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode (PipelineCoverageReductionStateCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_fragment_coverage_to_color (PipelineCoverageToColorStateCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (PipelineDepthStencilStateCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles (PipelineDiscardRectangleStateCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (PipelineDynamicStateCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutableInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutableInternalRepresentationKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutablePropertiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutableStatisticKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (PipelineInputAssemblyStateCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.PipelineLayout (PipelineLayoutCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (PipelineMultisampleStateCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization (PipelineRasterizationConservativeStateCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable (PipelineRasterizationDepthClipStateCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_line_rasterization (PipelineRasterizationLineStateCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (PipelineRasterizationStateCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_rasterization_order (PipelineRasterizationStateRasterizationOrderAMD)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_transform_feedback (PipelineRasterizationStateStreamCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test (PipelineRepresentativeFragmentTestStateCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_sample_locations (PipelineSampleLocationsStateCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (PipelineShaderStageCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control (PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (PipelineTessellationDomainOriginStateCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (PipelineTessellationStateCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (PipelineVertexInputDivisorStateCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (PipelineVertexInputStateCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (PipelineViewportCoarseSampleOrderStateCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive (PipelineViewportExclusiveScissorStateCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (PipelineViewportShadingRateImageStateCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (PipelineViewportStateCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle (PipelineViewportSwizzleStateCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling (PipelineViewportWScalingStateCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_GGP_frame_token (PresentFrameTokenGGP)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (PresentInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_incremental_present (PresentRegionKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_incremental_present (PresentRegionsKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing (PresentTimeGOOGLE)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing (PresentTimesInfoGOOGLE)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (ProtectedSubmitInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.PipelineLayout (PushConstantRange)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Query (QueryPoolCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (QueryPoolCreateInfoINTEL)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (QueryPoolPerformanceCreateInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints (QueueFamilyCheckpointPropertiesNV)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (QueueFamilyProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (QueueFamilyProperties2)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (RayTracingPipelineCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (RayTracingShaderGroupCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (Rect2D)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_incremental_present (RectLayerKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing (RefreshCycleDurationGOOGLE)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (RenderPassAttachmentBeginInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (RenderPassBeginInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pass (RenderPassCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (RenderPassCreateInfo2)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map (RenderPassFragmentDensityMapCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (RenderPassInputAttachmentAspectCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview (RenderPassMultiviewCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_sample_locations (RenderPassSampleLocationsBeginInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform (RenderPassTransformBeginInfoQCOM)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_sample_locations (SampleLocationEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_sample_locations (SampleLocationsInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Sampler (SamplerCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax (SamplerReductionModeCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionImageFormatProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.QueueSemaphore (SemaphoreCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd (SemaphoreGetFdInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32 (SemaphoreGetWin32HandleInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreSignalInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreTypeCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreWaitInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Shader (ShaderModuleCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_validation_cache (ShaderModuleValidationCacheCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_shader_info (ShaderResourceUsageAMD)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_shader_info (ShaderStatisticsInfoAMD)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (ShadingRatePaletteNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image (SharedPresentSurfaceCapabilitiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SparseResourceMemoryManagement (SparseBufferMemoryBindInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SparseResourceMemoryManagement (SparseImageFormatProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (SparseImageFormatProperties2)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SparseResourceMemoryManagement (SparseImageMemoryBind)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SparseResourceMemoryManagement (SparseImageMemoryBindInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SparseResourceMemoryManagement (SparseImageMemoryRequirements)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (SparseImageMemoryRequirements2)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SparseResourceMemoryManagement (SparseImageOpaqueMemoryBindInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SparseResourceMemoryManagement (SparseMemoryBind)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (SpecializationInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (SpecializationMapEntry)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (StencilOpState)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_GGP_stream_descriptor_surface (StreamDescriptorSurfaceCreateInfoGGP)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+import {-# SOURCE #-} Graphics.Vulkan.Core10.Queue (SubmitInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassBeginInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pass (SubpassDependency)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassDependency2)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pass (SubpassDescription)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassDescription2)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve (SubpassDescriptionDepthStencilResolve)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassEndInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_sample_locations (SubpassSampleLocationsEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Image (SubresourceLayout)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter (SurfaceCapabilities2EXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (SurfaceCapabilities2KHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive (SurfaceCapabilitiesFullScreenExclusiveEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_surface (SurfaceCapabilitiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (SurfaceFormat2KHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_surface (SurfaceFormatKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive (SurfaceFullScreenExclusiveInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive (SurfaceFullScreenExclusiveWin32InfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_surface_protected_capabilities (SurfaceProtectedCapabilitiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_display_control (SwapchainCounterCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr (SwapchainDisplayNativeHdrCreateInfoAMD)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_texture_gather_bias_lod (TextureLODGatherFormatPropertiesAMD)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (TimelineSemaphoreSubmitInfo)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_validation_cache (ValidationCacheCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_validation_features (ValidationFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_validation_flags (ValidationFlagsEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (VertexInputAttributeDescription)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (VertexInputBindingDescription)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (VertexInputBindingDivisorDescriptionEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NN_vi_surface (ViSurfaceCreateInfoNN)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (Viewport)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle (ViewportSwizzleNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling (ViewportWScalingNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_wayland_surface (WaylandSurfaceCreateInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_win32_keyed_mutex (Win32KeyedMutexAcquireReleaseInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex (Win32KeyedMutexAcquireReleaseInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_win32_surface (Win32SurfaceCreateInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (WriteDescriptorSet)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (WriteDescriptorSetAccelerationStructureNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block (WriteDescriptorSetInlineUniformBlockEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata (XYColorEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_xcb_surface (XcbSurfaceCreateInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_xlib_surface (XlibSurfaceCreateInfoKHR)+import Graphics.Vulkan.Zero (Zero(..))+-- | VkBaseOutStructure - Base structure for a read-only pointer chain+--+-- = Description+--+-- 'BaseOutStructure' can be used to facilitate iterating through a+-- structure pointer chain that returns data back to the application.+--+-- = See Also+--+-- 'BaseOutStructure',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data BaseOutStructure = BaseOutStructure+ { -- | @sType@ is the structure type of the structure being iterated through.+ sType :: StructureType+ , -- | @pNext@ is @NULL@ or a pointer to the next structure in a structure+ -- chain.+ next :: Ptr BaseOutStructure+ }+ deriving (Typeable)+deriving instance Show BaseOutStructure++instance ToCStruct BaseOutStructure where+ withCStruct x f = allocaBytesAligned 16 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p BaseOutStructure{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (sType)+ poke ((p `plusPtr` 8 :: Ptr (Ptr BaseOutStructure))) (next)+ f+ cStructSize = 16+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (zero)+ poke ((p `plusPtr` 8 :: Ptr (Ptr BaseOutStructure))) (zero)+ f++instance FromCStruct BaseOutStructure where+ peekCStruct p = do+ sType <- peek @StructureType ((p `plusPtr` 0 :: Ptr StructureType))+ pNext <- peek @(Ptr BaseOutStructure) ((p `plusPtr` 8 :: Ptr (Ptr BaseOutStructure)))+ pure $ BaseOutStructure+ sType pNext++instance Storable BaseOutStructure where+ sizeOf ~_ = 16+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero BaseOutStructure where+ zero = BaseOutStructure+ zero+ zero+++-- | VkBaseInStructure - Base structure for a read-only pointer chain+--+-- = Description+--+-- 'BaseInStructure' can be used to facilitate iterating through a+-- read-only structure pointer chain.+--+-- = See Also+--+-- 'BaseInStructure',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data BaseInStructure = BaseInStructure+ { -- | @sType@ is the structure type of the structure being iterated through.+ sType :: StructureType+ , -- | @pNext@ is @NULL@ or a pointer to the next structure in a structure+ -- chain.+ next :: Ptr BaseInStructure+ }+ deriving (Typeable)+deriving instance Show BaseInStructure++instance ToCStruct BaseInStructure where+ withCStruct x f = allocaBytesAligned 16 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p BaseInStructure{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (sType)+ poke ((p `plusPtr` 8 :: Ptr (Ptr BaseInStructure))) (next)+ f+ cStructSize = 16+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (zero)+ poke ((p `plusPtr` 8 :: Ptr (Ptr BaseInStructure))) (zero)+ f++instance FromCStruct BaseInStructure where+ peekCStruct p = do+ sType <- peek @StructureType ((p `plusPtr` 0 :: Ptr StructureType))+ pNext <- peek @(Ptr BaseInStructure) ((p `plusPtr` 8 :: Ptr (Ptr BaseInStructure)))+ pure $ BaseInStructure+ sType pNext++instance Storable BaseInStructure where+ sizeOf ~_ = 16+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero BaseInStructure where+ zero = BaseInStructure+ zero+ zero+++type family Extends (a :: [Type] -> Type) (b :: Type) :: Constraint where+ Extends AndroidHardwareBufferPropertiesANDROID AndroidHardwareBufferFormatPropertiesANDROID = ()+ Extends AttachmentDescription2 AttachmentDescriptionStencilLayout = ()+ Extends AttachmentReference2 AttachmentReferenceStencilLayout = ()+ Extends BindBufferMemoryInfo BindBufferMemoryDeviceGroupInfo = ()+ Extends BindImageMemoryInfo BindImageMemoryDeviceGroupInfo = ()+ Extends BindImageMemoryInfo BindImageMemorySwapchainInfoKHR = ()+ Extends BindImageMemoryInfo BindImagePlaneMemoryInfo = ()+ Extends BindSparseInfo DeviceGroupBindSparseInfo = ()+ Extends BindSparseInfo TimelineSemaphoreSubmitInfo = ()+ Extends BufferCreateInfo DedicatedAllocationBufferCreateInfoNV = ()+ Extends BufferCreateInfo ExternalMemoryBufferCreateInfo = ()+ Extends BufferCreateInfo BufferOpaqueCaptureAddressCreateInfo = ()+ Extends BufferCreateInfo BufferDeviceAddressCreateInfoEXT = ()+ Extends CommandBufferBeginInfo DeviceGroupCommandBufferBeginInfo = ()+ Extends CommandBufferInheritanceInfo CommandBufferInheritanceConditionalRenderingInfoEXT = ()+ Extends CommandBufferInheritanceInfo CommandBufferInheritanceRenderPassTransformInfoQCOM = ()+ Extends ComputePipelineCreateInfo PipelineCreationFeedbackCreateInfoEXT = ()+ Extends ComputePipelineCreateInfo PipelineCompilerControlCreateInfoAMD = ()+ Extends DescriptorPoolCreateInfo DescriptorPoolInlineUniformBlockCreateInfoEXT = ()+ Extends DescriptorSetAllocateInfo DescriptorSetVariableDescriptorCountAllocateInfo = ()+ Extends DescriptorSetLayoutCreateInfo DescriptorSetLayoutBindingFlagsCreateInfo = ()+ Extends DescriptorSetLayoutSupport DescriptorSetVariableDescriptorCountLayoutSupport = ()+ Extends DeviceCreateInfo (PhysicalDeviceFeatures2 '[]) = ()+ Extends DeviceCreateInfo PhysicalDeviceVariablePointersFeatures = ()+ Extends DeviceCreateInfo PhysicalDeviceMultiviewFeatures = ()+ Extends DeviceCreateInfo DeviceGroupDeviceCreateInfo = ()+ Extends DeviceCreateInfo PhysicalDevice16BitStorageFeatures = ()+ Extends DeviceCreateInfo PhysicalDeviceShaderSubgroupExtendedTypesFeatures = ()+ Extends DeviceCreateInfo PhysicalDeviceSamplerYcbcrConversionFeatures = ()+ Extends DeviceCreateInfo PhysicalDeviceProtectedMemoryFeatures = ()+ Extends DeviceCreateInfo PhysicalDeviceBlendOperationAdvancedFeaturesEXT = ()+ Extends DeviceCreateInfo PhysicalDeviceInlineUniformBlockFeaturesEXT = ()+ Extends DeviceCreateInfo PhysicalDeviceShaderDrawParametersFeatures = ()+ Extends DeviceCreateInfo PhysicalDeviceShaderFloat16Int8Features = ()+ Extends DeviceCreateInfo PhysicalDeviceHostQueryResetFeatures = ()+ Extends DeviceCreateInfo PhysicalDeviceDescriptorIndexingFeatures = ()+ Extends DeviceCreateInfo PhysicalDeviceTimelineSemaphoreFeatures = ()+ Extends DeviceCreateInfo PhysicalDevice8BitStorageFeatures = ()+ Extends DeviceCreateInfo PhysicalDeviceConditionalRenderingFeaturesEXT = ()+ Extends DeviceCreateInfo PhysicalDeviceVulkanMemoryModelFeatures = ()+ Extends DeviceCreateInfo PhysicalDeviceShaderAtomicInt64Features = ()+ Extends DeviceCreateInfo PhysicalDeviceVertexAttributeDivisorFeaturesEXT = ()+ Extends DeviceCreateInfo PhysicalDeviceASTCDecodeFeaturesEXT = ()+ Extends DeviceCreateInfo PhysicalDeviceTransformFeedbackFeaturesEXT = ()+ Extends DeviceCreateInfo PhysicalDeviceRepresentativeFragmentTestFeaturesNV = ()+ Extends DeviceCreateInfo PhysicalDeviceExclusiveScissorFeaturesNV = ()+ Extends DeviceCreateInfo PhysicalDeviceCornerSampledImageFeaturesNV = ()+ Extends DeviceCreateInfo PhysicalDeviceComputeShaderDerivativesFeaturesNV = ()+ Extends DeviceCreateInfo PhysicalDeviceFragmentShaderBarycentricFeaturesNV = ()+ Extends DeviceCreateInfo PhysicalDeviceShaderImageFootprintFeaturesNV = ()+ Extends DeviceCreateInfo PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = ()+ Extends DeviceCreateInfo PhysicalDeviceShadingRateImageFeaturesNV = ()+ Extends DeviceCreateInfo PhysicalDeviceMeshShaderFeaturesNV = ()+ Extends DeviceCreateInfo DeviceMemoryOverallocationCreateInfoAMD = ()+ Extends DeviceCreateInfo PhysicalDeviceFragmentDensityMapFeaturesEXT = ()+ Extends DeviceCreateInfo PhysicalDeviceScalarBlockLayoutFeatures = ()+ Extends DeviceCreateInfo PhysicalDeviceUniformBufferStandardLayoutFeatures = ()+ Extends DeviceCreateInfo PhysicalDeviceDepthClipEnableFeaturesEXT = ()+ Extends DeviceCreateInfo PhysicalDeviceMemoryPriorityFeaturesEXT = ()+ Extends DeviceCreateInfo PhysicalDeviceBufferDeviceAddressFeatures = ()+ Extends DeviceCreateInfo PhysicalDeviceBufferDeviceAddressFeaturesEXT = ()+ Extends DeviceCreateInfo PhysicalDeviceImagelessFramebufferFeatures = ()+ Extends DeviceCreateInfo PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = ()+ Extends DeviceCreateInfo PhysicalDeviceCooperativeMatrixFeaturesNV = ()+ Extends DeviceCreateInfo PhysicalDeviceYcbcrImageArraysFeaturesEXT = ()+ Extends DeviceCreateInfo PhysicalDevicePerformanceQueryFeaturesKHR = ()+ Extends DeviceCreateInfo PhysicalDeviceCoverageReductionModeFeaturesNV = ()+ Extends DeviceCreateInfo PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL = ()+ Extends DeviceCreateInfo PhysicalDeviceShaderClockFeaturesKHR = ()+ Extends DeviceCreateInfo PhysicalDeviceIndexTypeUint8FeaturesEXT = ()+ Extends DeviceCreateInfo PhysicalDeviceShaderSMBuiltinsFeaturesNV = ()+ Extends DeviceCreateInfo PhysicalDeviceFragmentShaderInterlockFeaturesEXT = ()+ Extends DeviceCreateInfo PhysicalDeviceSeparateDepthStencilLayoutsFeatures = ()+ Extends DeviceCreateInfo PhysicalDevicePipelineExecutablePropertiesFeaturesKHR = ()+ Extends DeviceCreateInfo PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = ()+ Extends DeviceCreateInfo PhysicalDeviceTexelBufferAlignmentFeaturesEXT = ()+ Extends DeviceCreateInfo PhysicalDeviceSubgroupSizeControlFeaturesEXT = ()+ Extends DeviceCreateInfo PhysicalDeviceLineRasterizationFeaturesEXT = ()+ Extends DeviceCreateInfo PhysicalDeviceVulkan11Features = ()+ Extends DeviceCreateInfo PhysicalDeviceVulkan12Features = ()+ Extends DeviceCreateInfo PhysicalDeviceCoherentMemoryFeaturesAMD = ()+ Extends DeviceQueueCreateInfo DeviceQueueGlobalPriorityCreateInfoEXT = ()+ Extends FenceCreateInfo ExportFenceCreateInfo = ()+ Extends FenceCreateInfo ExportFenceWin32HandleInfoKHR = ()+ Extends FormatProperties2 DrmFormatModifierPropertiesListEXT = ()+ Extends FramebufferCreateInfo FramebufferAttachmentsCreateInfo = ()+ Extends GraphicsPipelineCreateInfo PipelineDiscardRectangleStateCreateInfoEXT = ()+ Extends GraphicsPipelineCreateInfo PipelineRepresentativeFragmentTestStateCreateInfoNV = ()+ Extends GraphicsPipelineCreateInfo PipelineCreationFeedbackCreateInfoEXT = ()+ Extends GraphicsPipelineCreateInfo PipelineCompilerControlCreateInfoAMD = ()+ Extends ImageCreateInfo DedicatedAllocationImageCreateInfoNV = ()+ Extends ImageCreateInfo ExternalMemoryImageCreateInfoNV = ()+ Extends ImageCreateInfo ExternalMemoryImageCreateInfo = ()+ Extends ImageCreateInfo ImageSwapchainCreateInfoKHR = ()+ Extends ImageCreateInfo ImageFormatListCreateInfo = ()+ Extends ImageCreateInfo ExternalFormatANDROID = ()+ Extends ImageCreateInfo ImageDrmFormatModifierListCreateInfoEXT = ()+ Extends ImageCreateInfo ImageDrmFormatModifierExplicitCreateInfoEXT = ()+ Extends ImageCreateInfo ImageStencilUsageCreateInfo = ()+ Extends ImageFormatProperties2 ExternalImageFormatProperties = ()+ Extends ImageFormatProperties2 SamplerYcbcrConversionImageFormatProperties = ()+ Extends ImageFormatProperties2 TextureLODGatherFormatPropertiesAMD = ()+ Extends ImageFormatProperties2 AndroidHardwareBufferUsageANDROID = ()+ Extends ImageFormatProperties2 FilterCubicImageViewImageFormatPropertiesEXT = ()+ Extends ImageMemoryBarrier SampleLocationsInfoEXT = ()+ Extends ImageMemoryRequirementsInfo2 ImagePlaneMemoryRequirementsInfo = ()+ Extends ImageViewCreateInfo ImageViewUsageCreateInfo = ()+ Extends ImageViewCreateInfo SamplerYcbcrConversionInfo = ()+ Extends ImageViewCreateInfo ImageViewASTCDecodeModeEXT = ()+ Extends InstanceCreateInfo DebugReportCallbackCreateInfoEXT = ()+ Extends InstanceCreateInfo ValidationFlagsEXT = ()+ Extends InstanceCreateInfo ValidationFeaturesEXT = ()+ Extends InstanceCreateInfo DebugUtilsMessengerCreateInfoEXT = ()+ Extends MemoryAllocateInfo DedicatedAllocationMemoryAllocateInfoNV = ()+ Extends MemoryAllocateInfo ExportMemoryAllocateInfoNV = ()+ Extends MemoryAllocateInfo ImportMemoryWin32HandleInfoNV = ()+ Extends MemoryAllocateInfo ExportMemoryWin32HandleInfoNV = ()+ Extends MemoryAllocateInfo ExportMemoryAllocateInfo = ()+ Extends MemoryAllocateInfo ImportMemoryWin32HandleInfoKHR = ()+ Extends MemoryAllocateInfo ExportMemoryWin32HandleInfoKHR = ()+ Extends MemoryAllocateInfo ImportMemoryFdInfoKHR = ()+ Extends MemoryAllocateInfo MemoryAllocateFlagsInfo = ()+ Extends MemoryAllocateInfo MemoryDedicatedAllocateInfo = ()+ Extends MemoryAllocateInfo ImportMemoryHostPointerInfoEXT = ()+ Extends MemoryAllocateInfo ImportAndroidHardwareBufferInfoANDROID = ()+ Extends MemoryAllocateInfo MemoryPriorityAllocateInfoEXT = ()+ Extends MemoryAllocateInfo MemoryOpaqueCaptureAddressAllocateInfo = ()+ Extends MemoryRequirements2 MemoryDedicatedRequirements = ()+ Extends PhysicalDeviceExternalSemaphoreInfo SemaphoreTypeCreateInfo = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceVariablePointersFeatures = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceMultiviewFeatures = ()+ Extends PhysicalDeviceFeatures2 PhysicalDevice16BitStorageFeatures = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderSubgroupExtendedTypesFeatures = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceSamplerYcbcrConversionFeatures = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceProtectedMemoryFeatures = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceBlendOperationAdvancedFeaturesEXT = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceInlineUniformBlockFeaturesEXT = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderDrawParametersFeatures = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderFloat16Int8Features = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceHostQueryResetFeatures = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceDescriptorIndexingFeatures = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceTimelineSemaphoreFeatures = ()+ Extends PhysicalDeviceFeatures2 PhysicalDevice8BitStorageFeatures = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceConditionalRenderingFeaturesEXT = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceVulkanMemoryModelFeatures = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderAtomicInt64Features = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceVertexAttributeDivisorFeaturesEXT = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceASTCDecodeFeaturesEXT = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceTransformFeedbackFeaturesEXT = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceRepresentativeFragmentTestFeaturesNV = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceExclusiveScissorFeaturesNV = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceCornerSampledImageFeaturesNV = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceComputeShaderDerivativesFeaturesNV = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentShaderBarycentricFeaturesNV = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderImageFootprintFeaturesNV = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceShadingRateImageFeaturesNV = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceMeshShaderFeaturesNV = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentDensityMapFeaturesEXT = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceScalarBlockLayoutFeatures = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceUniformBufferStandardLayoutFeatures = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceDepthClipEnableFeaturesEXT = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceMemoryPriorityFeaturesEXT = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceBufferDeviceAddressFeatures = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceBufferDeviceAddressFeaturesEXT = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceImagelessFramebufferFeatures = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceCooperativeMatrixFeaturesNV = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceYcbcrImageArraysFeaturesEXT = ()+ Extends PhysicalDeviceFeatures2 PhysicalDevicePerformanceQueryFeaturesKHR = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceCoverageReductionModeFeaturesNV = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderClockFeaturesKHR = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceIndexTypeUint8FeaturesEXT = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderSMBuiltinsFeaturesNV = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentShaderInterlockFeaturesEXT = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceSeparateDepthStencilLayoutsFeatures = ()+ Extends PhysicalDeviceFeatures2 PhysicalDevicePipelineExecutablePropertiesFeaturesKHR = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceTexelBufferAlignmentFeaturesEXT = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceSubgroupSizeControlFeaturesEXT = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceLineRasterizationFeaturesEXT = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceVulkan11Features = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceVulkan12Features = ()+ Extends PhysicalDeviceFeatures2 PhysicalDeviceCoherentMemoryFeaturesAMD = ()+ Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceExternalImageFormatInfo = ()+ Extends PhysicalDeviceImageFormatInfo2 ImageFormatListCreateInfo = ()+ Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceImageDrmFormatModifierInfoEXT = ()+ Extends PhysicalDeviceImageFormatInfo2 ImageStencilUsageCreateInfo = ()+ Extends PhysicalDeviceImageFormatInfo2 PhysicalDeviceImageViewImageFormatInfoEXT = ()+ Extends PhysicalDeviceMemoryProperties2 PhysicalDeviceMemoryBudgetPropertiesEXT = ()+ Extends PhysicalDeviceProperties2 PhysicalDevicePushDescriptorPropertiesKHR = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceDriverProperties = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceIDProperties = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceMultiviewProperties = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceDiscardRectanglePropertiesEXT = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceSubgroupProperties = ()+ Extends PhysicalDeviceProperties2 PhysicalDevicePointClippingProperties = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceProtectedMemoryProperties = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceSamplerFilterMinmaxProperties = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceSampleLocationsPropertiesEXT = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceBlendOperationAdvancedPropertiesEXT = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceInlineUniformBlockPropertiesEXT = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceMaintenance3Properties = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceFloatControlsProperties = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceExternalMemoryHostPropertiesEXT = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceConservativeRasterizationPropertiesEXT = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceShaderCorePropertiesAMD = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceShaderCoreProperties2AMD = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceDescriptorIndexingProperties = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceTimelineSemaphoreProperties = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceVertexAttributeDivisorPropertiesEXT = ()+ Extends PhysicalDeviceProperties2 PhysicalDevicePCIBusInfoPropertiesEXT = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceDepthStencilResolveProperties = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceTransformFeedbackPropertiesEXT = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceShadingRateImagePropertiesNV = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceMeshShaderPropertiesNV = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceRayTracingPropertiesNV = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentDensityMapPropertiesEXT = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceCooperativeMatrixPropertiesNV = ()+ Extends PhysicalDeviceProperties2 PhysicalDevicePerformanceQueryPropertiesKHR = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceShaderSMBuiltinsPropertiesNV = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceTexelBufferAlignmentPropertiesEXT = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceSubgroupSizeControlPropertiesEXT = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceLineRasterizationPropertiesEXT = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceVulkan11Properties = ()+ Extends PhysicalDeviceProperties2 PhysicalDeviceVulkan12Properties = ()+ Extends PhysicalDeviceSurfaceInfo2KHR SurfaceFullScreenExclusiveInfoEXT = ()+ Extends PhysicalDeviceSurfaceInfo2KHR SurfaceFullScreenExclusiveWin32InfoEXT = ()+ Extends PipelineColorBlendStateCreateInfo PipelineColorBlendAdvancedStateCreateInfoEXT = ()+ Extends PipelineMultisampleStateCreateInfo PipelineCoverageToColorStateCreateInfoNV = ()+ Extends PipelineMultisampleStateCreateInfo PipelineSampleLocationsStateCreateInfoEXT = ()+ Extends PipelineMultisampleStateCreateInfo PipelineCoverageModulationStateCreateInfoNV = ()+ Extends PipelineMultisampleStateCreateInfo PipelineCoverageReductionStateCreateInfoNV = ()+ Extends PipelineRasterizationStateCreateInfo PipelineRasterizationStateRasterizationOrderAMD = ()+ Extends PipelineRasterizationStateCreateInfo PipelineRasterizationConservativeStateCreateInfoEXT = ()+ Extends PipelineRasterizationStateCreateInfo PipelineRasterizationStateStreamCreateInfoEXT = ()+ Extends PipelineRasterizationStateCreateInfo PipelineRasterizationDepthClipStateCreateInfoEXT = ()+ Extends PipelineRasterizationStateCreateInfo PipelineRasterizationLineStateCreateInfoEXT = ()+ Extends PipelineShaderStageCreateInfo PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = ()+ Extends PipelineTessellationStateCreateInfo PipelineTessellationDomainOriginStateCreateInfo = ()+ Extends PipelineVertexInputStateCreateInfo PipelineVertexInputDivisorStateCreateInfoEXT = ()+ Extends PipelineViewportStateCreateInfo PipelineViewportWScalingStateCreateInfoNV = ()+ Extends PipelineViewportStateCreateInfo PipelineViewportSwizzleStateCreateInfoNV = ()+ Extends PipelineViewportStateCreateInfo PipelineViewportExclusiveScissorStateCreateInfoNV = ()+ Extends PipelineViewportStateCreateInfo PipelineViewportShadingRateImageStateCreateInfoNV = ()+ Extends PipelineViewportStateCreateInfo PipelineViewportCoarseSampleOrderStateCreateInfoNV = ()+ Extends PresentInfoKHR DisplayPresentInfoKHR = ()+ Extends PresentInfoKHR PresentRegionsKHR = ()+ Extends PresentInfoKHR DeviceGroupPresentInfoKHR = ()+ Extends PresentInfoKHR PresentTimesInfoGOOGLE = ()+ Extends PresentInfoKHR PresentFrameTokenGGP = ()+ Extends QueryPoolCreateInfo QueryPoolPerformanceCreateInfoKHR = ()+ Extends QueryPoolCreateInfo QueryPoolCreateInfoINTEL = ()+ Extends QueueFamilyProperties2 QueueFamilyCheckpointPropertiesNV = ()+ Extends RayTracingPipelineCreateInfoNV PipelineCreationFeedbackCreateInfoEXT = ()+ Extends RenderPassBeginInfo DeviceGroupRenderPassBeginInfo = ()+ Extends RenderPassBeginInfo RenderPassSampleLocationsBeginInfoEXT = ()+ Extends RenderPassBeginInfo RenderPassAttachmentBeginInfo = ()+ Extends RenderPassBeginInfo RenderPassTransformBeginInfoQCOM = ()+ Extends RenderPassCreateInfo RenderPassMultiviewCreateInfo = ()+ Extends RenderPassCreateInfo RenderPassInputAttachmentAspectCreateInfo = ()+ Extends RenderPassCreateInfo RenderPassFragmentDensityMapCreateInfoEXT = ()+ Extends RenderPassCreateInfo2 RenderPassFragmentDensityMapCreateInfoEXT = ()+ Extends SamplerCreateInfo SamplerYcbcrConversionInfo = ()+ Extends SamplerCreateInfo SamplerReductionModeCreateInfo = ()+ Extends SamplerYcbcrConversionCreateInfo ExternalFormatANDROID = ()+ Extends SemaphoreCreateInfo ExportSemaphoreCreateInfo = ()+ Extends SemaphoreCreateInfo ExportSemaphoreWin32HandleInfoKHR = ()+ Extends SemaphoreCreateInfo SemaphoreTypeCreateInfo = ()+ Extends ShaderModuleCreateInfo ShaderModuleValidationCacheCreateInfoEXT = ()+ Extends SubmitInfo Win32KeyedMutexAcquireReleaseInfoNV = ()+ Extends SubmitInfo Win32KeyedMutexAcquireReleaseInfoKHR = ()+ Extends SubmitInfo D3D12FenceSubmitInfoKHR = ()+ Extends SubmitInfo DeviceGroupSubmitInfo = ()+ Extends SubmitInfo ProtectedSubmitInfo = ()+ Extends SubmitInfo TimelineSemaphoreSubmitInfo = ()+ Extends SubmitInfo PerformanceQuerySubmitInfoKHR = ()+ Extends SubpassDescription2 SubpassDescriptionDepthStencilResolve = ()+ Extends SurfaceCapabilities2KHR DisplayNativeHdrSurfaceCapabilitiesAMD = ()+ Extends SurfaceCapabilities2KHR SharedPresentSurfaceCapabilitiesKHR = ()+ Extends SurfaceCapabilities2KHR SurfaceProtectedCapabilitiesKHR = ()+ Extends SurfaceCapabilities2KHR SurfaceCapabilitiesFullScreenExclusiveEXT = ()+ Extends SwapchainCreateInfoKHR SwapchainCounterCreateInfoEXT = ()+ Extends SwapchainCreateInfoKHR DeviceGroupSwapchainCreateInfoKHR = ()+ Extends SwapchainCreateInfoKHR SwapchainDisplayNativeHdrCreateInfoAMD = ()+ Extends SwapchainCreateInfoKHR ImageFormatListCreateInfo = ()+ Extends SwapchainCreateInfoKHR SurfaceFullScreenExclusiveInfoEXT = ()+ Extends SwapchainCreateInfoKHR SurfaceFullScreenExclusiveWin32InfoEXT = ()+ Extends WriteDescriptorSet WriteDescriptorSetInlineUniformBlockEXT = ()+ Extends WriteDescriptorSet WriteDescriptorSetAccelerationStructureNV = ()+ Extends a b = TypeError (ShowType a :<>: Text " is not extended by " :<>: ShowType b)++data SomeStruct (a :: [Type] -> Type) where+ SomeStruct+ :: forall a es+ . (Extendss a es, PokeChain es, Show (Chain es))+ => a es+ -> SomeStruct a++deriving instance (forall es. Show (Chain es) => Show (a es)) => Show (SomeStruct a)++instance Zero (a '[]) => Zero (SomeStruct a) where+ zero = SomeStruct (zero :: a '[])++forgetExtensions :: Ptr (a es) -> Ptr (SomeStruct a)+forgetExtensions = castPtr++withSomeCStruct+ :: forall a b+ . (forall es . PokeChain es => ToCStruct (a es))+ => SomeStruct a+ -> (forall es . (Extendss a es, PokeChain es) => Ptr (a es) -> IO b)+ -> IO b+withSomeCStruct (SomeStruct s) f = withCStruct s f++pokeSomeCStruct+ :: (forall es . PokeChain es => ToCStruct (a es))+ => Ptr (SomeStruct a)+ -> SomeStruct a+ -> IO b+ -> IO b+pokeSomeCStruct p (SomeStruct s) = pokeCStruct (castPtr p) s++peekSomeCStruct+ :: forall a+ . (Extensible a, forall es . (Extendss a es, PeekChain es) => FromCStruct (a es))+ => Ptr (SomeStruct a)+ -> IO (SomeStruct a)+peekSomeCStruct p = do+ head' <- peekCStruct (castPtr @_ @(a '[]) p)+ pNext <- peek @(Ptr BaseOutStructure) (p `plusPtr` 8)+ peekSomeChain @a pNext $ \tail' -> SomeStruct (setNext head' tail')++peekSomeChain+ :: forall+ a+ b+ . (Extensible a)+ => Ptr BaseOutStructure+ -> ( forall es+ . (Extendss a es, PokeChain es, Show (Chain es))+ => Chain es+ -> b+ )+ -> IO b+peekSomeChain p c = if p == nullPtr+ then pure (c ())+ else do+ baseOut <- peek p+ join+ $ peekChainHead @a (sType (baseOut :: BaseOutStructure))+ (castPtr @BaseOutStructure @() p)+ $ \head' -> peekSomeChain @a (next (baseOut :: BaseOutStructure))+ (\tail' -> c (head', tail'))+++peekChainHead+ :: forall a b+ . Extensible a+ => StructureType+ -> Ptr ()+ -> (forall e . (Extends a e, ToCStruct e, Show e) => e -> b)+ -> IO b+peekChainHead ty p c = case ty of+ STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR -> go @DisplayPresentInfoKHR+ STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT -> go @DebugReportCallbackCreateInfoEXT+ STRUCTURE_TYPE_VALIDATION_FLAGS_EXT -> go @ValidationFlagsEXT+ STRUCTURE_TYPE_VALIDATION_FEATURES_EXT -> go @ValidationFeaturesEXT+ STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD -> go @PipelineRasterizationStateRasterizationOrderAMD+ STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV -> go @DedicatedAllocationImageCreateInfoNV+ STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV -> go @DedicatedAllocationBufferCreateInfoNV+ STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV -> go @DedicatedAllocationMemoryAllocateInfoNV+ STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV -> go @ExternalMemoryImageCreateInfoNV+ STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV -> go @ExportMemoryAllocateInfoNV+ STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV -> go @ImportMemoryWin32HandleInfoNV+ STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV -> go @ExportMemoryWin32HandleInfoNV+ STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV -> go @Win32KeyedMutexAcquireReleaseInfoNV+ STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 -> go @(PhysicalDeviceFeatures2 '[])+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR -> go @PhysicalDevicePushDescriptorPropertiesKHR+ STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES -> go @PhysicalDeviceDriverProperties+ STRUCTURE_TYPE_PRESENT_REGIONS_KHR -> go @PresentRegionsKHR+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES -> go @PhysicalDeviceVariablePointersFeatures+ STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO -> go @PhysicalDeviceExternalImageFormatInfo+ STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES -> go @ExternalImageFormatProperties+ STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES -> go @PhysicalDeviceIDProperties+ STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO -> go @ExternalMemoryImageCreateInfo+ STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO -> go @ExternalMemoryBufferCreateInfo+ STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO -> go @ExportMemoryAllocateInfo+ STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR -> go @ImportMemoryWin32HandleInfoKHR+ STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR -> go @ExportMemoryWin32HandleInfoKHR+ STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR -> go @ImportMemoryFdInfoKHR+ STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR -> go @Win32KeyedMutexAcquireReleaseInfoKHR+ STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO -> go @ExportSemaphoreCreateInfo+ STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR -> go @ExportSemaphoreWin32HandleInfoKHR+ STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR -> go @D3D12FenceSubmitInfoKHR+ STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO -> go @ExportFenceCreateInfo+ STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR -> go @ExportFenceWin32HandleInfoKHR+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES -> go @PhysicalDeviceMultiviewFeatures+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES -> go @PhysicalDeviceMultiviewProperties+ STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO -> go @RenderPassMultiviewCreateInfo+ STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT -> go @SwapchainCounterCreateInfoEXT+ STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO -> go @MemoryAllocateFlagsInfo+ STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO -> go @BindBufferMemoryDeviceGroupInfo+ STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO -> go @BindImageMemoryDeviceGroupInfo+ STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO -> go @DeviceGroupRenderPassBeginInfo+ STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO -> go @DeviceGroupCommandBufferBeginInfo+ STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO -> go @DeviceGroupSubmitInfo+ STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO -> go @DeviceGroupBindSparseInfo+ STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR -> go @ImageSwapchainCreateInfoKHR+ STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR -> go @BindImageMemorySwapchainInfoKHR+ STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR -> go @DeviceGroupPresentInfoKHR+ STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO -> go @DeviceGroupDeviceCreateInfo+ STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR -> go @DeviceGroupSwapchainCreateInfoKHR+ STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD -> go @DisplayNativeHdrSurfaceCapabilitiesAMD+ STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD -> go @SwapchainDisplayNativeHdrCreateInfoAMD+ STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE -> go @PresentTimesInfoGOOGLE+ STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV -> go @PipelineViewportWScalingStateCreateInfoNV+ STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV -> go @PipelineViewportSwizzleStateCreateInfoNV+ STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT -> go @PhysicalDeviceDiscardRectanglePropertiesEXT+ STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT -> go @PipelineDiscardRectangleStateCreateInfoEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX -> go @PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX+ STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO -> go @RenderPassInputAttachmentAspectCreateInfo+ STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR -> go @SharedPresentSurfaceCapabilitiesKHR+ STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES -> go @PhysicalDevice16BitStorageFeatures+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES -> go @PhysicalDeviceSubgroupProperties+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES -> go @PhysicalDeviceShaderSubgroupExtendedTypesFeatures+ STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES -> go @PhysicalDevicePointClippingProperties+ STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS -> go @MemoryDedicatedRequirements+ STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO -> go @MemoryDedicatedAllocateInfo+ STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO -> go @ImageViewUsageCreateInfo+ STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO -> go @PipelineTessellationDomainOriginStateCreateInfo+ STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO -> go @SamplerYcbcrConversionInfo+ STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO -> go @BindImagePlaneMemoryInfo+ STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO -> go @ImagePlaneMemoryRequirementsInfo+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES -> go @PhysicalDeviceSamplerYcbcrConversionFeatures+ STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES -> go @SamplerYcbcrConversionImageFormatProperties+ STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD -> go @TextureLODGatherFormatPropertiesAMD+ STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO -> go @ProtectedSubmitInfo+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES -> go @PhysicalDeviceProtectedMemoryFeatures+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES -> go @PhysicalDeviceProtectedMemoryProperties+ STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV -> go @PipelineCoverageToColorStateCreateInfoNV+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES -> go @PhysicalDeviceSamplerFilterMinmaxProperties+ STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT -> go @SampleLocationsInfoEXT+ STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT -> go @RenderPassSampleLocationsBeginInfoEXT+ STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT -> go @PipelineSampleLocationsStateCreateInfoEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT -> go @PhysicalDeviceSampleLocationsPropertiesEXT+ STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO -> go @SamplerReductionModeCreateInfo+ STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT -> go @PhysicalDeviceBlendOperationAdvancedFeaturesEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT -> go @PhysicalDeviceBlendOperationAdvancedPropertiesEXT+ STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT -> go @PipelineColorBlendAdvancedStateCreateInfoEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT -> go @PhysicalDeviceInlineUniformBlockFeaturesEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT -> go @PhysicalDeviceInlineUniformBlockPropertiesEXT+ STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT -> go @WriteDescriptorSetInlineUniformBlockEXT+ STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT -> go @DescriptorPoolInlineUniformBlockCreateInfoEXT+ STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV -> go @PipelineCoverageModulationStateCreateInfoNV+ STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO -> go @ImageFormatListCreateInfo+ STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT -> go @ShaderModuleValidationCacheCreateInfoEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES -> go @PhysicalDeviceMaintenance3Properties+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES -> go @PhysicalDeviceShaderDrawParametersFeatures+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES -> go @PhysicalDeviceShaderFloat16Int8Features+ STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES -> go @PhysicalDeviceFloatControlsProperties+ STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES -> go @PhysicalDeviceHostQueryResetFeatures+ STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT -> go @DeviceQueueGlobalPriorityCreateInfoEXT+ STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT -> go @DebugUtilsMessengerCreateInfoEXT+ STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT -> go @ImportMemoryHostPointerInfoEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT -> go @PhysicalDeviceExternalMemoryHostPropertiesEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT -> go @PhysicalDeviceConservativeRasterizationPropertiesEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD -> go @PhysicalDeviceShaderCorePropertiesAMD+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD -> go @PhysicalDeviceShaderCoreProperties2AMD+ STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT -> go @PipelineRasterizationConservativeStateCreateInfoEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES -> go @PhysicalDeviceDescriptorIndexingFeatures+ STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES -> go @PhysicalDeviceDescriptorIndexingProperties+ STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO -> go @DescriptorSetLayoutBindingFlagsCreateInfo+ STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO -> go @DescriptorSetVariableDescriptorCountAllocateInfo+ STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT -> go @DescriptorSetVariableDescriptorCountLayoutSupport+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES -> go @PhysicalDeviceTimelineSemaphoreFeatures+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES -> go @PhysicalDeviceTimelineSemaphoreProperties+ STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO -> go @SemaphoreTypeCreateInfo+ STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO -> go @TimelineSemaphoreSubmitInfo+ STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT -> go @PipelineVertexInputDivisorStateCreateInfoEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT -> go @PhysicalDeviceVertexAttributeDivisorPropertiesEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT -> go @PhysicalDevicePCIBusInfoPropertiesEXT+ STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID -> go @ImportAndroidHardwareBufferInfoANDROID+ STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID -> go @AndroidHardwareBufferUsageANDROID+ STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID -> go @AndroidHardwareBufferFormatPropertiesANDROID+ STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT -> go @CommandBufferInheritanceConditionalRenderingInfoEXT+ STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID -> go @ExternalFormatANDROID+ STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES -> go @PhysicalDevice8BitStorageFeatures+ STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT -> go @PhysicalDeviceConditionalRenderingFeaturesEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES -> go @PhysicalDeviceVulkanMemoryModelFeatures+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES -> go @PhysicalDeviceShaderAtomicInt64Features+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT -> go @PhysicalDeviceVertexAttributeDivisorFeaturesEXT+ STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV -> go @QueueFamilyCheckpointPropertiesNV+ STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES -> go @PhysicalDeviceDepthStencilResolveProperties+ STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE -> go @SubpassDescriptionDepthStencilResolve+ STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT -> go @ImageViewASTCDecodeModeEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT -> go @PhysicalDeviceASTCDecodeFeaturesEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT -> go @PhysicalDeviceTransformFeedbackFeaturesEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT -> go @PhysicalDeviceTransformFeedbackPropertiesEXT+ STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT -> go @PipelineRasterizationStateStreamCreateInfoEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV -> go @PhysicalDeviceRepresentativeFragmentTestFeaturesNV+ STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV -> go @PipelineRepresentativeFragmentTestStateCreateInfoNV+ STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV -> go @PhysicalDeviceExclusiveScissorFeaturesNV+ STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV -> go @PipelineViewportExclusiveScissorStateCreateInfoNV+ STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV -> go @PhysicalDeviceCornerSampledImageFeaturesNV+ STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV -> go @PhysicalDeviceComputeShaderDerivativesFeaturesNV+ STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV -> go @PhysicalDeviceFragmentShaderBarycentricFeaturesNV+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV -> go @PhysicalDeviceShaderImageFootprintFeaturesNV+ STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV -> go @PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV+ STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV -> go @PipelineViewportShadingRateImageStateCreateInfoNV+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV -> go @PhysicalDeviceShadingRateImageFeaturesNV+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV -> go @PhysicalDeviceShadingRateImagePropertiesNV+ STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV -> go @PipelineViewportCoarseSampleOrderStateCreateInfoNV+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV -> go @PhysicalDeviceMeshShaderFeaturesNV+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV -> go @PhysicalDeviceMeshShaderPropertiesNV+ STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV -> go @WriteDescriptorSetAccelerationStructureNV+ STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV -> go @PhysicalDeviceRayTracingPropertiesNV+ STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT -> go @DrmFormatModifierPropertiesListEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT -> go @PhysicalDeviceImageDrmFormatModifierInfoEXT+ STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT -> go @ImageDrmFormatModifierListCreateInfoEXT+ STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT -> go @ImageDrmFormatModifierExplicitCreateInfoEXT+ STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO -> go @ImageStencilUsageCreateInfo+ STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD -> go @DeviceMemoryOverallocationCreateInfoAMD+ STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT -> go @PhysicalDeviceFragmentDensityMapFeaturesEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT -> go @PhysicalDeviceFragmentDensityMapPropertiesEXT+ STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT -> go @RenderPassFragmentDensityMapCreateInfoEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES -> go @PhysicalDeviceScalarBlockLayoutFeatures+ STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR -> go @SurfaceProtectedCapabilitiesKHR+ STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES -> go @PhysicalDeviceUniformBufferStandardLayoutFeatures+ STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT -> go @PhysicalDeviceDepthClipEnableFeaturesEXT+ STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT -> go @PipelineRasterizationDepthClipStateCreateInfoEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT -> go @PhysicalDeviceMemoryBudgetPropertiesEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT -> go @PhysicalDeviceMemoryPriorityFeaturesEXT+ STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT -> go @MemoryPriorityAllocateInfoEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES -> go @PhysicalDeviceBufferDeviceAddressFeatures+ STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT -> go @PhysicalDeviceBufferDeviceAddressFeaturesEXT+ STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO -> go @BufferOpaqueCaptureAddressCreateInfo+ STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT -> go @BufferDeviceAddressCreateInfoEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT -> go @PhysicalDeviceImageViewImageFormatInfoEXT+ STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT -> go @FilterCubicImageViewImageFormatPropertiesEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES -> go @PhysicalDeviceImagelessFramebufferFeatures+ STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO -> go @FramebufferAttachmentsCreateInfo+ STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO -> go @RenderPassAttachmentBeginInfo+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT -> go @PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV -> go @PhysicalDeviceCooperativeMatrixFeaturesNV+ STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV -> go @PhysicalDeviceCooperativeMatrixPropertiesNV+ STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT -> go @PhysicalDeviceYcbcrImageArraysFeaturesEXT+ STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP -> go @PresentFrameTokenGGP+ STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT -> go @PipelineCreationFeedbackCreateInfoEXT+ STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT -> go @SurfaceFullScreenExclusiveInfoEXT+ STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT -> go @SurfaceFullScreenExclusiveWin32InfoEXT+ STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT -> go @SurfaceCapabilitiesFullScreenExclusiveEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR -> go @PhysicalDevicePerformanceQueryFeaturesKHR+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR -> go @PhysicalDevicePerformanceQueryPropertiesKHR+ STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR -> go @QueryPoolPerformanceCreateInfoKHR+ STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR -> go @PerformanceQuerySubmitInfoKHR+ STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV -> go @PhysicalDeviceCoverageReductionModeFeaturesNV+ STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV -> go @PipelineCoverageReductionStateCreateInfoNV+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL -> go @PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL+ STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL -> go @QueryPoolCreateInfoINTEL+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR -> go @PhysicalDeviceShaderClockFeaturesKHR+ STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT -> go @PhysicalDeviceIndexTypeUint8FeaturesEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV -> go @PhysicalDeviceShaderSMBuiltinsPropertiesNV+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV -> go @PhysicalDeviceShaderSMBuiltinsFeaturesNV+ STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT -> go @PhysicalDeviceFragmentShaderInterlockFeaturesEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES -> go @PhysicalDeviceSeparateDepthStencilLayoutsFeatures+ STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT -> go @AttachmentReferenceStencilLayout+ STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT -> go @AttachmentDescriptionStencilLayout+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR -> go @PhysicalDevicePipelineExecutablePropertiesFeaturesKHR+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT -> go @PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT -> go @PhysicalDeviceTexelBufferAlignmentFeaturesEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT -> go @PhysicalDeviceTexelBufferAlignmentPropertiesEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT -> go @PhysicalDeviceSubgroupSizeControlFeaturesEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT -> go @PhysicalDeviceSubgroupSizeControlPropertiesEXT+ STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT -> go @PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT+ STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO -> go @MemoryOpaqueCaptureAddressAllocateInfo+ STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT -> go @PhysicalDeviceLineRasterizationFeaturesEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT -> go @PhysicalDeviceLineRasterizationPropertiesEXT+ STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT -> go @PipelineRasterizationLineStateCreateInfoEXT+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES -> go @PhysicalDeviceVulkan11Features+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES -> go @PhysicalDeviceVulkan11Properties+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES -> go @PhysicalDeviceVulkan12Features+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES -> go @PhysicalDeviceVulkan12Properties+ STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD -> go @PipelineCompilerControlCreateInfoAMD+ STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD -> go @PhysicalDeviceCoherentMemoryFeaturesAMD+ STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM -> go @RenderPassTransformBeginInfoQCOM+ STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM -> go @CommandBufferInheritanceRenderPassTransformInfoQCOM+ t -> throwIO $ IOError Nothing InvalidArgument "peekChainHead" ("Unrecognized struct type: " <> show t) Nothing Nothing+ where+ go :: forall e . (Typeable e, FromCStruct e, ToCStruct e, Show e) => IO b+ go =+ let r = extends @a @e Proxy $ do+ head' <- peekCStruct @e (castPtr p)+ pure $ c head'+ in fromMaybe+ (throwIO $ IOError+ Nothing+ InvalidArgument+ "peekChainHead"+ ( "Illegal struct extension of "+ <> show (extensibleType @a)+ <> " with "+ <> show ty+ )+ Nothing+ Nothing+ )+ r++class Extensible (a :: [Type] -> Type) where+ extensibleType :: StructureType+ getNext :: a es -> Chain es+ setNext :: a ds -> Chain es -> a es+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends a e => b) -> Maybe b++type family Chain (xs :: [a]) = (r :: a) | r -> xs where+ Chain '[] = ()+ Chain (x:xs) = (x, Chain xs)++type family Extendss (p :: [Type] -> Type) (xs :: [Type]) :: Constraint where+ Extendss p '[] = ()+ Extendss p (x : xs) = (Extends p x, Extendss p xs)++class PokeChain es where+ withChain :: Chain es -> (Ptr (Chain es) -> IO a) -> IO a+ withZeroChain :: (Ptr (Chain es) -> IO a) -> IO a++instance PokeChain '[] where+ withChain () f = f nullPtr+ withZeroChain f = f nullPtr++instance (ToCStruct e, PokeChain es) => PokeChain (e:es) where+ withChain (e, es) f = evalContT $ do+ t <- ContT $ withChain es+ h <- ContT $ withCStruct e+ lift $ linkChain h t+ lift $ f (castPtr h)+ withZeroChain f = evalContT $ do+ t <- ContT $ withZeroChain @es+ h <- ContT $ withZeroCStruct @e+ lift $ linkChain h t+ lift $ f (castPtr h)++class PeekChain es where+ peekChain :: Ptr (Chain es) -> IO (Chain es)++instance PeekChain '[] where+ peekChain _ = pure ()++instance (FromCStruct e, PeekChain es) => PeekChain (e:es) where+ peekChain p = do+ h <- peekCStruct @e (castPtr p)+ tPtr <- peek (p `plusPtr` 8)+ t <- peekChain tPtr+ pure (h, t)++linkChain :: Ptr a -> Ptr b -> IO ()+linkChain head' tail' = poke (head' `plusPtr` 8) tail'+
+ src/Graphics/Vulkan/CStruct/Extends.hs-boot view
@@ -0,0 +1,33 @@+{-# language CPP #-}+module Graphics.Vulkan.CStruct.Extends ( BaseInStructure+ , BaseOutStructure+ , PeekChain+ , PokeChain+ , Chain+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data BaseInStructure++instance ToCStruct BaseInStructure+instance Show BaseInStructure++instance FromCStruct BaseInStructure+++data BaseOutStructure++instance ToCStruct BaseOutStructure+instance Show BaseOutStructure++instance FromCStruct BaseOutStructure+++class PeekChain (xs :: [Type])+class PokeChain (xs :: [Type])+type family Chain (xs :: [a]) = (r :: a) | r -> xs where+ Chain '[] = ()+ Chain (x:xs) = (x, Chain xs)+
+ src/Graphics/Vulkan/CStruct/Utils.hs view
@@ -0,0 +1,207 @@+{-# language CPP #-}+module Graphics.Vulkan.CStruct.Utils ( withVec+ , withArray+ , withSizedArray+ , byteStringToSizedVector+ , byteStringToNullTerminatedSizedVector+ , padSized+ , padVector+ , packCStringElemOff+ , pokeFixedLengthByteString+ , pokeFixedLengthNullTerminatedByteString+ , peekByteStringFromSizedVectorPtr+ , lowerArrayPtr+ , advancePtrBytes+ ) where++import Foreign.Marshal.Array (allocaArray)+import Foreign.Marshal.Utils (copyBytes)+import Foreign.Storable (peekElemOff)+import Foreign.Storable (pokeElemOff)+import GHC.Ptr (castPtr)+import Foreign.Ptr (plusPtr)+import GHC.TypeNats (natVal)+import qualified Data.ByteString (length)+import Data.ByteString (packCString)+import Data.ByteString (packCStringLen)+import Data.ByteString (take)+import Data.ByteString (unpack)+import Data.ByteString.Unsafe (unsafeUseAsCString)+import Data.Vector (ifoldr)+import qualified Data.Vector (length)+import qualified Data.Vector.Generic ((++))+import qualified Data.Vector.Generic (empty)+import qualified Data.Vector.Generic (fromList)+import qualified Data.Vector.Generic (length)+import qualified Data.Vector.Generic (replicate)+import qualified Data.Vector.Generic (snoc)+import qualified Data.Vector.Generic (take)+import qualified Data.Vector.Generic.Sized (fromSized)+import Data.Proxy (Proxy(..))+import Foreign.C.Types (CChar(..))+import Foreign.Storable (Storable)+import Foreign.Ptr (Ptr)+import GHC.TypeNats (type(<=))+import GHC.TypeNats (KnownNat)+import Data.Word (Word8)+import Data.ByteString (ByteString)+import Data.Vector (Vector)+import qualified Data.Vector.Generic (Vector)+import qualified Data.Vector.Generic.Sized.Internal (Vector)+import qualified Data.Vector.Generic.Sized.Internal (Vector(..))+import qualified Data.Vector.Sized (Vector)+import qualified Data.Vector.Storable.Sized (Vector)++packCStringElemOff :: Ptr (Ptr CChar) -> Int -> IO ByteString+packCStringElemOff p o = packCString =<< peekElemOff p o++withArray+ :: forall a b d+ . (a -> (b -> IO d) -> IO d)+ -> Vector a+ -> (Vector b -> IO d)+ -> IO d+withArray alloc v cont =+ let go :: a -> (Vector b -> IO d) -> (Vector b -> IO d)+ go x complete bs = alloc x (\b -> complete (Data.Vector.Generic.snoc bs b))+ in foldr go cont v (Data.Vector.Generic.empty)++withSizedArray+ :: forall a b d n+ . (a -> (b -> IO d) -> IO d)+ -> Data.Vector.Sized.Vector n a+ -> (Data.Vector.Sized.Vector n b -> IO d)+ -> IO d+withSizedArray alloc v cont = withArray+ alloc+ (Data.Vector.Generic.Sized.fromSized v)+ (cont . Data.Vector.Generic.Sized.Internal.Vector)++withVec+ :: forall a b d+ . Storable b+ => (a -> (b -> IO d) -> IO d)+ -> Vector a+ -> (Ptr b -> IO d)+ -> IO d+withVec alloc v cont = allocaArray (Data.Vector.length v) $ \p ->+ let go :: Int -> a -> IO d -> IO d+ go index x complete = alloc x (\b -> pokeElemOff p index b *> complete)+ in ifoldr go (cont p) v++-- | Pad or truncate a vector so that it has the required size+padSized+ :: forall n a v+ . (KnownNat n, Data.Vector.Generic.Vector v a)+ => a+ -- ^ The value with which to pad if the given vector is too short+ -> v a+ -- ^ The vector to pad or truncate+ -> Data.Vector.Generic.Sized.Internal.Vector v n a+padSized p v = Data.Vector.Generic.Sized.Internal.Vector padded+ where+ padded :: v a+ padded = let n = fromIntegral (natVal (Proxy @n))+ in padVector p n v++-- | Make sure a vector is at least a certain length+padVector+ :: (Data.Vector.Generic.Vector v a)+ => a+ -> Int+ -> v a+ -> v a+padVector p n v =+ let m = Data.Vector.Generic.length v+ in case m `compare` n of+ LT -> v Data.Vector.Generic.++ (Data.Vector.Generic.replicate (n - m) p)+ EQ -> v+ GT -> Data.Vector.Generic.take n v++-- | Convert a bytestring to a null terminated sized vector. If the bytestring+-- is too long it will be truncated.+byteStringToNullTerminatedSizedVector+ :: forall n v+ . (KnownNat n, 1 <= n, Data.Vector.Generic.Vector v CChar)+ => ByteString+ -> Data.Vector.Generic.Sized.Internal.Vector v n CChar+byteStringToNullTerminatedSizedVector bs = padSized+ (CChar 0)+ (byteStringToVector (Data.ByteString.take predN bs))+ where+ predN = pred (fromIntegral (natVal (Proxy @n)))+ byteStringToVector =+ Data.Vector.Generic.fromList . fmap fromIntegral . Data.ByteString.unpack++-- | Convert a bytestring to a sized vector. If the bytestring is too+-- long it will be truncated. If it is too short it will be zero padded+byteStringToSizedVector+ :: forall n v+ . (KnownNat n, Data.Vector.Generic.Vector v Word8)+ => ByteString+ -> Data.Vector.Generic.Sized.Internal.Vector v n Word8+byteStringToSizedVector bs = padSized+ 0+ (byteStringToVector (Data.ByteString.take n bs))+ where+ n = fromIntegral (natVal (Proxy @n))+ byteStringToVector = Data.Vector.Generic.fromList . Data.ByteString.unpack++-- | Store a 'ByteString' in a fixed amount of space inserting a null+-- character at the end and truncating if necessary.+--+-- If the 'ByteString' is not long enough to fill the space the remaining+-- bytes are unchanged+--+-- Note that if the 'ByteString' is exactly long enough the last byte will+-- still be replaced with 0+pokeFixedLengthNullTerminatedByteString+ :: forall n+ . KnownNat n+ => Ptr (Data.Vector.Storable.Sized.Vector n CChar)+ -> ByteString+ -> IO ()+pokeFixedLengthNullTerminatedByteString to bs =+ unsafeUseAsCString bs $ \from -> do+ let maxLength = fromIntegral (natVal (Proxy @n))+ len = min maxLength (Data.ByteString.length bs)+ end = min (maxLength - 1) len+ -- Copy the entire string into the buffer+ copyBytes (lowerArrayPtr to) from len+ -- Make the last byte (the one following the string, or the+ -- one at the end of the buffer)+ pokeElemOff (lowerArrayPtr to) end 0++-- | Store a 'ByteString' in a fixed amount of space, truncating if necessary.+--+-- If the 'ByteString' is not long enough to fill the space the remaining+-- bytes are unchanged+pokeFixedLengthByteString+ :: forall n+ . KnownNat n+ => Ptr (Data.Vector.Storable.Sized.Vector n Word8)+ -> ByteString+ -> IO ()+pokeFixedLengthByteString to bs = unsafeUseAsCString bs $ \from -> do+ let maxLength = fromIntegral (natVal (Proxy @n))+ len = min maxLength (Data.ByteString.length bs)+ copyBytes (lowerArrayPtr to) (castPtr @CChar @Word8 from) len++peekByteStringFromSizedVectorPtr+ :: forall n+ . KnownNat n+ => Ptr (Data.Vector.Storable.Sized.Vector n Word8)+ -> IO ByteString+peekByteStringFromSizedVectorPtr p = packCStringLen (castPtr p, fromIntegral (natVal (Proxy @n)))++-- | Get the pointer to the first element in the array+lowerArrayPtr+ :: forall a n+ . Ptr (Data.Vector.Storable.Sized.Vector n a)+ -> Ptr a+lowerArrayPtr = castPtr++-- | A type restricted 'plusPtr'+advancePtrBytes :: Ptr a -> Int -> Ptr a+advancePtrBytes = plusPtr+
src/Graphics/Vulkan/Core10.hs view
@@ -1,69 +1,76 @@-{-# language Strict #-} {-# language CPP #-}---module Graphics.Vulkan.Core10- ( module Graphics.Vulkan.Core10.Core- , module Graphics.Vulkan.Core10.Version- , module Graphics.Vulkan.Core10.Constants- , module Graphics.Vulkan.Core10.DeviceInitialization- , module Graphics.Vulkan.Core10.Device- , module Graphics.Vulkan.Core10.ExtensionDiscovery- , module Graphics.Vulkan.Core10.LayerDiscovery- , module Graphics.Vulkan.Core10.Queue- , module Graphics.Vulkan.Core10.Memory- , module Graphics.Vulkan.Core10.MemoryManagement- , module Graphics.Vulkan.Core10.SparseResourceMemoryManagement- , module Graphics.Vulkan.Core10.Fence- , module Graphics.Vulkan.Core10.QueueSemaphore- , module Graphics.Vulkan.Core10.Event- , module Graphics.Vulkan.Core10.Query- , module Graphics.Vulkan.Core10.Buffer- , module Graphics.Vulkan.Core10.BufferView- , module Graphics.Vulkan.Core10.Image- , module Graphics.Vulkan.Core10.ImageView- , module Graphics.Vulkan.Core10.Shader- , module Graphics.Vulkan.Core10.PipelineCache- , module Graphics.Vulkan.Core10.Pipeline- , module Graphics.Vulkan.Core10.PipelineLayout- , module Graphics.Vulkan.Core10.Sampler- , module Graphics.Vulkan.Core10.DescriptorSet- , module Graphics.Vulkan.Core10.Pass- , module Graphics.Vulkan.Core10.CommandPool- , module Graphics.Vulkan.Core10.CommandBuffer- , module Graphics.Vulkan.Core10.CommandBufferBuilding- ) where---import Graphics.Vulkan.Core10.Core-import Graphics.Vulkan.Core10.Version-import Graphics.Vulkan.Core10.Constants-import Graphics.Vulkan.Core10.DeviceInitialization+module Graphics.Vulkan.Core10 ( pattern API_VERSION_1_0+ , module Graphics.Vulkan.Core10.APIConstants+ , module Graphics.Vulkan.Core10.AllocationCallbacks+ , module Graphics.Vulkan.Core10.BaseType+ , module Graphics.Vulkan.Core10.Buffer+ , module Graphics.Vulkan.Core10.BufferView+ , module Graphics.Vulkan.Core10.CommandBuffer+ , module Graphics.Vulkan.Core10.CommandBufferBuilding+ , module Graphics.Vulkan.Core10.CommandPool+ , module Graphics.Vulkan.Core10.DescriptorSet+ , module Graphics.Vulkan.Core10.Device+ , module Graphics.Vulkan.Core10.DeviceInitialization+ , module Graphics.Vulkan.Core10.Enums+ , module Graphics.Vulkan.Core10.Event+ , module Graphics.Vulkan.Core10.ExtensionDiscovery+ , module Graphics.Vulkan.Core10.Fence+ , module Graphics.Vulkan.Core10.FuncPointers+ , module Graphics.Vulkan.Core10.Handles+ , module Graphics.Vulkan.Core10.Image+ , module Graphics.Vulkan.Core10.ImageView+ , module Graphics.Vulkan.Core10.LayerDiscovery+ , module Graphics.Vulkan.Core10.Memory+ , module Graphics.Vulkan.Core10.MemoryManagement+ , module Graphics.Vulkan.Core10.OtherTypes+ , module Graphics.Vulkan.Core10.Pass+ , module Graphics.Vulkan.Core10.Pipeline+ , module Graphics.Vulkan.Core10.PipelineCache+ , module Graphics.Vulkan.Core10.PipelineLayout+ , module Graphics.Vulkan.Core10.Query+ , module Graphics.Vulkan.Core10.Queue+ , module Graphics.Vulkan.Core10.QueueSemaphore+ , module Graphics.Vulkan.Core10.Sampler+ , module Graphics.Vulkan.Core10.Shader+ , module Graphics.Vulkan.Core10.SharedTypes+ , module Graphics.Vulkan.Core10.SparseResourceMemoryManagement+ ) where+import Graphics.Vulkan.Core10.APIConstants+import Graphics.Vulkan.Core10.AllocationCallbacks+import Graphics.Vulkan.Core10.BaseType+import Graphics.Vulkan.Core10.Buffer+import Graphics.Vulkan.Core10.BufferView+import Graphics.Vulkan.Core10.CommandBuffer+import Graphics.Vulkan.Core10.CommandBufferBuilding+import Graphics.Vulkan.Core10.CommandPool+import Graphics.Vulkan.Core10.DescriptorSet import Graphics.Vulkan.Core10.Device+import Graphics.Vulkan.Core10.DeviceInitialization+import Graphics.Vulkan.Core10.Enums+import Graphics.Vulkan.Core10.Event import Graphics.Vulkan.Core10.ExtensionDiscovery-import Graphics.Vulkan.Core10.LayerDiscovery-import Graphics.Vulkan.Core10.Queue-import Graphics.Vulkan.Core10.Memory-import Graphics.Vulkan.Core10.MemoryManagement-import Graphics.Vulkan.Core10.SparseResourceMemoryManagement import Graphics.Vulkan.Core10.Fence-import Graphics.Vulkan.Core10.QueueSemaphore-import Graphics.Vulkan.Core10.Event-import Graphics.Vulkan.Core10.Query-import Graphics.Vulkan.Core10.Buffer-import Graphics.Vulkan.Core10.BufferView+import Graphics.Vulkan.Core10.FuncPointers+import Graphics.Vulkan.Core10.Handles import Graphics.Vulkan.Core10.Image import Graphics.Vulkan.Core10.ImageView-import Graphics.Vulkan.Core10.Shader-import Graphics.Vulkan.Core10.PipelineCache+import Graphics.Vulkan.Core10.LayerDiscovery+import Graphics.Vulkan.Core10.Memory+import Graphics.Vulkan.Core10.MemoryManagement+import Graphics.Vulkan.Core10.OtherTypes+import Graphics.Vulkan.Core10.Pass import Graphics.Vulkan.Core10.Pipeline+import Graphics.Vulkan.Core10.PipelineCache import Graphics.Vulkan.Core10.PipelineLayout+import Graphics.Vulkan.Core10.Query+import Graphics.Vulkan.Core10.Queue+import Graphics.Vulkan.Core10.QueueSemaphore import Graphics.Vulkan.Core10.Sampler-import Graphics.Vulkan.Core10.DescriptorSet-import Graphics.Vulkan.Core10.Pass-import Graphics.Vulkan.Core10.CommandPool-import Graphics.Vulkan.Core10.CommandBuffer-import Graphics.Vulkan.Core10.CommandBufferBuilding--+import Graphics.Vulkan.Core10.Shader+import Graphics.Vulkan.Core10.SharedTypes+import Graphics.Vulkan.Core10.SparseResourceMemoryManagement+import Data.Word (Word32)+import Graphics.Vulkan.Version (pattern MAKE_VERSION)+pattern API_VERSION_1_0 :: Word32+pattern API_VERSION_1_0 = MAKE_VERSION 1 0 0
+ src/Graphics/Vulkan/Core10/APIConstants.hs view
@@ -0,0 +1,226 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.APIConstants ( pattern LOD_CLAMP_NONE+ , LUID_SIZE_KHR+ , QUEUE_FAMILY_EXTERNAL_KHR+ , MAX_DEVICE_GROUP_SIZE_KHR+ , MAX_DRIVER_NAME_SIZE_KHR+ , MAX_DRIVER_INFO_SIZE_KHR+ , MAX_PHYSICAL_DEVICE_NAME_SIZE+ , pattern MAX_PHYSICAL_DEVICE_NAME_SIZE+ , UUID_SIZE+ , pattern UUID_SIZE+ , LUID_SIZE+ , pattern LUID_SIZE+ , MAX_EXTENSION_NAME_SIZE+ , pattern MAX_EXTENSION_NAME_SIZE+ , MAX_DESCRIPTION_SIZE+ , pattern MAX_DESCRIPTION_SIZE+ , MAX_MEMORY_TYPES+ , pattern MAX_MEMORY_TYPES+ , MAX_MEMORY_HEAPS+ , pattern MAX_MEMORY_HEAPS+ , REMAINING_MIP_LEVELS+ , pattern REMAINING_MIP_LEVELS+ , REMAINING_ARRAY_LAYERS+ , pattern REMAINING_ARRAY_LAYERS+ , WHOLE_SIZE+ , pattern WHOLE_SIZE+ , ATTACHMENT_UNUSED+ , pattern ATTACHMENT_UNUSED+ , QUEUE_FAMILY_IGNORED+ , pattern QUEUE_FAMILY_IGNORED+ , QUEUE_FAMILY_EXTERNAL+ , pattern QUEUE_FAMILY_EXTERNAL+ , QUEUE_FAMILY_FOREIGN_EXT+ , pattern QUEUE_FAMILY_FOREIGN_EXT+ , SUBPASS_EXTERNAL+ , pattern SUBPASS_EXTERNAL+ , MAX_DEVICE_GROUP_SIZE+ , pattern MAX_DEVICE_GROUP_SIZE+ , MAX_DRIVER_NAME_SIZE+ , pattern MAX_DRIVER_NAME_SIZE+ , MAX_DRIVER_INFO_SIZE+ , pattern MAX_DRIVER_INFO_SIZE+ , SHADER_UNUSED_NV+ , pattern SHADER_UNUSED_NV+ , pattern NULL_HANDLE+ , IsHandle+ , Bool32(..)+ , PipelineCacheHeaderVersion(..)+ ) where++import Data.Word (Word32)+import Data.Word (Word64)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.BaseType (Bool32(..))+import Graphics.Vulkan.Core10.Enums.PipelineCacheHeaderVersion (PipelineCacheHeaderVersion(..))+-- No documentation found for TopLevel "VK_LOD_CLAMP_NONE"+pattern LOD_CLAMP_NONE :: Float+pattern LOD_CLAMP_NONE = 1000.0+++-- No documentation found for TopLevel "VK_LUID_SIZE_KHR"+type LUID_SIZE_KHR = LUID_SIZE+++-- No documentation found for TopLevel "VK_QUEUE_FAMILY_EXTERNAL_KHR"+type QUEUE_FAMILY_EXTERNAL_KHR = QUEUE_FAMILY_EXTERNAL+++-- No documentation found for TopLevel "VK_MAX_DEVICE_GROUP_SIZE_KHR"+type MAX_DEVICE_GROUP_SIZE_KHR = MAX_DEVICE_GROUP_SIZE+++-- No documentation found for TopLevel "VK_MAX_DRIVER_NAME_SIZE_KHR"+type MAX_DRIVER_NAME_SIZE_KHR = MAX_DRIVER_NAME_SIZE+++-- No documentation found for TopLevel "VK_MAX_DRIVER_INFO_SIZE_KHR"+type MAX_DRIVER_INFO_SIZE_KHR = MAX_DRIVER_INFO_SIZE+++type MAX_PHYSICAL_DEVICE_NAME_SIZE = 256++-- No documentation found for TopLevel "VK_MAX_PHYSICAL_DEVICE_NAME_SIZE"+pattern MAX_PHYSICAL_DEVICE_NAME_SIZE :: forall a . Integral a => a+pattern MAX_PHYSICAL_DEVICE_NAME_SIZE = 256+++type UUID_SIZE = 16++-- No documentation found for TopLevel "VK_UUID_SIZE"+pattern UUID_SIZE :: forall a . Integral a => a+pattern UUID_SIZE = 16+++type LUID_SIZE = 8++-- No documentation found for TopLevel "VK_LUID_SIZE"+pattern LUID_SIZE :: forall a . Integral a => a+pattern LUID_SIZE = 8+++type MAX_EXTENSION_NAME_SIZE = 256++-- No documentation found for TopLevel "VK_MAX_EXTENSION_NAME_SIZE"+pattern MAX_EXTENSION_NAME_SIZE :: forall a . Integral a => a+pattern MAX_EXTENSION_NAME_SIZE = 256+++type MAX_DESCRIPTION_SIZE = 256++-- No documentation found for TopLevel "VK_MAX_DESCRIPTION_SIZE"+pattern MAX_DESCRIPTION_SIZE :: forall a . Integral a => a+pattern MAX_DESCRIPTION_SIZE = 256+++type MAX_MEMORY_TYPES = 32++-- No documentation found for TopLevel "VK_MAX_MEMORY_TYPES"+pattern MAX_MEMORY_TYPES :: forall a . Integral a => a+pattern MAX_MEMORY_TYPES = 32+++type MAX_MEMORY_HEAPS = 16++-- No documentation found for TopLevel "VK_MAX_MEMORY_HEAPS"+pattern MAX_MEMORY_HEAPS :: forall a . Integral a => a+pattern MAX_MEMORY_HEAPS = 16+++type REMAINING_MIP_LEVELS = 0xffffffff++-- No documentation found for TopLevel "VK_REMAINING_MIP_LEVELS"+pattern REMAINING_MIP_LEVELS :: Word32+pattern REMAINING_MIP_LEVELS = 0xffffffff+++type REMAINING_ARRAY_LAYERS = 0xffffffff++-- No documentation found for TopLevel "VK_REMAINING_ARRAY_LAYERS"+pattern REMAINING_ARRAY_LAYERS :: Word32+pattern REMAINING_ARRAY_LAYERS = 0xffffffff+++type WHOLE_SIZE = 0xffffffffffffffff++-- No documentation found for TopLevel "VK_WHOLE_SIZE"+pattern WHOLE_SIZE :: Word64+pattern WHOLE_SIZE = 0xffffffffffffffff+++type ATTACHMENT_UNUSED = 0xffffffff++-- No documentation found for TopLevel "VK_ATTACHMENT_UNUSED"+pattern ATTACHMENT_UNUSED :: Word32+pattern ATTACHMENT_UNUSED = 0xffffffff+++type QUEUE_FAMILY_IGNORED = 0xffffffff++-- No documentation found for TopLevel "VK_QUEUE_FAMILY_IGNORED"+pattern QUEUE_FAMILY_IGNORED :: Word32+pattern QUEUE_FAMILY_IGNORED = 0xffffffff+++type QUEUE_FAMILY_EXTERNAL = 0xfffffffe++-- No documentation found for TopLevel "VK_QUEUE_FAMILY_EXTERNAL"+pattern QUEUE_FAMILY_EXTERNAL :: Word32+pattern QUEUE_FAMILY_EXTERNAL = 0xfffffffe+++type QUEUE_FAMILY_FOREIGN_EXT = 0xfffffffd++-- No documentation found for TopLevel "VK_QUEUE_FAMILY_FOREIGN_EXT"+pattern QUEUE_FAMILY_FOREIGN_EXT :: Word32+pattern QUEUE_FAMILY_FOREIGN_EXT = 0xfffffffd+++type SUBPASS_EXTERNAL = 0xffffffff++-- No documentation found for TopLevel "VK_SUBPASS_EXTERNAL"+pattern SUBPASS_EXTERNAL :: Word32+pattern SUBPASS_EXTERNAL = 0xffffffff+++type MAX_DEVICE_GROUP_SIZE = 32++-- No documentation found for TopLevel "VK_MAX_DEVICE_GROUP_SIZE"+pattern MAX_DEVICE_GROUP_SIZE :: forall a . Integral a => a+pattern MAX_DEVICE_GROUP_SIZE = 32+++type MAX_DRIVER_NAME_SIZE = 256++-- No documentation found for TopLevel "VK_MAX_DRIVER_NAME_SIZE"+pattern MAX_DRIVER_NAME_SIZE :: forall a . Integral a => a+pattern MAX_DRIVER_NAME_SIZE = 256+++type MAX_DRIVER_INFO_SIZE = 256++-- No documentation found for TopLevel "VK_MAX_DRIVER_INFO_SIZE"+pattern MAX_DRIVER_INFO_SIZE :: forall a . Integral a => a+pattern MAX_DRIVER_INFO_SIZE = 256+++type SHADER_UNUSED_NV = 0xffffffff++-- No documentation found for TopLevel "VK_SHADER_UNUSED_NV"+pattern SHADER_UNUSED_NV :: Word32+pattern SHADER_UNUSED_NV = 0xffffffff+++-- | VK_NULL_HANDLE - Reserved non-valid object handle+--+-- = See Also+--+-- No cross-references are available+pattern NULL_HANDLE :: IsHandle a => a+pattern NULL_HANDLE <- ((== zero) -> True)+ where NULL_HANDLE = zero++-- | A class for things which can be created with 'NULL_HANDLE'+class (Eq a, Zero a) => IsHandle a where+
+ src/Graphics/Vulkan/Core10/APIConstants.hs-boot view
@@ -0,0 +1,24 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.APIConstants ( LUID_SIZE+ , QUEUE_FAMILY_EXTERNAL+ , MAX_DEVICE_GROUP_SIZE+ , MAX_DRIVER_NAME_SIZE+ , MAX_DRIVER_INFO_SIZE+ ) where++++type LUID_SIZE = 8+++type QUEUE_FAMILY_EXTERNAL = 0xfffffffe+++type MAX_DEVICE_GROUP_SIZE = 32+++type MAX_DRIVER_NAME_SIZE = 256+++type MAX_DRIVER_INFO_SIZE = 256+
+ src/Graphics/Vulkan/Core10/AllocationCallbacks.hs view
@@ -0,0 +1,209 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks(..)) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (plusPtr)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.FuncPointers (PFN_vkAllocationFunction)+import Graphics.Vulkan.Core10.FuncPointers (PFN_vkFreeFunction)+import Graphics.Vulkan.Core10.FuncPointers (PFN_vkInternalAllocationNotification)+import Graphics.Vulkan.Core10.FuncPointers (PFN_vkInternalFreeNotification)+import Graphics.Vulkan.Core10.FuncPointers (PFN_vkReallocationFunction)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+-- | VkAllocationCallbacks - Structure containing callback function pointers+-- for memory allocation+--+-- == Valid Usage+--+-- - @pfnAllocation@ /must/ be a valid pointer to a valid user-defined+-- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkAllocationFunction'+--+-- - @pfnReallocation@ /must/ be a valid pointer to a valid user-defined+-- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkReallocationFunction'+--+-- - @pfnFree@ /must/ be a valid pointer to a valid user-defined+-- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkFreeFunction'+--+-- - If either of @pfnInternalAllocation@ or @pfnInternalFree@ is not+-- @NULL@, both /must/ be valid callbacks+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkAllocationFunction',+-- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkFreeFunction',+-- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkInternalAllocationNotification',+-- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkInternalFreeNotification',+-- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkReallocationFunction',+-- 'Graphics.Vulkan.Core10.Memory.allocateMemory',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.createAccelerationStructureNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_android_surface.createAndroidSurfaceKHR',+-- 'Graphics.Vulkan.Core10.Buffer.createBuffer',+-- 'Graphics.Vulkan.Core10.BufferView.createBufferView',+-- 'Graphics.Vulkan.Core10.CommandPool.createCommandPool',+-- 'Graphics.Vulkan.Core10.Pipeline.createComputePipelines',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.createDebugReportCallbackEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.createDebugUtilsMessengerEXT',+-- 'Graphics.Vulkan.Core10.DescriptorSet.createDescriptorPool',+-- 'Graphics.Vulkan.Core10.DescriptorSet.createDescriptorSetLayout',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.createDescriptorUpdateTemplate',+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.createDescriptorUpdateTemplateKHR',+-- 'Graphics.Vulkan.Core10.Device.createDevice',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.createDisplayModeKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.createDisplayPlaneSurfaceKHR',+-- 'Graphics.Vulkan.Core10.Event.createEvent',+-- 'Graphics.Vulkan.Core10.Fence.createFence',+-- 'Graphics.Vulkan.Core10.Pass.createFramebuffer',+-- 'Graphics.Vulkan.Core10.Pipeline.createGraphicsPipelines',+-- 'Graphics.Vulkan.Extensions.VK_EXT_headless_surface.createHeadlessSurfaceEXT',+-- 'Graphics.Vulkan.Extensions.VK_MVK_ios_surface.createIOSSurfaceMVK',+-- 'Graphics.Vulkan.Core10.Image.createImage',+-- 'Graphics.Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface.createImagePipeSurfaceFUCHSIA',+-- 'Graphics.Vulkan.Core10.ImageView.createImageView',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.createIndirectCommandsLayoutNVX',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.createInstance',+-- 'Graphics.Vulkan.Extensions.VK_MVK_macos_surface.createMacOSSurfaceMVK',+-- 'Graphics.Vulkan.Extensions.VK_EXT_metal_surface.createMetalSurfaceEXT',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.createObjectTableNVX',+-- 'Graphics.Vulkan.Core10.PipelineCache.createPipelineCache',+-- 'Graphics.Vulkan.Core10.PipelineLayout.createPipelineLayout',+-- 'Graphics.Vulkan.Core10.Query.createQueryPool',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV',+-- 'Graphics.Vulkan.Core10.Pass.createRenderPass',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.createRenderPass2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_create_renderpass2.createRenderPass2KHR',+-- 'Graphics.Vulkan.Core10.Sampler.createSampler',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.createSamplerYcbcrConversion',+-- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.createSamplerYcbcrConversionKHR',+-- 'Graphics.Vulkan.Core10.QueueSemaphore.createSemaphore',+-- 'Graphics.Vulkan.Core10.Shader.createShaderModule',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.createSharedSwapchainsKHR',+-- 'Graphics.Vulkan.Extensions.VK_GGP_stream_descriptor_surface.createStreamDescriptorSurfaceGGP',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.createValidationCacheEXT',+-- 'Graphics.Vulkan.Extensions.VK_NN_vi_surface.createViSurfaceNN',+-- 'Graphics.Vulkan.Extensions.VK_KHR_wayland_surface.createWaylandSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_win32_surface.createWin32SurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_xcb_surface.createXcbSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_xlib_surface.createXlibSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.destroyAccelerationStructureNV',+-- 'Graphics.Vulkan.Core10.Buffer.destroyBuffer',+-- 'Graphics.Vulkan.Core10.BufferView.destroyBufferView',+-- 'Graphics.Vulkan.Core10.CommandPool.destroyCommandPool',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.destroyDebugReportCallbackEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.destroyDebugUtilsMessengerEXT',+-- 'Graphics.Vulkan.Core10.DescriptorSet.destroyDescriptorPool',+-- 'Graphics.Vulkan.Core10.DescriptorSet.destroyDescriptorSetLayout',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.destroyDescriptorUpdateTemplate',+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.destroyDescriptorUpdateTemplateKHR',+-- 'Graphics.Vulkan.Core10.Device.destroyDevice',+-- 'Graphics.Vulkan.Core10.Event.destroyEvent',+-- 'Graphics.Vulkan.Core10.Fence.destroyFence',+-- 'Graphics.Vulkan.Core10.Pass.destroyFramebuffer',+-- 'Graphics.Vulkan.Core10.Image.destroyImage',+-- 'Graphics.Vulkan.Core10.ImageView.destroyImageView',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.destroyIndirectCommandsLayoutNVX',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.destroyInstance',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.destroyObjectTableNVX',+-- 'Graphics.Vulkan.Core10.Pipeline.destroyPipeline',+-- 'Graphics.Vulkan.Core10.PipelineCache.destroyPipelineCache',+-- 'Graphics.Vulkan.Core10.PipelineLayout.destroyPipelineLayout',+-- 'Graphics.Vulkan.Core10.Query.destroyQueryPool',+-- 'Graphics.Vulkan.Core10.Pass.destroyRenderPass',+-- 'Graphics.Vulkan.Core10.Sampler.destroySampler',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.destroySamplerYcbcrConversion',+-- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.destroySamplerYcbcrConversionKHR',+-- 'Graphics.Vulkan.Core10.QueueSemaphore.destroySemaphore',+-- 'Graphics.Vulkan.Core10.Shader.destroyShaderModule',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.destroySurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.destroySwapchainKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.destroyValidationCacheEXT',+-- 'Graphics.Vulkan.Core10.Memory.freeMemory',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.registerDeviceEventEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.registerDisplayEventEXT'+data AllocationCallbacks = AllocationCallbacks+ { -- | @pUserData@ is a value to be interpreted by the implementation of the+ -- callbacks. When any of the callbacks in 'AllocationCallbacks' are+ -- called, the Vulkan implementation will pass this value as the first+ -- parameter to the callback. This value /can/ vary each time an allocator+ -- is passed into a command, even when the same object takes an allocator+ -- in multiple commands.+ userData :: Ptr ()+ , -- | @pfnAllocation@ is a+ -- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkAllocationFunction' pointer+ -- to an application-defined memory allocation function.+ pfnAllocation :: PFN_vkAllocationFunction+ , -- | @pfnReallocation@ is a+ -- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkReallocationFunction' pointer+ -- to an application-defined memory reallocation function.+ pfnReallocation :: PFN_vkReallocationFunction+ , -- | @pfnFree@ is a 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkFreeFunction'+ -- pointer to an application-defined memory free function.+ pfnFree :: PFN_vkFreeFunction+ , -- | @pfnInternalAllocation@ is a+ -- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkInternalAllocationNotification'+ -- pointer to an application-defined function that is called by the+ -- implementation when the implementation makes internal allocations.+ pfnInternalAllocation :: PFN_vkInternalAllocationNotification+ , -- | @pfnInternalFree@ is a+ -- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkInternalFreeNotification'+ -- pointer to an application-defined function that is called by the+ -- implementation when the implementation frees internal allocations.+ pfnInternalFree :: PFN_vkInternalFreeNotification+ }+ deriving (Typeable)+deriving instance Show AllocationCallbacks++instance ToCStruct AllocationCallbacks where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p AllocationCallbacks{..} f = do+ poke ((p `plusPtr` 0 :: Ptr (Ptr ()))) (userData)+ poke ((p `plusPtr` 8 :: Ptr PFN_vkAllocationFunction)) (pfnAllocation)+ poke ((p `plusPtr` 16 :: Ptr PFN_vkReallocationFunction)) (pfnReallocation)+ poke ((p `plusPtr` 24 :: Ptr PFN_vkFreeFunction)) (pfnFree)+ poke ((p `plusPtr` 32 :: Ptr PFN_vkInternalAllocationNotification)) (pfnInternalAllocation)+ poke ((p `plusPtr` 40 :: Ptr PFN_vkInternalFreeNotification)) (pfnInternalFree)+ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 8 :: Ptr PFN_vkAllocationFunction)) (zero)+ poke ((p `plusPtr` 16 :: Ptr PFN_vkReallocationFunction)) (zero)+ poke ((p `plusPtr` 24 :: Ptr PFN_vkFreeFunction)) (zero)+ f++instance FromCStruct AllocationCallbacks where+ peekCStruct p = do+ pUserData <- peek @(Ptr ()) ((p `plusPtr` 0 :: Ptr (Ptr ())))+ pfnAllocation <- peek @PFN_vkAllocationFunction ((p `plusPtr` 8 :: Ptr PFN_vkAllocationFunction))+ pfnReallocation <- peek @PFN_vkReallocationFunction ((p `plusPtr` 16 :: Ptr PFN_vkReallocationFunction))+ pfnFree <- peek @PFN_vkFreeFunction ((p `plusPtr` 24 :: Ptr PFN_vkFreeFunction))+ pfnInternalAllocation <- peek @PFN_vkInternalAllocationNotification ((p `plusPtr` 32 :: Ptr PFN_vkInternalAllocationNotification))+ pfnInternalFree <- peek @PFN_vkInternalFreeNotification ((p `plusPtr` 40 :: Ptr PFN_vkInternalFreeNotification))+ pure $ AllocationCallbacks+ pUserData pfnAllocation pfnReallocation pfnFree pfnInternalAllocation pfnInternalFree++instance Storable AllocationCallbacks where+ sizeOf ~_ = 48+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AllocationCallbacks where+ zero = AllocationCallbacks+ zero+ zero+ zero+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core10/AllocationCallbacks.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data AllocationCallbacks++instance ToCStruct AllocationCallbacks+instance Show AllocationCallbacks++instance FromCStruct AllocationCallbacks+
+ src/Graphics/Vulkan/Core10/BaseType.hs view
@@ -0,0 +1,326 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.BaseType ( boolToBool32+ , bool32ToBool+ , Bool32( FALSE+ , TRUE+ , ..+ )+ , SampleMask+ , Flags+ , DeviceSize+ , DeviceAddress+ ) where++import Data.Bool (bool)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Data.Word (Word64)+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+boolToBool32 :: Bool -> Bool32+boolToBool32 = bool FALSE TRUE++bool32ToBool :: Bool32 -> Bool+bool32ToBool = \case+ FALSE -> False+ TRUE -> True+++-- | VkBool32 - Vulkan boolean type+--+-- = Description+--+-- 'TRUE' represents a boolean __True__ (integer 1) value, and 'FALSE' a+-- boolean __False__ (integer 0) value.+--+-- All values returned from a Vulkan implementation in a 'Bool32' will be+-- either 'TRUE' or 'FALSE'.+--+-- Applications /must/ not pass any other values than 'TRUE' or 'FALSE'+-- into a Vulkan implementation where a 'Bool32' is expected.+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT',+-- 'Graphics.Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationImageCreateInfoNV',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.DescriptorSetLayoutSupport',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.DeviceGeneratedCommandsFeaturesNVX',+-- 'Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr.DisplayNativeHdrSurfaceCapabilitiesAMD',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.DisplayPresentInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplayPropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.PerformanceOverrideInfoINTEL',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.PerformanceValueDataINTEL',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage.PhysicalDevice16BitStorageFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage.PhysicalDevice8BitStorageFeatures',+-- 'Graphics.Vulkan.Extensions.VK_EXT_astc_decode_mode.PhysicalDeviceASTCDecodeFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures',+-- 'Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_AMD_device_coherent_memory.PhysicalDeviceCoherentMemoryFeaturesAMD',+-- 'Graphics.Vulkan.Extensions.VK_NV_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering.PhysicalDeviceConditionalRenderingFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization.PhysicalDeviceConservativeRasterizationPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_corner_sampled_image.PhysicalDeviceCornerSampledImageFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode.PhysicalDeviceCoverageReductionModeFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing.PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable.PhysicalDeviceDepthClipEnableFeaturesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',+-- 'Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls.PhysicalDeviceFloatControlsProperties',+-- 'Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_fragment_shader_barycentric.PhysicalDeviceFragmentShaderBarycentricFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_fragment_shader_interlock.PhysicalDeviceFragmentShaderInterlockFeaturesEXT',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.PhysicalDeviceGroupProperties',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.PhysicalDeviceHostQueryResetFeatures',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.PhysicalDeviceImagelessFramebufferFeatures',+-- 'Graphics.Vulkan.Extensions.VK_EXT_index_type_uint8.PhysicalDeviceIndexTypeUint8FeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeaturesEXT',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits',+-- 'Graphics.Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_memory_priority.PhysicalDeviceMemoryPriorityFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderFeaturesNV',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewFeatures',+-- 'Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX',+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryFeaturesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryPropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PhysicalDevicePipelineExecutablePropertiesFeaturesKHR',+-- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures',+-- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties',+-- 'Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test.PhysicalDeviceRepresentativeFragmentTestFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.PhysicalDeviceSamplerFilterMinmaxProperties',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.PhysicalDeviceSamplerYcbcrConversionFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout.PhysicalDeviceScalarBlockLayoutFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.PhysicalDeviceSeparateDepthStencilLayoutsFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64.PhysicalDeviceShaderAtomicInt64Features',+-- 'Graphics.Vulkan.Extensions.VK_KHR_shader_clock.PhysicalDeviceShaderClockFeaturesKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation.PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters.PhysicalDeviceShaderDrawParametersFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8.PhysicalDeviceShaderFloat16Int8Features',+-- 'Graphics.Vulkan.Extensions.VK_NV_shader_image_footprint.PhysicalDeviceShaderImageFootprintFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_shader_integer_functions2.PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL',+-- 'Graphics.Vulkan.Extensions.VK_NV_shader_sm_builtins.PhysicalDeviceShaderSMBuiltinsFeaturesNV',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types.PhysicalDeviceShaderSubgroupExtendedTypesFeatures',+-- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImageFeaturesNV',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceSparseProperties',+-- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties',+-- 'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr.PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreFeatures',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout.PhysicalDeviceUniformBufferStandardLayoutFeatures',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers.PhysicalDeviceVariablePointersFeatures',+-- 'Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorFeaturesEXT',+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan11Features',+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan11Properties',+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan12Features',+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan12Properties',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model.PhysicalDeviceVulkanMemoryModelFeatures',+-- 'Graphics.Vulkan.Extensions.VK_EXT_ycbcr_image_arrays.PhysicalDeviceYcbcrImageArraysFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableInternalRepresentationKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableStatisticValueKHR',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV',+-- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.ProtectedSubmitInfo',+-- 'Graphics.Vulkan.Core10.Sampler.SamplerCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceCapabilitiesFullScreenExclusiveEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface_protected_capabilities.SurfaceProtectedCapabilitiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr.SwapchainDisplayNativeHdrCreateInfoAMD',+-- 'Graphics.Vulkan.Extensions.VK_AMD_texture_gather_bias_lod.TextureLODGatherFormatPropertiesAMD',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR',+-- 'Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr.setLocalDimmingAMD',+-- 'Graphics.Vulkan.Core10.Fence.waitForFences'+newtype Bool32 = Bool32 Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- No documentation found for Nested "VkBool32" "VK_FALSE"+pattern FALSE = Bool32 0+-- No documentation found for Nested "VkBool32" "VK_TRUE"+pattern TRUE = Bool32 1+{-# complete FALSE,+ TRUE :: Bool32 #-}++instance Show Bool32 where+ showsPrec p = \case+ FALSE -> showString "FALSE"+ TRUE -> showString "TRUE"+ Bool32 x -> showParen (p >= 11) (showString "Bool32 " . showsPrec 11 x)++instance Read Bool32 where+ readPrec = parens (choose [("FALSE", pure FALSE)+ , ("TRUE", pure TRUE)]+ ++++ prec 10 (do+ expectP (Ident "Bool32")+ v <- step readPrec+ pure (Bool32 v)))+++-- | VkSampleMask - Mask of sample coverage information+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'+type SampleMask = Word32+++-- | VkFlags - Vulkan bitmasks+--+-- = Description+--+-- Bitmasks are passed to many commands and structures to compactly+-- represent options, but 'Flags' is not used directly in the API. Instead,+-- a @Vk*Flags@ type which is an alias of 'Flags', and whose name matches+-- the corresponding @Vk*FlagBits@ that are valid for that type, is used.+--+-- Any @Vk*Flags@ member or parameter used in the API as an input /must/ be+-- a valid combination of bit flags. A valid combination is either zero or+-- the bitwise OR of valid bit flags. A bit flag is valid if:+--+-- - The bit flag is defined as part of the @Vk*FlagBits@ type, where the+-- bits type is obtained by taking the flag type and replacing the+-- trailing 'Flags' with @FlagBits@. For example, a flag value of type+-- 'Graphics.Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlags'+-- /must/ contain only bit flags defined by+-- 'Graphics.Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlagBits'.+--+-- - The flag is allowed in the context in which it is being used. For+-- example, in some cases, certain bit flags or combinations of bit+-- flags are mutually exclusive.+--+-- Any @Vk*Flags@ member or parameter returned from a query command or+-- otherwise output from Vulkan to the application /may/ contain bit flags+-- undefined in its corresponding @Vk*FlagBits@ type. An application+-- /cannot/ rely on the state of these unspecified bits.+--+-- Only the low-order 31 bits (bit positions zero through 30) are available+-- for use as flag bits.+--+-- Note+--+-- This restriction is due to poorly defined behavior by C compilers given+-- a C enumerant value of @0x80000000@. In some cases adding this enumerant+-- value may increase the size of the underlying @Vk*FlagBits@ type,+-- breaking the ABI.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlags'+type Flags = Word32+++-- | VkDeviceSize - Vulkan device memory size and offsets+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferPropertiesANDROID',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.BufferCopy',+-- 'Graphics.Vulkan.Core10.Buffer.BufferCreateInfo',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',+-- 'Graphics.Vulkan.Core10.OtherTypes.BufferMemoryBarrier',+-- 'Graphics.Vulkan.Core10.BufferView.BufferViewCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdProcessCommandsInfoNVX',+-- 'Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorBufferInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.IndirectCommandsTokenNVX',+-- 'Graphics.Vulkan.Core10.Memory.MappedMemoryRange',+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.MemoryHeap',+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements',+-- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',+-- 'Graphics.Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan11Properties',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryRequirements',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseMemoryBind',+-- 'Graphics.Vulkan.Core10.Image.SubresourceLayout',+-- 'Graphics.Vulkan.Core10.MemoryManagement.bindBufferMemory',+-- 'Graphics.Vulkan.Core10.MemoryManagement.bindImageMemory',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount',+-- 'Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndexedIndirectCountAMD',+-- 'Graphics.Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCountKHR',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdDrawIndirectByteCountEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount',+-- 'Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndirectCountAMD',+-- 'Graphics.Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndirectCountKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdFillBuffer',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer',+-- 'Graphics.Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',+-- 'Graphics.Vulkan.Core10.Memory.getDeviceMemoryCommitment',+-- 'Graphics.Vulkan.Core10.Query.getQueryPoolResults',+-- 'Graphics.Vulkan.Core10.Memory.mapMemory'+type DeviceSize = Word64+++-- | VkDeviceAddress - Vulkan device address type+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT'+type DeviceAddress = Word64+
+ src/Graphics/Vulkan/Core10/BaseType.hs-boot view
@@ -0,0 +1,85 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.BaseType ( Bool32+ , DeviceAddress+ , DeviceSize+ ) where++import Data.Word (Word64)++data Bool32+++-- | VkDeviceAddress - Vulkan device address type+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT'+type DeviceAddress = Word64+++-- | VkDeviceSize - Vulkan device memory size and offsets+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferPropertiesANDROID',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.BufferCopy',+-- 'Graphics.Vulkan.Core10.Buffer.BufferCreateInfo',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',+-- 'Graphics.Vulkan.Core10.OtherTypes.BufferMemoryBarrier',+-- 'Graphics.Vulkan.Core10.BufferView.BufferViewCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdProcessCommandsInfoNVX',+-- 'Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorBufferInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.IndirectCommandsTokenNVX',+-- 'Graphics.Vulkan.Core10.Memory.MappedMemoryRange',+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.MemoryHeap',+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements',+-- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',+-- 'Graphics.Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan11Properties',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryRequirements',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseMemoryBind',+-- 'Graphics.Vulkan.Core10.Image.SubresourceLayout',+-- 'Graphics.Vulkan.Core10.MemoryManagement.bindBufferMemory',+-- 'Graphics.Vulkan.Core10.MemoryManagement.bindImageMemory',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount',+-- 'Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndexedIndirectCountAMD',+-- 'Graphics.Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCountKHR',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdDrawIndirectByteCountEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount',+-- 'Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndirectCountAMD',+-- 'Graphics.Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndirectCountKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdFillBuffer',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer',+-- 'Graphics.Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',+-- 'Graphics.Vulkan.Core10.Memory.getDeviceMemoryCommitment',+-- 'Graphics.Vulkan.Core10.Query.getQueryPoolResults',+-- 'Graphics.Vulkan.Core10.Memory.mapMemory'+type DeviceSize = Word64+
src/Graphics/Vulkan/Core10/Buffer.hs view
@@ -1,446 +1,238 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.Buffer- ( VkSharingMode(..)- , pattern VK_SHARING_MODE_EXCLUSIVE- , pattern VK_SHARING_MODE_CONCURRENT- , VkBufferUsageFlagBits(..)- , pattern VK_BUFFER_USAGE_TRANSFER_SRC_BIT- , pattern VK_BUFFER_USAGE_TRANSFER_DST_BIT- , pattern VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT- , pattern VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT- , pattern VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT- , pattern VK_BUFFER_USAGE_STORAGE_BUFFER_BIT- , pattern VK_BUFFER_USAGE_INDEX_BUFFER_BIT- , pattern VK_BUFFER_USAGE_VERTEX_BUFFER_BIT- , pattern VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT- , VkBufferCreateFlagBits(..)- , pattern VK_BUFFER_CREATE_SPARSE_BINDING_BIT- , pattern VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT- , pattern VK_BUFFER_CREATE_SPARSE_ALIASED_BIT- , vkCreateBuffer- , vkDestroyBuffer- , VkBufferCreateInfo(..)- , VkBufferUsageFlags- , VkBufferCreateFlags- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Int- ( Int32- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- , VkDeviceSize- )-import Graphics.Vulkan.Core10.MemoryManagement- ( VkBuffer- )----- ** VkSharingMode---- | VkSharingMode - Buffer and image sharing modes------ = Description------ - @VK_SHARING_MODE_EXCLUSIVE@ specifies that access to any range or--- image subresource of the object will be exclusive to a single queue--- family at a time.------ - @VK_SHARING_MODE_CONCURRENT@ specifies that concurrent access to any--- range or image subresource of the object from multiple queue--- families is supported.------ __Note__------ @VK_SHARING_MODE_CONCURRENT@ /may/ result in lower performance access to--- the buffer or image than @VK_SHARING_MODE_EXCLUSIVE@.------ Ranges of buffers and image subresources of image objects created using--- @VK_SHARING_MODE_EXCLUSIVE@ /must/ only be accessed by queues in the--- queue family that has /ownership/ of the resource. Upon creation, such--- resources are not owned by any queue family; ownership is implicitly--- acquired upon first use within a queue. Once a resource using--- @VK_SHARING_MODE_EXCLUSIVE@ is owned by some queue family, the--- application /must/ perform a [queue family ownership--- transfer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers)--- to make the memory contents of a range or image subresource accessible--- to a different queue family.------ __Note__------ Images still require a [layout--- transition](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-image-layouts)--- from @VK_IMAGE_LAYOUT_UNDEFINED@ or @VK_IMAGE_LAYOUT_PREINITIALIZED@--- before being used on the first queue.------ A queue family /can/ take ownership of an image subresource or buffer--- range of a resource created with @VK_SHARING_MODE_EXCLUSIVE@, without an--- ownership transfer, in the same way as for a resource that was just--- created; however, taking ownership in this way has the effect that the--- contents of the image subresource or buffer range are undefined.------ Ranges of buffers and image subresources of image objects created using--- @VK_SHARING_MODE_CONCURRENT@ /must/ only be accessed by queues from the--- queue families specified through the @queueFamilyIndexCount@ and--- @pQueueFamilyIndices@ members of the corresponding create info--- structures.------ = See Also------ 'VkBufferCreateInfo', 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR'-newtype VkSharingMode = VkSharingMode Int32- deriving (Eq, Ord, Storable)--instance Show VkSharingMode where- showsPrec _ VK_SHARING_MODE_EXCLUSIVE = showString "VK_SHARING_MODE_EXCLUSIVE"- showsPrec _ VK_SHARING_MODE_CONCURRENT = showString "VK_SHARING_MODE_CONCURRENT"- showsPrec p (VkSharingMode x) = showParen (p >= 11) (showString "VkSharingMode " . showsPrec 11 x)--instance Read VkSharingMode where- readPrec = parens ( choose [ ("VK_SHARING_MODE_EXCLUSIVE", pure VK_SHARING_MODE_EXCLUSIVE)- , ("VK_SHARING_MODE_CONCURRENT", pure VK_SHARING_MODE_CONCURRENT)- ] +++- prec 10 (do- expectP (Ident "VkSharingMode")- v <- step readPrec- pure (VkSharingMode v)- )- )---- No documentation found for Nested "VkSharingMode" "VK_SHARING_MODE_EXCLUSIVE"-pattern VK_SHARING_MODE_EXCLUSIVE :: VkSharingMode-pattern VK_SHARING_MODE_EXCLUSIVE = VkSharingMode 0---- No documentation found for Nested "VkSharingMode" "VK_SHARING_MODE_CONCURRENT"-pattern VK_SHARING_MODE_CONCURRENT :: VkSharingMode-pattern VK_SHARING_MODE_CONCURRENT = VkSharingMode 1--- ** VkBufferUsageFlagBits---- | VkBufferUsageFlagBits - Bitmask specifying allowed usage of a buffer------ = See Also------ 'VkBufferUsageFlags'-newtype VkBufferUsageFlagBits = VkBufferUsageFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkBufferUsageFlagBits where- showsPrec _ VK_BUFFER_USAGE_TRANSFER_SRC_BIT = showString "VK_BUFFER_USAGE_TRANSFER_SRC_BIT"- showsPrec _ VK_BUFFER_USAGE_TRANSFER_DST_BIT = showString "VK_BUFFER_USAGE_TRANSFER_DST_BIT"- showsPrec _ VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = showString "VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"- showsPrec _ VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = showString "VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"- showsPrec _ VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = showString "VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"- showsPrec _ VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = showString "VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"- showsPrec _ VK_BUFFER_USAGE_INDEX_BUFFER_BIT = showString "VK_BUFFER_USAGE_INDEX_BUFFER_BIT"- showsPrec _ VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = showString "VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"- showsPrec _ VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = showString "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"- showsPrec p (VkBufferUsageFlagBits x) = showParen (p >= 11) (showString "VkBufferUsageFlagBits " . showsPrec 11 x)--instance Read VkBufferUsageFlagBits where- readPrec = parens ( choose [ ("VK_BUFFER_USAGE_TRANSFER_SRC_BIT", pure VK_BUFFER_USAGE_TRANSFER_SRC_BIT)- , ("VK_BUFFER_USAGE_TRANSFER_DST_BIT", pure VK_BUFFER_USAGE_TRANSFER_DST_BIT)- , ("VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT", pure VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT)- , ("VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT", pure VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT)- , ("VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT", pure VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT)- , ("VK_BUFFER_USAGE_STORAGE_BUFFER_BIT", pure VK_BUFFER_USAGE_STORAGE_BUFFER_BIT)- , ("VK_BUFFER_USAGE_INDEX_BUFFER_BIT", pure VK_BUFFER_USAGE_INDEX_BUFFER_BIT)- , ("VK_BUFFER_USAGE_VERTEX_BUFFER_BIT", pure VK_BUFFER_USAGE_VERTEX_BUFFER_BIT)- , ("VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT", pure VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT)- ] +++- prec 10 (do- expectP (Ident "VkBufferUsageFlagBits")- v <- step readPrec- pure (VkBufferUsageFlagBits v)- )- )---- | @VK_BUFFER_USAGE_TRANSFER_SRC_BIT@ specifies that the buffer /can/ be--- used as the source of a /transfer command/ (see the definition of--- [@VK_PIPELINE_STAGE_TRANSFER_BIT@](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-transfer)).-pattern VK_BUFFER_USAGE_TRANSFER_SRC_BIT :: VkBufferUsageFlagBits-pattern VK_BUFFER_USAGE_TRANSFER_SRC_BIT = VkBufferUsageFlagBits 0x00000001---- | @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ specifies that the buffer /can/ be--- used as the destination of a transfer command.-pattern VK_BUFFER_USAGE_TRANSFER_DST_BIT :: VkBufferUsageFlagBits-pattern VK_BUFFER_USAGE_TRANSFER_DST_BIT = VkBufferUsageFlagBits 0x00000002---- | @VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT@ specifies that the buffer--- /can/ be used to create a @VkBufferView@ suitable for occupying a--- @VkDescriptorSet@ slot of type--- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@.-pattern VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT :: VkBufferUsageFlagBits-pattern VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = VkBufferUsageFlagBits 0x00000004---- | @VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT@ specifies that the buffer--- /can/ be used to create a @VkBufferView@ suitable for occupying a--- @VkDescriptorSet@ slot of type--- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@.-pattern VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT :: VkBufferUsageFlagBits-pattern VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = VkBufferUsageFlagBits 0x00000008---- | @VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT@ specifies that the buffer /can/ be--- used in a @VkDescriptorBufferInfo@ suitable for occupying a--- @VkDescriptorSet@ slot either of type--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@.-pattern VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT :: VkBufferUsageFlagBits-pattern VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = VkBufferUsageFlagBits 0x00000010---- | @VK_BUFFER_USAGE_STORAGE_BUFFER_BIT@ specifies that the buffer /can/ be--- used in a @VkDescriptorBufferInfo@ suitable for occupying a--- @VkDescriptorSet@ slot either of type--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@.-pattern VK_BUFFER_USAGE_STORAGE_BUFFER_BIT :: VkBufferUsageFlagBits-pattern VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = VkBufferUsageFlagBits 0x00000020---- | @VK_BUFFER_USAGE_INDEX_BUFFER_BIT@ specifies that the buffer is suitable--- for passing as the @buffer@ parameter to @vkCmdBindIndexBuffer@.-pattern VK_BUFFER_USAGE_INDEX_BUFFER_BIT :: VkBufferUsageFlagBits-pattern VK_BUFFER_USAGE_INDEX_BUFFER_BIT = VkBufferUsageFlagBits 0x00000040---- | @VK_BUFFER_USAGE_VERTEX_BUFFER_BIT@ specifies that the buffer is--- suitable for passing as an element of the @pBuffers@ array to--- @vkCmdBindVertexBuffers@.-pattern VK_BUFFER_USAGE_VERTEX_BUFFER_BIT :: VkBufferUsageFlagBits-pattern VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = VkBufferUsageFlagBits 0x00000080---- | @VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT@ specifies that the buffer is--- suitable for passing as the @buffer@ parameter to @vkCmdDrawIndirect@,--- @vkCmdDrawIndexedIndirect@, or @vkCmdDispatchIndirect@. It is also--- suitable for passing as the @buffer@ member of--- @VkIndirectCommandsTokenNVX@, or @sequencesCountBuffer@ or--- @sequencesIndexBuffer@ member of @VkCmdProcessCommandsInfoNVX@-pattern VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT :: VkBufferUsageFlagBits-pattern VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = VkBufferUsageFlagBits 0x00000100--- ** VkBufferCreateFlagBits---- | VkBufferCreateFlagBits - Bitmask specifying additional parameters of a--- buffer------ = Description------ - @VK_BUFFER_CREATE_SPARSE_BINDING_BIT@ specifies that the buffer will--- be backed using sparse memory binding.------ - @VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT@ specifies that the buffer--- /can/ be partially backed using sparse memory binding. Buffers--- created with this flag /must/ also be created with the--- @VK_BUFFER_CREATE_SPARSE_BINDING_BIT@ flag.------ - @VK_BUFFER_CREATE_SPARSE_ALIASED_BIT@ specifies that the buffer will--- be backed using sparse memory binding with memory ranges that might--- also simultaneously be backing another buffer (or another portion of--- the same buffer). Buffers created with this flag /must/ also be--- created with the @VK_BUFFER_CREATE_SPARSE_BINDING_BIT@ flag.------ See [Sparse Resource--- Features](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#sparsememory-sparseresourcefeatures)--- and [Physical Device--- Features](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features)--- for details of the sparse memory features supported on a device.------ = See Also------ 'VkBufferCreateFlags'-newtype VkBufferCreateFlagBits = VkBufferCreateFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkBufferCreateFlagBits where- showsPrec _ VK_BUFFER_CREATE_SPARSE_BINDING_BIT = showString "VK_BUFFER_CREATE_SPARSE_BINDING_BIT"- showsPrec _ VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = showString "VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"- showsPrec _ VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = showString "VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkBufferCreateFlagBits 0x00000008) = showString "VK_BUFFER_CREATE_PROTECTED_BIT"- showsPrec p (VkBufferCreateFlagBits x) = showParen (p >= 11) (showString "VkBufferCreateFlagBits " . showsPrec 11 x)--instance Read VkBufferCreateFlagBits where- readPrec = parens ( choose [ ("VK_BUFFER_CREATE_SPARSE_BINDING_BIT", pure VK_BUFFER_CREATE_SPARSE_BINDING_BIT)- , ("VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT", pure VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT)- , ("VK_BUFFER_CREATE_SPARSE_ALIASED_BIT", pure VK_BUFFER_CREATE_SPARSE_ALIASED_BIT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_BUFFER_CREATE_PROTECTED_BIT", pure (VkBufferCreateFlagBits 0x00000008))- ] +++- prec 10 (do- expectP (Ident "VkBufferCreateFlagBits")- v <- step readPrec- pure (VkBufferCreateFlagBits v)- )- )---- No documentation found for Nested "VkBufferCreateFlagBits" "VK_BUFFER_CREATE_SPARSE_BINDING_BIT"-pattern VK_BUFFER_CREATE_SPARSE_BINDING_BIT :: VkBufferCreateFlagBits-pattern VK_BUFFER_CREATE_SPARSE_BINDING_BIT = VkBufferCreateFlagBits 0x00000001+module Graphics.Vulkan.Core10.Buffer ( createBuffer+ , withBuffer+ , destroyBuffer+ , BufferCreateInfo(..)+ ) where --- No documentation found for Nested "VkBufferCreateFlagBits" "VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"-pattern VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT :: VkBufferCreateFlagBits-pattern VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = VkBufferCreateFlagBits 0x00000002+import Control.Exception.Base (bracket)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.Core10.Handles (Buffer(..))+import Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits (BufferCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address (BufferDeviceAddressCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (BufferOpaqueCaptureAddressCreateInfo)+import Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlags)+import Graphics.Vulkan.CStruct.Extends (Chain)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationBufferCreateInfoNV)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateBuffer))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyBuffer))+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory (ExternalMemoryBufferCreateInfo)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.SharingMode (SharingMode)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateBuffer+ :: FunPtr (Ptr Device_T -> Ptr (BufferCreateInfo a) -> Ptr AllocationCallbacks -> Ptr Buffer -> IO Result) -> Ptr Device_T -> Ptr (BufferCreateInfo a) -> Ptr AllocationCallbacks -> Ptr Buffer -> IO Result --- No documentation found for Nested "VkBufferCreateFlagBits" "VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"-pattern VK_BUFFER_CREATE_SPARSE_ALIASED_BIT :: VkBufferCreateFlagBits-pattern VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = VkBufferCreateFlagBits 0x00000004 -- | vkCreateBuffer - Create a new buffer object -- -- = Parameters ----- - @device@ is the logical device that creates the buffer object.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the buffer object. ----- - @pCreateInfo@ is a pointer to an instance of the--- @VkBufferCreateInfo@ structure containing parameters affecting--- creation of the buffer.+-- - @pCreateInfo@ is a pointer to a 'BufferCreateInfo' structure+-- containing parameters affecting creation of the buffer. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. ----- - @pBuffer@ points to a @VkBuffer@ handle in which the resulting--- buffer object is returned.+-- - @pBuffer@ is a pointer to a 'Graphics.Vulkan.Core10.Handles.Buffer'+-- handle in which the resulting buffer object is returned. -- -- == Valid Usage ----- - If the @flags@ member of @pCreateInfo@ includes--- @VK_BUFFER_CREATE_SPARSE_BINDING_BIT@, creating this @VkBuffer@--- /must/ not cause the total required sparse memory for all currently--- valid sparse resources on the device to exceed--- @VkPhysicalDeviceLimits@::@sparseAddressSpaceSize@+-- - If the 'Graphics.Vulkan.Core10.BaseType.Flags' member of+-- @pCreateInfo@ includes+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_BINDING_BIT',+-- creating this 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ not+-- cause the total required sparse memory for all currently valid+-- sparse resources on the device to exceed+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@sparseAddressSpaceSize@ -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle -- -- - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkBufferCreateInfo@ structure+-- 'BufferCreateInfo' structure -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - @pBuffer@ /must/ be a valid pointer to a @VkBuffer@ handle+-- - @pBuffer@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'VkBufferCreateInfo',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Buffer', 'BufferCreateInfo',+-- 'Graphics.Vulkan.Core10.Handles.Device'+createBuffer :: PokeChain a => Device -> BufferCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (Buffer)+createBuffer device createInfo allocator = evalContT $ do+ let vkCreateBuffer' = mkVkCreateBuffer (pVkCreateBuffer (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPBuffer <- ContT $ bracket (callocBytes @Buffer 8) free+ r <- lift $ vkCreateBuffer' (deviceHandle (device)) pCreateInfo pAllocator (pPBuffer)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pBuffer <- lift $ peek @Buffer pPBuffer+ pure $ (pBuffer)++-- | A safe wrapper for 'createBuffer' and 'destroyBuffer' using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withBuffer :: PokeChain a => Device -> BufferCreateInfo a -> Maybe AllocationCallbacks -> (Buffer -> IO r) -> IO r+withBuffer device bufferCreateInfo allocationCallbacks =+ bracket+ (createBuffer device bufferCreateInfo allocationCallbacks)+ (\o -> destroyBuffer device o allocationCallbacks)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkCreateBuffer" vkCreateBuffer :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pBuffer" ::: Ptr VkBuffer) -> IO VkResult+ "dynamic" mkVkDestroyBuffer+ :: FunPtr (Ptr Device_T -> Buffer -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> Buffer -> Ptr AllocationCallbacks -> IO ()+ -- | vkDestroyBuffer - Destroy a buffer object -- -- = Parameters ----- - @device@ is the logical device that destroys the buffer.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the buffer. ----- - @buffer@ is the buffer to destroy.+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' is the buffer to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. -- -- == Valid Usage ----- - All submitted commands that refer to @buffer@, either directly or--- via a @VkBufferView@, /must/ have completed execution+-- - All submitted commands that refer to+-- 'Graphics.Vulkan.Core10.Handles.Buffer', either directly or via a+-- 'Graphics.Vulkan.Core10.Handles.BufferView', /must/ have completed+-- execution ----- - If @VkAllocationCallbacks@ were provided when @buffer@ was created,--- a compatible set of callbacks /must/ be provided here+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.Buffer' was+-- created, a compatible set of callbacks /must/ be provided here ----- - If no @VkAllocationCallbacks@ were provided when @buffer@ was+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.Buffer' was -- created, @pAllocator@ /must/ be @NULL@ -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - If @buffer@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @buffer@ /must/--- be a valid @VkBuffer@ handle+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - If @buffer@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is a valid handle, it+-- /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization ----- - Host access to @buffer@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be+-- externally synchronized -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroyBuffer" vkDestroyBuffer :: ("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.Device'+destroyBuffer :: Device -> Buffer -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyBuffer device buffer allocator = evalContT $ do+ let vkDestroyBuffer' = mkVkDestroyBuffer (pVkDestroyBuffer (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyBuffer' (deviceHandle (device)) (buffer) pAllocator+ pure $ ()++ -- | VkBufferCreateInfo - Structure specifying the parameters of a newly -- created buffer object --@@ -448,151 +240,229 @@ -- -- - @size@ /must/ be greater than @0@ ----- - If @sharingMode@ is @VK_SHARING_MODE_CONCURRENT@,+-- - If 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' is+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT', -- @pQueueFamilyIndices@ /must/ be a valid pointer to an array of -- @queueFamilyIndexCount@ @uint32_t@ values ----- - If @sharingMode@ is @VK_SHARING_MODE_CONCURRENT@,+-- - If 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' is+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT', -- @queueFamilyIndexCount@ /must/ be greater than @1@ ----- - If @sharingMode@ is @VK_SHARING_MODE_CONCURRENT@, each element of--- @pQueueFamilyIndices@ /must/ be unique and /must/ be less than--- @pQueueFamilyPropertyCount@ returned by either--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceQueueFamilyProperties'+-- - If 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' is+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',+-- each element of @pQueueFamilyIndices@ /must/ be unique and /must/ be+-- less than @pQueueFamilyPropertyCount@ returned by either+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceQueueFamilyProperties' -- or--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceQueueFamilyProperties2'--- for the @physicalDevice@ that was used to create @device@+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2'+-- for the 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' that was+-- used to create 'Graphics.Vulkan.Core10.Handles.Device' ----- - If the [sparse--- bindings](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseBinding)--- feature is not enabled, @flags@ /must/ not contain--- @VK_BUFFER_CREATE_SPARSE_BINDING_BIT@+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseBinding sparse bindings>+-- feature is not enabled, 'Graphics.Vulkan.Core10.BaseType.Flags'+-- /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_BINDING_BIT' ----- - If the [sparse buffer--- residency](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseResidencyBuffer)--- feature is not enabled, @flags@ /must/ not contain--- @VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT@+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyBuffer sparse buffer residency>+-- feature is not enabled, 'Graphics.Vulkan.Core10.BaseType.Flags'+-- /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT' ----- - If the [sparse aliased--- residency](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseResidencyAliased)--- feature is not enabled, @flags@ /must/ not contain--- @VK_BUFFER_CREATE_SPARSE_ALIASED_BIT@+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyAliased sparse aliased residency>+-- feature is not enabled, 'Graphics.Vulkan.Core10.BaseType.Flags'+-- /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_ALIASED_BIT' ----- - If @flags@ contains @VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT@ or--- @VK_BUFFER_CREATE_SPARSE_ALIASED_BIT@, it /must/ also contain--- @VK_BUFFER_CREATE_SPARSE_BINDING_BIT@+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_ALIASED_BIT',+-- it /must/ also contain+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_BINDING_BIT' ----- - If the @pNext@ chain contains an instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryBufferCreateInfo',--- its @handleTypes@ member /must/ only contain bits that are also in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalBufferProperties'::@externalMemoryProperties.pname@:compatibleHandleTypes,+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'+-- structure, its @handleTypes@ member /must/ only contain bits that+-- are also in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties'::@externalMemoryProperties.compatibleHandleTypes@, -- as returned by--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.vkGetPhysicalDeviceExternalBufferProperties'--- with @pExternalBufferInfo@->@handleType@ equal to any one of the+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.getPhysicalDeviceExternalBufferProperties'+-- with @pExternalBufferInfo->handleType@ equal to any one of the -- handle types specified in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryBufferCreateInfo'::@handleTypes@+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@ ----- - If the @pNext@ chain contains an instance of--- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationBufferCreateInfoNV',--- and the @dedicatedAllocation@ member of the chained structure is--- @VK_TRUE@, then @flags@ /must/ not include--- @VK_BUFFER_CREATE_SPARSE_BINDING_BIT@,--- @VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT@, or--- @VK_BUFFER_CREATE_SPARSE_ALIASED_BIT@+-- - If the protected memory feature is not enabled,+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT' --+-- - If any of the bits+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_BINDING_BIT',+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT',+-- or+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_ALIASED_BIT'+-- are set,+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'+-- /must/ not also be set+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV'+-- structure, and the @dedicatedAllocation@ member of the chained+-- structure is 'Graphics.Vulkan.Core10.BaseType.TRUE', then+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not include+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_BINDING_BIT',+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT',+-- or+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_ALIASED_BIT'+--+-- - If+-- 'Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT'::'Graphics.Vulkan.Core10.BaseType.DeviceAddress'+-- is not zero, 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ include+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'+--+-- - If+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferOpaqueCaptureAddressCreateInfo'::@opaqueCaptureAddress@+-- is not zero, 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ include+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT',+-- the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressCaptureReplay bufferDeviceAddressCaptureReplay>+-- or+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressCaptureReplayEXT ::bufferDeviceAddressCaptureReplay>+-- feature /must/ be enabled+-- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO@+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_CREATE_INFO' -- -- - Each @pNext@ member of any structure (including this one) in the -- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid -- instance of--- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationBufferCreateInfoNV'+-- 'Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferOpaqueCaptureAddressCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV', -- or--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryBufferCreateInfo'+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo' ----- - Each @sType@ member in the @pNext@ chain /must/ be unique+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique ----- - @flags@ /must/ be a valid combination of 'VkBufferCreateFlagBits'+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BufferCreateFlagBits' -- values ----- - @usage@ /must/ be a valid combination of 'VkBufferUsageFlagBits'+-- - @usage@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits' -- values -- -- - @usage@ /must/ not be @0@ ----- - @sharingMode@ /must/ be a valid 'VkSharingMode' value+-- - 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' /must/ be a+-- valid 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' value -- -- = See Also ----- 'VkBufferCreateFlags', 'VkBufferUsageFlags', @VkDeviceSize@,--- 'VkSharingMode', 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkCreateBuffer'-data VkBufferCreateInfo = VkBufferCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is a bitmask of 'VkBufferCreateFlagBits' specifying additional- -- parameters of the buffer.- vkFlags :: VkBufferCreateFlags+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BufferCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlags',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createBuffer'+data BufferCreateInfo (es :: [Type]) = BufferCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BufferCreateFlagBits'+ -- specifying additional parameters of the buffer.+ flags :: BufferCreateFlags , -- | @size@ is the size in bytes of the buffer to be created.- vkSize :: VkDeviceSize- , -- | @usage@ is a bitmask of 'VkBufferUsageFlagBits' specifying allowed- -- usages of the buffer.- vkUsage :: VkBufferUsageFlags- , -- | @sharingMode@ is a 'VkSharingMode' value specifying the sharing mode of- -- the buffer when it will be accessed by multiple queue families.- vkSharingMode :: VkSharingMode- , -- | @queueFamilyIndexCount@ is the number of entries in the- -- @pQueueFamilyIndices@ array.- vkQueueFamilyIndexCount :: Word32+ size :: DeviceSize+ , -- | @usage@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlagBits'+ -- specifying allowed usages of the buffer.+ usage :: BufferUsageFlags+ , -- | 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' is a+ -- 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' value specifying+ -- the sharing mode of the buffer when it will be accessed by multiple+ -- queue families.+ sharingMode :: SharingMode , -- | @pQueueFamilyIndices@ is a list of queue families that will access this- -- buffer (ignored if @sharingMode@ is not @VK_SHARING_MODE_CONCURRENT@).- vkPQueueFamilyIndices :: Ptr Word32+ -- buffer (ignored if+ -- 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' is not+ -- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT').+ queueFamilyIndices :: Vector Word32 }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show (Chain es) => Show (BufferCreateInfo es) -instance Storable VkBufferCreateInfo where- sizeOf ~_ = 56- alignment ~_ = 8- peek ptr = VkBufferCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkBufferCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkBufferCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkBufferCreateInfo))- *> poke (ptr `plusPtr` 24) (vkSize (poked :: VkBufferCreateInfo))- *> poke (ptr `plusPtr` 32) (vkUsage (poked :: VkBufferCreateInfo))- *> poke (ptr `plusPtr` 36) (vkSharingMode (poked :: VkBufferCreateInfo))- *> poke (ptr `plusPtr` 40) (vkQueueFamilyIndexCount (poked :: VkBufferCreateInfo))- *> poke (ptr `plusPtr` 48) (vkPQueueFamilyIndices (poked :: VkBufferCreateInfo))--- | VkBufferUsageFlags - Bitmask of VkBufferUsageFlagBits------ = Description------ @VkBufferUsageFlags@ is a bitmask type for setting a mask of zero or--- more 'VkBufferUsageFlagBits'.------ = See Also------ 'VkBufferCreateInfo', 'VkBufferUsageFlagBits',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkPhysicalDeviceExternalBufferInfo'-type VkBufferUsageFlags = VkBufferUsageFlagBits--- | VkBufferCreateFlags - Bitmask of VkBufferCreateFlagBits------ = Description------ @VkBufferCreateFlags@ is a bitmask type for setting a mask of zero or--- more 'VkBufferCreateFlagBits'.------ = See Also------ 'VkBufferCreateFlagBits', 'VkBufferCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkPhysicalDeviceExternalBufferInfo'-type VkBufferCreateFlags = VkBufferCreateFlagBits+instance Extensible BufferCreateInfo where+ extensibleType = STRUCTURE_TYPE_BUFFER_CREATE_INFO+ setNext x next = x{next = next}+ getNext BufferCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends BufferCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @BufferDeviceAddressCreateInfoEXT = Just f+ | Just Refl <- eqT @e @BufferOpaqueCaptureAddressCreateInfo = Just f+ | Just Refl <- eqT @e @ExternalMemoryBufferCreateInfo = Just f+ | Just Refl <- eqT @e @DedicatedAllocationBufferCreateInfoNV = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (BufferCreateInfo es) where+ withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p BufferCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr BufferCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (size)+ lift $ poke ((p `plusPtr` 32 :: Ptr BufferUsageFlags)) (usage)+ lift $ poke ((p `plusPtr` 36 :: Ptr SharingMode)) (sharingMode)+ lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (queueFamilyIndices)) :: Word32))+ pPQueueFamilyIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (queueFamilyIndices)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPQueueFamilyIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (queueFamilyIndices)+ lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPQueueFamilyIndices')+ lift $ f+ cStructSize = 56+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)+ lift $ poke ((p `plusPtr` 32 :: Ptr BufferUsageFlags)) (zero)+ lift $ poke ((p `plusPtr` 36 :: Ptr SharingMode)) (zero)+ pPQueueFamilyIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPQueueFamilyIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPQueueFamilyIndices')+ lift $ f++instance PeekChain es => FromCStruct (BufferCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @BufferCreateFlags ((p `plusPtr` 16 :: Ptr BufferCreateFlags))+ size <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))+ usage <- peek @BufferUsageFlags ((p `plusPtr` 32 :: Ptr BufferUsageFlags))+ sharingMode <- peek @SharingMode ((p `plusPtr` 36 :: Ptr SharingMode))+ queueFamilyIndexCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))+ pQueueFamilyIndices <- peek @(Ptr Word32) ((p `plusPtr` 48 :: Ptr (Ptr Word32)))+ pQueueFamilyIndices' <- generateM (fromIntegral queueFamilyIndexCount) (\i -> peek @Word32 ((pQueueFamilyIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ pure $ BufferCreateInfo+ next flags size usage sharingMode pQueueFamilyIndices'++instance es ~ '[] => Zero (BufferCreateInfo es) where+ zero = BufferCreateInfo+ ()+ zero+ zero+ zero+ zero+ mempty+
+ src/Graphics/Vulkan/Core10/Buffer.hs-boot view
@@ -0,0 +1,17 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Buffer (BufferCreateInfo) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+type role BufferCreateInfo nominal+data BufferCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (BufferCreateInfo es)+instance Show (Chain es) => Show (BufferCreateInfo es)++instance PeekChain es => FromCStruct (BufferCreateInfo es)+
src/Graphics/Vulkan/Core10/BufferView.hs view
@@ -1,310 +1,402 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.BufferView- ( VkBufferViewCreateFlags(..)- , VkBufferView- , vkCreateBufferView- , vkDestroyBufferView- , VkBufferViewCreateInfo(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkFormat(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- , VkDeviceSize- )-import Graphics.Vulkan.Core10.MemoryManagement- ( VkBuffer- )----- ** VkBufferViewCreateFlags---- | VkBufferViewCreateFlags - Reserved for future use------ = Description------ @VkBufferViewCreateFlags@ is a bitmask type for setting a mask, but is--- currently reserved for future use.------ = See Also------ 'VkBufferViewCreateInfo'-newtype VkBufferViewCreateFlags = VkBufferViewCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkBufferViewCreateFlags where- - showsPrec p (VkBufferViewCreateFlags x) = showParen (p >= 11) (showString "VkBufferViewCreateFlags " . showsPrec 11 x)--instance Read VkBufferViewCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkBufferViewCreateFlags")- v <- step readPrec- pure (VkBufferViewCreateFlags v)- )- )+module Graphics.Vulkan.Core10.BufferView ( createBufferView+ , withBufferView+ , destroyBufferView+ , BufferViewCreateInfo(..)+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.Core10.Handles (BufferView)+import Graphics.Vulkan.Core10.Handles (BufferView(..))+import Graphics.Vulkan.Core10.Enums.BufferViewCreateFlags (BufferViewCreateFlags)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateBufferView))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyBufferView))+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.Core10.Enums.Format (Format)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateBufferView+ :: FunPtr (Ptr Device_T -> Ptr BufferViewCreateInfo -> Ptr AllocationCallbacks -> Ptr BufferView -> IO Result) -> Ptr Device_T -> Ptr BufferViewCreateInfo -> Ptr AllocationCallbacks -> Ptr BufferView -> IO Result --- | Dummy data to tag the 'Ptr' with-data VkBufferView_T--- | VkBufferView - Opaque handle to a buffer view object------ = See Also------ 'Graphics.Vulkan.Core10.DescriptorSet.VkWriteDescriptorSet',--- 'vkCreateBufferView', 'vkDestroyBufferView'-type VkBufferView = Ptr VkBufferView_T -- | vkCreateBufferView - Create a new buffer view object -- -- = Parameters ----- - @device@ is the logical device that creates the buffer view.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the buffer view. ----- - @pCreateInfo@ is a pointer to an instance of the--- @VkBufferViewCreateInfo@ structure containing parameters to be used--- to create the buffer.+-- - @pCreateInfo@ is a pointer to a 'BufferViewCreateInfo' structure+-- containing parameters to be used to create the buffer. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. ----- - @pView@ points to a @VkBufferView@ handle in which the resulting--- buffer view object is returned.+-- - @pView@ is a pointer to a+-- 'Graphics.Vulkan.Core10.Handles.BufferView' handle in which the+-- resulting buffer view object is returned. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle -- -- - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkBufferViewCreateInfo@ structure+-- 'BufferViewCreateInfo' structure -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - @pView@ /must/ be a valid pointer to a @VkBufferView@ handle+-- - @pView@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.BufferView' handle -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'VkBufferView', 'VkBufferViewCreateInfo',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.BufferView', 'BufferViewCreateInfo',+-- 'Graphics.Vulkan.Core10.Handles.Device'+createBufferView :: Device -> BufferViewCreateInfo -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (BufferView)+createBufferView device createInfo allocator = evalContT $ do+ let vkCreateBufferView' = mkVkCreateBufferView (pVkCreateBufferView (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPView <- ContT $ bracket (callocBytes @BufferView 8) free+ r <- lift $ vkCreateBufferView' (deviceHandle (device)) pCreateInfo pAllocator (pPView)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pView <- lift $ peek @BufferView pPView+ pure $ (pView)++-- | A safe wrapper for 'createBufferView' and 'destroyBufferView' using+-- 'bracket'+--+-- The allocated value must not be returned from the provided computation+withBufferView :: Device -> BufferViewCreateInfo -> Maybe AllocationCallbacks -> (BufferView -> IO r) -> IO r+withBufferView device bufferViewCreateInfo allocationCallbacks =+ bracket+ (createBufferView device bufferViewCreateInfo allocationCallbacks)+ (\o -> destroyBufferView device o allocationCallbacks)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkCreateBufferView" vkCreateBufferView :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkBufferView) -> IO VkResult+ "dynamic" mkVkDestroyBufferView+ :: FunPtr (Ptr Device_T -> BufferView -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> BufferView -> Ptr AllocationCallbacks -> IO ()+ -- | vkDestroyBufferView - Destroy a buffer view object -- -- = Parameters ----- - @device@ is the logical device that destroys the buffer view.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the buffer view. ----- - @bufferView@ is the buffer view to destroy.+-- - 'Graphics.Vulkan.Core10.Handles.BufferView' is the buffer view to+-- destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. -- -- == Valid Usage ----- - All submitted commands that refer to @bufferView@ /must/ have--- completed execution+-- - All submitted commands that refer to+-- 'Graphics.Vulkan.Core10.Handles.BufferView' /must/ have completed+-- execution ----- - If @VkAllocationCallbacks@ were provided when @bufferView@ was+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.BufferView' was -- created, a compatible set of callbacks /must/ be provided here ----- - If no @VkAllocationCallbacks@ were provided when @bufferView@ was+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.BufferView' was -- created, @pAllocator@ /must/ be @NULL@ -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - If @bufferView@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @bufferView@--- /must/ be a valid @VkBufferView@ handle+-- - If 'Graphics.Vulkan.Core10.Handles.BufferView' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.BufferView' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.BufferView' handle -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - If @bufferView@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@+-- - If 'Graphics.Vulkan.Core10.Handles.BufferView' is a valid handle, it+-- /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization ----- - Host access to @bufferView@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.BufferView' /must/ be+-- externally synchronized -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'VkBufferView', 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroyBufferView" vkDestroyBufferView :: ("device" ::: VkDevice) -> ("bufferView" ::: VkBufferView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.BufferView',+-- 'Graphics.Vulkan.Core10.Handles.Device'+destroyBufferView :: Device -> BufferView -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyBufferView device bufferView allocator = evalContT $ do+ let vkDestroyBufferView' = mkVkDestroyBufferView (pVkDestroyBufferView (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyBufferView' (deviceHandle (device)) (bufferView) pAllocator+ pure $ ()++ -- | VkBufferViewCreateInfo - Structure specifying parameters of a newly -- created buffer view -- -- == Valid Usage ----- - @offset@ /must/ be less than the size of @buffer@------ - @offset@ /must/ be a multiple of--- @VkPhysicalDeviceLimits@::@minTexelBufferOffsetAlignment@+-- - @offset@ /must/ be less than the size of+-- 'Graphics.Vulkan.Core10.Handles.Buffer' ----- - If @range@ is not equal to @VK_WHOLE_SIZE@, @range@ /must/ be+-- - If @range@ is not equal to+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', @range@ /must/ be -- greater than @0@ ----- - If @range@ is not equal to @VK_WHOLE_SIZE@, @range@ /must/ be a--- multiple of the element size of @format@+-- - If @range@ is not equal to+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', @range@ /must/ be+-- an integer multiple of the texel block size of+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' ----- - If @range@ is not equal to @VK_WHOLE_SIZE@, @range@ divided by the--- element size of @format@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxTexelBufferElements@+-- - If @range@ is not equal to+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', @range@ divided by+-- the texel block size of+-- 'Graphics.Vulkan.Core10.Enums.Format.Format', multiplied by the+-- number of texels per texel block for that format (as defined in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility Compatible Formats>+-- table), /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxTexelBufferElements@ ----- - If @range@ is not equal to @VK_WHOLE_SIZE@, the sum of @offset@ and--- @range@ /must/ be less than or equal to the size of @buffer@+-- - If @range@ is not equal to+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', the sum of+-- @offset@ and @range@ /must/ be less than or equal to the size of+-- 'Graphics.Vulkan.Core10.Handles.Buffer' ----- - @buffer@ /must/ have been created with a @usage@ value containing at--- least one of @VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT@ or--- @VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT@+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ have been created+-- with a @usage@ value containing at least one of+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT' ----- - If @buffer@ was created with @usage@ containing--- @VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT@, @format@ /must/ be--- supported for uniform texel buffers, as specified by the--- @VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT@ flag in--- @VkFormatProperties@::@bufferFeatures@ returned by--- @vkGetPhysicalDeviceFormatProperties@+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' was created with @usage@+-- containing+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT',+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be supported for+-- uniform texel buffers, as specified by the+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT'+-- flag in+-- 'Graphics.Vulkan.Core10.DeviceInitialization.FormatProperties'::@bufferFeatures@+-- returned by+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties' ----- - If @buffer@ was created with @usage@ containing--- @VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT@, @format@ /must/ be--- supported for storage texel buffers, as specified by the--- @VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT@ flag in--- @VkFormatProperties@::@bufferFeatures@ returned by--- @vkGetPhysicalDeviceFormatProperties@+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' was created with @usage@+-- containing+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT',+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be supported for+-- storage texel buffers, as specified by the+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT'+-- flag in+-- 'Graphics.Vulkan.Core10.DeviceInitialization.FormatProperties'::@bufferFeatures@+-- returned by+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties' ----- - If @buffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is non-sparse then it+-- /must/ be bound completely and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object --+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignment texelBufferAlignment>+-- feature is not enabled, @offset@ /must/ be a multiple of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minTexelBufferOffsetAlignment@+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignment texelBufferAlignment>+-- feature is enabled and if 'Graphics.Vulkan.Core10.Handles.Buffer'+-- was created with @usage@ containing+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT',+-- @offset@ /must/ be a multiple of the lesser of+-- 'Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT'::@storageTexelBufferOffsetAlignmentBytes@+-- or, if+-- 'Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT'::@storageTexelBufferOffsetSingleTexelAlignment@+-- is 'Graphics.Vulkan.Core10.BaseType.TRUE', the size of a texel of+-- the requested 'Graphics.Vulkan.Core10.Enums.Format.Format'. If the+-- size of a texel is a multiple of three bytes, then the size of a+-- single component of 'Graphics.Vulkan.Core10.Enums.Format.Format' is+-- used instead+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignment texelBufferAlignment>+-- feature is enabled and if 'Graphics.Vulkan.Core10.Handles.Buffer'+-- was created with @usage@ containing+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT',+-- @offset@ /must/ be a multiple of the lesser of+-- 'Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT'::@uniformTexelBufferOffsetAlignmentBytes@+-- or, if+-- 'Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT'::@uniformTexelBufferOffsetSingleTexelAlignment@+-- is 'Graphics.Vulkan.Core10.BaseType.TRUE', the size of a texel of+-- the requested 'Graphics.Vulkan.Core10.Enums.Format.Format'. If the+-- size of a texel is a multiple of three bytes, then the size of a+-- single component of 'Graphics.Vulkan.Core10.Enums.Format.Format' is+-- used instead+-- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO@+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO' -- -- - @pNext@ /must/ be @NULL@ ----- - @flags@ /must/ be @0@+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@ ----- - @buffer@ /must/ be a valid @VkBuffer@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle ----- - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'--- value+-- - 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' value -- -- = See Also ----- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'VkBufferViewCreateFlags', @VkDeviceSize@,--- 'Graphics.Vulkan.Core10.Core.VkFormat',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateBufferView'-data VkBufferViewCreateInfo = VkBufferViewCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkBufferViewCreateFlags- , -- | @buffer@ is a @VkBuffer@ on which the view will be created.- vkBuffer :: VkBuffer- , -- | @format@ is a 'Graphics.Vulkan.Core10.Core.VkFormat' describing the- -- format of the data elements in the buffer.- vkFormat :: VkFormat+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Enums.BufferViewCreateFlags.BufferViewCreateFlags',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createBufferView'+data BufferViewCreateInfo = BufferViewCreateInfo+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: BufferViewCreateFlags+ , -- | 'Graphics.Vulkan.Core10.Handles.Buffer' is a+ -- 'Graphics.Vulkan.Core10.Handles.Buffer' on which the view will be+ -- created.+ buffer :: Buffer+ , -- | 'Graphics.Vulkan.Core10.Enums.Format.Format' is a+ -- 'Graphics.Vulkan.Core10.Enums.Format.Format' describing the format of+ -- the data elements in the buffer.+ format :: Format , -- | @offset@ is an offset in bytes from the base address of the buffer.- -- Accesses to the buffer view from shaders use addressing that is relative- -- to this starting offset.- vkOffset :: VkDeviceSize+ -- Accesses to the buffer view from shaders use addressing that is relative+ -- to this starting offset.+ offset :: DeviceSize , -- | @range@ is a size in bytes of the buffer view. If @range@ is equal to- -- @VK_WHOLE_SIZE@, the range from @offset@ to the end of the buffer is- -- used. If @VK_WHOLE_SIZE@ is used and the remaining size of the buffer is- -- not a multiple of the element size of @format@, then the nearest smaller- -- multiple is used.- vkRange :: VkDeviceSize+ -- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', the range from+ -- @offset@ to the end of the buffer is used. If+ -- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE' is used and the+ -- remaining size of the buffer is not a multiple of the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#texel-block-size texel block size>+ -- of 'Graphics.Vulkan.Core10.Enums.Format.Format', the nearest smaller+ -- multiple is used.+ range :: DeviceSize }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show BufferViewCreateInfo -instance Storable VkBufferViewCreateInfo where+instance ToCStruct BufferViewCreateInfo where+ withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p BufferViewCreateInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr BufferViewCreateFlags)) (flags)+ poke ((p `plusPtr` 24 :: Ptr Buffer)) (buffer)+ poke ((p `plusPtr` 32 :: Ptr Format)) (format)+ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (offset)+ poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (range)+ f+ cStructSize = 56+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 24 :: Ptr Buffer)) (zero)+ poke ((p `plusPtr` 32 :: Ptr Format)) (zero)+ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (zero)+ f++instance FromCStruct BufferViewCreateInfo where+ peekCStruct p = do+ flags <- peek @BufferViewCreateFlags ((p `plusPtr` 16 :: Ptr BufferViewCreateFlags))+ buffer <- peek @Buffer ((p `plusPtr` 24 :: Ptr Buffer))+ format <- peek @Format ((p `plusPtr` 32 :: Ptr Format))+ offset <- peek @DeviceSize ((p `plusPtr` 40 :: Ptr DeviceSize))+ range <- peek @DeviceSize ((p `plusPtr` 48 :: Ptr DeviceSize))+ pure $ BufferViewCreateInfo+ flags buffer format offset range++instance Storable BufferViewCreateInfo where sizeOf ~_ = 56 alignment ~_ = 8- peek ptr = VkBufferViewCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkBufferViewCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkBufferViewCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkBufferViewCreateInfo))- *> poke (ptr `plusPtr` 24) (vkBuffer (poked :: VkBufferViewCreateInfo))- *> poke (ptr `plusPtr` 32) (vkFormat (poked :: VkBufferViewCreateInfo))- *> poke (ptr `plusPtr` 40) (vkOffset (poked :: VkBufferViewCreateInfo))- *> poke (ptr `plusPtr` 48) (vkRange (poked :: VkBufferViewCreateInfo))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero BufferViewCreateInfo where+ zero = BufferViewCreateInfo+ zero+ zero+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core10/BufferView.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.BufferView (BufferViewCreateInfo) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data BufferViewCreateInfo++instance ToCStruct BufferViewCreateInfo+instance Show BufferViewCreateInfo++instance FromCStruct BufferViewCreateInfo+
src/Graphics/Vulkan/Core10/CommandBuffer.hs view
@@ -1,837 +1,891 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.CommandBuffer- ( VkCommandBufferLevel(..)- , pattern VK_COMMAND_BUFFER_LEVEL_PRIMARY- , pattern VK_COMMAND_BUFFER_LEVEL_SECONDARY- , VkQueryControlFlagBits(..)- , pattern VK_QUERY_CONTROL_PRECISE_BIT- , VkCommandBufferResetFlagBits(..)- , pattern VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT- , VkCommandBufferUsageFlagBits(..)- , pattern VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT- , pattern VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT- , pattern VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT- , vkAllocateCommandBuffers- , vkFreeCommandBuffers- , vkBeginCommandBuffer- , vkEndCommandBuffer- , vkResetCommandBuffer- , VkCommandBufferAllocateInfo(..)- , VkCommandBufferInheritanceInfo(..)- , VkCommandBufferBeginInfo(..)- , VkQueryControlFlags- , VkCommandBufferResetFlags- , VkCommandBufferUsageFlags- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Int- ( Int32- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.CommandPool- ( VkCommandPool- )-import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- )-import Graphics.Vulkan.Core10.Pass- ( VkFramebuffer- )-import Graphics.Vulkan.Core10.Pipeline- ( VkRenderPass- )-import Graphics.Vulkan.Core10.Query- ( VkQueryPipelineStatisticFlags- )-import Graphics.Vulkan.Core10.Queue- ( VkCommandBuffer- )----- ** VkCommandBufferLevel---- | VkCommandBufferLevel - Enumerant specifying a command buffer level------ = See Also------ 'VkCommandBufferAllocateInfo'-newtype VkCommandBufferLevel = VkCommandBufferLevel Int32- deriving (Eq, Ord, Storable)--instance Show VkCommandBufferLevel where- showsPrec _ VK_COMMAND_BUFFER_LEVEL_PRIMARY = showString "VK_COMMAND_BUFFER_LEVEL_PRIMARY"- showsPrec _ VK_COMMAND_BUFFER_LEVEL_SECONDARY = showString "VK_COMMAND_BUFFER_LEVEL_SECONDARY"- showsPrec p (VkCommandBufferLevel x) = showParen (p >= 11) (showString "VkCommandBufferLevel " . showsPrec 11 x)--instance Read VkCommandBufferLevel where- readPrec = parens ( choose [ ("VK_COMMAND_BUFFER_LEVEL_PRIMARY", pure VK_COMMAND_BUFFER_LEVEL_PRIMARY)- , ("VK_COMMAND_BUFFER_LEVEL_SECONDARY", pure VK_COMMAND_BUFFER_LEVEL_SECONDARY)- ] +++- prec 10 (do- expectP (Ident "VkCommandBufferLevel")- v <- step readPrec- pure (VkCommandBufferLevel v)- )- )---- | @VK_COMMAND_BUFFER_LEVEL_PRIMARY@ specifies a primary command buffer.-pattern VK_COMMAND_BUFFER_LEVEL_PRIMARY :: VkCommandBufferLevel-pattern VK_COMMAND_BUFFER_LEVEL_PRIMARY = VkCommandBufferLevel 0---- | @VK_COMMAND_BUFFER_LEVEL_SECONDARY@ specifies a secondary command--- buffer.-pattern VK_COMMAND_BUFFER_LEVEL_SECONDARY :: VkCommandBufferLevel-pattern VK_COMMAND_BUFFER_LEVEL_SECONDARY = VkCommandBufferLevel 1--- ** VkQueryControlFlagBits---- | VkQueryControlFlagBits - Bitmask specifying constraints on a query------ = See Also------ 'VkQueryControlFlags'-newtype VkQueryControlFlagBits = VkQueryControlFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkQueryControlFlagBits where- showsPrec _ VK_QUERY_CONTROL_PRECISE_BIT = showString "VK_QUERY_CONTROL_PRECISE_BIT"- showsPrec p (VkQueryControlFlagBits x) = showParen (p >= 11) (showString "VkQueryControlFlagBits " . showsPrec 11 x)--instance Read VkQueryControlFlagBits where- readPrec = parens ( choose [ ("VK_QUERY_CONTROL_PRECISE_BIT", pure VK_QUERY_CONTROL_PRECISE_BIT)- ] +++- prec 10 (do- expectP (Ident "VkQueryControlFlagBits")- v <- step readPrec- pure (VkQueryControlFlagBits v)- )- )---- | @VK_QUERY_CONTROL_PRECISE_BIT@ specifies the precision of [occlusion--- queries](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-occlusion).-pattern VK_QUERY_CONTROL_PRECISE_BIT :: VkQueryControlFlagBits-pattern VK_QUERY_CONTROL_PRECISE_BIT = VkQueryControlFlagBits 0x00000001--- ** VkCommandBufferResetFlagBits---- | VkCommandBufferResetFlagBits - Bitmask controlling behavior of a command--- buffer reset------ = See Also------ 'VkCommandBufferResetFlags'-newtype VkCommandBufferResetFlagBits = VkCommandBufferResetFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkCommandBufferResetFlagBits where- showsPrec _ VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = showString "VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT"- showsPrec p (VkCommandBufferResetFlagBits x) = showParen (p >= 11) (showString "VkCommandBufferResetFlagBits " . showsPrec 11 x)--instance Read VkCommandBufferResetFlagBits where- readPrec = parens ( choose [ ("VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT", pure VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT)- ] +++- prec 10 (do- expectP (Ident "VkCommandBufferResetFlagBits")- v <- step readPrec- pure (VkCommandBufferResetFlagBits v)- )- )---- | @VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT@ specifies that most or--- all memory resources currently owned by the command buffer /should/ be--- returned to the parent command pool. If this flag is not set, then the--- command buffer /may/ hold onto memory resources and reuse them when--- recording commands. @commandBuffer@ is moved to the [initial--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).-pattern VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT :: VkCommandBufferResetFlagBits-pattern VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = VkCommandBufferResetFlagBits 0x00000001--- ** VkCommandBufferUsageFlagBits---- | VkCommandBufferUsageFlagBits - Bitmask specifying usage behavior for--- command buffer------ = See Also------ 'VkCommandBufferUsageFlags'-newtype VkCommandBufferUsageFlagBits = VkCommandBufferUsageFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkCommandBufferUsageFlagBits where- showsPrec _ VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = showString "VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"- showsPrec _ VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = showString "VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"- showsPrec _ VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = showString "VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"- showsPrec p (VkCommandBufferUsageFlagBits x) = showParen (p >= 11) (showString "VkCommandBufferUsageFlagBits " . showsPrec 11 x)--instance Read VkCommandBufferUsageFlagBits where- readPrec = parens ( choose [ ("VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT", pure VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT)- , ("VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT", pure VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT)- , ("VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT", pure VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT)- ] +++- prec 10 (do- expectP (Ident "VkCommandBufferUsageFlagBits")- v <- step readPrec- pure (VkCommandBufferUsageFlagBits v)- )- )---- | @VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT@ specifies that each--- recording of the command buffer will only be submitted once, and the--- command buffer will be reset and recorded again between each submission.-pattern VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT :: VkCommandBufferUsageFlagBits-pattern VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = VkCommandBufferUsageFlagBits 0x00000001---- | @VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT@ specifies that a--- secondary command buffer is considered to be entirely inside a render--- pass. If this is a primary command buffer, then this bit is ignored.-pattern VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT :: VkCommandBufferUsageFlagBits-pattern VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = VkCommandBufferUsageFlagBits 0x00000002---- | @VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT@ specifies that a command--- buffer /can/ be resubmitted to a queue while it is in the /pending--- state/, and recorded into multiple primary command buffers.-pattern VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT :: VkCommandBufferUsageFlagBits-pattern VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = VkCommandBufferUsageFlagBits 0x00000004--- | vkAllocateCommandBuffers - Allocate command buffers from an existing--- command pool------ = Parameters------ - @device@ is the logical device that owns the command pool.------ - @pAllocateInfo@ is a pointer to an instance of the--- @VkCommandBufferAllocateInfo@ structure describing parameters of the--- allocation.------ - @pCommandBuffers@ is a pointer to an array of @VkCommandBuffer@--- handles in which the resulting command buffer objects are returned.--- The array /must/ be at least the length specified by the--- @commandBufferCount@ member of @pAllocateInfo@. Each allocated--- command buffer begins in the initial state.------ = Description------ @vkAllocateCommandBuffers@ /can/ be used to create multiple command--- buffers. If the creation of any of those command buffers fails, the--- implementation /must/ destroy all successfully created command buffer--- objects from this command, set all entries of the @pCommandBuffers@--- array to @NULL@ and return the error.------ When command buffers are first allocated, they are in the [initial--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pAllocateInfo@ /must/ be a valid pointer to a valid--- @VkCommandBufferAllocateInfo@ structure------ - @pCommandBuffers@ /must/ be a valid pointer to an array of--- @pAllocateInfo@::commandBufferCount @VkCommandBuffer@ handles------ == Host Synchronization------ - Host access to @pAllocateInfo@::commandPool /must/ be externally--- synchronized------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'VkCommandBufferAllocateInfo',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkAllocateCommandBuffers" vkAllocateCommandBuffers :: ("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkCommandBufferAllocateInfo) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO VkResult--- | vkFreeCommandBuffers - Free command buffers------ = Parameters------ - @device@ is the logical device that owns the command pool.------ - @commandPool@ is the command pool from which the command buffers--- were allocated.------ - @commandBufferCount@ is the length of the @pCommandBuffers@ array.------ - @pCommandBuffers@ is an array of handles of command buffers to free.------ = Description------ Any primary command buffer that is in the [recording or executable--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)--- and has any element of @pCommandBuffers@ recorded into it, becomes--- [invalid](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).------ == Valid Usage------ - All elements of @pCommandBuffers@ /must/ not be in the [pending--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - @pCommandBuffers@ /must/ be a valid pointer to an array of--- @commandBufferCount@ @VkCommandBuffer@ handles, each element of--- which /must/ either be a valid handle or @NULL@------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @commandPool@ /must/ be a valid @VkCommandPool@ handle------ - @commandBufferCount@ /must/ be greater than @0@------ - @commandPool@ /must/ have been created, allocated, or retrieved from--- @device@------ - Each element of @pCommandBuffers@ that is a valid handle /must/ have--- been created, allocated, or retrieved from @commandPool@------ == Host Synchronization------ - Host access to @commandPool@ /must/ be externally synchronized------ - Host access to each member of @pCommandBuffers@ /must/ be externally--- synchronized------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.CommandPool.VkCommandPool',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkFreeCommandBuffers" vkFreeCommandBuffers :: ("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ()--- | vkBeginCommandBuffer - Start recording a command buffer------ = Parameters------ - @commandBuffer@ is the handle of the command buffer which is to be--- put in the recording state.------ - @pBeginInfo@ is an instance of the @VkCommandBufferBeginInfo@--- structure, which defines additional information about how the--- command buffer begins recording.------ == Valid Usage------ - @commandBuffer@ /must/ not be in the [recording or pending--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).------ - If @commandBuffer@ was allocated from a--- 'Graphics.Vulkan.Core10.CommandPool.VkCommandPool' which did not--- have the @VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT@ flag set,--- @commandBuffer@ /must/ be in the [initial--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).------ - If @commandBuffer@ is a secondary command buffer, the--- @pInheritanceInfo@ member of @pBeginInfo@ /must/ be a valid--- @VkCommandBufferInheritanceInfo@ structure------ - If @commandBuffer@ is a secondary command buffer and either the--- @occlusionQueryEnable@ member of the @pInheritanceInfo@ member of--- @pBeginInfo@ is @VK_FALSE@, or the precise occlusion queries feature--- is not enabled, the @queryFlags@ member of the @pInheritanceInfo@--- member @pBeginInfo@ /must/ not contain--- @VK_QUERY_CONTROL_PRECISE_BIT@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pBeginInfo@ /must/ be a valid pointer to a valid--- @VkCommandBufferBeginInfo@ structure------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'VkCommandBufferBeginInfo'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkBeginCommandBuffer" vkBeginCommandBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("pBeginInfo" ::: Ptr VkCommandBufferBeginInfo) -> IO VkResult--- | vkEndCommandBuffer - Finish recording a command buffer------ = Parameters------ - @commandBuffer@ is the command buffer to complete recording.------ = Description------ If there was an error during recording, the application will be notified--- by an unsuccessful return code returned by @vkEndCommandBuffer@. If the--- application wishes to further use the command buffer, the command buffer--- /must/ be reset. The command buffer /must/ have been in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle),--- and is moved to the [executable--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).------ == Valid Usage------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).------ - If @commandBuffer@ is a primary command buffer, there /must/ not be--- an active render pass instance------ - All queries made--- [active](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-active)--- during the recording of @commandBuffer@ /must/ have been made--- inactive------ - If @commandBuffer@ is a secondary command buffer, there /must/ not--- be an outstanding--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkCmdBeginDebugUtilsLabelEXT'--- command recorded to @commandBuffer@ that has not previously been--- ended by a call to--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkCmdEndDebugUtilsLabelEXT'.------ - If @commandBuffer@ is a secondary command buffer, there /must/ not--- be an outstanding--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.vkCmdDebugMarkerBeginEXT'--- command recorded to @commandBuffer@ that has not previously been--- ended by a call to--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.vkCmdDebugMarkerEndEXT'.------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkEndCommandBuffer" vkEndCommandBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> IO VkResult--- | vkResetCommandBuffer - Reset a command buffer to the initial state------ = Parameters------ - @commandBuffer@ is the command buffer to reset. The command buffer--- /can/ be in any state other than--- [pending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle),--- and is moved into the [initial--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).------ - @flags@ is a bitmask of 'VkCommandBufferResetFlagBits' controlling--- the reset operation.------ = Description------ Any primary command buffer that is in the [recording or executable--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)--- and has @commandBuffer@ recorded into it, becomes--- [invalid](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).------ == Valid Usage------ - @commandBuffer@ /must/ not be in the [pending--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - @commandBuffer@ /must/ have been allocated from a pool that was--- created with the @VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @flags@ /must/ be a valid combination of--- 'VkCommandBufferResetFlagBits' values------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'VkCommandBufferResetFlags'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkResetCommandBuffer" vkResetCommandBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("flags" ::: VkCommandBufferResetFlags) -> IO VkResult--- | VkCommandBufferAllocateInfo - Structure specifying the allocation--- parameters for command buffer object------ == Valid Usage------ - @commandBufferCount@ /must/ be greater than @0@------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO@------ - @pNext@ /must/ be @NULL@------ - @commandPool@ /must/ be a valid @VkCommandPool@ handle------ - @level@ /must/ be a valid 'VkCommandBufferLevel' value------ = See Also------ 'VkCommandBufferLevel',--- 'Graphics.Vulkan.Core10.CommandPool.VkCommandPool',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkAllocateCommandBuffers'-data VkCommandBufferAllocateInfo = VkCommandBufferAllocateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @commandPool@ is the command pool from which the command buffers are- -- allocated.- vkCommandPool :: VkCommandPool- , -- | @level@ is an 'VkCommandBufferLevel' value specifying the command buffer- -- level.- vkLevel :: VkCommandBufferLevel- , -- | @commandBufferCount@ is the number of command buffers to allocate from- -- the pool.- vkCommandBufferCount :: Word32- }- deriving (Eq, Show)--instance Storable VkCommandBufferAllocateInfo where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkCommandBufferAllocateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkCommandBufferAllocateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkCommandBufferAllocateInfo))- *> poke (ptr `plusPtr` 16) (vkCommandPool (poked :: VkCommandBufferAllocateInfo))- *> poke (ptr `plusPtr` 24) (vkLevel (poked :: VkCommandBufferAllocateInfo))- *> poke (ptr `plusPtr` 28) (vkCommandBufferCount (poked :: VkCommandBufferAllocateInfo))--- | VkCommandBufferInheritanceInfo - Structure specifying command buffer--- inheritance info------ = Members------ - @sType@ is the type of this structure.------ - @pNext@ is @NULL@ or a pointer to an extension-specific structure.------ - @renderPass@ is a @VkRenderPass@ object defining which render passes--- the @VkCommandBuffer@ will be--- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)--- with and /can/ be executed within. If the @VkCommandBuffer@ will not--- be executed within a render pass instance, @renderPass@ is ignored.------ - @subpass@ is the index of the subpass within the render pass--- instance that the @VkCommandBuffer@ will be executed within. If the--- @VkCommandBuffer@ will not be executed within a render pass--- instance, @subpass@ is ignored.------ - @framebuffer@ optionally refers to the @VkFramebuffer@ object that--- the @VkCommandBuffer@ will be rendering to if it is executed within--- a render pass instance. It /can/ be--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' if the framebuffer--- is not known, or if the @VkCommandBuffer@ will not be executed--- within a render pass instance.------ __Note__------ Specifying the exact framebuffer that the secondary command buffer--- will be executed with /may/ result in better performance at command--- buffer execution time.------ - @occlusionQueryEnable@ specifies whether the command buffer /can/ be--- executed while an occlusion query is active in the primary command--- buffer. If this is @VK_TRUE@, then this command buffer /can/ be--- executed whether the primary command buffer has an occlusion query--- active or not. If this is @VK_FALSE@, then the primary command--- buffer /must/ not have an occlusion query active.------ - @queryFlags@ specifies the query flags that /can/ be used by an--- active occlusion query in the primary command buffer when this--- secondary command buffer is executed. If this value includes the--- @VK_QUERY_CONTROL_PRECISE_BIT@ bit, then the active query /can/--- return boolean results or actual sample counts. If this bit is not--- set, then the active query /must/ not use the--- @VK_QUERY_CONTROL_PRECISE_BIT@ bit.------ - @pipelineStatistics@ is a bitmask of--- 'Graphics.Vulkan.Core10.Query.VkQueryPipelineStatisticFlagBits'--- specifying the set of pipeline statistics that /can/ be counted by--- an active query in the primary command buffer when this secondary--- command buffer is executed. If this value includes a given bit, then--- this command buffer /can/ be executed whether the primary command--- buffer has a pipeline statistics query active that includes this bit--- or not. If this value excludes a given bit, then the active pipeline--- statistics query /must/ not be from a query pool that counts that--- statistic.------ == Valid Usage------ - If the [inherited--- queries](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-inheritedQueries)--- feature is not enabled, @occlusionQueryEnable@ /must/ be @VK_FALSE@------ - If the [inherited--- queries](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-inheritedQueries)--- feature is enabled, @queryFlags@ /must/ be a valid combination of--- 'VkQueryControlFlagBits' values------ - If the [pipeline statistics--- queries](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-pipelineStatisticsQuery)--- feature is not enabled, @pipelineStatistics@ /must/ be @0@------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO@------ - @pNext@ /must/ be @NULL@------ - Both of @framebuffer@, and @renderPass@ that are valid handles--- /must/ have been created, allocated, or retrieved from the same--- @VkDevice@------ = See Also------ @VkBool32@, 'VkCommandBufferBeginInfo',--- 'Graphics.Vulkan.Core10.Pass.VkFramebuffer', 'VkQueryControlFlags',--- 'Graphics.Vulkan.Core10.Query.VkQueryPipelineStatisticFlags',--- 'Graphics.Vulkan.Core10.Pipeline.VkRenderPass',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkCommandBufferInheritanceInfo = VkCommandBufferInheritanceInfo- { -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "renderPass"- vkRenderPass :: VkRenderPass- , -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "subpass"- vkSubpass :: Word32- , -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "framebuffer"- vkFramebuffer :: VkFramebuffer- , -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "occlusionQueryEnable"- vkOcclusionQueryEnable :: VkBool32- , -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "queryFlags"- vkQueryFlags :: VkQueryControlFlags- , -- No documentation found for Nested "VkCommandBufferInheritanceInfo" "pipelineStatistics"- vkPipelineStatistics :: VkQueryPipelineStatisticFlags- }- deriving (Eq, Show)--instance Storable VkCommandBufferInheritanceInfo where- sizeOf ~_ = 56- alignment ~_ = 8- peek ptr = VkCommandBufferInheritanceInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 48)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkCommandBufferInheritanceInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkCommandBufferInheritanceInfo))- *> poke (ptr `plusPtr` 16) (vkRenderPass (poked :: VkCommandBufferInheritanceInfo))- *> poke (ptr `plusPtr` 24) (vkSubpass (poked :: VkCommandBufferInheritanceInfo))- *> poke (ptr `plusPtr` 32) (vkFramebuffer (poked :: VkCommandBufferInheritanceInfo))- *> poke (ptr `plusPtr` 40) (vkOcclusionQueryEnable (poked :: VkCommandBufferInheritanceInfo))- *> poke (ptr `plusPtr` 44) (vkQueryFlags (poked :: VkCommandBufferInheritanceInfo))- *> poke (ptr `plusPtr` 48) (vkPipelineStatistics (poked :: VkCommandBufferInheritanceInfo))--- | VkCommandBufferBeginInfo - Structure specifying a command buffer begin--- operation------ == Valid Usage------ - If @flags@ contains--- @VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT@, the @renderPass@--- member of @pInheritanceInfo@ /must/ be a valid @VkRenderPass@------ - If @flags@ contains--- @VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT@, the @subpass@--- member of @pInheritanceInfo@ /must/ be a valid subpass index within--- the @renderPass@ member of @pInheritanceInfo@------ - If @flags@ contains--- @VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT@, the--- @framebuffer@ member of @pInheritanceInfo@ /must/ be either--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', or a valid--- @VkFramebuffer@ that is compatible with the @renderPass@ member of--- @pInheritanceInfo@------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO@------ - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.VkDeviceGroupCommandBufferBeginInfo'------ - @flags@ /must/ be a valid combination of--- 'VkCommandBufferUsageFlagBits' values------ = See Also------ 'VkCommandBufferInheritanceInfo', 'VkCommandBufferUsageFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkBeginCommandBuffer'-data VkCommandBufferBeginInfo = VkCommandBufferBeginInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is a bitmask of 'VkCommandBufferUsageFlagBits' specifying usage- -- behavior for the command buffer.- vkFlags :: VkCommandBufferUsageFlags- , -- | @pInheritanceInfo@ is a pointer to a @VkCommandBufferInheritanceInfo@- -- structure, which is used if @commandBuffer@ is a secondary command- -- buffer. If this is a primary command buffer, then this value is ignored.- vkPInheritanceInfo :: Ptr VkCommandBufferInheritanceInfo- }- deriving (Eq, Show)--instance Storable VkCommandBufferBeginInfo where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkCommandBufferBeginInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkCommandBufferBeginInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkCommandBufferBeginInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkCommandBufferBeginInfo))- *> poke (ptr `plusPtr` 24) (vkPInheritanceInfo (poked :: VkCommandBufferBeginInfo))--- | VkQueryControlFlags - Bitmask of VkQueryControlFlagBits------ = Description------ @VkQueryControlFlags@ is a bitmask type for setting a mask of zero or--- more 'VkQueryControlFlagBits'.------ = See Also------ 'VkCommandBufferInheritanceInfo', 'VkQueryControlFlagBits',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBeginQuery'-type VkQueryControlFlags = VkQueryControlFlagBits--- | VkCommandBufferResetFlags - Bitmask of VkCommandBufferResetFlagBits------ = Description------ @VkCommandBufferResetFlags@ is a bitmask type for setting a mask of zero--- or more 'VkCommandBufferResetFlagBits'.------ = See Also------ 'VkCommandBufferResetFlagBits', 'vkResetCommandBuffer'-type VkCommandBufferResetFlags = VkCommandBufferResetFlagBits--- | VkCommandBufferUsageFlags - Bitmask of VkCommandBufferUsageFlagBits------ = Description------ @VkCommandBufferUsageFlags@ is a bitmask type for setting a mask of zero--- or more 'VkCommandBufferUsageFlagBits'.------ = See Also------ 'VkCommandBufferBeginInfo', 'VkCommandBufferUsageFlagBits'-type VkCommandBufferUsageFlags = VkCommandBufferUsageFlagBits+{-# language CPP #-}+module Graphics.Vulkan.Core10.CommandBuffer ( allocateCommandBuffers+ , withCommandBuffers+ , freeCommandBuffers+ , beginCommandBuffer+ , useCommandBuffer+ , endCommandBuffer+ , resetCommandBuffer+ , CommandBufferAllocateInfo(..)+ , CommandBufferInheritanceInfo(..)+ , CommandBufferBeginInfo(..)+ ) where++import Control.Exception.Base (bracket)+import Control.Exception.Base (bracket_)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Marshal.Utils (maybePeek)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.CStruct.Extends (forgetExtensions)+import Graphics.Vulkan.CStruct.Extends (peekSomeCStruct)+import Graphics.Vulkan.CStruct.Extends (withSomeCStruct)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering (CommandBufferInheritanceConditionalRenderingInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform (CommandBufferInheritanceRenderPassTransformInfoQCOM)+import Graphics.Vulkan.Core10.Enums.CommandBufferLevel (CommandBufferLevel)+import Graphics.Vulkan.Core10.Enums.CommandBufferResetFlagBits (CommandBufferResetFlags)+import Graphics.Vulkan.Core10.Enums.CommandBufferResetFlagBits (CommandBufferResetFlags)+import Graphics.Vulkan.Core10.Enums.CommandBufferResetFlagBits (CommandBufferResetFlagBits(..))+import Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits (CommandBufferUsageFlags)+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Core10.Handles (CommandPool)+import Graphics.Vulkan.Core10.Handles (CommandPool(..))+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkAllocateCommandBuffers))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkBeginCommandBuffer))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkEndCommandBuffer))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkFreeCommandBuffers))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkResetCommandBuffer))+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupCommandBufferBeginInfo)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.Core10.Handles (Framebuffer)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlags)+import Graphics.Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits (QueryPipelineStatisticFlags)+import Graphics.Vulkan.Core10.Handles (RenderPass)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.CStruct.Extends (SomeStruct)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkAllocateCommandBuffers+ :: FunPtr (Ptr Device_T -> Ptr CommandBufferAllocateInfo -> Ptr (Ptr CommandBuffer_T) -> IO Result) -> Ptr Device_T -> Ptr CommandBufferAllocateInfo -> Ptr (Ptr CommandBuffer_T) -> IO Result++-- | vkAllocateCommandBuffers - Allocate command buffers from an existing+-- command pool+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the command pool.+--+-- - @pAllocateInfo@ is a pointer to a 'CommandBufferAllocateInfo'+-- structure describing parameters of the allocation.+--+-- - @pCommandBuffers@ is a pointer to an array of+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handles in which the+-- resulting command buffer objects are returned. The array /must/ be+-- at least the length specified by the @commandBufferCount@ member of+-- @pAllocateInfo@. Each allocated command buffer begins in the initial+-- state.+--+-- = Description+--+-- 'allocateCommandBuffers' /can/ be used to create multiple command+-- buffers. If the creation of any of those command buffers fails, the+-- implementation /must/ destroy all successfully created command buffer+-- objects from this command, set all entries of the @pCommandBuffers@+-- array to @NULL@ and return the error.+--+-- When command buffers are first allocated, they are in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pAllocateInfo@ /must/ be a valid pointer to a valid+-- 'CommandBufferAllocateInfo' structure+--+-- - @pCommandBuffers@ /must/ be a valid pointer to an array of+-- @pAllocateInfo@::commandBufferCount+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handles+--+-- - The value referenced by @pAllocateInfo@::@commandBufferCount@ /must/+-- be greater than @0@+--+-- == Host Synchronization+--+-- - Host access to @pAllocateInfo@::commandPool /must/ be externally+-- synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'CommandBufferAllocateInfo', 'Graphics.Vulkan.Core10.Handles.Device'+allocateCommandBuffers :: Device -> CommandBufferAllocateInfo -> IO (("commandBuffers" ::: Vector CommandBuffer))+allocateCommandBuffers device allocateInfo = evalContT $ do+ let cmds = deviceCmds (device :: Device)+ let vkAllocateCommandBuffers' = mkVkAllocateCommandBuffers (pVkAllocateCommandBuffers cmds)+ pAllocateInfo <- ContT $ withCStruct (allocateInfo)+ pPCommandBuffers <- ContT $ bracket (callocBytes @(Ptr CommandBuffer_T) ((fromIntegral $ commandBufferCount ((allocateInfo) :: CommandBufferAllocateInfo)) * 8)) free+ r <- lift $ vkAllocateCommandBuffers' (deviceHandle (device)) pAllocateInfo (pPCommandBuffers)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pCommandBuffers <- lift $ generateM (fromIntegral $ commandBufferCount ((allocateInfo) :: CommandBufferAllocateInfo)) (\i -> do+ pCommandBuffersElem <- peek @(Ptr CommandBuffer_T) ((pPCommandBuffers `advancePtrBytes` (8 * (i)) :: Ptr (Ptr CommandBuffer_T)))+ pure $ (\h -> CommandBuffer h cmds ) pCommandBuffersElem)+ pure $ (pCommandBuffers)++-- | A safe wrapper for 'allocateCommandBuffers' and 'freeCommandBuffers'+-- using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withCommandBuffers :: Device -> CommandBufferAllocateInfo -> (Vector CommandBuffer -> IO r) -> IO r+withCommandBuffers device commandBufferAllocateInfo =+ bracket+ (allocateCommandBuffers device commandBufferAllocateInfo)+ (\o -> freeCommandBuffers device (commandPool (commandBufferAllocateInfo :: CommandBufferAllocateInfo)) o)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkFreeCommandBuffers+ :: FunPtr (Ptr Device_T -> CommandPool -> Word32 -> Ptr (Ptr CommandBuffer_T) -> IO ()) -> Ptr Device_T -> CommandPool -> Word32 -> Ptr (Ptr CommandBuffer_T) -> IO ()++-- | vkFreeCommandBuffers - Free command buffers+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the command pool.+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandPool' is the command pool+-- from which the command buffers were allocated.+--+-- - @commandBufferCount@ is the length of the @pCommandBuffers@ array.+--+-- - @pCommandBuffers@ is a pointer to an array of handles of command+-- buffers to free.+--+-- = Description+--+-- Any primary command buffer that is in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording or executable state>+-- and has any element of @pCommandBuffers@ recorded into it, becomes+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.+--+-- == Valid Usage+--+-- - All elements of @pCommandBuffers@ /must/ not be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>+--+-- - @pCommandBuffers@ /must/ be a valid pointer to an array of+-- @commandBufferCount@ 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+-- handles, each element of which /must/ either be a valid handle or+-- @NULL@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandPool' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandPool' handle+--+-- - @commandBufferCount@ /must/ be greater than @0@+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandPool' /must/ have been+-- created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- - Each element of @pCommandBuffers@ that is a valid handle /must/ have+-- been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.CommandPool'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandPool' /must/+-- be externally synchronized+--+-- - Host access to each member of @pCommandBuffers@ /must/ be externally+-- synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandPool',+-- 'Graphics.Vulkan.Core10.Handles.Device'+freeCommandBuffers :: Device -> CommandPool -> ("commandBuffers" ::: Vector CommandBuffer) -> IO ()+freeCommandBuffers device commandPool commandBuffers = evalContT $ do+ let vkFreeCommandBuffers' = mkVkFreeCommandBuffers (pVkFreeCommandBuffers (deviceCmds (device :: Device)))+ pPCommandBuffers <- ContT $ allocaBytesAligned @(Ptr CommandBuffer_T) ((Data.Vector.length (commandBuffers)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPCommandBuffers `plusPtr` (8 * (i)) :: Ptr (Ptr CommandBuffer_T)) (commandBufferHandle (e))) (commandBuffers)+ lift $ vkFreeCommandBuffers' (deviceHandle (device)) (commandPool) ((fromIntegral (Data.Vector.length $ (commandBuffers)) :: Word32)) (pPCommandBuffers)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkBeginCommandBuffer+ :: FunPtr (Ptr CommandBuffer_T -> Ptr (CommandBufferBeginInfo a) -> IO Result) -> Ptr CommandBuffer_T -> Ptr (CommandBufferBeginInfo a) -> IO Result++-- | vkBeginCommandBuffer - Start recording a command buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the handle of the+-- command buffer which is to be put in the recording state.+--+-- - @pBeginInfo@ points to a 'CommandBufferBeginInfo' structure defining+-- additional information about how the command buffer begins+-- recording.+--+-- == Valid Usage+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ not be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording or pending state>+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- a 'Graphics.Vulkan.Core10.Handles.CommandPool' which did not have+-- the+-- 'Graphics.Vulkan.Core10.Enums.CommandPoolCreateFlagBits.COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT'+-- flag set, 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be+-- in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a secondary+-- command buffer, the @pInheritanceInfo@ member of @pBeginInfo@ /must/+-- be a valid 'CommandBufferInheritanceInfo' structure+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a secondary+-- command buffer and either the @occlusionQueryEnable@ member of the+-- @pInheritanceInfo@ member of @pBeginInfo@ is+-- 'Graphics.Vulkan.Core10.BaseType.FALSE', or the precise occlusion+-- queries feature is not enabled, the @queryFlags@ member of the+-- @pInheritanceInfo@ member @pBeginInfo@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT'+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a primary+-- command buffer, then @pBeginInfo->flags@ /must/ not set both the+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT'+-- and the+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'+-- flags+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pBeginInfo@ /must/ be a valid pointer to a valid+-- 'CommandBufferBeginInfo' structure+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', 'CommandBufferBeginInfo'+beginCommandBuffer :: PokeChain a => CommandBuffer -> CommandBufferBeginInfo a -> IO ()+beginCommandBuffer commandBuffer beginInfo = evalContT $ do+ let vkBeginCommandBuffer' = mkVkBeginCommandBuffer (pVkBeginCommandBuffer (deviceCmds (commandBuffer :: CommandBuffer)))+ pBeginInfo <- ContT $ withCStruct (beginInfo)+ r <- lift $ vkBeginCommandBuffer' (commandBufferHandle (commandBuffer)) pBeginInfo+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))++-- | A safe wrapper for 'beginCommandBuffer' and 'endCommandBuffer' using+-- 'bracket_'+--+-- The allocated value must not be returned from the provided computation+useCommandBuffer :: PokeChain a => CommandBuffer -> CommandBufferBeginInfo a -> IO r -> IO r+useCommandBuffer commandBuffer commandBufferBeginInfo =+ bracket_+ (beginCommandBuffer commandBuffer commandBufferBeginInfo)+ ( endCommandBuffer commandBuffer)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkEndCommandBuffer+ :: FunPtr (Ptr CommandBuffer_T -> IO Result) -> Ptr CommandBuffer_T -> IO Result++-- | vkEndCommandBuffer - Finish recording a command buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- to complete recording.+--+-- = Description+--+-- If there was an error during recording, the application will be notified+-- by an unsuccessful return code returned by 'endCommandBuffer'. If the+-- application wishes to further use the command buffer, the command buffer+-- /must/ be reset. The command buffer /must/ have been in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>,+-- and is moved to the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle executable state>.+--+-- == Valid Usage+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>.+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a primary+-- command buffer, there /must/ not be an active render pass instance+--+-- - All queries made+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>+-- during the recording of+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ have been made+-- inactive+--+-- - Conditional rendering must not be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-rendering active>+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a secondary+-- command buffer, there /must/ not be an outstanding+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.cmdBeginDebugUtilsLabelEXT'+-- command recorded to 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+-- that has not previously been ended by a call to+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.cmdEndDebugUtilsLabelEXT'.+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a secondary+-- command buffer, there /must/ not be an outstanding+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerBeginEXT'+-- command recorded to 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+-- that has not previously been ended by a call to+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerEndEXT'.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+endCommandBuffer :: CommandBuffer -> IO ()+endCommandBuffer commandBuffer = do+ let vkEndCommandBuffer' = mkVkEndCommandBuffer (pVkEndCommandBuffer (deviceCmds (commandBuffer :: CommandBuffer)))+ r <- vkEndCommandBuffer' (commandBufferHandle (commandBuffer))+ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkResetCommandBuffer+ :: FunPtr (Ptr CommandBuffer_T -> CommandBufferResetFlags -> IO Result) -> Ptr CommandBuffer_T -> CommandBufferResetFlags -> IO Result++-- | vkResetCommandBuffer - Reset a command buffer to the initial state+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- to reset. The command buffer /can/ be in any state other than+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending>,+-- and is moved into the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>.+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferResetFlagBits.CommandBufferResetFlagBits'+-- controlling the reset operation.+--+-- = Description+--+-- Any primary command buffer that is in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording or executable state>+-- and has 'Graphics.Vulkan.Core10.Handles.CommandBuffer' recorded into it,+-- becomes+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.+--+-- == Valid Usage+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ not be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ have been+-- allocated from a pool that was created with the+-- 'Graphics.Vulkan.Core10.Enums.CommandPoolCreateFlagBits.COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferResetFlagBits.CommandBufferResetFlagBits'+-- values+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferResetFlagBits.CommandBufferResetFlags'+resetCommandBuffer :: CommandBuffer -> CommandBufferResetFlags -> IO ()+resetCommandBuffer commandBuffer flags = do+ let vkResetCommandBuffer' = mkVkResetCommandBuffer (pVkResetCommandBuffer (deviceCmds (commandBuffer :: CommandBuffer)))+ r <- vkResetCommandBuffer' (commandBufferHandle (commandBuffer)) (flags)+ when (r < SUCCESS) (throwIO (VulkanException r))+++-- | VkCommandBufferAllocateInfo - Structure specifying the allocation+-- parameters for command buffer object+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferLevel.CommandBufferLevel',+-- 'Graphics.Vulkan.Core10.Handles.CommandPool',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'allocateCommandBuffers'+data CommandBufferAllocateInfo = CommandBufferAllocateInfo+ { -- | 'Graphics.Vulkan.Core10.Handles.CommandPool' /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Handles.CommandPool' handle+ commandPool :: CommandPool+ , -- | @level@ /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Enums.CommandBufferLevel.CommandBufferLevel'+ -- value+ level :: CommandBufferLevel+ , -- | @commandBufferCount@ /must/ be greater than @0@+ commandBufferCount :: Word32+ }+ deriving (Typeable)+deriving instance Show CommandBufferAllocateInfo++instance ToCStruct CommandBufferAllocateInfo where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p CommandBufferAllocateInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr CommandPool)) (commandPool)+ poke ((p `plusPtr` 24 :: Ptr CommandBufferLevel)) (level)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (commandBufferCount)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr CommandPool)) (zero)+ poke ((p `plusPtr` 24 :: Ptr CommandBufferLevel)) (zero)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+ f++instance FromCStruct CommandBufferAllocateInfo where+ peekCStruct p = do+ commandPool <- peek @CommandPool ((p `plusPtr` 16 :: Ptr CommandPool))+ level <- peek @CommandBufferLevel ((p `plusPtr` 24 :: Ptr CommandBufferLevel))+ commandBufferCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+ pure $ CommandBufferAllocateInfo+ commandPool level commandBufferCount++instance Storable CommandBufferAllocateInfo where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero CommandBufferAllocateInfo where+ zero = CommandBufferAllocateInfo+ zero+ zero+ zero+++-- | VkCommandBufferInheritanceInfo - Structure specifying command buffer+-- inheritance info+--+-- == Valid Usage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueries inherited queries>+-- feature is not enabled, @occlusionQueryEnable@ /must/ be+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueries inherited queries>+-- feature is enabled, @queryFlags@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlagBits'+-- values+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueries inherited queries>+-- feature is not enabled, @queryFlags@ /must/ be @0@+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineStatisticsQuery pipeline statistics queries>+-- feature is enabled, @pipelineStatistics@ /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlagBits'+-- values+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineStatisticsQuery pipeline statistics queries>+-- feature is not enabled, @pipelineStatistics@ /must/ be @0@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT'+-- or+-- 'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.Framebuffer', and+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' that are valid handles+-- of non-ignored parameters /must/ have been created, allocated, or+-- retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32', 'CommandBufferBeginInfo',+-- 'Graphics.Vulkan.Core10.Handles.Framebuffer',+-- 'Graphics.Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlags',+-- 'Graphics.Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlags',+-- 'Graphics.Vulkan.Core10.Handles.RenderPass',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data CommandBufferInheritanceInfo (es :: [Type]) = CommandBufferInheritanceInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.Handles.RenderPass' is a+ -- 'Graphics.Vulkan.Core10.Handles.RenderPass' object defining which render+ -- passes the 'Graphics.Vulkan.Core10.Handles.CommandBuffer' will be+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>+ -- with and /can/ be executed within. If the+ -- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' will not be executed+ -- within a render pass instance,+ -- 'Graphics.Vulkan.Core10.Handles.RenderPass' is ignored.+ renderPass :: RenderPass+ , -- | @subpass@ is the index of the subpass within the render pass instance+ -- that the 'Graphics.Vulkan.Core10.Handles.CommandBuffer' will be executed+ -- within. If the 'Graphics.Vulkan.Core10.Handles.CommandBuffer' will not+ -- be executed within a render pass instance, @subpass@ is ignored.+ subpass :: Word32+ , -- | 'Graphics.Vulkan.Core10.Handles.Framebuffer' optionally refers to the+ -- 'Graphics.Vulkan.Core10.Handles.Framebuffer' object that the+ -- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' will be rendering to if+ -- it is executed within a render pass instance. It /can/ be+ -- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' if the framebuffer is+ -- not known, or if the 'Graphics.Vulkan.Core10.Handles.CommandBuffer' will+ -- not be executed within a render pass instance.+ --+ -- Note+ --+ -- Specifying the exact framebuffer that the secondary command buffer will+ -- be executed with /may/ result in better performance at command buffer+ -- execution time.+ framebuffer :: Framebuffer+ , -- | @occlusionQueryEnable@ specifies whether the command buffer /can/ be+ -- executed while an occlusion query is active in the primary command+ -- buffer. If this is 'Graphics.Vulkan.Core10.BaseType.TRUE', then this+ -- command buffer /can/ be executed whether the primary command buffer has+ -- an occlusion query active or not. If this is+ -- 'Graphics.Vulkan.Core10.BaseType.FALSE', then the primary command buffer+ -- /must/ not have an occlusion query active.+ occlusionQueryEnable :: Bool+ , -- | @queryFlags@ specifies the query flags that /can/ be used by an active+ -- occlusion query in the primary command buffer when this secondary+ -- command buffer is executed. If this value includes the+ -- 'Graphics.Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT'+ -- bit, then the active query /can/ return boolean results or actual sample+ -- counts. If this bit is not set, then the active query /must/ not use the+ -- 'Graphics.Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT'+ -- bit.+ queryFlags :: QueryControlFlags+ , -- | @pipelineStatistics@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlagBits'+ -- specifying the set of pipeline statistics that /can/ be counted by an+ -- active query in the primary command buffer when this secondary command+ -- buffer is executed. If this value includes a given bit, then this+ -- command buffer /can/ be executed whether the primary command buffer has+ -- a pipeline statistics query active that includes this bit or not. If+ -- this value excludes a given bit, then the active pipeline statistics+ -- query /must/ not be from a query pool that counts that statistic.+ pipelineStatistics :: QueryPipelineStatisticFlags+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (CommandBufferInheritanceInfo es)++instance Extensible CommandBufferInheritanceInfo where+ extensibleType = STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO+ setNext x next = x{next = next}+ getNext CommandBufferInheritanceInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends CommandBufferInheritanceInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @CommandBufferInheritanceRenderPassTransformInfoQCOM = Just f+ | Just Refl <- eqT @e @CommandBufferInheritanceConditionalRenderingInfoEXT = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (CommandBufferInheritanceInfo es) where+ withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p CommandBufferInheritanceInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr RenderPass)) (renderPass)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (subpass)+ lift $ poke ((p `plusPtr` 32 :: Ptr Framebuffer)) (framebuffer)+ lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (occlusionQueryEnable))+ lift $ poke ((p `plusPtr` 44 :: Ptr QueryControlFlags)) (queryFlags)+ lift $ poke ((p `plusPtr` 48 :: Ptr QueryPipelineStatisticFlags)) (pipelineStatistics)+ lift $ f+ cStructSize = 56+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ f++instance PeekChain es => FromCStruct (CommandBufferInheritanceInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ renderPass <- peek @RenderPass ((p `plusPtr` 16 :: Ptr RenderPass))+ subpass <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ framebuffer <- peek @Framebuffer ((p `plusPtr` 32 :: Ptr Framebuffer))+ occlusionQueryEnable <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))+ queryFlags <- peek @QueryControlFlags ((p `plusPtr` 44 :: Ptr QueryControlFlags))+ pipelineStatistics <- peek @QueryPipelineStatisticFlags ((p `plusPtr` 48 :: Ptr QueryPipelineStatisticFlags))+ pure $ CommandBufferInheritanceInfo+ next renderPass subpass framebuffer (bool32ToBool occlusionQueryEnable) queryFlags pipelineStatistics++instance es ~ '[] => Zero (CommandBufferInheritanceInfo es) where+ zero = CommandBufferInheritanceInfo+ ()+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkCommandBufferBeginInfo - Structure specifying a command buffer begin+-- operation+--+-- == Valid Usage+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT',+-- the 'Graphics.Vulkan.Core10.Handles.RenderPass' member of+-- @pInheritanceInfo@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.RenderPass'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT',+-- the @subpass@ member of @pInheritanceInfo@ /must/ be a valid subpass+-- index within the 'Graphics.Vulkan.Core10.Handles.RenderPass' member+-- of @pInheritanceInfo@+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT',+-- the 'Graphics.Vulkan.Core10.Handles.Framebuffer' member of+-- @pInheritanceInfo@ /must/ be either+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', or a valid+-- 'Graphics.Vulkan.Core10.Handles.Framebuffer' that is compatible with+-- the 'Graphics.Vulkan.Core10.Handles.RenderPass' member of+-- @pInheritanceInfo@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupCommandBufferBeginInfo'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits.CommandBufferUsageFlagBits'+-- values+--+-- = See Also+--+-- 'CommandBufferInheritanceInfo',+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits.CommandBufferUsageFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'beginCommandBuffer'+data CommandBufferBeginInfo (es :: [Type]) = CommandBufferBeginInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits.CommandBufferUsageFlagBits'+ -- specifying usage behavior for the command buffer.+ flags :: CommandBufferUsageFlags+ , -- | @pInheritanceInfo@ is a pointer to a 'CommandBufferInheritanceInfo'+ -- structure, used if 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a+ -- secondary command buffer. If this is a primary command buffer, then this+ -- value is ignored.+ inheritanceInfo :: Maybe (SomeStruct CommandBufferInheritanceInfo)+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (CommandBufferBeginInfo es)++instance Extensible CommandBufferBeginInfo where+ extensibleType = STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO+ setNext x next = x{next = next}+ getNext CommandBufferBeginInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends CommandBufferBeginInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @DeviceGroupCommandBufferBeginInfo = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (CommandBufferBeginInfo es) where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p CommandBufferBeginInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr CommandBufferUsageFlags)) (flags)+ pInheritanceInfo'' <- case (inheritanceInfo) of+ Nothing -> pure nullPtr+ Just j -> ContT @_ @_ @(Ptr (CommandBufferInheritanceInfo '[])) $ \cont -> withSomeCStruct @CommandBufferInheritanceInfo (j) (cont . castPtr)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (CommandBufferInheritanceInfo _)))) pInheritanceInfo''+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ f++instance PeekChain es => FromCStruct (CommandBufferBeginInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @CommandBufferUsageFlags ((p `plusPtr` 16 :: Ptr CommandBufferUsageFlags))+ pInheritanceInfo <- peek @(Ptr (CommandBufferInheritanceInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (CommandBufferInheritanceInfo a))))+ pInheritanceInfo' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pInheritanceInfo+ pure $ CommandBufferBeginInfo+ next flags pInheritanceInfo'++instance es ~ '[] => Zero (CommandBufferBeginInfo es) where+ zero = CommandBufferBeginInfo+ ()+ zero+ Nothing+
+ src/Graphics/Vulkan/Core10/CommandBuffer.hs-boot view
@@ -0,0 +1,37 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.CommandBuffer ( CommandBufferAllocateInfo+ , CommandBufferBeginInfo+ , CommandBufferInheritanceInfo+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+data CommandBufferAllocateInfo++instance ToCStruct CommandBufferAllocateInfo+instance Show CommandBufferAllocateInfo++instance FromCStruct CommandBufferAllocateInfo+++type role CommandBufferBeginInfo nominal+data CommandBufferBeginInfo (es :: [Type])++instance PokeChain es => ToCStruct (CommandBufferBeginInfo es)+instance Show (Chain es) => Show (CommandBufferBeginInfo es)++instance PeekChain es => FromCStruct (CommandBufferBeginInfo es)+++type role CommandBufferInheritanceInfo nominal+data CommandBufferInheritanceInfo (es :: [Type])++instance PokeChain es => ToCStruct (CommandBufferInheritanceInfo es)+instance Show (Chain es) => Show (CommandBufferInheritanceInfo es)++instance PeekChain es => FromCStruct (CommandBufferInheritanceInfo es)+
src/Graphics/Vulkan/Core10/CommandBufferBuilding.hs view
@@ -1,7981 +1,9843 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}-{-# language LambdaCase #-}--module Graphics.Vulkan.Core10.CommandBufferBuilding- ( VkIndexType(..)- , pattern VK_INDEX_TYPE_UINT16- , pattern VK_INDEX_TYPE_UINT32- , VkSubpassContents(..)- , pattern VK_SUBPASS_CONTENTS_INLINE- , pattern VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS- , VkStencilFaceFlagBits(..)- , pattern VK_STENCIL_FACE_FRONT_BIT- , pattern VK_STENCIL_FACE_BACK_BIT- , pattern VK_STENCIL_FRONT_AND_BACK- , vkCmdBindPipeline- , vkCmdSetViewport- , vkCmdSetScissor- , vkCmdSetLineWidth- , vkCmdSetDepthBias- , vkCmdSetBlendConstants- , vkCmdSetDepthBounds- , vkCmdSetStencilCompareMask- , vkCmdSetStencilWriteMask- , vkCmdSetStencilReference- , vkCmdBindDescriptorSets- , vkCmdBindIndexBuffer- , vkCmdBindVertexBuffers- , vkCmdDraw- , vkCmdDrawIndexed- , vkCmdDrawIndirect- , vkCmdDrawIndexedIndirect- , vkCmdDispatch- , vkCmdDispatchIndirect- , vkCmdCopyBuffer- , vkCmdCopyImage- , vkCmdBlitImage- , vkCmdCopyBufferToImage- , vkCmdCopyImageToBuffer- , vkCmdUpdateBuffer- , vkCmdFillBuffer- , vkCmdClearColorImage- , vkCmdClearDepthStencilImage- , vkCmdClearAttachments- , vkCmdResolveImage- , vkCmdSetEvent- , vkCmdResetEvent- , vkCmdWaitEvents- , vkCmdPipelineBarrier- , vkCmdBeginQuery- , vkCmdEndQuery- , vkCmdResetQueryPool- , vkCmdWriteTimestamp- , vkCmdCopyQueryPoolResults- , vkCmdPushConstants- , vkCmdBeginRenderPass- , vkCmdNextSubpass- , vkCmdEndRenderPass- , vkCmdExecuteCommands- , VkClearRect(..)- , VkImageSubresourceLayers(..)- , VkMemoryBarrier(..)- , VkBufferMemoryBarrier(..)- , VkImageMemoryBarrier(..)- , VkBufferCopy(..)- , VkImageCopy(..)- , VkImageBlit(..)- , VkBufferImageCopy(..)- , VkImageResolve(..)- , VkRenderPassBeginInfo(..)- , VkClearDepthStencilValue(..)- , VkClearAttachment(..)- , VkDrawIndirectCommand(..)- , VkDrawIndexedIndirectCommand(..)- , VkDispatchIndirectCommand(..)- , VkClearColorValue(..)- , VkClearValue(..)- , VkStencilFaceFlags- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Int- ( Int32- )-import Data.Vector.Storable.Sized- ( Vector- )-import Data.Word- ( Word32- )-import Foreign.C.Types- ( CFloat(..)- )-import Foreign.Ptr- ( Ptr- , castPtr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.CommandBuffer- ( VkQueryControlFlagBits(..)- , VkQueryControlFlags- )-import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DescriptorSet- ( VkDescriptorSet- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkExtent3D(..)- , VkDeviceSize- )-import Graphics.Vulkan.Core10.Event- ( VkEvent- )-import Graphics.Vulkan.Core10.Image- ( VkImageLayout(..)- )-import Graphics.Vulkan.Core10.ImageView- ( VkImageSubresourceRange(..)- )-import Graphics.Vulkan.Core10.MemoryManagement- ( VkBuffer- , VkImage- )-import Graphics.Vulkan.Core10.Pass- ( VkDependencyFlagBits(..)- , VkPipelineBindPoint(..)- , VkAccessFlags- , VkDependencyFlags- , VkFramebuffer- )-import Graphics.Vulkan.Core10.Pipeline- ( VkRect2D(..)- , VkShaderStageFlagBits(..)- , VkViewport(..)- , VkPipeline- , VkPipelineLayout- , VkRenderPass- )-import Graphics.Vulkan.Core10.PipelineLayout- ( VkShaderStageFlags- )-import Graphics.Vulkan.Core10.Query- ( VkQueryResultFlagBits(..)- , VkQueryPool- , VkQueryResultFlags- )-import Graphics.Vulkan.Core10.Queue- ( VkPipelineStageFlagBits(..)- , VkCommandBuffer- , VkPipelineStageFlags- )-import Graphics.Vulkan.Core10.Sampler- ( VkFilter(..)- )-import Graphics.Vulkan.Core10.SparseResourceMemoryManagement- ( VkOffset3D(..)- , VkImageAspectFlags- )----- ** VkIndexType---- | VkIndexType - Type of index buffer indices------ = See Also------ 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTableIndexBufferEntryNVX',--- 'vkCmdBindIndexBuffer'-newtype VkIndexType = VkIndexType Int32- deriving (Eq, Ord, Storable)--instance Show VkIndexType where- showsPrec _ VK_INDEX_TYPE_UINT16 = showString "VK_INDEX_TYPE_UINT16"- showsPrec _ VK_INDEX_TYPE_UINT32 = showString "VK_INDEX_TYPE_UINT32"- showsPrec p (VkIndexType x) = showParen (p >= 11) (showString "VkIndexType " . showsPrec 11 x)--instance Read VkIndexType where- readPrec = parens ( choose [ ("VK_INDEX_TYPE_UINT16", pure VK_INDEX_TYPE_UINT16)- , ("VK_INDEX_TYPE_UINT32", pure VK_INDEX_TYPE_UINT32)- ] +++- prec 10 (do- expectP (Ident "VkIndexType")- v <- step readPrec- pure (VkIndexType v)- )- )---- | @VK_INDEX_TYPE_UINT16@ specifies that indices are 16-bit unsigned--- integer values.-pattern VK_INDEX_TYPE_UINT16 :: VkIndexType-pattern VK_INDEX_TYPE_UINT16 = VkIndexType 0---- | @VK_INDEX_TYPE_UINT32@ specifies that indices are 32-bit unsigned--- integer values.-pattern VK_INDEX_TYPE_UINT32 :: VkIndexType-pattern VK_INDEX_TYPE_UINT32 = VkIndexType 1--- ** VkSubpassContents---- | VkSubpassContents - Specify how commands in the first subpass of a--- render pass are provided------ = See Also------ 'vkCmdBeginRenderPass', 'vkCmdNextSubpass'-newtype VkSubpassContents = VkSubpassContents Int32- deriving (Eq, Ord, Storable)--instance Show VkSubpassContents where- showsPrec _ VK_SUBPASS_CONTENTS_INLINE = showString "VK_SUBPASS_CONTENTS_INLINE"- showsPrec _ VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = showString "VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS"- showsPrec p (VkSubpassContents x) = showParen (p >= 11) (showString "VkSubpassContents " . showsPrec 11 x)--instance Read VkSubpassContents where- readPrec = parens ( choose [ ("VK_SUBPASS_CONTENTS_INLINE", pure VK_SUBPASS_CONTENTS_INLINE)- , ("VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS", pure VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS)- ] +++- prec 10 (do- expectP (Ident "VkSubpassContents")- v <- step readPrec- pure (VkSubpassContents v)- )- )---- | @VK_SUBPASS_CONTENTS_INLINE@ specifies that the contents of the subpass--- will be recorded inline in the primary command buffer, and secondary--- command buffers /must/ not be executed within the subpass.-pattern VK_SUBPASS_CONTENTS_INLINE :: VkSubpassContents-pattern VK_SUBPASS_CONTENTS_INLINE = VkSubpassContents 0---- | @VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS@ specifies that the--- contents are recorded in secondary command buffers that will be called--- from the primary command buffer, and 'vkCmdExecuteCommands' is the only--- valid command on the command buffer until 'vkCmdNextSubpass' or--- 'vkCmdEndRenderPass'.-pattern VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS :: VkSubpassContents-pattern VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = VkSubpassContents 1--- ** VkStencilFaceFlagBits---- | VkStencilFaceFlagBits - Bitmask specifying sets of stencil state for--- which to update the compare mask------ = See Also------ 'VkStencilFaceFlags'-newtype VkStencilFaceFlagBits = VkStencilFaceFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkStencilFaceFlagBits where- showsPrec _ VK_STENCIL_FACE_FRONT_BIT = showString "VK_STENCIL_FACE_FRONT_BIT"- showsPrec _ VK_STENCIL_FACE_BACK_BIT = showString "VK_STENCIL_FACE_BACK_BIT"- showsPrec _ VK_STENCIL_FRONT_AND_BACK = showString "VK_STENCIL_FRONT_AND_BACK"- showsPrec p (VkStencilFaceFlagBits x) = showParen (p >= 11) (showString "VkStencilFaceFlagBits " . showsPrec 11 x)--instance Read VkStencilFaceFlagBits where- readPrec = parens ( choose [ ("VK_STENCIL_FACE_FRONT_BIT", pure VK_STENCIL_FACE_FRONT_BIT)- , ("VK_STENCIL_FACE_BACK_BIT", pure VK_STENCIL_FACE_BACK_BIT)- , ("VK_STENCIL_FRONT_AND_BACK", pure VK_STENCIL_FRONT_AND_BACK)- ] +++- prec 10 (do- expectP (Ident "VkStencilFaceFlagBits")- v <- step readPrec- pure (VkStencilFaceFlagBits v)- )- )---- | @VK_STENCIL_FACE_FRONT_BIT@ specifies that only the front set of stencil--- state is updated.-pattern VK_STENCIL_FACE_FRONT_BIT :: VkStencilFaceFlagBits-pattern VK_STENCIL_FACE_FRONT_BIT = VkStencilFaceFlagBits 0x00000001---- | @VK_STENCIL_FACE_BACK_BIT@ specifies that only the back set of stencil--- state is updated.-pattern VK_STENCIL_FACE_BACK_BIT :: VkStencilFaceFlagBits-pattern VK_STENCIL_FACE_BACK_BIT = VkStencilFaceFlagBits 0x00000002---- | @VK_STENCIL_FRONT_AND_BACK@ is the combination of--- @VK_STENCIL_FACE_FRONT_BIT@ and @VK_STENCIL_FACE_BACK_BIT@, and--- specifies that both sets of stencil state are updated.-pattern VK_STENCIL_FRONT_AND_BACK :: VkStencilFaceFlagBits-pattern VK_STENCIL_FRONT_AND_BACK = VkStencilFaceFlagBits 0x00000003--- | vkCmdBindPipeline - Bind a pipeline object to a command buffer------ = Parameters------ - @commandBuffer@ is the command buffer that the pipeline will be--- bound to.------ - @pipelineBindPoint@ is a--- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint' value specifying--- whether to bind to the compute or graphics bind point. Binding one--- does not disturb the other.------ - @pipeline@ is the pipeline to be bound.------ = Description------ Once bound, a pipeline binding affects subsequent graphics or compute--- commands in the command buffer until a different pipeline is bound to--- the bind point. The pipeline bound to @VK_PIPELINE_BIND_POINT_COMPUTE@--- controls the behavior of 'vkCmdDispatch' and 'vkCmdDispatchIndirect'.--- The pipeline bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ controls the--- behavior of all [drawing--- commands](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#drawing).--- No other commands are affected by the pipeline state.------ == Valid Usage------ - If @pipelineBindPoint@ is @VK_PIPELINE_BIND_POINT_COMPUTE@, the--- @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support compute operations------ - If @pipelineBindPoint@ is @VK_PIPELINE_BIND_POINT_GRAPHICS@, the--- @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - If @pipelineBindPoint@ is @VK_PIPELINE_BIND_POINT_COMPUTE@,--- @pipeline@ /must/ be a compute pipeline------ - If @pipelineBindPoint@ is @VK_PIPELINE_BIND_POINT_GRAPHICS@,--- @pipeline@ /must/ be a graphics pipeline------ - If the [variable multisample--- rate](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-variableMultisampleRate)--- feature is not supported, @pipeline@ is a graphics pipeline, the--- current subpass has no attachments, and this is not the first call--- to this function with a graphics pipeline after transitioning to the--- current subpass, then the sample count specified by this pipeline--- /must/ match that set in the previous pipeline------ - If--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPhysicalDeviceSampleLocationsPropertiesEXT'::@variableSampleLocations@--- is @VK_FALSE@, and @pipeline@ is a graphics pipeline created with a--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'--- structure having its @sampleLocationsEnable@ member set to @VK_TRUE@--- but without @VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT@ enabled then the--- current render pass instance /must/ have been begun by specifying a--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkRenderPassSampleLocationsBeginInfoEXT'--- structure whose @pPostSubpassSampleLocations@ member contains an--- element with a @subpassIndex@ matching the current subpass index and--- the @sampleLocationsInfo@ member of that element /must/ match the--- @sampleLocationsInfo@ specified in--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'--- when the pipeline was created------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pipelineBindPoint@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint' value------ - @pipeline@ /must/ be a valid @VkPipeline@ handle------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - Both of @commandBuffer@, and @pipeline@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipeline',--- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdBindPipeline" vkCmdBindPipeline :: ("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("pipeline" ::: VkPipeline) -> IO ()--- | vkCmdSetViewport - Set the viewport on a command buffer------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @firstViewport@ is the index of the first viewport whose parameters--- are updated by the command.------ - @viewportCount@ is the number of viewports whose parameters are--- updated by the command.------ - @pViewports@ is a pointer to an array of--- 'Graphics.Vulkan.Core10.Pipeline.VkViewport' structures specifying--- viewport parameters.------ = Description------ The viewport parameters taken from element i of @pViewports@ replace the--- current state for the viewport index @firstViewport@ + i, for i in [0,--- @viewportCount@).------ == Valid Usage------ - The bound graphics pipeline /must/ have been created with the--- @VK_DYNAMIC_STATE_VIEWPORT@ dynamic state enabled------ - @firstViewport@ /must/ be less than--- @VkPhysicalDeviceLimits@::@maxViewports@------ - The sum of @firstViewport@ and @viewportCount@ /must/ be between @1@--- and @VkPhysicalDeviceLimits@::@maxViewports@, inclusive------ - If the [multiple--- viewports](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiViewport)--- feature is not enabled, @firstViewport@ /must/ be @0@------ - If the [multiple--- viewports](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiViewport)--- feature is not enabled, @viewportCount@ /must/ be @1@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pViewports@ /must/ be a valid pointer to an array of--- @viewportCount@ @VkViewport@ structures------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - @viewportCount@ /must/ be greater than @0@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Pipeline.VkViewport'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdSetViewport" vkCmdSetViewport :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr VkViewport) -> IO ()--- | vkCmdSetScissor - Set the dynamic scissor rectangles on a command buffer------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @firstScissor@ is the index of the first scissor whose state is--- updated by the command.------ - @scissorCount@ is the number of scissors whose rectangles are--- updated by the command.------ - @pScissors@ is a pointer to an array of--- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D' structures defining--- scissor rectangles.------ = Description------ The scissor rectangles taken from element i of @pScissors@ replace the--- current state for the scissor index @firstScissor@ + i, for i in [0,--- @scissorCount@).------ Each scissor rectangle is described by a--- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D' structure, with the--- @offset.x@ and @offset.y@ values determining the upper left corner of--- the scissor rectangle, and the @extent.width@ and @extent.height@ values--- determining the size in pixels.------ == Valid Usage------ - The bound graphics pipeline /must/ have been created with the--- @VK_DYNAMIC_STATE_SCISSOR@ dynamic state enabled------ - @firstScissor@ /must/ be less than--- @VkPhysicalDeviceLimits@::@maxViewports@------ - The sum of @firstScissor@ and @scissorCount@ /must/ be between @1@--- and @VkPhysicalDeviceLimits@::@maxViewports@, inclusive------ - If the [multiple--- viewports](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiViewport)--- feature is not enabled, @firstScissor@ /must/ be @0@------ - If the [multiple--- viewports](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiViewport)--- feature is not enabled, @scissorCount@ /must/ be @1@------ - The @x@ and @y@ members of @offset@ /must/ be greater than or equal--- to @0@------ - Evaluation of (@offset.x@ + @extent.width@) /must/ not cause a--- signed integer addition overflow------ - Evaluation of (@offset.y@ + @extent.height@) /must/ not cause a--- signed integer addition overflow------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pScissors@ /must/ be a valid pointer to an array of @scissorCount@--- @VkRect2D@ structures------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - @scissorCount@ /must/ be greater than @0@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdSetScissor" vkCmdSetScissor :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstScissor" ::: Word32) -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr VkRect2D) -> IO ()--- | vkCmdSetLineWidth - Set the dynamic line width state------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @lineWidth@ is the width of rasterized line segments.------ == Valid Usage------ - The bound graphics pipeline /must/ have been created with the--- @VK_DYNAMIC_STATE_LINE_WIDTH@ dynamic state enabled------ - If the [wide--- lines](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-wideLines)--- feature is not enabled, @lineWidth@ /must/ be @1.0@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdSetLineWidth" vkCmdSetLineWidth :: ("commandBuffer" ::: VkCommandBuffer) -> ("lineWidth" ::: CFloat) -> IO ()--- | vkCmdSetDepthBias - Set the depth bias dynamic state------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @depthBiasConstantFactor@ is a scalar factor controlling the--- constant depth value added to each fragment.------ - @depthBiasClamp@ is the maximum (or minimum) depth bias of a--- fragment.------ - @depthBiasSlopeFactor@ is a scalar factor applied to a fragment’s--- slope in depth bias calculations.------ = Description------ If @depthBiasEnable@ is @VK_FALSE@, no depth bias is applied and the--- fragment’s depth values are unchanged.------ @depthBiasSlopeFactor@ scales the maximum depth slope of the polygon,--- and @depthBiasConstantFactor@ scales an implementation-dependent--- constant that relates to the usable resolution of the depth buffer. The--- resulting values are summed to produce the depth bias value which is--- then clamped to a minimum or maximum value specified by--- @depthBiasClamp@. @depthBiasSlopeFactor@, @depthBiasConstantFactor@, and--- @depthBiasClamp@ /can/ each be positive, negative, or zero.------ The maximum depth slope m of a triangle is------ \[m = \sqrt{ \left({{\partial z_f} \over {\partial x_f}}\right)^2--- + \left({{\partial z_f} \over {\partial y_f}}\right)^2}\]------ where (xf, yf, zf) is a point on the triangle. m /may/ be approximated--- as------ \[m = \max\left( \left| { {\partial z_f} \over {\partial x_f} } \right|,--- \left| { {\partial z_f} \over {\partial y_f} } \right|--- \right).\]------ The minimum resolvable difference r is an implementation-dependent--- parameter that depends on the depth buffer representation. It is the--- smallest difference in framebuffer coordinate z values that is--- guaranteed to remain distinct throughout polygon rasterization and in--- the depth buffer. All pairs of fragments generated by the rasterization--- of two polygons with otherwise identical vertices, but @z@f values that--- differ by $r$, will have distinct depth values.------ For fixed-point depth buffer representations, r is constant throughout--- the range of the entire depth buffer. For floating-point depth buffers,--- there is no single minimum resolvable difference. In this case, the--- minimum resolvable difference for a given polygon is dependent on the--- maximum exponent, e, in the range of z values spanned by the primitive.--- If n is the number of bits in the floating-point mantissa, the minimum--- resolvable difference, r, for the given primitive is defined as------ - r = 2e-n------ If a triangle is rasterized using the--- @VK_POLYGON_MODE_FILL_RECTANGLE_NV@ polygon mode, then this minimum--- resolvable difference /may/ not be resolvable for samples outside of the--- triangle, where the depth is extrapolated.------ If no depth buffer is present, r is undefined.------ The bias value o for a polygon is------ \[o =--- \begin{cases}--- m \times depthBiasSlopeFactor +--- r \times depthBiasConstantFactor & depthBiasClamp = 0\ or\ NaN \\--- \min(m \times depthBiasSlopeFactor +--- r \times depthBiasConstantFactor,--- depthBiasClamp) & depthBiasClamp > 0 \\--- \max(m \times depthBiasSlopeFactor +--- r \times depthBiasConstantFactor,--- depthBiasClamp) & depthBiasClamp < 0 \\--- \end{cases}\]------ m is computed as described above. If the depth buffer uses a fixed-point--- representation, m is a function of depth values in the range [0,1], and--- o is applied to depth values in the same range.------ For fixed-point depth buffers, fragment depth values are always limited--- to the range [0,1] by clamping after depth bias addition is performed.--- Unless the @{html_spec_relative}#VK_EXT_depth_range_unrestricted@--- extension is enabled, fragment depth values are clamped even when the--- depth buffer uses a floating-point representation.------ == Valid Usage------ - The bound graphics pipeline /must/ have been created with the--- @VK_DYNAMIC_STATE_DEPTH_BIAS@ dynamic state enabled------ - If the [depth bias--- clamping](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-depthBiasClamp)--- feature is not enabled, @depthBiasClamp@ /must/ be @0.0@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdSetDepthBias" vkCmdSetDepthBias :: ("commandBuffer" ::: VkCommandBuffer) -> ("depthBiasConstantFactor" ::: CFloat) -> ("depthBiasClamp" ::: CFloat) -> ("depthBiasSlopeFactor" ::: CFloat) -> IO ()--- | vkCmdSetBlendConstants - Set the values of blend constants------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @blendConstants@ is an array of four values specifying the R, G, B,--- and A components of the blend constant color used in blending,--- depending on the [blend--- factor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blendfactors).------ == Valid Usage------ - The bound graphics pipeline /must/ have been created with the--- @VK_DYNAMIC_STATE_BLEND_CONSTANTS@ dynamic state enabled------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdSetBlendConstants" vkCmdSetBlendConstants :: ("commandBuffer" ::: VkCommandBuffer) -> ("blendConstants" ::: Ptr CFloat) -> IO ()--- | vkCmdSetDepthBounds - Set the depth bounds test values for a command--- buffer------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @minDepthBounds@ is the lower bound of the range of depth values--- used in the depth bounds test.------ - @maxDepthBounds@ is the upper bound of the range.------ == Valid Usage------ - The bound graphics pipeline /must/ have been created with the--- @VK_DYNAMIC_STATE_DEPTH_BOUNDS@ dynamic state enabled------ - Unless the @{html_spec_relative}#VK_EXT_depth_range_unrestricted@--- extension is enabled @minDepthBounds@ /must/ be between @0.0@ and--- @1.0@, inclusive------ - Unless the @{html_spec_relative}#VK_EXT_depth_range_unrestricted@--- extension is enabled @maxDepthBounds@ /must/ be between @0.0@ and--- @1.0@, inclusive------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdSetDepthBounds" vkCmdSetDepthBounds :: ("commandBuffer" ::: VkCommandBuffer) -> ("minDepthBounds" ::: CFloat) -> ("maxDepthBounds" ::: CFloat) -> IO ()--- | vkCmdSetStencilCompareMask - Set the stencil compare mask dynamic state------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @faceMask@ is a bitmask of 'VkStencilFaceFlagBits' specifying the--- set of stencil state for which to update the compare mask.------ - @compareMask@ is the new value to use as the stencil compare mask.------ == Valid Usage------ - The bound graphics pipeline /must/ have been created with the--- @VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK@ dynamic state enabled------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @faceMask@ /must/ be a valid combination of 'VkStencilFaceFlagBits'--- values------ - @faceMask@ /must/ not be @0@------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkStencilFaceFlags'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdSetStencilCompareMask" vkCmdSetStencilCompareMask :: ("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("compareMask" ::: Word32) -> IO ()--- | vkCmdSetStencilWriteMask - Set the stencil write mask dynamic state------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @faceMask@ is a bitmask of 'VkStencilFaceFlagBits' specifying the--- set of stencil state for which to update the write mask, as--- described above for 'vkCmdSetStencilCompareMask'.------ - @writeMask@ is the new value to use as the stencil write mask.------ == Valid Usage------ - The bound graphics pipeline /must/ have been created with the--- @VK_DYNAMIC_STATE_STENCIL_WRITE_MASK@ dynamic state enabled------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @faceMask@ /must/ be a valid combination of 'VkStencilFaceFlagBits'--- values------ - @faceMask@ /must/ not be @0@------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkStencilFaceFlags'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdSetStencilWriteMask" vkCmdSetStencilWriteMask :: ("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("writeMask" ::: Word32) -> IO ()--- | vkCmdSetStencilReference - Set the stencil reference dynamic state------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @faceMask@ is a bitmask of 'VkStencilFaceFlagBits' specifying the--- set of stencil state for which to update the reference value, as--- described above for 'vkCmdSetStencilCompareMask'.------ - @reference@ is the new value to use as the stencil reference value.------ == Valid Usage------ - The bound graphics pipeline /must/ have been created with the--- @VK_DYNAMIC_STATE_STENCIL_REFERENCE@ dynamic state enabled------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @faceMask@ /must/ be a valid combination of 'VkStencilFaceFlagBits'--- values------ - @faceMask@ /must/ not be @0@------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkStencilFaceFlags'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdSetStencilReference" vkCmdSetStencilReference :: ("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("reference" ::: Word32) -> IO ()--- | vkCmdBindDescriptorSets - Binds descriptor sets to a command buffer------ = Parameters------ - @commandBuffer@ is the command buffer that the descriptor sets will--- be bound to.------ - @pipelineBindPoint@ is a--- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint' indicating whether--- the descriptors will be used by graphics pipelines or compute--- pipelines. There is a separate set of bind points for each of--- graphics and compute, so binding one does not disturb the other.------ - @layout@ is a @VkPipelineLayout@ object used to program the--- bindings.------ - @firstSet@ is the set number of the first descriptor set to be--- bound.------ - @descriptorSetCount@ is the number of elements in the--- @pDescriptorSets@ array.------ - @pDescriptorSets@ is an array of handles to @VkDescriptorSet@--- objects describing the descriptor sets to write to.------ - @dynamicOffsetCount@ is the number of dynamic offsets in the--- @pDynamicOffsets@ array.------ - @pDynamicOffsets@ is a pointer to an array of @uint32_t@ values--- specifying dynamic offsets.------ = Description------ @vkCmdBindDescriptorSets@ causes the sets numbered [@firstSet@..--- @firstSet@+@descriptorSetCount@-1] to use the bindings stored in--- @pDescriptorSets@[0..@descriptorSetCount@-1] for subsequent rendering--- commands (either compute or graphics, according to the--- @pipelineBindPoint@). Any bindings that were previously applied via--- these sets are no longer valid.------ Once bound, a descriptor set affects rendering of subsequent graphics or--- compute commands in the command buffer until a different set is bound to--- the same set number, or else until the set is disturbed as described in--- [Pipeline Layout--- Compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility).------ A compatible descriptor set /must/ be bound for all set numbers that any--- shaders in a pipeline access, at the time that a draw or dispatch--- command is recorded to execute using that pipeline. However, if none of--- the shaders in a pipeline statically use any bindings with a particular--- set number, then no descriptor set need be bound for that set number,--- even if the pipeline layout includes a non-trivial descriptor set layout--- for that set number.------ If any of the sets being bound include dynamic uniform or storage--- buffers, then @pDynamicOffsets@ includes one element for each array--- element in each dynamic descriptor type binding in each set. Values are--- taken from @pDynamicOffsets@ in an order such that all entries for set N--- come before set N+1; within a set, entries are ordered by the binding--- numbers in the descriptor set layouts; and within a binding array,--- elements are in order. @dynamicOffsetCount@ /must/ equal the total--- number of dynamic descriptors in the sets being bound.------ The effective offset used for dynamic uniform and storage buffer--- bindings is the sum of the relative offset taken from @pDynamicOffsets@,--- and the base address of the buffer plus base offset in the descriptor--- set. The length of the dynamic uniform and storage buffer bindings is--- the buffer range as specified in the descriptor set.------ Each of the @pDescriptorSets@ /must/ be compatible with the pipeline--- layout specified by @layout@. The layout used to program the bindings--- /must/ also be compatible with the pipeline used in subsequent graphics--- or compute commands, as defined in the [Pipeline Layout--- Compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)--- section.------ The descriptor set contents bound by a call to @vkCmdBindDescriptorSets@--- /may/ be consumed at the following times:------ - For descriptor bindings created with the--- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ bit set, the--- contents /may/ be consumed when the command buffer is submitted to a--- queue, or during shader execution of the resulting draws and--- dispatches, or any time in between. Otherwise,------ - during host execution of the command, or during shader execution of--- the resulting draws and dispatches, or any time in between.------ Thus, the contents of a descriptor set binding /must/ not be altered--- (overwritten by an update command, or freed) between the first point in--- time that it /may/ be consumed, and and when the command completes--- executing on the queue.------ The contents of @pDynamicOffsets@ are consumed immediately during--- execution of @vkCmdBindDescriptorSets@. Once all pending uses have--- completed, it is legal to update and reuse a descriptor set.------ == Valid Usage------ - Each element of @pDescriptorSets@ /must/ have been allocated with a--- @VkDescriptorSetLayout@ that matches (is the same as, or identically--- defined as) the @VkDescriptorSetLayout@ at set /n/ in @layout@,--- where /n/ is the sum of @firstSet@ and the index into--- @pDescriptorSets@------ - @dynamicOffsetCount@ /must/ be equal to the total number of dynamic--- descriptors in @pDescriptorSets@------ - The sum of @firstSet@ and @descriptorSetCount@ /must/ be less than--- or equal to @VkPipelineLayoutCreateInfo@::@setLayoutCount@ provided--- when @layout@ was created------ - @pipelineBindPoint@ /must/ be supported by the @commandBuffer@’s--- parent @VkCommandPool@’s queue family------ - Each element of @pDynamicOffsets@ /must/ satisfy the required--- alignment for the corresponding descriptor binding’s descriptor type------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pipelineBindPoint@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint' value------ - @layout@ /must/ be a valid @VkPipelineLayout@ handle------ - @pDescriptorSets@ /must/ be a valid pointer to an array of--- @descriptorSetCount@ valid @VkDescriptorSet@ handles------ - If @dynamicOffsetCount@ is not @0@, @pDynamicOffsets@ /must/ be a--- valid pointer to an array of @dynamicOffsetCount@ @uint32_t@ values------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - @descriptorSetCount@ /must/ be greater than @0@------ - Each of @commandBuffer@, @layout@, and the elements of--- @pDescriptorSets@ /must/ have been created, allocated, or retrieved--- from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSet',--- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdBindDescriptorSets" vkCmdBindDescriptorSets :: ("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("firstSet" ::: Word32) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> ("dynamicOffsetCount" ::: Word32) -> ("pDynamicOffsets" ::: Ptr Word32) -> IO ()--- | vkCmdBindIndexBuffer - Bind an index buffer to a command buffer------ = Parameters------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @buffer@ is the buffer being bound.------ - @offset@ is the starting offset in bytes within @buffer@ used in--- index buffer address calculations.------ - @indexType@ is a 'VkIndexType' value specifying whether indices are--- treated as 16 bits or 32 bits.------ == Valid Usage------ - @offset@ /must/ be less than the size of @buffer@------ - The sum of @offset@ and the address of the range of @VkDeviceMemory@--- object that is backing @buffer@, /must/ be a multiple of the type--- indicated by @indexType@------ - @buffer@ /must/ have been created with the--- @VK_BUFFER_USAGE_INDEX_BUFFER_BIT@ flag------ - If @buffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @buffer@ /must/ be a valid @VkBuffer@ handle------ - @indexType@ /must/ be a valid 'VkIndexType' value------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - Both of @buffer@, and @commandBuffer@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@,--- 'VkIndexType'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdBindIndexBuffer" vkCmdBindIndexBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("indexType" ::: VkIndexType) -> IO ()--- | vkCmdBindVertexBuffers - Bind vertex buffers to a command buffer------ = Parameters------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @firstBinding@ is the index of the first vertex input binding whose--- state is updated by the command.------ - @bindingCount@ is the number of vertex input bindings whose state is--- updated by the command.------ - @pBuffers@ is a pointer to an array of buffer handles.------ - @pOffsets@ is a pointer to an array of buffer offsets.------ = Description------ The values taken from elements i of @pBuffers@ and @pOffsets@ replace--- the current state for the vertex input binding @firstBinding@ + i, for i--- in [0, @bindingCount@). The vertex input binding is updated to start at--- the offset indicated by @pOffsets@[i] from the start of the buffer--- @pBuffers@[i]. All vertex input attributes that use each of these--- bindings will use these updated addresses in their address calculations--- for subsequent draw commands.------ == Valid Usage------ - @firstBinding@ /must/ be less than--- @VkPhysicalDeviceLimits@::@maxVertexInputBindings@------ - The sum of @firstBinding@ and @bindingCount@ /must/ be less than or--- equal to @VkPhysicalDeviceLimits@::@maxVertexInputBindings@------ - All elements of @pOffsets@ /must/ be less than the size of the--- corresponding element in @pBuffers@------ - All elements of @pBuffers@ /must/ have been created with the--- @VK_BUFFER_USAGE_VERTEX_BUFFER_BIT@ flag------ - Each element of @pBuffers@ that is non-sparse /must/ be bound--- completely and contiguously to a single @VkDeviceMemory@ object------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pBuffers@ /must/ be a valid pointer to an array of @bindingCount@--- valid @VkBuffer@ handles------ - @pOffsets@ /must/ be a valid pointer to an array of @bindingCount@--- @VkDeviceSize@ values------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - @bindingCount@ /must/ be greater than @0@------ - Both of @commandBuffer@, and the elements of @pBuffers@ /must/ have--- been created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdBindVertexBuffers" vkCmdBindVertexBuffers :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr VkBuffer) -> ("pOffsets" ::: Ptr VkDeviceSize) -> IO ()--- | vkCmdDraw - Draw primitives------ = Parameters------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @vertexCount@ is the number of vertices to draw.------ - @instanceCount@ is the number of instances to draw.------ - @firstVertex@ is the index of the first vertex to draw.------ - @firstInstance@ is the instance ID of the first instance to draw.------ = Description------ When the command is executed, primitives are assembled using the current--- primitive topology and @vertexCount@ consecutive vertex indices with the--- first @vertexIndex@ value equal to @firstVertex@. The primitives are--- drawn @instanceCount@ times with @instanceIndex@ starting with--- @firstInstance@ and increasing sequentially for each instance. The--- assembled primitives execute the bound graphics pipeline.------ == Valid Usage------ - The current render pass /must/ be--- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)--- with the @renderPass@ member of the @VkGraphicsPipelineCreateInfo@--- structure specified when creating the @VkPipeline@ bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@.------ - The subpass index of the current render pass /must/ be equal to the--- @subpass@ member of the @VkGraphicsPipelineCreateInfo@ structure--- specified when creating the @VkPipeline@ bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@.------ - For each set /n/ that is statically used by the @VkPipeline@ bound--- to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a descriptor set /must/ have--- been bound to /n/ at @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a--- @VkPipelineLayout@ that is compatible for set /n/, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)------ - For each push constant that is statically used by the @VkPipeline@--- bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a push constant value--- /must/ have been set for @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a--- @VkPipelineLayout@ that is compatible for push constants, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)------ - Descriptors in each bound descriptor set, specified via--- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically--- used by the bound @VkPipeline@ object, specified via--- @vkCmdBindPipeline@------ - All vertex input bindings accessed via vertex input variables--- declared in the vertex shader entry point’s interface /must/ have--- valid buffers bound------ - For a given vertex buffer binding, any attribute data fetched /must/--- be entirely contained within the corresponding vertex buffer--- binding, as described in--- [{html_spec_relative}#fxvertex-input](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fxvertex-input)------ - A valid graphics pipeline /must/ be bound to the current command--- buffer with @VK_PIPELINE_BIND_POINT_GRAPHICS@------ - If the @VkPipeline@ object bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@ requires any dynamic state, that--- state /must/ have been set on the current command buffer------ - Every input attachment used by the current subpass /must/ be bound--- to the pipeline via a descriptor set------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used to sample from any--- @VkImage@ with a @VkImageView@ of the type @VK_IMAGE_VIEW_TYPE_3D@,--- @VK_IMAGE_VIEW_TYPE_CUBE@, @VK_IMAGE_VIEW_TYPE_1D_ARRAY@,--- @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@, in--- any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions with--- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that--- includes a LOD bias or any offset values, in any shader stage------ - If the [robust buffer--- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a uniform--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - If the [robust buffer--- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a storage--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - Any @VkImageView@ being sampled with @VK_FILTER_LINEAR@ as a result--- of this command /must/ be of a format which supports linear--- filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ - Image subresources used as attachments in the current render pass--- /must/ not be accessed in any way other than as an attachment by--- this command.------ - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled--- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ be of--- a format which supports cubic filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled--- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ not--- have a 'Graphics.Vulkan.Core10.ImageView.VkImageViewType' of--- @VK_IMAGE_VIEW_TYPE_3D@, @VK_IMAGE_VIEW_TYPE_CUBE@, or--- @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@------ - If the draw is recorded in a render pass instance with multiview--- enabled, the maximum instance index /must/ be less than or equal to--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview.VkPhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.------ - If the bound graphics pipeline was created with--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@--- set to @VK_TRUE@ and the current subpass has a depth\/stencil--- attachment, then that attachment /must/ have been created with the--- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ bit set------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called inside of a render pass instance------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Inside | Graphics | Graphics |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdDraw" vkCmdDraw :: ("commandBuffer" ::: VkCommandBuffer) -> ("vertexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstVertex" ::: Word32) -> ("firstInstance" ::: Word32) -> IO ()--- | vkCmdDrawIndexed - Issue an indexed draw into a command buffer------ = Parameters------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @indexCount@ is the number of vertices to draw.------ - @instanceCount@ is the number of instances to draw.------ - @firstIndex@ is the base index within the index buffer.------ - @vertexOffset@ is the value added to the vertex index before--- indexing into the vertex buffer.------ - @firstInstance@ is the instance ID of the first instance to draw.------ = Description------ When the command is executed, primitives are assembled using the current--- primitive topology and @indexCount@ vertices whose indices are retrieved--- from the index buffer. The index buffer is treated as an array of--- tightly packed unsigned integers of size defined by the--- 'vkCmdBindIndexBuffer'::@indexType@ parameter with which the buffer was--- bound.------ The first vertex index is at an offset of @firstIndex@ * @indexSize@ +--- @offset@ within the bound index buffer, where @offset@ is the offset--- specified by @vkCmdBindIndexBuffer@ and @indexSize@ is the byte size of--- the type specified by @indexType@. Subsequent index values are retrieved--- from consecutive locations in the index buffer. Indices are first--- compared to the primitive restart value, then zero extended to 32 bits--- (if the @indexType@ is @VK_INDEX_TYPE_UINT16@) and have @vertexOffset@--- added to them, before being supplied as the @vertexIndex@ value.------ The primitives are drawn @instanceCount@ times with @instanceIndex@--- starting with @firstInstance@ and increasing sequentially for each--- instance. The assembled primitives execute the bound graphics pipeline.------ == Valid Usage------ - The current render pass /must/ be--- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)--- with the @renderPass@ member of the @VkGraphicsPipelineCreateInfo@--- structure specified when creating the @VkPipeline@ bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@.------ - The subpass index of the current render pass /must/ be equal to the--- @subpass@ member of the @VkGraphicsPipelineCreateInfo@ structure--- specified when creating the @VkPipeline@ bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@.------ - For each set /n/ that is statically used by the @VkPipeline@ bound--- to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a descriptor set /must/ have--- been bound to /n/ at @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a--- @VkPipelineLayout@ that is compatible for set /n/, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)------ - For each push constant that is statically used by the @VkPipeline@--- bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a push constant value--- /must/ have been set for @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a--- @VkPipelineLayout@ that is compatible for push constants, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)------ - Descriptors in each bound descriptor set, specified via--- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically--- used by the bound @VkPipeline@ object, specified via--- @vkCmdBindPipeline@------ - All vertex input bindings accessed via vertex input variables--- declared in the vertex shader entry point’s interface /must/ have--- valid buffers bound------ - For a given vertex buffer binding, any attribute data fetched /must/--- be entirely contained within the corresponding vertex buffer--- binding, as described in--- [{html_spec_relative}#fxvertex-input](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fxvertex-input)------ - A valid graphics pipeline /must/ be bound to the current command--- buffer with @VK_PIPELINE_BIND_POINT_GRAPHICS@------ - If the @VkPipeline@ object bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@ requires any dynamic state, that--- state /must/ have been set on the current command buffer------ - (@indexSize@ * (@firstIndex@ + @indexCount@) + @offset@) /must/ be--- less than or equal to the size of the bound index buffer, with--- indexSize being based on the type specified by @indexType@, where--- the index buffer, @indexType@, and @offset@ are specified via--- @vkCmdBindIndexBuffer@------ - Every input attachment used by the current subpass /must/ be bound--- to the pipeline via a descriptor set------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used to sample from any--- @VkImage@ with a @VkImageView@ of the type @VK_IMAGE_VIEW_TYPE_3D@,--- @VK_IMAGE_VIEW_TYPE_CUBE@, @VK_IMAGE_VIEW_TYPE_1D_ARRAY@,--- @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@, in--- any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions with--- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that--- includes a LOD bias or any offset values, in any shader stage------ - If the [robust buffer--- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a uniform--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - If the [robust buffer--- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a storage--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - Any @VkImageView@ being sampled with @VK_FILTER_LINEAR@ as a result--- of this command /must/ be of a format which supports linear--- filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ - Image subresources used as attachments in the current render pass--- /must/ not be accessed in any way other than as an attachment by--- this command.------ - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled--- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ be of--- a format which supports cubic filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled--- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ not--- have a 'Graphics.Vulkan.Core10.ImageView.VkImageViewType' of--- @VK_IMAGE_VIEW_TYPE_3D@, @VK_IMAGE_VIEW_TYPE_CUBE@, or--- @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@------ - If the draw is recorded in a render pass instance with multiview--- enabled, the maximum instance index /must/ be less than or equal to--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview.VkPhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.------ - If the bound graphics pipeline was created with--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@--- set to @VK_TRUE@ and the current subpass has a depth\/stencil--- attachment, then that attachment /must/ have been created with the--- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ bit set------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called inside of a render pass instance------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Inside | Graphics | Graphics |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdDrawIndexed" vkCmdDrawIndexed :: ("commandBuffer" ::: VkCommandBuffer) -> ("indexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstIndex" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstInstance" ::: Word32) -> IO ()--- | vkCmdDrawIndirect - Issue an indirect draw into a command buffer------ = Parameters------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @buffer@ is the buffer containing draw parameters.------ - @offset@ is the byte offset into @buffer@ where parameters begin.------ - @drawCount@ is the number of draws to execute, and /can/ be zero.------ - @stride@ is the byte stride between successive sets of draw--- parameters.------ = Description------ @vkCmdDrawIndirect@ behaves similarly to 'vkCmdDraw' except that the--- parameters are read by the device from a buffer during execution.--- @drawCount@ draws are executed by the command, with parameters taken--- from @buffer@ starting at @offset@ and increasing by @stride@ bytes for--- each successive draw. The parameters of each draw are encoded in an--- array of 'VkDrawIndirectCommand' structures. If @drawCount@ is less than--- or equal to one, @stride@ is ignored.------ == Valid Usage------ - If @buffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @buffer@ /must/ have been created with the--- @VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT@ bit set------ - @offset@ /must/ be a multiple of @4@------ - If @drawCount@ is greater than @1@, @stride@ /must/ be a multiple of--- @4@ and /must/ be greater than or equal to--- @sizeof@(@VkDrawIndirectCommand@)------ - If the [multi-draw--- indirect](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiDrawIndirect)--- feature is not enabled, @drawCount@ /must/ be @0@ or @1@------ - If the--- [drawIndirectFirstInstance](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-drawIndirectFirstInstance)--- feature is not enabled, all the @firstInstance@ members of the--- @VkDrawIndirectCommand@ structures accessed by this command /must/--- be @0@------ - The current render pass /must/ be--- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)--- with the @renderPass@ member of the @VkGraphicsPipelineCreateInfo@--- structure specified when creating the @VkPipeline@ bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@.------ - The subpass index of the current render pass /must/ be equal to the--- @subpass@ member of the @VkGraphicsPipelineCreateInfo@ structure--- specified when creating the @VkPipeline@ bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@.------ - For each set /n/ that is statically used by the @VkPipeline@ bound--- to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a descriptor set /must/ have--- been bound to /n/ at @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a--- @VkPipelineLayout@ that is compatible for set /n/, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)------ - For each push constant that is statically used by the @VkPipeline@--- bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a push constant value--- /must/ have been set for @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a--- @VkPipelineLayout@ that is compatible for push constants, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)------ - Descriptors in each bound descriptor set, specified via--- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically--- used by the bound @VkPipeline@ object, specified via--- @vkCmdBindPipeline@------ - All vertex input bindings accessed via vertex input variables--- declared in the vertex shader entry point’s interface /must/ have--- valid buffers bound------ - A valid graphics pipeline /must/ be bound to the current command--- buffer with @VK_PIPELINE_BIND_POINT_GRAPHICS@------ - If the @VkPipeline@ object bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@ requires any dynamic state, that--- state /must/ have been set on the current command buffer------ - If @drawCount@ is equal to @1@, (@offset@ +--- @sizeof@('VkDrawIndirectCommand')) /must/ be less than or equal to--- the size of @buffer@------ - If @drawCount@ is greater than @1@, (@stride@ × (@drawCount@ - 1) +--- @offset@ + @sizeof@('VkDrawIndirectCommand')) /must/ be less than or--- equal to the size of @buffer@------ - @drawCount@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxDrawIndirectCount@------ - Every input attachment used by the current subpass /must/ be bound--- to the pipeline via a descriptor set------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used to sample from any--- @VkImage@ with a @VkImageView@ of the type @VK_IMAGE_VIEW_TYPE_3D@,--- @VK_IMAGE_VIEW_TYPE_CUBE@, @VK_IMAGE_VIEW_TYPE_1D_ARRAY@,--- @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@, in--- any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions with--- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that--- includes a LOD bias or any offset values, in any shader stage------ - If the [robust buffer--- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a uniform--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - If the [robust buffer--- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a storage--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - Any @VkImageView@ being sampled with @VK_FILTER_LINEAR@ as a result--- of this command /must/ be of a format which supports linear--- filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ - Image subresources used as attachments in the current render pass--- /must/ not be accessed in any way other than as an attachment by--- this command.------ - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled--- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ be of--- a format which supports cubic filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled--- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ not--- have a 'Graphics.Vulkan.Core10.ImageView.VkImageViewType' of--- @VK_IMAGE_VIEW_TYPE_3D@, @VK_IMAGE_VIEW_TYPE_CUBE@, or--- @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@------ - If the draw is recorded in a render pass instance with multiview--- enabled, the maximum instance index /must/ be less than or equal to--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview.VkPhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.------ - If the bound graphics pipeline was created with--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@--- set to @VK_TRUE@ and the current subpass has a depth\/stencil--- attachment, then that attachment /must/ have been created with the--- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ bit set------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @buffer@ /must/ be a valid @VkBuffer@ handle------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called inside of a render pass instance------ - Both of @buffer@, and @commandBuffer@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Inside | Graphics | Graphics |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdDrawIndirect" vkCmdDrawIndirect :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()--- | vkCmdDrawIndexedIndirect - Perform an indexed indirect draw------ = Parameters------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @buffer@ is the buffer containing draw parameters.------ - @offset@ is the byte offset into @buffer@ where parameters begin.------ - @drawCount@ is the number of draws to execute, and /can/ be zero.------ - @stride@ is the byte stride between successive sets of draw--- parameters.------ = Description------ @vkCmdDrawIndexedIndirect@ behaves similarly to 'vkCmdDrawIndexed'--- except that the parameters are read by the device from a buffer during--- execution. @drawCount@ draws are executed by the command, with--- parameters taken from @buffer@ starting at @offset@ and increasing by--- @stride@ bytes for each successive draw. The parameters of each draw are--- encoded in an array of 'VkDrawIndexedIndirectCommand' structures. If--- @drawCount@ is less than or equal to one, @stride@ is ignored.------ == Valid Usage------ - If @buffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @buffer@ /must/ have been created with the--- @VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT@ bit set------ - @offset@ /must/ be a multiple of @4@------ - If @drawCount@ is greater than @1@, @stride@ /must/ be a multiple of--- @4@ and /must/ be greater than or equal to--- @sizeof@(@VkDrawIndexedIndirectCommand@)------ - If the [multi-draw--- indirect](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiDrawIndirect)--- feature is not enabled, @drawCount@ /must/ be @0@ or @1@------ - If the--- [drawIndirectFirstInstance](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-drawIndirectFirstInstance)--- feature is not enabled, all the @firstInstance@ members of the--- @VkDrawIndexedIndirectCommand@ structures accessed by this command--- /must/ be @0@------ - The current render pass /must/ be--- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)--- with the @renderPass@ member of the @VkGraphicsPipelineCreateInfo@--- structure specified when creating the @VkPipeline@ bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@.------ - The subpass index of the current render pass /must/ be equal to the--- @subpass@ member of the @VkGraphicsPipelineCreateInfo@ structure--- specified when creating the @VkPipeline@ bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@.------ - For each set /n/ that is statically used by the @VkPipeline@ bound--- to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a descriptor set /must/ have--- been bound to /n/ at @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a--- @VkPipelineLayout@ that is compatible for set /n/, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)------ - For each push constant that is statically used by the @VkPipeline@--- bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a push constant value--- /must/ have been set for @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a--- @VkPipelineLayout@ that is compatible for push constants, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)------ - Descriptors in each bound descriptor set, specified via--- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically--- used by the bound @VkPipeline@ object, specified via--- @vkCmdBindPipeline@------ - All vertex input bindings accessed via vertex input variables--- declared in the vertex shader entry point’s interface /must/ have--- valid buffers bound------ - A valid graphics pipeline /must/ be bound to the current command--- buffer with @VK_PIPELINE_BIND_POINT_GRAPHICS@------ - If the @VkPipeline@ object bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@ requires any dynamic state, that--- state /must/ have been set on the current command buffer------ - If @drawCount@ is equal to @1@, (@offset@ +--- @sizeof@(@VkDrawIndexedIndirectCommand@)) /must/ be less than or--- equal to the size of @buffer@------ - If @drawCount@ is greater than @1@, (@stride@ × (@drawCount@ - 1) +--- @offset@ + @sizeof@(@VkDrawIndexedIndirectCommand@)) /must/ be less--- than or equal to the size of @buffer@------ - @drawCount@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxDrawIndirectCount@------ - Every input attachment used by the current subpass /must/ be bound--- to the pipeline via a descriptor set------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used to sample from any--- @VkImage@ with a @VkImageView@ of the type @VK_IMAGE_VIEW_TYPE_3D@,--- @VK_IMAGE_VIEW_TYPE_CUBE@, @VK_IMAGE_VIEW_TYPE_1D_ARRAY@,--- @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@, in--- any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions with--- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that--- includes a LOD bias or any offset values, in any shader stage------ - If the [robust buffer--- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a uniform--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - If the [robust buffer--- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a storage--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - Any @VkImageView@ being sampled with @VK_FILTER_LINEAR@ as a result--- of this command /must/ be of a format which supports linear--- filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ - Image subresources used as attachments in the current render pass--- /must/ not be accessed in any way other than as an attachment by--- this command.------ - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled--- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ be of--- a format which supports cubic filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled--- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ not--- have a 'Graphics.Vulkan.Core10.ImageView.VkImageViewType' of--- @VK_IMAGE_VIEW_TYPE_3D@, @VK_IMAGE_VIEW_TYPE_CUBE@, or--- @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@------ - If the draw is recorded in a render pass instance with multiview--- enabled, the maximum instance index /must/ be less than or equal to--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview.VkPhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.------ - If the bound graphics pipeline was created with--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@--- set to @VK_TRUE@ and the current subpass has a depth\/stencil--- attachment, then that attachment /must/ have been created with the--- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ bit set------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @buffer@ /must/ be a valid @VkBuffer@ handle------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called inside of a render pass instance------ - Both of @buffer@, and @commandBuffer@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Inside | Graphics | Graphics |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdDrawIndexedIndirect" vkCmdDrawIndexedIndirect :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()--- | vkCmdDispatch - Dispatch compute work items------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @groupCountX@ is the number of local workgroups to dispatch in the X--- dimension.------ - @groupCountY@ is the number of local workgroups to dispatch in the Y--- dimension.------ - @groupCountZ@ is the number of local workgroups to dispatch in the Z--- dimension.------ = Description------ When the command is executed, a global workgroup consisting of--- groupCountX × groupCountY × groupCountZ local workgroups is assembled.------ == Valid Usage------ - @groupCountX@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[0]------ - @groupCountY@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[1]------ - @groupCountZ@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[2]------ - For each set /n/ that is statically used by the @VkPipeline@ bound--- to @VK_PIPELINE_BIND_POINT_COMPUTE@, a descriptor set /must/ have--- been bound to /n/ at @VK_PIPELINE_BIND_POINT_COMPUTE@, with a--- @VkPipelineLayout@ that is compatible for set /n/, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)------ - Descriptors in each bound descriptor set, specified via--- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically--- used by the bound @VkPipeline@ object, specified via--- @vkCmdBindPipeline@------ - A valid compute pipeline /must/ be bound to the current command--- buffer with @VK_PIPELINE_BIND_POINT_COMPUTE@------ - For each push constant that is statically used by the @VkPipeline@--- bound to @VK_PIPELINE_BIND_POINT_COMPUTE@, a push constant value--- /must/ have been set for @VK_PIPELINE_BIND_POINT_COMPUTE@, with a--- @VkPipelineLayout@ that is compatible for push constants with the--- one used to create the current @VkPipeline@, as described in--- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ uses--- unnormalized coordinates, it /must/ not be used to sample from any--- @VkImage@ with a @VkImageView@ of the type @VK_IMAGE_VIEW_TYPE_3D@,--- @VK_IMAGE_VIEW_TYPE_CUBE@, @VK_IMAGE_VIEW_TYPE_1D_ARRAY@,--- @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@, in--- any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions with--- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that--- includes a LOD bias or any offset values, in any shader stage------ - If the [robust buffer--- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ accesses a uniform--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - If the [robust buffer--- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ accesses a storage--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - Any @VkImageView@ being sampled with @VK_FILTER_LINEAR@ as a result--- of this command /must/ be of a format which supports linear--- filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled--- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ be of--- a format which supports cubic filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled--- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ not--- have a 'Graphics.Vulkan.Core10.ImageView.VkImageViewType' of--- @VK_IMAGE_VIEW_TYPE_3D@, @VK_IMAGE_VIEW_TYPE_CUBE@, or--- @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support compute operations------ - This command /must/ only be called outside of a render pass instance------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Outside | Compute | Compute |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdDispatch" vkCmdDispatch :: ("commandBuffer" ::: VkCommandBuffer) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()--- | vkCmdDispatchIndirect - Dispatch compute work items using indirect--- parameters------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @buffer@ is the buffer containing dispatch parameters.------ - @offset@ is the byte offset into @buffer@ where parameters begin.------ = Description------ @vkCmdDispatchIndirect@ behaves similarly to 'vkCmdDispatch' except that--- the parameters are read by the device from a buffer during execution.--- The parameters of the dispatch are encoded in a--- 'VkDispatchIndirectCommand' structure taken from @buffer@ starting at--- @offset@.------ == Valid Usage------ - If @buffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - For each set /n/ that is statically used by the @VkPipeline@ bound--- to @VK_PIPELINE_BIND_POINT_COMPUTE@, a descriptor set /must/ have--- been bound to /n/ at @VK_PIPELINE_BIND_POINT_COMPUTE@, with a--- @VkPipelineLayout@ that is compatible for set /n/, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)------ - Descriptors in each bound descriptor set, specified via--- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically--- used by the bound @VkPipeline@ object, specified via--- @vkCmdBindPipeline@------ - A valid compute pipeline /must/ be bound to the current command--- buffer with @VK_PIPELINE_BIND_POINT_COMPUTE@------ - @buffer@ /must/ have been created with the--- @VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT@ bit set------ - @offset@ /must/ be a multiple of @4@------ - The sum of @offset@ and the size of @VkDispatchIndirectCommand@--- /must/ be less than or equal to the size of @buffer@------ - For each push constant that is statically used by the @VkPipeline@--- bound to @VK_PIPELINE_BIND_POINT_COMPUTE@, a push constant value--- /must/ have been set for @VK_PIPELINE_BIND_POINT_COMPUTE@, with a--- @VkPipelineLayout@ that is compatible for push constants with the--- one used to create the current @VkPipeline@, as described in--- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ uses--- unnormalized coordinates, it /must/ not be used to sample from any--- @VkImage@ with a @VkImageView@ of the type @VK_IMAGE_VIEW_TYPE_3D@,--- @VK_IMAGE_VIEW_TYPE_CUBE@, @VK_IMAGE_VIEW_TYPE_1D_ARRAY@,--- @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@, in--- any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions with--- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that--- includes a LOD bias or any offset values, in any shader stage------ - If the [robust buffer--- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ accesses a uniform--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - If the [robust buffer--- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_COMPUTE@ accesses a storage--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - Any @VkImageView@ being sampled with @VK_FILTER_LINEAR@ as a result--- of this command /must/ be of a format which supports linear--- filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled--- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ be of--- a format which supports cubic filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ - Any 'Graphics.Vulkan.Core10.ImageView.VkImageView' being sampled--- with @VK_FILTER_CUBIC_IMG@ as a result of this command /must/ not--- have a 'Graphics.Vulkan.Core10.ImageView.VkImageViewType' of--- @VK_IMAGE_VIEW_TYPE_3D@, @VK_IMAGE_VIEW_TYPE_CUBE@, or--- @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @buffer@ /must/ be a valid @VkBuffer@ handle------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support compute operations------ - This command /must/ only be called outside of a render pass instance------ - Both of @buffer@, and @commandBuffer@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Outside | Compute | Compute |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdDispatchIndirect" vkCmdDispatchIndirect :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> IO ()--- | vkCmdCopyBuffer - Copy data between buffer regions------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @srcBuffer@ is the source buffer.------ - @dstBuffer@ is the destination buffer.------ - @regionCount@ is the number of regions to copy.------ - @pRegions@ is a pointer to an array of 'VkBufferCopy' structures--- specifying the regions to copy.------ = Description------ Each region in @pRegions@ is copied from the source buffer to the same--- region of the destination buffer. @srcBuffer@ and @dstBuffer@ /can/ be--- the same buffer or alias the same memory, but the result is undefined if--- the copy regions overlap in memory.------ == Valid Usage------ - The @size@ member of each element of @pRegions@ /must/ be greater--- than @0@------ - The @srcOffset@ member of each element of @pRegions@ /must/ be less--- than the size of @srcBuffer@------ - The @dstOffset@ member of each element of @pRegions@ /must/ be less--- than the size of @dstBuffer@------ - The @size@ member of each element of @pRegions@ /must/ be less than--- or equal to the size of @srcBuffer@ minus @srcOffset@------ - The @size@ member of each element of @pRegions@ /must/ be less than--- or equal to the size of @dstBuffer@ minus @dstOffset@------ - The union of the source regions, and the union of the destination--- regions, specified by the elements of @pRegions@, /must/ not overlap--- in memory------ - @srcBuffer@ /must/ have been created with--- @VK_BUFFER_USAGE_TRANSFER_SRC_BIT@ usage flag------ - If @srcBuffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @dstBuffer@ /must/ have been created with--- @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ usage flag------ - If @dstBuffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @srcBuffer@ /must/ be a valid @VkBuffer@ handle------ - @dstBuffer@ /must/ be a valid @VkBuffer@ handle------ - @pRegions@ /must/ be a valid pointer to an array of @regionCount@--- @VkBufferCopy@ structures------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support transfer, graphics, or compute operations------ - This command /must/ only be called outside of a render pass instance------ - @regionCount@ /must/ be greater than @0@------ - Each of @commandBuffer@, @dstBuffer@, and @srcBuffer@ /must/ have--- been created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Outside | Transfer | Transfer |--- | Secondary | | Graphics | |--- | | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', 'VkBufferCopy',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdCopyBuffer" vkCmdCopyBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferCopy) -> IO ()--- | vkCmdCopyImage - Copy data between images------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @srcImage@ is the source image.------ - @srcImageLayout@ is the current layout of the source image--- subresource.------ - @dstImage@ is the destination image.------ - @dstImageLayout@ is the current layout of the destination image--- subresource.------ - @regionCount@ is the number of regions to copy.------ - @pRegions@ is a pointer to an array of 'VkImageCopy' structures--- specifying the regions to copy.------ = Description------ Each region in @pRegions@ is copied from the source image to the same--- region of the destination image. @srcImage@ and @dstImage@ /can/ be the--- same image or alias the same memory.------ The formats of @srcImage@ and @dstImage@ /must/ be compatible. Formats--- are considered compatible if their element size is the same between both--- formats. For example, @VK_FORMAT_R8G8B8A8_UNORM@ is compatible with--- @VK_FORMAT_R32_UINT@ because both texels are 4 bytes in size.--- Depth\/stencil formats /must/ match exactly.------ If the format of @srcImage@ or @dstImage@ is a [/multi-planar/ image--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),--- regions of each plane to be copied /must/ be specified separately using--- the @srcSubresource@ and @dstSubresource@ members of the 'VkImageCopy'--- structure. In this case, the @aspectMask@ of the @srcSubresource@ or--- @dstSubresource@ that refers to the multi-planar image /must/ be--- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or--- @VK_IMAGE_ASPECT_PLANE_2_BIT@. For the purposes of @vkCmdCopyImage@,--- each plane of a multi-planar image is treated as having the format--- listed in--- [{html_spec_relative}#features-formats-compatible-planes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatible-planes)--- for the plane identified by the @aspectMask@ of the corresponding--- subresource. This applies both to 'Graphics.Vulkan.Core10.Core.VkFormat'--- and to coordinates used in the copy, which correspond to texels in the--- /plane/ rather than how these texels map to coordinates in the image as--- a whole.------ __Note__------ For example, the @VK_IMAGE_ASPECT_PLANE_1_BIT@ plane of a--- @VK_FORMAT_G8_B8R8_2PLANE_420_UNORM@ image is compatible with an image--- of format @VK_FORMAT_R8G8_UNORM@ and (less usefully) with the--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ plane of an image of format--- @VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16@, as each texel is--- 2 bytes in size.------ @vkCmdCopyImage@ allows copying between /size-compatible/ compressed and--- uncompressed internal formats. Formats are size-compatible if the--- element size of the uncompressed format is equal to the element size--- (compressed texel block size) of the compressed format. Such a copy does--- not perform on-the-fly compression or decompression. When copying from--- an uncompressed format to a compressed format, each texel of--- uncompressed data of the source image is copied as a raw value to the--- corresponding compressed texel block of the destination image. When--- copying from a compressed format to an uncompressed format, each--- compressed texel block of the source image is copied as a raw value to--- the corresponding texel of uncompressed data in the destination image.--- Thus, for example, it is legal to copy between a 128-bit uncompressed--- format and a compressed format which has a 128-bit sized compressed--- texel block representing 4×4 texels (using 8 bits per texel), or between--- a 64-bit uncompressed format and a compressed format which has a 64-bit--- sized compressed texel block representing 4×4 texels (using 4 bits per--- texel).------ When copying between compressed and uncompressed formats the @extent@--- members represent the texel dimensions of the source image and not the--- destination. When copying from a compressed image to an uncompressed--- image the image texel dimensions written to the uncompressed image will--- be source extent divided by the compressed texel block dimensions. When--- copying from an uncompressed image to a compressed image the image texel--- dimensions written to the compressed image will be the source extent--- multiplied by the compressed texel block dimensions. In both cases the--- number of bytes read and the number of bytes written will be identical.------ Copying to or from block-compressed images is typically done in--- multiples of the compressed texel block size. For this reason the--- @extent@ /must/ be a multiple of the compressed texel block dimension.--- There is one exception to this rule which is /required/ to handle--- compressed images created with dimensions that are not a multiple of the--- compressed texel block dimensions: if the @srcImage@ is compressed,--- then:------ - If @extent.width@ is not a multiple of the compressed texel block--- width, then (@extent.width@ + @srcOffset.x@) /must/ equal the image--- subresource width.------ - If @extent.height@ is not a multiple of the compressed texel block--- height, then (@extent.height@ + @srcOffset.y@) /must/ equal the--- image subresource height.------ - If @extent.depth@ is not a multiple of the compressed texel block--- depth, then (@extent.depth@ + @srcOffset.z@) /must/ equal the image--- subresource depth.------ Similarly, if the @dstImage@ is compressed, then:------ - If @extent.width@ is not a multiple of the compressed texel block--- width, then (@extent.width@ + @dstOffset.x@) /must/ equal the image--- subresource width.------ - If @extent.height@ is not a multiple of the compressed texel block--- height, then (@extent.height@ + @dstOffset.y@) /must/ equal the--- image subresource height.------ - If @extent.depth@ is not a multiple of the compressed texel block--- depth, then (@extent.depth@ + @dstOffset.z@) /must/ equal the image--- subresource depth.------ This allows the last compressed texel block of the image in each--- non-multiple dimension to be included as a source or destination of the--- copy.------ “@_422@” image formats that are not--- [/multi-planar/](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)--- are treated as having a 2×1 compressed texel block for the purposes of--- these rules.------ @vkCmdCopyImage@ /can/ be used to copy image data between multisample--- images, but both images /must/ have the same number of samples.------ == Valid Usage------ - The source region specified by each element of @pRegions@ /must/ be--- a region that is contained within @srcImage@ if the @srcImage@’s--- 'Graphics.Vulkan.Core10.Core.VkFormat' is not a [multi-planar--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),--- and /must/ be a region that is contained within the plane being--- copied if the @srcImage@’s 'Graphics.Vulkan.Core10.Core.VkFormat' is--- a multi-planar format------ - The destination region specified by each element of @pRegions@--- /must/ be a region that is contained within @dstImage@ if the--- @dstImage@’s 'Graphics.Vulkan.Core10.Core.VkFormat' is not a--- [multi-planar--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),--- and /must/ be a region that is contained within the plane being--- copied to if the @dstImage@’s 'Graphics.Vulkan.Core10.Core.VkFormat'--- is a multi-planar format------ - The union of all source regions, and the union of all destination--- regions, specified by the elements of @pRegions@, /must/ not overlap--- in memory------ - @srcImage@ /must/ use a format that supports--- @VK_FORMAT_FEATURE_TRANSFER_SRC_BIT@, which is indicated by--- @VkFormatProperties@::@linearTilingFeatures@ (for linearly tiled--- images) or @VkFormatProperties@::@optimalTilingFeatures@ (for--- optimally tiled images) - as returned by--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceFormatProperties'------ - @srcImage@ /must/ have been created with--- @VK_IMAGE_USAGE_TRANSFER_SRC_BIT@ usage flag------ - If @srcImage@ is non-sparse then the image or /disjoint/ plane to be--- copied /must/ be bound completely and contiguously to a single--- @VkDeviceMemory@ object------ - @srcImageLayout@ /must/ specify the layout of the image subresources--- of @srcImage@ specified in @pRegions@ at the time this command is--- executed on a @VkDevice@------ - @srcImageLayout@ /must/ be @VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL@,--- @VK_IMAGE_LAYOUT_GENERAL@, or @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@------ - @dstImage@ /must/ use a format that supports--- @VK_FORMAT_FEATURE_TRANSFER_DST_BIT@, which is indicated by--- @VkFormatProperties@::@linearTilingFeatures@ (for linearly tiled--- images) or @VkFormatProperties@::@optimalTilingFeatures@ (for--- optimally tiled images) - as returned by--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceFormatProperties'------ - @dstImage@ /must/ have been created with--- @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ usage flag------ - If @dstImage@ is non-sparse then the image or /disjoint/ plane that--- is the destination of the copy /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @dstImageLayout@ /must/ specify the layout of the image subresources--- of @dstImage@ specified in @pRegions@ at the time this command is--- executed on a @VkDevice@------ - @dstImageLayout@ /must/ be @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@,--- @VK_IMAGE_LAYOUT_GENERAL@, or @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@------ - If the 'Graphics.Vulkan.Core10.Core.VkFormat' of each of @srcImage@--- and @dstImage@ is not a [/multi-planar--- format/](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),--- the 'Graphics.Vulkan.Core10.Core.VkFormat' of each of @srcImage@ and--- @dstImage@ /must/ be compatible, as defined--- [below](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#copies-images-format-compatibility)------ - In a copy to or from a plane of a [multi-planar--- image](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),--- the 'Graphics.Vulkan.Core10.Core.VkFormat' of the image and plane--- /must/ be compatible according to [the description of compatible--- planes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatible-planes)--- for the plane being copied------ - When a copy is performed to or from an image with a [multi-planar--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),--- the @aspectMask@ of the @srcSubresource@ and\/or @dstSubresource@--- that refers to the multi-planar image /must/ be--- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or--- @VK_IMAGE_ASPECT_PLANE_2_BIT@ (with @VK_IMAGE_ASPECT_PLANE_2_BIT@--- valid only for a 'Graphics.Vulkan.Core10.Core.VkFormat' with three--- planes)------ - The sample count of @srcImage@ and @dstImage@ /must/ match------ - The @srcSubresource.mipLevel@ member of each element of @pRegions@--- /must/ be less than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was--- created------ - The @dstSubresource.mipLevel@ member of each element of @pRegions@--- /must/ be less than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was--- created------ - The @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of--- each element of @pRegions@ /must/ be less than or equal to the--- @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was--- created------ - The @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of--- each element of @pRegions@ /must/ be less than or equal to the--- @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was--- created------ - The @srcOffset@ and and @extent@ members of each element of--- @pRegions@ /must/ respect the image transfer granularity--- requirements of @commandBuffer@’s command pool’s queue family, as--- described in--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkQueueFamilyProperties'------ - The @dstOffset@ and and @extent@ members of each element of--- @pRegions@ /must/ respect the image transfer granularity--- requirements of @commandBuffer@’s command pool’s queue family, as--- described in--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkQueueFamilyProperties'------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @srcImage@ /must/ be a valid @VkImage@ handle------ - @srcImageLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @dstImage@ /must/ be a valid @VkImage@ handle------ - @dstImageLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @pRegions@ /must/ be a valid pointer to an array of @regionCount@--- valid @VkImageCopy@ structures------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support transfer, graphics, or compute operations------ - This command /must/ only be called outside of a render pass instance------ - @regionCount@ /must/ be greater than @0@------ - Each of @commandBuffer@, @dstImage@, and @srcImage@ /must/ have been--- created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Outside | Transfer | Transfer |--- | Secondary | | Graphics | |--- | | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage', 'VkImageCopy',--- 'Graphics.Vulkan.Core10.Image.VkImageLayout'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdCopyImage" vkCmdCopyImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageCopy) -> IO ()--- | vkCmdBlitImage - Copy regions of an image, potentially performing format--- conversion,------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @srcImage@ is the source image.------ - @srcImageLayout@ is the layout of the source image subresources for--- the blit.------ - @dstImage@ is the destination image.------ - @dstImageLayout@ is the layout of the destination image subresources--- for the blit.------ - @regionCount@ is the number of regions to blit.------ - @pRegions@ is a pointer to an array of 'VkImageBlit' structures--- specifying the regions to blit.------ - @filter@ is a 'Graphics.Vulkan.Core10.Sampler.VkFilter' specifying--- the filter to apply if the blits require scaling.------ = Description------ @vkCmdBlitImage@ /must/ not be used for multisampled source or--- destination images. Use 'vkCmdResolveImage' for this purpose.------ As the sizes of the source and destination extents /can/ differ in any--- dimension, texels in the source extent are scaled and filtered to the--- destination extent. Scaling occurs via the following operations:------ - For each destination texel, the integer coordinate of that texel is--- converted to an unnormalized texture coordinate, using the effective--- inverse of the equations described in [unnormalized to integer--- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-unnormalized-to-integer):------ - ubase = i + ½------ - vbase = j + ½------ - wbase = k + ½------ - These base coordinates are then offset by the first destination--- offset:------ - uoffset = ubase - xdst0------ - voffset = vbase - ydst0------ - woffset = wbase - zdst0------ - aoffset = a - @baseArrayCount@dst------ - The scale is determined from the source and destination regions, and--- applied to the offset coordinates:------ - scale_u = (xsrc1 - xsrc0) \/ (xdst1 - xdst0)------ - scale_v = (ysrc1 - ysrc0) \/ (ydst1 - ydst0)------ - scale_w = (zsrc1 - zsrc0) \/ (zdst1 - zdst0)------ - uscaled = uoffset * scaleu------ - vscaled = voffset * scalev------ - wscaled = woffset * scalew------ - Finally the source offset is added to the scaled coordinates, to--- determine the final unnormalized coordinates used to sample from--- @srcImage@:------ - u = uscaled + xsrc0------ - v = vscaled + ysrc0------ - w = wscaled + zsrc0------ - q = @mipLevel@------ - a = aoffset + @baseArrayCount@src------ These coordinates are used to sample from the source image, as described--- in [Image Operations--- chapter](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures),--- with the filter mode equal to that of @filter@, a mipmap mode of--- @VK_SAMPLER_MIPMAP_MODE_NEAREST@ and an address mode of--- @VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE@. Implementations /must/ clamp at--- the edge of the source image, and /may/ additionally clamp to the edge--- of the source region.------ __Note__------ Due to allowable rounding errors in the generation of the source texture--- coordinates, it is not always possible to guarantee exactly which source--- texels will be sampled for a given blit. As rounding errors are--- implementation dependent, the exact results of a blitting operation are--- also implementation dependent.------ Blits are done layer by layer starting with the @baseArrayLayer@ member--- of @srcSubresource@ for the source and @dstSubresource@ for the--- destination. @layerCount@ layers are blitted to the destination image.------ 3D textures are blitted slice by slice. Slices in the source region--- bounded by @srcOffsets@[0].@z@ and @srcOffsets@[1].@z@ are copied to--- slices in the destination region bounded by @dstOffsets@[0].@z@ and--- @dstOffsets@[1].@z@. For each destination slice, a source __z__--- coordinate is linearly interpolated between @srcOffsets@[0].@z@ and--- @srcOffsets@[1].@z@. If the @filter@ parameter is @VK_FILTER_LINEAR@--- then the value sampled from the source image is taken by doing linear--- filtering using the interpolated __z__ coordinate. If @filter@ parameter--- is @VK_FILTER_NEAREST@ then value sampled from the source image is taken--- from the single nearest slice (with undefined rounding mode).------ The following filtering and conversion rules apply:------ - Integer formats /can/ only be converted to other integer formats--- with the same signedness.------ - No format conversion is supported between depth\/stencil images. The--- formats /must/ match.------ - Format conversions on unorm, snorm, unscaled and packed float--- formats of the copied aspect of the image are performed by first--- converting the pixels to float values.------ - For sRGB source formats, nonlinear RGB values are converted to--- linear representation prior to filtering.------ - After filtering, the float values are first clamped and then cast to--- the destination image format. In case of sRGB destination format,--- linear RGB values are converted to nonlinear representation before--- writing the pixel to the image.------ Signed and unsigned integers are converted by first clamping to the--- representable range of the destination format, then casting the value.------ == Valid Usage------ - The source region specified by each element of @pRegions@ /must/ be--- a region that is contained within @srcImage@------ - The destination region specified by each element of @pRegions@--- /must/ be a region that is contained within @dstImage@------ - The union of all destination regions, specified by the elements of--- @pRegions@, /must/ not overlap in memory with any texel that /may/--- be sampled during the blit operation------ - @srcImage@ /must/ use a format that supports--- @VK_FORMAT_FEATURE_BLIT_SRC_BIT@, which is indicated by--- @VkFormatProperties@::@linearTilingFeatures@ (for linearly tiled--- images) or @VkFormatProperties@::@optimalTilingFeatures@ (for--- optimally tiled images) - as returned by--- @vkGetPhysicalDeviceFormatProperties@------ - @srcImage@ /must/ not use a format listed in--- [{html_spec_relative}#features-formats-requiring-sampler-ycbcr-conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)------ - @srcImage@ /must/ have been created with--- @VK_IMAGE_USAGE_TRANSFER_SRC_BIT@ usage flag------ - If @srcImage@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @srcImageLayout@ /must/ specify the layout of the image subresources--- of @srcImage@ specified in @pRegions@ at the time this command is--- executed on a @VkDevice@------ - @srcImageLayout@ /must/ be @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@,--- @VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL@ or @VK_IMAGE_LAYOUT_GENERAL@------ - @dstImage@ /must/ use a format that supports--- @VK_FORMAT_FEATURE_BLIT_DST_BIT@, which is indicated by--- @VkFormatProperties@::@linearTilingFeatures@ (for linearly tiled--- images) or @VkFormatProperties@::@optimalTilingFeatures@ (for--- optimally tiled images) - as returned by--- @vkGetPhysicalDeviceFormatProperties@------ - @dstImage@ /must/ not use a format listed in--- [{html_spec_relative}#features-formats-requiring-sampler-ycbcr-conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)------ - @dstImage@ /must/ have been created with--- @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ usage flag------ - If @dstImage@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @dstImageLayout@ /must/ specify the layout of the image subresources--- of @dstImage@ specified in @pRegions@ at the time this command is--- executed on a @VkDevice@------ - @dstImageLayout@ /must/ be @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@,--- @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@ or @VK_IMAGE_LAYOUT_GENERAL@------ - The sample count of @srcImage@ and @dstImage@ /must/ both be equal--- to @VK_SAMPLE_COUNT_1_BIT@------ - If either of @srcImage@ or @dstImage@ was created with a signed--- integer 'Graphics.Vulkan.Core10.Core.VkFormat', the other /must/--- also have been created with a signed integer--- 'Graphics.Vulkan.Core10.Core.VkFormat'------ - If either of @srcImage@ or @dstImage@ was created with an unsigned--- integer 'Graphics.Vulkan.Core10.Core.VkFormat', the other /must/--- also have been created with an unsigned integer--- 'Graphics.Vulkan.Core10.Core.VkFormat'------ - If either of @srcImage@ or @dstImage@ was created with a--- depth\/stencil format, the other /must/ have exactly the same format------ - If @srcImage@ was created with a depth\/stencil format, @filter@--- /must/ be @VK_FILTER_NEAREST@------ - @srcImage@ /must/ have been created with a @samples@ value of--- @VK_SAMPLE_COUNT_1_BIT@------ - @dstImage@ /must/ have been created with a @samples@ value of--- @VK_SAMPLE_COUNT_1_BIT@------ - If @filter@ is @VK_FILTER_LINEAR@, @srcImage@ /must/ be of a format--- which supports linear filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ - If @filter@ is @VK_FILTER_CUBIC_IMG@, @srcImage@ /must/ be of a--- format which supports cubic filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ - If @filter@ is @VK_FILTER_CUBIC_IMG@, @srcImage@ /must/ have a--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType' of--- @VK_IMAGE_TYPE_3D@------ - The @srcSubresource.mipLevel@ member of each element of @pRegions@--- /must/ be less than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was--- created------ - The @dstSubresource.mipLevel@ member of each element of @pRegions@--- /must/ be less than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was--- created------ - The @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of--- each element of @pRegions@ /must/ be less than or equal to the--- @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was--- created------ - The @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of--- each element of @pRegions@ /must/ be less than or equal to the--- @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was--- created------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @srcImage@ /must/ be a valid @VkImage@ handle------ - @srcImageLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @dstImage@ /must/ be a valid @VkImage@ handle------ - @dstImageLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @pRegions@ /must/ be a valid pointer to an array of @regionCount@--- valid @VkImageBlit@ structures------ - @filter@ /must/ be a valid 'Graphics.Vulkan.Core10.Sampler.VkFilter'--- value------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called outside of a render pass instance------ - @regionCount@ /must/ be greater than @0@------ - Each of @commandBuffer@, @dstImage@, and @srcImage@ /must/ have been--- created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Outside | Graphics | Transfer |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Sampler.VkFilter',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage', 'VkImageBlit',--- 'Graphics.Vulkan.Core10.Image.VkImageLayout'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdBlitImage" vkCmdBlitImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageBlit) -> ("filter" ::: VkFilter) -> IO ()--- | vkCmdCopyBufferToImage - Copy data from a buffer into an image------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @srcBuffer@ is the source buffer.------ - @dstImage@ is the destination image.------ - @dstImageLayout@ is the layout of the destination image subresources--- for the copy.------ - @regionCount@ is the number of regions to copy.------ - @pRegions@ is a pointer to an array of 'VkBufferImageCopy'--- structures specifying the regions to copy.------ = Description------ Each region in @pRegions@ is copied from the specified region of the--- source buffer to the specified region of the destination image.------ If the format of @dstImage@ is a [multi-planar image--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)),--- regions of each plane to be a target of a copy /must/ be specified--- separately using the @pRegions@ member of the 'VkBufferImageCopy'--- structure. In this case, the @aspectMask@ of @imageSubresource@ /must/--- be @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or--- @VK_IMAGE_ASPECT_PLANE_2_BIT@. For the purposes of--- @vkCmdCopyBufferToImage@, each plane of a multi-planar image is treated--- as having the format listed in--- [{html_spec_relative}#features-formats-compatible-planes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatible-planes)--- for the plane identified by the @aspectMask@ of the corresponding--- subresource. This applies both to 'Graphics.Vulkan.Core10.Core.VkFormat'--- and to coordinates used in the copy, which correspond to texels in the--- /plane/ rather than how these texels map to coordinates in the image as--- a whole.------ == Valid Usage------ - The buffer region specified by each element of @pRegions@ /must/ be--- a region that is contained within @srcBuffer@------ - The image region specified by each element of @pRegions@ /must/ be a--- region that is contained within @dstImage@ if the @dstImage@’s--- 'Graphics.Vulkan.Core10.Core.VkFormat' is not a [multi-planar--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),--- and /must/ be a region that is contained within the plane being--- copied to if the @dstImage@’s 'Graphics.Vulkan.Core10.Core.VkFormat'--- is a multi-planar format------ - The union of all source regions, and the union of all destination--- regions, specified by the elements of @pRegions@, /must/ not overlap--- in memory------ - @srcBuffer@ /must/ have been created with--- @VK_BUFFER_USAGE_TRANSFER_SRC_BIT@ usage flag------ - @dstImage@ /must/ use a format that supports--- @VK_FORMAT_FEATURE_TRANSFER_DST_BIT@, which is indicated by--- @VkFormatProperties@::@linearTilingFeatures@ (for linearly tiled--- images) or @VkFormatProperties@::@optimalTilingFeatures@ (for--- optimally tiled images) - as returned by--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceFormatProperties'------ - If @srcBuffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @dstImage@ /must/ have been created with--- @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ usage flag------ - If @dstImage@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @dstImage@ /must/ have a sample count equal to--- @VK_SAMPLE_COUNT_1_BIT@------ - @dstImageLayout@ /must/ specify the layout of the image subresources--- of @dstImage@ specified in @pRegions@ at the time this command is--- executed on a @VkDevice@------ - @dstImageLayout@ /must/ be @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@,--- @VK_IMAGE_LAYOUT_GENERAL@, or @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@------ - The @imageSubresource.mipLevel@ member of each element of @pRegions@--- /must/ be less than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was--- created------ - The @imageSubresource.baseArrayLayer@ +--- @imageSubresource.layerCount@ of each element of @pRegions@ /must/--- be less than or equal to the @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was--- created------ - The @imageOffset@ and and @imageExtent@ members of each element of--- @pRegions@ /must/ respect the image transfer granularity--- requirements of @commandBuffer@’s command pool’s queue family, as--- described in--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkQueueFamilyProperties'------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @srcBuffer@ /must/ be a valid @VkBuffer@ handle------ - @dstImage@ /must/ be a valid @VkImage@ handle------ - @dstImageLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @pRegions@ /must/ be a valid pointer to an array of @regionCount@--- valid @VkBufferImageCopy@ structures------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support transfer, graphics, or compute operations------ - This command /must/ only be called outside of a render pass instance------ - @regionCount@ /must/ be greater than @0@------ - Each of @commandBuffer@, @dstImage@, and @srcBuffer@ /must/ have--- been created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Outside | Transfer | Transfer |--- | Secondary | | Graphics | |--- | | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', 'VkBufferImageCopy',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'Graphics.Vulkan.Core10.Image.VkImageLayout'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdCopyBufferToImage" vkCmdCopyBufferToImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ()--- | vkCmdCopyImageToBuffer - Copy image data into a buffer------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @srcImage@ is the source image.------ - @srcImageLayout@ is the layout of the source image subresources for--- the copy.------ - @dstBuffer@ is the destination buffer.------ - @regionCount@ is the number of regions to copy.------ - @pRegions@ is a pointer to an array of 'VkBufferImageCopy'--- structures specifying the regions to copy.------ = Description------ Each region in @pRegions@ is copied from the specified region of the--- source image to the specified region of the destination buffer.------ If the 'Graphics.Vulkan.Core10.Core.VkFormat' of @srcImage@ is a--- [multi-planar image--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),--- regions of each plane to be a source of a copy /must/ be specified--- separately using the @pRegions@ member of the 'VkBufferImageCopy'--- structure. In this case, the @aspectMask@ of @imageSubresource@ /must/--- be @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or--- @VK_IMAGE_ASPECT_PLANE_2_BIT@. For the purposes of--- @vkCmdCopyBufferToImage@, each plane of a multi-planar image is treated--- as having the format listed in--- [{html_spec_relative}#features-formats-compatible-planes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatible-planes)--- for the plane identified by the @aspectMask@ of the corresponding--- subresource. This applies both to 'Graphics.Vulkan.Core10.Core.VkFormat'--- and to coordinates used in the copy, which correspond to texels in the--- /plane/ rather than how these texels map to coordinates in the image as--- a whole.------ == Valid Usage------ - The image region specified by each element of @pRegions@ /must/ be a--- region that is contained within @srcImage@ if the @srcImage@’s--- 'Graphics.Vulkan.Core10.Core.VkFormat' is not a [multi-planar--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),--- and /must/ be a region that is contained within the plane being--- copied if the @srcImage@’s 'Graphics.Vulkan.Core10.Core.VkFormat' is--- a multi-planar format------ - The buffer region specified by each element of @pRegions@ /must/ be--- a region that is contained within @dstBuffer@------ - The union of all source regions, and the union of all destination--- regions, specified by the elements of @pRegions@, /must/ not overlap--- in memory------ - @srcImage@ /must/ use a format that supports--- @VK_FORMAT_FEATURE_TRANSFER_SRC_BIT@, which is indicated by--- @VkFormatProperties@::@linearTilingFeatures@ (for linearly tiled--- images) or @VkFormatProperties@::@optimalTilingFeatures@ (for--- optimally tiled images) - as returned by--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceFormatProperties'------ - @srcImage@ /must/ have been created with--- @VK_IMAGE_USAGE_TRANSFER_SRC_BIT@ usage flag------ - If @srcImage@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @srcImage@ /must/ have a sample count equal to--- @VK_SAMPLE_COUNT_1_BIT@------ - @srcImageLayout@ /must/ specify the layout of the image subresources--- of @srcImage@ specified in @pRegions@ at the time this command is--- executed on a @VkDevice@------ - @srcImageLayout@ /must/ be @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@,--- @VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL@ or @VK_IMAGE_LAYOUT_GENERAL@------ - @dstBuffer@ /must/ have been created with--- @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ usage flag------ - If @dstBuffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - The @imageSubresource.mipLevel@ member of each element of @pRegions@--- /must/ be less than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was--- created------ - The @imageSubresource.baseArrayLayer@ +--- @imageSubresource.layerCount@ of each element of @pRegions@ /must/--- be less than or equal to the @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was--- created------ - The @imageOffset@ and and @imageExtent@ members of each element of--- @pRegions@ /must/ respect the image transfer granularity--- requirements of @commandBuffer@’s command pool’s queue family, as--- described in--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkQueueFamilyProperties'------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @srcImage@ /must/ be a valid @VkImage@ handle------ - @srcImageLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @dstBuffer@ /must/ be a valid @VkBuffer@ handle------ - @pRegions@ /must/ be a valid pointer to an array of @regionCount@--- valid @VkBufferImageCopy@ structures------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support transfer, graphics, or compute operations------ - This command /must/ only be called outside of a render pass instance------ - @regionCount@ /must/ be greater than @0@------ - Each of @commandBuffer@, @dstBuffer@, and @srcImage@ /must/ have--- been created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Outside | Transfer | Transfer |--- | Secondary | | Graphics | |--- | | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', 'VkBufferImageCopy',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'Graphics.Vulkan.Core10.Image.VkImageLayout'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdCopyImageToBuffer" vkCmdCopyImageToBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ()--- | vkCmdUpdateBuffer - Update a buffer’s contents from host memory------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @dstBuffer@ is a handle to the buffer to be updated.------ - @dstOffset@ is the byte offset into the buffer to start updating,--- and /must/ be a multiple of 4.------ - @dataSize@ is the number of bytes to update, and /must/ be a--- multiple of 4.------ - @pData@ is a pointer to the source data for the buffer update, and--- /must/ be at least @dataSize@ bytes in size.------ = Description------ @dataSize@ /must/ be less than or equal to 65536 bytes. For larger--- updates, applications /can/ use buffer to buffer--- [copies](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#copies-buffers).------ __Note__------ Buffer updates performed with @vkCmdUpdateBuffer@ first copy the data--- into command buffer memory when the command is recorded (which requires--- additional storage and may incur an additional allocation), and then--- copy the data from the command buffer into @dstBuffer@ when the command--- is executed on a device.------ The additional cost of this functionality compared to [buffer to buffer--- copies](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#copies-buffers)--- means it is only recommended for very small amounts of data, and is why--- it is limited to only 65536 bytes.------ Applications /can/ work around this by issuing multiple--- @vkCmdUpdateBuffer@ commands to different ranges of the same buffer, but--- it is strongly recommended that they /should/ not.------ The source data is copied from the user pointer to the command buffer--- when the command is called.------ @vkCmdUpdateBuffer@ is only allowed outside of a render pass. This--- command is treated as “transfer” operation, for the purposes of--- synchronization barriers. The @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ /must/--- be specified in @usage@ of--- 'Graphics.Vulkan.Core10.Buffer.VkBufferCreateInfo' in order for the--- buffer to be compatible with @vkCmdUpdateBuffer@.------ == Valid Usage------ - @dstOffset@ /must/ be less than the size of @dstBuffer@------ - @dataSize@ /must/ be less than or equal to the size of @dstBuffer@--- minus @dstOffset@------ - @dstBuffer@ /must/ have been created with--- @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ usage flag------ - If @dstBuffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @dstOffset@ /must/ be a multiple of @4@------ - @dataSize@ /must/ be less than or equal to @65536@------ - @dataSize@ /must/ be a multiple of @4@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @dstBuffer@ /must/ be a valid @VkBuffer@ handle------ - @pData@ /must/ be a valid pointer to an array of @dataSize@ bytes------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support transfer, graphics, or compute operations------ - This command /must/ only be called outside of a render pass instance------ - @dataSize@ /must/ be greater than @0@------ - Both of @commandBuffer@, and @dstBuffer@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Outside | Transfer | Transfer |--- | Secondary | | Graphics | |--- | | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdUpdateBuffer" vkCmdUpdateBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("dataSize" ::: VkDeviceSize) -> ("pData" ::: Ptr ()) -> IO ()--- | vkCmdFillBuffer - Fill a region of a buffer with a fixed value------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @dstBuffer@ is the buffer to be filled.------ - @dstOffset@ is the byte offset into the buffer at which to start--- filling, and /must/ be a multiple of 4.------ - @size@ is the number of bytes to fill, and /must/ be either a--- multiple of 4, or @VK_WHOLE_SIZE@ to fill the range from @offset@ to--- the end of the buffer. If @VK_WHOLE_SIZE@ is used and the remaining--- size of the buffer is not a multiple of 4, then the nearest smaller--- multiple is used.------ - @data@ is the 4-byte word written repeatedly to the buffer to fill--- @size@ bytes of data. The data word is written to memory according--- to the host endianness.------ = Description------ @vkCmdFillBuffer@ is treated as “transfer” operation for the purposes of--- synchronization barriers. The @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ /must/--- be specified in @usage@ of @VkBufferCreateInfo@ in order for the buffer--- to be compatible with @vkCmdFillBuffer@.------ == Valid Usage------ - @dstOffset@ /must/ be less than the size of @dstBuffer@------ - @dstOffset@ /must/ be a multiple of @4@------ - If @size@ is not equal to @VK_WHOLE_SIZE@, @size@ /must/ be greater--- than @0@------ - If @size@ is not equal to @VK_WHOLE_SIZE@, @size@ /must/ be less--- than or equal to the size of @dstBuffer@ minus @dstOffset@------ - If @size@ is not equal to @VK_WHOLE_SIZE@, @size@ /must/ be a--- multiple of @4@------ - @dstBuffer@ /must/ have been created with--- @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ usage flag------ - If @dstBuffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @dstBuffer@ /must/ be a valid @VkBuffer@ handle------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support transfer, graphics or compute operations------ - This command /must/ only be called outside of a render pass instance------ - Both of @commandBuffer@, and @dstBuffer@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Outside | Transfer | Transfer |--- | Secondary | | Graphics | |--- | | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdFillBuffer" vkCmdFillBuffer :: ("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("data" ::: Word32) -> IO ()--- | vkCmdClearColorImage - Clear regions of a color image------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @image@ is the image to be cleared.------ - @imageLayout@ specifies the current layout of the image subresource--- ranges to be cleared, and /must/ be--- @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@, @VK_IMAGE_LAYOUT_GENERAL@ or--- @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@.------ - @pColor@ is a pointer to a 'VkClearColorValue' structure that--- contains the values the image subresource ranges will be cleared to--- (see--- [{html_spec_relative}#clears-values](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#clears-values)--- below).------ - @rangeCount@ is the number of image subresource range structures in--- @pRanges@.------ - @pRanges@ points to an array of--- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'--- structures that describe a range of mipmap levels, array layers, and--- aspects to be cleared, as described in [Image--- Views](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-image-views).--- The @aspectMask@ of all image subresource ranges /must/ only include--- @VK_IMAGE_ASPECT_COLOR_BIT@.------ = Description------ Each specified range in @pRanges@ is cleared to the value specified by--- @pColor@.------ == Valid Usage------ - @image@ /must/ use a format that supports--- @VK_FORMAT_FEATURE_TRANSFER_DST_BIT@, which is indicated by--- @VkFormatProperties@::@linearTilingFeatures@ (for linearly tiled--- images) or @VkFormatProperties@::@optimalTilingFeatures@ (for--- optimally tiled images) - as returned by--- @vkGetPhysicalDeviceFormatProperties@------ - @image@ /must/ have been created with--- @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ usage flag------ - @image@ /must/ not use a format listed in--- [{html_spec_relative}#features-formats-requiring-sampler-ycbcr-conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)------ - If @image@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @imageLayout@ /must/ specify the layout of the image subresource--- ranges of @image@ specified in @pRanges@ at the time this command is--- executed on a @VkDevice@------ - @imageLayout@ /must/ be @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@,--- @VK_IMAGE_LAYOUT_GENERAL@, or @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@------ - The--- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'::@baseMipLevel@--- members of the elements of the @pRanges@ array /must/ each be less--- than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - For each 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'--- element of @pRanges@, if the @levelCount@ member is not--- @VK_REMAINING_MIP_LEVELS@, then @baseMipLevel@ + @levelCount@ /must/--- be less than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - The--- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'::@baseArrayLayer@--- members of the elements of the @pRanges@ array /must/ each be less--- than the @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - For each 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'--- element of @pRanges@, if the @layerCount@ member is not--- @VK_REMAINING_ARRAY_LAYERS@, then @baseArrayLayer@ + @layerCount@--- /must/ be less than the @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - @image@ /must/ not have a compressed or depth\/stencil format------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @image@ /must/ be a valid @VkImage@ handle------ - @imageLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @pColor@ /must/ be a valid pointer to a valid @VkClearColorValue@--- union------ - @pRanges@ /must/ be a valid pointer to an array of @rangeCount@--- valid @VkImageSubresourceRange@ structures------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - This command /must/ only be called outside of a render pass instance------ - @rangeCount@ /must/ be greater than @0@------ - Both of @commandBuffer@, and @image@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Outside | Graphics | Transfer |--- | Secondary | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'VkClearColorValue', 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'Graphics.Vulkan.Core10.Image.VkImageLayout',--- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdClearColorImage" vkCmdClearColorImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pColor" ::: Ptr VkClearColorValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ()--- | vkCmdClearDepthStencilImage - Fill regions of a combined depth\/stencil--- image------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @image@ is the image to be cleared.------ - @imageLayout@ specifies the current layout of the image subresource--- ranges to be cleared, and /must/ be @VK_IMAGE_LAYOUT_GENERAL@ or--- @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@.------ - @pDepthStencil@ is a pointer to a 'VkClearDepthStencilValue'--- structure that contains the values the depth and stencil image--- subresource ranges will be cleared to (see--- [{html_spec_relative}#clears-values](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#clears-values)--- below).------ - @rangeCount@ is the number of image subresource range structures in--- @pRanges@.------ - @pRanges@ points to an array of--- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'--- structures that describe a range of mipmap levels, array layers, and--- aspects to be cleared, as described in [Image--- Views](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-image-views).--- The @aspectMask@ of each image subresource range in @pRanges@ /can/--- include @VK_IMAGE_ASPECT_DEPTH_BIT@ if the image format has a depth--- component, and @VK_IMAGE_ASPECT_STENCIL_BIT@ if the image format has--- a stencil component. @pDepthStencil@ is a pointer to a--- @VkClearDepthStencilValue@ structure that contains the values the--- image subresource ranges will be cleared to (see--- [{html_spec_relative}#clears-values](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#clears-values)--- below).------ == Valid Usage------ - @image@ /must/ use a format that supports--- @VK_FORMAT_FEATURE_TRANSFER_DST_BIT@, which is indicated by--- @VkFormatProperties@::@linearTilingFeatures@ (for linearly tiled--- images) or @VkFormatProperties@::@optimalTilingFeatures@ (for--- optimally tiled images) - as returned by--- @vkGetPhysicalDeviceFormatProperties@------ - @image@ /must/ have been created with--- @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ usage flag------ - If @image@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @imageLayout@ /must/ specify the layout of the image subresource--- ranges of @image@ specified in @pRanges@ at the time this command is--- executed on a @VkDevice@------ - @imageLayout@ /must/ be either of--- @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@ or @VK_IMAGE_LAYOUT_GENERAL@------ - The--- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'::@baseMipLevel@--- members of the elements of the @pRanges@ array /must/ each be less--- than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - For each 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'--- element of @pRanges@, if the @levelCount@ member is not--- @VK_REMAINING_MIP_LEVELS@, then @baseMipLevel@ + @levelCount@ /must/--- be less than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - The--- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'::@baseArrayLayer@--- members of the elements of the @pRanges@ array /must/ each be less--- than the @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - For each 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'--- element of @pRanges@, if the @layerCount@ member is not--- @VK_REMAINING_ARRAY_LAYERS@, then @baseArrayLayer@ + @layerCount@--- /must/ be less than the @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - @image@ /must/ have a depth\/stencil format------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @image@ /must/ be a valid @VkImage@ handle------ - @imageLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @pDepthStencil@ /must/ be a valid pointer to a valid--- @VkClearDepthStencilValue@ structure------ - @pRanges@ /must/ be a valid pointer to an array of @rangeCount@--- valid @VkImageSubresourceRange@ structures------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called outside of a render pass instance------ - @rangeCount@ /must/ be greater than @0@------ - Both of @commandBuffer@, and @image@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Outside | Graphics | Transfer |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'VkClearDepthStencilValue',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'Graphics.Vulkan.Core10.Image.VkImageLayout',--- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdClearDepthStencilImage" vkCmdClearDepthStencilImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pDepthStencil" ::: Ptr VkClearDepthStencilValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ()--- | vkCmdClearAttachments - Clear regions within bound framebuffer--- attachments------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @attachmentCount@ is the number of entries in the @pAttachments@--- array.------ - @pAttachments@ is a pointer to an array of 'VkClearAttachment'--- structures defining the attachments to clear and the clear values to--- use.------ - @rectCount@ is the number of entries in the @pRects@ array.------ - @pRects@ points to an array of 'VkClearRect' structures defining--- regions within each selected attachment to clear.------ = Description------ @vkCmdClearAttachments@ /can/ clear multiple regions of each attachment--- used in the current subpass of a render pass instance. This command--- /must/ be called only inside a render pass instance, and implicitly--- selects the images to clear based on the current framebuffer attachments--- and the command parameters.------ == Valid Usage------ - If the @aspectMask@ member of any element of @pAttachments@ contains--- @VK_IMAGE_ASPECT_COLOR_BIT@, the @colorAttachment@ member of that--- element /must/ refer to a valid color attachment in the current--- subpass------ - The rectangular region specified by each element of @pRects@ /must/--- be contained within the render area of the current render pass--- instance------ - The layers specified by each element of @pRects@ /must/ be contained--- within every attachment that @pAttachments@ refers to------ - If the render pass instance this is recorded in uses multiview, then--- @baseArrayLayer@ /must/ be zero and @layerCount@ /must/ be one.------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pAttachments@ /must/ be a valid pointer to an array of--- @attachmentCount@ valid @VkClearAttachment@ structures------ - @pRects@ /must/ be a valid pointer to an array of @rectCount@--- @VkClearRect@ structures------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called inside of a render pass instance------ - @attachmentCount@ /must/ be greater than @0@------ - @rectCount@ /must/ be greater than @0@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Inside | Graphics | Graphics |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'VkClearAttachment', 'VkClearRect',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdClearAttachments" vkCmdClearAttachments :: ("commandBuffer" ::: VkCommandBuffer) -> ("attachmentCount" ::: Word32) -> ("pAttachments" ::: Ptr VkClearAttachment) -> ("rectCount" ::: Word32) -> ("pRects" ::: Ptr VkClearRect) -> IO ()--- | vkCmdResolveImage - Resolve regions of an image------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @srcImage@ is the source image.------ - @srcImageLayout@ is the layout of the source image subresources for--- the resolve.------ - @dstImage@ is the destination image.------ - @dstImageLayout@ is the layout of the destination image subresources--- for the resolve.------ - @regionCount@ is the number of regions to resolve.------ - @pRegions@ is a pointer to an array of 'VkImageResolve' structures--- specifying the regions to resolve.------ = Description------ During the resolve the samples corresponding to each pixel location in--- the source are converted to a single sample before being written to the--- destination. If the source formats are floating-point or normalized--- types, the sample values for each pixel are resolved in an--- implementation-dependent manner. If the source formats are integer--- types, a single sample’s value is selected for each pixel.------ @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets--- in texels of the sub-regions of the source and destination image data.--- @extent@ is the size in texels of the source image to resolve in--- @width@, @height@ and @depth@.------ Resolves are done layer by layer starting with @baseArrayLayer@ member--- of @srcSubresource@ for the source and @dstSubresource@ for the--- destination. @layerCount@ layers are resolved to the destination image.------ == Valid Usage------ - The source region specified by each element of @pRegions@ /must/ be--- a region that is contained within @srcImage@------ - The destination region specified by each element of @pRegions@--- /must/ be a region that is contained within @dstImage@------ - The union of all source regions, and the union of all destination--- regions, specified by the elements of @pRegions@, /must/ not overlap--- in memory------ - If @srcImage@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @srcImage@ /must/ have a sample count equal to any valid sample--- count value other than @VK_SAMPLE_COUNT_1_BIT@------ - If @dstImage@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @dstImage@ /must/ have a sample count equal to--- @VK_SAMPLE_COUNT_1_BIT@------ - @srcImageLayout@ /must/ specify the layout of the image subresources--- of @srcImage@ specified in @pRegions@ at the time this command is--- executed on a @VkDevice@------ - @srcImageLayout@ /must/ be @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@,--- @VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL@ or @VK_IMAGE_LAYOUT_GENERAL@------ - @dstImageLayout@ /must/ specify the layout of the image subresources--- of @dstImage@ specified in @pRegions@ at the time this command is--- executed on a @VkDevice@------ - @dstImageLayout@ /must/ be @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@,--- @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@ or @VK_IMAGE_LAYOUT_GENERAL@------ - If @dstImage@ was created with @tiling@ equal to--- @VK_IMAGE_TILING_LINEAR@, @dstImage@ /must/ have been created with a--- @format@ that supports being a color attachment, as specified by the--- @VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ returned by--- @vkGetPhysicalDeviceFormatProperties@------ - If @dstImage@ was created with @tiling@ equal to--- @VK_IMAGE_TILING_OPTIMAL@, @dstImage@ /must/ have been created with--- a @format@ that supports being a color attachment, as specified by--- the @VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT@ flag in--- @VkFormatProperties@::@optimalTilingFeatures@ returned by--- @vkGetPhysicalDeviceFormatProperties@------ - @srcImage@ and @dstImage@ /must/ have been created with the same--- image format------ - The @srcSubresource.mipLevel@ member of each element of @pRegions@--- /must/ be less than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was--- created------ - The @dstSubresource.mipLevel@ member of each element of @pRegions@--- /must/ be less than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was--- created------ - The @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of--- each element of @pRegions@ /must/ be less than or equal to the--- @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @srcImage@ was--- created------ - The @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of--- each element of @pRegions@ /must/ be less than or equal to the--- @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @dstImage@ was--- created------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @srcImage@ /must/ be a valid @VkImage@ handle------ - @srcImageLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @dstImage@ /must/ be a valid @VkImage@ handle------ - @dstImageLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @pRegions@ /must/ be a valid pointer to an array of @regionCount@--- valid @VkImageResolve@ structures------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called outside of a render pass instance------ - @regionCount@ /must/ be greater than @0@------ - Each of @commandBuffer@, @dstImage@, and @srcImage@ /must/ have been--- created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Outside | Graphics | Transfer |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'Graphics.Vulkan.Core10.Image.VkImageLayout', 'VkImageResolve'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdResolveImage" vkCmdResolveImage :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageResolve) -> IO ()--- | vkCmdSetEvent - Set an event object to signaled state------ = Parameters------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @event@ is the event that will be signaled.------ - @stageMask@ specifies the [source stage--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages)--- used to determine when the @event@ is signaled.------ = Description------ When 'vkCmdSetEvent' is submitted to a queue, it defines an execution--- dependency on commands that were submitted before it, and defines an--- event signal operation which sets the event to the signaled state.------ The first [synchronization--- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-scopes)--- includes all commands that occur earlier in [submission--- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order).--- The synchronization scope is limited to operations on the pipeline--- stages determined by the [source stage--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)--- specified by @stageMask@.------ The second [synchronization--- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-scopes)--- includes only the event signal operation.------ If @event@ is already in the signaled state when 'vkCmdSetEvent' is--- executed on the device, then 'vkCmdSetEvent' has no effect, no event--- signal operation occurs, and no execution dependency is generated.------ == Valid Usage------ - @stageMask@ /must/ not include @VK_PIPELINE_STAGE_HOST_BIT@------ - If the [geometry--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)--- feature is not enabled, @stageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@------ - If the [tessellation--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)--- feature is not enabled, @stageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or--- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@------ - @commandBuffer@’s current device mask /must/ include exactly one--- physical device.------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @event@ /must/ be a valid @VkEvent@ handle------ - @stageMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' values------ - @stageMask@ /must/ not be @0@------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - This command /must/ only be called outside of a render pass instance------ - Both of @commandBuffer@, and @event@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Outside | Graphics | |--- | Secondary | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Event.VkEvent',--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlags'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdSetEvent" vkCmdSetEvent :: ("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ()--- | vkCmdResetEvent - Reset an event object to non-signaled state------ = Parameters------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @event@ is the event that will be unsignaled.------ - @stageMask@ is a bitmask of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' specifying--- the [source stage--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages)--- used to determine when the @event@ is unsignaled.------ = Description------ When 'vkCmdResetEvent' is submitted to a queue, it defines an execution--- dependency on commands that were submitted before it, and defines an--- event unsignal operation which resets the event to the unsignaled state.------ The first [synchronization--- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-scopes)--- includes all commands that occur earlier in [submission--- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order).--- The synchronization scope is limited to operations on the pipeline--- stages determined by the [source stage--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)--- specified by @stageMask@.------ The second [synchronization--- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-scopes)--- includes only the event unsignal operation.------ If @event@ is already in the unsignaled state when 'vkCmdResetEvent' is--- executed on the device, then 'vkCmdResetEvent' has no effect, no event--- unsignal operation occurs, and no execution dependency is generated.------ == Valid Usage------ - @stageMask@ /must/ not include @VK_PIPELINE_STAGE_HOST_BIT@------ - If the [geometry--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)--- feature is not enabled, @stageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@------ - If the [tessellation--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)--- feature is not enabled, @stageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or--- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@------ - When this command executes, @event@ /must/ not be waited on by a--- @vkCmdWaitEvents@ command that is currently executing------ - @commandBuffer@’s current device mask /must/ include exactly one--- physical device.------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @event@ /must/ be a valid @VkEvent@ handle------ - @stageMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' values------ - @stageMask@ /must/ not be @0@------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - This command /must/ only be called outside of a render pass instance------ - Both of @commandBuffer@, and @event@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Outside | Graphics | |--- | Secondary | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Event.VkEvent',--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlags'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdResetEvent" vkCmdResetEvent :: ("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ()--- | vkCmdWaitEvents - Wait for one or more events and insert a set of memory------ = Parameters------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @eventCount@ is the length of the @pEvents@ array.------ - @pEvents@ is an array of event object handles to wait on.------ - @srcStageMask@ is a bitmask of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' specifying--- the [source stage--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages).------ - @dstStageMask@ is a bitmask of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' specifying--- the [destination stage--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages).------ - @memoryBarrierCount@ is the length of the @pMemoryBarriers@ array.------ - @pMemoryBarriers@ is a pointer to an array of 'VkMemoryBarrier'--- structures.------ - @bufferMemoryBarrierCount@ is the length of the--- @pBufferMemoryBarriers@ array.------ - @pBufferMemoryBarriers@ is a pointer to an array of--- 'VkBufferMemoryBarrier' structures.------ - @imageMemoryBarrierCount@ is the length of the--- @pImageMemoryBarriers@ array.------ - @pImageMemoryBarriers@ is a pointer to an array of--- 'VkImageMemoryBarrier' structures.------ = Description------ When @vkCmdWaitEvents@ is submitted to a queue, it defines a memory--- dependency between prior event signal operations on the same queue or--- the host, and subsequent commands. @vkCmdWaitEvents@ /must/ not be used--- to wait on event signal operations occuring on other queues.------ The first synchronization scope only includes event signal operations--- that operate on members of @pEvents@, and the operations that--- happened-before the event signal operations. Event signal operations--- performed by 'vkCmdSetEvent' that occur earlier in [submission--- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order)--- are included in the first synchronization scope, if the [logically--- latest](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-order)--- pipeline stage in their @stageMask@ parameter is [logically--- earlier](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-order)--- than or equal to the [logically--- latest](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-order)--- pipeline stage in @srcStageMask@. Event signal operations performed by--- 'Graphics.Vulkan.Core10.Event.vkSetEvent' are only included in the first--- synchronization scope if @VK_PIPELINE_STAGE_HOST_BIT@ is included in--- @srcStageMask@.------ The second [synchronization--- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-scopes)--- includes all commands that occur later in [submission--- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order).--- The second synchronization scope is limited to operations on the--- pipeline stages determined by the [destination stage--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)--- specified by @dstStageMask@.------ The first [access--- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)--- is limited to access in the pipeline stages determined by the [source--- stage--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)--- specified by @srcStageMask@. Within that, the first access scope only--- includes the first access scopes defined by elements of the--- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@--- arrays, which each define a set of [memory--- barriers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-memory-barriers).--- If no memory barriers are specified, then the first access scope--- includes no accesses.------ The second [access--- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)--- is limited to access in the pipeline stages determined by the--- [destination stage--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)--- specified by @dstStageMask@. Within that, the second access scope only--- includes the second access scopes defined by elements of the--- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@--- arrays, which each define a set of [memory--- barriers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-memory-barriers).--- If no memory barriers are specified, then the second access scope--- includes no accesses.------ __Note__------ 'vkCmdWaitEvents' is used with 'vkCmdSetEvent' to define a memory--- dependency between two sets of action commands, roughly in the same way--- as pipeline barriers, but split into two commands such that work between--- the two /may/ execute unhindered.------ __Note__------ Applications /should/ be careful to avoid race conditions when using--- events. There is no direct ordering guarantee between a--- 'vkCmdResetEvent' command and a 'vkCmdWaitEvents' command submitted--- after it, so some other execution dependency /must/ be included between--- these commands (e.g. a semaphore).------ == Valid Usage------ - @srcStageMask@ /must/ be the bitwise OR of the @stageMask@ parameter--- used in previous calls to @vkCmdSetEvent@ with any of the members of--- @pEvents@ and @VK_PIPELINE_STAGE_HOST_BIT@ if any of the members of--- @pEvents@ was set using @vkSetEvent@------ - If the [geometry--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)--- feature is not enabled, @srcStageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@------ - If the [geometry--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)--- feature is not enabled, @dstStageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@------ - If the [tessellation--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)--- feature is not enabled, @srcStageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or--- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@------ - If the [tessellation--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)--- feature is not enabled, @dstStageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or--- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@------ - If @pEvents@ includes one or more events that will be signaled by--- @vkSetEvent@ after @commandBuffer@ has been submitted to a queue,--- then @vkCmdWaitEvents@ /must/ not be called inside a render pass--- instance------ - Any pipeline stage included in @srcStageMask@ or @dstStageMask@--- /must/ be supported by the capabilities of the queue family--- specified by the @queueFamilyIndex@ member of the--- 'Graphics.Vulkan.Core10.CommandPool.VkCommandPoolCreateInfo'--- structure that was used to create the @VkCommandPool@ that--- @commandBuffer@ was allocated from, as specified in the [table of--- supported pipeline--- stages](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-supported).------ - Each element of @pMemoryBarriers@, @pBufferMemoryBarriers@ or--- @pImageMemoryBarriers@ /must/ not have any access flag included in--- its @srcAccessMask@ member if that bit is not supported by any of--- the pipeline stages in @srcStageMask@, as specified in the [table of--- supported access--- types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types-supported).------ - Each element of @pMemoryBarriers@, @pBufferMemoryBarriers@ or--- @pImageMemoryBarriers@ /must/ not have any access flag included in--- its @dstAccessMask@ member if that bit is not supported by any of--- the pipeline stages in @dstStageMask@, as specified in the [table of--- supported access--- types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types-supported).------ - @commandBuffer@’s current device mask /must/ include exactly one--- physical device.------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pEvents@ /must/ be a valid pointer to an array of @eventCount@--- valid @VkEvent@ handles------ - @srcStageMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' values------ - @srcStageMask@ /must/ not be @0@------ - @dstStageMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' values------ - @dstStageMask@ /must/ not be @0@------ - If @memoryBarrierCount@ is not @0@, @pMemoryBarriers@ /must/ be a--- valid pointer to an array of @memoryBarrierCount@ valid--- @VkMemoryBarrier@ structures------ - If @bufferMemoryBarrierCount@ is not @0@, @pBufferMemoryBarriers@--- /must/ be a valid pointer to an array of @bufferMemoryBarrierCount@--- valid @VkBufferMemoryBarrier@ structures------ - If @imageMemoryBarrierCount@ is not @0@, @pImageMemoryBarriers@--- /must/ be a valid pointer to an array of @imageMemoryBarrierCount@--- valid @VkImageMemoryBarrier@ structures------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - @eventCount@ /must/ be greater than @0@------ - Both of @commandBuffer@, and the elements of @pEvents@ /must/ have--- been created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'VkBufferMemoryBarrier', 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Event.VkEvent', 'VkImageMemoryBarrier',--- 'VkMemoryBarrier', 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlags'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdWaitEvents" vkCmdWaitEvents :: ("commandBuffer" ::: VkCommandBuffer) -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr VkEvent) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ()--- | vkCmdPipelineBarrier - Insert a memory dependency------ = Parameters------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @srcStageMask@ is a bitmask of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' specifying--- the [source stage--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks).------ - @dstStageMask@ is a bitmask of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' specifying--- the [destination stage--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks).------ - @dependencyFlags@ is a bitmask of--- 'Graphics.Vulkan.Core10.Pass.VkDependencyFlagBits' specifying how--- execution and memory dependencies are formed.------ - @memoryBarrierCount@ is the length of the @pMemoryBarriers@ array.------ - @pMemoryBarriers@ is a pointer to an array of 'VkMemoryBarrier'--- structures.------ - @bufferMemoryBarrierCount@ is the length of the--- @pBufferMemoryBarriers@ array.------ - @pBufferMemoryBarriers@ is a pointer to an array of--- 'VkBufferMemoryBarrier' structures.------ - @imageMemoryBarrierCount@ is the length of the--- @pImageMemoryBarriers@ array.------ - @pImageMemoryBarriers@ is a pointer to an array of--- 'VkImageMemoryBarrier' structures.------ = Description------ When 'vkCmdPipelineBarrier' is submitted to a queue, it defines a memory--- dependency between commands that were submitted before it, and those--- submitted after it.------ If 'vkCmdPipelineBarrier' was recorded outside a render pass instance,--- the first [synchronization--- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-scopes)--- includes all commands that occur earlier in [submission--- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order).--- If 'vkCmdPipelineBarrier' was recorded inside a render pass instance,--- the first synchronization scope includes only commands that occur--- earlier in [submission--- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order)--- within the same subpass. In either case, the first synchronization scope--- is limited to operations on the pipeline stages determined by the--- [source stage--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)--- specified by @srcStageMask@.------ If 'vkCmdPipelineBarrier' was recorded outside a render pass instance,--- the second [synchronization--- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-scopes)--- includes all commands that occur later in [submission--- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order).--- If 'vkCmdPipelineBarrier' was recorded inside a render pass instance,--- the second synchronization scope includes only commands that occur later--- in [submission--- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order)--- within the same subpass. In either case, the second synchronization--- scope is limited to operations on the pipeline stages determined by the--- [destination stage--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)--- specified by @dstStageMask@.------ The first [access--- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)--- is limited to access in the pipeline stages determined by the [source--- stage--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)--- specified by @srcStageMask@. Within that, the first access scope only--- includes the first access scopes defined by elements of the--- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@--- arrays, which each define a set of [memory--- barriers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-memory-barriers).--- If no memory barriers are specified, then the first access scope--- includes no accesses.------ The second [access--- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)--- is limited to access in the pipeline stages determined by the--- [destination stage--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)--- specified by @dstStageMask@. Within that, the second access scope only--- includes the second access scopes defined by elements of the--- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@--- arrays, which each define a set of [memory--- barriers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-memory-barriers).--- If no memory barriers are specified, then the second access scope--- includes no accesses.------ If @dependencyFlags@ includes @VK_DEPENDENCY_BY_REGION_BIT@, then any--- dependency between--- [framebuffer-space](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-framebuffer-regions)--- pipeline stages is--- [framebuffer-local](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-framebuffer-regions)--- - otherwise it is--- [framebuffer-global](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-framebuffer-regions).------ == Valid Usage------ - If the [geometry--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)--- feature is not enabled, @srcStageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@------ - If the [geometry--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)--- feature is not enabled, @dstStageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@------ - If the [tessellation--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)--- feature is not enabled, @srcStageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or--- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@------ - If the [tessellation--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)--- feature is not enabled, @dstStageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or--- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- the render pass /must/ have been created with a--- @VkSubpassDependency@ instance in @pDependencies@ that expresses a--- dependency from the current subpass to itself.------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- @srcStageMask@ /must/ contain a subset of the bit values in the--- @srcStageMask@ member of that instance of @VkSubpassDependency@------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- @dstStageMask@ /must/ contain a subset of the bit values in the--- @dstStageMask@ member of that instance of @VkSubpassDependency@------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- the @srcAccessMask@ of any element of @pMemoryBarriers@ or--- @pImageMemoryBarriers@ /must/ contain a subset of the bit values the--- @srcAccessMask@ member of that instance of @VkSubpassDependency@------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- the @dstAccessMask@ of any element of @pMemoryBarriers@ or--- @pImageMemoryBarriers@ /must/ contain a subset of the bit values the--- @dstAccessMask@ member of that instance of @VkSubpassDependency@------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- @dependencyFlags@ /must/ be equal to the @dependencyFlags@ member of--- that instance of @VkSubpassDependency@------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- @bufferMemoryBarrierCount@ /must/ be @0@------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- the @image@ member of any element of @pImageMemoryBarriers@ /must/--- be equal to one of the elements of @pAttachments@ that the current--- @framebuffer@ was created with, that is also referred to by one of--- the elements of the @pColorAttachments@, @pResolveAttachments@ or--- @pDepthStencilAttachment@ members of the @VkSubpassDescription@--- instance that the current subpass was created with------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- the @oldLayout@ and @newLayout@ members of any element of--- @pImageMemoryBarriers@ /must/ be equal to the @layout@ member of an--- element of the @pColorAttachments@, @pResolveAttachments@ or--- @pDepthStencilAttachment@ members of the @VkSubpassDescription@--- instance that the current subpass was created with, that refers to--- the same @image@------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- the @oldLayout@ and @newLayout@ members of an element of--- @pImageMemoryBarriers@ /must/ be equal------ - If @vkCmdPipelineBarrier@ is called within a render pass instance,--- the @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members of any--- element of @pImageMemoryBarriers@ /must/ be--- @VK_QUEUE_FAMILY_IGNORED@------ - Any pipeline stage included in @srcStageMask@ or @dstStageMask@--- /must/ be supported by the capabilities of the queue family--- specified by the @queueFamilyIndex@ member of the--- 'Graphics.Vulkan.Core10.CommandPool.VkCommandPoolCreateInfo'--- structure that was used to create the @VkCommandPool@ that--- @commandBuffer@ was allocated from, as specified in the [table of--- supported pipeline--- stages](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-supported).------ - Each element of @pMemoryBarriers@, @pBufferMemoryBarriers@ and--- @pImageMemoryBarriers@ /must/ not have any access flag included in--- its @srcAccessMask@ member if that bit is not supported by any of--- the pipeline stages in @srcStageMask@, as specified in the [table of--- supported access--- types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types-supported).------ - Each element of @pMemoryBarriers@, @pBufferMemoryBarriers@ and--- @pImageMemoryBarriers@ /must/ not have any access flag included in--- its @dstAccessMask@ member if that bit is not supported by any of--- the pipeline stages in @dstStageMask@, as specified in the [table of--- supported access--- types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types-supported).------ - If @vkCmdPipelineBarrier@ is called outside of a render pass--- instance, @dependencyFlags@ /must/ not include--- @VK_DEPENDENCY_VIEW_LOCAL_BIT@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @srcStageMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' values------ - @srcStageMask@ /must/ not be @0@------ - @dstStageMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' values------ - @dstStageMask@ /must/ not be @0@------ - @dependencyFlags@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Pass.VkDependencyFlagBits' values------ - If @memoryBarrierCount@ is not @0@, @pMemoryBarriers@ /must/ be a--- valid pointer to an array of @memoryBarrierCount@ valid--- @VkMemoryBarrier@ structures------ - If @bufferMemoryBarrierCount@ is not @0@, @pBufferMemoryBarriers@--- /must/ be a valid pointer to an array of @bufferMemoryBarrierCount@--- valid @VkBufferMemoryBarrier@ structures------ - If @imageMemoryBarrierCount@ is not @0@, @pImageMemoryBarriers@--- /must/ be a valid pointer to an array of @imageMemoryBarrierCount@--- valid @VkImageMemoryBarrier@ structures------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support transfer, graphics, or compute operations------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Transfer | |--- | Secondary | | Graphics | |--- | | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'VkBufferMemoryBarrier', 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Pass.VkDependencyFlags', 'VkImageMemoryBarrier',--- 'VkMemoryBarrier', 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlags'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdPipelineBarrier" vkCmdPipelineBarrier :: ("commandBuffer" ::: VkCommandBuffer) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("dependencyFlags" ::: VkDependencyFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ()--- | vkCmdBeginQuery - Begin a query------ = Parameters------ - @commandBuffer@ is the command buffer into which this command will--- be recorded.------ - @queryPool@ is the query pool that will manage the results of the--- query.------ - @query@ is the query index within the query pool that will contain--- the results.------ - @flags@ is a bitmask of--- 'Graphics.Vulkan.Core10.CommandBuffer.VkQueryControlFlagBits'--- specifying constraints on the types of queries that /can/ be--- performed.------ = Description------ If the @queryType@ of the pool is @VK_QUERY_TYPE_OCCLUSION@ and @flags@--- contains @VK_QUERY_CONTROL_PRECISE_BIT@, an implementation /must/ return--- a result that matches the actual number of samples passed. This is--- described in more detail in [Occlusion--- Queries](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-occlusion).------ After beginning a query, that query is considered /active/ within the--- command buffer it was called in until that same query is ended. Queries--- active in a primary command buffer when secondary command buffers are--- executed are considered active for those secondary command buffers.------ == Valid Usage------ - @queryPool@ /must/ have been created with a @queryType@ that differs--- from that of any queries that are--- [active](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-active)--- within @commandBuffer@------ - All queries used by the command /must/ be unavailable------ - If the [precise occlusion--- queries](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-occlusionQueryPrecise)--- feature is not enabled, or the @queryType@ used to create--- @queryPool@ was not @VK_QUERY_TYPE_OCCLUSION@, @flags@ /must/ not--- contain @VK_QUERY_CONTROL_PRECISE_BIT@------ - @query@ /must/ be less than the number of queries in @queryPool@------ - If the @queryType@ used to create @queryPool@ was--- @VK_QUERY_TYPE_OCCLUSION@, the @VkCommandPool@ that @commandBuffer@--- was allocated from /must/ support graphics operations------ - If the @queryType@ used to create @queryPool@ was--- @VK_QUERY_TYPE_PIPELINE_STATISTICS@ and any of the--- @pipelineStatistics@ indicate graphics operations, the--- @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - If the @queryType@ used to create @queryPool@ was--- @VK_QUERY_TYPE_PIPELINE_STATISTICS@ and any of the--- @pipelineStatistics@ indicate compute operations, the--- @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support compute operations------ - If @vkCmdBeginQuery@ is called within a render pass instance, the--- sum of @query@ and the number of bits set in the current subpass’s--- view mask /must/ be less than or equal to the number of queries in--- @queryPool@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @queryPool@ /must/ be a valid @VkQueryPool@ handle------ - @flags@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.CommandBuffer.VkQueryControlFlagBits' values------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - Both of @commandBuffer@, and @queryPool@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.CommandBuffer.VkQueryControlFlags',--- 'Graphics.Vulkan.Core10.Query.VkQueryPool'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdBeginQuery" vkCmdBeginQuery :: ("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> ("flags" ::: VkQueryControlFlags) -> IO ()--- | vkCmdEndQuery - Ends a query------ = Parameters------ - @commandBuffer@ is the command buffer into which this command will--- be recorded.------ - @queryPool@ is the query pool that is managing the results of the--- query.------ - @query@ is the query index within the query pool where the result is--- stored.------ = Description------ As queries operate asynchronously, ending a query does not immediately--- set the query’s status to available. A query is considered /finished/--- when the final results of the query are ready to be retrieved by--- 'Graphics.Vulkan.Core10.Query.vkGetQueryPoolResults' and--- 'vkCmdCopyQueryPoolResults', and this is when the query’s status is set--- to available.------ Once a query is ended the query /must/ finish in finite time, unless the--- state of the query is changed using other commands, e.g. by issuing a--- reset of the query.------ == Valid Usage------ - All queries used by the command /must/ be--- [active](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-active)------ - @query@ /must/ be less than the number of queries in @queryPool@------ - If @vkCmdEndQuery@ is called within a render pass instance, the sum--- of @query@ and the number of bits set in the current subpass’s view--- mask /must/ be less than or equal to the number of queries in--- @queryPool@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @queryPool@ /must/ be a valid @VkQueryPool@ handle------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - Both of @commandBuffer@, and @queryPool@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Query.VkQueryPool'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdEndQuery" vkCmdEndQuery :: ("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ()--- | vkCmdResetQueryPool - Reset queries in a query pool------ = Parameters------ - @commandBuffer@ is the command buffer into which this command will--- be recorded.------ - @queryPool@ is the handle of the query pool managing the queries--- being reset.------ - @firstQuery@ is the initial query index to reset.------ - @queryCount@ is the number of queries to reset.------ = Description------ When executed on a queue, this command sets the status of query indices--- [@firstQuery@, @firstQuery@ + @queryCount@ - 1] to unavailable.------ == Valid Usage------ - @firstQuery@ /must/ be less than the number of queries in--- @queryPool@------ - The sum of @firstQuery@ and @queryCount@ /must/ be less than or--- equal to the number of queries in @queryPool@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @queryPool@ /must/ be a valid @VkQueryPool@ handle------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - This command /must/ only be called outside of a render pass instance------ - Both of @commandBuffer@, and @queryPool@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Outside | Graphics | |--- | Secondary | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Query.VkQueryPool'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdResetQueryPool" vkCmdResetQueryPool :: ("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ()--- | vkCmdWriteTimestamp - Write a device timestamp into a query object------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @pipelineStage@ is one of the--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits', specifying a--- stage of the pipeline.------ - @queryPool@ is the query pool that will manage the timestamp.------ - @query@ is the query within the query pool that will contain the--- timestamp.------ = Description------ @vkCmdWriteTimestamp@ latches the value of the timer when all previous--- commands have completed executing as far as the specified pipeline--- stage, and writes the timestamp value to memory. When the timestamp--- value is written, the availability status of the query is set to--- available.------ __Note__------ If an implementation is unable to detect completion and latch the timer--- at any specific stage of the pipeline, it /may/ instead do so at any--- logically later stage.------ 'vkCmdCopyQueryPoolResults' /can/ then be called to copy the timestamp--- value from the query pool into buffer memory, with ordering and--- synchronization behavior equivalent to how other queries operate.--- Timestamp values /can/ also be retrieved from the query pool using--- 'Graphics.Vulkan.Core10.Query.vkGetQueryPoolResults'. As with other--- queries, the query /must/ be reset using 'vkCmdResetQueryPool' before--- requesting the timestamp value be written to it.------ While @vkCmdWriteTimestamp@ /can/ be called inside or outside of a--- render pass instance, 'vkCmdCopyQueryPoolResults' /must/ only be called--- outside of a render pass instance.------ Timestamps /may/ only be meaningfully compared if they are written by--- commands submitted to the same queue.------ __Note__------ An example of such a comparison is determining the execution time of a--- sequence of commands.------ If @vkCmdWriteTimestamp@ is called while executing a render pass--- instance that has multiview enabled, the timestamp uses N consecutive--- query indices in the query pool (starting at @query@) where N is the--- number of bits set in the view mask of the subpass the command is--- executed in. The resulting query values are determined by an--- implementation-dependent choice of one of the following behaviors:------ - The first query is a timestamp value and (if more than one bit is--- set in the view mask) zero is written to the remaining queries. If--- two timestamps are written in the same subpass, the sum of the--- execution time of all views between those commands is the difference--- between the first query written by each command.------ - All N queries are timestamp values. If two timestamps are written in--- the same subpass, the sum of the execution time of all views between--- those commands is the sum of the difference between corresponding--- queries written by each command. The difference between--- corresponding queries /may/ be the execution time of a single view.------ In either case, the application /can/ sum the differences between all N--- queries to determine the total execution time.------ == Valid Usage------ - @queryPool@ /must/ have been created with a @queryType@ of--- @VK_QUERY_TYPE_TIMESTAMP@------ - The query identified by @queryPool@ and @query@ /must/ be--- /unavailable/------ - The command pool’s queue family /must/ support a non-zero--- @timestampValidBits@------ - All queries used by the command /must/ be unavailable------ - If @vkCmdWriteTimestamp@ is called within a render pass instance,--- the sum of @query@ and the number of bits set in the current--- subpass’s view mask /must/ be less than or equal to the number of--- queries in @queryPool@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pipelineStage@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' value------ - @queryPool@ /must/ be a valid @VkQueryPool@ handle------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support transfer, graphics, or compute operations------ - Both of @commandBuffer@, and @queryPool@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Transfer | Transfer |--- | Secondary | | Graphics | |--- | | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits',--- 'Graphics.Vulkan.Core10.Query.VkQueryPool'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdWriteTimestamp" vkCmdWriteTimestamp :: ("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ()--- | vkCmdCopyQueryPoolResults - Copy the results of queries in a query pool--- to a buffer object------ = Parameters------ - @commandBuffer@ is the command buffer into which this command will--- be recorded.------ - @queryPool@ is the query pool managing the queries containing the--- desired results.------ - @firstQuery@ is the initial query index.------ - @queryCount@ is the number of queries. @firstQuery@ and @queryCount@--- together define a range of queries.------ - @dstBuffer@ is a @VkBuffer@ object that will receive the results of--- the copy command.------ - @dstOffset@ is an offset into @dstBuffer@.------ - @stride@ is the stride in bytes between results for individual--- queries within @dstBuffer@. The required size of the backing memory--- for @dstBuffer@ is determined as described above for--- 'Graphics.Vulkan.Core10.Query.vkGetQueryPoolResults'.------ - @flags@ is a bitmask of--- 'Graphics.Vulkan.Core10.Query.VkQueryResultFlagBits' specifying how--- and when results are returned.------ = Description------ @vkCmdCopyQueryPoolResults@ is guaranteed to see the effect of previous--- uses of @vkCmdResetQueryPool@ in the same queue, without any additional--- synchronization. Thus, the results will always reflect the most recent--- use of the query.------ @flags@ has the same possible values described above for the @flags@--- parameter of 'Graphics.Vulkan.Core10.Query.vkGetQueryPoolResults', but--- the different style of execution causes some subtle behavioral--- differences. Because @vkCmdCopyQueryPoolResults@ executes in order with--- respect to other query commands, there is less ambiguity about which use--- of a query is being requested.------ If no bits are set in @flags@, results for all requested queries in the--- available state are written as 32-bit unsigned integer values, and--- nothing is written for queries in the unavailable state.------ If @VK_QUERY_RESULT_64_BIT@ is set, the results are written as an array--- of 64-bit unsigned integer values as described for--- 'Graphics.Vulkan.Core10.Query.vkGetQueryPoolResults'.------ If @VK_QUERY_RESULT_WAIT_BIT@ is set, the implementation will wait for--- each query’s status to be in the available state before retrieving the--- numerical results for that query. This is guaranteed to reflect the most--- recent use of the query on the same queue, assuming that the query is--- not being simultaneously used by other queues. If the query does not--- become available in a finite amount of time (e.g. due to not issuing a--- query since the last reset), a @VK_ERROR_DEVICE_LOST@ error /may/ occur.------ Similarly, if @VK_QUERY_RESULT_WITH_AVAILABILITY_BIT@ is set and--- @VK_QUERY_RESULT_WAIT_BIT@ is not set, the availability is guaranteed to--- reflect the most recent use of the query on the same queue, assuming--- that the query is not being simultaneously used by other queues. As with--- @vkGetQueryPoolResults@, implementations /must/ guarantee that if they--- return a non-zero availability value, then the numerical results are--- valid.------ If @VK_QUERY_RESULT_PARTIAL_BIT@ is set, @VK_QUERY_RESULT_WAIT_BIT@ is--- not set, and the query’s status is unavailable, an intermediate result--- value between zero and the final result value is written for that query.------ @VK_QUERY_RESULT_PARTIAL_BIT@ /must/ not be used if the pool’s--- @queryType@ is @VK_QUERY_TYPE_TIMESTAMP@.------ @vkCmdCopyQueryPoolResults@ is considered to be a transfer operation,--- and its writes to buffer memory /must/ be synchronized using--- @VK_PIPELINE_STAGE_TRANSFER_BIT@ and @VK_ACCESS_TRANSFER_WRITE_BIT@--- before using the results.------ == Valid Usage------ - @dstOffset@ /must/ be less than the size of @dstBuffer@------ - @firstQuery@ /must/ be less than the number of queries in--- @queryPool@------ - The sum of @firstQuery@ and @queryCount@ /must/ be less than or--- equal to the number of queries in @queryPool@------ - If @VK_QUERY_RESULT_64_BIT@ is not set in @flags@ then @dstOffset@--- and @stride@ /must/ be multiples of @4@------ - If @VK_QUERY_RESULT_64_BIT@ is set in @flags@ then @dstOffset@ and--- @stride@ /must/ be multiples of @8@------ - @dstBuffer@ /must/ have enough storage, from @dstOffset@, to contain--- the result of each query, as described--- [here](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-memorylayout)------ - @dstBuffer@ /must/ have been created with--- @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ usage flag------ - If @dstBuffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - If the @queryType@ used to create @queryPool@ was--- @VK_QUERY_TYPE_TIMESTAMP@, @flags@ /must/ not contain--- @VK_QUERY_RESULT_PARTIAL_BIT@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @queryPool@ /must/ be a valid @VkQueryPool@ handle------ - @dstBuffer@ /must/ be a valid @VkBuffer@ handle------ - @flags@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Query.VkQueryResultFlagBits' values------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - This command /must/ only be called outside of a render pass instance------ - Each of @commandBuffer@, @dstBuffer@, and @queryPool@ /must/ have--- been created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Outside | Graphics | Transfer |--- | Secondary | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@,--- 'Graphics.Vulkan.Core10.Query.VkQueryPool',--- 'Graphics.Vulkan.Core10.Query.VkQueryResultFlags'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdCopyQueryPoolResults" vkCmdCopyQueryPoolResults :: ("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO ()--- | vkCmdPushConstants - Update the values of push constants------ = Parameters------ - @commandBuffer@ is the command buffer in which the push constant--- update will be recorded.------ - @layout@ is the pipeline layout used to program the push constant--- updates.------ - @stageFlags@ is a bitmask of--- 'Graphics.Vulkan.Core10.Pipeline.VkShaderStageFlagBits' specifying--- the shader stages that will use the push constants in the updated--- range.------ - @offset@ is the start offset of the push constant range to update,--- in units of bytes.------ - @size@ is the size of the push constant range to update, in units of--- bytes.------ - @pValues@ is an array of @size@ bytes containing the new push--- constant values.------ == Valid Usage------ - For each byte in the range specified by @offset@ and @size@ and for--- each shader stage in @stageFlags@, there /must/ be a push constant--- range in @layout@ that includes that byte and that stage------ - For each byte in the range specified by @offset@ and @size@ and for--- each push constant range that overlaps that byte, @stageFlags@--- /must/ include all stages in that push constant range’s--- 'Graphics.Vulkan.Core10.PipelineLayout.VkPushConstantRange'::@stageFlags@------ - @offset@ /must/ be a multiple of @4@------ - @size@ /must/ be a multiple of @4@------ - @offset@ /must/ be less than--- @VkPhysicalDeviceLimits@::@maxPushConstantsSize@------ - @size@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxPushConstantsSize@ minus @offset@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @layout@ /must/ be a valid @VkPipelineLayout@ handle------ - @stageFlags@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Pipeline.VkShaderStageFlagBits' values------ - @stageFlags@ /must/ not be @0@------ - @pValues@ /must/ be a valid pointer to an array of @size@ bytes------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - @size@ /must/ be greater than @0@------ - Both of @commandBuffer@, and @layout@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout',--- 'Graphics.Vulkan.Core10.PipelineLayout.VkShaderStageFlags'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdPushConstants" vkCmdPushConstants :: ("commandBuffer" ::: VkCommandBuffer) -> ("layout" ::: VkPipelineLayout) -> ("stageFlags" ::: VkShaderStageFlags) -> ("offset" ::: Word32) -> ("size" ::: Word32) -> ("pValues" ::: Ptr ()) -> IO ()--- | vkCmdBeginRenderPass - Begin a new render pass------ = Parameters------ - @commandBuffer@ is the command buffer in which to record the--- command.------ - @pRenderPassBegin@ is a pointer to a 'VkRenderPassBeginInfo'--- structure (defined below) which specifies the render pass to begin--- an instance of, and the framebuffer the instance uses.------ - @contents@ is a 'VkSubpassContents' value specifying how the--- commands in the first subpass will be provided.------ = Description------ After beginning a render pass instance, the command buffer is ready to--- record the commands for the first subpass of that render pass.------ == Valid Usage------ - If any of the @initialLayout@ or @finalLayout@ member of the--- @VkAttachmentDescription@ structures or the @layout@ member of the--- @VkAttachmentReference@ structures specified when creating the--- render pass specified in the @renderPass@ member of--- @pRenderPassBegin@ is @VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL@--- then the corresponding attachment image subresource of the--- framebuffer specified in the @framebuffer@ member of--- @pRenderPassBegin@ /must/ have been created with--- @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@ set------ - If any of the @initialLayout@ or @finalLayout@ member of the--- @VkAttachmentDescription@ structures or the @layout@ member of the--- @VkAttachmentReference@ structures specified when creating the--- render pass specified in the @renderPass@ member of--- @pRenderPassBegin@ is--- @VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL@,--- @VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL@,--- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL@, or--- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL@ then the--- corresponding attachment image subresource of the framebuffer--- specified in the @framebuffer@ member of @pRenderPassBegin@ /must/--- have been created with @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@--- set------ - If any of the @initialLayout@ or @finalLayout@ member of the--- @VkAttachmentDescription@ structures or the @layout@ member of the--- @VkAttachmentReference@ structures specified when creating the--- render pass specified in the @renderPass@ member of--- @pRenderPassBegin@ is @VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL@--- then the corresponding attachment image subresource of the--- framebuffer specified in the @framebuffer@ member of--- @pRenderPassBegin@ /must/ have been created with--- @VK_IMAGE_USAGE_SAMPLED_BIT@ or--- @VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT@ set------ - If any of the @initialLayout@ or @finalLayout@ member of the--- @VkAttachmentDescription@ structures or the @layout@ member of the--- @VkAttachmentReference@ structures specified when creating the--- render pass specified in the @renderPass@ member of--- @pRenderPassBegin@ is @VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL@ then--- the corresponding attachment image subresource of the framebuffer--- specified in the @framebuffer@ member of @pRenderPassBegin@ /must/--- have been created with @VK_IMAGE_USAGE_TRANSFER_SRC_BIT@ set------ - If any of the @initialLayout@ or @finalLayout@ member of the--- @VkAttachmentDescription@ structures or the @layout@ member of the--- @VkAttachmentReference@ structures specified when creating the--- render pass specified in the @renderPass@ member of--- @pRenderPassBegin@ is @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@ then--- the corresponding attachment image subresource of the framebuffer--- specified in the @framebuffer@ member of @pRenderPassBegin@ /must/--- have been created with @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ set------ - If any of the @initialLayout@ members of the--- @VkAttachmentDescription@ structures specified when creating the--- render pass specified in the @renderPass@ member of--- @pRenderPassBegin@ is not @VK_IMAGE_LAYOUT_UNDEFINED@, then each--- such @initialLayout@ /must/ be equal to the current layout of the--- corresponding attachment image subresource of the framebuffer--- specified in the @framebuffer@ member of @pRenderPassBegin@------ - The @srcStageMask@ and @dstStageMask@ members of any element of the--- @pDependencies@ member of--- 'Graphics.Vulkan.Core10.Pass.VkRenderPassCreateInfo' used to create--- @renderPass@ /must/ be supported by the capabilities of the queue--- family identified by the @queueFamilyIndex@ member of the--- 'Graphics.Vulkan.Core10.CommandPool.VkCommandPoolCreateInfo' used to--- create the command pool which @commandBuffer@ was allocated from.------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pRenderPassBegin@ /must/ be a valid pointer to a valid--- @VkRenderPassBeginInfo@ structure------ - @contents@ /must/ be a valid 'VkSubpassContents' value------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called outside of a render pass instance------ - @commandBuffer@ /must/ be a primary @VkCommandBuffer@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Outside | Graphics | Graphics |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkRenderPassBeginInfo',--- 'VkSubpassContents'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdBeginRenderPass" vkCmdBeginRenderPass :: ("commandBuffer" ::: VkCommandBuffer) -> ("pRenderPassBegin" ::: Ptr VkRenderPassBeginInfo) -> ("contents" ::: VkSubpassContents) -> IO ()--- | vkCmdNextSubpass - Transition to the next subpass of a render pass------ = Parameters------ - @commandBuffer@ is the command buffer in which to record the--- command.------ - @contents@ specifies how the commands in the next subpass will be--- provided, in the same fashion as the corresponding parameter of--- 'vkCmdBeginRenderPass'.------ = Description------ The subpass index for a render pass begins at zero when--- @vkCmdBeginRenderPass@ is recorded, and increments each time--- @vkCmdNextSubpass@ is recorded.------ Moving to the next subpass automatically performs any multisample--- resolve operations in the subpass being ended. End-of-subpass--- multisample resolves are treated as color attachment writes for the--- purposes of synchronization. That is, they are considered to execute in--- the @VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT@ pipeline stage and--- their writes are synchronized with--- @VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT@. Synchronization between--- rendering within a subpass and any resolve operations at the end of the--- subpass occurs automatically, without need for explicit dependencies or--- pipeline barriers. However, if the resolve attachment is also used in a--- different subpass, an explicit dependency is needed.------ After transitioning to the next subpass, the application /can/ record--- the commands for that subpass.------ == Valid Usage------ - The current subpass index /must/ be less than the number of--- subpasses in the render pass minus one------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @contents@ /must/ be a valid 'VkSubpassContents' value------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called inside of a render pass instance------ - @commandBuffer@ /must/ be a primary @VkCommandBuffer@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Inside | Graphics | Graphics |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkSubpassContents'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdNextSubpass" vkCmdNextSubpass :: ("commandBuffer" ::: VkCommandBuffer) -> ("contents" ::: VkSubpassContents) -> IO ()--- | vkCmdEndRenderPass - End the current render pass------ = Parameters------ - @commandBuffer@ is the command buffer in which to end the current--- render pass instance.------ = Description------ Ending a render pass instance performs any multisample resolve--- operations on the final subpass.------ == Valid Usage------ - The current subpass index /must/ be equal to the number of subpasses--- in the render pass minus one------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called inside of a render pass instance------ - @commandBuffer@ /must/ be a primary @VkCommandBuffer@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Inside | Graphics | Graphics |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdEndRenderPass" vkCmdEndRenderPass :: ("commandBuffer" ::: VkCommandBuffer) -> IO ()--- | vkCmdExecuteCommands - Execute a secondary command buffer from a primary--- command buffer------ = Parameters------ - @commandBuffer@ is a handle to a primary command buffer that the--- secondary command buffers are executed in.------ - @commandBufferCount@ is the length of the @pCommandBuffers@ array.------ - @pCommandBuffers@ is an array of secondary command buffer handles,--- which are recorded to execute in the primary command buffer in the--- order they are listed in the array.------ = Description------ If any element of @pCommandBuffers@ was not recorded with the--- @VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT@ flag, and it was recorded--- into any other primary command buffer which is currently in the--- [executable or recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle),--- that primary command buffer becomes--- [invalid](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).------ == Valid Usage------ - @commandBuffer@ /must/ have been allocated with a @level@ of--- @VK_COMMAND_BUFFER_LEVEL_PRIMARY@------ - Each element of @pCommandBuffers@ /must/ have been allocated with a--- @level@ of @VK_COMMAND_BUFFER_LEVEL_SECONDARY@------ - Each element of @pCommandBuffers@ /must/ be in the [pending or--- executable--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).------ - If any element of @pCommandBuffers@ was not recorded with the--- @VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT@ flag, and it was--- recorded into any other primary command buffer, that primary command--- buffer /must/ not be in the [pending--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - If any element of @pCommandBuffers@ was not recorded with the--- @VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT@ flag, it /must/ not--- be in the [pending--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).------ - If any element of @pCommandBuffers@ was not recorded with the--- @VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT@ flag, it /must/ not--- have already been recorded to @commandBuffer@.------ - If any element of @pCommandBuffers@ was not recorded with the--- @VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT@ flag, it /must/ not--- appear more than once in @pCommandBuffers@.------ - Each element of @pCommandBuffers@ /must/ have been allocated from a--- @VkCommandPool@ that was created for the same queue family as the--- @VkCommandPool@ from which @commandBuffer@ was allocated------ - If @vkCmdExecuteCommands@ is being called within a render pass--- instance, that render pass instance /must/ have been begun with the--- @contents@ parameter of @vkCmdBeginRenderPass@ set to--- @VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS@------ - If @vkCmdExecuteCommands@ is being called within a render pass--- instance, each element of @pCommandBuffers@ /must/ have been--- recorded with the @VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT@------ - If @vkCmdExecuteCommands@ is being called within a render pass--- instance, each element of @pCommandBuffers@ /must/ have been--- recorded with @VkCommandBufferInheritanceInfo@::@subpass@ set to the--- index of the subpass which the given command buffer will be executed--- in------ - If @vkCmdExecuteCommands@ is being called within a render pass--- instance, the render passes specified in the--- pname::pBeginInfo::@pInheritanceInfo@::@renderPass@ members of the--- 'Graphics.Vulkan.Core10.CommandBuffer.vkBeginCommandBuffer' commands--- used to begin recording each element of @pCommandBuffers@ /must/ be--- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)--- with the current render pass.------ - If @vkCmdExecuteCommands@ is being called within a render pass--- instance, and any element of @pCommandBuffers@ was recorded with--- @VkCommandBufferInheritanceInfo@::@framebuffer@ not equal to--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', that--- @VkFramebuffer@ /must/ match the @VkFramebuffer@ used in the current--- render pass instance------ - If @vkCmdExecuteCommands@ is not being called within a render pass--- instance, each element of @pCommandBuffers@ /must/ not have been--- recorded with the @VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT@------ - If the [inherited--- queries](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-inheritedQueries)--- feature is not enabled, @commandBuffer@ /must/ not have any queries--- [active](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-active)------ - If @commandBuffer@ has a @VK_QUERY_TYPE_OCCLUSION@ query--- [active](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-active),--- then each element of @pCommandBuffers@ /must/ have been recorded--- with @VkCommandBufferInheritanceInfo@::@occlusionQueryEnable@ set to--- @VK_TRUE@------ - If @commandBuffer@ has a @VK_QUERY_TYPE_OCCLUSION@ query--- [active](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-active),--- then each element of @pCommandBuffers@ /must/ have been recorded--- with @VkCommandBufferInheritanceInfo@::@queryFlags@ having all bits--- set that are set for the query------ - If @commandBuffer@ has a @VK_QUERY_TYPE_PIPELINE_STATISTICS@ query--- [active](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-active),--- then each element of @pCommandBuffers@ /must/ have been recorded--- with @VkCommandBufferInheritanceInfo@::@pipelineStatistics@ having--- all bits set that are set in the @VkQueryPool@ the query uses------ - Each element of @pCommandBuffers@ /must/ not begin any query types--- that are--- [active](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-active)--- in @commandBuffer@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pCommandBuffers@ /must/ be a valid pointer to an array of--- @commandBufferCount@ valid @VkCommandBuffer@ handles------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support transfer, graphics, or compute operations------ - @commandBuffer@ /must/ be a primary @VkCommandBuffer@------ - @commandBufferCount@ /must/ be greater than @0@------ - Both of @commandBuffer@, and the elements of @pCommandBuffers@--- /must/ have been created, allocated, or retrieved from the same--- @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Transfer | |--- | | | Graphics | |--- | | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdExecuteCommands" vkCmdExecuteCommands :: ("commandBuffer" ::: VkCommandBuffer) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ()--- | VkClearRect - Structure specifying a clear rectangle------ = Description------ The layers [@baseArrayLayer@, @baseArrayLayer@ + @layerCount@) counting--- from the base layer of the attachment image view are cleared.------ = See Also------ 'Graphics.Vulkan.Core10.Pipeline.VkRect2D', 'vkCmdClearAttachments'-data VkClearRect = VkClearRect- { -- | @rect@ is the two-dimensional region to be cleared.- vkRect :: VkRect2D- , -- | @baseArrayLayer@ is the first layer to be cleared.- vkBaseArrayLayer :: Word32- , -- | @layerCount@ is the number of layers to clear.- vkLayerCount :: Word32- }- deriving (Eq, Show)--instance Storable VkClearRect where- sizeOf ~_ = 24- alignment ~_ = 4- peek ptr = VkClearRect <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- poke ptr poked = poke (ptr `plusPtr` 0) (vkRect (poked :: VkClearRect))- *> poke (ptr `plusPtr` 16) (vkBaseArrayLayer (poked :: VkClearRect))- *> poke (ptr `plusPtr` 20) (vkLayerCount (poked :: VkClearRect))--- | VkImageSubresourceLayers - Structure specifying a image subresource--- layers------ == Valid Usage------ - If @aspectMask@ contains @VK_IMAGE_ASPECT_COLOR_BIT@, it /must/ not--- contain either of @VK_IMAGE_ASPECT_DEPTH_BIT@ or--- @VK_IMAGE_ASPECT_STENCIL_BIT@------ - @aspectMask@ /must/ not contain @VK_IMAGE_ASPECT_METADATA_BIT@------ - @layerCount@ /must/ be greater than 0------ == Valid Usage (Implicit)------ - @aspectMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlagBits'--- values------ - @aspectMask@ /must/ not be @0@------ = See Also------ 'VkBufferImageCopy',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlags',--- 'VkImageBlit', 'VkImageCopy', 'VkImageResolve'-data VkImageSubresourceLayers = VkImageSubresourceLayers- { -- | @aspectMask@ is a combination of- -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlagBits',- -- selecting the color, depth and\/or stencil aspects to be copied.- vkAspectMask :: VkImageAspectFlags- , -- | @mipLevel@ is the mipmap level to copy from.- vkMipLevel :: Word32- , -- | @baseArrayLayer@ and @layerCount@ are the starting layer and number of- -- layers to copy.- vkBaseArrayLayer :: Word32- , -- No documentation found for Nested "VkImageSubresourceLayers" "layerCount"- vkLayerCount :: Word32- }- deriving (Eq, Show)--instance Storable VkImageSubresourceLayers where- sizeOf ~_ = 16- alignment ~_ = 4- peek ptr = VkImageSubresourceLayers <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- poke ptr poked = poke (ptr `plusPtr` 0) (vkAspectMask (poked :: VkImageSubresourceLayers))- *> poke (ptr `plusPtr` 4) (vkMipLevel (poked :: VkImageSubresourceLayers))- *> poke (ptr `plusPtr` 8) (vkBaseArrayLayer (poked :: VkImageSubresourceLayers))- *> poke (ptr `plusPtr` 12) (vkLayerCount (poked :: VkImageSubresourceLayers))--- | VkMemoryBarrier - Structure specifying a global memory barrier------ = Description------ The first [access--- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)--- is limited to access types in the [source access--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks)--- specified by @srcAccessMask@.------ The second [access--- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)--- is limited to access types in the [destination access--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks)--- specified by @dstAccessMask@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_MEMORY_BARRIER@------ - @pNext@ /must/ be @NULL@------ - @srcAccessMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' values------ - @dstAccessMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' values------ = See Also------ 'Graphics.Vulkan.Core10.Pass.VkAccessFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCmdPipelineBarrier',--- 'vkCmdWaitEvents'-data VkMemoryBarrier = VkMemoryBarrier- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @srcAccessMask@ is a bitmask of- -- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' specifying a [source- -- access- -- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks).- vkSrcAccessMask :: VkAccessFlags- , -- | @dstAccessMask@ is a bitmask of- -- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' specifying a [destination- -- access- -- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks).- vkDstAccessMask :: VkAccessFlags- }- deriving (Eq, Show)--instance Storable VkMemoryBarrier where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkMemoryBarrier <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkMemoryBarrier))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkMemoryBarrier))- *> poke (ptr `plusPtr` 16) (vkSrcAccessMask (poked :: VkMemoryBarrier))- *> poke (ptr `plusPtr` 20) (vkDstAccessMask (poked :: VkMemoryBarrier))--- | VkBufferMemoryBarrier - Structure specifying a buffer memory barrier------ = Description------ The first [access--- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)--- is limited to access to memory through the specified buffer range, via--- access types in the [source access--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks)--- specified by @srcAccessMask@. If @srcAccessMask@ includes--- @VK_ACCESS_HOST_WRITE_BIT@, memory writes performed by that access type--- are also made visible, as that access type is not performed through a--- resource.------ The second [access--- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)--- is limited to access to memory through the specified buffer range, via--- access types in the [destination access--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks).--- specified by @dstAccessMask@. If @dstAccessMask@ includes--- @VK_ACCESS_HOST_WRITE_BIT@ or @VK_ACCESS_HOST_READ_BIT@, available--- memory writes are also made visible to accesses of those types, as those--- access types are not performed through a resource.------ If @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, and--- @srcQueueFamilyIndex@ is equal to the current queue family, then the--- memory barrier defines a [queue family release--- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers-release)--- for the specified buffer range, and the second access scope includes no--- access, as if @dstAccessMask@ was @0@.------ If @dstQueueFamilyIndex@ is not equal to @srcQueueFamilyIndex@, and--- @dstQueueFamilyIndex@ is equal to the current queue family, then the--- memory barrier defines a [queue family acquire--- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers-acquire)--- for the specified buffer range, and the first access scope includes no--- access, as if @srcAccessMask@ was @0@.------ == Valid Usage------ - @offset@ /must/ be less than the size of @buffer@------ - If @size@ is not equal to @VK_WHOLE_SIZE@, @size@ /must/ be greater--- than @0@------ - If @size@ is not equal to @VK_WHOLE_SIZE@, @size@ /must/ be less--- than or equal to than the size of @buffer@ minus @offset@------ - If @buffer@ was created with a sharing mode of--- @VK_SHARING_MODE_CONCURRENT@, at least one of @srcQueueFamilyIndex@--- and @dstQueueFamilyIndex@ /must/ be @VK_QUEUE_FAMILY_IGNORED@------ - If @buffer@ was created with a sharing mode of--- @VK_SHARING_MODE_CONCURRENT@, and one of @srcQueueFamilyIndex@ and--- @dstQueueFamilyIndex@ is @VK_QUEUE_FAMILY_IGNORED@, the other /must/--- be @VK_QUEUE_FAMILY_IGNORED@ or a special queue family reserved for--- external memory ownership transfers, as described in--- [{html_spec_relative}#synchronization-queue-transfers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers).------ - If @buffer@ was created with a sharing mode of--- @VK_SHARING_MODE_EXCLUSIVE@ and @srcQueueFamilyIndex@ is--- @VK_QUEUE_FAMILY_IGNORED@, @dstQueueFamilyIndex@ /must/ also be--- @VK_QUEUE_FAMILY_IGNORED@------ - If @buffer@ was created with a sharing mode of--- @VK_SHARING_MODE_EXCLUSIVE@ and @srcQueueFamilyIndex@ is not--- @VK_QUEUE_FAMILY_IGNORED@, it /must/ be a valid queue family or a--- special queue family reserved for external memory transfers, as--- described in--- [{html_spec_relative}#synchronization-queue-transfers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers).------ - If @buffer@ was created with a sharing mode of--- @VK_SHARING_MODE_EXCLUSIVE@ and @dstQueueFamilyIndex@ is not--- @VK_QUEUE_FAMILY_IGNORED@, it /must/ be a valid queue family or a--- special queue family reserved for external memory transfers, as--- described in--- [{html_spec_relative}#synchronization-queue-transfers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers).------ - If @buffer@ was created with a sharing mode of--- @VK_SHARING_MODE_EXCLUSIVE@, and @srcQueueFamilyIndex@ and--- @dstQueueFamilyIndex@ are not @VK_QUEUE_FAMILY_IGNORED@, at least--- one of them /must/ be the same as the family of the queue that will--- execute this barrier------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER@------ - @pNext@ /must/ be @NULL@------ - @srcAccessMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' values------ - @dstAccessMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' values------ - @buffer@ /must/ be a valid @VkBuffer@ handle------ = See Also------ 'Graphics.Vulkan.Core10.Pass.VkAccessFlags',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', @VkDeviceSize@,--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCmdPipelineBarrier',--- 'vkCmdWaitEvents'-data VkBufferMemoryBarrier = VkBufferMemoryBarrier- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @srcAccessMask@ is a bitmask of- -- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' specifying a [source- -- access- -- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks).- vkSrcAccessMask :: VkAccessFlags- , -- | @dstAccessMask@ is a bitmask of- -- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' specifying a [destination- -- access- -- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks).- vkDstAccessMask :: VkAccessFlags- , -- | @srcQueueFamilyIndex@ is the source queue family for a [queue family- -- ownership- -- transfer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers).- vkSrcQueueFamilyIndex :: Word32- , -- | @dstQueueFamilyIndex@ is the destination queue family for a [queue- -- family ownership- -- transfer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers).- vkDstQueueFamilyIndex :: Word32- , -- | @buffer@ is a handle to the buffer whose backing memory is affected by- -- the barrier.- vkBuffer :: VkBuffer- , -- | @offset@ is an offset in bytes into the backing memory for @buffer@;- -- this is relative to the base offset as bound to the buffer (see- -- 'Graphics.Vulkan.Core10.MemoryManagement.vkBindBufferMemory').- vkOffset :: VkDeviceSize- , -- | @size@ is a size in bytes of the affected area of backing memory for- -- @buffer@, or @VK_WHOLE_SIZE@ to use the range from @offset@ to the end- -- of the buffer.- vkSize :: VkDeviceSize- }- deriving (Eq, Show)--instance Storable VkBufferMemoryBarrier where- sizeOf ~_ = 56- alignment ~_ = 8- peek ptr = VkBufferMemoryBarrier <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkBufferMemoryBarrier))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkBufferMemoryBarrier))- *> poke (ptr `plusPtr` 16) (vkSrcAccessMask (poked :: VkBufferMemoryBarrier))- *> poke (ptr `plusPtr` 20) (vkDstAccessMask (poked :: VkBufferMemoryBarrier))- *> poke (ptr `plusPtr` 24) (vkSrcQueueFamilyIndex (poked :: VkBufferMemoryBarrier))- *> poke (ptr `plusPtr` 28) (vkDstQueueFamilyIndex (poked :: VkBufferMemoryBarrier))- *> poke (ptr `plusPtr` 32) (vkBuffer (poked :: VkBufferMemoryBarrier))- *> poke (ptr `plusPtr` 40) (vkOffset (poked :: VkBufferMemoryBarrier))- *> poke (ptr `plusPtr` 48) (vkSize (poked :: VkBufferMemoryBarrier))--- | VkImageMemoryBarrier - Structure specifying the parameters of an image--- memory barrier------ = Description------ The first [access--- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)--- is limited to access to memory through the specified image subresource--- range, via access types in the [source access--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks)--- specified by @srcAccessMask@. If @srcAccessMask@ includes--- @VK_ACCESS_HOST_WRITE_BIT@, memory writes performed by that access type--- are also made visible, as that access type is not performed through a--- resource.------ The second [access--- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)--- is limited to access to memory through the specified image subresource--- range, via access types in the [destination access--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks)--- specified by @dstAccessMask@. If @dstAccessMask@ includes--- @VK_ACCESS_HOST_WRITE_BIT@ or @VK_ACCESS_HOST_READ_BIT@, available--- memory writes are also made visible to accesses of those types, as those--- access types are not performed through a resource.------ If @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, and--- @srcQueueFamilyIndex@ is equal to the current queue family, then the--- memory barrier defines a [queue family release--- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers-release)--- for the specified image subresource range, and the second access scope--- includes no access, as if @dstAccessMask@ was @0@.------ If @dstQueueFamilyIndex@ is not equal to @srcQueueFamilyIndex@, and--- @dstQueueFamilyIndex@ is equal to the current queue family, then the--- memory barrier defines a [queue family acquire--- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers-acquire)--- for the specified image subresource range, and the first access scope--- includes no access, as if @srcAccessMask@ was @0@.------ If @oldLayout@ is not equal to @newLayout@, then the memory barrier--- defines an [image layout--- transition](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-image-layout-transitions)--- for the specified image subresource range.------ Layout transitions that are performed via image memory barriers execute--- in their entirety in [submission--- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order),--- relative to other image layout transitions submitted to the same queue,--- including those performed by [render--- passes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass).--- In effect there is an implicit execution dependency from each such--- layout transition to all layout transitions previously submitted to the--- same queue.------ The image layout of each image subresource of a depth\/stencil image--- created with @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@--- is dependent on the last sample locations used to render to the image--- subresource as a depth\/stencil attachment, thus when the @image@ member--- of an @VkImageMemoryBarrier@ is an image created with this flag the--- application /can/ chain a--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkSampleLocationsInfoEXT'--- structure to the @pNext@ chain of @VkImageMemoryBarrier@ to specify the--- sample locations to use during the image layout transition.------ If the @VkSampleLocationsInfoEXT@ structure in the @pNext@ chain of--- @VkImageMemoryBarrier@ does not match the sample location state last--- used to render to the image subresource range specified by--- @subresourceRange@ or if no @VkSampleLocationsInfoEXT@ structure is in--- the @pNext@ chain of @VkImageMemoryBarrier@ then the contents of the--- given image subresource range becomes undefined as if @oldLayout@ would--- equal @VK_IMAGE_LAYOUT_UNDEFINED@.------ If @image@ has a multi-planar format and the image is /disjoint/, then--- including @VK_IMAGE_ASPECT_COLOR_BIT@ in the @aspectMask@ member of--- @subresourceRange@ is equivalent to including--- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, and (for--- three-plane formats only) @VK_IMAGE_ASPECT_PLANE_2_BIT@.------ == Valid Usage------ - @oldLayout@ /must/ be @VK_IMAGE_LAYOUT_UNDEFINED@ or the current--- layout of the image subresources affected by the barrier------ - @newLayout@ /must/ not be @VK_IMAGE_LAYOUT_UNDEFINED@ or--- @VK_IMAGE_LAYOUT_PREINITIALIZED@------ - If @image@ was created with a sharing mode of--- @VK_SHARING_MODE_CONCURRENT@, at least one of @srcQueueFamilyIndex@--- and @dstQueueFamilyIndex@ /must/ be @VK_QUEUE_FAMILY_IGNORED@------ - If @image@ was created with a sharing mode of--- @VK_SHARING_MODE_CONCURRENT@, and one of @srcQueueFamilyIndex@ and--- @dstQueueFamilyIndex@ is @VK_QUEUE_FAMILY_IGNORED@, the other /must/--- be @VK_QUEUE_FAMILY_IGNORED@ or a special queue family reserved for--- external memory transfers, as described in--- [{html_spec_relative}#synchronization-queue-transfers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers).------ - If @image@ was created with a sharing mode of--- @VK_SHARING_MODE_EXCLUSIVE@ and @srcQueueFamilyIndex@ is--- @VK_QUEUE_FAMILY_IGNORED@, @dstQueueFamilyIndex@ /must/ also be--- @VK_QUEUE_FAMILY_IGNORED@.------ - If @image@ was created with a sharing mode of--- @VK_SHARING_MODE_EXCLUSIVE@ and @srcQueueFamilyIndex@ is not--- @VK_QUEUE_FAMILY_IGNORED@, it /must/ be a valid queue family or a--- special queue family reserved for external memory transfers, as--- described in--- [{html_spec_relative}#synchronization-queue-transfers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers).------ - If @image@ was created with a sharing mode of--- @VK_SHARING_MODE_EXCLUSIVE@ and @dstQueueFamilyIndex@ is not--- @VK_QUEUE_FAMILY_IGNORED@, it /must/ be a valid queue family or a--- special queue family reserved for external memory transfers, as--- described in--- [{html_spec_relative}#synchronization-queue-transfers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers).------ - If @image@ was created with a sharing mode of--- @VK_SHARING_MODE_EXCLUSIVE@, and @srcQueueFamilyIndex@ and--- @dstQueueFamilyIndex@ are not @VK_QUEUE_FAMILY_IGNORED@, at least--- one of them /must/ be the same as the family of the queue that will--- execute this barrier------ - @subresourceRange.baseMipLevel@ /must/ be less than the @mipLevels@--- specified in 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when--- @image@ was created------ - If @subresourceRange.levelCount@ is not @VK_REMAINING_MIP_LEVELS@,--- @subresourceRange.baseMipLevel@ + @subresourceRange.levelCount@--- /must/ be less than or equal to the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - @subresourceRange.baseArrayLayer@ /must/ be less than the--- @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - If @subresourceRange.layerCount@ is not @VK_REMAINING_ARRAY_LAYERS@,--- @subresourceRange.baseArrayLayer@ + @subresourceRange.layerCount@--- /must/ be less than or equal to the @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - If @image@ has a depth\/stencil format with both depth and stencil--- components, then the @aspectMask@ member of @subresourceRange@--- /must/ include both @VK_IMAGE_ASPECT_DEPTH_BIT@ and--- @VK_IMAGE_ASPECT_STENCIL_BIT@------ - If @image@ has a single-plane color format or is not /disjoint/,--- then the @aspectMask@ member of @subresourceRange@ /must/ be--- @VK_IMAGE_ASPECT_COLOR_BIT@------ - If @image@ has a multi-planar format and the image is /disjoint/,--- then the @aspectMask@ member of @subresourceRange@ /must/ include--- either at least one of @VK_IMAGE_ASPECT_PLANE_0_BIT@,--- @VK_IMAGE_ASPECT_PLANE_1_BIT@, and @VK_IMAGE_ASPECT_PLANE_2_BIT@; or--- /must/ include @VK_IMAGE_ASPECT_COLOR_BIT@------ - If @image@ has a multi-planar format with only two planes, then the--- @aspectMask@ member of @subresourceRange@ /must/ not include--- @VK_IMAGE_ASPECT_PLANE_2_BIT@------ - If either @oldLayout@ or @newLayout@ is--- @VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL@ then @image@ /must/ have--- been created with @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@ set------ - If either @oldLayout@ or @newLayout@ is--- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL@ then @image@--- /must/ have been created with--- @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@ set------ - If either @oldLayout@ or @newLayout@ is--- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL@ then @image@--- /must/ have been created with--- @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@ set------ - If either @oldLayout@ or @newLayout@ is--- @VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL@ then--- @image@ /must/ have been created with--- @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@ set------ - If either @oldLayout@ or @newLayout@ is--- @VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL@ then--- @image@ /must/ have been created with--- @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@ set------ - If either @oldLayout@ or @newLayout@ is--- @VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL@ then @image@ /must/ have--- been created with @VK_IMAGE_USAGE_SAMPLED_BIT@ or--- @VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT@ set------ - If either @oldLayout@ or @newLayout@ is--- @VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL@ then @image@ /must/ have been--- created with @VK_IMAGE_USAGE_TRANSFER_SRC_BIT@ set------ - If either @oldLayout@ or @newLayout@ is--- @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@ then @image@ /must/ have been--- created with @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ set------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER@------ - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkSampleLocationsInfoEXT'------ - @srcAccessMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' values------ - @dstAccessMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' values------ - @oldLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @newLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @image@ /must/ be a valid @VkImage@ handle------ - @subresourceRange@ /must/ be a valid @VkImageSubresourceRange@--- structure------ = See Also------ 'Graphics.Vulkan.Core10.Pass.VkAccessFlags',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'Graphics.Vulkan.Core10.Image.VkImageLayout',--- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCmdPipelineBarrier',--- 'vkCmdWaitEvents'-data VkImageMemoryBarrier = VkImageMemoryBarrier- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @srcAccessMask@ is a bitmask of- -- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' specifying a [source- -- access- -- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks).- vkSrcAccessMask :: VkAccessFlags- , -- | @dstAccessMask@ is a bitmask of- -- 'Graphics.Vulkan.Core10.Pass.VkAccessFlagBits' specifying a [destination- -- access- -- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks).- vkDstAccessMask :: VkAccessFlags- , -- | @oldLayout@ is the old layout in an [image layout- -- transition](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-image-layout-transitions).- vkOldLayout :: VkImageLayout- , -- | @newLayout@ is the new layout in an [image layout- -- transition](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-image-layout-transitions).- vkNewLayout :: VkImageLayout- , -- | @srcQueueFamilyIndex@ is the source queue family for a [queue family- -- ownership- -- transfer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers).- vkSrcQueueFamilyIndex :: Word32- , -- | @dstQueueFamilyIndex@ is the destination queue family for a [queue- -- family ownership- -- transfer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-queue-transfers).- vkDstQueueFamilyIndex :: Word32- , -- | @image@ is a handle to the image affected by this barrier.- vkImage :: VkImage- , -- | @subresourceRange@ describes the [image subresource- -- range](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-image-views)- -- within @image@ that is affected by this barrier.- vkSubresourceRange :: VkImageSubresourceRange- }- deriving (Eq, Show)--instance Storable VkImageMemoryBarrier where- sizeOf ~_ = 72- alignment ~_ = 8- peek ptr = VkImageMemoryBarrier <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkImageMemoryBarrier))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImageMemoryBarrier))- *> poke (ptr `plusPtr` 16) (vkSrcAccessMask (poked :: VkImageMemoryBarrier))- *> poke (ptr `plusPtr` 20) (vkDstAccessMask (poked :: VkImageMemoryBarrier))- *> poke (ptr `plusPtr` 24) (vkOldLayout (poked :: VkImageMemoryBarrier))- *> poke (ptr `plusPtr` 28) (vkNewLayout (poked :: VkImageMemoryBarrier))- *> poke (ptr `plusPtr` 32) (vkSrcQueueFamilyIndex (poked :: VkImageMemoryBarrier))- *> poke (ptr `plusPtr` 36) (vkDstQueueFamilyIndex (poked :: VkImageMemoryBarrier))- *> poke (ptr `plusPtr` 40) (vkImage (poked :: VkImageMemoryBarrier))- *> poke (ptr `plusPtr` 48) (vkSubresourceRange (poked :: VkImageMemoryBarrier))--- | VkBufferCopy - Structure specifying a buffer copy operation------ = See Also------ @VkDeviceSize@, 'vkCmdCopyBuffer'-data VkBufferCopy = VkBufferCopy- { -- | @srcOffset@ is the starting offset in bytes from the start of- -- @srcBuffer@.- vkSrcOffset :: VkDeviceSize- , -- | @dstOffset@ is the starting offset in bytes from the start of- -- @dstBuffer@.- vkDstOffset :: VkDeviceSize- , -- | @size@ is the number of bytes to copy.- vkSize :: VkDeviceSize- }- deriving (Eq, Show)--instance Storable VkBufferCopy where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkBufferCopy <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSrcOffset (poked :: VkBufferCopy))- *> poke (ptr `plusPtr` 8) (vkDstOffset (poked :: VkBufferCopy))- *> poke (ptr `plusPtr` 16) (vkSize (poked :: VkBufferCopy))--- | VkImageCopy - Structure specifying an image copy operation------ = Description------ For @VK_IMAGE_TYPE_3D@ images, copies are performed slice by slice--- starting with the @z@ member of the @srcOffset@ or @dstOffset@, and--- copying @depth@ slices. For images with multiple layers, copies are--- performed layer by layer starting with the @baseArrayLayer@ member of--- the @srcSubresource@ or @dstSubresource@ and copying @layerCount@--- layers. Image data /can/ be copied between images with different image--- types. If one image is @VK_IMAGE_TYPE_3D@ and the other image is--- @VK_IMAGE_TYPE_2D@ with multiple layers, then each slice is copied to or--- from a different layer.------ Copies involving a [multi-planar image--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)--- specify the region to be copied in terms of the /plane/ to be copied,--- not the coordinates of the multi-planar image. This means that copies--- accessing the R\/B planes of “@_422@” format images /must/ fit the--- copied region within half the @width@ of the parent image, and that--- copies accessing the R\/B planes of “@_420@” format images /must/ fit--- the copied region within half the @width@ and @height@ of the parent--- image.------ == Valid Usage------ - If neither the calling command’s @srcImage@ nor the calling--- command’s @dstImage@ has a [multi-planar image--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)--- then the @aspectMask@ member of @srcSubresource@ and--- @dstSubresource@ /must/ match------ - If the calling command’s @srcImage@ has a--- 'Graphics.Vulkan.Core10.Core.VkFormat' with [two--- planes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)--- then the @srcSubresource@ @aspectMask@ /must/ be--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ or @VK_IMAGE_ASPECT_PLANE_1_BIT@------ - If the calling command’s @srcImage@ has a--- 'Graphics.Vulkan.Core10.Core.VkFormat' with [three--- planes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)--- then the @srcSubresource@ @aspectMask@ /must/ be--- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or--- @VK_IMAGE_ASPECT_PLANE_2_BIT@------ - If the calling command’s @dstImage@ has a--- 'Graphics.Vulkan.Core10.Core.VkFormat' with [two--- planes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)--- then the @dstSubresource@ @aspectMask@ /must/ be--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ or @VK_IMAGE_ASPECT_PLANE_1_BIT@------ - If the calling command’s @dstImage@ has a--- 'Graphics.Vulkan.Core10.Core.VkFormat' with [three--- planes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)--- then the @dstSubresource@ @aspectMask@ /must/ be--- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or--- @VK_IMAGE_ASPECT_PLANE_2_BIT@------ - If the calling command’s @srcImage@ has a [multi-planar image--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)--- and the @dstImage@ does not have a multi-planar image format, the--- @dstSubresource@ @aspectMask@ /must/ be @VK_IMAGE_ASPECT_COLOR_BIT@------ - If the calling command’s @dstImage@ has a [multi-planar image--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)--- and the @srcImage@ does not have a multi-planar image format, the--- @srcSubresource@ @aspectMask@ /must/ be @VK_IMAGE_ASPECT_COLOR_BIT@------ - The number of slices of the @extent@ (for 3D) or layers of the--- @srcSubresource@ (for non-3D) /must/ match the number of slices of--- the @extent@ (for 3D) or layers of the @dstSubresource@ (for non-3D)------ - If either of the calling command’s @srcImage@ or @dstImage@--- parameters are of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType'--- @VK_IMAGE_TYPE_3D@, the @baseArrayLayer@ and @layerCount@ members of--- the corresponding subresource /must/ be @0@ and @1@, respectively------ - The @aspectMask@ member of @srcSubresource@ /must/ specify aspects--- present in the calling command’s @srcImage@------ - The @aspectMask@ member of @dstSubresource@ /must/ specify aspects--- present in the calling command’s @dstImage@------ - @srcOffset.x@ and (@extent.width@ + @srcOffset.x@) /must/ both be--- greater than or equal to @0@ and less than or equal to the source--- image subresource width------ - @srcOffset.y@ and (@extent.height@ + @srcOffset.y@) /must/ both be--- greater than or equal to @0@ and less than or equal to the source--- image subresource height------ - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_1D@,--- then @srcOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@.------ - @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@) /must/ both be--- greater than or equal to @0@ and less than or equal to the source--- image subresource depth------ - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_1D@,--- then @srcOffset.z@ /must/ be @0@ and @extent.depth@ /must/ be @1@.------ - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_1D@,--- then @dstOffset.z@ /must/ be @0@ and @extent.depth@ /must/ be @1@.------ - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_2D@,--- then @srcOffset.z@ /must/ be @0@.------ - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_2D@,--- then @dstOffset.z@ /must/ be @0@.------ - If both @srcImage@ and @dstImage@ are of type @VK_IMAGE_TYPE_2D@--- then then @extent.depth@ /must/ be @1@.------ - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_2D@,--- and the @dstImage@ is of type @VK_IMAGE_TYPE_3D@, then--- @extent.depth@ /must/ equal to the @layerCount@ member of--- @srcSubresource@.------ - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_2D@,--- and the @srcImage@ is of type @VK_IMAGE_TYPE_3D@, then--- @extent.depth@ /must/ equal to the @layerCount@ member of--- @dstSubresource@.------ - @dstOffset.x@ and (@extent.width@ + @dstOffset.x@) /must/ both be--- greater than or equal to @0@ and less than or equal to the--- destination image subresource width------ - @dstOffset.y@ and (@extent.height@ + @dstOffset.y@) /must/ both be--- greater than or equal to @0@ and less than or equal to the--- destination image subresource height------ - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_1D@,--- then @dstOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@.------ - @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@) /must/ both be--- greater than or equal to @0@ and less than or equal to the--- destination image subresource depth------ - If the calling command’s @srcImage@ is a compressed image, or a--- /single-plane/, “@_422@” image format, all members of @srcOffset@--- /must/ be a multiple of the corresponding dimensions of the--- compressed texel block------ - If the calling command’s @srcImage@ is a compressed image, or a--- /single-plane/, “@_422@” image format, @extent.width@ /must/ be a--- multiple of the compressed texel block width or (@extent.width@ +--- @srcOffset.x@) /must/ equal the source image subresource width------ - If the calling command’s @srcImage@ is a compressed image, or a--- /single-plane/, “@_422@” image format, @extent.height@ /must/ be a--- multiple of the compressed texel block height or (@extent.height@ +--- @srcOffset.y@) /must/ equal the source image subresource height------ - If the calling command’s @srcImage@ is a compressed image, or a--- /single-plane/, “@_422@” image format, @extent.depth@ /must/ be a--- multiple of the compressed texel block depth or (@extent.depth@ +--- @srcOffset.z@) /must/ equal the source image subresource depth------ - If the calling command’s @dstImage@ is a compressed format image, or--- a /single-plane/, “@_422@” image format, all members of @dstOffset@--- /must/ be a multiple of the corresponding dimensions of the--- compressed texel block------ - If the calling command’s @dstImage@ is a compressed format image, or--- a /single-plane/, “@_422@” image format, @extent.width@ /must/ be a--- multiple of the compressed texel block width or (@extent.width@ +--- @dstOffset.x@) /must/ equal the destination image subresource width------ - If the calling command’s @dstImage@ is a compressed format image, or--- a /single-plane/, “@_422@” image format, @extent.height@ /must/ be a--- multiple of the compressed texel block height or (@extent.height@ +--- @dstOffset.y@) /must/ equal the destination image subresource height------ - If the calling command’s @dstImage@ is a compressed format image, or--- a /single-plane/, “@_422@” image format, @extent.depth@ /must/ be a--- multiple of the compressed texel block depth or (@extent.depth@ +--- @dstOffset.z@) /must/ equal the destination image subresource depth------ == Valid Usage (Implicit)------ - @srcSubresource@ /must/ be a valid @VkImageSubresourceLayers@--- structure------ - @dstSubresource@ /must/ be a valid @VkImageSubresourceLayers@--- structure------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkExtent3D',--- 'VkImageSubresourceLayers',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D',--- 'vkCmdCopyImage'-data VkImageCopy = VkImageCopy- { -- | @srcSubresource@ and @dstSubresource@ are 'VkImageSubresourceLayers'- -- structures specifying the image subresources of the images used for the- -- source and destination image data, respectively.- vkSrcSubresource :: VkImageSubresourceLayers- , -- | @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets- -- in texels of the sub-regions of the source and destination image data.- vkSrcOffset :: VkOffset3D- , -- No documentation found for Nested "VkImageCopy" "dstSubresource"- vkDstSubresource :: VkImageSubresourceLayers- , -- No documentation found for Nested "VkImageCopy" "dstOffset"- vkDstOffset :: VkOffset3D- , -- | @extent@ is the size in texels of the image to copy in @width@, @height@- -- and @depth@.- vkExtent :: VkExtent3D- }- deriving (Eq, Show)--instance Storable VkImageCopy where- sizeOf ~_ = 68- alignment ~_ = 4- peek ptr = VkImageCopy <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSrcSubresource (poked :: VkImageCopy))- *> poke (ptr `plusPtr` 16) (vkSrcOffset (poked :: VkImageCopy))- *> poke (ptr `plusPtr` 28) (vkDstSubresource (poked :: VkImageCopy))- *> poke (ptr `plusPtr` 44) (vkDstOffset (poked :: VkImageCopy))- *> poke (ptr `plusPtr` 56) (vkExtent (poked :: VkImageCopy))--- | VkImageBlit - Structure specifying an image blit operation------ = Description------ For each element of the @pRegions@ array, a blit operation is performed--- the specified source and destination regions.------ == Valid Usage------ - The @aspectMask@ member of @srcSubresource@ and @dstSubresource@--- /must/ match------ - The @layerCount@ member of @srcSubresource@ and @dstSubresource@--- /must/ match------ - If either of the calling command’s @srcImage@ or @dstImage@--- parameters are of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType'--- @VK_IMAGE_TYPE_3D@, the @baseArrayLayer@ and @layerCount@ members of--- both @srcSubresource@ and @dstSubresource@ /must/ be @0@ and @1@,--- respectively------ - The @aspectMask@ member of @srcSubresource@ /must/ specify aspects--- present in the calling command’s @srcImage@------ - The @aspectMask@ member of @dstSubresource@ /must/ specify aspects--- present in the calling command’s @dstImage@------ - @srcOffset@[0].@x@ and @srcOffset@[1].@x@ /must/ both be greater--- than or equal to @0@ and less than or equal to the source image--- subresource width------ - @srcOffset@[0].@y@ and @srcOffset@[1].@y@ /must/ both be greater--- than or equal to @0@ and less than or equal to the source image--- subresource height------ - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_1D@,--- then @srcOffset@[0].y /must/ be @0@ and @srcOffset@[1].y /must/ be--- @1@.------ - @srcOffset@[0].@z@ and @srcOffset@[1].@z@ /must/ both be greater--- than or equal to @0@ and less than or equal to the source image--- subresource depth------ - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_1D@ or--- @VK_IMAGE_TYPE_2D@, then @srcOffset@[0].z /must/ be @0@ and--- @srcOffset@[1].z /must/ be @1@.------ - @dstOffset@[0].@x@ and @dstOffset@[1].@x@ /must/ both be greater--- than or equal to @0@ and less than or equal to the destination image--- subresource width------ - @dstOffset@[0].@y@ and @dstOffset@[1].@y@ /must/ both be greater--- than or equal to @0@ and less than or equal to the destination image--- subresource height------ - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_1D@,--- then @dstOffset@[0].y /must/ be @0@ and @dstOffset@[1].y /must/ be--- @1@.------ - @dstOffset@[0].@z@ and @dstOffset@[1].@z@ /must/ both be greater--- than or equal to @0@ and less than or equal to the destination image--- subresource depth------ - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_1D@ or--- @VK_IMAGE_TYPE_2D@, then @dstOffset@[0].z /must/ be @0@ and--- @dstOffset@[1].z /must/ be @1@.------ == Valid Usage (Implicit)------ - @srcSubresource@ /must/ be a valid @VkImageSubresourceLayers@--- structure------ - @dstSubresource@ /must/ be a valid @VkImageSubresourceLayers@--- structure------ = See Also------ 'VkImageSubresourceLayers',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D',--- 'vkCmdBlitImage'-data VkImageBlit = VkImageBlit- { -- | @srcSubresource@ is the subresource to blit from.- vkSrcSubresource :: VkImageSubresourceLayers- , -- | @srcOffsets@ is an array of two- -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D'- -- structures specifying the bounds of the source region within- -- @srcSubresource@.- vkSrcOffsets :: Vector 2 VkOffset3D- , -- | @dstSubresource@ is the subresource to blit into.- vkDstSubresource :: VkImageSubresourceLayers- , -- | @dstOffsets@ is an array of two- -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D'- -- structures specifying the bounds of the destination region within- -- @dstSubresource@.- vkDstOffsets :: Vector 2 VkOffset3D- }- deriving (Eq, Show)--instance Storable VkImageBlit where- sizeOf ~_ = 80- alignment ~_ = 4- peek ptr = VkImageBlit <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSrcSubresource (poked :: VkImageBlit))- *> poke (ptr `plusPtr` 16) (vkSrcOffsets (poked :: VkImageBlit))- *> poke (ptr `plusPtr` 40) (vkDstSubresource (poked :: VkImageBlit))- *> poke (ptr `plusPtr` 56) (vkDstOffsets (poked :: VkImageBlit))--- | VkBufferImageCopy - Structure specifying a buffer image copy operation------ = Description------ When copying to or from a depth or stencil aspect, the data in buffer--- memory uses a layout that is a (mostly) tightly packed representation of--- the depth or stencil data. Specifically:------ - data copied to or from the stencil aspect of any depth\/stencil--- format is tightly packed with one @VK_FORMAT_S8_UINT@ value per--- texel.------ - data copied to or from the depth aspect of a @VK_FORMAT_D16_UNORM@--- or @VK_FORMAT_D16_UNORM_S8_UINT@ format is tightly packed with one--- @VK_FORMAT_D16_UNORM@ value per texel.------ - data copied to or from the depth aspect of a @VK_FORMAT_D32_SFLOAT@--- or @VK_FORMAT_D32_SFLOAT_S8_UINT@ format is tightly packed with one--- @VK_FORMAT_D32_SFLOAT@ value per texel.------ - data copied to or from the depth aspect of a--- @VK_FORMAT_X8_D24_UNORM_PACK32@ or @VK_FORMAT_D24_UNORM_S8_UINT@--- format is packed with one 32-bit word per texel with the D24 value--- in the LSBs of the word, and undefined values in the eight MSBs.------ __Note__------ To copy both the depth and stencil aspects of a depth\/stencil format,--- two entries in @pRegions@ /can/ be used, where one specifies the depth--- aspect in @imageSubresource@, and the other specifies the stencil--- aspect.------ Because depth or stencil aspect buffer to image copies /may/ require--- format conversions on some implementations, they are not supported on--- queues that do not support graphics. When copying to a depth aspect, the--- data in buffer memory /must/ be in the the range [0,1] or undefined--- results occur.------ Copies are done layer by layer starting with image layer--- @baseArrayLayer@ member of @imageSubresource@. @layerCount@ layers are--- copied from the source image or to the destination image.------ == Valid Usage------ - If the calling command’s @VkImage@ parameter’s format is not a--- depth\/stencil format or a [multi-planar--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),--- then @bufferOffset@ /must/ be a multiple of the format’s element--- size------ - If the calling command’s @VkImage@ parameter’s format is a--- [multi-planar--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),--- then @bufferOffset@ /must/ be a multiple of the element size of the--- compatible format for the format and the @aspectMask@ of the--- @imageSubresource@ as defined in--- [{html_spec_relative}#features-formats-compatible-planes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatible-planes)------ - @bufferOffset@ /must/ be a multiple of @4@------ - @bufferRowLength@ /must/ be @0@, or greater than or equal to the--- @width@ member of @imageExtent@------ - @bufferImageHeight@ /must/ be @0@, or greater than or equal to the--- @height@ member of @imageExtent@------ - @imageOffset.x@ and (@imageExtent.width@ + @imageOffset.x@) /must/--- both be greater than or equal to @0@ and less than or equal to the--- image subresource width where this refers to the width of the--- /plane/ of the image involved in the copy in the case of a--- [multi-planar--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)------ - @imageOffset.y@ and (imageExtent.height + @imageOffset.y@) /must/--- both be greater than or equal to @0@ and less than or equal to the--- image subresource height where this refers to the height of the--- /plane/ of the image involved in the copy in the case of a--- [multi-planar--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)------ - If the calling command’s @srcImage@ ('vkCmdCopyImageToBuffer') or--- @dstImage@ ('vkCmdCopyBufferToImage') is of type @VK_IMAGE_TYPE_1D@,--- then @imageOffset.y@ /must/ be @0@ and @imageExtent.height@ /must/--- be @1@.------ - @imageOffset.z@ and (imageExtent.depth + @imageOffset.z@) /must/--- both be greater than or equal to @0@ and less than or equal to the--- image subresource depth------ - If the calling command’s @srcImage@ ('vkCmdCopyImageToBuffer') or--- @dstImage@ ('vkCmdCopyBufferToImage') is of type @VK_IMAGE_TYPE_1D@--- or @VK_IMAGE_TYPE_2D@, then @imageOffset.z@ /must/ be @0@ and--- @imageExtent.depth@ /must/ be @1@------ - If the calling command’s @VkImage@ parameter is a compressed image,--- or a /single-plane/, “@_422@” image format, @bufferRowLength@ /must/--- be a multiple of the compressed texel block width------ - If the calling command’s @VkImage@ parameter is a compressed image,--- or a /single-plane/, “@_422@” image format, @bufferImageHeight@--- /must/ be a multiple of the compressed texel block height------ - If the calling command’s @VkImage@ parameter is a compressed image,--- or a /single-plane/, “@_422@” image format, all members of--- @imageOffset@ /must/ be a multiple of the corresponding dimensions--- of the compressed texel block------ - If the calling command’s @VkImage@ parameter is a compressed image,--- or a /single-plane/, “@_422@” image format, @bufferOffset@ /must/ be--- a multiple of the compressed texel block size in bytes------ - If the calling command’s @VkImage@ parameter is a compressed image,--- or a /single-plane/, “@_422@” image format, @imageExtent.width@--- /must/ be a multiple of the compressed texel block width or--- (@imageExtent.width@ + @imageOffset.x@) /must/ equal the image--- subresource width------ - If the calling command’s @VkImage@ parameter is a compressed image,--- or a /single-plane/, “@_422@” image format, @imageExtent.height@--- /must/ be a multiple of the compressed texel block height or--- (@imageExtent.height@ + @imageOffset.y@) /must/ equal the image--- subresource height------ - If the calling command’s @VkImage@ parameter is a compressed image,--- or a /single-plane/, “@_422@” image format, @imageExtent.depth@--- /must/ be a multiple of the compressed texel block depth or--- (@imageExtent.depth@ + @imageOffset.z@) /must/ equal the image--- subresource depth------ - The @aspectMask@ member of @imageSubresource@ /must/ specify aspects--- present in the calling command’s @VkImage@ parameter------ - If the calling command’s @VkImage@ parameter’s format is a--- [multi-planar--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),--- then the @aspectMask@ member of @imageSubresource@ /must/ be--- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or--- @VK_IMAGE_ASPECT_PLANE_2_BIT@ (with @VK_IMAGE_ASPECT_PLANE_2_BIT@--- valid only for image formats with three planes)------ - The @aspectMask@ member of @imageSubresource@ /must/ only have a--- single bit set------ - If the calling command’s @VkImage@ parameter is of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType'--- @VK_IMAGE_TYPE_3D@, the @baseArrayLayer@ and @layerCount@ members of--- @imageSubresource@ /must/ be @0@ and @1@, respectively------ - When copying to the depth aspect of an image subresource, the data--- in the source buffer /must/ be in the range [0,1]------ == Valid Usage (Implicit)------ - @imageSubresource@ /must/ be a valid @VkImageSubresourceLayers@--- structure------ = See Also------ @VkDeviceSize@,--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkExtent3D',--- 'VkImageSubresourceLayers',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D',--- 'vkCmdCopyBufferToImage', 'vkCmdCopyImageToBuffer'-data VkBufferImageCopy = VkBufferImageCopy- { -- | @bufferOffset@ is the offset in bytes from the start of the buffer- -- object where the image data is copied from or to.- vkBufferOffset :: VkDeviceSize- , -- | @bufferRowLength@ and @bufferImageHeight@ specify the data in buffer- -- memory as a subregion of a larger two- or three-dimensional image, and- -- control the addressing calculations of data in buffer memory. If either- -- of these values is zero, that aspect of the buffer memory is considered- -- to be tightly packed according to the @imageExtent@.- vkBufferRowLength :: Word32- , -- No documentation found for Nested "VkBufferImageCopy" "bufferImageHeight"- vkBufferImageHeight :: Word32- , -- | @imageSubresource@ is a 'VkImageSubresourceLayers' used to specify the- -- specific image subresources of the image used for the source or- -- destination image data.- vkImageSubresource :: VkImageSubresourceLayers- , -- | @imageOffset@ selects the initial @x@, @y@, @z@ offsets in texels of the- -- sub-region of the source or destination image data.- vkImageOffset :: VkOffset3D- , -- | @imageExtent@ is the size in texels of the image to copy in @width@,- -- @height@ and @depth@.- vkImageExtent :: VkExtent3D- }- deriving (Eq, Show)--instance Storable VkBufferImageCopy where- sizeOf ~_ = 56- alignment ~_ = 8- peek ptr = VkBufferImageCopy <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 44)- poke ptr poked = poke (ptr `plusPtr` 0) (vkBufferOffset (poked :: VkBufferImageCopy))- *> poke (ptr `plusPtr` 8) (vkBufferRowLength (poked :: VkBufferImageCopy))- *> poke (ptr `plusPtr` 12) (vkBufferImageHeight (poked :: VkBufferImageCopy))- *> poke (ptr `plusPtr` 16) (vkImageSubresource (poked :: VkBufferImageCopy))- *> poke (ptr `plusPtr` 32) (vkImageOffset (poked :: VkBufferImageCopy))- *> poke (ptr `plusPtr` 44) (vkImageExtent (poked :: VkBufferImageCopy))--- | VkImageResolve - Structure specifying an image resolve operation------ == Valid Usage------ - The @aspectMask@ member of @srcSubresource@ and @dstSubresource@--- /must/ only contain @VK_IMAGE_ASPECT_COLOR_BIT@------ - The @layerCount@ member of @srcSubresource@ and @dstSubresource@--- /must/ match------ - If either of the calling command’s @srcImage@ or @dstImage@--- parameters are of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType'--- @VK_IMAGE_TYPE_3D@, the @baseArrayLayer@ and @layerCount@ members of--- both @srcSubresource@ and @dstSubresource@ /must/ be @0@ and @1@,--- respectively------ - @srcOffset.x@ and (@extent.width@ + @srcOffset.x@) /must/ both be--- greater than or equal to @0@ and less than or equal to the source--- image subresource width------ - @srcOffset.y@ and (@extent.height@ + @srcOffset.y@) /must/ both be--- greater than or equal to @0@ and less than or equal to the source--- image subresource height------ - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_1D@,--- then @srcOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@.------ - @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@) /must/ both be--- greater than or equal to @0@ and less than or equal to the source--- image subresource depth------ - If the calling command’s @srcImage@ is of type @VK_IMAGE_TYPE_1D@ or--- @VK_IMAGE_TYPE_2D@, then @srcOffset.z@ /must/ be @0@ and--- @extent.depth@ /must/ be @1@.------ - @dstOffset.x@ and (@extent.width@ + @dstOffset.x@) /must/ both be--- greater than or equal to @0@ and less than or equal to the--- destination image subresource width------ - @dstOffset.y@ and (@extent.height@ + @dstOffset.y@) /must/ both be--- greater than or equal to @0@ and less than or equal to the--- destination image subresource height------ - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_1D@,--- then @dstOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@.------ - @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@) /must/ both be--- greater than or equal to @0@ and less than or equal to the--- destination image subresource depth------ - If the calling command’s @dstImage@ is of type @VK_IMAGE_TYPE_1D@ or--- @VK_IMAGE_TYPE_2D@, then @dstOffset.z@ /must/ be @0@ and--- @extent.depth@ /must/ be @1@.------ == Valid Usage (Implicit)------ - @srcSubresource@ /must/ be a valid @VkImageSubresourceLayers@--- structure------ - @dstSubresource@ /must/ be a valid @VkImageSubresourceLayers@--- structure------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkExtent3D',--- 'VkImageSubresourceLayers',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D',--- 'vkCmdResolveImage'-data VkImageResolve = VkImageResolve- { -- | @srcSubresource@ and @dstSubresource@ are 'VkImageSubresourceLayers'- -- structures specifying the image subresources of the images used for the- -- source and destination image data, respectively. Resolve of- -- depth\/stencil images is not supported.- vkSrcSubresource :: VkImageSubresourceLayers- , -- | @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets- -- in texels of the sub-regions of the source and destination image data.- vkSrcOffset :: VkOffset3D- , -- No documentation found for Nested "VkImageResolve" "dstSubresource"- vkDstSubresource :: VkImageSubresourceLayers- , -- No documentation found for Nested "VkImageResolve" "dstOffset"- vkDstOffset :: VkOffset3D- , -- | @extent@ is the size in texels of the source image to resolve in- -- @width@, @height@ and @depth@.- vkExtent :: VkExtent3D- }- deriving (Eq, Show)--instance Storable VkImageResolve where- sizeOf ~_ = 68- alignment ~_ = 4- peek ptr = VkImageResolve <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSrcSubresource (poked :: VkImageResolve))- *> poke (ptr `plusPtr` 16) (vkSrcOffset (poked :: VkImageResolve))- *> poke (ptr `plusPtr` 28) (vkDstSubresource (poked :: VkImageResolve))- *> poke (ptr `plusPtr` 44) (vkDstOffset (poked :: VkImageResolve))- *> poke (ptr `plusPtr` 56) (vkExtent (poked :: VkImageResolve))--- | VkRenderPassBeginInfo - Structure specifying render pass begin info------ = Description------ @renderArea@ is the render area that is affected by the render pass--- instance. The effects of attachment load, store and multisample resolve--- operations are restricted to the pixels whose x and y coordinates fall--- within the render area on all attachments. The render area extends to--- all layers of @framebuffer@. The application /must/ ensure (using--- scissor if necessary) that all rendering is contained within the render--- area, otherwise the pixels outside of the render area become undefined--- and shader side effects /may/ occur for fragments outside the render--- area. The render area /must/ be contained within the framebuffer--- dimensions.------ When multiview is enabled, the resolve operation at the end of a subpass--- applies to all views in the view mask.------ __Note__------ There /may/ be a performance cost for using a render area smaller than--- the framebuffer, unless it matches the render area granularity for the--- render pass.------ == Valid Usage------ - @clearValueCount@ /must/ be greater than the largest attachment--- index in @renderPass@ that specifies a @loadOp@ (or @stencilLoadOp@,--- if the attachment has a depth\/stencil format) of--- @VK_ATTACHMENT_LOAD_OP_CLEAR@------ - If @clearValueCount@ is not @0@, @pClearValues@ /must/ be a valid--- pointer to an array of @clearValueCount@ valid @VkClearValue@ unions------ - @renderPass@ /must/ be--- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)--- with the @renderPass@ member of the @VkFramebufferCreateInfo@--- structure specified when creating @framebuffer@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.VkDeviceGroupRenderPassBeginInfo'--- or--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkRenderPassSampleLocationsBeginInfoEXT'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ - @renderPass@ /must/ be a valid @VkRenderPass@ handle------ - @framebuffer@ /must/ be a valid @VkFramebuffer@ handle------ - Both of @framebuffer@, and @renderPass@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ = See Also------ 'VkClearValue', 'Graphics.Vulkan.Core10.Pass.VkFramebuffer',--- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D',--- 'Graphics.Vulkan.Core10.Pipeline.VkRenderPass',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCmdBeginRenderPass'-data VkRenderPassBeginInfo = VkRenderPassBeginInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @renderPass@ is the render pass to begin an instance of.- vkRenderPass :: VkRenderPass- , -- | @framebuffer@ is the framebuffer containing the attachments that are- -- used with the render pass.- vkFramebuffer :: VkFramebuffer- , -- | @renderArea@ is the render area that is affected by the render pass- -- instance, and is described in more detail below.- vkRenderArea :: VkRect2D- , -- | @clearValueCount@ is the number of elements in @pClearValues@.- vkClearValueCount :: Word32- , -- | @pClearValues@ is an array of 'VkClearValue' structures that contains- -- clear values for each attachment, if the attachment uses a @loadOp@- -- value of @VK_ATTACHMENT_LOAD_OP_CLEAR@ or if the attachment has a- -- depth\/stencil format and uses a @stencilLoadOp@ value of- -- @VK_ATTACHMENT_LOAD_OP_CLEAR@. The array is indexed by attachment- -- number. Only elements corresponding to cleared attachments are used.- -- Other elements of @pClearValues@ are ignored.- vkPClearValues :: Ptr VkClearValue- }- deriving (Eq, Show)--instance Storable VkRenderPassBeginInfo where- sizeOf ~_ = 64- alignment ~_ = 8- peek ptr = VkRenderPassBeginInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkRenderPassBeginInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkRenderPassBeginInfo))- *> poke (ptr `plusPtr` 16) (vkRenderPass (poked :: VkRenderPassBeginInfo))- *> poke (ptr `plusPtr` 24) (vkFramebuffer (poked :: VkRenderPassBeginInfo))- *> poke (ptr `plusPtr` 32) (vkRenderArea (poked :: VkRenderPassBeginInfo))- *> poke (ptr `plusPtr` 48) (vkClearValueCount (poked :: VkRenderPassBeginInfo))- *> poke (ptr `plusPtr` 56) (vkPClearValues (poked :: VkRenderPassBeginInfo))--- | VkClearDepthStencilValue - Structure specifying a clear depth stencil--- value------ == Valid Usage------ - Unless the @{html_spec_relative}#VK_EXT_depth_range_unrestricted@--- extension is enabled @depth@ /must/ be between @0.0@ and @1.0@,--- inclusive------ = See Also------ 'VkClearValue', 'vkCmdClearDepthStencilImage'-data VkClearDepthStencilValue = VkClearDepthStencilValue- { -- | @depth@ is the clear value for the depth aspect of the depth\/stencil- -- attachment. It is a floating-point value which is automatically- -- converted to the attachment’s format.- vkDepth :: CFloat- , -- | @stencil@ is the clear value for the stencil aspect of the- -- depth\/stencil attachment. It is a 32-bit integer value which is- -- converted to the attachment’s format by taking the appropriate number of- -- LSBs.- vkStencil :: Word32- }- deriving (Eq, Show)--instance Storable VkClearDepthStencilValue where- sizeOf ~_ = 8- alignment ~_ = 4- peek ptr = VkClearDepthStencilValue <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- poke ptr poked = poke (ptr `plusPtr` 0) (vkDepth (poked :: VkClearDepthStencilValue))- *> poke (ptr `plusPtr` 4) (vkStencil (poked :: VkClearDepthStencilValue))--- | VkClearAttachment - Structure specifying a clear attachment------ = Description------ No memory barriers are needed between @vkCmdClearAttachments@ and--- preceding or subsequent draw or attachment clear commands in the same--- subpass.------ The @vkCmdClearAttachments@ command is not affected by the bound--- pipeline state.------ Attachments /can/ also be cleared at the beginning of a render pass--- instance by setting @loadOp@ (or @stencilLoadOp@) of--- 'Graphics.Vulkan.Core10.Pass.VkAttachmentDescription' to--- @VK_ATTACHMENT_LOAD_OP_CLEAR@, as described for--- 'Graphics.Vulkan.Core10.Pass.vkCreateRenderPass'.------ == Valid Usage------ - If @aspectMask@ includes @VK_IMAGE_ASPECT_COLOR_BIT@, it /must/ not--- include @VK_IMAGE_ASPECT_DEPTH_BIT@ or @VK_IMAGE_ASPECT_STENCIL_BIT@------ - @aspectMask@ /must/ not include @VK_IMAGE_ASPECT_METADATA_BIT@------ - @clearValue@ /must/ be a valid @VkClearValue@ union------ == Valid Usage (Implicit)------ - @aspectMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlagBits'--- values------ - @aspectMask@ /must/ not be @0@------ = See Also------ 'VkClearValue',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlags',--- 'vkCmdClearAttachments'-data VkClearAttachment = VkClearAttachment- { -- | @aspectMask@ is a mask selecting the color, depth and\/or stencil- -- aspects of the attachment to be cleared. @aspectMask@ /can/ include- -- @VK_IMAGE_ASPECT_COLOR_BIT@ for color attachments,- -- @VK_IMAGE_ASPECT_DEPTH_BIT@ for depth\/stencil attachments with a depth- -- component, and @VK_IMAGE_ASPECT_STENCIL_BIT@ for depth\/stencil- -- attachments with a stencil component. If the subpass’s depth\/stencil- -- attachment is @VK_ATTACHMENT_UNUSED@, then the clear has no effect.- vkAspectMask :: VkImageAspectFlags- , -- | @colorAttachment@ is only meaningful if @VK_IMAGE_ASPECT_COLOR_BIT@ is- -- set in @aspectMask@, in which case it is an index to the- -- @pColorAttachments@ array in the- -- 'Graphics.Vulkan.Core10.Pass.VkSubpassDescription' structure of the- -- current subpass which selects the color attachment to clear. If- -- @colorAttachment@ is @VK_ATTACHMENT_UNUSED@ then the clear has no- -- effect.- vkColorAttachment :: Word32- , -- | @clearValue@ is the color or depth\/stencil value to clear the- -- attachment to, as described in [Clear- -- Values](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#clears-values)- -- below.- vkClearValue :: VkClearValue- }- deriving (Eq, Show)--instance Storable VkClearAttachment where- sizeOf ~_ = 24- alignment ~_ = 4- peek ptr = VkClearAttachment <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkAspectMask (poked :: VkClearAttachment))- *> poke (ptr `plusPtr` 4) (vkColorAttachment (poked :: VkClearAttachment))- *> poke (ptr `plusPtr` 8) (vkClearValue (poked :: VkClearAttachment))--- | VkDrawIndirectCommand - Structure specifying a draw indirect command------ = Description------ The members of @VkDrawIndirectCommand@ have the same meaning as the--- similarly named parameters of 'vkCmdDraw'.------ == Valid Usage------ - For a given vertex buffer binding, any attribute data fetched /must/--- be entirely contained within the corresponding vertex buffer--- binding, as described in--- [{html_spec_relative}#fxvertex-input](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fxvertex-input)------ - If the--- [drawIndirectFirstInstance](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-drawIndirectFirstInstance)--- feature is not enabled, @firstInstance@ /must/ be @0@------ = See Also------ 'vkCmdDrawIndirect'-data VkDrawIndirectCommand = VkDrawIndirectCommand- { -- | @vertexCount@ is the number of vertices to draw.- vkVertexCount :: Word32- , -- | @instanceCount@ is the number of instances to draw.- vkInstanceCount :: Word32- , -- | @firstVertex@ is the index of the first vertex to draw.- vkFirstVertex :: Word32- , -- | @firstInstance@ is the instance ID of the first instance to draw.- vkFirstInstance :: Word32- }- deriving (Eq, Show)--instance Storable VkDrawIndirectCommand where- sizeOf ~_ = 16- alignment ~_ = 4- peek ptr = VkDrawIndirectCommand <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- poke ptr poked = poke (ptr `plusPtr` 0) (vkVertexCount (poked :: VkDrawIndirectCommand))- *> poke (ptr `plusPtr` 4) (vkInstanceCount (poked :: VkDrawIndirectCommand))- *> poke (ptr `plusPtr` 8) (vkFirstVertex (poked :: VkDrawIndirectCommand))- *> poke (ptr `plusPtr` 12) (vkFirstInstance (poked :: VkDrawIndirectCommand))--- | VkDrawIndexedIndirectCommand - Structure specifying a draw indexed--- indirect command------ = Description------ The members of @VkDrawIndexedIndirectCommand@ have the same meaning as--- the similarly named parameters of 'vkCmdDrawIndexed'.------ == Valid Usage------ - For a given vertex buffer binding, any attribute data fetched /must/--- be entirely contained within the corresponding vertex buffer--- binding, as described in--- [{html_spec_relative}#fxvertex-input](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fxvertex-input)------ - (@indexSize@ * (@firstIndex@ + @indexCount@) + @offset@) /must/ be--- less than or equal to the size of the bound index buffer, with--- @indexSize@ being based on the type specified by @indexType@, where--- the index buffer, @indexType@, and @offset@ are specified via--- @vkCmdBindIndexBuffer@------ - If the--- [drawIndirectFirstInstance](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-drawIndirectFirstInstance)--- feature is not enabled, @firstInstance@ /must/ be @0@------ = See Also------ 'vkCmdDrawIndexedIndirect'-data VkDrawIndexedIndirectCommand = VkDrawIndexedIndirectCommand- { -- | @indexCount@ is the number of vertices to draw.- vkIndexCount :: Word32- , -- | @instanceCount@ is the number of instances to draw.- vkInstanceCount :: Word32- , -- | @firstIndex@ is the base index within the index buffer.- vkFirstIndex :: Word32- , -- | @vertexOffset@ is the value added to the vertex index before indexing- -- into the vertex buffer.- vkVertexOffset :: Int32- , -- | @firstInstance@ is the instance ID of the first instance to draw.- vkFirstInstance :: Word32- }- deriving (Eq, Show)--instance Storable VkDrawIndexedIndirectCommand where- sizeOf ~_ = 20- alignment ~_ = 4- peek ptr = VkDrawIndexedIndirectCommand <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkIndexCount (poked :: VkDrawIndexedIndirectCommand))- *> poke (ptr `plusPtr` 4) (vkInstanceCount (poked :: VkDrawIndexedIndirectCommand))- *> poke (ptr `plusPtr` 8) (vkFirstIndex (poked :: VkDrawIndexedIndirectCommand))- *> poke (ptr `plusPtr` 12) (vkVertexOffset (poked :: VkDrawIndexedIndirectCommand))- *> poke (ptr `plusPtr` 16) (vkFirstInstance (poked :: VkDrawIndexedIndirectCommand))--- | VkDispatchIndirectCommand - Structure specifying a dispatch indirect--- command------ = Description------ The members of @VkDispatchIndirectCommand@ have the same meaning as the--- corresponding parameters of 'vkCmdDispatch'.------ == Valid Usage------ - @x@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[0]------ - @y@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[1]------ - @z@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[2]------ = See Also------ 'vkCmdDispatchIndirect'-data VkDispatchIndirectCommand = VkDispatchIndirectCommand- { -- | @x@ is the number of local workgroups to dispatch in the X dimension.- vkX :: Word32- , -- | @y@ is the number of local workgroups to dispatch in the Y dimension.- vkY :: Word32- , -- | @z@ is the number of local workgroups to dispatch in the Z dimension.- vkZ :: Word32- }- deriving (Eq, Show)--instance Storable VkDispatchIndirectCommand where- sizeOf ~_ = 12- alignment ~_ = 4- peek ptr = VkDispatchIndirectCommand <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkX (poked :: VkDispatchIndirectCommand))- *> poke (ptr `plusPtr` 4) (vkY (poked :: VkDispatchIndirectCommand))- *> poke (ptr `plusPtr` 8) (vkZ (poked :: VkDispatchIndirectCommand))--- | VkClearColorValue - Structure specifying a clear color value------ = Description------ The four array elements of the clear color map to R, G, B, and A--- components of image formats, in order.------ If the image has more than one sample, the same value is written to all--- samples for any pixels being cleared.------ = See Also------ 'VkClearValue', 'vkCmdClearColorImage'-data VkClearColorValue- = -- No documentation found for Nested "VkClearColorValue" "VkFloat32"- VkFloat32 (Vector 4 CFloat)- | -- No documentation found for Nested "VkClearColorValue" "VkInt32"- VkInt32 (Vector 4 Int32)- | -- No documentation found for Nested "VkClearColorValue" "VkUint32"- VkUint32 (Vector 4 Word32)- deriving (Eq, Show)---- | _Note_: peek is undefined as we wouldn't know which constructor to use-instance Storable VkClearColorValue where- sizeOf ~_ = 16- alignment ~_ = 4- peek _ = error "peek @VkClearColorValue"- poke ptr = \case- VkFloat32 e -> poke (castPtr ptr) e- VkInt32 e -> poke (castPtr ptr) e- VkUint32 e -> poke (castPtr ptr) e--- | VkClearValue - Structure specifying a clear value------ = Description------ This union is used where part of the API requires either color or--- depth\/stencil clear values, depending on the attachment, and defines--- the initial clear values in the 'VkRenderPassBeginInfo' structure.------ == Valid Usage------ - @depthStencil@ /must/ be a valid @VkClearDepthStencilValue@--- structure------ = See Also------ 'VkClearAttachment', 'VkClearColorValue', 'VkClearDepthStencilValue',--- 'VkRenderPassBeginInfo'-data VkClearValue- = -- No documentation found for Nested "VkClearValue" "VkColor"- VkColor VkClearColorValue- | -- No documentation found for Nested "VkClearValue" "VkDepthStencil"- VkDepthStencil VkClearDepthStencilValue- deriving (Eq, Show)---- | _Note_: peek is undefined as we wouldn't know which constructor to use-instance Storable VkClearValue where- sizeOf ~_ = 16- alignment ~_ = 4- peek _ = error "peek @VkClearValue"- poke ptr = \case- VkColor e -> poke (castPtr ptr) e- VkDepthStencil e -> poke (castPtr ptr) e--- | VkStencilFaceFlags - Bitmask of VkStencilFaceFlagBits------ = Description------ @VkStencilFaceFlags@ is a bitmask type for setting a mask of zero or--- more 'VkStencilFaceFlagBits'.------ = See Also------ 'VkStencilFaceFlagBits', 'vkCmdSetStencilCompareMask',--- 'vkCmdSetStencilReference', 'vkCmdSetStencilWriteMask'-type VkStencilFaceFlags = VkStencilFaceFlagBits+{-# language CPP #-}+module Graphics.Vulkan.Core10.CommandBufferBuilding ( cmdBindPipeline+ , cmdSetViewport+ , cmdSetScissor+ , cmdSetLineWidth+ , cmdSetDepthBias+ , cmdSetBlendConstants+ , cmdSetDepthBounds+ , cmdSetStencilCompareMask+ , cmdSetStencilWriteMask+ , cmdSetStencilReference+ , cmdBindDescriptorSets+ , cmdBindIndexBuffer+ , cmdBindVertexBuffers+ , cmdDraw+ , cmdDrawIndexed+ , cmdDrawIndirect+ , cmdDrawIndexedIndirect+ , cmdDispatch+ , cmdDispatchIndirect+ , cmdCopyBuffer+ , cmdCopyImage+ , cmdBlitImage+ , cmdCopyBufferToImage+ , cmdCopyImageToBuffer+ , cmdUpdateBuffer+ , cmdFillBuffer+ , cmdClearColorImage+ , cmdClearDepthStencilImage+ , cmdClearAttachments+ , cmdResolveImage+ , cmdSetEvent+ , cmdResetEvent+ , cmdWaitEvents+ , cmdPipelineBarrier+ , cmdBeginQuery+ , cmdEndQuery+ , cmdResetQueryPool+ , cmdWriteTimestamp+ , cmdCopyQueryPoolResults+ , cmdPushConstants+ , cmdBeginRenderPass+ , cmdNextSubpass+ , cmdEndRenderPass+ , cmdExecuteCommands+ , Viewport(..)+ , Rect2D(..)+ , ClearRect(..)+ , BufferCopy(..)+ , ImageCopy(..)+ , ImageBlit(..)+ , BufferImageCopy(..)+ , ImageResolve(..)+ , RenderPassBeginInfo(..)+ , ClearAttachment(..)+ ) where++import Control.Monad (unless)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CFloat(..))+import Foreign.C.Types (CFloat(CFloat))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import GHC.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import qualified Data.Vector.Storable.Sized (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.Core10.Handles (Buffer(..))+import Graphics.Vulkan.Core10.OtherTypes (BufferMemoryBarrier)+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.SharedTypes (ClearColorValue)+import Graphics.Vulkan.Core10.SharedTypes (ClearDepthStencilValue)+import Graphics.Vulkan.Core10.SharedTypes (ClearValue)+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlags)+import Graphics.Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlags)+import Graphics.Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlagBits(..))+import Graphics.Vulkan.Core10.Handles (DescriptorSet)+import Graphics.Vulkan.Core10.Handles (DescriptorSet(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdBeginQuery))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdBeginRenderPass))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdBindDescriptorSets))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdBindIndexBuffer))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdBindPipeline))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdBindVertexBuffers))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdBlitImage))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdClearAttachments))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdClearColorImage))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdClearDepthStencilImage))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdCopyBuffer))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdCopyBufferToImage))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdCopyImage))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdCopyImageToBuffer))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdCopyQueryPoolResults))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdDispatch))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdDispatchIndirect))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdDraw))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdDrawIndexed))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdDrawIndexedIndirect))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdDrawIndirect))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdEndQuery))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdEndRenderPass))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdExecuteCommands))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdFillBuffer))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdNextSubpass))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdPipelineBarrier))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdPushConstants))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdResetEvent))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdResetQueryPool))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdResolveImage))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetBlendConstants))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetDepthBias))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetDepthBounds))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetEvent))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetLineWidth))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetScissor))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetStencilCompareMask))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetStencilReference))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetStencilWriteMask))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetViewport))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdUpdateBuffer))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdWaitEvents))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdWriteTimestamp))+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupRenderPassBeginInfo)+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.Handles (Event)+import Graphics.Vulkan.Core10.Handles (Event(..))+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.Core10.SharedTypes (Extent2D)+import Graphics.Vulkan.Core10.SharedTypes (Extent3D)+import Graphics.Vulkan.Core10.Enums.Filter (Filter)+import Graphics.Vulkan.Core10.Enums.Filter (Filter(..))+import Graphics.Vulkan.Core10.Handles (Framebuffer)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Image)+import Graphics.Vulkan.Core10.Handles (Image(..))+import Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlags)+import Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout)+import Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout(..))+import Graphics.Vulkan.Core10.OtherTypes (ImageMemoryBarrier)+import Graphics.Vulkan.Core10.SharedTypes (ImageSubresourceLayers)+import Graphics.Vulkan.Core10.SharedTypes (ImageSubresourceRange)+import Graphics.Vulkan.Core10.Enums.IndexType (IndexType)+import Graphics.Vulkan.Core10.Enums.IndexType (IndexType(..))+import Graphics.Vulkan.Core10.OtherTypes (MemoryBarrier)+import Graphics.Vulkan.Core10.SharedTypes (Offset2D)+import Graphics.Vulkan.Core10.SharedTypes (Offset3D)+import Graphics.Vulkan.Core10.Handles (Pipeline)+import Graphics.Vulkan.Core10.Handles (Pipeline(..))+import Graphics.Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint)+import Graphics.Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint(..))+import Graphics.Vulkan.Core10.Handles (PipelineLayout)+import Graphics.Vulkan.Core10.Handles (PipelineLayout(..))+import Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits)+import Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(..))+import Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)+import Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)+import Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(..))+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlags)+import Graphics.Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlags)+import Graphics.Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlagBits(..))+import Graphics.Vulkan.Core10.Handles (QueryPool)+import Graphics.Vulkan.Core10.Handles (QueryPool(..))+import Graphics.Vulkan.Core10.Enums.QueryResultFlagBits (QueryResultFlags)+import Graphics.Vulkan.Core10.Enums.QueryResultFlagBits (QueryResultFlags)+import Graphics.Vulkan.Core10.Enums.QueryResultFlagBits (QueryResultFlagBits(..))+import Graphics.Vulkan.Core10.Handles (RenderPass)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (RenderPassAttachmentBeginInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_sample_locations (RenderPassSampleLocationsBeginInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform (RenderPassTransformBeginInfoQCOM)+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(..))+import Graphics.Vulkan.Core10.Enums.StencilFaceFlagBits (StencilFaceFlags)+import Graphics.Vulkan.Core10.Enums.StencilFaceFlagBits (StencilFaceFlags)+import Graphics.Vulkan.Core10.Enums.StencilFaceFlagBits (StencilFaceFlagBits(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Core10.Enums.SubpassContents (SubpassContents)+import Graphics.Vulkan.Core10.Enums.SubpassContents (SubpassContents(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdBindPipeline+ :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> IO ()) -> Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> IO ()++-- | vkCmdBindPipeline - Bind a pipeline object to a command buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- that the pipeline will be bound to.+--+-- - 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- is a+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- value specifying whether to bind to the compute or graphics bind+-- point. Binding one does not disturb the other.+--+-- - 'Graphics.Vulkan.Core10.Handles.Pipeline' is the pipeline to be+-- bound.+--+-- = Description+--+-- Once bound, a pipeline binding affects subsequent graphics or compute+-- commands in the command buffer until a different pipeline is bound to+-- the bind point. The pipeline bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'+-- controls the behavior of 'cmdDispatch' and 'cmdDispatchIndirect'. The+-- pipeline bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'+-- controls the behavior of all+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing drawing commands>.+-- The pipeline bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_NV'+-- controls the behavior of+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV'. No other+-- commands are affected by the pipeline state.+--+-- == Valid Usage+--+-- - If+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- is+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE',+-- the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support compute operations+--+-- - If+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- is+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS',+-- the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - If+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- is+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE',+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' /must/ be a compute+-- pipeline+--+-- - If+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- is+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS',+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' /must/ be a graphics+-- pipeline+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-variableMultisampleRate variable multisample rate>+-- feature is not supported, 'Graphics.Vulkan.Core10.Handles.Pipeline'+-- is a graphics pipeline, the current subpass has no attachments, and+-- this is not the first call to this function with a graphics pipeline+-- after transitioning to the current subpass, then the sample count+-- specified by this pipeline /must/ match that set in the previous+-- pipeline+--+-- - If+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT'::@variableSampleLocations@+-- is 'Graphics.Vulkan.Core10.BaseType.FALSE', and+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' is a graphics pipeline+-- created with a+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'+-- structure having its @sampleLocationsEnable@ member set to+-- 'Graphics.Vulkan.Core10.BaseType.TRUE' but without+-- 'Graphics.Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'+-- enabled then the current render pass instance /must/ have been begun+-- by specifying a+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.RenderPassSampleLocationsBeginInfoEXT'+-- structure whose @pPostSubpassSampleLocations@ member contains an+-- element with a @subpassIndex@ matching the current subpass index and+-- the @sampleLocationsInfo@ member of that element /must/ match the+-- @sampleLocationsInfo@ specified in+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'+-- when the pipeline was created+--+-- - This command /must/ not be recorded when transform feedback is+-- active+--+-- - If+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- is+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_NV',+-- the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support compute operations+--+-- - If+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- is+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_NV',+-- the 'Graphics.Vulkan.Core10.Handles.Pipeline' /must/ be a ray+-- tracing pipeline+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- value+--+-- - 'Graphics.Vulkan.Core10.Handles.Pipeline' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' /must/ have been created,+-- allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Handles.Pipeline',+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+cmdBindPipeline :: CommandBuffer -> PipelineBindPoint -> Pipeline -> IO ()+cmdBindPipeline commandBuffer pipelineBindPoint pipeline = do+ let vkCmdBindPipeline' = mkVkCmdBindPipeline (pVkCmdBindPipeline (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdBindPipeline' (commandBufferHandle (commandBuffer)) (pipelineBindPoint) (pipeline)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetViewport+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Viewport -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Viewport -> IO ()++-- | vkCmdSetViewport - Set the viewport on a command buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @firstViewport@ is the index of the first viewport whose parameters+-- are updated by the command.+--+-- - @viewportCount@ is the number of viewports whose parameters are+-- updated by the command.+--+-- - @pViewports@ is a pointer to an array of 'Viewport' structures+-- specifying viewport parameters.+--+-- = Description+--+-- The viewport parameters taken from element i of @pViewports@ replace the+-- current state for the viewport index @firstViewport@ + i, for i in [0,+-- @viewportCount@).+--+-- == Valid Usage+--+-- - @firstViewport@ /must/ be less than+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@+--+-- - The sum of @firstViewport@ and @viewportCount@ /must/ be between @1@+-- and+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@,+-- inclusive+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>+-- feature is not enabled, @firstViewport@ /must/ be @0@+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>+-- feature is not enabled, @viewportCount@ /must/ be @1@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pViewports@ /must/ be a valid pointer to an array of+-- @viewportCount@ valid 'Viewport' structures+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - @viewportCount@ /must/ be greater than @0@+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', 'Viewport'+cmdSetViewport :: CommandBuffer -> ("firstViewport" ::: Word32) -> ("viewports" ::: Vector Viewport) -> IO ()+cmdSetViewport commandBuffer firstViewport viewports = evalContT $ do+ let vkCmdSetViewport' = mkVkCmdSetViewport (pVkCmdSetViewport (deviceCmds (commandBuffer :: CommandBuffer)))+ pPViewports <- ContT $ allocaBytesAligned @Viewport ((Data.Vector.length (viewports)) * 24) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPViewports `plusPtr` (24 * (i)) :: Ptr Viewport) (e) . ($ ())) (viewports)+ lift $ vkCmdSetViewport' (commandBufferHandle (commandBuffer)) (firstViewport) ((fromIntegral (Data.Vector.length $ (viewports)) :: Word32)) (pPViewports)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetScissor+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Rect2D -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Rect2D -> IO ()++-- | vkCmdSetScissor - Set the dynamic scissor rectangles on a command buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @firstScissor@ is the index of the first scissor whose state is+-- updated by the command.+--+-- - @scissorCount@ is the number of scissors whose rectangles are+-- updated by the command.+--+-- - @pScissors@ is a pointer to an array of 'Rect2D' structures defining+-- scissor rectangles.+--+-- = Description+--+-- The scissor rectangles taken from element i of @pScissors@ replace the+-- current state for the scissor index @firstScissor@ + i, for i in [0,+-- @scissorCount@).+--+-- Each scissor rectangle is described by a 'Rect2D' structure, with the+-- @offset.x@ and @offset.y@ values determining the upper left corner of+-- the scissor rectangle, and the @extent.width@ and @extent.height@ values+-- determining the size in pixels.+--+-- If a render pass transform is enabled, the (@offset.x@ and @offset.y@)+-- and (@extent.width@ and @extent.height@) values are transformed as+-- described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>+-- before participating in the scissor test.+--+-- == Valid Usage+--+-- - @firstScissor@ /must/ be less than+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@+--+-- - The sum of @firstScissor@ and @scissorCount@ /must/ be between @1@+-- and+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@,+-- inclusive+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>+-- feature is not enabled, @firstScissor@ /must/ be @0@+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>+-- feature is not enabled, @scissorCount@ /must/ be @1@+--+-- - The @x@ and @y@ members of @offset@ member of any element of+-- @pScissors@ /must/ be greater than or equal to @0@+--+-- - Evaluation of (@offset.x@ + @extent.width@) /must/ not cause a+-- signed integer addition overflow for any element of @pScissors@+--+-- - Evaluation of (@offset.y@ + @extent.height@) /must/ not cause a+-- signed integer addition overflow for any element of @pScissors@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pScissors@ /must/ be a valid pointer to an array of @scissorCount@+-- 'Rect2D' structures+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - @scissorCount@ /must/ be greater than @0@+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', 'Rect2D'+cmdSetScissor :: CommandBuffer -> ("firstScissor" ::: Word32) -> ("scissors" ::: Vector Rect2D) -> IO ()+cmdSetScissor commandBuffer firstScissor scissors = evalContT $ do+ let vkCmdSetScissor' = mkVkCmdSetScissor (pVkCmdSetScissor (deviceCmds (commandBuffer :: CommandBuffer)))+ pPScissors <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (scissors)) * 16) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPScissors `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (scissors)+ lift $ vkCmdSetScissor' (commandBufferHandle (commandBuffer)) (firstScissor) ((fromIntegral (Data.Vector.length $ (scissors)) :: Word32)) (pPScissors)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetLineWidth+ :: FunPtr (Ptr CommandBuffer_T -> CFloat -> IO ()) -> Ptr CommandBuffer_T -> CFloat -> IO ()++-- | vkCmdSetLineWidth - Set the dynamic line width state+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @lineWidth@ is the width of rasterized line segments.+--+-- == Valid Usage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-wideLines wide lines>+-- feature is not enabled, @lineWidth@ /must/ be @1.0@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdSetLineWidth :: CommandBuffer -> ("lineWidth" ::: Float) -> IO ()+cmdSetLineWidth commandBuffer lineWidth = do+ let vkCmdSetLineWidth' = mkVkCmdSetLineWidth (pVkCmdSetLineWidth (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdSetLineWidth' (commandBufferHandle (commandBuffer)) (CFloat (lineWidth))+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetDepthBias+ :: FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> CFloat -> IO ()) -> Ptr CommandBuffer_T -> CFloat -> CFloat -> CFloat -> IO ()++-- | vkCmdSetDepthBias - Set the depth bias dynamic state+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @depthBiasConstantFactor@ is a scalar factor controlling the+-- constant depth value added to each fragment.+--+-- - @depthBiasClamp@ is the maximum (or minimum) depth bias of a+-- fragment.+--+-- - @depthBiasSlopeFactor@ is a scalar factor applied to a fragment’s+-- slope in depth bias calculations.+--+-- = Description+--+-- If @depthBiasEnable@ is 'Graphics.Vulkan.Core10.BaseType.FALSE', no+-- depth bias is applied and the fragment’s depth values are unchanged.+--+-- @depthBiasSlopeFactor@ scales the maximum depth slope of the polygon,+-- and @depthBiasConstantFactor@ scales an implementation-dependent+-- constant that relates to the usable resolution of the depth buffer. The+-- resulting values are summed to produce the depth bias value which is+-- then clamped to a minimum or maximum value specified by+-- @depthBiasClamp@. @depthBiasSlopeFactor@, @depthBiasConstantFactor@, and+-- @depthBiasClamp@ /can/ each be positive, negative, or zero.+--+-- The maximum depth slope m of a triangle is+--+-- \[m = \sqrt{ \left({{\partial z_f} \over {\partial x_f}}\right)^2+-- + \left({{\partial z_f} \over {\partial y_f}}\right)^2}\]+--+-- where (xf, yf, zf) is a point on the triangle. m /may/ be approximated+-- as+--+-- \[m = \max\left( \left| { {\partial z_f} \over {\partial x_f} } \right|,+-- \left| { {\partial z_f} \over {\partial y_f} } \right|+-- \right).\]+--+-- The minimum resolvable difference r is an implementation-dependent+-- parameter that depends on the depth buffer representation. It is the+-- smallest difference in framebuffer coordinate z values that is+-- guaranteed to remain distinct throughout polygon rasterization and in+-- the depth buffer. All pairs of fragments generated by the rasterization+-- of two polygons with otherwise identical vertices, but @z@f values that+-- differ by r, will have distinct depth values.+--+-- For fixed-point depth buffer representations, r is constant throughout+-- the range of the entire depth buffer. For floating-point depth buffers,+-- there is no single minimum resolvable difference. In this case, the+-- minimum resolvable difference for a given polygon is dependent on the+-- maximum exponent, e, in the range of z values spanned by the primitive.+-- If n is the number of bits in the floating-point mantissa, the minimum+-- resolvable difference, r, for the given primitive is defined as+--+-- - r = 2e-n+--+-- If a triangle is rasterized using the+-- 'Graphics.Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL_RECTANGLE_NV'+-- polygon mode, then this minimum resolvable difference /may/ not be+-- resolvable for samples outside of the triangle, where the depth is+-- extrapolated.+--+-- If no depth buffer is present, r is undefined.+--+-- The bias value o for a polygon is+--+-- \[\begin{aligned}+-- o &= \mathrm{dbclamp}( m \times \mathtt{depthBiasSlopeFactor} + r \times \mathtt{depthBiasConstantFactor} ) \\+-- \text{where} &\quad \mathrm{dbclamp}(x) =+-- \begin{cases}+-- x & \mathtt{depthBiasClamp} = 0 \ \text{or}\ \texttt{NaN} \\+-- \min(x, \mathtt{depthBiasClamp}) & \mathtt{depthBiasClamp} > 0 \\+-- \max(x, \mathtt{depthBiasClamp}) & \mathtt{depthBiasClamp} < 0 \\+-- \end{cases}+-- \end{aligned}\]+--+-- m is computed as described above. If the depth buffer uses a fixed-point+-- representation, m is a function of depth values in the range [0,1], and+-- o is applied to depth values in the same range.+--+-- For fixed-point depth buffers, fragment depth values are always limited+-- to the range [0,1] by clamping after depth bias addition is performed.+-- Unless the+-- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_depth_range_unrestricted@+-- extension is enabled, fragment depth values are clamped even when the+-- depth buffer uses a floating-point representation.+--+-- == Valid Usage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBiasClamp depth bias clamping>+-- feature is not enabled, @depthBiasClamp@ /must/ be @0.0@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdSetDepthBias :: CommandBuffer -> ("depthBiasConstantFactor" ::: Float) -> ("depthBiasClamp" ::: Float) -> ("depthBiasSlopeFactor" ::: Float) -> IO ()+cmdSetDepthBias commandBuffer depthBiasConstantFactor depthBiasClamp depthBiasSlopeFactor = do+ let vkCmdSetDepthBias' = mkVkCmdSetDepthBias (pVkCmdSetDepthBias (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdSetDepthBias' (commandBufferHandle (commandBuffer)) (CFloat (depthBiasConstantFactor)) (CFloat (depthBiasClamp)) (CFloat (depthBiasSlopeFactor))+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetBlendConstants+ :: FunPtr (Ptr CommandBuffer_T -> Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat) -> IO ()++-- | vkCmdSetBlendConstants - Set the values of blend constants+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @blendConstants@ is a pointer to an array of four values specifying+-- the R, G, B, and A components of the blend constant color used in+-- blending, depending on the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blendfactors blend factor>.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdSetBlendConstants :: CommandBuffer -> ("blendConstants" ::: (Float, Float, Float, Float)) -> IO ()+cmdSetBlendConstants commandBuffer blendConstants = evalContT $ do+ let vkCmdSetBlendConstants' = mkVkCmdSetBlendConstants (pVkCmdSetBlendConstants (deviceCmds (commandBuffer :: CommandBuffer)))+ pBlendConstants <- ContT $ allocaBytesAligned @(Data.Vector.Storable.Sized.Vector 4 CFloat) 16 4+ let pBlendConstants' = lowerArrayPtr pBlendConstants+ lift $ case (blendConstants) of+ (e0, e1, e2, e3) -> do+ poke (pBlendConstants' :: Ptr CFloat) (CFloat (e0))+ poke (pBlendConstants' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+ poke (pBlendConstants' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))+ poke (pBlendConstants' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))+ lift $ vkCmdSetBlendConstants' (commandBufferHandle (commandBuffer)) (pBlendConstants)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetDepthBounds+ :: FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> IO ()) -> Ptr CommandBuffer_T -> CFloat -> CFloat -> IO ()++-- | vkCmdSetDepthBounds - Set the depth bounds test values for a command+-- buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @minDepthBounds@ is the lower bound of the range of depth values+-- used in the depth bounds test.+--+-- - @maxDepthBounds@ is the upper bound of the range.+--+-- == Valid Usage+--+-- - Unless the+-- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_depth_range_unrestricted@+-- extension is enabled @minDepthBounds@ /must/ be between @0.0@ and+-- @1.0@, inclusive+--+-- - Unless the+-- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_depth_range_unrestricted@+-- extension is enabled @maxDepthBounds@ /must/ be between @0.0@ and+-- @1.0@, inclusive+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdSetDepthBounds :: CommandBuffer -> ("minDepthBounds" ::: Float) -> ("maxDepthBounds" ::: Float) -> IO ()+cmdSetDepthBounds commandBuffer minDepthBounds maxDepthBounds = do+ let vkCmdSetDepthBounds' = mkVkCmdSetDepthBounds (pVkCmdSetDepthBounds (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdSetDepthBounds' (commandBufferHandle (commandBuffer)) (CFloat (minDepthBounds)) (CFloat (maxDepthBounds))+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetStencilCompareMask+ :: FunPtr (Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()++-- | vkCmdSetStencilCompareMask - Set the stencil compare mask dynamic state+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @faceMask@ is a bitmask of+-- 'Graphics.Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits'+-- specifying the set of stencil state for which to update the compare+-- mask.+--+-- - @compareMask@ is the new value to use as the stencil compare mask.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @faceMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits'+-- values+--+-- - @faceMask@ /must/ not be @0@+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlags'+cmdSetStencilCompareMask :: CommandBuffer -> ("faceMask" ::: StencilFaceFlags) -> ("compareMask" ::: Word32) -> IO ()+cmdSetStencilCompareMask commandBuffer faceMask compareMask = do+ let vkCmdSetStencilCompareMask' = mkVkCmdSetStencilCompareMask (pVkCmdSetStencilCompareMask (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdSetStencilCompareMask' (commandBufferHandle (commandBuffer)) (faceMask) (compareMask)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetStencilWriteMask+ :: FunPtr (Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()++-- | vkCmdSetStencilWriteMask - Set the stencil write mask dynamic state+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @faceMask@ is a bitmask of+-- 'Graphics.Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits'+-- specifying the set of stencil state for which to update the write+-- mask, as described above for 'cmdSetStencilCompareMask'.+--+-- - @writeMask@ is the new value to use as the stencil write mask.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @faceMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits'+-- values+--+-- - @faceMask@ /must/ not be @0@+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlags'+cmdSetStencilWriteMask :: CommandBuffer -> ("faceMask" ::: StencilFaceFlags) -> ("writeMask" ::: Word32) -> IO ()+cmdSetStencilWriteMask commandBuffer faceMask writeMask = do+ let vkCmdSetStencilWriteMask' = mkVkCmdSetStencilWriteMask (pVkCmdSetStencilWriteMask (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdSetStencilWriteMask' (commandBufferHandle (commandBuffer)) (faceMask) (writeMask)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetStencilReference+ :: FunPtr (Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()++-- | vkCmdSetStencilReference - Set the stencil reference dynamic state+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @faceMask@ is a bitmask of+-- 'Graphics.Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits'+-- specifying the set of stencil state for which to update the+-- reference value, as described above for 'cmdSetStencilCompareMask'.+--+-- - @reference@ is the new value to use as the stencil reference value.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @faceMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits'+-- values+--+-- - @faceMask@ /must/ not be @0@+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlags'+cmdSetStencilReference :: CommandBuffer -> ("faceMask" ::: StencilFaceFlags) -> ("reference" ::: Word32) -> IO ()+cmdSetStencilReference commandBuffer faceMask reference = do+ let vkCmdSetStencilReference' = mkVkCmdSetStencilReference (pVkCmdSetStencilReference (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdSetStencilReference' (commandBufferHandle (commandBuffer)) (faceMask) (reference)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdBindDescriptorSets+ :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> Word32 -> Word32 -> Ptr DescriptorSet -> Word32 -> Ptr Word32 -> IO ()) -> Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> Word32 -> Word32 -> Ptr DescriptorSet -> Word32 -> Ptr Word32 -> IO ()++-- | vkCmdBindDescriptorSets - Binds descriptor sets to a command buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- that the descriptor sets will be bound to.+--+-- - 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- is a+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- indicating whether the descriptors will be used by graphics+-- pipelines or compute pipelines. There is a separate set of bind+-- points for each of graphics and compute, so binding one does not+-- disturb the other.+--+-- - @layout@ is a 'Graphics.Vulkan.Core10.Handles.PipelineLayout' object+-- used to program the bindings.+--+-- - @firstSet@ is the set number of the first descriptor set to be+-- bound.+--+-- - @descriptorSetCount@ is the number of elements in the+-- @pDescriptorSets@ array.+--+-- - @pDescriptorSets@ is a pointer to an array of handles to+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' objects describing+-- the descriptor sets to write to.+--+-- - @dynamicOffsetCount@ is the number of dynamic offsets in the+-- @pDynamicOffsets@ array.+--+-- - @pDynamicOffsets@ is a pointer to an array of @uint32_t@ values+-- specifying dynamic offsets.+--+-- = Description+--+-- 'cmdBindDescriptorSets' causes the sets numbered [@firstSet@..+-- @firstSet@+@descriptorSetCount@-1] to use the bindings stored in+-- @pDescriptorSets@[0..descriptorSetCount-1] for subsequent rendering+-- commands (either compute or graphics, according to the+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'). Any+-- bindings that were previously applied via these sets are no longer+-- valid.+--+-- Once bound, a descriptor set affects rendering of subsequent graphics or+-- compute commands in the command buffer until a different set is bound to+-- the same set number, or else until the set is disturbed as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>.+--+-- A compatible descriptor set /must/ be bound for all set numbers that any+-- shaders in a pipeline access, at the time that a draw or dispatch+-- command is recorded to execute using that pipeline. However, if none of+-- the shaders in a pipeline statically use any bindings with a particular+-- set number, then no descriptor set need be bound for that set number,+-- even if the pipeline layout includes a non-trivial descriptor set layout+-- for that set number.+--+-- If any of the sets being bound include dynamic uniform or storage+-- buffers, then @pDynamicOffsets@ includes one element for each array+-- element in each dynamic descriptor type binding in each set. Values are+-- taken from @pDynamicOffsets@ in an order such that all entries for set N+-- come before set N+1; within a set, entries are ordered by the binding+-- numbers in the descriptor set layouts; and within a binding array,+-- elements are in order. @dynamicOffsetCount@ /must/ equal the total+-- number of dynamic descriptors in the sets being bound.+--+-- The effective offset used for dynamic uniform and storage buffer+-- bindings is the sum of the relative offset taken from @pDynamicOffsets@,+-- and the base address of the buffer plus base offset in the descriptor+-- set. The range of the dynamic uniform and storage buffer bindings is the+-- buffer range as specified in the descriptor set.+--+-- Each of the @pDescriptorSets@ /must/ be compatible with the pipeline+-- layout specified by @layout@. The layout used to program the bindings+-- /must/ also be compatible with the pipeline used in subsequent graphics+-- or compute commands, as defined in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>+-- section.+--+-- The descriptor set contents bound by a call to 'cmdBindDescriptorSets'+-- /may/ be consumed at the following times:+--+-- - For descriptor bindings created with the+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+-- bit set, the contents /may/ be consumed when the command buffer is+-- submitted to a queue, or during shader execution of the resulting+-- draws and dispatches, or any time in between. Otherwise,+--+-- - during host execution of the command, or during shader execution of+-- the resulting draws and dispatches, or any time in between.+--+-- Thus, the contents of a descriptor set binding /must/ not be altered+-- (overwritten by an update command, or freed) between the first point in+-- time that it /may/ be consumed, and when the command completes executing+-- on the queue.+--+-- The contents of @pDynamicOffsets@ are consumed immediately during+-- execution of 'cmdBindDescriptorSets'. Once all pending uses have+-- completed, it is legal to update and reuse a descriptor set.+--+-- == Valid Usage+--+-- - Each element of @pDescriptorSets@ /must/ have been allocated with a+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' that matches+-- (is the same as, or identically defined as) the+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' at set /n/ in+-- @layout@, where /n/ is the sum of @firstSet@ and the index into+-- @pDescriptorSets@+--+-- - @dynamicOffsetCount@ /must/ be equal to the total number of dynamic+-- descriptors in @pDescriptorSets@+--+-- - The sum of @firstSet@ and @descriptorSetCount@ /must/ be less than+-- or equal to+-- 'Graphics.Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@setLayoutCount@+-- provided when @layout@ was created+--+-- - 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- /must/ be supported by the+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'’s parent+-- 'Graphics.Vulkan.Core10.Handles.CommandPool'’s queue family+--+-- - Each element of @pDynamicOffsets@ which corresponds to a descriptor+-- binding with type+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'+-- /must/ be a multiple of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minUniformBufferOffsetAlignment@+--+-- - Each element of @pDynamicOffsets@ which corresponds to a descriptor+-- binding with type+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'+-- /must/ be a multiple of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minStorageBufferOffsetAlignment@+--+-- - For each dynamic uniform or storage buffer binding in+-- @pDescriptorSets@, the sum of the effective offset, as defined+-- above, and the range of the binding /must/ be less than or equal to+-- the size of the buffer+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- value+--+-- - @layout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' handle+--+-- - @pDescriptorSets@ /must/ be a valid pointer to an array of+-- @descriptorSetCount@ valid+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' handles+--+-- - If @dynamicOffsetCount@ is not @0@, @pDynamicOffsets@ /must/ be a+-- valid pointer to an array of @dynamicOffsetCount@ @uint32_t@ values+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations+--+-- - @descriptorSetCount@ /must/ be greater than @0@+--+-- - Each of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', @layout@,+-- and the elements of @pDescriptorSets@ /must/ have been created,+-- allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSet',+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout'+cmdBindDescriptorSets :: CommandBuffer -> PipelineBindPoint -> PipelineLayout -> ("firstSet" ::: Word32) -> ("descriptorSets" ::: Vector DescriptorSet) -> ("dynamicOffsets" ::: Vector Word32) -> IO ()+cmdBindDescriptorSets commandBuffer pipelineBindPoint layout firstSet descriptorSets dynamicOffsets = evalContT $ do+ let vkCmdBindDescriptorSets' = mkVkCmdBindDescriptorSets (pVkCmdBindDescriptorSets (deviceCmds (commandBuffer :: CommandBuffer)))+ pPDescriptorSets <- ContT $ allocaBytesAligned @DescriptorSet ((Data.Vector.length (descriptorSets)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPDescriptorSets `plusPtr` (8 * (i)) :: Ptr DescriptorSet) (e)) (descriptorSets)+ pPDynamicOffsets <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (dynamicOffsets)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPDynamicOffsets `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (dynamicOffsets)+ lift $ vkCmdBindDescriptorSets' (commandBufferHandle (commandBuffer)) (pipelineBindPoint) (layout) (firstSet) ((fromIntegral (Data.Vector.length $ (descriptorSets)) :: Word32)) (pPDescriptorSets) ((fromIntegral (Data.Vector.length $ (dynamicOffsets)) :: Word32)) (pPDynamicOffsets)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdBindIndexBuffer+ :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IndexType -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IndexType -> IO ()++-- | vkCmdBindIndexBuffer - Bind an index buffer to a command buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded.+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' is the buffer being bound.+--+-- - @offset@ is the starting offset in bytes within+-- 'Graphics.Vulkan.Core10.Handles.Buffer' used in index buffer address+-- calculations.+--+-- - 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' is a+-- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' value specifying+-- whether indices are treated as 16 bits or 32 bits.+--+-- == Valid Usage+--+-- - @offset@ /must/ be less than the size of+-- 'Graphics.Vulkan.Core10.Handles.Buffer'+--+-- - The sum of @offset@ and the address of the range of+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object that is backing+-- 'Graphics.Vulkan.Core10.Handles.Buffer', /must/ be a multiple of the+-- type indicated by 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType'+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ have been created+-- with the+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDEX_BUFFER_BIT'+-- flag+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is non-sparse then it+-- /must/ be bound completely and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_NV'.+--+-- - If 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' is+-- 'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_EXT', the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-indexTypeUint8 indexTypeUint8>+-- feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' value+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.Buffer', and+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ have been+-- created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType'+cmdBindIndexBuffer :: CommandBuffer -> Buffer -> ("offset" ::: DeviceSize) -> IndexType -> IO ()+cmdBindIndexBuffer commandBuffer buffer offset indexType = do+ let vkCmdBindIndexBuffer' = mkVkCmdBindIndexBuffer (pVkCmdBindIndexBuffer (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdBindIndexBuffer' (commandBufferHandle (commandBuffer)) (buffer) (offset) (indexType)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdBindVertexBuffers+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()++-- | vkCmdBindVertexBuffers - Bind vertex buffers to a command buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded.+--+-- - @firstBinding@ is the index of the first vertex input binding whose+-- state is updated by the command.+--+-- - @bindingCount@ is the number of vertex input bindings whose state is+-- updated by the command.+--+-- - @pBuffers@ is a pointer to an array of buffer handles.+--+-- - @pOffsets@ is a pointer to an array of buffer offsets.+--+-- = Description+--+-- The values taken from elements i of @pBuffers@ and @pOffsets@ replace+-- the current state for the vertex input binding @firstBinding@ + i, for i+-- in [0, @bindingCount@). The vertex input binding is updated to start at+-- the offset indicated by @pOffsets@[i] from the start of the buffer+-- @pBuffers@[i]. All vertex input attributes that use each of these+-- bindings will use these updated addresses in their address calculations+-- for subsequent draw commands.+--+-- == Valid Usage+--+-- - @firstBinding@ /must/ be less than+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@+--+-- - The sum of @firstBinding@ and @bindingCount@ /must/ be less than or+-- equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@+--+-- - All elements of @pOffsets@ /must/ be less than the size of the+-- corresponding element in @pBuffers@+--+-- - All elements of @pBuffers@ /must/ have been created with the+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_VERTEX_BUFFER_BIT'+-- flag+--+-- - Each element of @pBuffers@ that is non-sparse /must/ be bound+-- completely and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pBuffers@ /must/ be a valid pointer to an array of @bindingCount@+-- valid 'Graphics.Vulkan.Core10.Handles.Buffer' handles+--+-- - @pOffsets@ /must/ be a valid pointer to an array of @bindingCount@+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize' values+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - @bindingCount@ /must/ be greater than @0@+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and the+-- elements of @pBuffers@ /must/ have been created, allocated, or+-- retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+cmdBindVertexBuffers :: CommandBuffer -> ("firstBinding" ::: Word32) -> ("buffers" ::: Vector Buffer) -> ("offsets" ::: Vector DeviceSize) -> IO ()+cmdBindVertexBuffers commandBuffer firstBinding buffers offsets = evalContT $ do+ let vkCmdBindVertexBuffers' = mkVkCmdBindVertexBuffers (pVkCmdBindVertexBuffers (deviceCmds (commandBuffer :: CommandBuffer)))+ let pBuffersLength = Data.Vector.length $ (buffers)+ let pOffsetsLength = Data.Vector.length $ (offsets)+ lift $ unless (pOffsetsLength == pBuffersLength) $+ throwIO $ IOError Nothing InvalidArgument "" "pOffsets and pBuffers must have the same length" Nothing Nothing+ pPBuffers <- ContT $ allocaBytesAligned @Buffer ((Data.Vector.length (buffers)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPBuffers `plusPtr` (8 * (i)) :: Ptr Buffer) (e)) (buffers)+ pPOffsets <- ContT $ allocaBytesAligned @DeviceSize ((Data.Vector.length (offsets)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPOffsets `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (offsets)+ lift $ vkCmdBindVertexBuffers' (commandBufferHandle (commandBuffer)) (firstBinding) ((fromIntegral pBuffersLength :: Word32)) (pPBuffers) (pPOffsets)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdDraw+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Word32 -> IO ()++-- | vkCmdDraw - Draw primitives+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded.+--+-- - @vertexCount@ is the number of vertices to draw.+--+-- - @instanceCount@ is the number of instances to draw.+--+-- - @firstVertex@ is the index of the first vertex to draw.+--+-- - @firstInstance@ is the instance ID of the first instance to draw.+--+-- = Description+--+-- When the command is executed, primitives are assembled using the current+-- primitive topology and @vertexCount@ consecutive vertex indices with the+-- first @vertexIndex@ value equal to @firstVertex@. The primitives are+-- drawn @instanceCount@ times with @instanceIndex@ starting with+-- @firstInstance@ and increasing sequentially for each instance. The+-- assembled primitives execute the bound graphics pipeline.+--+-- == Valid Usage+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' as a result of+-- this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is accessed using+-- atomic operations as a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering, as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'+-- with a reduction mode of either+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+-- or+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+-- as a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering together with minmax filtering,+-- as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.Image' created with a+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- containing+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+-- sampled as a result of this command /must/ only be sampled using a+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+-- of+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--+-- - For each set /n/ that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a descriptor set /must/ have been bound+-- to /n/ at the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for set /n/, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - For each push constant that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a push constant value /must/ have been+-- set for the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for push constants, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - Descriptors in each bound descriptor set, specified via+-- 'cmdBindDescriptorSets', /must/ be valid if they are statically used+-- by the 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the+-- pipeline bind point used by this command+--+-- - A valid pipeline /must/ be bound to the pipeline bind point used by+-- this command+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command requires any dynamic state,+-- that state /must/ have been set for+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and done so after+-- any previously bound pipeline with the corresponding state not+-- specified as dynamic+--+-- - There /must/ not have been any calls to dynamic state setting+-- commands for any state not specified as dynamic in the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command, since that pipeline was+-- bound+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used to sample+-- from any 'Graphics.Vulkan.Core10.Handles.Image' with a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' of the type+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY',+-- in any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions with @ImplicitLod@, @Dref@ or @Proj@ in their name, in+-- any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions that includes a LOD bias or any offset values, in any+-- shader stage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a uniform buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a storage buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, any resource accessed by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command /must/ not be a protected+-- resource+--+-- - The current render pass /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>+-- with the 'Graphics.Vulkan.Core10.Handles.RenderPass' member of the+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+-- structure specified when creating the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--+-- - The subpass index of the current render pass /must/ be equal to the+-- @subpass@ member of the+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+-- structure specified when creating the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--+-- - Every input attachment used by the current subpass /must/ be bound+-- to the pipeline via a descriptor set+--+-- - Image subresources used as attachments in the current render pass+-- /must/ not be accessed in any way other than as an attachment by+-- this command.+--+-- - If the draw is recorded in a render pass instance with multiview+-- enabled, the maximum instance index /must/ be less than or equal to+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--+-- - If the bound graphics pipeline was created with+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@+-- set to 'Graphics.Vulkan.Core10.BaseType.TRUE' and the current+-- subpass has a depth\/stencil attachment, then that attachment /must/+-- have been created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+-- bit set+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a protected+-- command buffer, any resource written to by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command /must/ not be an+-- unprotected resource+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a protected+-- command buffer, pipeline stages other than the framebuffer-space and+-- compute stages in the 'Graphics.Vulkan.Core10.Handles.Pipeline'+-- object bound to the pipeline bind point /must/ not write to any+-- resource+--+-- - All vertex input bindings accessed via vertex input variables+-- declared in the vertex shader entry point’s interface /must/ have+-- valid buffers bound+--+-- - For a given vertex buffer binding, any attribute data fetched /must/+-- be entirely contained within the corresponding vertex buffer+-- binding, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdDraw :: CommandBuffer -> ("vertexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstVertex" ::: Word32) -> ("firstInstance" ::: Word32) -> IO ()+cmdDraw commandBuffer vertexCount instanceCount firstVertex firstInstance = do+ let vkCmdDraw' = mkVkCmdDraw (pVkCmdDraw (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdDraw' (commandBufferHandle (commandBuffer)) (vertexCount) (instanceCount) (firstVertex) (firstInstance)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdDrawIndexed+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Int32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Int32 -> Word32 -> IO ()++-- | vkCmdDrawIndexed - Issue an indexed draw into a command buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded.+--+-- - @indexCount@ is the number of vertices to draw.+--+-- - @instanceCount@ is the number of instances to draw.+--+-- - @firstIndex@ is the base index within the index buffer.+--+-- - @vertexOffset@ is the value added to the vertex index before+-- indexing into the vertex buffer.+--+-- - @firstInstance@ is the instance ID of the first instance to draw.+--+-- = Description+--+-- When the command is executed, primitives are assembled using the current+-- primitive topology and @indexCount@ vertices whose indices are retrieved+-- from the index buffer. The index buffer is treated as an array of+-- tightly packed unsigned integers of size defined by the+-- 'cmdBindIndexBuffer'::'Graphics.Vulkan.Core10.Enums.IndexType.IndexType'+-- parameter with which the buffer was bound.+--+-- The first vertex index is at an offset of @firstIndex@ * @indexSize@ ++-- @offset@ within the bound index buffer, where @offset@ is the offset+-- specified by 'cmdBindIndexBuffer' and @indexSize@ is the byte size of+-- the type specified by+-- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType'. Subsequent index+-- values are retrieved from consecutive locations in the index buffer.+-- Indices are first compared to the primitive restart value, then zero+-- extended to 32 bits (if the+-- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' is+-- 'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_EXT' or+-- 'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16') and have+-- @vertexOffset@ added to them, before being supplied as the @vertexIndex@+-- value.+--+-- The primitives are drawn @instanceCount@ times with @instanceIndex@+-- starting with @firstInstance@ and increasing sequentially for each+-- instance. The assembled primitives execute the bound graphics pipeline.+--+-- == Valid Usage+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' as a result of+-- this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is accessed using+-- atomic operations as a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering, as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'+-- with a reduction mode of either+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+-- or+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+-- as a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering together with minmax filtering,+-- as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.Image' created with a+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- containing+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+-- sampled as a result of this command /must/ only be sampled using a+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+-- of+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--+-- - For each set /n/ that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a descriptor set /must/ have been bound+-- to /n/ at the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for set /n/, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - For each push constant that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a push constant value /must/ have been+-- set for the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for push constants, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - Descriptors in each bound descriptor set, specified via+-- 'cmdBindDescriptorSets', /must/ be valid if they are statically used+-- by the 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the+-- pipeline bind point used by this command+--+-- - A valid pipeline /must/ be bound to the pipeline bind point used by+-- this command+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command requires any dynamic state,+-- that state /must/ have been set for+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and done so after+-- any previously bound pipeline with the corresponding state not+-- specified as dynamic+--+-- - There /must/ not have been any calls to dynamic state setting+-- commands for any state not specified as dynamic in the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command, since that pipeline was+-- bound+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used to sample+-- from any 'Graphics.Vulkan.Core10.Handles.Image' with a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' of the type+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY',+-- in any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions with @ImplicitLod@, @Dref@ or @Proj@ in their name, in+-- any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions that includes a LOD bias or any offset values, in any+-- shader stage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a uniform buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a storage buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, any resource accessed by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command /must/ not be a protected+-- resource+--+-- - The current render pass /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>+-- with the 'Graphics.Vulkan.Core10.Handles.RenderPass' member of the+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+-- structure specified when creating the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--+-- - The subpass index of the current render pass /must/ be equal to the+-- @subpass@ member of the+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+-- structure specified when creating the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--+-- - Every input attachment used by the current subpass /must/ be bound+-- to the pipeline via a descriptor set+--+-- - Image subresources used as attachments in the current render pass+-- /must/ not be accessed in any way other than as an attachment by+-- this command.+--+-- - If the draw is recorded in a render pass instance with multiview+-- enabled, the maximum instance index /must/ be less than or equal to+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--+-- - If the bound graphics pipeline was created with+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@+-- set to 'Graphics.Vulkan.Core10.BaseType.TRUE' and the current+-- subpass has a depth\/stencil attachment, then that attachment /must/+-- have been created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+-- bit set+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a protected+-- command buffer, any resource written to by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command /must/ not be an+-- unprotected resource+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a protected+-- command buffer, pipeline stages other than the framebuffer-space and+-- compute stages in the 'Graphics.Vulkan.Core10.Handles.Pipeline'+-- object bound to the pipeline bind point /must/ not write to any+-- resource+--+-- - All vertex input bindings accessed via vertex input variables+-- declared in the vertex shader entry point’s interface /must/ have+-- valid buffers bound+--+-- - For a given vertex buffer binding, any attribute data fetched /must/+-- be entirely contained within the corresponding vertex buffer+-- binding, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>+--+-- - (@indexSize@ * (@firstIndex@ + @indexCount@) + @offset@) /must/ be+-- less than or equal to the size of the bound index buffer, with+-- @indexSize@ being based on the type specified by+-- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType', where the index+-- buffer, 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType', and+-- @offset@ are specified via 'cmdBindIndexBuffer'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdDrawIndexed :: CommandBuffer -> ("indexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstIndex" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstInstance" ::: Word32) -> IO ()+cmdDrawIndexed commandBuffer indexCount instanceCount firstIndex vertexOffset firstInstance = do+ let vkCmdDrawIndexed' = mkVkCmdDrawIndexed (pVkCmdDrawIndexed (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdDrawIndexed' (commandBufferHandle (commandBuffer)) (indexCount) (instanceCount) (firstIndex) (vertexOffset) (firstInstance)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdDrawIndirect+ :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()++-- | vkCmdDrawIndirect - Issue an indirect draw into a command buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded.+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' is the buffer containing+-- draw parameters.+--+-- - @offset@ is the byte offset into+-- 'Graphics.Vulkan.Core10.Handles.Buffer' where parameters begin.+--+-- - @drawCount@ is the number of draws to execute, and /can/ be zero.+--+-- - @stride@ is the byte stride between successive sets of draw+-- parameters.+--+-- = Description+--+-- 'cmdDrawIndirect' behaves similarly to 'cmdDraw' except that the+-- parameters are read by the device from a buffer during execution.+-- @drawCount@ draws are executed by the command, with parameters taken+-- from 'Graphics.Vulkan.Core10.Handles.Buffer' starting at @offset@ and+-- increasing by @stride@ bytes for each successive draw. The parameters of+-- each draw are encoded in an array of+-- 'Graphics.Vulkan.Core10.OtherTypes.DrawIndirectCommand' structures. If+-- @drawCount@ is less than or equal to one, @stride@ is ignored.+--+-- == Valid Usage+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' as a result of+-- this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is accessed using+-- atomic operations as a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering, as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'+-- with a reduction mode of either+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+-- or+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+-- as a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering together with minmax filtering,+-- as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.Image' created with a+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- containing+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+-- sampled as a result of this command /must/ only be sampled using a+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+-- of+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--+-- - For each set /n/ that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a descriptor set /must/ have been bound+-- to /n/ at the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for set /n/, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - For each push constant that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a push constant value /must/ have been+-- set for the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for push constants, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - Descriptors in each bound descriptor set, specified via+-- 'cmdBindDescriptorSets', /must/ be valid if they are statically used+-- by the 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the+-- pipeline bind point used by this command+--+-- - A valid pipeline /must/ be bound to the pipeline bind point used by+-- this command+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command requires any dynamic state,+-- that state /must/ have been set for+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and done so after+-- any previously bound pipeline with the corresponding state not+-- specified as dynamic+--+-- - There /must/ not have been any calls to dynamic state setting+-- commands for any state not specified as dynamic in the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command, since that pipeline was+-- bound+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used to sample+-- from any 'Graphics.Vulkan.Core10.Handles.Image' with a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' of the type+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY',+-- in any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions with @ImplicitLod@, @Dref@ or @Proj@ in their name, in+-- any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions that includes a LOD bias or any offset values, in any+-- shader stage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a uniform buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a storage buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, any resource accessed by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command /must/ not be a protected+-- resource+--+-- - The current render pass /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>+-- with the 'Graphics.Vulkan.Core10.Handles.RenderPass' member of the+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+-- structure specified when creating the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--+-- - The subpass index of the current render pass /must/ be equal to the+-- @subpass@ member of the+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+-- structure specified when creating the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--+-- - Every input attachment used by the current subpass /must/ be bound+-- to the pipeline via a descriptor set+--+-- - Image subresources used as attachments in the current render pass+-- /must/ not be accessed in any way other than as an attachment by+-- this command.+--+-- - If the draw is recorded in a render pass instance with multiview+-- enabled, the maximum instance index /must/ be less than or equal to+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--+-- - If the bound graphics pipeline was created with+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@+-- set to 'Graphics.Vulkan.Core10.BaseType.TRUE' and the current+-- subpass has a depth\/stencil attachment, then that attachment /must/+-- have been created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+-- bit set+--+-- - All vertex input bindings accessed via vertex input variables+-- declared in the vertex shader entry point’s interface /must/ have+-- valid buffers bound+--+-- - For a given vertex buffer binding, any attribute data fetched /must/+-- be entirely contained within the corresponding vertex buffer+-- binding, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is non-sparse then it+-- /must/ be bound completely and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ have been created+-- with the+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+-- bit set+--+-- - @offset@ /must/ be a multiple of @4@+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ not be a+-- protected command buffer+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirect multi-draw indirect>+-- feature is not enabled, @drawCount@ /must/ be @0@ or @1@+--+-- - @drawCount@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstance drawIndirectFirstInstance>+-- feature is not enabled, all the @firstInstance@ members of the+-- 'Graphics.Vulkan.Core10.OtherTypes.DrawIndirectCommand' structures+-- accessed by this command /must/ be @0@+--+-- - If @drawCount@ is greater than @1@, @stride@ /must/ be a multiple of+-- @4@ and /must/ be greater than or equal to+-- @sizeof@('Graphics.Vulkan.Core10.OtherTypes.DrawIndirectCommand')+--+-- - If @drawCount@ is equal to @1@, (@offset@ ++-- @sizeof@('Graphics.Vulkan.Core10.OtherTypes.DrawIndirectCommand'))+-- /must/ be less than or equal to the size of+-- 'Graphics.Vulkan.Core10.Handles.Buffer'+--+-- - If @drawCount@ is greater than @1@, (@stride@ × (@drawCount@ - 1) ++-- @offset@ ++-- @sizeof@('Graphics.Vulkan.Core10.OtherTypes.DrawIndirectCommand'))+-- /must/ be less than or equal to the size of+-- 'Graphics.Vulkan.Core10.Handles.Buffer'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.Buffer', and+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ have been+-- created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+cmdDrawIndirect :: CommandBuffer -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()+cmdDrawIndirect commandBuffer buffer offset drawCount stride = do+ let vkCmdDrawIndirect' = mkVkCmdDrawIndirect (pVkCmdDrawIndirect (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdDrawIndirect' (commandBufferHandle (commandBuffer)) (buffer) (offset) (drawCount) (stride)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdDrawIndexedIndirect+ :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()++-- | vkCmdDrawIndexedIndirect - Perform an indexed indirect draw+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded.+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' is the buffer containing+-- draw parameters.+--+-- - @offset@ is the byte offset into+-- 'Graphics.Vulkan.Core10.Handles.Buffer' where parameters begin.+--+-- - @drawCount@ is the number of draws to execute, and /can/ be zero.+--+-- - @stride@ is the byte stride between successive sets of draw+-- parameters.+--+-- = Description+--+-- 'cmdDrawIndexedIndirect' behaves similarly to 'cmdDrawIndexed' except+-- that the parameters are read by the device from a buffer during+-- execution. @drawCount@ draws are executed by the command, with+-- parameters taken from 'Graphics.Vulkan.Core10.Handles.Buffer' starting+-- at @offset@ and increasing by @stride@ bytes for each successive draw.+-- The parameters of each draw are encoded in an array of+-- 'Graphics.Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand'+-- structures. If @drawCount@ is less than or equal to one, @stride@ is+-- ignored.+--+-- == Valid Usage+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' as a result of+-- this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is accessed using+-- atomic operations as a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering, as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'+-- with a reduction mode of either+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+-- or+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+-- as a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering together with minmax filtering,+-- as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.Image' created with a+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- containing+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+-- sampled as a result of this command /must/ only be sampled using a+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+-- of+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--+-- - For each set /n/ that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a descriptor set /must/ have been bound+-- to /n/ at the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for set /n/, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - For each push constant that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a push constant value /must/ have been+-- set for the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for push constants, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - Descriptors in each bound descriptor set, specified via+-- 'cmdBindDescriptorSets', /must/ be valid if they are statically used+-- by the 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the+-- pipeline bind point used by this command+--+-- - A valid pipeline /must/ be bound to the pipeline bind point used by+-- this command+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command requires any dynamic state,+-- that state /must/ have been set for+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and done so after+-- any previously bound pipeline with the corresponding state not+-- specified as dynamic+--+-- - There /must/ not have been any calls to dynamic state setting+-- commands for any state not specified as dynamic in the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command, since that pipeline was+-- bound+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used to sample+-- from any 'Graphics.Vulkan.Core10.Handles.Image' with a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' of the type+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY',+-- in any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions with @ImplicitLod@, @Dref@ or @Proj@ in their name, in+-- any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions that includes a LOD bias or any offset values, in any+-- shader stage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a uniform buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a storage buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, any resource accessed by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command /must/ not be a protected+-- resource+--+-- - The current render pass /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>+-- with the 'Graphics.Vulkan.Core10.Handles.RenderPass' member of the+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+-- structure specified when creating the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--+-- - The subpass index of the current render pass /must/ be equal to the+-- @subpass@ member of the+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+-- structure specified when creating the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--+-- - Every input attachment used by the current subpass /must/ be bound+-- to the pipeline via a descriptor set+--+-- - Image subresources used as attachments in the current render pass+-- /must/ not be accessed in any way other than as an attachment by+-- this command.+--+-- - If the draw is recorded in a render pass instance with multiview+-- enabled, the maximum instance index /must/ be less than or equal to+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--+-- - If the bound graphics pipeline was created with+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@+-- set to 'Graphics.Vulkan.Core10.BaseType.TRUE' and the current+-- subpass has a depth\/stencil attachment, then that attachment /must/+-- have been created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+-- bit set+--+-- - All vertex input bindings accessed via vertex input variables+-- declared in the vertex shader entry point’s interface /must/ have+-- valid buffers bound+--+-- - For a given vertex buffer binding, any attribute data fetched /must/+-- be entirely contained within the corresponding vertex buffer+-- binding, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is non-sparse then it+-- /must/ be bound completely and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ have been created+-- with the+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+-- bit set+--+-- - @offset@ /must/ be a multiple of @4@+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ not be a+-- protected command buffer+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirect multi-draw indirect>+-- feature is not enabled, @drawCount@ /must/ be @0@ or @1@+--+-- - @drawCount@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@+--+-- - If @drawCount@ is greater than @1@, @stride@ /must/ be a multiple of+-- @4@ and /must/ be greater than or equal to+-- @sizeof@('Graphics.Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand')+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstance drawIndirectFirstInstance>+-- feature is not enabled, all the @firstInstance@ members of the+-- 'Graphics.Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand'+-- structures accessed by this command /must/ be @0@+--+-- - If @drawCount@ is equal to @1@, (@offset@ ++-- @sizeof@('Graphics.Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand'))+-- /must/ be less than or equal to the size of+-- 'Graphics.Vulkan.Core10.Handles.Buffer'+--+-- - If @drawCount@ is greater than @1@, (@stride@ × (@drawCount@ - 1) ++-- @offset@ ++-- @sizeof@('Graphics.Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand'))+-- /must/ be less than or equal to the size of+-- 'Graphics.Vulkan.Core10.Handles.Buffer'+--+-- - If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectCount drawIndirectCount>+-- is not enabled this function /must/ not be used+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.Buffer', and+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ have been+-- created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+cmdDrawIndexedIndirect :: CommandBuffer -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()+cmdDrawIndexedIndirect commandBuffer buffer offset drawCount stride = do+ let vkCmdDrawIndexedIndirect' = mkVkCmdDrawIndexedIndirect (pVkCmdDrawIndexedIndirect (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdDrawIndexedIndirect' (commandBufferHandle (commandBuffer)) (buffer) (offset) (drawCount) (stride)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdDispatch+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> IO ()++-- | vkCmdDispatch - Dispatch compute work items+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @groupCountX@ is the number of local workgroups to dispatch in the X+-- dimension.+--+-- - @groupCountY@ is the number of local workgroups to dispatch in the Y+-- dimension.+--+-- - @groupCountZ@ is the number of local workgroups to dispatch in the Z+-- dimension.+--+-- = Description+--+-- When the command is executed, a global workgroup consisting of+-- @groupCountX@ × @groupCountY@ × @groupCountZ@ local workgroups is+-- assembled.+--+-- == Valid Usage+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' as a result of+-- this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is accessed using+-- atomic operations as a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering, as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'+-- with a reduction mode of either+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+-- or+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+-- as a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering together with minmax filtering,+-- as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.Image' created with a+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- containing+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+-- sampled as a result of this command /must/ only be sampled using a+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+-- of+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--+-- - For each set /n/ that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a descriptor set /must/ have been bound+-- to /n/ at the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for set /n/, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - For each push constant that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a push constant value /must/ have been+-- set for the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for push constants, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - Descriptors in each bound descriptor set, specified via+-- 'cmdBindDescriptorSets', /must/ be valid if they are statically used+-- by the 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the+-- pipeline bind point used by this command+--+-- - A valid pipeline /must/ be bound to the pipeline bind point used by+-- this command+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command requires any dynamic state,+-- that state /must/ have been set for+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and done so after+-- any previously bound pipeline with the corresponding state not+-- specified as dynamic+--+-- - There /must/ not have been any calls to dynamic state setting+-- commands for any state not specified as dynamic in the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command, since that pipeline was+-- bound+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used to sample+-- from any 'Graphics.Vulkan.Core10.Handles.Image' with a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' of the type+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY',+-- in any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions with @ImplicitLod@, @Dref@ or @Proj@ in their name, in+-- any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions that includes a LOD bias or any offset values, in any+-- shader stage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a uniform buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a storage buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, any resource accessed by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command /must/ not be a protected+-- resource+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a protected+-- command buffer, any resource written to by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command /must/ not be an+-- unprotected resource+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a protected+-- command buffer, pipeline stages other than the framebuffer-space and+-- compute stages in the 'Graphics.Vulkan.Core10.Handles.Pipeline'+-- object bound to the pipeline bind point /must/ not write to any+-- resource+--+-- - @groupCountX@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]+--+-- - @groupCountY@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]+--+-- - @groupCountZ@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Compute | Compute |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdDispatch :: CommandBuffer -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()+cmdDispatch commandBuffer groupCountX groupCountY groupCountZ = do+ let vkCmdDispatch' = mkVkCmdDispatch (pVkCmdDispatch (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdDispatch' (commandBufferHandle (commandBuffer)) (groupCountX) (groupCountY) (groupCountZ)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdDispatchIndirect+ :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IO ()++-- | vkCmdDispatchIndirect - Dispatch compute work items using indirect+-- parameters+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' is the buffer containing+-- dispatch parameters.+--+-- - @offset@ is the byte offset into+-- 'Graphics.Vulkan.Core10.Handles.Buffer' where parameters begin.+--+-- = Description+--+-- 'cmdDispatchIndirect' behaves similarly to 'cmdDispatch' except that the+-- parameters are read by the device from a buffer during execution. The+-- parameters of the dispatch are encoded in a+-- 'Graphics.Vulkan.Core10.OtherTypes.DispatchIndirectCommand' structure+-- taken from 'Graphics.Vulkan.Core10.Handles.Buffer' starting at @offset@.+--+-- == Valid Usage+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' as a result of+-- this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is accessed using+-- atomic operations as a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering, as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'+-- with a reduction mode of either+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+-- or+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+-- as a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering together with minmax filtering,+-- as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.Image' created with a+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- containing+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+-- sampled as a result of this command /must/ only be sampled using a+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+-- of+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--+-- - For each set /n/ that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a descriptor set /must/ have been bound+-- to /n/ at the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for set /n/, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - For each push constant that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a push constant value /must/ have been+-- set for the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for push constants, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - Descriptors in each bound descriptor set, specified via+-- 'cmdBindDescriptorSets', /must/ be valid if they are statically used+-- by the 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the+-- pipeline bind point used by this command+--+-- - A valid pipeline /must/ be bound to the pipeline bind point used by+-- this command+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command requires any dynamic state,+-- that state /must/ have been set for+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and done so after+-- any previously bound pipeline with the corresponding state not+-- specified as dynamic+--+-- - There /must/ not have been any calls to dynamic state setting+-- commands for any state not specified as dynamic in the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command, since that pipeline was+-- bound+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used to sample+-- from any 'Graphics.Vulkan.Core10.Handles.Image' with a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' of the type+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY',+-- in any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions with @ImplicitLod@, @Dref@ or @Proj@ in their name, in+-- any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions that includes a LOD bias or any offset values, in any+-- shader stage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a uniform buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a storage buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, any resource accessed by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command /must/ not be a protected+-- resource+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is non-sparse then it+-- /must/ be bound completely and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ have been created+-- with the+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+-- bit set+--+-- - @offset@ /must/ be a multiple of @4@+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ not be a+-- protected command buffer+--+-- - The sum of @offset@ and the size of+-- 'Graphics.Vulkan.Core10.OtherTypes.DispatchIndirectCommand' /must/+-- be less than or equal to the size of+-- 'Graphics.Vulkan.Core10.Handles.Buffer'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.Buffer', and+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ have been+-- created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Compute | Compute |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+cmdDispatchIndirect :: CommandBuffer -> Buffer -> ("offset" ::: DeviceSize) -> IO ()+cmdDispatchIndirect commandBuffer buffer offset = do+ let vkCmdDispatchIndirect' = mkVkCmdDispatchIndirect (pVkCmdDispatchIndirect (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdDispatchIndirect' (commandBufferHandle (commandBuffer)) (buffer) (offset)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdCopyBuffer+ :: FunPtr (Ptr CommandBuffer_T -> Buffer -> Buffer -> Word32 -> Ptr BufferCopy -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> Buffer -> Word32 -> Ptr BufferCopy -> IO ()++-- | vkCmdCopyBuffer - Copy data between buffer regions+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @srcBuffer@ is the source buffer.+--+-- - @dstBuffer@ is the destination buffer.+--+-- - @regionCount@ is the number of regions to copy.+--+-- - @pRegions@ is a pointer to an array of 'BufferCopy' structures+-- specifying the regions to copy.+--+-- = Description+--+-- Each region in @pRegions@ is copied from the source buffer to the same+-- region of the destination buffer. @srcBuffer@ and @dstBuffer@ /can/ be+-- the same buffer or alias the same memory, but the resulting values are+-- undefined if the copy regions overlap in memory.+--+-- == Valid Usage+--+-- - The @srcOffset@ member of each element of @pRegions@ /must/ be less+-- than the size of @srcBuffer@+--+-- - The @dstOffset@ member of each element of @pRegions@ /must/ be less+-- than the size of @dstBuffer@+--+-- - The @size@ member of each element of @pRegions@ /must/ be less than+-- or equal to the size of @srcBuffer@ minus @srcOffset@+--+-- - The @size@ member of each element of @pRegions@ /must/ be less than+-- or equal to the size of @dstBuffer@ minus @dstOffset@+--+-- - The union of the source regions, and the union of the destination+-- regions, specified by the elements of @pRegions@, /must/ not overlap+-- in memory+--+-- - @srcBuffer@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT'+-- usage flag+--+-- - If @srcBuffer@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - @dstBuffer@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'+-- usage flag+--+-- - If @dstBuffer@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, then @srcBuffer@ /must/ not be a protected buffer+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, then @dstBuffer@ /must/ not be a protected buffer+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a protected+-- command buffer, then @dstBuffer@ /must/ not be an unprotected buffer+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @srcBuffer@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - @dstBuffer@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - @pRegions@ /must/ be a valid pointer to an array of @regionCount@+-- valid 'BufferCopy' structures+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support transfer, graphics, or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - @regionCount@ /must/ be greater than @0@+--+-- - Each of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', @dstBuffer@,+-- and @srcBuffer@ /must/ have been created, allocated, or retrieved+-- from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Transfer | Transfer |+-- | Secondary | | Graphics | |+-- | | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer', 'BufferCopy',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdCopyBuffer :: CommandBuffer -> ("srcBuffer" ::: Buffer) -> ("dstBuffer" ::: Buffer) -> ("regions" ::: Vector BufferCopy) -> IO ()+cmdCopyBuffer commandBuffer srcBuffer dstBuffer regions = evalContT $ do+ let vkCmdCopyBuffer' = mkVkCmdCopyBuffer (pVkCmdCopyBuffer (deviceCmds (commandBuffer :: CommandBuffer)))+ pPRegions <- ContT $ allocaBytesAligned @BufferCopy ((Data.Vector.length (regions)) * 24) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRegions `plusPtr` (24 * (i)) :: Ptr BufferCopy) (e) . ($ ())) (regions)+ lift $ vkCmdCopyBuffer' (commandBufferHandle (commandBuffer)) (srcBuffer) (dstBuffer) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdCopyImage+ :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageCopy -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageCopy -> IO ()++-- | vkCmdCopyImage - Copy data between images+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @srcImage@ is the source image.+--+-- - @srcImageLayout@ is the current layout of the source image+-- subresource.+--+-- - @dstImage@ is the destination image.+--+-- - @dstImageLayout@ is the current layout of the destination image+-- subresource.+--+-- - @regionCount@ is the number of regions to copy.+--+-- - @pRegions@ is a pointer to an array of 'ImageCopy' structures+-- specifying the regions to copy.+--+-- = Description+--+-- Each region in @pRegions@ is copied from the source image to the same+-- region of the destination image. @srcImage@ and @dstImage@ /can/ be the+-- same image or alias the same memory.+--+-- The formats of @srcImage@ and @dstImage@ /must/ be compatible. Formats+-- are compatible if they share the same class, as shown in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility Compatible Formats>+-- table. Depth\/stencil formats /must/ match exactly.+--+-- If the format of @srcImage@ or @dstImage@ is a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>,+-- regions of each plane to be copied /must/ be specified separately using+-- the @srcSubresource@ and @dstSubresource@ members of the 'ImageCopy'+-- structure. In this case, the @aspectMask@ of the @srcSubresource@ or+-- @dstSubresource@ that refers to the multi-planar image /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'.+-- For the purposes of 'cmdCopyImage', each plane of a multi-planar image+-- is treated as having the format listed in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes>+-- for the plane identified by the @aspectMask@ of the corresponding+-- subresource. This applies both to+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' and to coordinates used in+-- the copy, which correspond to texels in the /plane/ rather than how+-- these texels map to coordinates in the image as a whole.+--+-- Note+--+-- For example, the+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- plane of a+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_G8_B8R8_2PLANE_420_UNORM'+-- image is compatible with an image of format+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R8G8_UNORM' and (less+-- usefully) with the+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- plane of an image of format+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16',+-- as each texel is 2 bytes in size.+--+-- 'cmdCopyImage' allows copying between /size-compatible/ compressed and+-- uncompressed internal formats. Formats are size-compatible if the texel+-- block size of the uncompressed format is equal to the texel block size+-- of the compressed format. Such a copy does not perform on-the-fly+-- compression or decompression. When copying from an uncompressed format+-- to a compressed format, each texel of uncompressed data of the source+-- image is copied as a raw value to the corresponding compressed texel+-- block of the destination image. When copying from a compressed format to+-- an uncompressed format, each compressed texel block of the source image+-- is copied as a raw value to the corresponding texel of uncompressed data+-- in the destination image. Thus, for example, it is legal to copy between+-- a 128-bit uncompressed format and a compressed format which has a+-- 128-bit sized compressed texel block representing 4×4 texels (using 8+-- bits per texel), or between a 64-bit uncompressed format and a+-- compressed format which has a 64-bit sized compressed texel block+-- representing 4×4 texels (using 4 bits per texel).+--+-- When copying between compressed and uncompressed formats the @extent@+-- members represent the texel dimensions of the source image and not the+-- destination. When copying from a compressed image to an uncompressed+-- image the image texel dimensions written to the uncompressed image will+-- be source extent divided by the compressed texel block dimensions. When+-- copying from an uncompressed image to a compressed image the image texel+-- dimensions written to the compressed image will be the source extent+-- multiplied by the compressed texel block dimensions. In both cases the+-- number of bytes read and the number of bytes written will be identical.+--+-- Copying to or from block-compressed images is typically done in+-- multiples of the compressed texel block size. For this reason the+-- @extent@ /must/ be a multiple of the compressed texel block dimension.+-- There is one exception to this rule which is /required/ to handle+-- compressed images created with dimensions that are not a multiple of the+-- compressed texel block dimensions: if the @srcImage@ is compressed,+-- then:+--+-- - If @extent.width@ is not a multiple of the compressed texel block+-- width, then (@extent.width@ + @srcOffset.x@) /must/ equal the image+-- subresource width.+--+-- - If @extent.height@ is not a multiple of the compressed texel block+-- height, then (@extent.height@ + @srcOffset.y@) /must/ equal the+-- image subresource height.+--+-- - If @extent.depth@ is not a multiple of the compressed texel block+-- depth, then (@extent.depth@ + @srcOffset.z@) /must/ equal the image+-- subresource depth.+--+-- Similarly, if the @dstImage@ is compressed, then:+--+-- - If @extent.width@ is not a multiple of the compressed texel block+-- width, then (@extent.width@ + @dstOffset.x@) /must/ equal the image+-- subresource width.+--+-- - If @extent.height@ is not a multiple of the compressed texel block+-- height, then (@extent.height@ + @dstOffset.y@) /must/ equal the+-- image subresource height.+--+-- - If @extent.depth@ is not a multiple of the compressed texel block+-- depth, then (@extent.depth@ + @dstOffset.z@) /must/ equal the image+-- subresource depth.+--+-- This allows the last compressed texel block of the image in each+-- non-multiple dimension to be included as a source or destination of the+-- copy.+--+-- “@_422@” image formats that are not+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>+-- are treated as having a 2×1 compressed texel block for the purposes of+-- these rules.+--+-- 'cmdCopyImage' /can/ be used to copy image data between multisample+-- images, but both images /must/ have the same number of samples.+--+-- == Valid Usage+--+-- - The source region specified by each element of @pRegions@ /must/ be+-- a region that is contained within @srcImage@ if the @srcImage@’s+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' is not a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,+-- and /must/ be a region that is contained within the plane being+-- copied if the @srcImage@’s+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' is a multi-planar+-- format+--+-- - The destination region specified by each element of @pRegions@+-- /must/ be a region that is contained within @dstImage@ if the+-- @dstImage@’s 'Graphics.Vulkan.Core10.Enums.Format.Format' is not a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,+-- and /must/ be a region that is contained within the plane being+-- copied to if the @dstImage@’s+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' is a multi-planar+-- format+--+-- - The union of all source regions, and the union of all destination+-- regions, specified by the elements of @pRegions@, /must/ not overlap+-- in memory+--+-- - The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+-- of @srcImage@ /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT'.+--+-- - @srcImage@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'+-- usage flag+--+-- - If @srcImage@ is non-sparse then the image or /disjoint/ plane to be+-- copied /must/ be bound completely and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - @srcImageLayout@ /must/ specify the layout of the image subresources+-- of @srcImage@ specified in @pRegions@ at the time this command is+-- executed on a 'Graphics.Vulkan.Core10.Handles.Device'+--+-- - @srcImageLayout@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'+--+-- - The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+-- of @dstImage@ /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'.+--+-- - @dstImage@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+-- usage flag+--+-- - If @dstImage@ is non-sparse then the image or /disjoint/ plane that+-- is the destination of the copy /must/ be bound completely and+-- contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - @dstImageLayout@ /must/ specify the layout of the image subresources+-- of @dstImage@ specified in @pRegions@ at the time this command is+-- executed on a 'Graphics.Vulkan.Core10.Handles.Device'+--+-- - @dstImageLayout@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'+--+-- - If the 'Graphics.Vulkan.Core10.Enums.Format.Format' of each of+-- @srcImage@ and @dstImage@ is not a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,+-- the 'Graphics.Vulkan.Core10.Enums.Format.Format' of each of+-- @srcImage@ and @dstImage@ /must/ be compatible, as defined+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-images-format-compatibility above>+--+-- - In a copy to or from a plane of a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image>,+-- the 'Graphics.Vulkan.Core10.Enums.Format.Format' of the image and+-- plane /must/ be compatible according to+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes the description of compatible planes>+-- for the plane being copied+--+-- - When a copy is performed to or from an image with a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,+-- the @aspectMask@ of the @srcSubresource@ and\/or @dstSubresource@+-- that refers to the multi-planar image /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+-- (with+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+-- valid only for a 'Graphics.Vulkan.Core10.Enums.Format.Format' with+-- three planes)+--+-- - The sample count of @srcImage@ and @dstImage@ /must/ match+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, then @srcImage@ /must/ not be a protected image+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, then @dstImage@ /must/ not be a protected image+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a protected+-- command buffer, then @dstImage@ /must/ not be an unprotected image+--+-- - The @srcSubresource.mipLevel@ member of each element of @pRegions@+-- /must/ be less than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was+-- created+--+-- - The @dstSubresource.mipLevel@ member of each element of @pRegions@+-- /must/ be less than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was+-- created+--+-- - The @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of+-- each element of @pRegions@ /must/ be less than or equal to the+-- @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was+-- created+--+-- - The @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of+-- each element of @pRegions@ /must/ be less than or equal to the+-- @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was+-- created+--+-- - The @srcOffset@ and @extent@ members of each element of @pRegions@+-- /must/ respect the image transfer granularity requirements of+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'’s command pool’s+-- queue family, as described in+-- 'Graphics.Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'+--+-- - The @dstOffset@ and @extent@ members of each element of @pRegions@+-- /must/ respect the image transfer granularity requirements of+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'’s command pool’s+-- queue family, as described in+-- 'Graphics.Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'+--+-- - @dstImage@ and @srcImage@ /must/ not have been created with+-- 'Graphics.Vulkan.Core10.BaseType.Flags' containing+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @srcImage@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Image'+-- handle+--+-- - @srcImageLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- - @dstImage@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Image'+-- handle+--+-- - @dstImageLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- - @pRegions@ /must/ be a valid pointer to an array of @regionCount@+-- valid 'ImageCopy' structures+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support transfer, graphics, or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - @regionCount@ /must/ be greater than @0@+--+-- - Each of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', @dstImage@,+-- and @srcImage@ /must/ have been created, allocated, or retrieved+-- from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Transfer | Transfer |+-- | Secondary | | Graphics | |+-- | | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Handles.Image', 'ImageCopy',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout'+cmdCopyImage :: CommandBuffer -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regions" ::: Vector ImageCopy) -> IO ()+cmdCopyImage commandBuffer srcImage srcImageLayout dstImage dstImageLayout regions = evalContT $ do+ let vkCmdCopyImage' = mkVkCmdCopyImage (pVkCmdCopyImage (deviceCmds (commandBuffer :: CommandBuffer)))+ pPRegions <- ContT $ allocaBytesAligned @ImageCopy ((Data.Vector.length (regions)) * 68) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRegions `plusPtr` (68 * (i)) :: Ptr ImageCopy) (e) . ($ ())) (regions)+ lift $ vkCmdCopyImage' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdBlitImage+ :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageBlit -> Filter -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageBlit -> Filter -> IO ()++-- | vkCmdBlitImage - Copy regions of an image, potentially performing format+-- conversion,+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @srcImage@ is the source image.+--+-- - @srcImageLayout@ is the layout of the source image subresources for+-- the blit.+--+-- - @dstImage@ is the destination image.+--+-- - @dstImageLayout@ is the layout of the destination image subresources+-- for the blit.+--+-- - @regionCount@ is the number of regions to blit.+--+-- - @pRegions@ is a pointer to an array of 'ImageBlit' structures+-- specifying the regions to blit.+--+-- - 'Graphics.Vulkan.Core10.Enums.Filter.Filter' is a+-- 'Graphics.Vulkan.Core10.Enums.Filter.Filter' specifying the filter+-- to apply if the blits require scaling.+--+-- = Description+--+-- 'cmdBlitImage' /must/ not be used for multisampled source or destination+-- images. Use 'cmdResolveImage' for this purpose.+--+-- As the sizes of the source and destination extents /can/ differ in any+-- dimension, texels in the source extent are scaled and filtered to the+-- destination extent. Scaling occurs via the following operations:+--+-- - For each destination texel, the integer coordinate of that texel is+-- converted to an unnormalized texture coordinate, using the effective+-- inverse of the equations described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-unnormalized-to-integer unnormalized to integer conversion>:+--+-- - ubase = i + ½+--+-- - vbase = j + ½+--+-- - wbase = k + ½+--+-- - These base coordinates are then offset by the first destination+-- offset:+--+-- - uoffset = ubase - xdst0+--+-- - voffset = vbase - ydst0+--+-- - woffset = wbase - zdst0+--+-- - aoffset = a - @baseArrayCount@dst+--+-- - The scale is determined from the source and destination regions, and+-- applied to the offset coordinates:+--+-- - scale_u = (xsrc1 - xsrc0) \/ (xdst1 - xdst0)+--+-- - scale_v = (ysrc1 - ysrc0) \/ (ydst1 - ydst0)+--+-- - scale_w = (zsrc1 - zsrc0) \/ (zdst1 - zdst0)+--+-- - uscaled = uoffset * scaleu+--+-- - vscaled = voffset * scalev+--+-- - wscaled = woffset * scalew+--+-- - Finally the source offset is added to the scaled coordinates, to+-- determine the final unnormalized coordinates used to sample from+-- @srcImage@:+--+-- - u = uscaled + xsrc0+--+-- - v = vscaled + ysrc0+--+-- - w = wscaled + zsrc0+--+-- - q = @mipLevel@+--+-- - a = aoffset + @baseArrayCount@src+--+-- These coordinates are used to sample from the source image, as described+-- in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures Image Operations chapter>,+-- with the filter mode equal to that of+-- 'Graphics.Vulkan.Core10.Enums.Filter.Filter', a mipmap mode of+-- 'Graphics.Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_NEAREST'+-- and an address mode of+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+-- Implementations /must/ clamp at the edge of the source image, and /may/+-- additionally clamp to the edge of the source region.+--+-- Note+--+-- Due to allowable rounding errors in the generation of the source texture+-- coordinates, it is not always possible to guarantee exactly which source+-- texels will be sampled for a given blit. As rounding errors are+-- implementation dependent, the exact results of a blitting operation are+-- also implementation dependent.+--+-- Blits are done layer by layer starting with the @baseArrayLayer@ member+-- of @srcSubresource@ for the source and @dstSubresource@ for the+-- destination. @layerCount@ layers are blitted to the destination image.+--+-- 3D textures are blitted slice by slice. Slices in the source region+-- bounded by @srcOffsets@[0].z and @srcOffsets@[1].z are copied to slices+-- in the destination region bounded by @dstOffsets@[0].z and+-- @dstOffsets@[1].z. For each destination slice, a source __z__ coordinate+-- is linearly interpolated between @srcOffsets@[0].z and+-- @srcOffsets@[1].z. If the 'Graphics.Vulkan.Core10.Enums.Filter.Filter'+-- parameter is 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' then+-- the value sampled from the source image is taken by doing linear+-- filtering using the interpolated __z__ coordinate. If+-- 'Graphics.Vulkan.Core10.Enums.Filter.Filter' parameter is+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_NEAREST' then the value+-- sampled from the source image is taken from the single nearest slice,+-- with an implementation-dependent arithmetic rounding mode.+--+-- The following filtering and conversion rules apply:+--+-- - Integer formats /can/ only be converted to other integer formats+-- with the same signedness.+--+-- - No format conversion is supported between depth\/stencil images. The+-- formats /must/ match.+--+-- - Format conversions on unorm, snorm, unscaled and packed float+-- formats of the copied aspect of the image are performed by first+-- converting the pixels to float values.+--+-- - For sRGB source formats, nonlinear RGB values are converted to+-- linear representation prior to filtering.+--+-- - After filtering, the float values are first clamped and then cast to+-- the destination image format. In case of sRGB destination format,+-- linear RGB values are converted to nonlinear representation before+-- writing the pixel to the image.+--+-- Signed and unsigned integers are converted by first clamping to the+-- representable range of the destination format, then casting the value.+--+-- == Valid Usage+--+-- - The source region specified by each element of @pRegions@ /must/ be+-- a region that is contained within @srcImage@+--+-- - The destination region specified by each element of @pRegions@+-- /must/ be a region that is contained within @dstImage@+--+-- - The union of all destination regions, specified by the elements of+-- @pRegions@, /must/ not overlap in memory with any texel that /may/+-- be sampled during the blit operation+--+-- - The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+-- of @srcImage@ /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_SRC_BIT'.+--+-- - @srcImage@ /must/ not use a format listed in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion>+--+-- - @srcImage@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'+-- usage flag+--+-- - If @srcImage@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - @srcImageLayout@ /must/ specify the layout of the image subresources+-- of @srcImage@ specified in @pRegions@ at the time this command is+-- executed on a 'Graphics.Vulkan.Core10.Handles.Device'+--+-- - @srcImageLayout@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'+-- or 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'+--+-- - The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+-- of @dstImage@ /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_DST_BIT'.+--+-- - @dstImage@ /must/ not use a format listed in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion>+--+-- - @dstImage@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+-- usage flag+--+-- - If @dstImage@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - @dstImageLayout@ /must/ specify the layout of the image subresources+-- of @dstImage@ specified in @pRegions@ at the time this command is+-- executed on a 'Graphics.Vulkan.Core10.Handles.Device'+--+-- - @dstImageLayout@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'+-- or 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'+--+-- - The sample count of @srcImage@ and @dstImage@ /must/ both be equal+-- to+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- - If either of @srcImage@ or @dstImage@ was created with a signed+-- integer 'Graphics.Vulkan.Core10.Enums.Format.Format', the other+-- /must/ also have been created with a signed integer+-- 'Graphics.Vulkan.Core10.Enums.Format.Format'+--+-- - If either of @srcImage@ or @dstImage@ was created with an unsigned+-- integer 'Graphics.Vulkan.Core10.Enums.Format.Format', the other+-- /must/ also have been created with an unsigned integer+-- 'Graphics.Vulkan.Core10.Enums.Format.Format'+--+-- - If either of @srcImage@ or @dstImage@ was created with a+-- depth\/stencil format, the other /must/ have exactly the same format+--+-- - If @srcImage@ was created with a depth\/stencil format,+-- 'Graphics.Vulkan.Core10.Enums.Filter.Filter' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_NEAREST'+--+-- - @srcImage@ /must/ have been created with a @samples@ value of+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- - @dstImage@ /must/ have been created with a @samples@ value of+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Filter.Filter' is+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR', then the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+-- of @srcImage@ /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'.+--+-- - If 'Graphics.Vulkan.Core10.Enums.Filter.Filter' is+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT',+-- then the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+-- of @srcImage@ /must/ contain+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'.+--+-- - If 'Graphics.Vulkan.Core10.Enums.Filter.Filter' is+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT',+-- @srcImage@ /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' of+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, then @srcImage@ /must/ not be a protected image+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, then @dstImage@ /must/ not be a protected image+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a protected+-- command buffer, then @dstImage@ /must/ not be an unprotected image+--+-- - The @srcSubresource.mipLevel@ member of each element of @pRegions@+-- /must/ be less than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was+-- created+--+-- - The @dstSubresource.mipLevel@ member of each element of @pRegions@+-- /must/ be less than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was+-- created+--+-- - The @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of+-- each element of @pRegions@ /must/ be less than or equal to the+-- @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was+-- created+--+-- - The @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of+-- each element of @pRegions@ /must/ be less than or equal to the+-- @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was+-- created+--+-- - @dstImage@ and @srcImage@ /must/ not have been created with+-- 'Graphics.Vulkan.Core10.BaseType.Flags' containing+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @srcImage@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Image'+-- handle+--+-- - @srcImageLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- - @dstImage@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Image'+-- handle+--+-- - @dstImageLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- - @pRegions@ /must/ be a valid pointer to an array of @regionCount@+-- valid 'ImageBlit' structures+--+-- - 'Graphics.Vulkan.Core10.Enums.Filter.Filter' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.Filter.Filter' value+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - @regionCount@ /must/ be greater than @0@+--+-- - Each of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', @dstImage@,+-- and @srcImage@ /must/ have been created, allocated, or retrieved+-- from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Graphics | Transfer |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Enums.Filter.Filter',+-- 'Graphics.Vulkan.Core10.Handles.Image', 'ImageBlit',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout'+cmdBlitImage :: CommandBuffer -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regions" ::: Vector ImageBlit) -> Filter -> IO ()+cmdBlitImage commandBuffer srcImage srcImageLayout dstImage dstImageLayout regions filter' = evalContT $ do+ let vkCmdBlitImage' = mkVkCmdBlitImage (pVkCmdBlitImage (deviceCmds (commandBuffer :: CommandBuffer)))+ pPRegions <- ContT $ allocaBytesAligned @ImageBlit ((Data.Vector.length (regions)) * 80) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRegions `plusPtr` (80 * (i)) :: Ptr ImageBlit) (e) . ($ ())) (regions)+ lift $ vkCmdBlitImage' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions) (filter')+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdCopyBufferToImage+ :: FunPtr (Ptr CommandBuffer_T -> Buffer -> Image -> ImageLayout -> Word32 -> Ptr BufferImageCopy -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> Image -> ImageLayout -> Word32 -> Ptr BufferImageCopy -> IO ()++-- | vkCmdCopyBufferToImage - Copy data from a buffer into an image+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @srcBuffer@ is the source buffer.+--+-- - @dstImage@ is the destination image.+--+-- - @dstImageLayout@ is the layout of the destination image subresources+-- for the copy.+--+-- - @regionCount@ is the number of regions to copy.+--+-- - @pRegions@ is a pointer to an array of 'BufferImageCopy' structures+-- specifying the regions to copy.+--+-- = Description+--+-- Each region in @pRegions@ is copied from the specified region of the+-- source buffer to the specified region of the destination image.+--+-- If the format of @dstImage@ is a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>),+-- regions of each plane to be a target of a copy /must/ be specified+-- separately using the @pRegions@ member of the 'BufferImageCopy'+-- structure. In this case, the @aspectMask@ of+-- 'Graphics.Vulkan.Core10.Image.ImageSubresource' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'.+-- For the purposes of 'cmdCopyBufferToImage', each plane of a multi-planar+-- image is treated as having the format listed in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes>+-- for the plane identified by the @aspectMask@ of the corresponding+-- subresource. This applies both to+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' and to coordinates used in+-- the copy, which correspond to texels in the /plane/ rather than how+-- these texels map to coordinates in the image as a whole.+--+-- == Valid Usage+--+-- - @srcBuffer@ /must/ be large enough to contain all buffer locations+-- that are accessed according to+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressing Buffer and Image Addressing>,+-- for each element of @pRegions@+--+-- - The image region specified by each element of @pRegions@ /must/ be a+-- region that is contained within @dstImage@ if the @dstImage@’s+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' is not a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,+-- and /must/ be a region that is contained within the plane being+-- copied to if the @dstImage@’s+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' is a multi-planar+-- format+--+-- - The union of all source regions, and the union of all destination+-- regions, specified by the elements of @pRegions@, /must/ not overlap+-- in memory+--+-- - @srcBuffer@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT'+-- usage flag+--+-- - The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+-- of @dstImage@ /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'.+--+-- - If @srcBuffer@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - @dstImage@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+-- usage flag+--+-- - If @dstImage@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - @dstImage@ /must/ have a sample count equal to+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- - @dstImageLayout@ /must/ specify the layout of the image subresources+-- of @dstImage@ specified in @pRegions@ at the time this command is+-- executed on a 'Graphics.Vulkan.Core10.Handles.Device'+--+-- - @dstImageLayout@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, then @srcBuffer@ /must/ not be a protected buffer+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, then @dstImage@ /must/ not be a protected image+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a protected+-- command buffer, then @dstImage@ /must/ not be an unprotected image+--+-- - The @imageSubresource.mipLevel@ member of each element of @pRegions@+-- /must/ be less than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was+-- created+--+-- - The @imageSubresource.baseArrayLayer@ ++-- @imageSubresource.layerCount@ of each element of @pRegions@ /must/+-- be less than or equal to the @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was+-- created+--+-- - The @imageOffset@ and @imageExtent@ members of each element of+-- @pRegions@ /must/ respect the image transfer granularity+-- requirements of 'Graphics.Vulkan.Core10.Handles.CommandBuffer'’s+-- command pool’s queue family, as described in+-- 'Graphics.Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'+--+-- - @dstImage@ /must/ not have been created with+-- 'Graphics.Vulkan.Core10.BaseType.Flags' containing+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @srcBuffer@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - @dstImage@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Image'+-- handle+--+-- - @dstImageLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- - @pRegions@ /must/ be a valid pointer to an array of @regionCount@+-- valid 'BufferImageCopy' structures+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support transfer, graphics, or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - @regionCount@ /must/ be greater than @0@+--+-- - Each of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', @dstImage@,+-- and @srcBuffer@ /must/ have been created, allocated, or retrieved+-- from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Transfer | Transfer |+-- | Secondary | | Graphics | |+-- | | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer', 'BufferImageCopy',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Handles.Image',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout'+cmdCopyBufferToImage :: CommandBuffer -> ("srcBuffer" ::: Buffer) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regions" ::: Vector BufferImageCopy) -> IO ()+cmdCopyBufferToImage commandBuffer srcBuffer dstImage dstImageLayout regions = evalContT $ do+ let vkCmdCopyBufferToImage' = mkVkCmdCopyBufferToImage (pVkCmdCopyBufferToImage (deviceCmds (commandBuffer :: CommandBuffer)))+ pPRegions <- ContT $ allocaBytesAligned @BufferImageCopy ((Data.Vector.length (regions)) * 56) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRegions `plusPtr` (56 * (i)) :: Ptr BufferImageCopy) (e) . ($ ())) (regions)+ lift $ vkCmdCopyBufferToImage' (commandBufferHandle (commandBuffer)) (srcBuffer) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdCopyImageToBuffer+ :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Buffer -> Word32 -> Ptr BufferImageCopy -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Buffer -> Word32 -> Ptr BufferImageCopy -> IO ()++-- | vkCmdCopyImageToBuffer - Copy image data into a buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @srcImage@ is the source image.+--+-- - @srcImageLayout@ is the layout of the source image subresources for+-- the copy.+--+-- - @dstBuffer@ is the destination buffer.+--+-- - @regionCount@ is the number of regions to copy.+--+-- - @pRegions@ is a pointer to an array of 'BufferImageCopy' structures+-- specifying the regions to copy.+--+-- = Description+--+-- Each region in @pRegions@ is copied from the specified region of the+-- source image to the specified region of the destination buffer.+--+-- If the 'Graphics.Vulkan.Core10.Enums.Format.Format' of @srcImage@ is a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>,+-- regions of each plane to be a source of a copy /must/ be specified+-- separately using the @pRegions@ member of the 'BufferImageCopy'+-- structure. In this case, the @aspectMask@ of+-- 'Graphics.Vulkan.Core10.Image.ImageSubresource' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'.+-- For the purposes of 'cmdCopyBufferToImage', each plane of a multi-planar+-- image is treated as having the format listed in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes>+-- for the plane identified by the @aspectMask@ of the corresponding+-- subresource. This applies both to+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' and to coordinates used in+-- the copy, which correspond to texels in the /plane/ rather than how+-- these texels map to coordinates in the image as a whole.+--+-- == Valid Usage+--+-- - The image region specified by each element of @pRegions@ /must/ be a+-- region that is contained within @srcImage@ if the @srcImage@’s+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' is not a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,+-- and /must/ be a region that is contained within the plane being+-- copied if the @srcImage@’s+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' is a multi-planar+-- format+--+-- - @dstBuffer@ /must/ be large enough to contain all buffer locations+-- that are accessed according to+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressing Buffer and Image Addressing>,+-- for each element of @pRegions@+--+-- - The union of all source regions, and the union of all destination+-- regions, specified by the elements of @pRegions@, /must/ not overlap+-- in memory+--+-- - The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+-- of @srcImage@ /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT'.+--+-- - @srcImage@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'+-- usage flag+--+-- - If @srcImage@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - @srcImage@ /must/ have a sample count equal to+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- - @srcImageLayout@ /must/ specify the layout of the image subresources+-- of @srcImage@ specified in @pRegions@ at the time this command is+-- executed on a 'Graphics.Vulkan.Core10.Handles.Device'+--+-- - @srcImageLayout@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'+-- or 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'+--+-- - @dstBuffer@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'+-- usage flag+--+-- - If @dstBuffer@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, then @srcImage@ /must/ not be a protected image+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, then @dstBuffer@ /must/ not be a protected buffer+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a protected+-- command buffer, then @dstBuffer@ /must/ not be an unprotected buffer+--+-- - The @imageSubresource.mipLevel@ member of each element of @pRegions@+-- /must/ be less than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was+-- created+--+-- - The @imageSubresource.baseArrayLayer@ ++-- @imageSubresource.layerCount@ of each element of @pRegions@ /must/+-- be less than or equal to the @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was+-- created+--+-- - The @imageOffset@ and @imageExtent@ members of each element of+-- @pRegions@ /must/ respect the image transfer granularity+-- requirements of 'Graphics.Vulkan.Core10.Handles.CommandBuffer'’s+-- command pool’s queue family, as described in+-- 'Graphics.Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'+--+-- - @srcImage@ /must/ not have been created with+-- 'Graphics.Vulkan.Core10.BaseType.Flags' containing+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @srcImage@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Image'+-- handle+--+-- - @srcImageLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- - @dstBuffer@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - @pRegions@ /must/ be a valid pointer to an array of @regionCount@+-- valid 'BufferImageCopy' structures+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support transfer, graphics, or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - @regionCount@ /must/ be greater than @0@+--+-- - Each of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', @dstBuffer@,+-- and @srcImage@ /must/ have been created, allocated, or retrieved+-- from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Transfer | Transfer |+-- | Secondary | | Graphics | |+-- | | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer', 'BufferImageCopy',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Handles.Image',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout'+cmdCopyImageToBuffer :: CommandBuffer -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstBuffer" ::: Buffer) -> ("regions" ::: Vector BufferImageCopy) -> IO ()+cmdCopyImageToBuffer commandBuffer srcImage srcImageLayout dstBuffer regions = evalContT $ do+ let vkCmdCopyImageToBuffer' = mkVkCmdCopyImageToBuffer (pVkCmdCopyImageToBuffer (deviceCmds (commandBuffer :: CommandBuffer)))+ pPRegions <- ContT $ allocaBytesAligned @BufferImageCopy ((Data.Vector.length (regions)) * 56) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRegions `plusPtr` (56 * (i)) :: Ptr BufferImageCopy) (e) . ($ ())) (regions)+ lift $ vkCmdCopyImageToBuffer' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstBuffer) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdUpdateBuffer+ :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> Ptr () -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> Ptr () -> IO ()++-- | vkCmdUpdateBuffer - Update a buffer’s contents from host memory+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @dstBuffer@ is a handle to the buffer to be updated.+--+-- - @dstOffset@ is the byte offset into the buffer to start updating,+-- and /must/ be a multiple of 4.+--+-- - @dataSize@ is the number of bytes to update, and /must/ be a+-- multiple of 4.+--+-- - @pData@ is a pointer to the source data for the buffer update, and+-- /must/ be at least @dataSize@ bytes in size.+--+-- = Description+--+-- @dataSize@ /must/ be less than or equal to 65536 bytes. For larger+-- updates, applications /can/ use buffer to buffer+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers copies>.+--+-- Note+--+-- Buffer updates performed with 'cmdUpdateBuffer' first copy the data into+-- command buffer memory when the command is recorded (which requires+-- additional storage and may incur an additional allocation), and then+-- copy the data from the command buffer into @dstBuffer@ when the command+-- is executed on a device.+--+-- The additional cost of this functionality compared to+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers buffer to buffer copies>+-- means it is only recommended for very small amounts of data, and is why+-- it is limited to only 65536 bytes.+--+-- Applications /can/ work around this by issuing multiple+-- 'cmdUpdateBuffer' commands to different ranges of the same buffer, but+-- it is strongly recommended that they /should/ not.+--+-- The source data is copied from the user pointer to the command buffer+-- when the command is called.+--+-- 'cmdUpdateBuffer' is only allowed outside of a render pass. This command+-- is treated as “transfer” operation, for the purposes of synchronization+-- barriers. The+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'+-- /must/ be specified in @usage@ of+-- 'Graphics.Vulkan.Core10.Buffer.BufferCreateInfo' in order for the buffer+-- to be compatible with 'cmdUpdateBuffer'.+--+-- == Valid Usage+--+-- - @dstOffset@ /must/ be less than the size of @dstBuffer@+--+-- - @dataSize@ /must/ be less than or equal to the size of @dstBuffer@+-- minus @dstOffset@+--+-- - @dstBuffer@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'+-- usage flag+--+-- - If @dstBuffer@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - @dstOffset@ /must/ be a multiple of @4@+--+-- - @dataSize@ /must/ be less than or equal to @65536@+--+-- - @dataSize@ /must/ be a multiple of @4@+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, then @dstBuffer@ /must/ not be a protected buffer+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a protected+-- command buffer, then @dstBuffer@ /must/ not be an unprotected buffer+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @dstBuffer@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - @pData@ /must/ be a valid pointer to an array of @dataSize@ bytes+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support transfer, graphics, or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - @dataSize@ /must/ be greater than @0@+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and+-- @dstBuffer@ /must/ have been created, allocated, or retrieved from+-- the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Transfer | Transfer |+-- | Secondary | | Graphics | |+-- | | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+cmdUpdateBuffer :: CommandBuffer -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("dataSize" ::: DeviceSize) -> ("data" ::: Ptr ()) -> IO ()+cmdUpdateBuffer commandBuffer dstBuffer dstOffset dataSize data' = do+ let vkCmdUpdateBuffer' = mkVkCmdUpdateBuffer (pVkCmdUpdateBuffer (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdUpdateBuffer' (commandBufferHandle (commandBuffer)) (dstBuffer) (dstOffset) (dataSize) (data')+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdFillBuffer+ :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> IO ()++-- | vkCmdFillBuffer - Fill a region of a buffer with a fixed value+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @dstBuffer@ is the buffer to be filled.+--+-- - @dstOffset@ is the byte offset into the buffer at which to start+-- filling, and /must/ be a multiple of 4.+--+-- - @size@ is the number of bytes to fill, and /must/ be either a+-- multiple of 4, or 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE'+-- to fill the range from @offset@ to the end of the buffer. If+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE' is used and the+-- remaining size of the buffer is not a multiple of 4, then the+-- nearest smaller multiple is used.+--+-- - @data@ is the 4-byte word written repeatedly to the buffer to fill+-- @size@ bytes of data. The data word is written to memory according+-- to the host endianness.+--+-- = Description+--+-- 'cmdFillBuffer' is treated as “transfer” operation for the purposes of+-- synchronization barriers. The+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'+-- /must/ be specified in @usage@ of+-- 'Graphics.Vulkan.Core10.Buffer.BufferCreateInfo' in order for the buffer+-- to be compatible with 'cmdFillBuffer'.+--+-- == Valid Usage+--+-- - @dstOffset@ /must/ be less than the size of @dstBuffer@+--+-- - @dstOffset@ /must/ be a multiple of @4@+--+-- - If @size@ is not equal to+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be+-- greater than @0@+--+-- - If @size@ is not equal to+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be+-- less than or equal to the size of @dstBuffer@ minus @dstOffset@+--+-- - If @size@ is not equal to+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be a+-- multiple of @4@+--+-- - @dstBuffer@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'+-- usage flag+--+-- - If @dstBuffer@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, then @dstBuffer@ /must/ not be a protected buffer+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a protected+-- command buffer, then @dstBuffer@ /must/ not be an unprotected buffer+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @dstBuffer@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support transfer, graphics or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and+-- @dstBuffer@ /must/ have been created, allocated, or retrieved from+-- the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Transfer | Transfer |+-- | Secondary | | Graphics | |+-- | | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+cmdFillBuffer :: CommandBuffer -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> DeviceSize -> ("data" ::: Word32) -> IO ()+cmdFillBuffer commandBuffer dstBuffer dstOffset size data' = do+ let vkCmdFillBuffer' = mkVkCmdFillBuffer (pVkCmdFillBuffer (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdFillBuffer' (commandBufferHandle (commandBuffer)) (dstBuffer) (dstOffset) (size) (data')+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdClearColorImage+ :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Ptr ClearColorValue -> Word32 -> Ptr ImageSubresourceRange -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Ptr ClearColorValue -> Word32 -> Ptr ImageSubresourceRange -> IO ()++-- | vkCmdClearColorImage - Clear regions of a color image+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' is the image to be cleared.+--+-- - 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' specifies the+-- current layout of the image subresource ranges to be cleared, and+-- /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'.+--+-- - @pColor@ is a pointer to a+-- 'Graphics.Vulkan.Core10.SharedTypes.ClearColorValue' structure+-- containing the values that the image subresource ranges will be+-- cleared to (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears-values>+-- below).+--+-- - @rangeCount@ is the number of image subresource range structures in+-- @pRanges@.+--+-- - @pRanges@ is a pointer to an array of+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange'+-- structures describing a range of mipmap levels, array layers, and+-- aspects to be cleared, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views Image Views>.+--+-- = Description+--+-- Each specified range in @pRanges@ is cleared to the value specified by+-- @pColor@.+--+-- == Valid Usage+--+-- - The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+-- of 'Graphics.Vulkan.Core10.Handles.Image' /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'.+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+-- usage flag+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ not use a format+-- listed in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion>+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' is non-sparse then it+-- /must/ be bound completely and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/+-- specify the layout of the image subresource ranges of+-- 'Graphics.Vulkan.Core10.Handles.Image' specified in @pRanges@ at the+-- time this command is executed on a+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- - 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'+--+-- - The+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange'::@aspectMask@+-- members of the elements of the @pRanges@ array /must/ each only+-- include+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'+--+-- - The+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange'::@baseMipLevel@+-- members of the elements of the @pRanges@ array /must/ each be less+-- than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- - For each 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange'+-- element of @pRanges@, if the @levelCount@ member is not+-- 'Graphics.Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS', then+-- @baseMipLevel@ + @levelCount@ /must/ be less than the @mipLevels@+-- specified in 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- - The+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange'::@baseArrayLayer@+-- members of the elements of the @pRanges@ array /must/ each be less+-- than the @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- - For each 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange'+-- element of @pRanges@, if the @layerCount@ member is not+-- 'Graphics.Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', then+-- @baseArrayLayer@ + @layerCount@ /must/ be less than the+-- @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ not have a compressed+-- or depth\/stencil format+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, then 'Graphics.Vulkan.Core10.Handles.Image' /must/+-- not be a protected image+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a protected+-- command buffer, then 'Graphics.Vulkan.Core10.Handles.Image' /must/+-- not be an unprotected image+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Image' handle+--+-- - 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ be a+-- valid 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- - @pColor@ /must/ be a valid pointer to a valid+-- 'Graphics.Vulkan.Core10.SharedTypes.ClearColorValue' union+--+-- - @pRanges@ /must/ be a valid pointer to an array of @rangeCount@+-- valid 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange'+-- structures+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - @rangeCount@ /must/ be greater than @0@+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and+-- 'Graphics.Vulkan.Core10.Handles.Image' /must/ have been created,+-- allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Graphics | Transfer |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.SharedTypes.ClearColorValue',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Handles.Image',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout',+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange'+cmdClearColorImage :: CommandBuffer -> Image -> ImageLayout -> ClearColorValue -> ("ranges" ::: Vector ImageSubresourceRange) -> IO ()+cmdClearColorImage commandBuffer image imageLayout color ranges = evalContT $ do+ let vkCmdClearColorImage' = mkVkCmdClearColorImage (pVkCmdClearColorImage (deviceCmds (commandBuffer :: CommandBuffer)))+ pColor <- ContT $ withCStruct (color)+ pPRanges <- ContT $ allocaBytesAligned @ImageSubresourceRange ((Data.Vector.length (ranges)) * 20) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRanges `plusPtr` (20 * (i)) :: Ptr ImageSubresourceRange) (e) . ($ ())) (ranges)+ lift $ vkCmdClearColorImage' (commandBufferHandle (commandBuffer)) (image) (imageLayout) pColor ((fromIntegral (Data.Vector.length $ (ranges)) :: Word32)) (pPRanges)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdClearDepthStencilImage+ :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Ptr ClearDepthStencilValue -> Word32 -> Ptr ImageSubresourceRange -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Ptr ClearDepthStencilValue -> Word32 -> Ptr ImageSubresourceRange -> IO ()++-- | vkCmdClearDepthStencilImage - Fill regions of a combined depth\/stencil+-- image+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' is the image to be cleared.+--+-- - 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' specifies the+-- current layout of the image subresource ranges to be cleared, and+-- /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'.+--+-- - @pDepthStencil@ is a pointer to a+-- 'Graphics.Vulkan.Core10.SharedTypes.ClearDepthStencilValue'+-- structure containing the values that the depth and stencil image+-- subresource ranges will be cleared to (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears-values>+-- below).+--+-- - @rangeCount@ is the number of image subresource range structures in+-- @pRanges@.+--+-- - @pRanges@ is a pointer to an array of+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange'+-- structures describing a range of mipmap levels, array layers, and+-- aspects to be cleared, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views Image Views>.+--+-- == Valid Usage+--+-- - The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+-- of 'Graphics.Vulkan.Core10.Handles.Image' /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'.+--+-- - If any element of @pRanges.aspect@ includes+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',+-- and 'Graphics.Vulkan.Core10.Handles.Image' was created with+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+-- /must/ have been included in the+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'::@stencilUsage@+-- used to create 'Graphics.Vulkan.Core10.Handles.Image'+--+-- - If any element of @pRanges.aspect@ includes+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',+-- and 'Graphics.Vulkan.Core10.Handles.Image' was not created with+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageStencilUsageCreateInfo separate stencil usage>,+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+-- /must/ have been included in the+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@usage@ used to+-- create 'Graphics.Vulkan.Core10.Handles.Image'+--+-- - If any element of @pRanges.aspect@ includes+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+-- /must/ have been included in the+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@usage@ used to+-- create 'Graphics.Vulkan.Core10.Handles.Image'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' is non-sparse then it+-- /must/ be bound completely and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/+-- specify the layout of the image subresource ranges of+-- 'Graphics.Vulkan.Core10.Handles.Image' specified in @pRanges@ at the+-- time this command is executed on a+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- - 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ be+-- either of+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'+-- or 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'+--+-- - The+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange'::@aspectMask@+-- member of each element of the @pRanges@ array /must/ not include+-- bits other than+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Image'’s format does not have+-- a stencil component, then the+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange'::@aspectMask@+-- member of each element of the @pRanges@ array /must/ not include the+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+-- bit+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Image'’s format does not have+-- a depth component, then the+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange'::@aspectMask@+-- member of each element of the @pRanges@ array /must/ not include the+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'+-- bit+--+-- - The+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange'::@baseMipLevel@+-- members of the elements of the @pRanges@ array /must/ each be less+-- than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- - For each 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange'+-- element of @pRanges@, if the @levelCount@ member is not+-- 'Graphics.Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS', then+-- @baseMipLevel@ + @levelCount@ /must/ be less than the @mipLevels@+-- specified in 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- - The+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange'::@baseArrayLayer@+-- members of the elements of the @pRanges@ array /must/ each be less+-- than the @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- - For each 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange'+-- element of @pRanges@, if the @layerCount@ member is not+-- 'Graphics.Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', then+-- @baseArrayLayer@ + @layerCount@ /must/ be less than the+-- @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ have a depth\/stencil+-- format+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, then 'Graphics.Vulkan.Core10.Handles.Image' /must/+-- not be a protected image+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a protected+-- command buffer, then 'Graphics.Vulkan.Core10.Handles.Image' /must/+-- not be an unprotected image+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Image' handle+--+-- - 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ be a+-- valid 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- - @pDepthStencil@ /must/ be a valid pointer to a valid+-- 'Graphics.Vulkan.Core10.SharedTypes.ClearDepthStencilValue'+-- structure+--+-- - @pRanges@ /must/ be a valid pointer to an array of @rangeCount@+-- valid 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange'+-- structures+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - @rangeCount@ /must/ be greater than @0@+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and+-- 'Graphics.Vulkan.Core10.Handles.Image' /must/ have been created,+-- allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Graphics | Transfer |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.SharedTypes.ClearDepthStencilValue',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Handles.Image',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout',+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange'+cmdClearDepthStencilImage :: CommandBuffer -> Image -> ImageLayout -> ClearDepthStencilValue -> ("ranges" ::: Vector ImageSubresourceRange) -> IO ()+cmdClearDepthStencilImage commandBuffer image imageLayout depthStencil ranges = evalContT $ do+ let vkCmdClearDepthStencilImage' = mkVkCmdClearDepthStencilImage (pVkCmdClearDepthStencilImage (deviceCmds (commandBuffer :: CommandBuffer)))+ pDepthStencil <- ContT $ withCStruct (depthStencil)+ pPRanges <- ContT $ allocaBytesAligned @ImageSubresourceRange ((Data.Vector.length (ranges)) * 20) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRanges `plusPtr` (20 * (i)) :: Ptr ImageSubresourceRange) (e) . ($ ())) (ranges)+ lift $ vkCmdClearDepthStencilImage' (commandBufferHandle (commandBuffer)) (image) (imageLayout) pDepthStencil ((fromIntegral (Data.Vector.length $ (ranges)) :: Word32)) (pPRanges)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdClearAttachments+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr ClearAttachment -> Word32 -> Ptr ClearRect -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr ClearAttachment -> Word32 -> Ptr ClearRect -> IO ()++-- | vkCmdClearAttachments - Clear regions within bound framebuffer+-- attachments+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @attachmentCount@ is the number of entries in the @pAttachments@+-- array.+--+-- - @pAttachments@ is a pointer to an array of 'ClearAttachment'+-- structures defining the attachments to clear and the clear values to+-- use. If any attachment to be cleared in the current subpass is+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', then the+-- clear has no effect on that attachment.+--+-- - @rectCount@ is the number of entries in the @pRects@ array.+--+-- - @pRects@ is a pointer to an array of 'ClearRect' structures defining+-- regions within each selected attachment to clear.+--+-- = Description+--+-- 'cmdClearAttachments' /can/ clear multiple regions of each attachment+-- used in the current subpass of a render pass instance. This command+-- /must/ be called only inside a render pass instance, and implicitly+-- selects the images to clear based on the current framebuffer attachments+-- and the command parameters.+--+-- If the render pass has a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>,+-- clears follow the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops operations of fragment density maps>+-- as if each clear region was a primitive which generates fragments. The+-- clear color is applied to all pixels inside each fragment’s area+-- regardless if the pixels lie outside of the clear region. Clears /may/+-- have a different set of supported fragment areas than draws.+--+-- Unlike other+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears clear commands>,+-- 'cmdClearAttachments' executes as a drawing command, rather than a+-- transfer command, with writes performed by it executing in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primrast-order rasterization order>.+-- Clears to color attachments are executed as color attachment writes, by+-- the+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'+-- stage. Clears to depth\/stencil attachments are executed as+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth depth writes>+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil writes>+-- by the+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT'+-- and+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'+-- stages.+--+-- == Valid Usage+--+-- - If the @aspectMask@ member of any element of @pAttachments@ contains+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',+-- then the @colorAttachment@ member of that element /must/ either+-- refer to a color attachment which is+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', or /must/+-- be a valid color attachment.+--+-- - If the @aspectMask@ member of any element of @pAttachments@ contains+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',+-- then the current subpass\' depth\/stencil attachment /must/ either+-- be 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', or+-- /must/ have a depth component+--+-- - If the @aspectMask@ member of any element of @pAttachments@ contains+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',+-- then the current subpass\' depth\/stencil attachment /must/ either+-- be 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', or+-- /must/ have a stencil component+--+-- - The @rect@ member of each element of @pRects@ /must/ have an+-- @extent.width@ greater than @0@+--+-- - The @rect@ member of each element of @pRects@ /must/ have an+-- @extent.height@ greater than @0@+--+-- - The rectangular region specified by each element of @pRects@ /must/+-- be contained within the render area of the current render pass+-- instance+--+-- - The layers specified by each element of @pRects@ /must/ be contained+-- within every attachment that @pAttachments@ refers to+--+-- - The @layerCount@ member of each element of @pRects@ /must/ not be+-- @0@+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, then each attachment to be cleared /must/ not be a+-- protected image.+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a protected+-- command buffer, then each attachment to be cleared /must/ not be an+-- unprotected image.+--+-- - If the render pass instance this is recorded in uses multiview, then+-- @baseArrayLayer@ /must/ be zero and @layerCount@ /must/ be one.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pAttachments@ /must/ be a valid pointer to an array of+-- @attachmentCount@ valid 'ClearAttachment' structures+--+-- - @pRects@ /must/ be a valid pointer to an array of @rectCount@+-- 'ClearRect' structures+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- - @attachmentCount@ /must/ be greater than @0@+--+-- - @rectCount@ /must/ be greater than @0@+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'ClearAttachment', 'ClearRect',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdClearAttachments :: CommandBuffer -> ("attachments" ::: Vector ClearAttachment) -> ("rects" ::: Vector ClearRect) -> IO ()+cmdClearAttachments commandBuffer attachments rects = evalContT $ do+ let vkCmdClearAttachments' = mkVkCmdClearAttachments (pVkCmdClearAttachments (deviceCmds (commandBuffer :: CommandBuffer)))+ pPAttachments <- ContT $ allocaBytesAligned @ClearAttachment ((Data.Vector.length (attachments)) * 24) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAttachments `plusPtr` (24 * (i)) :: Ptr ClearAttachment) (e) . ($ ())) (attachments)+ pPRects <- ContT $ allocaBytesAligned @ClearRect ((Data.Vector.length (rects)) * 24) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRects `plusPtr` (24 * (i)) :: Ptr ClearRect) (e) . ($ ())) (rects)+ lift $ vkCmdClearAttachments' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (attachments)) :: Word32)) (pPAttachments) ((fromIntegral (Data.Vector.length $ (rects)) :: Word32)) (pPRects)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdResolveImage+ :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageResolve -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageResolve -> IO ()++-- | vkCmdResolveImage - Resolve regions of an image+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @srcImage@ is the source image.+--+-- - @srcImageLayout@ is the layout of the source image subresources for+-- the resolve.+--+-- - @dstImage@ is the destination image.+--+-- - @dstImageLayout@ is the layout of the destination image subresources+-- for the resolve.+--+-- - @regionCount@ is the number of regions to resolve.+--+-- - @pRegions@ is a pointer to an array of 'ImageResolve' structures+-- specifying the regions to resolve.+--+-- = Description+--+-- During the resolve the samples corresponding to each pixel location in+-- the source are converted to a single sample before being written to the+-- destination. If the source formats are floating-point or normalized+-- types, the sample values for each pixel are resolved in an+-- implementation-dependent manner. If the source formats are integer+-- types, a single sample’s value is selected for each pixel.+--+-- @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets+-- in texels of the sub-regions of the source and destination image data.+-- @extent@ is the size in texels of the source image to resolve in+-- @width@, @height@ and @depth@.+--+-- Resolves are done layer by layer starting with @baseArrayLayer@ member+-- of @srcSubresource@ for the source and @dstSubresource@ for the+-- destination. @layerCount@ layers are resolved to the destination image.+--+-- == Valid Usage+--+-- - The source region specified by each element of @pRegions@ /must/ be+-- a region that is contained within @srcImage@+--+-- - The destination region specified by each element of @pRegions@+-- /must/ be a region that is contained within @dstImage@+--+-- - The union of all source regions, and the union of all destination+-- regions, specified by the elements of @pRegions@, /must/ not overlap+-- in memory+--+-- - If @srcImage@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - @srcImage@ /must/ have a sample count equal to any valid sample+-- count value other than+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- - If @dstImage@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - @dstImage@ /must/ have a sample count equal to+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- - @srcImageLayout@ /must/ specify the layout of the image subresources+-- of @srcImage@ specified in @pRegions@ at the time this command is+-- executed on a 'Graphics.Vulkan.Core10.Handles.Device'+--+-- - @srcImageLayout@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'+-- or 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'+--+-- - @dstImageLayout@ /must/ specify the layout of the image subresources+-- of @dstImage@ specified in @pRegions@ at the time this command is+-- executed on a 'Graphics.Vulkan.Core10.Handles.Device'+--+-- - @dstImageLayout@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'+-- or 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'+--+-- - The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+-- of @dstImage@ /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'.+--+-- - @srcImage@ and @dstImage@ /must/ have been created with the same+-- image format+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, then @srcImage@ /must/ not be a protected image+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, then @dstImage@ /must/ not be a protected image+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a protected+-- command buffer, then @dstImage@ /must/ not be an unprotected image+--+-- - The @srcSubresource.mipLevel@ member of each element of @pRegions@+-- /must/ be less than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was+-- created+--+-- - The @dstSubresource.mipLevel@ member of each element of @pRegions@+-- /must/ be less than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was+-- created+--+-- - The @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of+-- each element of @pRegions@ /must/ be less than or equal to the+-- @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was+-- created+--+-- - The @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of+-- each element of @pRegions@ /must/ be less than or equal to the+-- @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was+-- created+--+-- - @dstImage@ and @srcImage@ /must/ not have been created with+-- 'Graphics.Vulkan.Core10.BaseType.Flags' containing+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @srcImage@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Image'+-- handle+--+-- - @srcImageLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- - @dstImage@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Image'+-- handle+--+-- - @dstImageLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- - @pRegions@ /must/ be a valid pointer to an array of @regionCount@+-- valid 'ImageResolve' structures+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - @regionCount@ /must/ be greater than @0@+--+-- - Each of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', @dstImage@,+-- and @srcImage@ /must/ have been created, allocated, or retrieved+-- from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Graphics | Transfer |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Handles.Image',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout', 'ImageResolve'+cmdResolveImage :: CommandBuffer -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regions" ::: Vector ImageResolve) -> IO ()+cmdResolveImage commandBuffer srcImage srcImageLayout dstImage dstImageLayout regions = evalContT $ do+ let vkCmdResolveImage' = mkVkCmdResolveImage (pVkCmdResolveImage (deviceCmds (commandBuffer :: CommandBuffer)))+ pPRegions <- ContT $ allocaBytesAligned @ImageResolve ((Data.Vector.length (regions)) * 68) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRegions `plusPtr` (68 * (i)) :: Ptr ImageResolve) (e) . ($ ())) (regions)+ lift $ vkCmdResolveImage' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetEvent+ :: FunPtr (Ptr CommandBuffer_T -> Event -> PipelineStageFlags -> IO ()) -> Ptr CommandBuffer_T -> Event -> PipelineStageFlags -> IO ()++-- | vkCmdSetEvent - Set an event object to signaled state+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded.+--+-- - 'Graphics.Vulkan.Core10.Handles.Event' is the event that will be+-- signaled.+--+-- - @stageMask@ specifies the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>+-- used to determine when the 'Graphics.Vulkan.Core10.Handles.Event' is+-- signaled.+--+-- = Description+--+-- When 'cmdSetEvent' is submitted to a queue, it defines an execution+-- dependency on commands that were submitted before it, and defines an+-- event signal operation which sets the event to the signaled state.+--+-- The first+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>+-- includes all commands that occur earlier in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.+-- The synchronization scope is limited to operations on the pipeline+-- stages determined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>+-- specified by @stageMask@.+--+-- The second+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>+-- includes only the event signal operation.+--+-- If 'Graphics.Vulkan.Core10.Handles.Event' is already in the signaled+-- state when 'cmdSetEvent' is executed on the device, then 'cmdSetEvent'+-- has no effect, no event signal operation occurs, and no execution+-- dependency is generated.+--+-- == Valid Usage+--+-- - @stageMask@ /must/ not include+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>+-- feature is not enabled, @stageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+-- feature is not enabled, @stageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer'’s current device mask+-- /must/ include exactly one physical device.+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>+-- feature is not enabled, @stageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>+-- feature is not enabled, @stageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.Event' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Event' handle+--+-- - @stageMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+-- values+--+-- - @stageMask@ /must/ not be @0@+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and+-- 'Graphics.Vulkan.Core10.Handles.Event' /must/ have been created,+-- allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Handles.Event',+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags'+cmdSetEvent :: CommandBuffer -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()+cmdSetEvent commandBuffer event stageMask = do+ let vkCmdSetEvent' = mkVkCmdSetEvent (pVkCmdSetEvent (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdSetEvent' (commandBufferHandle (commandBuffer)) (event) (stageMask)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdResetEvent+ :: FunPtr (Ptr CommandBuffer_T -> Event -> PipelineStageFlags -> IO ()) -> Ptr CommandBuffer_T -> Event -> PipelineStageFlags -> IO ()++-- | vkCmdResetEvent - Reset an event object to non-signaled state+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded.+--+-- - 'Graphics.Vulkan.Core10.Handles.Event' is the event that will be+-- unsignaled.+--+-- - @stageMask@ is a bitmask of+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+-- specifying the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>+-- used to determine when the 'Graphics.Vulkan.Core10.Handles.Event' is+-- unsignaled.+--+-- = Description+--+-- When 'cmdResetEvent' is submitted to a queue, it defines an execution+-- dependency on commands that were submitted before it, and defines an+-- event unsignal operation which resets the event to the unsignaled state.+--+-- The first+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>+-- includes all commands that occur earlier in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.+-- The synchronization scope is limited to operations on the pipeline+-- stages determined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>+-- specified by @stageMask@.+--+-- The second+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>+-- includes only the event unsignal operation.+--+-- If 'Graphics.Vulkan.Core10.Handles.Event' is already in the unsignaled+-- state when 'cmdResetEvent' is executed on the device, then+-- 'cmdResetEvent' has no effect, no event unsignal operation occurs, and+-- no execution dependency is generated.+--+-- == Valid Usage+--+-- - @stageMask@ /must/ not include+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>+-- feature is not enabled, @stageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+-- feature is not enabled, @stageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'+--+-- - When this command executes, 'Graphics.Vulkan.Core10.Handles.Event'+-- /must/ not be waited on by a 'cmdWaitEvents' command that is+-- currently executing+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer'’s current device mask+-- /must/ include exactly one physical device.+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>+-- feature is not enabled, @stageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>+-- feature is not enabled, @stageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.Event' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Event' handle+--+-- - @stageMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+-- values+--+-- - @stageMask@ /must/ not be @0@+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and+-- 'Graphics.Vulkan.Core10.Handles.Event' /must/ have been created,+-- allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Handles.Event',+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags'+cmdResetEvent :: CommandBuffer -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()+cmdResetEvent commandBuffer event stageMask = do+ let vkCmdResetEvent' = mkVkCmdResetEvent (pVkCmdResetEvent (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdResetEvent' (commandBufferHandle (commandBuffer)) (event) (stageMask)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdWaitEvents+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (ImageMemoryBarrier a) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (ImageMemoryBarrier a) -> IO ()++-- | vkCmdWaitEvents - Wait for one or more events and insert a set of memory+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded.+--+-- - @eventCount@ is the length of the @pEvents@ array.+--+-- - @pEvents@ is a pointer to an array of event object handles to wait+-- on.+--+-- - @srcStageMask@ is a bitmask of+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+-- specifying the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>.+--+-- - @dstStageMask@ is a bitmask of+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+-- specifying the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages destination stage mask>.+--+-- - @memoryBarrierCount@ is the length of the @pMemoryBarriers@ array.+--+-- - @pMemoryBarriers@ is a pointer to an array of+-- 'Graphics.Vulkan.Core10.OtherTypes.MemoryBarrier' structures.+--+-- - @bufferMemoryBarrierCount@ is the length of the+-- @pBufferMemoryBarriers@ array.+--+-- - @pBufferMemoryBarriers@ is a pointer to an array of+-- 'Graphics.Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures.+--+-- - @imageMemoryBarrierCount@ is the length of the+-- @pImageMemoryBarriers@ array.+--+-- - @pImageMemoryBarriers@ is a pointer to an array of+-- 'Graphics.Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures.+--+-- = Description+--+-- When 'cmdWaitEvents' is submitted to a queue, it defines a memory+-- dependency between prior event signal operations on the same queue or+-- the host, and subsequent commands. 'cmdWaitEvents' /must/ not be used to+-- wait on event signal operations occurring on other queues.+--+-- The first synchronization scope only includes event signal operations+-- that operate on members of @pEvents@, and the operations that+-- happened-before the event signal operations. Event signal operations+-- performed by 'cmdSetEvent' that occur earlier in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>+-- are included in the first synchronization scope, if the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically latest>+-- pipeline stage in their @stageMask@ parameter is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically earlier>+-- than or equal to the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically latest>+-- pipeline stage in @srcStageMask@. Event signal operations performed by+-- 'Graphics.Vulkan.Core10.Event.setEvent' are only included in the first+-- synchronization scope if+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'+-- is included in @srcStageMask@.+--+-- The second+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>+-- includes all commands that occur later in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.+-- The second synchronization scope is limited to operations on the+-- pipeline stages determined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>+-- specified by @dstStageMask@.+--+-- The first+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>+-- is limited to access in the pipeline stages determined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>+-- specified by @srcStageMask@. Within that, the first access scope only+-- includes the first access scopes defined by elements of the+-- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@+-- arrays, which each define a set of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriers memory barriers>.+-- If no memory barriers are specified, then the first access scope+-- includes no accesses.+--+-- The second+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>+-- is limited to access in the pipeline stages determined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>+-- specified by @dstStageMask@. Within that, the second access scope only+-- includes the second access scopes defined by elements of the+-- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@+-- arrays, which each define a set of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriers memory barriers>.+-- If no memory barriers are specified, then the second access scope+-- includes no accesses.+--+-- Note+--+-- 'cmdWaitEvents' is used with 'cmdSetEvent' to define a memory dependency+-- between two sets of action commands, roughly in the same way as pipeline+-- barriers, but split into two commands such that work between the two+-- /may/ execute unhindered.+--+-- Unlike 'cmdPipelineBarrier', a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>+-- /cannot/ be performed using 'cmdWaitEvents'.+--+-- Note+--+-- Applications /should/ be careful to avoid race conditions when using+-- events. There is no direct ordering guarantee between a 'cmdResetEvent'+-- command and a 'cmdWaitEvents' command submitted after it, so some other+-- execution dependency /must/ be included between these commands (e.g. a+-- semaphore).+--+-- == Valid Usage+--+-- - @srcStageMask@ /must/ be the bitwise OR of the @stageMask@ parameter+-- used in previous calls to 'cmdSetEvent' with any of the members of+-- @pEvents@ and+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'+-- if any of the members of @pEvents@ was set using+-- 'Graphics.Vulkan.Core10.Event.setEvent'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>+-- feature is not enabled, @srcStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>+-- feature is not enabled, @dstStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+-- feature is not enabled, @srcStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+-- feature is not enabled, @dstStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'+--+-- - If @pEvents@ includes one or more events that will be signaled by+-- 'Graphics.Vulkan.Core10.Event.setEvent' after+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' has been submitted to+-- a queue, then 'cmdWaitEvents' /must/ not be called inside a render+-- pass instance+--+-- - Any pipeline stage included in @srcStageMask@ or @dstStageMask@+-- /must/ be supported by the capabilities of the queue family+-- specified by the @queueFamilyIndex@ member of the+-- 'Graphics.Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure+-- that was used to create the+-- 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from,+-- as specified in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>.+--+-- - Each element of @pMemoryBarriers@, @pBufferMemoryBarriers@ or+-- @pImageMemoryBarriers@ /must/ not have any access flag included in+-- its @srcAccessMask@ member if that bit is not supported by any of+-- the pipeline stages in @srcStageMask@, as specified in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>.+--+-- - Each element of @pMemoryBarriers@, @pBufferMemoryBarriers@ or+-- @pImageMemoryBarriers@ /must/ not have any access flag included in+-- its @dstAccessMask@ member if that bit is not supported by any of+-- the pipeline stages in @dstStageMask@, as specified in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>.+--+-- - The @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members of any+-- element of @pBufferMemoryBarriers@ or @pImageMemoryBarriers@ /must/+-- be equal.+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer'’s current device mask+-- /must/ include exactly one physical device.+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>+-- feature is not enabled, @srcStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>+-- feature is not enabled, @srcStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>+-- feature is not enabled, @dstStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>+-- feature is not enabled, @dstStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'+--+-- - The @srcAccessMask@ member of each element of @pMemoryBarriers@+-- /must/ only include access flags that are supported by one or more+-- of the pipeline stages in @srcStageMask@, as specified in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- - The @dstAccessMask@ member of each element of @pMemoryBarriers@+-- /must/ only include access flags that are supported by one or more+-- of the pipeline stages in @dstStageMask@, as specified in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- - The @srcAccessMask@ member of each element of+-- @pBufferMemoryBarriers@ /must/ only include access flags that are+-- supported by one or more of the pipeline stages in @srcStageMask@,+-- as specified in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- - The @dstAccessMask@ member of each element of+-- @pBufferMemoryBarriers@ /must/ only include access flags that are+-- supported by one or more of the pipeline stages in @dstStageMask@,+-- as specified in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- - The @srcAccessMask@ member of each element of @pImageMemoryBarriers@+-- /must/ only include access flags that are supported by one or more+-- of the pipeline stages in @srcStageMask@, as specified in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- - The @dstAccessMask@ member of any element of @pImageMemoryBarriers@+-- /must/ only include access flags that are supported by one or more+-- of the pipeline stages in @dstStageMask@, as specified in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pEvents@ /must/ be a valid pointer to an array of @eventCount@+-- valid 'Graphics.Vulkan.Core10.Handles.Event' handles+--+-- - @srcStageMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+-- values+--+-- - @srcStageMask@ /must/ not be @0@+--+-- - @dstStageMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+-- values+--+-- - @dstStageMask@ /must/ not be @0@+--+-- - If @memoryBarrierCount@ is not @0@, @pMemoryBarriers@ /must/ be a+-- valid pointer to an array of @memoryBarrierCount@ valid+-- 'Graphics.Vulkan.Core10.OtherTypes.MemoryBarrier' structures+--+-- - If @bufferMemoryBarrierCount@ is not @0@, @pBufferMemoryBarriers@+-- /must/ be a valid pointer to an array of @bufferMemoryBarrierCount@+-- valid 'Graphics.Vulkan.Core10.OtherTypes.BufferMemoryBarrier'+-- structures+--+-- - If @imageMemoryBarrierCount@ is not @0@, @pImageMemoryBarriers@+-- /must/ be a valid pointer to an array of @imageMemoryBarrierCount@+-- valid 'Graphics.Vulkan.Core10.OtherTypes.ImageMemoryBarrier'+-- structures+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations+--+-- - @eventCount@ /must/ be greater than @0@+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and the+-- elements of @pEvents@ /must/ have been created, allocated, or+-- retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.OtherTypes.BufferMemoryBarrier',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Handles.Event',+-- 'Graphics.Vulkan.Core10.OtherTypes.ImageMemoryBarrier',+-- 'Graphics.Vulkan.Core10.OtherTypes.MemoryBarrier',+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags'+cmdWaitEvents :: PokeChain a => CommandBuffer -> ("events" ::: Vector Event) -> ("srcStageMask" ::: PipelineStageFlags) -> ("dstStageMask" ::: PipelineStageFlags) -> ("memoryBarriers" ::: Vector MemoryBarrier) -> ("bufferMemoryBarriers" ::: Vector BufferMemoryBarrier) -> ("imageMemoryBarriers" ::: Vector (ImageMemoryBarrier a)) -> IO ()+cmdWaitEvents commandBuffer events srcStageMask dstStageMask memoryBarriers bufferMemoryBarriers imageMemoryBarriers = evalContT $ do+ let vkCmdWaitEvents' = mkVkCmdWaitEvents (pVkCmdWaitEvents (deviceCmds (commandBuffer :: CommandBuffer)))+ pPEvents <- ContT $ allocaBytesAligned @Event ((Data.Vector.length (events)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPEvents `plusPtr` (8 * (i)) :: Ptr Event) (e)) (events)+ pPMemoryBarriers <- ContT $ allocaBytesAligned @MemoryBarrier ((Data.Vector.length (memoryBarriers)) * 24) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPMemoryBarriers `plusPtr` (24 * (i)) :: Ptr MemoryBarrier) (e) . ($ ())) (memoryBarriers)+ pPBufferMemoryBarriers <- ContT $ allocaBytesAligned @BufferMemoryBarrier ((Data.Vector.length (bufferMemoryBarriers)) * 56) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBufferMemoryBarriers `plusPtr` (56 * (i)) :: Ptr BufferMemoryBarrier) (e) . ($ ())) (bufferMemoryBarriers)+ pPImageMemoryBarriers <- ContT $ allocaBytesAligned @(ImageMemoryBarrier _) ((Data.Vector.length (imageMemoryBarriers)) * 72) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPImageMemoryBarriers `plusPtr` (72 * (i)) :: Ptr (ImageMemoryBarrier _)) (e) . ($ ())) (imageMemoryBarriers)+ lift $ vkCmdWaitEvents' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (events)) :: Word32)) (pPEvents) (srcStageMask) (dstStageMask) ((fromIntegral (Data.Vector.length $ (memoryBarriers)) :: Word32)) (pPMemoryBarriers) ((fromIntegral (Data.Vector.length $ (bufferMemoryBarriers)) :: Word32)) (pPBufferMemoryBarriers) ((fromIntegral (Data.Vector.length $ (imageMemoryBarriers)) :: Word32)) (pPImageMemoryBarriers)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdPipelineBarrier+ :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlags -> PipelineStageFlags -> DependencyFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (ImageMemoryBarrier a) -> IO ()) -> Ptr CommandBuffer_T -> PipelineStageFlags -> PipelineStageFlags -> DependencyFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (ImageMemoryBarrier a) -> IO ()++-- | vkCmdPipelineBarrier - Insert a memory dependency+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded.+--+-- - @srcStageMask@ is a bitmask of+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+-- specifying the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>.+--+-- - @dstStageMask@ is a bitmask of+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+-- specifying the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>.+--+-- - 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags' is+-- a bitmask of+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits'+-- specifying how execution and memory dependencies are formed.+--+-- - @memoryBarrierCount@ is the length of the @pMemoryBarriers@ array.+--+-- - @pMemoryBarriers@ is a pointer to an array of+-- 'Graphics.Vulkan.Core10.OtherTypes.MemoryBarrier' structures.+--+-- - @bufferMemoryBarrierCount@ is the length of the+-- @pBufferMemoryBarriers@ array.+--+-- - @pBufferMemoryBarriers@ is a pointer to an array of+-- 'Graphics.Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures.+--+-- - @imageMemoryBarrierCount@ is the length of the+-- @pImageMemoryBarriers@ array.+--+-- - @pImageMemoryBarriers@ is a pointer to an array of+-- 'Graphics.Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures.+--+-- = Description+--+-- When 'cmdPipelineBarrier' is submitted to a queue, it defines a memory+-- dependency between commands that were submitted before it, and those+-- submitted after it.+--+-- If 'cmdPipelineBarrier' was recorded outside a render pass instance, the+-- first+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>+-- includes all commands that occur earlier in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.+-- If 'cmdPipelineBarrier' was recorded inside a render pass instance, the+-- first synchronization scope includes only commands that occur earlier in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>+-- within the same subpass. In either case, the first synchronization scope+-- is limited to operations on the pipeline stages determined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>+-- specified by @srcStageMask@.+--+-- If 'cmdPipelineBarrier' was recorded outside a render pass instance, the+-- second+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>+-- includes all commands that occur later in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.+-- If 'cmdPipelineBarrier' was recorded inside a render pass instance, the+-- second synchronization scope includes only commands that occur later in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>+-- within the same subpass. In either case, the second synchronization+-- scope is limited to operations on the pipeline stages determined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>+-- specified by @dstStageMask@.+--+-- The first+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>+-- is limited to access in the pipeline stages determined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>+-- specified by @srcStageMask@. Within that, the first access scope only+-- includes the first access scopes defined by elements of the+-- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@+-- arrays, which each define a set of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriers memory barriers>.+-- If no memory barriers are specified, then the first access scope+-- includes no accesses.+--+-- The second+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>+-- is limited to access in the pipeline stages determined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>+-- specified by @dstStageMask@. Within that, the second access scope only+-- includes the second access scopes defined by elements of the+-- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@+-- arrays, which each define a set of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriers memory barriers>.+-- If no memory barriers are specified, then the second access scope+-- includes no accesses.+--+-- If 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags'+-- includes+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT',+-- then any dependency between+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space>+-- pipeline stages is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-local>+-- - otherwise it is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-global>.+--+-- == Valid Usage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>+-- feature is not enabled, @srcStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>+-- feature is not enabled, @dstStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+-- feature is not enabled, @srcStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+-- feature is not enabled, @dstStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'+--+-- - If 'cmdPipelineBarrier' is called within a render pass instance, the+-- render pass /must/ have been created with at least one+-- 'Graphics.Vulkan.Core10.Pass.SubpassDependency' instance in+-- 'Graphics.Vulkan.Core10.Pass.RenderPassCreateInfo'::@pDependencies@+-- that expresses a dependency from the current subpass to itself, and+-- for which @srcStageMask@ contains a subset of the bit values in+-- 'Graphics.Vulkan.Core10.Pass.SubpassDependency'::@srcStageMask@,+-- @dstStageMask@ contains a subset of the bit values in+-- 'Graphics.Vulkan.Core10.Pass.SubpassDependency'::@dstStageMask@,+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags' is+-- equal to+-- 'Graphics.Vulkan.Core10.Pass.SubpassDependency'::'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags',+-- @srcAccessMask@ member of each element of @pMemoryBarriers@ and+-- @pImageMemoryBarriers@ contains a subset of the bit values in+-- 'Graphics.Vulkan.Core10.Pass.SubpassDependency'::@srcAccessMask@,+-- and @dstAccessMask@ member of each element of @pMemoryBarriers@ and+-- @pImageMemoryBarriers@ contains a subset of the bit values in+-- 'Graphics.Vulkan.Core10.Pass.SubpassDependency'::@dstAccessMask@+--+-- - If 'cmdPipelineBarrier' is called within a render pass instance,+-- @bufferMemoryBarrierCount@ /must/ be @0@+--+-- - If 'cmdPipelineBarrier' is called within a render pass instance, the+-- 'Graphics.Vulkan.Core10.Handles.Image' member of any element of+-- @pImageMemoryBarriers@ /must/ be equal to one of the elements of+-- @pAttachments@ that the current+-- 'Graphics.Vulkan.Core10.Handles.Framebuffer' was created with, that+-- is also referred to by one of the elements of the+-- @pColorAttachments@, @pResolveAttachments@ or+-- @pDepthStencilAttachment@ members of the+-- 'Graphics.Vulkan.Core10.Pass.SubpassDescription' instance or by the+-- @pDepthStencilResolveAttachment@ member of the+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve'+-- structure that the current subpass was created with+--+-- - If 'cmdPipelineBarrier' is called within a render pass instance, the+-- @oldLayout@ and @newLayout@ members of any element of+-- @pImageMemoryBarriers@ /must/ be equal to the @layout@ member of an+-- element of the @pColorAttachments@, @pResolveAttachments@ or+-- @pDepthStencilAttachment@ members of the+-- 'Graphics.Vulkan.Core10.Pass.SubpassDescription' instance or by the+-- @pDepthStencilResolveAttachment@ member of the+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve'+-- structure that the current subpass was created with, that refers to+-- the same 'Graphics.Vulkan.Core10.Handles.Image'+--+-- - If 'cmdPipelineBarrier' is called within a render pass instance, the+-- @oldLayout@ and @newLayout@ members of an element of+-- @pImageMemoryBarriers@ /must/ be equal+--+-- - If 'cmdPipelineBarrier' is called within a render pass instance, the+-- @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members of any+-- element of @pImageMemoryBarriers@ /must/ be+-- 'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'+--+-- - Any pipeline stage included in @srcStageMask@ or @dstStageMask@+-- /must/ be supported by the capabilities of the queue family+-- specified by the @queueFamilyIndex@ member of the+-- 'Graphics.Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure+-- that was used to create the+-- 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from,+-- as specified in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>+--+-- - If 'cmdPipelineBarrier' is called outside of a render pass instance,+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags'+-- /must/ not include+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>+-- feature is not enabled, @srcStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>+-- feature is not enabled, @srcStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>+-- feature is not enabled, @dstStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>+-- feature is not enabled, @dstStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'+--+-- - The @srcAccessMask@ member of each element of @pMemoryBarriers@+-- /must/ only include access flags that are supported by one or more+-- of the pipeline stages in @srcStageMask@, as specified in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- - The @dstAccessMask@ member of each element of @pMemoryBarriers@+-- /must/ only include access flags that are supported by one or more+-- of the pipeline stages in @dstStageMask@, as specified in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- - For any element of @pBufferMemoryBarriers@, if its+-- @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members are equal,+-- or if its @srcQueueFamilyIndex@ is the queue family index that was+-- used to create the command pool that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from,+-- then its @srcAccessMask@ member /must/ only contain access flags+-- that are supported by one or more of the pipeline stages in+-- @srcStageMask@, as specified in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- - For any element of @pBufferMemoryBarriers@, if its+-- @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members are equal,+-- or if its @dstQueueFamilyIndex@ is the queue family index that was+-- used to create the command pool that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from,+-- then its @dstAccessMask@ member /must/ only contain access flags+-- that are supported by one or more of the pipeline stages in+-- @dstStageMask@, as specified in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- - For any element of @pImageMemoryBarriers@, if its+-- @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members are equal,+-- or if its @srcQueueFamilyIndex@ is the queue family index that was+-- used to create the command pool that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from,+-- then its @srcAccessMask@ member /must/ only contain access flags+-- that are supported by one or more of the pipeline stages in+-- @srcStageMask@, as specified in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- - For any element of @pImageMemoryBarriers@, if its+-- @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members are equal,+-- or if its @dstQueueFamilyIndex@ is the queue family index that was+-- used to create the command pool that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from,+-- then its @dstAccessMask@ member /must/ only contain access flags+-- that are supported by one or more of the pipeline stages in+-- @dstStageMask@, as specified in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @srcStageMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+-- values+--+-- - @srcStageMask@ /must/ not be @0@+--+-- - @dstStageMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+-- values+--+-- - @dstStageMask@ /must/ not be @0@+--+-- - 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags'+-- /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits'+-- values+--+-- - If @memoryBarrierCount@ is not @0@, @pMemoryBarriers@ /must/ be a+-- valid pointer to an array of @memoryBarrierCount@ valid+-- 'Graphics.Vulkan.Core10.OtherTypes.MemoryBarrier' structures+--+-- - If @bufferMemoryBarrierCount@ is not @0@, @pBufferMemoryBarriers@+-- /must/ be a valid pointer to an array of @bufferMemoryBarrierCount@+-- valid 'Graphics.Vulkan.Core10.OtherTypes.BufferMemoryBarrier'+-- structures+--+-- - If @imageMemoryBarrierCount@ is not @0@, @pImageMemoryBarriers@+-- /must/ be a valid pointer to an array of @imageMemoryBarrierCount@+-- valid 'Graphics.Vulkan.Core10.OtherTypes.ImageMemoryBarrier'+-- structures+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support transfer, graphics, or compute operations+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Transfer | |+-- | Secondary | | Graphics | |+-- | | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.OtherTypes.BufferMemoryBarrier',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags',+-- 'Graphics.Vulkan.Core10.OtherTypes.ImageMemoryBarrier',+-- 'Graphics.Vulkan.Core10.OtherTypes.MemoryBarrier',+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags'+cmdPipelineBarrier :: PokeChain a => CommandBuffer -> ("srcStageMask" ::: PipelineStageFlags) -> ("dstStageMask" ::: PipelineStageFlags) -> DependencyFlags -> ("memoryBarriers" ::: Vector MemoryBarrier) -> ("bufferMemoryBarriers" ::: Vector BufferMemoryBarrier) -> ("imageMemoryBarriers" ::: Vector (ImageMemoryBarrier a)) -> IO ()+cmdPipelineBarrier commandBuffer srcStageMask dstStageMask dependencyFlags memoryBarriers bufferMemoryBarriers imageMemoryBarriers = evalContT $ do+ let vkCmdPipelineBarrier' = mkVkCmdPipelineBarrier (pVkCmdPipelineBarrier (deviceCmds (commandBuffer :: CommandBuffer)))+ pPMemoryBarriers <- ContT $ allocaBytesAligned @MemoryBarrier ((Data.Vector.length (memoryBarriers)) * 24) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPMemoryBarriers `plusPtr` (24 * (i)) :: Ptr MemoryBarrier) (e) . ($ ())) (memoryBarriers)+ pPBufferMemoryBarriers <- ContT $ allocaBytesAligned @BufferMemoryBarrier ((Data.Vector.length (bufferMemoryBarriers)) * 56) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBufferMemoryBarriers `plusPtr` (56 * (i)) :: Ptr BufferMemoryBarrier) (e) . ($ ())) (bufferMemoryBarriers)+ pPImageMemoryBarriers <- ContT $ allocaBytesAligned @(ImageMemoryBarrier _) ((Data.Vector.length (imageMemoryBarriers)) * 72) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPImageMemoryBarriers `plusPtr` (72 * (i)) :: Ptr (ImageMemoryBarrier _)) (e) . ($ ())) (imageMemoryBarriers)+ lift $ vkCmdPipelineBarrier' (commandBufferHandle (commandBuffer)) (srcStageMask) (dstStageMask) (dependencyFlags) ((fromIntegral (Data.Vector.length $ (memoryBarriers)) :: Word32)) (pPMemoryBarriers) ((fromIntegral (Data.Vector.length $ (bufferMemoryBarriers)) :: Word32)) (pPBufferMemoryBarriers) ((fromIntegral (Data.Vector.length $ (imageMemoryBarriers)) :: Word32)) (pPImageMemoryBarriers)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdBeginQuery+ :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> QueryControlFlags -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> QueryControlFlags -> IO ()++-- | vkCmdBeginQuery - Begin a query+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which this command will be recorded.+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' is the query pool that+-- will manage the results of the query.+--+-- - @query@ is the query index within the query pool that will contain+-- the results.+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+-- 'Graphics.Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlagBits'+-- specifying constraints on the types of queries that /can/ be+-- performed.+--+-- = Description+--+-- If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' of the pool is+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION' and+-- 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT',+-- an implementation /must/ return a result that matches the actual number+-- of samples passed. This is described in more detail in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-occlusion Occlusion Queries>.+--+-- Calling 'cmdBeginQuery' is equivalent to calling+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginQueryIndexedEXT'+-- with the @index@ parameter set to zero.+--+-- After beginning a query, that query is considered /active/ within the+-- command buffer it was called in until that same query is ended. Queries+-- active in a primary command buffer when secondary command buffers are+-- executed are considered active for those secondary command buffers.+--+-- == Valid Usage+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ have been created+-- with a 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' that+-- differs from that of any queries that are+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>+-- within 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+--+-- - All queries used by the command /must/ be unavailable+--+-- - The 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-occlusionQueryPrecise precise occlusion queries>+-- feature is not enabled, or the+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to create+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' was not+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION',+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT'+--+-- - @query@ /must/ be less than the number of queries in+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION', the+-- 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS'+-- and any of the @pipelineStatistics@ indicate graphics operations,+-- the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS'+-- and any of the @pipelineStatistics@ indicate compute operations, the+-- 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support compute operations+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ not be a+-- protected command buffer+--+-- - If called within a render pass instance, the sum of @query@ and the+-- number of bits set in the current subpass’s view mask /must/ be less+-- than or equal to the number of queries in+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'+-- the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'+-- then+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT'::@transformFeedbackQueries@+-- /must/ be supported+--+-- - If 'Graphics.Vulkan.Core10.Handles.QueryPool' was created with a+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' of+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',+-- the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#profiling-lock profiling lock>+-- /must/ have been held before+-- 'Graphics.Vulkan.Core10.CommandBuffer.beginCommandBuffer' was called+-- on 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+--+-- - If 'Graphics.Vulkan.Core10.Handles.QueryPool' was created with a+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' of+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR'+-- and one of the counters used to create+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR',+-- the query begin /must/ be the first recorded command in+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+--+-- - If 'Graphics.Vulkan.Core10.Handles.QueryPool' was created with a+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' of+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR'+-- and one of the counters used to create+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR',+-- the begin command /must/ not be recorded within a render pass+-- instance+--+-- - If 'Graphics.Vulkan.Core10.Handles.QueryPool' was created with a+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' of+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR'+-- and another query pool with a+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType'+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR'+-- has been used within 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- its parent primary command buffer or secondary command buffer+-- recorded within the same parent primary command buffer as+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-features-performanceCounterMultipleQueryPools performanceCounterMultipleQueryPools>+-- feature /must/ be enabled+--+-- - If 'Graphics.Vulkan.Core10.Handles.QueryPool' was created with a+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' of+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',+-- this command /must/ not be recorded in a command buffer that, either+-- directly or through secondary command buffers, also contains a+-- 'cmdResetQueryPool' command affecting the same query.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' handle+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlagBits'+-- values+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ have been created,+-- allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlags',+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+cmdBeginQuery :: CommandBuffer -> QueryPool -> ("query" ::: Word32) -> QueryControlFlags -> IO ()+cmdBeginQuery commandBuffer queryPool query flags = do+ let vkCmdBeginQuery' = mkVkCmdBeginQuery (pVkCmdBeginQuery (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdBeginQuery' (commandBufferHandle (commandBuffer)) (queryPool) (query) (flags)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdEndQuery+ :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> IO ()++-- | vkCmdEndQuery - Ends a query+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which this command will be recorded.+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' is the query pool that is+-- managing the results of the query.+--+-- - @query@ is the query index within the query pool where the result is+-- stored.+--+-- = Description+--+-- Calling 'cmdEndQuery' is equivalent to calling+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndQueryIndexedEXT'+-- with the @index@ parameter set to zero.+--+-- As queries operate asynchronously, ending a query does not immediately+-- set the query’s status to available. A query is considered /finished/+-- when the final results of the query are ready to be retrieved by+-- 'Graphics.Vulkan.Core10.Query.getQueryPoolResults' and+-- 'cmdCopyQueryPoolResults', and this is when the query’s status is set to+-- available.+--+-- Once a query is ended the query /must/ finish in finite time, unless the+-- state of the query is changed using other commands, e.g. by issuing a+-- reset of the query.+--+-- == Valid Usage+--+-- - All queries used by the command /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>+--+-- - @query@ /must/ be less than the number of queries in+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ not be a+-- protected command buffer+--+-- - If 'cmdEndQuery' is called within a render pass instance, the sum of+-- @query@ and the number of bits set in the current subpass’s view+-- mask /must/ be less than or equal to the number of queries in+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+--+-- - If 'Graphics.Vulkan.Core10.Handles.QueryPool' was created with a+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' of+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR'+-- and one or more of the counters used to create+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR',+-- the 'cmdEndQuery' /must/ be the last recorded command in+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+--+-- - If 'Graphics.Vulkan.Core10.Handles.QueryPool' was created with a+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' of+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR'+-- and one or more of the counters used to create+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR',+-- the 'cmdEndQuery' /must/ not be recorded within a render pass+-- instance+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ have been created,+-- allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+cmdEndQuery :: CommandBuffer -> QueryPool -> ("query" ::: Word32) -> IO ()+cmdEndQuery commandBuffer queryPool query = do+ let vkCmdEndQuery' = mkVkCmdEndQuery (pVkCmdEndQuery (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdEndQuery' (commandBufferHandle (commandBuffer)) (queryPool) (query)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdResetQueryPool+ :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> IO ()++-- | vkCmdResetQueryPool - Reset queries in a query pool+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which this command will be recorded.+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' is the handle of the+-- query pool managing the queries being reset.+--+-- - @firstQuery@ is the initial query index to reset.+--+-- - @queryCount@ is the number of queries to reset.+--+-- = Description+--+-- When executed on a queue, this command sets the status of query indices+-- [@firstQuery@, @firstQuery@ + @queryCount@ - 1] to unavailable.+--+-- If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to create+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',+-- this command sets the status of query indices [@firstQuery@,+-- @firstQuery@ + @queryCount@ - 1] to unavailable for each pass of+-- 'Graphics.Vulkan.Core10.Handles.QueryPool', as indicated by a call to+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'.+--+-- Note+--+-- Because 'cmdResetQueryPool' resets all the passes of the indicated+-- queries, applications must not record a 'cmdResetQueryPool' command for+-- a 'Graphics.Vulkan.Core10.Handles.QueryPool' created with+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR'+-- in a command buffer that needs to be submitted multiple times as+-- indicated by a call to+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'.+-- Otherwise applications will never be able to complete the recorded+-- queries.+--+-- == Valid Usage+--+-- - @firstQuery@ /must/ be less than the number of queries in+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+--+-- - The sum of @firstQuery@ and @queryCount@ /must/ be less than or+-- equal to the number of queries in+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+--+-- - All queries used by the command /must/ not be active+--+-- - If 'Graphics.Vulkan.Core10.Handles.QueryPool' was created with+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',+-- this command /must/ not be recorded in a command buffer that, either+-- directly or through secondary command buffers, also contains begin+-- commands for a query from the set of queries [@firstQuery@,+-- @firstQuery@ + @queryCount@ - 1]+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ have been created,+-- allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+cmdResetQueryPool :: CommandBuffer -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ()+cmdResetQueryPool commandBuffer queryPool firstQuery queryCount = do+ let vkCmdResetQueryPool' = mkVkCmdResetQueryPool (pVkCmdResetQueryPool (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdResetQueryPool' (commandBufferHandle (commandBuffer)) (queryPool) (firstQuery) (queryCount)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdWriteTimestamp+ :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlagBits -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> PipelineStageFlagBits -> QueryPool -> Word32 -> IO ()++-- | vkCmdWriteTimestamp - Write a device timestamp into a query object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @pipelineStage@ is one of the+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits',+-- specifying a stage of the pipeline.+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' is the query pool that+-- will manage the timestamp.+--+-- - @query@ is the query within the query pool that will contain the+-- timestamp.+--+-- = Description+--+-- 'cmdWriteTimestamp' latches the value of the timer when all previous+-- commands have completed executing as far as the specified pipeline+-- stage, and writes the timestamp value to memory. When the timestamp+-- value is written, the availability status of the query is set to+-- available.+--+-- Note+--+-- If an implementation is unable to detect completion and latch the timer+-- at any specific stage of the pipeline, it /may/ instead do so at any+-- logically later stage.+--+-- 'cmdCopyQueryPoolResults' /can/ then be called to copy the timestamp+-- value from the query pool into buffer memory, with ordering and+-- synchronization behavior equivalent to how other queries operate.+-- Timestamp values /can/ also be retrieved from the query pool using+-- 'Graphics.Vulkan.Core10.Query.getQueryPoolResults'. As with other+-- queries, the query /must/ be reset using 'cmdResetQueryPool' or+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.resetQueryPool'+-- before requesting the timestamp value be written to it.+--+-- While 'cmdWriteTimestamp' /can/ be called inside or outside of a render+-- pass instance, 'cmdCopyQueryPoolResults' /must/ only be called outside+-- of a render pass instance.+--+-- Timestamps /may/ only be meaningfully compared if they are written by+-- commands submitted to the same queue.+--+-- Note+--+-- An example of such a comparison is determining the execution time of a+-- sequence of commands.+--+-- If 'cmdWriteTimestamp' is called while executing a render pass instance+-- that has multiview enabled, the timestamp uses N consecutive query+-- indices in the query pool (starting at @query@) where N is the number of+-- bits set in the view mask of the subpass the command is executed in. The+-- resulting query values are determined by an implementation-dependent+-- choice of one of the following behaviors:+--+-- - The first query is a timestamp value and (if more than one bit is+-- set in the view mask) zero is written to the remaining queries. If+-- two timestamps are written in the same subpass, the sum of the+-- execution time of all views between those commands is the difference+-- between the first query written by each command.+--+-- - All N queries are timestamp values. If two timestamps are written in+-- the same subpass, the sum of the execution time of all views between+-- those commands is the sum of the difference between corresponding+-- queries written by each command. The difference between+-- corresponding queries /may/ be the execution time of a single view.+--+-- In either case, the application /can/ sum the differences between all N+-- queries to determine the total execution time.+--+-- == Valid Usage+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ have been created+-- with a 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' of+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP'+--+-- - The query identified by 'Graphics.Vulkan.Core10.Handles.QueryPool'+-- and @query@ /must/ be /unavailable/+--+-- - The command pool’s queue family /must/ support a non-zero+-- @timestampValidBits@+--+-- - All queries used by the command /must/ be unavailable+--+-- - If 'cmdWriteTimestamp' is called within a render pass instance, the+-- sum of @query@ and the number of bits set in the current subpass’s+-- view mask /must/ be less than or equal to the number of queries in+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pipelineStage@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+-- value+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support transfer, graphics, or compute operations+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ have been created,+-- allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Transfer | Transfer |+-- | Secondary | | Graphics | |+-- | | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits',+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+cmdWriteTimestamp :: CommandBuffer -> PipelineStageFlagBits -> QueryPool -> ("query" ::: Word32) -> IO ()+cmdWriteTimestamp commandBuffer pipelineStage queryPool query = do+ let vkCmdWriteTimestamp' = mkVkCmdWriteTimestamp (pVkCmdWriteTimestamp (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdWriteTimestamp' (commandBufferHandle (commandBuffer)) (pipelineStage) (queryPool) (query)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdCopyQueryPoolResults+ :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> Buffer -> DeviceSize -> DeviceSize -> QueryResultFlags -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> Buffer -> DeviceSize -> DeviceSize -> QueryResultFlags -> IO ()++-- | vkCmdCopyQueryPoolResults - Copy the results of queries in a query pool+-- to a buffer object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which this command will be recorded.+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' is the query pool+-- managing the queries containing the desired results.+--+-- - @firstQuery@ is the initial query index.+--+-- - @queryCount@ is the number of queries. @firstQuery@ and @queryCount@+-- together define a range of queries.+--+-- - @dstBuffer@ is a 'Graphics.Vulkan.Core10.Handles.Buffer' object that+-- will receive the results of the copy command.+--+-- - @dstOffset@ is an offset into @dstBuffer@.+--+-- - @stride@ is the stride in bytes between results for individual+-- queries within @dstBuffer@. The required size of the backing memory+-- for @dstBuffer@ is determined as described above for+-- 'Graphics.Vulkan.Core10.Query.getQueryPoolResults'.+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QueryResultFlagBits'+-- specifying how and when results are returned.+--+-- = Description+--+-- 'cmdCopyQueryPoolResults' is guaranteed to see the effect of previous+-- uses of 'cmdResetQueryPool' in the same queue, without any additional+-- synchronization. Thus, the results will always reflect the most recent+-- use of the query.+--+-- 'Graphics.Vulkan.Core10.BaseType.Flags' has the same possible values+-- described above for the 'Graphics.Vulkan.Core10.BaseType.Flags'+-- parameter of 'Graphics.Vulkan.Core10.Query.getQueryPoolResults', but the+-- different style of execution causes some subtle behavioral differences.+-- Because 'cmdCopyQueryPoolResults' executes in order with respect to+-- other query commands, there is less ambiguity about which use of a query+-- is being requested.+--+-- Results for all requested occlusion queries, pipeline statistics+-- queries, transform feedback queries, and timestamp queries are written+-- as 64-bit unsigned integer values if+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT'+-- is set or 32-bit unsigned integer values otherwise. Performance queries+-- store results in a tightly packed array whose type is determined by the+-- @unit@ member of the corresponding+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterKHR'.+--+-- If neither of+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT'+-- and+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT'+-- are set, results are only written out for queries in the available+-- state.+--+-- If+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT'+-- is set, the implementation will wait for each query’s status to be in+-- the available state before retrieving the numerical results for that+-- query. This is guaranteed to reflect the most recent use of the query on+-- the same queue, assuming that the query is not being simultaneously used+-- by other queues. If the query does not become available in a finite+-- amount of time (e.g. due to not issuing a query since the last reset), a+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' error /may/+-- occur.+--+-- Similarly, if+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT'+-- is set and+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT'+-- is not set, the availability is guaranteed to reflect the most recent+-- use of the query on the same queue, assuming that the query is not being+-- simultaneously used by other queues. As with+-- 'Graphics.Vulkan.Core10.Query.getQueryPoolResults', implementations+-- /must/ guarantee that if they return a non-zero availability value, then+-- the numerical results are valid.+--+-- If+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'+-- is set,+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT'+-- is not set, and the query’s status is unavailable, an intermediate+-- result value between zero and the final result value is written for that+-- query.+--+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'+-- /must/ not be used if the pool’s+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' is+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP'.+--+-- 'cmdCopyQueryPoolResults' is considered to be a transfer operation, and+-- its writes to buffer memory /must/ be synchronized using+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT'+-- and+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_WRITE_BIT'+-- before using the results.+--+-- == Valid Usage+--+-- - @dstOffset@ /must/ be less than the size of @dstBuffer@+--+-- - @firstQuery@ /must/ be less than the number of queries in+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+--+-- - The sum of @firstQuery@ and @queryCount@ /must/ be less than or+-- equal to the number of queries in+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+--+-- - If+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT'+-- is not set in 'Graphics.Vulkan.Core10.BaseType.Flags' then+-- @dstOffset@ and @stride@ /must/ be multiples of @4@+--+-- - If+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT'+-- is set in 'Graphics.Vulkan.Core10.BaseType.Flags' then @dstOffset@+-- and @stride@ /must/ be multiples of @8@+--+-- - @dstBuffer@ /must/ have enough storage, from @dstOffset@, to contain+-- the result of each query, as described+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-memorylayout here>+--+-- - @dstBuffer@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'+-- usage flag+--+-- - If @dstBuffer@ is non-sparse then it /must/ be bound completely and+-- contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP',+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryPropertiesKHR'::@allowCommandBufferQueryCopies@+-- /must/ be 'Graphics.Vulkan.Core10.BaseType.TRUE'+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT',+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT'+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',+-- the 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ have been+-- submitted once for each pass as retrieved via a call to+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'+--+-- - 'cmdCopyQueryPoolResults' /must/ not be called if the+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to create+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_INTEL'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' handle+--+-- - @dstBuffer@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QueryResultFlagBits'+-- values+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - Each of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', @dstBuffer@,+-- and 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ have been+-- created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Graphics | Transfer |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Handles.QueryPool',+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QueryResultFlags'+cmdCopyQueryPoolResults :: CommandBuffer -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("stride" ::: DeviceSize) -> QueryResultFlags -> IO ()+cmdCopyQueryPoolResults commandBuffer queryPool firstQuery queryCount dstBuffer dstOffset stride flags = do+ let vkCmdCopyQueryPoolResults' = mkVkCmdCopyQueryPoolResults (pVkCmdCopyQueryPoolResults (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdCopyQueryPoolResults' (commandBufferHandle (commandBuffer)) (queryPool) (firstQuery) (queryCount) (dstBuffer) (dstOffset) (stride) (flags)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdPushConstants+ :: FunPtr (Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> Word32 -> Word32 -> Ptr () -> IO ()) -> Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> Word32 -> Word32 -> Ptr () -> IO ()++-- | vkCmdPushConstants - Update the values of push constants+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- in which the push constant update will be recorded.+--+-- - @layout@ is the pipeline layout used to program the push constant+-- updates.+--+-- - @stageFlags@ is a bitmask of+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits'+-- specifying the shader stages that will use the push constants in the+-- updated range.+--+-- - @offset@ is the start offset of the push constant range to update,+-- in units of bytes.+--+-- - @size@ is the size of the push constant range to update, in units of+-- bytes.+--+-- - @pValues@ is a pointer to an array of @size@ bytes containing the+-- new push constant values.+--+-- = Description+--+-- Note+--+-- As @stageFlags@ needs to include all flags the relevant push constant+-- ranges were created with, any flags that are not supported by the queue+-- family that the 'Graphics.Vulkan.Core10.Handles.CommandPool' used to+-- allocate 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was created on+-- are ignored.+--+-- == Valid Usage+--+-- - For each byte in the range specified by @offset@ and @size@ and for+-- each shader stage in @stageFlags@, there /must/ be a push constant+-- range in @layout@ that includes that byte and that stage+--+-- - For each byte in the range specified by @offset@ and @size@ and for+-- each push constant range that overlaps that byte, @stageFlags@+-- /must/ include all stages in that push constant range’s+-- 'Graphics.Vulkan.Core10.PipelineLayout.PushConstantRange'::@stageFlags@+--+-- - @offset@ /must/ be a multiple of @4@+--+-- - @size@ /must/ be a multiple of @4@+--+-- - @offset@ /must/ be less than+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPushConstantsSize@+--+-- - @size@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPushConstantsSize@+-- minus @offset@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @layout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' handle+--+-- - @stageFlags@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits'+-- values+--+-- - @stageFlags@ /must/ not be @0@+--+-- - @pValues@ /must/ be a valid pointer to an array of @size@ bytes+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations+--+-- - @size@ /must/ be greater than @0@+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and @layout@+-- /must/ have been created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout',+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags'+cmdPushConstants :: CommandBuffer -> PipelineLayout -> ShaderStageFlags -> ("offset" ::: Word32) -> ("size" ::: Word32) -> ("values" ::: Ptr ()) -> IO ()+cmdPushConstants commandBuffer layout stageFlags offset size values = do+ let vkCmdPushConstants' = mkVkCmdPushConstants (pVkCmdPushConstants (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdPushConstants' (commandBufferHandle (commandBuffer)) (layout) (stageFlags) (offset) (size) (values)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdBeginRenderPass+ :: FunPtr (Ptr CommandBuffer_T -> Ptr (RenderPassBeginInfo a) -> SubpassContents -> IO ()) -> Ptr CommandBuffer_T -> Ptr (RenderPassBeginInfo a) -> SubpassContents -> IO ()++-- | vkCmdBeginRenderPass - Begin a new render pass+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- in which to record the command.+--+-- - @pRenderPassBegin@ is a pointer to a 'RenderPassBeginInfo' structure+-- specifying the render pass to begin an instance of, and the+-- framebuffer the instance uses.+--+-- - @contents@ is a+-- 'Graphics.Vulkan.Core10.Enums.SubpassContents.SubpassContents' value+-- specifying how the commands in the first subpass will be provided.+--+-- = Description+--+-- After beginning a render pass instance, the command buffer is ready to+-- record the commands for the first subpass of that render pass.+--+-- == Valid Usage+--+-- - If any of the @initialLayout@ or @finalLayout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription' structures or+-- the @layout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentReference' structures+-- specified when creating the render pass specified in the+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' member of+-- @pRenderPassBegin@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'+-- then the corresponding attachment image view of the framebuffer+-- specified in the 'Graphics.Vulkan.Core10.Handles.Framebuffer' member+-- of @pRenderPassBegin@ /must/ have been created with a @usage@ value+-- including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'+--+-- - If any of the @initialLayout@ or @finalLayout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription' structures or+-- the @layout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentReference' structures+-- specified when creating the render pass specified in the+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' member of+-- @pRenderPassBegin@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'+-- then the corresponding attachment image view of the framebuffer+-- specified in the 'Graphics.Vulkan.Core10.Handles.Framebuffer' member+-- of @pRenderPassBegin@ /must/ have been created with a @usage@ value+-- including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- - If any of the @initialLayout@ or @finalLayout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription' structures or+-- the @layout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentReference' structures+-- specified when creating the render pass specified in the+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' member of+-- @pRenderPassBegin@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+-- then the corresponding attachment image view of the framebuffer+-- specified in the 'Graphics.Vulkan.Core10.Handles.Framebuffer' member+-- of @pRenderPassBegin@ /must/ have been created with a @usage@ value+-- including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- - If any of the @stencilInitialLayout@ or @stencilFinalLayout@ member+-- of the+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout'+-- structures or the @stencilLayout@ member of the+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentReferenceStencilLayout'+-- structures specified when creating the render pass specified in the+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' member of+-- @pRenderPassBegin@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+-- then the corresponding attachment image view of the framebuffer+-- specified in the 'Graphics.Vulkan.Core10.Handles.Framebuffer' member+-- of @pRenderPassBegin@ /must/ have been created with a @usage@ value+-- including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- - If any of the @initialLayout@ or @finalLayout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription' structures or+-- the @layout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentReference' structures+-- specified when creating the render pass specified in the+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' member of+-- @pRenderPassBegin@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL'+-- then the corresponding attachment image view of the framebuffer+-- specified in the 'Graphics.Vulkan.Core10.Handles.Framebuffer' member+-- of @pRenderPassBegin@ /must/ have been created with a @usage@ value+-- including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'+--+-- - If any of the @initialLayout@ or @finalLayout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription' structures or+-- the @layout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentReference' structures+-- specified when creating the render pass specified in the+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' member of+-- @pRenderPassBegin@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'+-- then the corresponding attachment image view of the framebuffer+-- specified in the 'Graphics.Vulkan.Core10.Handles.Framebuffer' member+-- of @pRenderPassBegin@ /must/ have been created with a @usage@ value+-- including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'+--+-- - If any of the @initialLayout@ or @finalLayout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription' structures or+-- the @layout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentReference' structures+-- specified when creating the render pass specified in the+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' member of+-- @pRenderPassBegin@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'+-- then the corresponding attachment image view of the framebuffer+-- specified in the 'Graphics.Vulkan.Core10.Handles.Framebuffer' member+-- of @pRenderPassBegin@ /must/ have been created with a @usage@ value+-- including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+--+-- - If any of the @initialLayout@ members of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription' structures+-- specified when creating the render pass specified in the+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' member of+-- @pRenderPassBegin@ is not+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED',+-- then each such @initialLayout@ /must/ be equal to the current layout+-- of the corresponding attachment image subresource of the framebuffer+-- specified in the 'Graphics.Vulkan.Core10.Handles.Framebuffer' member+-- of @pRenderPassBegin@+--+-- - The @srcStageMask@ and @dstStageMask@ members of any element of the+-- @pDependencies@ member of+-- 'Graphics.Vulkan.Core10.Pass.RenderPassCreateInfo' used to create+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' /must/ be supported by+-- the capabilities of the queue family identified by the+-- @queueFamilyIndex@ member of the+-- 'Graphics.Vulkan.Core10.CommandPool.CommandPoolCreateInfo' used to+-- create the command pool which+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+--+-- - For any attachment in 'Graphics.Vulkan.Core10.Handles.Framebuffer'+-- that is used by 'Graphics.Vulkan.Core10.Handles.RenderPass' and is+-- bound to memory locations that are also bound to another attachment+-- used by 'Graphics.Vulkan.Core10.Handles.RenderPass', and if at least+-- one of those uses causes either attachment to be written to, both+-- attachments /must/ have had the+-- 'Graphics.Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT'+-- set+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pRenderPassBegin@ /must/ be a valid pointer to a valid+-- 'RenderPassBeginInfo' structure+--+-- - @contents@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.SubpassContents.SubpassContents' value+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a primary+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Graphics | Graphics |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', 'RenderPassBeginInfo',+-- 'Graphics.Vulkan.Core10.Enums.SubpassContents.SubpassContents'+cmdBeginRenderPass :: PokeChain a => CommandBuffer -> RenderPassBeginInfo a -> SubpassContents -> IO ()+cmdBeginRenderPass commandBuffer renderPassBegin contents = evalContT $ do+ let vkCmdBeginRenderPass' = mkVkCmdBeginRenderPass (pVkCmdBeginRenderPass (deviceCmds (commandBuffer :: CommandBuffer)))+ pRenderPassBegin <- ContT $ withCStruct (renderPassBegin)+ lift $ vkCmdBeginRenderPass' (commandBufferHandle (commandBuffer)) pRenderPassBegin (contents)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdNextSubpass+ :: FunPtr (Ptr CommandBuffer_T -> SubpassContents -> IO ()) -> Ptr CommandBuffer_T -> SubpassContents -> IO ()++-- | vkCmdNextSubpass - Transition to the next subpass of a render pass+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- in which to record the command.+--+-- - @contents@ specifies how the commands in the next subpass will be+-- provided, in the same fashion as the corresponding parameter of+-- 'cmdBeginRenderPass'.+--+-- = Description+--+-- The subpass index for a render pass begins at zero when+-- 'cmdBeginRenderPass' is recorded, and increments each time+-- 'cmdNextSubpass' is recorded.+--+-- Moving to the next subpass automatically performs any multisample+-- resolve operations in the subpass being ended. End-of-subpass+-- multisample resolves are treated as color attachment writes for the+-- purposes of synchronization. This applies to resolve operations for both+-- color and depth\/stencil attachments. That is, they are considered to+-- execute in the+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'+-- pipeline stage and their writes are synchronized with+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.+-- Synchronization between rendering within a subpass and any resolve+-- operations at the end of the subpass occurs automatically, without need+-- for explicit dependencies or pipeline barriers. However, if the resolve+-- attachment is also used in a different subpass, an explicit dependency+-- is needed.+--+-- After transitioning to the next subpass, the application /can/ record+-- the commands for that subpass.+--+-- == Valid Usage+--+-- - The current subpass index /must/ be less than the number of+-- subpasses in the render pass minus one+--+-- - This command /must/ not be recorded when transform feedback is+-- active+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @contents@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.SubpassContents.SubpassContents' value+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a primary+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Enums.SubpassContents.SubpassContents'+cmdNextSubpass :: CommandBuffer -> SubpassContents -> IO ()+cmdNextSubpass commandBuffer contents = do+ let vkCmdNextSubpass' = mkVkCmdNextSubpass (pVkCmdNextSubpass (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdNextSubpass' (commandBufferHandle (commandBuffer)) (contents)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdEndRenderPass+ :: FunPtr (Ptr CommandBuffer_T -> IO ()) -> Ptr CommandBuffer_T -> IO ()++-- | vkCmdEndRenderPass - End the current render pass+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- in which to end the current render pass instance.+--+-- = Description+--+-- Ending a render pass instance performs any multisample resolve+-- operations on the final subpass.+--+-- == Valid Usage+--+-- - The current subpass index /must/ be equal to the number of subpasses+-- in the render pass minus one+--+-- - This command /must/ not be recorded when transform feedback is+-- active+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a primary+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdEndRenderPass :: CommandBuffer -> IO ()+cmdEndRenderPass commandBuffer = do+ let vkCmdEndRenderPass' = mkVkCmdEndRenderPass (pVkCmdEndRenderPass (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdEndRenderPass' (commandBufferHandle (commandBuffer))+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdExecuteCommands+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr (Ptr CommandBuffer_T) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr (Ptr CommandBuffer_T) -> IO ()++-- | vkCmdExecuteCommands - Execute a secondary command buffer from a primary+-- command buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a handle to a+-- primary command buffer that the secondary command buffers are+-- executed in.+--+-- - @commandBufferCount@ is the length of the @pCommandBuffers@ array.+--+-- - @pCommandBuffers@ is a pointer to an array of @commandBufferCount@+-- secondary command buffer handles, which are recorded to execute in+-- the primary command buffer in the order they are listed in the+-- array.+--+-- = Description+--+-- If any element of @pCommandBuffers@ was not recorded with the+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'+-- flag, and it was recorded into any other primary command buffer which is+-- currently in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle executable or recording state>,+-- that primary command buffer becomes+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.+--+-- == Valid Usage+--+-- - Each element of @pCommandBuffers@ /must/ have been allocated with a+-- @level@ of+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferLevel.COMMAND_BUFFER_LEVEL_SECONDARY'+--+-- - Each element of @pCommandBuffers@ /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending or executable state>+--+-- - If any element of @pCommandBuffers@ was not recorded with the+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'+-- flag, it /must/ not be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>+--+-- - If any element of @pCommandBuffers@ was not recorded with the+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'+-- flag, it /must/ not have already been recorded to+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+--+-- - If any element of @pCommandBuffers@ was not recorded with the+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'+-- flag, it /must/ not appear more than once in @pCommandBuffers@+--+-- - Each element of @pCommandBuffers@ /must/ have been allocated from a+-- 'Graphics.Vulkan.Core10.Handles.CommandPool' that was created for+-- the same queue family as the+-- 'Graphics.Vulkan.Core10.Handles.CommandPool' from which+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated+--+-- - If 'cmdExecuteCommands' is being called within a render pass+-- instance, that render pass instance /must/ have been begun with the+-- @contents@ parameter of 'cmdBeginRenderPass' set to+-- 'Graphics.Vulkan.Core10.Enums.SubpassContents.SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS'+--+-- - If 'cmdExecuteCommands' is being called within a render pass+-- instance, each element of @pCommandBuffers@ /must/ have been+-- recorded with the+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'+--+-- - If 'cmdExecuteCommands' is being called within a render pass+-- instance, each element of @pCommandBuffers@ /must/ have been+-- recorded with+-- 'Graphics.Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@subpass@+-- set to the index of the subpass which the given command buffer will+-- be executed in+--+-- - If 'cmdExecuteCommands' is being called within a render pass+-- instance, the render passes specified in the+-- @pBeginInfo->pInheritanceInfo->renderPass@ members of the+-- 'Graphics.Vulkan.Core10.CommandBuffer.beginCommandBuffer' commands+-- used to begin recording each element of @pCommandBuffers@ /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>+-- with the current render pass+--+-- - If 'cmdExecuteCommands' is being called within a render pass+-- instance, and any element of @pCommandBuffers@ was recorded with+-- 'Graphics.Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::'Graphics.Vulkan.Core10.Handles.Framebuffer'+-- not equal to 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', that+-- 'Graphics.Vulkan.Core10.Handles.Framebuffer' /must/ match the+-- 'Graphics.Vulkan.Core10.Handles.Framebuffer' used in the current+-- render pass instance+--+-- - If 'cmdExecuteCommands' is being called within a render pass+-- instance that included+-- 'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'+-- in the @pNext@ chain of 'RenderPassBeginInfo', then each element of+-- @pCommandBuffers@ /must/ have been recorded with+-- 'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM'+-- in the @pNext@ chain of VkCommandBufferBeginInfo+--+-- - If 'cmdExecuteCommands' is being called within a render pass+-- instance that included+-- 'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'+-- in the @pNext@ chain of 'RenderPassBeginInfo', then each element of+-- @pCommandBuffers@ /must/ have been recorded with+-- 'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM'::@transform@+-- identical to+-- 'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'::@transform@+--+-- - If 'cmdExecuteCommands' is being called within a render pass+-- instance that included+-- 'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'+-- in the @pNext@ chain of 'RenderPassBeginInfo', then each element of+-- @pCommandBuffers@ /must/ have been recorded with+-- 'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM'::@renderArea@+-- identical to 'RenderPassBeginInfo'::@renderArea@+--+-- - If 'cmdExecuteCommands' is not being called within a render pass+-- instance, each element of @pCommandBuffers@ /must/ not have been+-- recorded with the+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueries inherited queries>+-- feature is not enabled,+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ not have any+-- queries+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' has a+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION' query+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>,+-- then each element of @pCommandBuffers@ /must/ have been recorded+-- with+-- 'Graphics.Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@occlusionQueryEnable@+-- set to 'Graphics.Vulkan.Core10.BaseType.TRUE'+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' has a+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION' query+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>,+-- then each element of @pCommandBuffers@ /must/ have been recorded+-- with+-- 'Graphics.Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@queryFlags@+-- having all bits set that are set for the query+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' has a+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS'+-- query+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>,+-- then each element of @pCommandBuffers@ /must/ have been recorded+-- with+-- 'Graphics.Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@pipelineStatistics@+-- having all bits set that are set in the+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' the query uses+--+-- - Each element of @pCommandBuffers@ /must/ not begin any query types+-- that are+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>+-- in 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a protected+-- command buffer, then each element of @pCommandBuffers@ /must/ be a+-- protected command buffer+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, then each element of @pCommandBuffers@ /must/ be an+-- unprotected command buffer+--+-- - This command /must/ not be recorded when transform feedback is+-- active+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pCommandBuffers@ /must/ be a valid pointer to an array of+-- @commandBufferCount@ valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handles+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support transfer, graphics, or compute operations+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a primary+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+--+-- - @commandBufferCount@ /must/ be greater than @0@+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and the+-- elements of @pCommandBuffers@ /must/ have been created, allocated,+-- or retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Transfer | |+-- | | | Graphics | |+-- | | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdExecuteCommands :: CommandBuffer -> ("commandBuffers" ::: Vector CommandBuffer) -> IO ()+cmdExecuteCommands commandBuffer commandBuffers = evalContT $ do+ let vkCmdExecuteCommands' = mkVkCmdExecuteCommands (pVkCmdExecuteCommands (deviceCmds (commandBuffer :: CommandBuffer)))+ pPCommandBuffers <- ContT $ allocaBytesAligned @(Ptr CommandBuffer_T) ((Data.Vector.length (commandBuffers)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPCommandBuffers `plusPtr` (8 * (i)) :: Ptr (Ptr CommandBuffer_T)) (commandBufferHandle (e))) (commandBuffers)+ lift $ vkCmdExecuteCommands' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (commandBuffers)) :: Word32)) (pPCommandBuffers)+ pure $ ()+++-- | VkViewport - Structure specifying a viewport+--+-- = Description+--+-- The framebuffer depth coordinate @z@f /may/ be represented using either+-- a fixed-point or floating-point representation. However, a+-- floating-point representation /must/ be used if the depth\/stencil+-- attachment has a floating-point depth component. If an m-bit fixed-point+-- representation is used, we assume that it represents each value+-- \(\frac{k}{2^m - 1}\), where k ∈ { 0, 1, …, 2m-1 }, as k (e.g. 1.0 is+-- represented in binary as a string of all ones).+--+-- The viewport parameters shown in the above equations are found from+-- these values as+--+-- - ox = @x@ + @width@ \/ 2+--+-- - oy = @y@ + @height@ \/ 2+--+-- - oz = @minDepth@+--+-- - px = @width@+--+-- - py = @height@+--+-- - pz = @maxDepth@ - @minDepth@.+--+-- If a render pass transform is enabled, the values (px,py) and (ox, oy)+-- defining the viewport are transformed as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>+-- before participating in the viewport transform.+--+-- The application /can/ specify a negative term for @height@, which has+-- the effect of negating the y coordinate in clip space before performing+-- the transform. When using a negative @height@, the application /should/+-- also adjust the @y@ value to point to the lower left corner of the+-- viewport instead of the upper left corner. Using the negative @height@+-- allows the application to avoid having to negate the y component of the+-- @Position@ output from the last vertex processing stage in shaders that+-- also target other graphics APIs.+--+-- The width and height of the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxViewportDimensions implementation-dependent maximum viewport dimensions>+-- /must/ be greater than or equal to the width and height of the largest+-- image which /can/ be created and attached to a framebuffer.+--+-- The floating-point viewport bounds are represented with an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-viewportSubPixelBits implementation-dependent precision>.+--+-- == Valid Usage+--+-- - @width@ /must/ be greater than @0.0@+--+-- - @width@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewportDimensions@[0]+--+-- - The absolute value of @height@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewportDimensions@[1]+--+-- - @x@ /must/ be greater than or equal to @viewportBoundsRange@[0]+--+-- - (@x@ + @width@) /must/ be less than or equal to+-- @viewportBoundsRange@[1]+--+-- - @y@ /must/ be greater than or equal to @viewportBoundsRange@[0]+--+-- - @y@ /must/ be less than or equal to @viewportBoundsRange@[1]+--+-- - (@y@ + @height@) /must/ be greater than or equal to+-- @viewportBoundsRange@[0]+--+-- - (@y@ + @height@) /must/ be less than or equal to+-- @viewportBoundsRange@[1]+--+-- - Unless+-- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_depth_range_unrestricted@+-- extension is enabled @minDepth@ /must/ be between @0.0@ and @1.0@,+-- inclusive+--+-- - Unless+-- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_depth_range_unrestricted@+-- extension is enabled @maxDepth@ /must/ be between @0.0@ and @1.0@,+-- inclusive+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo',+-- 'cmdSetViewport'+data Viewport = Viewport+ { -- | @x@ and @y@ are the viewport’s upper left corner (x,y).+ x :: Float+ , -- No documentation found for Nested "VkViewport" "y"+ y :: Float+ , -- | @width@ and @height@ are the viewport’s width and height, respectively.+ width :: Float+ , -- No documentation found for Nested "VkViewport" "height"+ height :: Float+ , -- | @minDepth@ and @maxDepth@ are the depth range for the viewport. It is+ -- valid for @minDepth@ to be greater than or equal to @maxDepth@.+ minDepth :: Float+ , -- No documentation found for Nested "VkViewport" "maxDepth"+ maxDepth :: Float+ }+ deriving (Typeable)+deriving instance Show Viewport++instance ToCStruct Viewport where+ withCStruct x f = allocaBytesAligned 24 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p Viewport{..} f = do+ poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (x))+ poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (y))+ poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (width))+ poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (height))+ poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (minDepth))+ poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (maxDepth))+ f+ cStructSize = 24+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (zero))+ poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (zero))+ poke ((p `plusPtr` 8 :: Ptr CFloat)) (CFloat (zero))+ poke ((p `plusPtr` 12 :: Ptr CFloat)) (CFloat (zero))+ poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (zero))+ poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (zero))+ f++instance FromCStruct Viewport where+ peekCStruct p = do+ x <- peek @CFloat ((p `plusPtr` 0 :: Ptr CFloat))+ y <- peek @CFloat ((p `plusPtr` 4 :: Ptr CFloat))+ width <- peek @CFloat ((p `plusPtr` 8 :: Ptr CFloat))+ height <- peek @CFloat ((p `plusPtr` 12 :: Ptr CFloat))+ minDepth <- peek @CFloat ((p `plusPtr` 16 :: Ptr CFloat))+ maxDepth <- peek @CFloat ((p `plusPtr` 20 :: Ptr CFloat))+ pure $ Viewport+ ((\(CFloat a) -> a) x) ((\(CFloat a) -> a) y) ((\(CFloat a) -> a) width) ((\(CFloat a) -> a) height) ((\(CFloat a) -> a) minDepth) ((\(CFloat a) -> a) maxDepth)++instance Storable Viewport where+ sizeOf ~_ = 24+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero Viewport where+ zero = Viewport+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkRect2D - Structure specifying a two-dimensional subregion+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo',+-- 'ClearRect',+-- 'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.DisplayPresentInfoKHR',+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent2D',+-- 'Graphics.Vulkan.Core10.SharedTypes.Offset2D',+-- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo',+-- 'RenderPassBeginInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV',+-- 'cmdSetScissor',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.getPhysicalDevicePresentRectanglesKHR'+data Rect2D = Rect2D+ { -- | @offset@ is a 'Graphics.Vulkan.Core10.SharedTypes.Offset2D' specifying+ -- the rectangle offset.+ offset :: Offset2D+ , -- | @extent@ is a 'Graphics.Vulkan.Core10.SharedTypes.Extent2D' specifying+ -- the rectangle extent.+ extent :: Extent2D+ }+ deriving (Typeable)+deriving instance Show Rect2D++instance ToCStruct Rect2D where+ withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p Rect2D{..} f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Offset2D)) (offset) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr Extent2D)) (extent) . ($ ())+ lift $ f+ cStructSize = 16+ cStructAlignment = 4+ pokeZeroCStruct p f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Offset2D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr Extent2D)) (zero) . ($ ())+ lift $ f++instance FromCStruct Rect2D where+ peekCStruct p = do+ offset <- peekCStruct @Offset2D ((p `plusPtr` 0 :: Ptr Offset2D))+ extent <- peekCStruct @Extent2D ((p `plusPtr` 8 :: Ptr Extent2D))+ pure $ Rect2D+ offset extent++instance Zero Rect2D where+ zero = Rect2D+ zero+ zero+++-- | VkClearRect - Structure specifying a clear rectangle+--+-- = Description+--+-- The layers [@baseArrayLayer@, @baseArrayLayer@ + @layerCount@) counting+-- from the base layer of the attachment image view are cleared.+--+-- = See Also+--+-- 'Rect2D', 'cmdClearAttachments'+data ClearRect = ClearRect+ { -- | @rect@ is the two-dimensional region to be cleared.+ rect :: Rect2D+ , -- | @baseArrayLayer@ is the first layer to be cleared.+ baseArrayLayer :: Word32+ , -- | @layerCount@ is the number of layers to clear.+ layerCount :: Word32+ }+ deriving (Typeable)+deriving instance Show ClearRect++instance ToCStruct ClearRect where+ withCStruct x f = allocaBytesAligned 24 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ClearRect{..} f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Rect2D)) (rect) . ($ ())+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (baseArrayLayer)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (layerCount)+ lift $ f+ cStructSize = 24+ cStructAlignment = 4+ pokeZeroCStruct p f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Rect2D)) (zero) . ($ ())+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ lift $ f++instance FromCStruct ClearRect where+ peekCStruct p = do+ rect <- peekCStruct @Rect2D ((p `plusPtr` 0 :: Ptr Rect2D))+ baseArrayLayer <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ layerCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pure $ ClearRect+ rect baseArrayLayer layerCount++instance Zero ClearRect where+ zero = ClearRect+ zero+ zero+ zero+++-- | VkBufferCopy - Structure specifying a buffer copy operation+--+-- == Valid Usage+--+-- - The @size@ /must/ be greater than @0@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize', 'cmdCopyBuffer'+data BufferCopy = BufferCopy+ { -- | @srcOffset@ is the starting offset in bytes from the start of+ -- @srcBuffer@.+ srcOffset :: DeviceSize+ , -- | @dstOffset@ is the starting offset in bytes from the start of+ -- @dstBuffer@.+ dstOffset :: DeviceSize+ , -- | @size@ is the number of bytes to copy.+ size :: DeviceSize+ }+ deriving (Typeable)+deriving instance Show BufferCopy++instance ToCStruct BufferCopy where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p BufferCopy{..} f = do+ poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (srcOffset)+ poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (dstOffset)+ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (size)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)+ f++instance FromCStruct BufferCopy where+ peekCStruct p = do+ srcOffset <- peek @DeviceSize ((p `plusPtr` 0 :: Ptr DeviceSize))+ dstOffset <- peek @DeviceSize ((p `plusPtr` 8 :: Ptr DeviceSize))+ size <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))+ pure $ BufferCopy+ srcOffset dstOffset size++instance Storable BufferCopy where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero BufferCopy where+ zero = BufferCopy+ zero+ zero+ zero+++-- | VkImageCopy - Structure specifying an image copy operation+--+-- = Description+--+-- For 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D' images,+-- copies are performed slice by slice starting with the @z@ member of the+-- @srcOffset@ or @dstOffset@, and copying @depth@ slices. For images with+-- multiple layers, copies are performed layer by layer starting with the+-- @baseArrayLayer@ member of the @srcSubresource@ or @dstSubresource@ and+-- copying @layerCount@ layers. Image data /can/ be copied between images+-- with different image types. If one image is+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D' and the other+-- image is 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' with+-- multiple layers, then each slice is copied to or from a different layer.+--+-- Copies involving a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>+-- specify the region to be copied in terms of the /plane/ to be copied,+-- not the coordinates of the multi-planar image. This means that copies+-- accessing the R\/B planes of “@_422@” format images /must/ fit the+-- copied region within half the @width@ of the parent image, and that+-- copies accessing the R\/B planes of “@_420@” format images /must/ fit+-- the copied region within half the @width@ and @height@ of the parent+-- image.+--+-- == Valid Usage+--+-- - If neither the calling command’s @srcImage@ nor the calling+-- command’s @dstImage@ has a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>+-- then the @aspectMask@ member of @srcSubresource@ and+-- @dstSubresource@ /must/ match+--+-- - If the calling command’s @srcImage@ has a+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' with+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes>+-- then the @srcSubresource@ @aspectMask@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+--+-- - If the calling command’s @srcImage@ has a+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' with+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes>+-- then the @srcSubresource@ @aspectMask@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+--+-- - If the calling command’s @dstImage@ has a+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' with+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes>+-- then the @dstSubresource@ @aspectMask@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+--+-- - If the calling command’s @dstImage@ has a+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' with+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes>+-- then the @dstSubresource@ @aspectMask@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+--+-- - If the calling command’s @srcImage@ has a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>+-- and the @dstImage@ does not have a multi-planar image format, the+-- @dstSubresource@ @aspectMask@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'+--+-- - If the calling command’s @dstImage@ has a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>+-- and the @srcImage@ does not have a multi-planar image format, the+-- @srcSubresource@ @aspectMask@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'+--+-- - The number of slices of the @extent@ (for 3D) or layers of the+-- @srcSubresource@ (for non-3D) /must/ match the number of slices of+-- the @extent@ (for 3D) or layers of the @dstSubresource@ (for non-3D)+--+-- - If either of the calling command’s @srcImage@ or @dstImage@+-- parameters are of 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType'+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', the+-- @baseArrayLayer@ and @layerCount@ members of the corresponding+-- subresource /must/ be @0@ and @1@, respectively+--+-- - The @aspectMask@ member of @srcSubresource@ /must/ specify aspects+-- present in the calling command’s @srcImage@+--+-- - The @aspectMask@ member of @dstSubresource@ /must/ specify aspects+-- present in the calling command’s @dstImage@+--+-- - @srcOffset.x@ and (@extent.width@ + @srcOffset.x@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the source+-- image subresource width+--+-- - @srcOffset.y@ and (@extent.height@ + @srcOffset.y@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the source+-- image subresource height+--+-- - If the calling command’s @srcImage@ is of type+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then+-- @srcOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@.+--+-- - @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the source+-- image subresource depth+--+-- - If the calling command’s @srcImage@ is of type+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then+-- @srcOffset.z@ /must/ be @0@ and @extent.depth@ /must/ be @1@.+--+-- - If the calling command’s @dstImage@ is of type+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then+-- @dstOffset.z@ /must/ be @0@ and @extent.depth@ /must/ be @1@.+--+-- - If the calling command’s @srcImage@ is of type+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then+-- @srcOffset.z@ /must/ be @0@.+--+-- - If the calling command’s @dstImage@ is of type+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then+-- @dstOffset.z@ /must/ be @0@.+--+-- - If both @srcImage@ and @dstImage@ are of type+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' then+-- @extent.depth@ /must/ be @1@.+--+-- - If the calling command’s @srcImage@ is of type+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and the+-- @dstImage@ is of type+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then+-- @extent.depth@ /must/ equal to the @layerCount@ member of+-- @srcSubresource@.+--+-- - If the calling command’s @dstImage@ is of type+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and the+-- @srcImage@ is of type+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then+-- @extent.depth@ /must/ equal to the @layerCount@ member of+-- @dstSubresource@.+--+-- - @dstOffset.x@ and (@extent.width@ + @dstOffset.x@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the+-- destination image subresource width+--+-- - @dstOffset.y@ and (@extent.height@ + @dstOffset.y@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the+-- destination image subresource height+--+-- - If the calling command’s @dstImage@ is of type+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then+-- @dstOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@.+--+-- - @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the+-- destination image subresource depth+--+-- - If the calling command’s @srcImage@ is a compressed image, or a+-- /single-plane/, “@_422@” image format, all members of @srcOffset@+-- /must/ be a multiple of the corresponding dimensions of the+-- compressed texel block+--+-- - If the calling command’s @srcImage@ is a compressed image, or a+-- /single-plane/, “@_422@” image format, @extent.width@ /must/ be a+-- multiple of the compressed texel block width or (@extent.width@ ++-- @srcOffset.x@) /must/ equal the source image subresource width+--+-- - If the calling command’s @srcImage@ is a compressed image, or a+-- /single-plane/, “@_422@” image format, @extent.height@ /must/ be a+-- multiple of the compressed texel block height or (@extent.height@ ++-- @srcOffset.y@) /must/ equal the source image subresource height+--+-- - If the calling command’s @srcImage@ is a compressed image, or a+-- /single-plane/, “@_422@” image format, @extent.depth@ /must/ be a+-- multiple of the compressed texel block depth or (@extent.depth@ ++-- @srcOffset.z@) /must/ equal the source image subresource depth+--+-- - If the calling command’s @dstImage@ is a compressed format image, or+-- a /single-plane/, “@_422@” image format, all members of @dstOffset@+-- /must/ be a multiple of the corresponding dimensions of the+-- compressed texel block+--+-- - If the calling command’s @dstImage@ is a compressed format image, or+-- a /single-plane/, “@_422@” image format, @extent.width@ /must/ be a+-- multiple of the compressed texel block width or (@extent.width@ ++-- @dstOffset.x@) /must/ equal the destination image subresource width+--+-- - If the calling command’s @dstImage@ is a compressed format image, or+-- a /single-plane/, “@_422@” image format, @extent.height@ /must/ be a+-- multiple of the compressed texel block height or (@extent.height@ ++-- @dstOffset.y@) /must/ equal the destination image subresource height+--+-- - If the calling command’s @dstImage@ is a compressed format image, or+-- a /single-plane/, “@_422@” image format, @extent.depth@ /must/ be a+-- multiple of the compressed texel block depth or (@extent.depth@ ++-- @dstOffset.z@) /must/ equal the destination image subresource depth+--+-- == Valid Usage (Implicit)+--+-- - @srcSubresource@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceLayers'+-- structure+--+-- - @dstSubresource@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceLayers'+-- structure+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent3D',+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceLayers',+-- 'Graphics.Vulkan.Core10.SharedTypes.Offset3D', 'cmdCopyImage'+data ImageCopy = ImageCopy+ { -- | @srcSubresource@ and @dstSubresource@ are+ -- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceLayers' structures+ -- specifying the image subresources of the images used for the source and+ -- destination image data, respectively.+ srcSubresource :: ImageSubresourceLayers+ , -- | @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets+ -- in texels of the sub-regions of the source and destination image data.+ srcOffset :: Offset3D+ , -- No documentation found for Nested "VkImageCopy" "dstSubresource"+ dstSubresource :: ImageSubresourceLayers+ , -- No documentation found for Nested "VkImageCopy" "dstOffset"+ dstOffset :: Offset3D+ , -- | @extent@ is the size in texels of the image to copy in @width@, @height@+ -- and @depth@.+ extent :: Extent3D+ }+ deriving (Typeable)+deriving instance Show ImageCopy++instance ToCStruct ImageCopy where+ withCStruct x f = allocaBytesAligned 68 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageCopy{..} f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (srcSubresource) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Offset3D)) (srcOffset) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) (dstSubresource) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr Offset3D)) (dstOffset) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr Extent3D)) (extent) . ($ ())+ lift $ f+ cStructSize = 68+ cStructAlignment = 4+ pokeZeroCStruct p f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Offset3D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr Offset3D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr Extent3D)) (zero) . ($ ())+ lift $ f++instance FromCStruct ImageCopy where+ peekCStruct p = do+ srcSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers))+ srcOffset <- peekCStruct @Offset3D ((p `plusPtr` 16 :: Ptr Offset3D))+ dstSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers))+ dstOffset <- peekCStruct @Offset3D ((p `plusPtr` 44 :: Ptr Offset3D))+ extent <- peekCStruct @Extent3D ((p `plusPtr` 56 :: Ptr Extent3D))+ pure $ ImageCopy+ srcSubresource srcOffset dstSubresource dstOffset extent++instance Zero ImageCopy where+ zero = ImageCopy+ zero+ zero+ zero+ zero+ zero+++-- | VkImageBlit - Structure specifying an image blit operation+--+-- = Description+--+-- For each element of the @pRegions@ array, a blit operation is performed+-- the specified source and destination regions.+--+-- == Valid Usage+--+-- - The @aspectMask@ member of @srcSubresource@ and @dstSubresource@+-- /must/ match+--+-- - The @layerCount@ member of @srcSubresource@ and @dstSubresource@+-- /must/ match+--+-- - If either of the calling command’s @srcImage@ or @dstImage@+-- parameters are of 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType'+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', the+-- @baseArrayLayer@ and @layerCount@ members of both @srcSubresource@+-- and @dstSubresource@ /must/ be @0@ and @1@, respectively+--+-- - The @aspectMask@ member of @srcSubresource@ /must/ specify aspects+-- present in the calling command’s @srcImage@+--+-- - The @aspectMask@ member of @dstSubresource@ /must/ specify aspects+-- present in the calling command’s @dstImage@+--+-- - @srcOffset@[0].x and @srcOffset@[1].x /must/ both be greater than or+-- equal to @0@ and less than or equal to the source image subresource+-- width+--+-- - @srcOffset@[0].y and @srcOffset@[1].y /must/ both be greater than or+-- equal to @0@ and less than or equal to the source image subresource+-- height+--+-- - If the calling command’s @srcImage@ is of type+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then+-- @srcOffset@[0].y /must/ be @0@ and @srcOffset@[1].y /must/ be @1@.+--+-- - @srcOffset@[0].z and @srcOffset@[1].z /must/ both be greater than or+-- equal to @0@ and less than or equal to the source image subresource+-- depth+--+-- - If the calling command’s @srcImage@ is of type+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then+-- @srcOffset@[0].z /must/ be @0@ and @srcOffset@[1].z /must/ be @1@.+--+-- - @dstOffset@[0].x and @dstOffset@[1].x /must/ both be greater than or+-- equal to @0@ and less than or equal to the destination image+-- subresource width+--+-- - @dstOffset@[0].y and @dstOffset@[1].y /must/ both be greater than or+-- equal to @0@ and less than or equal to the destination image+-- subresource height+--+-- - If the calling command’s @dstImage@ is of type+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then+-- @dstOffset@[0].y /must/ be @0@ and @dstOffset@[1].y /must/ be @1@.+--+-- - @dstOffset@[0].z and @dstOffset@[1].z /must/ both be greater than or+-- equal to @0@ and less than or equal to the destination image+-- subresource depth+--+-- - If the calling command’s @dstImage@ is of type+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then+-- @dstOffset@[0].z /must/ be @0@ and @dstOffset@[1].z /must/ be @1@.+--+-- == Valid Usage (Implicit)+--+-- - @srcSubresource@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceLayers'+-- structure+--+-- - @dstSubresource@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceLayers'+-- structure+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceLayers',+-- 'Graphics.Vulkan.Core10.SharedTypes.Offset3D', 'cmdBlitImage'+data ImageBlit = ImageBlit+ { -- | @srcSubresource@ is the subresource to blit from.+ srcSubresource :: ImageSubresourceLayers+ , -- | @srcOffsets@ is a pointer to an array of two+ -- 'Graphics.Vulkan.Core10.SharedTypes.Offset3D' structures specifying the+ -- bounds of the source region within @srcSubresource@.+ srcOffsets :: (Offset3D, Offset3D)+ , -- | @dstSubresource@ is the subresource to blit into.+ dstSubresource :: ImageSubresourceLayers+ , -- | @dstOffsets@ is a pointer to an array of two+ -- 'Graphics.Vulkan.Core10.SharedTypes.Offset3D' structures specifying the+ -- bounds of the destination region within @dstSubresource@.+ dstOffsets :: (Offset3D, Offset3D)+ }+ deriving (Typeable)+deriving instance Show ImageBlit++instance ToCStruct ImageBlit where+ withCStruct x f = allocaBytesAligned 80 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageBlit{..} f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (srcSubresource) . ($ ())+ let pSrcOffsets' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector 2 Offset3D)))+ case (srcOffsets) of+ (e0, e1) -> do+ ContT $ pokeCStruct (pSrcOffsets' :: Ptr Offset3D) (e0) . ($ ())+ ContT $ pokeCStruct (pSrcOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr ImageSubresourceLayers)) (dstSubresource) . ($ ())+ let pDstOffsets' = lowerArrayPtr ((p `plusPtr` 56 :: Ptr (Data.Vector.Storable.Sized.Vector 2 Offset3D)))+ case (dstOffsets) of+ (e0, e1) -> do+ ContT $ pokeCStruct (pDstOffsets' :: Ptr Offset3D) (e0) . ($ ())+ ContT $ pokeCStruct (pDstOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1) . ($ ())+ lift $ f+ cStructSize = 80+ cStructAlignment = 4+ pokeZeroCStruct p f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())+ let pSrcOffsets' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector 2 Offset3D)))+ case ((zero, zero)) of+ (e0, e1) -> do+ ContT $ pokeCStruct (pSrcOffsets' :: Ptr Offset3D) (e0) . ($ ())+ ContT $ pokeCStruct (pSrcOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())+ let pDstOffsets' = lowerArrayPtr ((p `plusPtr` 56 :: Ptr (Data.Vector.Storable.Sized.Vector 2 Offset3D)))+ case ((zero, zero)) of+ (e0, e1) -> do+ ContT $ pokeCStruct (pDstOffsets' :: Ptr Offset3D) (e0) . ($ ())+ ContT $ pokeCStruct (pDstOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1) . ($ ())+ lift $ f++instance FromCStruct ImageBlit where+ peekCStruct p = do+ srcSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers))+ let psrcOffsets = lowerArrayPtr @Offset3D ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector 2 Offset3D)))+ srcOffsets0 <- peekCStruct @Offset3D ((psrcOffsets `advancePtrBytes` 0 :: Ptr Offset3D))+ srcOffsets1 <- peekCStruct @Offset3D ((psrcOffsets `advancePtrBytes` 12 :: Ptr Offset3D))+ dstSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 40 :: Ptr ImageSubresourceLayers))+ let pdstOffsets = lowerArrayPtr @Offset3D ((p `plusPtr` 56 :: Ptr (Data.Vector.Storable.Sized.Vector 2 Offset3D)))+ dstOffsets0 <- peekCStruct @Offset3D ((pdstOffsets `advancePtrBytes` 0 :: Ptr Offset3D))+ dstOffsets1 <- peekCStruct @Offset3D ((pdstOffsets `advancePtrBytes` 12 :: Ptr Offset3D))+ pure $ ImageBlit+ srcSubresource ((srcOffsets0, srcOffsets1)) dstSubresource ((dstOffsets0, dstOffsets1))++instance Zero ImageBlit where+ zero = ImageBlit+ zero+ (zero, zero)+ zero+ (zero, zero)+++-- | VkBufferImageCopy - Structure specifying a buffer image copy operation+--+-- = Description+--+-- When copying to or from a depth or stencil aspect, the data in buffer+-- memory uses a layout that is a (mostly) tightly packed representation of+-- the depth or stencil data. Specifically:+--+-- - data copied to or from the stencil aspect of any depth\/stencil+-- format is tightly packed with one+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_S8_UINT' value per+-- texel.+--+-- - data copied to or from the depth aspect of a+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_D16_UNORM' or+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_D16_UNORM_S8_UINT'+-- format is tightly packed with one+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_D16_UNORM' value per+-- texel.+--+-- - data copied to or from the depth aspect of a+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_D32_SFLOAT' or+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_D32_SFLOAT_S8_UINT'+-- format is tightly packed with one+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_D32_SFLOAT' value per+-- texel.+--+-- - data copied to or from the depth aspect of a+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_X8_D24_UNORM_PACK32' or+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_D24_UNORM_S8_UINT'+-- format is packed with one 32-bit word per texel with the D24 value+-- in the LSBs of the word, and undefined values in the eight MSBs.+--+-- Note+--+-- To copy both the depth and stencil aspects of a depth\/stencil format,+-- two entries in @pRegions@ /can/ be used, where one specifies the depth+-- aspect in 'Graphics.Vulkan.Core10.Image.ImageSubresource', and the other+-- specifies the stencil aspect.+--+-- Because depth or stencil aspect buffer to image copies /may/ require+-- format conversions on some implementations, they are not supported on+-- queues that do not support graphics.+--+-- When copying to a depth aspect, and the+-- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_depth_range_unrestricted@+-- extension is not enabled, the data in buffer memory /must/ be in the+-- range [0,1], or the resulting values are undefined.+--+-- Copies are done layer by layer starting with image layer+-- @baseArrayLayer@ member of+-- 'Graphics.Vulkan.Core10.Image.ImageSubresource'. @layerCount@ layers are+-- copied from the source image or to the destination image.+--+-- == Valid Usage+--+-- - If the calling command’s 'Graphics.Vulkan.Core10.Handles.Image'+-- parameter’s format is not a depth\/stencil format or a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,+-- then @bufferOffset@ /must/ be a multiple of the format’s texel block+-- size.+--+-- - If the calling command’s 'Graphics.Vulkan.Core10.Handles.Image'+-- parameter’s format is a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,+-- then @bufferOffset@ /must/ be a multiple of the element size of the+-- compatible format for the format and the @aspectMask@ of the+-- 'Graphics.Vulkan.Core10.Image.ImageSubresource' as defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes>+--+-- - @bufferOffset@ /must/ be a multiple of @4@+--+-- - @bufferRowLength@ /must/ be @0@, or greater than or equal to the+-- @width@ member of @imageExtent@+--+-- - @bufferImageHeight@ /must/ be @0@, or greater than or equal to the+-- @height@ member of @imageExtent@+--+-- - @imageOffset.x@ and (@imageExtent.width@ + @imageOffset.x@) /must/+-- both be greater than or equal to @0@ and less than or equal to the+-- image subresource width where this refers to the width of the+-- /plane/ of the image involved in the copy in the case of a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>+--+-- - @imageOffset.y@ and (imageExtent.height + @imageOffset.y@) /must/+-- both be greater than or equal to @0@ and less than or equal to the+-- image subresource height where this refers to the height of the+-- /plane/ of the image involved in the copy in the case of a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>+--+-- - If the calling command’s @srcImage@ ('cmdCopyImageToBuffer') or+-- @dstImage@ ('cmdCopyBufferToImage') is of type+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then+-- @imageOffset.y@ /must/ be @0@ and @imageExtent.height@ /must/ be+-- @1@.+--+-- - @imageOffset.z@ and (imageExtent.depth + @imageOffset.z@) /must/+-- both be greater than or equal to @0@ and less than or equal to the+-- image subresource depth+--+-- - If the calling command’s @srcImage@ ('cmdCopyImageToBuffer') or+-- @dstImage@ ('cmdCopyBufferToImage') is of type+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then+-- @imageOffset.z@ /must/ be @0@ and @imageExtent.depth@ /must/ be @1@+--+-- - If the calling command’s 'Graphics.Vulkan.Core10.Handles.Image'+-- parameter is a compressed image, or a /single-plane/, “@_422@” image+-- format, @bufferRowLength@ /must/ be a multiple of the compressed+-- texel block width+--+-- - If the calling command’s 'Graphics.Vulkan.Core10.Handles.Image'+-- parameter is a compressed image, or a /single-plane/, “@_422@” image+-- format, @bufferImageHeight@ /must/ be a multiple of the compressed+-- texel block height+--+-- - If the calling command’s 'Graphics.Vulkan.Core10.Handles.Image'+-- parameter is a compressed image, or a /single-plane/, “@_422@” image+-- format, all members of @imageOffset@ /must/ be a multiple of the+-- corresponding dimensions of the compressed texel block+--+-- - If the calling command’s 'Graphics.Vulkan.Core10.Handles.Image'+-- parameter is a compressed image, or a /single-plane/, “@_422@” image+-- format, @bufferOffset@ /must/ be a multiple of the compressed texel+-- block size in bytes+--+-- - If the calling command’s 'Graphics.Vulkan.Core10.Handles.Image'+-- parameter is a compressed image, or a /single-plane/, “@_422@” image+-- format, @imageExtent.width@ /must/ be a multiple of the compressed+-- texel block width or (@imageExtent.width@ + @imageOffset.x@) /must/+-- equal the image subresource width+--+-- - If the calling command’s 'Graphics.Vulkan.Core10.Handles.Image'+-- parameter is a compressed image, or a /single-plane/, “@_422@” image+-- format, @imageExtent.height@ /must/ be a multiple of the compressed+-- texel block height or (@imageExtent.height@ + @imageOffset.y@)+-- /must/ equal the image subresource height+--+-- - If the calling command’s 'Graphics.Vulkan.Core10.Handles.Image'+-- parameter is a compressed image, or a /single-plane/, “@_422@” image+-- format, @imageExtent.depth@ /must/ be a multiple of the compressed+-- texel block depth or (@imageExtent.depth@ + @imageOffset.z@) /must/+-- equal the image subresource depth+--+-- - The @aspectMask@ member of+-- 'Graphics.Vulkan.Core10.Image.ImageSubresource' /must/ specify+-- aspects present in the calling command’s+-- 'Graphics.Vulkan.Core10.Handles.Image' parameter+--+-- - If the calling command’s 'Graphics.Vulkan.Core10.Handles.Image'+-- parameter’s format is a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,+-- then the @aspectMask@ member of+-- 'Graphics.Vulkan.Core10.Image.ImageSubresource' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+-- (with+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+-- valid only for image formats with three planes)+--+-- - The @aspectMask@ member of+-- 'Graphics.Vulkan.Core10.Image.ImageSubresource' /must/ only have a+-- single bit set+--+-- - If the calling command’s 'Graphics.Vulkan.Core10.Handles.Image'+-- parameter is of 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType'+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', the+-- @baseArrayLayer@ and @layerCount@ members of+-- 'Graphics.Vulkan.Core10.Image.ImageSubresource' /must/ be @0@ and+-- @1@, respectively+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Image.ImageSubresource' /must/ be a valid+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceLayers'+-- structure+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent3D',+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceLayers',+-- 'Graphics.Vulkan.Core10.SharedTypes.Offset3D', 'cmdCopyBufferToImage',+-- 'cmdCopyImageToBuffer'+data BufferImageCopy = BufferImageCopy+ { -- | @bufferOffset@ is the offset in bytes from the start of the buffer+ -- object where the image data is copied from or to.+ bufferOffset :: DeviceSize+ , -- | @bufferRowLength@ and @bufferImageHeight@ specify in texels a subregion+ -- of a larger two- or three-dimensional image in buffer memory, and+ -- control the addressing calculations. If either of these values is zero,+ -- that aspect of the buffer memory is considered to be tightly packed+ -- according to the @imageExtent@.+ bufferRowLength :: Word32+ , -- No documentation found for Nested "VkBufferImageCopy" "bufferImageHeight"+ bufferImageHeight :: Word32+ , -- | 'Graphics.Vulkan.Core10.Image.ImageSubresource' is a+ -- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceLayers' used to+ -- specify the specific image subresources of the image used for the source+ -- or destination image data.+ imageSubresource :: ImageSubresourceLayers+ , -- | @imageOffset@ selects the initial @x@, @y@, @z@ offsets in texels of the+ -- sub-region of the source or destination image data.+ imageOffset :: Offset3D+ , -- | @imageExtent@ is the size in texels of the image to copy in @width@,+ -- @height@ and @depth@.+ imageExtent :: Extent3D+ }+ deriving (Typeable)+deriving instance Show BufferImageCopy++instance ToCStruct BufferImageCopy where+ withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p BufferImageCopy{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (bufferOffset)+ lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (bufferRowLength)+ lift $ poke ((p `plusPtr` 12 :: Ptr Word32)) (bufferImageHeight)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (imageSubresource) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr Offset3D)) (imageOffset) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr Extent3D)) (imageExtent) . ($ ())+ lift $ f+ cStructSize = 56+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (zero)+ lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr Offset3D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr Extent3D)) (zero) . ($ ())+ lift $ f++instance FromCStruct BufferImageCopy where+ peekCStruct p = do+ bufferOffset <- peek @DeviceSize ((p `plusPtr` 0 :: Ptr DeviceSize))+ bufferRowLength <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ bufferImageHeight <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))+ imageSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers))+ imageOffset <- peekCStruct @Offset3D ((p `plusPtr` 32 :: Ptr Offset3D))+ imageExtent <- peekCStruct @Extent3D ((p `plusPtr` 44 :: Ptr Extent3D))+ pure $ BufferImageCopy+ bufferOffset bufferRowLength bufferImageHeight imageSubresource imageOffset imageExtent++instance Zero BufferImageCopy where+ zero = BufferImageCopy+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkImageResolve - Structure specifying an image resolve operation+--+-- == Valid Usage+--+-- - The @aspectMask@ member of @srcSubresource@ and @dstSubresource@+-- /must/ only contain+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'+--+-- - The @layerCount@ member of @srcSubresource@ and @dstSubresource@+-- /must/ match+--+-- - If either of the calling command’s @srcImage@ or @dstImage@+-- parameters are of 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType'+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', the+-- @baseArrayLayer@ and @layerCount@ members of both @srcSubresource@+-- and @dstSubresource@ /must/ be @0@ and @1@, respectively+--+-- - @srcOffset.x@ and (@extent.width@ + @srcOffset.x@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the source+-- image subresource width+--+-- - @srcOffset.y@ and (@extent.height@ + @srcOffset.y@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the source+-- image subresource height+--+-- - If the calling command’s @srcImage@ is of type+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then+-- @srcOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@.+--+-- - @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the source+-- image subresource depth+--+-- - If the calling command’s @srcImage@ is of type+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then+-- @srcOffset.z@ /must/ be @0@ and @extent.depth@ /must/ be @1@.+--+-- - @dstOffset.x@ and (@extent.width@ + @dstOffset.x@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the+-- destination image subresource width+--+-- - @dstOffset.y@ and (@extent.height@ + @dstOffset.y@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the+-- destination image subresource height+--+-- - If the calling command’s @dstImage@ is of type+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then+-- @dstOffset.y@ /must/ be @0@ and @extent.height@ /must/ be @1@.+--+-- - @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@) /must/ both be+-- greater than or equal to @0@ and less than or equal to the+-- destination image subresource depth+--+-- - If the calling command’s @dstImage@ is of type+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then+-- @dstOffset.z@ /must/ be @0@ and @extent.depth@ /must/ be @1@.+--+-- == Valid Usage (Implicit)+--+-- - @srcSubresource@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceLayers'+-- structure+--+-- - @dstSubresource@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceLayers'+-- structure+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent3D',+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceLayers',+-- 'Graphics.Vulkan.Core10.SharedTypes.Offset3D', 'cmdResolveImage'+data ImageResolve = ImageResolve+ { -- | @srcSubresource@ and @dstSubresource@ are+ -- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceLayers' structures+ -- specifying the image subresources of the images used for the source and+ -- destination image data, respectively. Resolve of depth\/stencil images+ -- is not supported.+ srcSubresource :: ImageSubresourceLayers+ , -- | @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets+ -- in texels of the sub-regions of the source and destination image data.+ srcOffset :: Offset3D+ , -- No documentation found for Nested "VkImageResolve" "dstSubresource"+ dstSubresource :: ImageSubresourceLayers+ , -- No documentation found for Nested "VkImageResolve" "dstOffset"+ dstOffset :: Offset3D+ , -- | @extent@ is the size in texels of the source image to resolve in+ -- @width@, @height@ and @depth@.+ extent :: Extent3D+ }+ deriving (Typeable)+deriving instance Show ImageResolve++instance ToCStruct ImageResolve where+ withCStruct x f = allocaBytesAligned 68 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageResolve{..} f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (srcSubresource) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Offset3D)) (srcOffset) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) (dstSubresource) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr Offset3D)) (dstOffset) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr Extent3D)) (extent) . ($ ())+ lift $ f+ cStructSize = 68+ cStructAlignment = 4+ pokeZeroCStruct p f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Offset3D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr Offset3D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr Extent3D)) (zero) . ($ ())+ lift $ f++instance FromCStruct ImageResolve where+ peekCStruct p = do+ srcSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers))+ srcOffset <- peekCStruct @Offset3D ((p `plusPtr` 16 :: Ptr Offset3D))+ dstSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers))+ dstOffset <- peekCStruct @Offset3D ((p `plusPtr` 44 :: Ptr Offset3D))+ extent <- peekCStruct @Extent3D ((p `plusPtr` 56 :: Ptr Extent3D))+ pure $ ImageResolve+ srcSubresource srcOffset dstSubresource dstOffset extent++instance Zero ImageResolve where+ zero = ImageResolve+ zero+ zero+ zero+ zero+ zero+++-- | VkRenderPassBeginInfo - Structure specifying render pass begin info+--+-- = Description+--+-- @renderArea@ is the render area that is affected by the render pass+-- instance. The effects of attachment load, store and multisample resolve+-- operations are restricted to the pixels whose x and y coordinates fall+-- within the render area on all attachments. The render area extends to+-- all layers of 'Graphics.Vulkan.Core10.Handles.Framebuffer'. The+-- application /must/ ensure (using scissor if necessary) that all+-- rendering is contained within the render area. The render area, after+-- any transform specified by+-- 'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'::@transform@+-- is applied, /must/ be contained within the framebuffer dimensions.+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>+-- is enabled, then @renderArea@ must equal the framebuffer pre-transformed+-- dimensions. After @renderArea@ has been transformed by+-- 'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'::@transform@,+-- the resulting render area /must/ be equal to the framebuffer dimensions.+--+-- When multiview is enabled, the resolve operation at the end of a subpass+-- applies to all views in the view mask.+--+-- Note+--+-- There /may/ be a performance cost for using a render area smaller than+-- the framebuffer, unless it matches the render area granularity for the+-- render pass.+--+-- == Valid Usage+--+-- - @clearValueCount@ /must/ be greater than the largest attachment+-- index in 'Graphics.Vulkan.Core10.Handles.RenderPass' that specifies+-- a @loadOp@ (or @stencilLoadOp@, if the attachment has a+-- depth\/stencil format) of+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'+--+-- - 'Graphics.Vulkan.Core10.Handles.RenderPass' /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>+-- with the 'Graphics.Vulkan.Core10.Handles.RenderPass' member of the+-- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo' structure+-- specified when creating 'Graphics.Vulkan.Core10.Handles.Framebuffer'+--+-- - If the @pNext@ chain does not contain+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'+-- or its @deviceRenderAreaCount@ member is equal to 0,+-- @renderArea.offset.x@ /must/ be greater than or equal to 0+--+-- - If the @pNext@ chain does not contain+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'+-- or its @deviceRenderAreaCount@ member is equal to 0,+-- @renderArea.offset.y@ /must/ be greater than or equal to 0+--+-- - If the @pNext@ chain does not contain+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'+-- or its @deviceRenderAreaCount@ member is equal to 0,+-- @renderArea.offset.x@ + @renderArea.offset.width@ /must/ be less+-- than or equal to+-- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo'::@width@ the+-- 'Graphics.Vulkan.Core10.Handles.Framebuffer' was created with+--+-- - If the @pNext@ chain does not contain+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'+-- or its @deviceRenderAreaCount@ member is equal to 0,+-- @renderArea.offset.y@ + @renderArea.offset.height@ /must/ be less+-- than or equal to+-- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo'::@height@ the+-- 'Graphics.Vulkan.Core10.Handles.Framebuffer' was created with+--+-- - If the @pNext@ chain contains+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',+-- the @offset.x@ member of each element of @pDeviceRenderAreas@ /must/+-- be greater than or equal to 0+--+-- - If the @pNext@ chain contains+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',+-- the @offset.y@ member of each element of @pDeviceRenderAreas@ /must/+-- be greater than or equal to 0+--+-- - If the @pNext@ chain contains+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',+-- @offset.x@ + @offset.width@ of each element of @pDeviceRenderAreas@+-- /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo'::@width@ the+-- 'Graphics.Vulkan.Core10.Handles.Framebuffer' was created with+--+-- - If the @pNext@ chain contains+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',+-- @offset.y@ + @offset.height@ of each element of @pDeviceRenderAreas@+-- /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo'::@height@ the+-- 'Graphics.Vulkan.Core10.Handles.Framebuffer' was created with+--+-- - If 'Graphics.Vulkan.Core10.Handles.Framebuffer' was created with a+-- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- value that did not include+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- and the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'+-- structure, its @attachmentCount@ /must/ be zero+--+-- - If 'Graphics.Vulkan.Core10.Handles.Framebuffer' was created with a+-- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- value that included+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- the @attachmentCount@ of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'+-- structure included in the @pNext@ chain /must/ be equal to the value+-- of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@attachmentImageInfoCount@+-- used to create 'Graphics.Vulkan.Core10.Handles.Framebuffer'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Framebuffer' was created with a+-- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- value that included+-- 'Graphics.Vulkan.Extensions.VK_KHR_imageless_framebuffer.FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR',+-- each element of the @pAttachments@ member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'+-- structure included in the @pNext@ chain /must/ have been created on+-- the same 'Graphics.Vulkan.Core10.Handles.Device' as+-- 'Graphics.Vulkan.Core10.Handles.Framebuffer' and+-- 'Graphics.Vulkan.Core10.Handles.RenderPass'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Framebuffer' was created with a+-- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- value that included+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- each element of the @pAttachments@ member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'+-- structure included in the @pNext@ chain /must/ be a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' of an image created with+-- a value of+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- equal to the 'Graphics.Vulkan.Core10.BaseType.Flags' member of the+-- corresponding element of+-- 'Graphics.Vulkan.Extensions.VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfoKHR'::@pAttachments@+-- used to create 'Graphics.Vulkan.Core10.Handles.Framebuffer'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Framebuffer' was created with a+-- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- value that included+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- each element of the @pAttachments@ member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'+-- structure included in the @pNext@ chain /must/ be a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' of an image created with+-- a value of 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@usage@+-- equal to the @usage@ member of the corresponding element of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachments@+-- used to create 'Graphics.Vulkan.Core10.Handles.Framebuffer'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Framebuffer' was created with a+-- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- value that included+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- each element of the @pAttachments@ member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'+-- structure included in the @pNext@ chain /must/ be a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' with a width equal to the+-- @width@ member of the corresponding element of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachments@+-- used to create 'Graphics.Vulkan.Core10.Handles.Framebuffer'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Framebuffer' was created with a+-- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- value that included+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- each element of the @pAttachments@ member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'+-- structure included in the @pNext@ chain /must/ be a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' with a height equal to+-- the @height@ member of the corresponding element of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachments@+-- used to create 'Graphics.Vulkan.Core10.Handles.Framebuffer'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Framebuffer' was created with a+-- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- value that included+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- each element of the @pAttachments@ member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'+-- structure included in the @pNext@ chain /must/ be a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' of an image created with+-- a value of+-- 'Graphics.Vulkan.Core10.ImageView.ImageViewCreateInfo'::@subresourceRange.layerCount@+-- equal to the @layerCount@ member of the corresponding element of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachments@+-- used to create 'Graphics.Vulkan.Core10.Handles.Framebuffer'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Framebuffer' was created with a+-- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- value that included+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- each element of the @pAttachments@ member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'+-- structure included in the @pNext@ chain /must/ be a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' of an image created with+-- a value of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@viewFormatCount@+-- equal to the @viewFormatCount@ member of the corresponding element+-- of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachments@+-- used to create 'Graphics.Vulkan.Core10.Handles.Framebuffer'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Framebuffer' was created with a+-- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- value that included+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- each element of the @pAttachments@ member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'+-- structure included in the @pNext@ chain /must/ be a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' of an image created with+-- a set of elements in+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@pViewFormats@+-- equal to the set of elements in the @pViewFormats@ member of the+-- corresponding element of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachments@+-- used to create 'Graphics.Vulkan.Core10.Handles.Framebuffer'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Framebuffer' was created with a+-- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- value that included+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- each element of the @pAttachments@ member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'+-- structure included in the @pNext@ chain /must/ be a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' of an image created with+-- a value of+-- 'Graphics.Vulkan.Core10.ImageView.ImageViewCreateInfo'::'Graphics.Vulkan.Core10.Enums.Format.Format'+-- equal to the corresponding value of+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription'::'Graphics.Vulkan.Core10.Enums.Format.Format'+-- in 'Graphics.Vulkan.Core10.Handles.RenderPass'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Framebuffer' was created with a+-- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- value that included+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- each element of the @pAttachments@ member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'+-- structure included in the @pNext@ chain /must/ be a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' of an image created with+-- a value of 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@samples@+-- equal to the corresponding value of+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription'::@samples@ in+-- 'Graphics.Vulkan.Core10.Handles.RenderPass'+--+-- - If the @pNext@ chain includes+-- 'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM',+-- @renderArea@::@offset@ /must/ equal (0,0).+--+-- - If the @pNext@ chain includes+-- 'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM',+-- @renderArea@::@extent@ transformed by+-- 'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'::@transform@+-- /must/ equal the 'Graphics.Vulkan.Core10.Handles.Framebuffer'+-- dimensions.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.RenderPassSampleLocationsBeginInfoEXT',+-- or+-- 'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.Handles.RenderPass' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.Framebuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Framebuffer' handle+--+-- - If @clearValueCount@ is not @0@, @pClearValues@ /must/ be a valid+-- pointer to an array of @clearValueCount@+-- 'Graphics.Vulkan.Core10.SharedTypes.ClearValue' unions+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.Framebuffer', and+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' /must/ have been+-- created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.SharedTypes.ClearValue',+-- 'Graphics.Vulkan.Core10.Handles.Framebuffer', 'Rect2D',+-- 'Graphics.Vulkan.Core10.Handles.RenderPass',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'cmdBeginRenderPass',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdBeginRenderPass2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_create_renderpass2.cmdBeginRenderPass2KHR'+data RenderPassBeginInfo (es :: [Type]) = RenderPassBeginInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.Handles.RenderPass' is the render pass to begin+ -- an instance of.+ renderPass :: RenderPass+ , -- | 'Graphics.Vulkan.Core10.Handles.Framebuffer' is the framebuffer+ -- containing the attachments that are used with the render pass.+ framebuffer :: Framebuffer+ , -- | @renderArea@ is the render area that is affected by the render pass+ -- instance, and is described in more detail below.+ renderArea :: Rect2D+ , -- | @pClearValues@ is a pointer to an array of @clearValueCount@+ -- 'Graphics.Vulkan.Core10.SharedTypes.ClearValue' structures that contains+ -- clear values for each attachment, if the attachment uses a @loadOp@+ -- value of+ -- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'+ -- or if the attachment has a depth\/stencil format and uses a+ -- @stencilLoadOp@ value of+ -- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'.+ -- The array is indexed by attachment number. Only elements corresponding+ -- to cleared attachments are used. Other elements of @pClearValues@ are+ -- ignored.+ clearValues :: Vector ClearValue+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (RenderPassBeginInfo es)++instance Extensible RenderPassBeginInfo where+ extensibleType = STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO+ setNext x next = x{next = next}+ getNext RenderPassBeginInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends RenderPassBeginInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @RenderPassTransformBeginInfoQCOM = Just f+ | Just Refl <- eqT @e @RenderPassAttachmentBeginInfo = Just f+ | Just Refl <- eqT @e @RenderPassSampleLocationsBeginInfoEXT = Just f+ | Just Refl <- eqT @e @DeviceGroupRenderPassBeginInfo = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (RenderPassBeginInfo es) where+ withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p RenderPassBeginInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr RenderPass)) (renderPass)+ lift $ poke ((p `plusPtr` 24 :: Ptr Framebuffer)) (framebuffer)+ ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr Rect2D)) (renderArea) . ($ ())+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (clearValues)) :: Word32))+ pPClearValues' <- ContT $ allocaBytesAligned @ClearValue ((Data.Vector.length (clearValues)) * 16) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPClearValues' `plusPtr` (16 * (i)) :: Ptr ClearValue) (e) . ($ ())) (clearValues)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr ClearValue))) (pPClearValues')+ lift $ f+ cStructSize = 64+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 16 :: Ptr RenderPass)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr Framebuffer)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr Rect2D)) (zero) . ($ ())+ pPClearValues' <- ContT $ allocaBytesAligned @ClearValue ((Data.Vector.length (mempty)) * 16) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPClearValues' `plusPtr` (16 * (i)) :: Ptr ClearValue) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr ClearValue))) (pPClearValues')+ lift $ f++instance es ~ '[] => Zero (RenderPassBeginInfo es) where+ zero = RenderPassBeginInfo+ ()+ zero+ zero+ zero+ mempty+++-- | VkClearAttachment - Structure specifying a clear attachment+--+-- = Description+--+-- No memory barriers are needed between 'cmdClearAttachments' and+-- preceding or subsequent draw or attachment clear commands in the same+-- subpass.+--+-- The 'cmdClearAttachments' command is not affected by the bound pipeline+-- state.+--+-- Attachments /can/ also be cleared at the beginning of a render pass+-- instance by setting @loadOp@ (or @stencilLoadOp@) of+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription' to+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR',+-- as described for 'Graphics.Vulkan.Core10.Pass.createRenderPass'.+--+-- == Valid Usage+--+-- - If @aspectMask@ includes+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',+-- it /must/ not include+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+--+-- - @aspectMask@ /must/ not include+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_METADATA_BIT'+--+-- - @aspectMask@ /must/ not include+-- @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ for any index @i@.+--+-- - 'Graphics.Vulkan.Core10.SharedTypes.ClearValue' /must/ be a valid+-- 'Graphics.Vulkan.Core10.SharedTypes.ClearValue' union+--+-- == Valid Usage (Implicit)+--+-- - @aspectMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits'+-- values+--+-- - @aspectMask@ /must/ not be @0@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.SharedTypes.ClearValue',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags',+-- 'cmdClearAttachments'+data ClearAttachment = ClearAttachment+ { -- | @aspectMask@ is a mask selecting the color, depth and\/or stencil+ -- aspects of the attachment to be cleared.+ aspectMask :: ImageAspectFlags+ , -- | @colorAttachment@ is only meaningful if+ -- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'+ -- is set in @aspectMask@, in which case it is an index to the+ -- @pColorAttachments@ array in the+ -- 'Graphics.Vulkan.Core10.Pass.SubpassDescription' structure of the+ -- current subpass which selects the color attachment to clear.+ colorAttachment :: Word32+ , -- | 'Graphics.Vulkan.Core10.SharedTypes.ClearValue' is the color or+ -- depth\/stencil value to clear the attachment to, as described in+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears-values Clear Values>+ -- below.+ clearValue :: ClearValue+ }+ deriving (Typeable)+deriving instance Show ClearAttachment++instance ToCStruct ClearAttachment where+ withCStruct x f = allocaBytesAligned 24 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ClearAttachment{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (aspectMask)+ lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (colorAttachment)+ ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr ClearValue)) (clearValue) . ($ ())+ lift $ f+ cStructSize = 24+ cStructAlignment = 4+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (zero)+ lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr ClearValue)) (zero) . ($ ())+ lift $ f++instance Zero ClearAttachment where+ zero = ClearAttachment+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core10/CommandBufferBuilding.hs-boot view
@@ -0,0 +1,94 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.CommandBufferBuilding ( BufferCopy+ , BufferImageCopy+ , ClearAttachment+ , ClearRect+ , ImageBlit+ , ImageCopy+ , ImageResolve+ , Rect2D+ , RenderPassBeginInfo+ , Viewport+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+data BufferCopy++instance ToCStruct BufferCopy+instance Show BufferCopy++instance FromCStruct BufferCopy+++data BufferImageCopy++instance ToCStruct BufferImageCopy+instance Show BufferImageCopy++instance FromCStruct BufferImageCopy+++data ClearAttachment++instance ToCStruct ClearAttachment+instance Show ClearAttachment+++data ClearRect++instance ToCStruct ClearRect+instance Show ClearRect++instance FromCStruct ClearRect+++data ImageBlit++instance ToCStruct ImageBlit+instance Show ImageBlit++instance FromCStruct ImageBlit+++data ImageCopy++instance ToCStruct ImageCopy+instance Show ImageCopy++instance FromCStruct ImageCopy+++data ImageResolve++instance ToCStruct ImageResolve+instance Show ImageResolve++instance FromCStruct ImageResolve+++data Rect2D++instance ToCStruct Rect2D+instance Show Rect2D++instance FromCStruct Rect2D+++type role RenderPassBeginInfo nominal+data RenderPassBeginInfo (es :: [Type])++instance PokeChain es => ToCStruct (RenderPassBeginInfo es)+instance Show (Chain es) => Show (RenderPassBeginInfo es)+++data Viewport++instance ToCStruct Viewport+instance Show Viewport++instance FromCStruct Viewport+
src/Graphics/Vulkan/Core10/CommandPool.hs view
@@ -1,414 +1,394 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.CommandPool- ( VkCommandPoolCreateFlagBits(..)- , pattern VK_COMMAND_POOL_CREATE_TRANSIENT_BIT- , pattern VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT- , VkCommandPoolResetFlagBits(..)- , pattern VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT- , VkCommandPool- , vkCreateCommandPool- , vkDestroyCommandPool- , vkResetCommandPool- , VkCommandPoolCreateInfo(..)- , VkCommandPoolCreateFlags- , VkCommandPoolResetFlags- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- )----- ** VkCommandPoolCreateFlagBits---- | VkCommandPoolCreateFlagBits - Bitmask specifying usage behavior for a--- command pool------ = See Also------ 'VkCommandPoolCreateFlags'-newtype VkCommandPoolCreateFlagBits = VkCommandPoolCreateFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkCommandPoolCreateFlagBits where- showsPrec _ VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = showString "VK_COMMAND_POOL_CREATE_TRANSIENT_BIT"- showsPrec _ VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = showString "VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkCommandPoolCreateFlagBits 0x00000004) = showString "VK_COMMAND_POOL_CREATE_PROTECTED_BIT"- showsPrec p (VkCommandPoolCreateFlagBits x) = showParen (p >= 11) (showString "VkCommandPoolCreateFlagBits " . showsPrec 11 x)--instance Read VkCommandPoolCreateFlagBits where- readPrec = parens ( choose [ ("VK_COMMAND_POOL_CREATE_TRANSIENT_BIT", pure VK_COMMAND_POOL_CREATE_TRANSIENT_BIT)- , ("VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT", pure VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_COMMAND_POOL_CREATE_PROTECTED_BIT", pure (VkCommandPoolCreateFlagBits 0x00000004))- ] +++- prec 10 (do- expectP (Ident "VkCommandPoolCreateFlagBits")- v <- step readPrec- pure (VkCommandPoolCreateFlagBits v)- )- )---- | @VK_COMMAND_POOL_CREATE_TRANSIENT_BIT@ specifies that command buffers--- allocated from the pool will be short-lived, meaning that they will be--- reset or freed in a relatively short timeframe. This flag /may/ be used--- by the implementation to control memory allocation behavior within the--- pool.-pattern VK_COMMAND_POOL_CREATE_TRANSIENT_BIT :: VkCommandPoolCreateFlagBits-pattern VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = VkCommandPoolCreateFlagBits 0x00000001---- | @VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT@ allows any command--- buffer allocated from a pool to be individually reset to the [initial--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle);--- either by calling--- 'Graphics.Vulkan.Core10.CommandBuffer.vkResetCommandBuffer', or via the--- implicit reset when calling--- 'Graphics.Vulkan.Core10.CommandBuffer.vkBeginCommandBuffer'. If this--- flag is not set on a pool, then @vkResetCommandBuffer@ /must/ not be--- called for any command buffer allocated from that pool.-pattern VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT :: VkCommandPoolCreateFlagBits-pattern VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = VkCommandPoolCreateFlagBits 0x00000002--- ** VkCommandPoolResetFlagBits---- | VkCommandPoolResetFlagBits - Bitmask controlling behavior of a command--- pool reset------ = See Also------ 'VkCommandPoolResetFlags'-newtype VkCommandPoolResetFlagBits = VkCommandPoolResetFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkCommandPoolResetFlagBits where- showsPrec _ VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = showString "VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"- showsPrec p (VkCommandPoolResetFlagBits x) = showParen (p >= 11) (showString "VkCommandPoolResetFlagBits " . showsPrec 11 x)+module Graphics.Vulkan.Core10.CommandPool ( createCommandPool+ , withCommandPool+ , destroyCommandPool+ , resetCommandPool+ , CommandPoolCreateInfo(..)+ ) where -instance Read VkCommandPoolResetFlagBits where- readPrec = parens ( choose [ ("VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT", pure VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT)- ] +++- prec 10 (do- expectP (Ident "VkCommandPoolResetFlagBits")- v <- step readPrec- pure (VkCommandPoolResetFlagBits v)- )- )+import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.Handles (CommandPool)+import Graphics.Vulkan.Core10.Handles (CommandPool(..))+import Graphics.Vulkan.Core10.Enums.CommandPoolCreateFlagBits (CommandPoolCreateFlags)+import Graphics.Vulkan.Core10.Enums.CommandPoolResetFlagBits (CommandPoolResetFlags)+import Graphics.Vulkan.Core10.Enums.CommandPoolResetFlagBits (CommandPoolResetFlags)+import Graphics.Vulkan.Core10.Enums.CommandPoolResetFlagBits (CommandPoolResetFlagBits(..))+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateCommandPool))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyCommandPool))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkResetCommandPool))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateCommandPool+ :: FunPtr (Ptr Device_T -> Ptr CommandPoolCreateInfo -> Ptr AllocationCallbacks -> Ptr CommandPool -> IO Result) -> Ptr Device_T -> Ptr CommandPoolCreateInfo -> Ptr AllocationCallbacks -> Ptr CommandPool -> IO Result --- | @VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT@ specifies that resetting a--- command pool recycles all of the resources from the command pool back to--- the system.-pattern VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT :: VkCommandPoolResetFlagBits-pattern VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = VkCommandPoolResetFlagBits 0x00000001--- | Dummy data to tag the 'Ptr' with-data VkCommandPool_T--- | VkCommandPool - Opaque handle to a command pool object------ = See Also------ 'Graphics.Vulkan.Core10.CommandBuffer.VkCommandBufferAllocateInfo',--- 'vkCreateCommandPool', 'vkDestroyCommandPool',--- 'Graphics.Vulkan.Core10.CommandBuffer.vkFreeCommandBuffers',--- 'vkResetCommandPool',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance1.vkTrimCommandPool',--- 'Graphics.Vulkan.Extensions.VK_KHR_maintenance1.vkTrimCommandPoolKHR'-type VkCommandPool = Ptr VkCommandPool_T -- | vkCreateCommandPool - Create a new command pool object -- -- = Parameters ----- - @device@ is the logical device that creates the command pool.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the command pool. ----- - @pCreateInfo@ contains information used to create the command pool.+-- - @pCreateInfo@ is a pointer to a 'CommandPoolCreateInfo' structure+-- specifying the state of the command pool object. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. ----- - @pCommandPool@ points to a @VkCommandPool@ handle in which the+-- - @pCommandPool@ is a pointer to a+-- 'Graphics.Vulkan.Core10.Handles.CommandPool' handle in which the -- created pool is returned. --+-- == Valid Usage+--+-- - @pCreateInfo->queueFamilyIndex@ /must/ be the index of a queue+-- family available in the logical device+-- 'Graphics.Vulkan.Core10.Handles.Device'.+-- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle -- -- - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkCommandPoolCreateInfo@ structure+-- 'CommandPoolCreateInfo' structure -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - @pCommandPool@ /must/ be a valid pointer to a @VkCommandPool@ handle+-- - @pCommandPool@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.CommandPool' handle -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'VkCommandPool', 'VkCommandPoolCreateInfo',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.CommandPool', 'CommandPoolCreateInfo',+-- 'Graphics.Vulkan.Core10.Handles.Device'+createCommandPool :: Device -> CommandPoolCreateInfo -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (CommandPool)+createCommandPool device createInfo allocator = evalContT $ do+ let vkCreateCommandPool' = mkVkCreateCommandPool (pVkCreateCommandPool (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPCommandPool <- ContT $ bracket (callocBytes @CommandPool 8) free+ r <- lift $ vkCreateCommandPool' (deviceHandle (device)) pCreateInfo pAllocator (pPCommandPool)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pCommandPool <- lift $ peek @CommandPool pPCommandPool+ pure $ (pCommandPool)++-- | A safe wrapper for 'createCommandPool' and 'destroyCommandPool' using+-- 'bracket'+--+-- The allocated value must not be returned from the provided computation+withCommandPool :: Device -> CommandPoolCreateInfo -> Maybe AllocationCallbacks -> (CommandPool -> IO r) -> IO r+withCommandPool device commandPoolCreateInfo allocationCallbacks =+ bracket+ (createCommandPool device commandPoolCreateInfo allocationCallbacks)+ (\o -> destroyCommandPool device o allocationCallbacks)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkCreateCommandPool" vkCreateCommandPool :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkCommandPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCommandPool" ::: Ptr VkCommandPool) -> IO VkResult+ "dynamic" mkVkDestroyCommandPool+ :: FunPtr (Ptr Device_T -> CommandPool -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> CommandPool -> Ptr AllocationCallbacks -> IO ()+ -- | vkDestroyCommandPool - Destroy a command pool object -- -- = Parameters ----- - @device@ is the logical device that destroys the command pool.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the command pool. ----- - @commandPool@ is the handle of the command pool to destroy.+-- - 'Graphics.Vulkan.Core10.Handles.CommandPool' is the handle of the+-- command pool to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. -- -- = Description -- -- When a pool is destroyed, all command buffers allocated from the pool -- are--- [freed](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkFreeCommandBuffers).+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkFreeCommandBuffers freed>. ----- Any primary command buffer allocated from another 'VkCommandPool' that--- is in the [recording or executable--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)--- and has a secondary command buffer allocated from @commandPool@ recorded--- into it, becomes--- [invalid](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).+-- Any primary command buffer allocated from another+-- 'Graphics.Vulkan.Core10.Handles.CommandPool' that is in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording or executable state>+-- and has a secondary command buffer allocated from+-- 'Graphics.Vulkan.Core10.Handles.CommandPool' recorded into it, becomes+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>. -- -- == Valid Usage ----- - All @VkCommandBuffer@ objects allocated from @commandPool@ /must/--- not be in the [pending--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).+-- - All 'Graphics.Vulkan.Core10.Handles.CommandBuffer' objects allocated+-- from 'Graphics.Vulkan.Core10.Handles.CommandPool' /must/ not be in+-- the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>. ----- - If @VkAllocationCallbacks@ were provided when @commandPool@ was+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.CommandPool' was -- created, a compatible set of callbacks /must/ be provided here ----- - If no @VkAllocationCallbacks@ were provided when @commandPool@ was+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.CommandPool' was -- created, @pAllocator@ /must/ be @NULL@ -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - If @commandPool@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @commandPool@--- /must/ be a valid @VkCommandPool@ handle+-- - If 'Graphics.Vulkan.Core10.Handles.CommandPool' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.CommandPool' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandPool' handle -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - If @commandPool@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@+-- - If 'Graphics.Vulkan.Core10.Handles.CommandPool' is a valid handle,+-- it /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization ----- - Host access to @commandPool@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandPool' /must/+-- be externally synchronized -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'VkCommandPool', 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.CommandPool',+-- 'Graphics.Vulkan.Core10.Handles.Device'+destroyCommandPool :: Device -> CommandPool -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyCommandPool device commandPool allocator = evalContT $ do+ let vkDestroyCommandPool' = mkVkDestroyCommandPool (pVkDestroyCommandPool (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyCommandPool' (deviceHandle (device)) (commandPool) pAllocator+ pure $ ()++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkDestroyCommandPool" vkDestroyCommandPool :: ("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()+ "dynamic" mkVkResetCommandPool+ :: FunPtr (Ptr Device_T -> CommandPool -> CommandPoolResetFlags -> IO Result) -> Ptr Device_T -> CommandPool -> CommandPoolResetFlags -> IO Result+ -- | vkResetCommandPool - Reset a command pool -- -- = Parameters ----- - @device@ is the logical device that owns the command pool.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the command pool. ----- - @commandPool@ is the command pool to reset.+-- - 'Graphics.Vulkan.Core10.Handles.CommandPool' is the command pool to+-- reset. ----- - @flags@ is a bitmask of 'VkCommandPoolResetFlagBits' controlling the--- reset operation.+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+-- 'Graphics.Vulkan.Core10.Enums.CommandPoolResetFlagBits.CommandPoolResetFlagBits'+-- controlling the reset operation. -- -- = Description -- -- Resetting a command pool recycles all of the resources from all of the -- command buffers allocated from the command pool back to the command -- pool. All command buffers that have been allocated from the command pool--- are put in the [initial--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).+-- are put in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>. ----- Any primary command buffer allocated from another 'VkCommandPool' that--- is in the [recording or executable--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)--- and has a secondary command buffer allocated from @commandPool@ recorded--- into it, becomes--- [invalid](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).+-- Any primary command buffer allocated from another+-- 'Graphics.Vulkan.Core10.Handles.CommandPool' that is in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording or executable state>+-- and has a secondary command buffer allocated from+-- 'Graphics.Vulkan.Core10.Handles.CommandPool' recorded into it, becomes+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>. -- -- == Valid Usage ----- - All @VkCommandBuffer@ objects allocated from @commandPool@ /must/--- not be in the [pending--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+-- - All 'Graphics.Vulkan.Core10.Handles.CommandBuffer' objects allocated+-- from 'Graphics.Vulkan.Core10.Handles.CommandPool' /must/ not be in+-- the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state> -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - @commandPool@ /must/ be a valid @VkCommandPool@ handle+-- - 'Graphics.Vulkan.Core10.Handles.CommandPool' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandPool' handle ----- - @flags@ /must/ be a valid combination of--- 'VkCommandPoolResetFlagBits' values+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.CommandPoolResetFlagBits.CommandPoolResetFlagBits'+-- values ----- - @commandPool@ /must/ have been created, allocated, or retrieved from--- @device@+-- - 'Graphics.Vulkan.Core10.Handles.CommandPool' /must/ have been+-- created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization ----- - Host access to @commandPool@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandPool' /must/+-- be externally synchronized -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'VkCommandPool', 'VkCommandPoolResetFlags',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkResetCommandPool" vkResetCommandPool :: ("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolResetFlags) -> IO VkResult+-- 'Graphics.Vulkan.Core10.Handles.CommandPool',+-- 'Graphics.Vulkan.Core10.Enums.CommandPoolResetFlagBits.CommandPoolResetFlags',+-- 'Graphics.Vulkan.Core10.Handles.Device'+resetCommandPool :: Device -> CommandPool -> CommandPoolResetFlags -> IO ()+resetCommandPool device commandPool flags = do+ let vkResetCommandPool' = mkVkResetCommandPool (pVkResetCommandPool (deviceCmds (device :: Device)))+ r <- vkResetCommandPool' (deviceHandle (device)) (commandPool) (flags)+ when (r < SUCCESS) (throwIO (VulkanException r))++ -- | VkCommandPoolCreateInfo - Structure specifying parameters of a newly -- created command pool -- -- == Valid Usage ----- - @queueFamilyIndex@ /must/ be the index of a queue family available--- in the calling command’s @device@ parameter+-- - If the protected memory feature is not enabled, the+-- 'Graphics.Vulkan.Core10.Enums.CommandPoolCreateFlagBits.COMMAND_POOL_CREATE_PROTECTED_BIT'+-- bit of 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not be set. -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO@+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO' -- -- - @pNext@ /must/ be @NULL@ ----- - @flags@ /must/ be a valid combination of--- 'VkCommandPoolCreateFlagBits' values+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.CommandPoolCreateFlagBits.CommandPoolCreateFlagBits'+-- values -- -- = See Also ----- 'VkCommandPoolCreateFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateCommandPool'-data VkCommandPoolCreateInfo = VkCommandPoolCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is a bitmask of 'VkCommandPoolCreateFlagBits' indicating usage- -- behavior for the pool and command buffers allocated from it.- vkFlags :: VkCommandPoolCreateFlags+-- 'Graphics.Vulkan.Core10.Enums.CommandPoolCreateFlagBits.CommandPoolCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createCommandPool'+data CommandPoolCreateInfo = CommandPoolCreateInfo+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.CommandPoolCreateFlagBits.CommandPoolCreateFlagBits'+ -- indicating usage behavior for the pool and command buffers allocated+ -- from it.+ flags :: CommandPoolCreateFlags , -- | @queueFamilyIndex@ designates a queue family as described in section- -- [Queue Family- -- Properties](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-queueprops).- -- All command buffers allocated from this command pool /must/ be submitted- -- on queues from the same queue family.- vkQueueFamilyIndex :: Word32+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-queueprops Queue Family Properties>.+ -- All command buffers allocated from this command pool /must/ be submitted+ -- on queues from the same queue family.+ queueFamilyIndex :: Word32 }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show CommandPoolCreateInfo -instance Storable VkCommandPoolCreateInfo where+instance ToCStruct CommandPoolCreateInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p CommandPoolCreateInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr CommandPoolCreateFlags)) (flags)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (queueFamilyIndex)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ f++instance FromCStruct CommandPoolCreateInfo where+ peekCStruct p = do+ flags <- peek @CommandPoolCreateFlags ((p `plusPtr` 16 :: Ptr CommandPoolCreateFlags))+ queueFamilyIndex <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pure $ CommandPoolCreateInfo+ flags queueFamilyIndex++instance Storable CommandPoolCreateInfo where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkCommandPoolCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkCommandPoolCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkCommandPoolCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkCommandPoolCreateInfo))- *> poke (ptr `plusPtr` 20) (vkQueueFamilyIndex (poked :: VkCommandPoolCreateInfo))--- | VkCommandPoolCreateFlags - Bitmask of VkCommandPoolCreateFlagBits------ = Description------ @VkCommandPoolCreateFlags@ is a bitmask type for setting a mask of zero--- or more 'VkCommandPoolCreateFlagBits'.------ = See Also------ 'VkCommandPoolCreateFlagBits', 'VkCommandPoolCreateInfo'-type VkCommandPoolCreateFlags = VkCommandPoolCreateFlagBits--- | VkCommandPoolResetFlags - Bitmask of VkCommandPoolResetFlagBits------ = Description------ @VkCommandPoolResetFlags@ is a bitmask type for setting a mask of zero--- or more 'VkCommandPoolResetFlagBits'.------ = See Also------ 'VkCommandPoolResetFlagBits', 'vkResetCommandPool'-type VkCommandPoolResetFlags = VkCommandPoolResetFlagBits+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero CommandPoolCreateInfo where+ zero = CommandPoolCreateInfo+ zero+ zero+
+ src/Graphics/Vulkan/Core10/CommandPool.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.CommandPool (CommandPoolCreateInfo) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data CommandPoolCreateInfo++instance ToCStruct CommandPoolCreateInfo+instance Show CommandPoolCreateInfo++instance FromCStruct CommandPoolCreateInfo+
− src/Graphics/Vulkan/Core10/Constants.hs
@@ -1,115 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language ViewPatterns #-}-{-# language GeneralizedNewtypeDeriving #-}--module Graphics.Vulkan.Core10.Constants- ( pattern VK_NULL_HANDLE- , VkPipelineCacheHeaderVersion(..)- , pattern VK_PIPELINE_CACHE_HEADER_VERSION_ONE- , pattern VK_LOD_CLAMP_NONE- , pattern VK_REMAINING_MIP_LEVELS- , pattern VK_REMAINING_ARRAY_LAYERS- , pattern VK_WHOLE_SIZE- , pattern VK_ATTACHMENT_UNUSED- , pattern VK_QUEUE_FAMILY_IGNORED- , pattern VK_SUBPASS_EXTERNAL- ) where--import Data.Int- ( Int32- )-import Data.Word- ( Word32- , Word64- )-import Foreign.C.Types- ( CFloat- )-import Foreign.Ptr- ( Ptr- , nullPtr- )-import Foreign.Storable- ( Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )-------- | VK_NULL_HANDLE - Reserved non-valid object handle------ = See Also------ No cross-references are available-pattern VK_NULL_HANDLE :: Ptr a-pattern VK_NULL_HANDLE <- ((== nullPtr) -> True)- where VK_NULL_HANDLE = nullPtr--- ** VkPipelineCacheHeaderVersion---- | VkPipelineCacheHeaderVersion - Encode pipeline cache version------ = See Also------ 'Graphics.Vulkan.Core10.PipelineCache.vkCreatePipelineCache',--- 'Graphics.Vulkan.Core10.PipelineCache.vkGetPipelineCacheData'-newtype VkPipelineCacheHeaderVersion = VkPipelineCacheHeaderVersion Int32- deriving (Eq, Ord, Storable)--instance Show VkPipelineCacheHeaderVersion where- showsPrec _ VK_PIPELINE_CACHE_HEADER_VERSION_ONE = showString "VK_PIPELINE_CACHE_HEADER_VERSION_ONE"- showsPrec p (VkPipelineCacheHeaderVersion x) = showParen (p >= 11) (showString "VkPipelineCacheHeaderVersion " . showsPrec 11 x)--instance Read VkPipelineCacheHeaderVersion where- readPrec = parens ( choose [ ("VK_PIPELINE_CACHE_HEADER_VERSION_ONE", pure VK_PIPELINE_CACHE_HEADER_VERSION_ONE)- ] +++- prec 10 (do- expectP (Ident "VkPipelineCacheHeaderVersion")- v <- step readPrec- pure (VkPipelineCacheHeaderVersion v)- )- )---- | @VK_PIPELINE_CACHE_HEADER_VERSION_ONE@ specifies version one of the--- pipeline cache.-pattern VK_PIPELINE_CACHE_HEADER_VERSION_ONE :: VkPipelineCacheHeaderVersion-pattern VK_PIPELINE_CACHE_HEADER_VERSION_ONE = VkPipelineCacheHeaderVersion 1--- No documentation found for Nested "CFloat" "VK_LOD_CLAMP_NONE"-pattern VK_LOD_CLAMP_NONE :: CFloat-pattern VK_LOD_CLAMP_NONE = 1000.0--- No documentation found for Nested "Word32" "VK_REMAINING_MIP_LEVELS"-pattern VK_REMAINING_MIP_LEVELS :: Word32-pattern VK_REMAINING_MIP_LEVELS = 0xffffffff--- No documentation found for Nested "Word32" "VK_REMAINING_ARRAY_LAYERS"-pattern VK_REMAINING_ARRAY_LAYERS :: Word32-pattern VK_REMAINING_ARRAY_LAYERS = 0xffffffff--- No documentation found for Nested "Word64" "VK_WHOLE_SIZE"-pattern VK_WHOLE_SIZE :: Word64-pattern VK_WHOLE_SIZE = 0xffffffffffffffff--- No documentation found for Nested "Word32" "VK_ATTACHMENT_UNUSED"-pattern VK_ATTACHMENT_UNUSED :: Word32-pattern VK_ATTACHMENT_UNUSED = 0xffffffff--- No documentation found for Nested "Word32" "VK_QUEUE_FAMILY_IGNORED"-pattern VK_QUEUE_FAMILY_IGNORED :: Word32-pattern VK_QUEUE_FAMILY_IGNORED = 0xffffffff--- No documentation found for Nested "Word32" "VK_SUBPASS_EXTERNAL"-pattern VK_SUBPASS_EXTERNAL :: Word32-pattern VK_SUBPASS_EXTERNAL = 0xffffffff
− src/Graphics/Vulkan/Core10/Core.hs
@@ -1,3597 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}--module Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , pattern VK_FALSE- , pattern VK_TRUE- , VkFormat(..)- , pattern VK_FORMAT_UNDEFINED- , pattern VK_FORMAT_R4G4_UNORM_PACK8- , pattern VK_FORMAT_R4G4B4A4_UNORM_PACK16- , pattern VK_FORMAT_B4G4R4A4_UNORM_PACK16- , pattern VK_FORMAT_R5G6B5_UNORM_PACK16- , pattern VK_FORMAT_B5G6R5_UNORM_PACK16- , pattern VK_FORMAT_R5G5B5A1_UNORM_PACK16- , pattern VK_FORMAT_B5G5R5A1_UNORM_PACK16- , pattern VK_FORMAT_A1R5G5B5_UNORM_PACK16- , pattern VK_FORMAT_R8_UNORM- , pattern VK_FORMAT_R8_SNORM- , pattern VK_FORMAT_R8_USCALED- , pattern VK_FORMAT_R8_SSCALED- , pattern VK_FORMAT_R8_UINT- , pattern VK_FORMAT_R8_SINT- , pattern VK_FORMAT_R8_SRGB- , pattern VK_FORMAT_R8G8_UNORM- , pattern VK_FORMAT_R8G8_SNORM- , pattern VK_FORMAT_R8G8_USCALED- , pattern VK_FORMAT_R8G8_SSCALED- , pattern VK_FORMAT_R8G8_UINT- , pattern VK_FORMAT_R8G8_SINT- , pattern VK_FORMAT_R8G8_SRGB- , pattern VK_FORMAT_R8G8B8_UNORM- , pattern VK_FORMAT_R8G8B8_SNORM- , pattern VK_FORMAT_R8G8B8_USCALED- , pattern VK_FORMAT_R8G8B8_SSCALED- , pattern VK_FORMAT_R8G8B8_UINT- , pattern VK_FORMAT_R8G8B8_SINT- , pattern VK_FORMAT_R8G8B8_SRGB- , pattern VK_FORMAT_B8G8R8_UNORM- , pattern VK_FORMAT_B8G8R8_SNORM- , pattern VK_FORMAT_B8G8R8_USCALED- , pattern VK_FORMAT_B8G8R8_SSCALED- , pattern VK_FORMAT_B8G8R8_UINT- , pattern VK_FORMAT_B8G8R8_SINT- , pattern VK_FORMAT_B8G8R8_SRGB- , pattern VK_FORMAT_R8G8B8A8_UNORM- , pattern VK_FORMAT_R8G8B8A8_SNORM- , pattern VK_FORMAT_R8G8B8A8_USCALED- , pattern VK_FORMAT_R8G8B8A8_SSCALED- , pattern VK_FORMAT_R8G8B8A8_UINT- , pattern VK_FORMAT_R8G8B8A8_SINT- , pattern VK_FORMAT_R8G8B8A8_SRGB- , pattern VK_FORMAT_B8G8R8A8_UNORM- , pattern VK_FORMAT_B8G8R8A8_SNORM- , pattern VK_FORMAT_B8G8R8A8_USCALED- , pattern VK_FORMAT_B8G8R8A8_SSCALED- , pattern VK_FORMAT_B8G8R8A8_UINT- , pattern VK_FORMAT_B8G8R8A8_SINT- , pattern VK_FORMAT_B8G8R8A8_SRGB- , pattern VK_FORMAT_A8B8G8R8_UNORM_PACK32- , pattern VK_FORMAT_A8B8G8R8_SNORM_PACK32- , pattern VK_FORMAT_A8B8G8R8_USCALED_PACK32- , pattern VK_FORMAT_A8B8G8R8_SSCALED_PACK32- , pattern VK_FORMAT_A8B8G8R8_UINT_PACK32- , pattern VK_FORMAT_A8B8G8R8_SINT_PACK32- , pattern VK_FORMAT_A8B8G8R8_SRGB_PACK32- , pattern VK_FORMAT_A2R10G10B10_UNORM_PACK32- , pattern VK_FORMAT_A2R10G10B10_SNORM_PACK32- , pattern VK_FORMAT_A2R10G10B10_USCALED_PACK32- , pattern VK_FORMAT_A2R10G10B10_SSCALED_PACK32- , pattern VK_FORMAT_A2R10G10B10_UINT_PACK32- , pattern VK_FORMAT_A2R10G10B10_SINT_PACK32- , pattern VK_FORMAT_A2B10G10R10_UNORM_PACK32- , pattern VK_FORMAT_A2B10G10R10_SNORM_PACK32- , pattern VK_FORMAT_A2B10G10R10_USCALED_PACK32- , pattern VK_FORMAT_A2B10G10R10_SSCALED_PACK32- , pattern VK_FORMAT_A2B10G10R10_UINT_PACK32- , pattern VK_FORMAT_A2B10G10R10_SINT_PACK32- , pattern VK_FORMAT_R16_UNORM- , pattern VK_FORMAT_R16_SNORM- , pattern VK_FORMAT_R16_USCALED- , pattern VK_FORMAT_R16_SSCALED- , pattern VK_FORMAT_R16_UINT- , pattern VK_FORMAT_R16_SINT- , pattern VK_FORMAT_R16_SFLOAT- , pattern VK_FORMAT_R16G16_UNORM- , pattern VK_FORMAT_R16G16_SNORM- , pattern VK_FORMAT_R16G16_USCALED- , pattern VK_FORMAT_R16G16_SSCALED- , pattern VK_FORMAT_R16G16_UINT- , pattern VK_FORMAT_R16G16_SINT- , pattern VK_FORMAT_R16G16_SFLOAT- , pattern VK_FORMAT_R16G16B16_UNORM- , pattern VK_FORMAT_R16G16B16_SNORM- , pattern VK_FORMAT_R16G16B16_USCALED- , pattern VK_FORMAT_R16G16B16_SSCALED- , pattern VK_FORMAT_R16G16B16_UINT- , pattern VK_FORMAT_R16G16B16_SINT- , pattern VK_FORMAT_R16G16B16_SFLOAT- , pattern VK_FORMAT_R16G16B16A16_UNORM- , pattern VK_FORMAT_R16G16B16A16_SNORM- , pattern VK_FORMAT_R16G16B16A16_USCALED- , pattern VK_FORMAT_R16G16B16A16_SSCALED- , pattern VK_FORMAT_R16G16B16A16_UINT- , pattern VK_FORMAT_R16G16B16A16_SINT- , pattern VK_FORMAT_R16G16B16A16_SFLOAT- , pattern VK_FORMAT_R32_UINT- , pattern VK_FORMAT_R32_SINT- , pattern VK_FORMAT_R32_SFLOAT- , pattern VK_FORMAT_R32G32_UINT- , pattern VK_FORMAT_R32G32_SINT- , pattern VK_FORMAT_R32G32_SFLOAT- , pattern VK_FORMAT_R32G32B32_UINT- , pattern VK_FORMAT_R32G32B32_SINT- , pattern VK_FORMAT_R32G32B32_SFLOAT- , pattern VK_FORMAT_R32G32B32A32_UINT- , pattern VK_FORMAT_R32G32B32A32_SINT- , pattern VK_FORMAT_R32G32B32A32_SFLOAT- , pattern VK_FORMAT_R64_UINT- , pattern VK_FORMAT_R64_SINT- , pattern VK_FORMAT_R64_SFLOAT- , pattern VK_FORMAT_R64G64_UINT- , pattern VK_FORMAT_R64G64_SINT- , pattern VK_FORMAT_R64G64_SFLOAT- , pattern VK_FORMAT_R64G64B64_UINT- , pattern VK_FORMAT_R64G64B64_SINT- , pattern VK_FORMAT_R64G64B64_SFLOAT- , pattern VK_FORMAT_R64G64B64A64_UINT- , pattern VK_FORMAT_R64G64B64A64_SINT- , pattern VK_FORMAT_R64G64B64A64_SFLOAT- , pattern VK_FORMAT_B10G11R11_UFLOAT_PACK32- , pattern VK_FORMAT_E5B9G9R9_UFLOAT_PACK32- , pattern VK_FORMAT_D16_UNORM- , pattern VK_FORMAT_X8_D24_UNORM_PACK32- , pattern VK_FORMAT_D32_SFLOAT- , pattern VK_FORMAT_S8_UINT- , pattern VK_FORMAT_D16_UNORM_S8_UINT- , pattern VK_FORMAT_D24_UNORM_S8_UINT- , pattern VK_FORMAT_D32_SFLOAT_S8_UINT- , pattern VK_FORMAT_BC1_RGB_UNORM_BLOCK- , pattern VK_FORMAT_BC1_RGB_SRGB_BLOCK- , pattern VK_FORMAT_BC1_RGBA_UNORM_BLOCK- , pattern VK_FORMAT_BC1_RGBA_SRGB_BLOCK- , pattern VK_FORMAT_BC2_UNORM_BLOCK- , pattern VK_FORMAT_BC2_SRGB_BLOCK- , pattern VK_FORMAT_BC3_UNORM_BLOCK- , pattern VK_FORMAT_BC3_SRGB_BLOCK- , pattern VK_FORMAT_BC4_UNORM_BLOCK- , pattern VK_FORMAT_BC4_SNORM_BLOCK- , pattern VK_FORMAT_BC5_UNORM_BLOCK- , pattern VK_FORMAT_BC5_SNORM_BLOCK- , pattern VK_FORMAT_BC6H_UFLOAT_BLOCK- , pattern VK_FORMAT_BC6H_SFLOAT_BLOCK- , pattern VK_FORMAT_BC7_UNORM_BLOCK- , pattern VK_FORMAT_BC7_SRGB_BLOCK- , pattern VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK- , pattern VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK- , pattern VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK- , pattern VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK- , pattern VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK- , pattern VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK- , pattern VK_FORMAT_EAC_R11_UNORM_BLOCK- , pattern VK_FORMAT_EAC_R11_SNORM_BLOCK- , pattern VK_FORMAT_EAC_R11G11_UNORM_BLOCK- , pattern VK_FORMAT_EAC_R11G11_SNORM_BLOCK- , pattern VK_FORMAT_ASTC_4x4_UNORM_BLOCK- , pattern VK_FORMAT_ASTC_4x4_SRGB_BLOCK- , pattern VK_FORMAT_ASTC_5x4_UNORM_BLOCK- , pattern VK_FORMAT_ASTC_5x4_SRGB_BLOCK- , pattern VK_FORMAT_ASTC_5x5_UNORM_BLOCK- , pattern VK_FORMAT_ASTC_5x5_SRGB_BLOCK- , pattern VK_FORMAT_ASTC_6x5_UNORM_BLOCK- , pattern VK_FORMAT_ASTC_6x5_SRGB_BLOCK- , pattern VK_FORMAT_ASTC_6x6_UNORM_BLOCK- , pattern VK_FORMAT_ASTC_6x6_SRGB_BLOCK- , pattern VK_FORMAT_ASTC_8x5_UNORM_BLOCK- , pattern VK_FORMAT_ASTC_8x5_SRGB_BLOCK- , pattern VK_FORMAT_ASTC_8x6_UNORM_BLOCK- , pattern VK_FORMAT_ASTC_8x6_SRGB_BLOCK- , pattern VK_FORMAT_ASTC_8x8_UNORM_BLOCK- , pattern VK_FORMAT_ASTC_8x8_SRGB_BLOCK- , pattern VK_FORMAT_ASTC_10x5_UNORM_BLOCK- , pattern VK_FORMAT_ASTC_10x5_SRGB_BLOCK- , pattern VK_FORMAT_ASTC_10x6_UNORM_BLOCK- , pattern VK_FORMAT_ASTC_10x6_SRGB_BLOCK- , pattern VK_FORMAT_ASTC_10x8_UNORM_BLOCK- , pattern VK_FORMAT_ASTC_10x8_SRGB_BLOCK- , pattern VK_FORMAT_ASTC_10x10_UNORM_BLOCK- , pattern VK_FORMAT_ASTC_10x10_SRGB_BLOCK- , pattern VK_FORMAT_ASTC_12x10_UNORM_BLOCK- , pattern VK_FORMAT_ASTC_12x10_SRGB_BLOCK- , pattern VK_FORMAT_ASTC_12x12_UNORM_BLOCK- , pattern VK_FORMAT_ASTC_12x12_SRGB_BLOCK- , VkResult(..)- , pattern VK_SUCCESS- , pattern VK_NOT_READY- , pattern VK_TIMEOUT- , pattern VK_EVENT_SET- , pattern VK_EVENT_RESET- , pattern VK_INCOMPLETE- , pattern VK_ERROR_OUT_OF_HOST_MEMORY- , pattern VK_ERROR_OUT_OF_DEVICE_MEMORY- , pattern VK_ERROR_INITIALIZATION_FAILED- , pattern VK_ERROR_DEVICE_LOST- , pattern VK_ERROR_MEMORY_MAP_FAILED- , pattern VK_ERROR_LAYER_NOT_PRESENT- , pattern VK_ERROR_EXTENSION_NOT_PRESENT- , pattern VK_ERROR_FEATURE_NOT_PRESENT- , pattern VK_ERROR_INCOMPATIBLE_DRIVER- , pattern VK_ERROR_TOO_MANY_OBJECTS- , pattern VK_ERROR_FORMAT_NOT_SUPPORTED- , pattern VK_ERROR_FRAGMENTED_POOL- , VkStructureType(..)- , pattern VK_STRUCTURE_TYPE_APPLICATION_INFO- , pattern VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_SUBMIT_INFO- , pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO- , pattern VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE- , pattern VK_STRUCTURE_TYPE_BIND_SPARSE_INFO- , pattern VK_STRUCTURE_TYPE_FENCE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_EVENT_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO- , pattern VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET- , pattern VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET- , pattern VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO- , pattern VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO- , pattern VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO- , pattern VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO- , pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER- , pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER- , pattern VK_STRUCTURE_TYPE_MEMORY_BARRIER- , pattern VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO- , VkObjectType(..)- , pattern VK_OBJECT_TYPE_UNKNOWN- , pattern VK_OBJECT_TYPE_INSTANCE- , pattern VK_OBJECT_TYPE_PHYSICAL_DEVICE- , pattern VK_OBJECT_TYPE_DEVICE- , pattern VK_OBJECT_TYPE_QUEUE- , pattern VK_OBJECT_TYPE_SEMAPHORE- , pattern VK_OBJECT_TYPE_COMMAND_BUFFER- , pattern VK_OBJECT_TYPE_FENCE- , pattern VK_OBJECT_TYPE_DEVICE_MEMORY- , pattern VK_OBJECT_TYPE_BUFFER- , pattern VK_OBJECT_TYPE_IMAGE- , pattern VK_OBJECT_TYPE_EVENT- , pattern VK_OBJECT_TYPE_QUERY_POOL- , pattern VK_OBJECT_TYPE_BUFFER_VIEW- , pattern VK_OBJECT_TYPE_IMAGE_VIEW- , pattern VK_OBJECT_TYPE_SHADER_MODULE- , pattern VK_OBJECT_TYPE_PIPELINE_CACHE- , pattern VK_OBJECT_TYPE_PIPELINE_LAYOUT- , pattern VK_OBJECT_TYPE_RENDER_PASS- , pattern VK_OBJECT_TYPE_PIPELINE- , pattern VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT- , pattern VK_OBJECT_TYPE_SAMPLER- , pattern VK_OBJECT_TYPE_DESCRIPTOR_POOL- , pattern VK_OBJECT_TYPE_DESCRIPTOR_SET- , pattern VK_OBJECT_TYPE_FRAMEBUFFER- , pattern VK_OBJECT_TYPE_COMMAND_POOL- , VkFlags- ) where--import Data.Int- ( Int32- )-import Data.Word- ( Word32- )-import Foreign.Storable- ( Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )-------- ** VkBool32---- | VkBool32 - Vulkan boolean type------ = Description------ @VK_TRUE@ represents a boolean __True__ (integer 1) value, and--- @VK_FALSE@ a boolean __False__ (integer 0) value.------ All values returned from a Vulkan implementation in a @VkBool32@ will be--- either @VK_TRUE@ or @VK_FALSE@.------ Applications /must/ not pass any other values than @VK_TRUE@ or--- @VK_FALSE@ into a Vulkan implementation where a @VkBool32@ is expected.------ = See Also------ 'Graphics.Vulkan.Core10.CommandBuffer.VkCommandBufferInheritanceInfo',--- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationBufferCreateInfoNV',--- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationImageCreateInfoNV',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance3.VkDescriptorSetLayoutSupport',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkDeviceGeneratedCommandsFeaturesNVX',--- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.VkDisplayPresentInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayPropertiesKHR',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedRequirements',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_16bit_storage.VkPhysicalDevice16BitStorageFeatures',--- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization.VkPhysicalDeviceConservativeRasterizationPropertiesEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing.VkPhysicalDeviceDescriptorIndexingFeaturesEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing.VkPhysicalDeviceDescriptorIndexingPropertiesEXT',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceFeatures',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation.VkPhysicalDeviceGroupProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkPhysicalDeviceIDProperties',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceLimits',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview.VkPhysicalDeviceMultiviewFeatures',--- 'Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX',--- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory.VkPhysicalDeviceProtectedMemoryFeatures',--- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory.VkPhysicalDeviceProtectedMemoryProperties',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPhysicalDeviceSampleLocationsPropertiesEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax.VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkPhysicalDeviceSamplerYcbcrConversionFeatures',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_shader_draw_parameters.VkPhysicalDeviceShaderDrawParameterFeatures',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceSparseProperties',--- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_subgroup.VkPhysicalDeviceSubgroupProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_variable_pointers.VkPhysicalDeviceVariablePointerFeatures',--- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPipelineColorBlendAdvancedStateCreateInfoEXT',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineColorBlendAttachmentState',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineColorBlendStateCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.VkPipelineCoverageModulationStateCreateInfoNV',--- 'Graphics.Vulkan.Extensions.VK_NV_fragment_coverage_to_color.VkPipelineCoverageToColorStateCreateInfoNV',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineDepthStencilStateCreateInfo',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineInputAssemblyStateCreateInfo',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineMultisampleStateCreateInfo',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineRasterizationStateCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkPipelineViewportWScalingStateCreateInfoNV',--- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory.VkProtectedSubmitInfo',--- 'Graphics.Vulkan.Core10.Sampler.VkSamplerCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_AMD_texture_gather_bias_lod.VkTextureLODGatherFormatPropertiesAMD',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkGetPhysicalDeviceSurfaceSupportKHR',--- 'Graphics.Vulkan.Core10.Fence.vkWaitForFences'-newtype VkBool32 = VkBool32 Int32- deriving (Eq, Ord, Storable)--instance Show VkBool32 where- showsPrec _ VK_FALSE = showString "VK_FALSE"- showsPrec _ VK_TRUE = showString "VK_TRUE"- showsPrec p (VkBool32 x) = showParen (p >= 11) (showString "VkBool32 " . showsPrec 11 x)--instance Read VkBool32 where- readPrec = parens ( choose [ ("VK_FALSE", pure VK_FALSE)- , ("VK_TRUE", pure VK_TRUE)- ] +++- prec 10 (do- expectP (Ident "VkBool32")- v <- step readPrec- pure (VkBool32 v)- )- )---- No documentation found for Nested "VkBool32" "VK_FALSE"-pattern VK_FALSE :: VkBool32-pattern VK_FALSE = VkBool32 0---- No documentation found for Nested "VkBool32" "VK_TRUE"-pattern VK_TRUE :: VkBool32-pattern VK_TRUE = VkBool32 1--- ** VkFormat---- | VkFormat - Available image formats------ = See Also------ 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferFormatPropertiesANDROID',--- 'Graphics.Vulkan.Core10.Pass.VkAttachmentDescription',--- 'Graphics.Vulkan.Core10.BufferView.VkBufferViewCreateInfo',--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_KHR_image_format_list.VkImageFormatListCreateInfoKHR',--- 'Graphics.Vulkan.Core10.ImageView.VkImageViewCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceImageFormatInfo2',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceSparseImageFormatInfo2',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceFormatKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR',--- 'Graphics.Vulkan.Core10.Pipeline.VkVertexInputAttributeDescription',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.vkGetPhysicalDeviceExternalImageFormatPropertiesNV',--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceFormatProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceFormatProperties2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceFormatProperties2KHR',--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceImageFormatProperties',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetPhysicalDeviceSparseImageFormatProperties'-newtype VkFormat = VkFormat Int32- deriving (Eq, Ord, Storable)--instance Show VkFormat where- showsPrec _ VK_FORMAT_UNDEFINED = showString "VK_FORMAT_UNDEFINED"- showsPrec _ VK_FORMAT_R4G4_UNORM_PACK8 = showString "VK_FORMAT_R4G4_UNORM_PACK8"- showsPrec _ VK_FORMAT_R4G4B4A4_UNORM_PACK16 = showString "VK_FORMAT_R4G4B4A4_UNORM_PACK16"- showsPrec _ VK_FORMAT_B4G4R4A4_UNORM_PACK16 = showString "VK_FORMAT_B4G4R4A4_UNORM_PACK16"- showsPrec _ VK_FORMAT_R5G6B5_UNORM_PACK16 = showString "VK_FORMAT_R5G6B5_UNORM_PACK16"- showsPrec _ VK_FORMAT_B5G6R5_UNORM_PACK16 = showString "VK_FORMAT_B5G6R5_UNORM_PACK16"- showsPrec _ VK_FORMAT_R5G5B5A1_UNORM_PACK16 = showString "VK_FORMAT_R5G5B5A1_UNORM_PACK16"- showsPrec _ VK_FORMAT_B5G5R5A1_UNORM_PACK16 = showString "VK_FORMAT_B5G5R5A1_UNORM_PACK16"- showsPrec _ VK_FORMAT_A1R5G5B5_UNORM_PACK16 = showString "VK_FORMAT_A1R5G5B5_UNORM_PACK16"- showsPrec _ VK_FORMAT_R8_UNORM = showString "VK_FORMAT_R8_UNORM"- showsPrec _ VK_FORMAT_R8_SNORM = showString "VK_FORMAT_R8_SNORM"- showsPrec _ VK_FORMAT_R8_USCALED = showString "VK_FORMAT_R8_USCALED"- showsPrec _ VK_FORMAT_R8_SSCALED = showString "VK_FORMAT_R8_SSCALED"- showsPrec _ VK_FORMAT_R8_UINT = showString "VK_FORMAT_R8_UINT"- showsPrec _ VK_FORMAT_R8_SINT = showString "VK_FORMAT_R8_SINT"- showsPrec _ VK_FORMAT_R8_SRGB = showString "VK_FORMAT_R8_SRGB"- showsPrec _ VK_FORMAT_R8G8_UNORM = showString "VK_FORMAT_R8G8_UNORM"- showsPrec _ VK_FORMAT_R8G8_SNORM = showString "VK_FORMAT_R8G8_SNORM"- showsPrec _ VK_FORMAT_R8G8_USCALED = showString "VK_FORMAT_R8G8_USCALED"- showsPrec _ VK_FORMAT_R8G8_SSCALED = showString "VK_FORMAT_R8G8_SSCALED"- showsPrec _ VK_FORMAT_R8G8_UINT = showString "VK_FORMAT_R8G8_UINT"- showsPrec _ VK_FORMAT_R8G8_SINT = showString "VK_FORMAT_R8G8_SINT"- showsPrec _ VK_FORMAT_R8G8_SRGB = showString "VK_FORMAT_R8G8_SRGB"- showsPrec _ VK_FORMAT_R8G8B8_UNORM = showString "VK_FORMAT_R8G8B8_UNORM"- showsPrec _ VK_FORMAT_R8G8B8_SNORM = showString "VK_FORMAT_R8G8B8_SNORM"- showsPrec _ VK_FORMAT_R8G8B8_USCALED = showString "VK_FORMAT_R8G8B8_USCALED"- showsPrec _ VK_FORMAT_R8G8B8_SSCALED = showString "VK_FORMAT_R8G8B8_SSCALED"- showsPrec _ VK_FORMAT_R8G8B8_UINT = showString "VK_FORMAT_R8G8B8_UINT"- showsPrec _ VK_FORMAT_R8G8B8_SINT = showString "VK_FORMAT_R8G8B8_SINT"- showsPrec _ VK_FORMAT_R8G8B8_SRGB = showString "VK_FORMAT_R8G8B8_SRGB"- showsPrec _ VK_FORMAT_B8G8R8_UNORM = showString "VK_FORMAT_B8G8R8_UNORM"- showsPrec _ VK_FORMAT_B8G8R8_SNORM = showString "VK_FORMAT_B8G8R8_SNORM"- showsPrec _ VK_FORMAT_B8G8R8_USCALED = showString "VK_FORMAT_B8G8R8_USCALED"- showsPrec _ VK_FORMAT_B8G8R8_SSCALED = showString "VK_FORMAT_B8G8R8_SSCALED"- showsPrec _ VK_FORMAT_B8G8R8_UINT = showString "VK_FORMAT_B8G8R8_UINT"- showsPrec _ VK_FORMAT_B8G8R8_SINT = showString "VK_FORMAT_B8G8R8_SINT"- showsPrec _ VK_FORMAT_B8G8R8_SRGB = showString "VK_FORMAT_B8G8R8_SRGB"- showsPrec _ VK_FORMAT_R8G8B8A8_UNORM = showString "VK_FORMAT_R8G8B8A8_UNORM"- showsPrec _ VK_FORMAT_R8G8B8A8_SNORM = showString "VK_FORMAT_R8G8B8A8_SNORM"- showsPrec _ VK_FORMAT_R8G8B8A8_USCALED = showString "VK_FORMAT_R8G8B8A8_USCALED"- showsPrec _ VK_FORMAT_R8G8B8A8_SSCALED = showString "VK_FORMAT_R8G8B8A8_SSCALED"- showsPrec _ VK_FORMAT_R8G8B8A8_UINT = showString "VK_FORMAT_R8G8B8A8_UINT"- showsPrec _ VK_FORMAT_R8G8B8A8_SINT = showString "VK_FORMAT_R8G8B8A8_SINT"- showsPrec _ VK_FORMAT_R8G8B8A8_SRGB = showString "VK_FORMAT_R8G8B8A8_SRGB"- showsPrec _ VK_FORMAT_B8G8R8A8_UNORM = showString "VK_FORMAT_B8G8R8A8_UNORM"- showsPrec _ VK_FORMAT_B8G8R8A8_SNORM = showString "VK_FORMAT_B8G8R8A8_SNORM"- showsPrec _ VK_FORMAT_B8G8R8A8_USCALED = showString "VK_FORMAT_B8G8R8A8_USCALED"- showsPrec _ VK_FORMAT_B8G8R8A8_SSCALED = showString "VK_FORMAT_B8G8R8A8_SSCALED"- showsPrec _ VK_FORMAT_B8G8R8A8_UINT = showString "VK_FORMAT_B8G8R8A8_UINT"- showsPrec _ VK_FORMAT_B8G8R8A8_SINT = showString "VK_FORMAT_B8G8R8A8_SINT"- showsPrec _ VK_FORMAT_B8G8R8A8_SRGB = showString "VK_FORMAT_B8G8R8A8_SRGB"- showsPrec _ VK_FORMAT_A8B8G8R8_UNORM_PACK32 = showString "VK_FORMAT_A8B8G8R8_UNORM_PACK32"- showsPrec _ VK_FORMAT_A8B8G8R8_SNORM_PACK32 = showString "VK_FORMAT_A8B8G8R8_SNORM_PACK32"- showsPrec _ VK_FORMAT_A8B8G8R8_USCALED_PACK32 = showString "VK_FORMAT_A8B8G8R8_USCALED_PACK32"- showsPrec _ VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = showString "VK_FORMAT_A8B8G8R8_SSCALED_PACK32"- showsPrec _ VK_FORMAT_A8B8G8R8_UINT_PACK32 = showString "VK_FORMAT_A8B8G8R8_UINT_PACK32"- showsPrec _ VK_FORMAT_A8B8G8R8_SINT_PACK32 = showString "VK_FORMAT_A8B8G8R8_SINT_PACK32"- showsPrec _ VK_FORMAT_A8B8G8R8_SRGB_PACK32 = showString "VK_FORMAT_A8B8G8R8_SRGB_PACK32"- showsPrec _ VK_FORMAT_A2R10G10B10_UNORM_PACK32 = showString "VK_FORMAT_A2R10G10B10_UNORM_PACK32"- showsPrec _ VK_FORMAT_A2R10G10B10_SNORM_PACK32 = showString "VK_FORMAT_A2R10G10B10_SNORM_PACK32"- showsPrec _ VK_FORMAT_A2R10G10B10_USCALED_PACK32 = showString "VK_FORMAT_A2R10G10B10_USCALED_PACK32"- showsPrec _ VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = showString "VK_FORMAT_A2R10G10B10_SSCALED_PACK32"- showsPrec _ VK_FORMAT_A2R10G10B10_UINT_PACK32 = showString "VK_FORMAT_A2R10G10B10_UINT_PACK32"- showsPrec _ VK_FORMAT_A2R10G10B10_SINT_PACK32 = showString "VK_FORMAT_A2R10G10B10_SINT_PACK32"- showsPrec _ VK_FORMAT_A2B10G10R10_UNORM_PACK32 = showString "VK_FORMAT_A2B10G10R10_UNORM_PACK32"- showsPrec _ VK_FORMAT_A2B10G10R10_SNORM_PACK32 = showString "VK_FORMAT_A2B10G10R10_SNORM_PACK32"- showsPrec _ VK_FORMAT_A2B10G10R10_USCALED_PACK32 = showString "VK_FORMAT_A2B10G10R10_USCALED_PACK32"- showsPrec _ VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = showString "VK_FORMAT_A2B10G10R10_SSCALED_PACK32"- showsPrec _ VK_FORMAT_A2B10G10R10_UINT_PACK32 = showString "VK_FORMAT_A2B10G10R10_UINT_PACK32"- showsPrec _ VK_FORMAT_A2B10G10R10_SINT_PACK32 = showString "VK_FORMAT_A2B10G10R10_SINT_PACK32"- showsPrec _ VK_FORMAT_R16_UNORM = showString "VK_FORMAT_R16_UNORM"- showsPrec _ VK_FORMAT_R16_SNORM = showString "VK_FORMAT_R16_SNORM"- showsPrec _ VK_FORMAT_R16_USCALED = showString "VK_FORMAT_R16_USCALED"- showsPrec _ VK_FORMAT_R16_SSCALED = showString "VK_FORMAT_R16_SSCALED"- showsPrec _ VK_FORMAT_R16_UINT = showString "VK_FORMAT_R16_UINT"- showsPrec _ VK_FORMAT_R16_SINT = showString "VK_FORMAT_R16_SINT"- showsPrec _ VK_FORMAT_R16_SFLOAT = showString "VK_FORMAT_R16_SFLOAT"- showsPrec _ VK_FORMAT_R16G16_UNORM = showString "VK_FORMAT_R16G16_UNORM"- showsPrec _ VK_FORMAT_R16G16_SNORM = showString "VK_FORMAT_R16G16_SNORM"- showsPrec _ VK_FORMAT_R16G16_USCALED = showString "VK_FORMAT_R16G16_USCALED"- showsPrec _ VK_FORMAT_R16G16_SSCALED = showString "VK_FORMAT_R16G16_SSCALED"- showsPrec _ VK_FORMAT_R16G16_UINT = showString "VK_FORMAT_R16G16_UINT"- showsPrec _ VK_FORMAT_R16G16_SINT = showString "VK_FORMAT_R16G16_SINT"- showsPrec _ VK_FORMAT_R16G16_SFLOAT = showString "VK_FORMAT_R16G16_SFLOAT"- showsPrec _ VK_FORMAT_R16G16B16_UNORM = showString "VK_FORMAT_R16G16B16_UNORM"- showsPrec _ VK_FORMAT_R16G16B16_SNORM = showString "VK_FORMAT_R16G16B16_SNORM"- showsPrec _ VK_FORMAT_R16G16B16_USCALED = showString "VK_FORMAT_R16G16B16_USCALED"- showsPrec _ VK_FORMAT_R16G16B16_SSCALED = showString "VK_FORMAT_R16G16B16_SSCALED"- showsPrec _ VK_FORMAT_R16G16B16_UINT = showString "VK_FORMAT_R16G16B16_UINT"- showsPrec _ VK_FORMAT_R16G16B16_SINT = showString "VK_FORMAT_R16G16B16_SINT"- showsPrec _ VK_FORMAT_R16G16B16_SFLOAT = showString "VK_FORMAT_R16G16B16_SFLOAT"- showsPrec _ VK_FORMAT_R16G16B16A16_UNORM = showString "VK_FORMAT_R16G16B16A16_UNORM"- showsPrec _ VK_FORMAT_R16G16B16A16_SNORM = showString "VK_FORMAT_R16G16B16A16_SNORM"- showsPrec _ VK_FORMAT_R16G16B16A16_USCALED = showString "VK_FORMAT_R16G16B16A16_USCALED"- showsPrec _ VK_FORMAT_R16G16B16A16_SSCALED = showString "VK_FORMAT_R16G16B16A16_SSCALED"- showsPrec _ VK_FORMAT_R16G16B16A16_UINT = showString "VK_FORMAT_R16G16B16A16_UINT"- showsPrec _ VK_FORMAT_R16G16B16A16_SINT = showString "VK_FORMAT_R16G16B16A16_SINT"- showsPrec _ VK_FORMAT_R16G16B16A16_SFLOAT = showString "VK_FORMAT_R16G16B16A16_SFLOAT"- showsPrec _ VK_FORMAT_R32_UINT = showString "VK_FORMAT_R32_UINT"- showsPrec _ VK_FORMAT_R32_SINT = showString "VK_FORMAT_R32_SINT"- showsPrec _ VK_FORMAT_R32_SFLOAT = showString "VK_FORMAT_R32_SFLOAT"- showsPrec _ VK_FORMAT_R32G32_UINT = showString "VK_FORMAT_R32G32_UINT"- showsPrec _ VK_FORMAT_R32G32_SINT = showString "VK_FORMAT_R32G32_SINT"- showsPrec _ VK_FORMAT_R32G32_SFLOAT = showString "VK_FORMAT_R32G32_SFLOAT"- showsPrec _ VK_FORMAT_R32G32B32_UINT = showString "VK_FORMAT_R32G32B32_UINT"- showsPrec _ VK_FORMAT_R32G32B32_SINT = showString "VK_FORMAT_R32G32B32_SINT"- showsPrec _ VK_FORMAT_R32G32B32_SFLOAT = showString "VK_FORMAT_R32G32B32_SFLOAT"- showsPrec _ VK_FORMAT_R32G32B32A32_UINT = showString "VK_FORMAT_R32G32B32A32_UINT"- showsPrec _ VK_FORMAT_R32G32B32A32_SINT = showString "VK_FORMAT_R32G32B32A32_SINT"- showsPrec _ VK_FORMAT_R32G32B32A32_SFLOAT = showString "VK_FORMAT_R32G32B32A32_SFLOAT"- showsPrec _ VK_FORMAT_R64_UINT = showString "VK_FORMAT_R64_UINT"- showsPrec _ VK_FORMAT_R64_SINT = showString "VK_FORMAT_R64_SINT"- showsPrec _ VK_FORMAT_R64_SFLOAT = showString "VK_FORMAT_R64_SFLOAT"- showsPrec _ VK_FORMAT_R64G64_UINT = showString "VK_FORMAT_R64G64_UINT"- showsPrec _ VK_FORMAT_R64G64_SINT = showString "VK_FORMAT_R64G64_SINT"- showsPrec _ VK_FORMAT_R64G64_SFLOAT = showString "VK_FORMAT_R64G64_SFLOAT"- showsPrec _ VK_FORMAT_R64G64B64_UINT = showString "VK_FORMAT_R64G64B64_UINT"- showsPrec _ VK_FORMAT_R64G64B64_SINT = showString "VK_FORMAT_R64G64B64_SINT"- showsPrec _ VK_FORMAT_R64G64B64_SFLOAT = showString "VK_FORMAT_R64G64B64_SFLOAT"- showsPrec _ VK_FORMAT_R64G64B64A64_UINT = showString "VK_FORMAT_R64G64B64A64_UINT"- showsPrec _ VK_FORMAT_R64G64B64A64_SINT = showString "VK_FORMAT_R64G64B64A64_SINT"- showsPrec _ VK_FORMAT_R64G64B64A64_SFLOAT = showString "VK_FORMAT_R64G64B64A64_SFLOAT"- showsPrec _ VK_FORMAT_B10G11R11_UFLOAT_PACK32 = showString "VK_FORMAT_B10G11R11_UFLOAT_PACK32"- showsPrec _ VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = showString "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32"- showsPrec _ VK_FORMAT_D16_UNORM = showString "VK_FORMAT_D16_UNORM"- showsPrec _ VK_FORMAT_X8_D24_UNORM_PACK32 = showString "VK_FORMAT_X8_D24_UNORM_PACK32"- showsPrec _ VK_FORMAT_D32_SFLOAT = showString "VK_FORMAT_D32_SFLOAT"- showsPrec _ VK_FORMAT_S8_UINT = showString "VK_FORMAT_S8_UINT"- showsPrec _ VK_FORMAT_D16_UNORM_S8_UINT = showString "VK_FORMAT_D16_UNORM_S8_UINT"- showsPrec _ VK_FORMAT_D24_UNORM_S8_UINT = showString "VK_FORMAT_D24_UNORM_S8_UINT"- showsPrec _ VK_FORMAT_D32_SFLOAT_S8_UINT = showString "VK_FORMAT_D32_SFLOAT_S8_UINT"- showsPrec _ VK_FORMAT_BC1_RGB_UNORM_BLOCK = showString "VK_FORMAT_BC1_RGB_UNORM_BLOCK"- showsPrec _ VK_FORMAT_BC1_RGB_SRGB_BLOCK = showString "VK_FORMAT_BC1_RGB_SRGB_BLOCK"- showsPrec _ VK_FORMAT_BC1_RGBA_UNORM_BLOCK = showString "VK_FORMAT_BC1_RGBA_UNORM_BLOCK"- showsPrec _ VK_FORMAT_BC1_RGBA_SRGB_BLOCK = showString "VK_FORMAT_BC1_RGBA_SRGB_BLOCK"- showsPrec _ VK_FORMAT_BC2_UNORM_BLOCK = showString "VK_FORMAT_BC2_UNORM_BLOCK"- showsPrec _ VK_FORMAT_BC2_SRGB_BLOCK = showString "VK_FORMAT_BC2_SRGB_BLOCK"- showsPrec _ VK_FORMAT_BC3_UNORM_BLOCK = showString "VK_FORMAT_BC3_UNORM_BLOCK"- showsPrec _ VK_FORMAT_BC3_SRGB_BLOCK = showString "VK_FORMAT_BC3_SRGB_BLOCK"- showsPrec _ VK_FORMAT_BC4_UNORM_BLOCK = showString "VK_FORMAT_BC4_UNORM_BLOCK"- showsPrec _ VK_FORMAT_BC4_SNORM_BLOCK = showString "VK_FORMAT_BC4_SNORM_BLOCK"- showsPrec _ VK_FORMAT_BC5_UNORM_BLOCK = showString "VK_FORMAT_BC5_UNORM_BLOCK"- showsPrec _ VK_FORMAT_BC5_SNORM_BLOCK = showString "VK_FORMAT_BC5_SNORM_BLOCK"- showsPrec _ VK_FORMAT_BC6H_UFLOAT_BLOCK = showString "VK_FORMAT_BC6H_UFLOAT_BLOCK"- showsPrec _ VK_FORMAT_BC6H_SFLOAT_BLOCK = showString "VK_FORMAT_BC6H_SFLOAT_BLOCK"- showsPrec _ VK_FORMAT_BC7_UNORM_BLOCK = showString "VK_FORMAT_BC7_UNORM_BLOCK"- showsPrec _ VK_FORMAT_BC7_SRGB_BLOCK = showString "VK_FORMAT_BC7_SRGB_BLOCK"- showsPrec _ VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = showString "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK"- showsPrec _ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = showString "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK"- showsPrec _ VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = showString "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK"- showsPrec _ VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = showString "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK"- showsPrec _ VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = showString "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK"- showsPrec _ VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = showString "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK"- showsPrec _ VK_FORMAT_EAC_R11_UNORM_BLOCK = showString "VK_FORMAT_EAC_R11_UNORM_BLOCK"- showsPrec _ VK_FORMAT_EAC_R11_SNORM_BLOCK = showString "VK_FORMAT_EAC_R11_SNORM_BLOCK"- showsPrec _ VK_FORMAT_EAC_R11G11_UNORM_BLOCK = showString "VK_FORMAT_EAC_R11G11_UNORM_BLOCK"- showsPrec _ VK_FORMAT_EAC_R11G11_SNORM_BLOCK = showString "VK_FORMAT_EAC_R11G11_SNORM_BLOCK"- showsPrec _ VK_FORMAT_ASTC_4x4_UNORM_BLOCK = showString "VK_FORMAT_ASTC_4x4_UNORM_BLOCK"- showsPrec _ VK_FORMAT_ASTC_4x4_SRGB_BLOCK = showString "VK_FORMAT_ASTC_4x4_SRGB_BLOCK"- showsPrec _ VK_FORMAT_ASTC_5x4_UNORM_BLOCK = showString "VK_FORMAT_ASTC_5x4_UNORM_BLOCK"- showsPrec _ VK_FORMAT_ASTC_5x4_SRGB_BLOCK = showString "VK_FORMAT_ASTC_5x4_SRGB_BLOCK"- showsPrec _ VK_FORMAT_ASTC_5x5_UNORM_BLOCK = showString "VK_FORMAT_ASTC_5x5_UNORM_BLOCK"- showsPrec _ VK_FORMAT_ASTC_5x5_SRGB_BLOCK = showString "VK_FORMAT_ASTC_5x5_SRGB_BLOCK"- showsPrec _ VK_FORMAT_ASTC_6x5_UNORM_BLOCK = showString "VK_FORMAT_ASTC_6x5_UNORM_BLOCK"- showsPrec _ VK_FORMAT_ASTC_6x5_SRGB_BLOCK = showString "VK_FORMAT_ASTC_6x5_SRGB_BLOCK"- showsPrec _ VK_FORMAT_ASTC_6x6_UNORM_BLOCK = showString "VK_FORMAT_ASTC_6x6_UNORM_BLOCK"- showsPrec _ VK_FORMAT_ASTC_6x6_SRGB_BLOCK = showString "VK_FORMAT_ASTC_6x6_SRGB_BLOCK"- showsPrec _ VK_FORMAT_ASTC_8x5_UNORM_BLOCK = showString "VK_FORMAT_ASTC_8x5_UNORM_BLOCK"- showsPrec _ VK_FORMAT_ASTC_8x5_SRGB_BLOCK = showString "VK_FORMAT_ASTC_8x5_SRGB_BLOCK"- showsPrec _ VK_FORMAT_ASTC_8x6_UNORM_BLOCK = showString "VK_FORMAT_ASTC_8x6_UNORM_BLOCK"- showsPrec _ VK_FORMAT_ASTC_8x6_SRGB_BLOCK = showString "VK_FORMAT_ASTC_8x6_SRGB_BLOCK"- showsPrec _ VK_FORMAT_ASTC_8x8_UNORM_BLOCK = showString "VK_FORMAT_ASTC_8x8_UNORM_BLOCK"- showsPrec _ VK_FORMAT_ASTC_8x8_SRGB_BLOCK = showString "VK_FORMAT_ASTC_8x8_SRGB_BLOCK"- showsPrec _ VK_FORMAT_ASTC_10x5_UNORM_BLOCK = showString "VK_FORMAT_ASTC_10x5_UNORM_BLOCK"- showsPrec _ VK_FORMAT_ASTC_10x5_SRGB_BLOCK = showString "VK_FORMAT_ASTC_10x5_SRGB_BLOCK"- showsPrec _ VK_FORMAT_ASTC_10x6_UNORM_BLOCK = showString "VK_FORMAT_ASTC_10x6_UNORM_BLOCK"- showsPrec _ VK_FORMAT_ASTC_10x6_SRGB_BLOCK = showString "VK_FORMAT_ASTC_10x6_SRGB_BLOCK"- showsPrec _ VK_FORMAT_ASTC_10x8_UNORM_BLOCK = showString "VK_FORMAT_ASTC_10x8_UNORM_BLOCK"- showsPrec _ VK_FORMAT_ASTC_10x8_SRGB_BLOCK = showString "VK_FORMAT_ASTC_10x8_SRGB_BLOCK"- showsPrec _ VK_FORMAT_ASTC_10x10_UNORM_BLOCK = showString "VK_FORMAT_ASTC_10x10_UNORM_BLOCK"- showsPrec _ VK_FORMAT_ASTC_10x10_SRGB_BLOCK = showString "VK_FORMAT_ASTC_10x10_SRGB_BLOCK"- showsPrec _ VK_FORMAT_ASTC_12x10_UNORM_BLOCK = showString "VK_FORMAT_ASTC_12x10_UNORM_BLOCK"- showsPrec _ VK_FORMAT_ASTC_12x10_SRGB_BLOCK = showString "VK_FORMAT_ASTC_12x10_SRGB_BLOCK"- showsPrec _ VK_FORMAT_ASTC_12x12_UNORM_BLOCK = showString "VK_FORMAT_ASTC_12x12_UNORM_BLOCK"- showsPrec _ VK_FORMAT_ASTC_12x12_SRGB_BLOCK = showString "VK_FORMAT_ASTC_12x12_SRGB_BLOCK"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkFormat 1000156000) = showString "VK_FORMAT_G8B8G8R8_422_UNORM"- showsPrec _ (VkFormat 1000156001) = showString "VK_FORMAT_B8G8R8G8_422_UNORM"- showsPrec _ (VkFormat 1000156002) = showString "VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM"- showsPrec _ (VkFormat 1000156003) = showString "VK_FORMAT_G8_B8R8_2PLANE_420_UNORM"- showsPrec _ (VkFormat 1000156004) = showString "VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM"- showsPrec _ (VkFormat 1000156005) = showString "VK_FORMAT_G8_B8R8_2PLANE_422_UNORM"- showsPrec _ (VkFormat 1000156006) = showString "VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM"- showsPrec _ (VkFormat 1000156007) = showString "VK_FORMAT_R10X6_UNORM_PACK16"- showsPrec _ (VkFormat 1000156008) = showString "VK_FORMAT_R10X6G10X6_UNORM_2PACK16"- showsPrec _ (VkFormat 1000156009) = showString "VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16"- showsPrec _ (VkFormat 1000156010) = showString "VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16"- showsPrec _ (VkFormat 1000156011) = showString "VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16"- showsPrec _ (VkFormat 1000156012) = showString "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16"- showsPrec _ (VkFormat 1000156013) = showString "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16"- showsPrec _ (VkFormat 1000156014) = showString "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16"- showsPrec _ (VkFormat 1000156015) = showString "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16"- showsPrec _ (VkFormat 1000156016) = showString "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16"- showsPrec _ (VkFormat 1000156017) = showString "VK_FORMAT_R12X4_UNORM_PACK16"- showsPrec _ (VkFormat 1000156018) = showString "VK_FORMAT_R12X4G12X4_UNORM_2PACK16"- showsPrec _ (VkFormat 1000156019) = showString "VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16"- showsPrec _ (VkFormat 1000156020) = showString "VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16"- showsPrec _ (VkFormat 1000156021) = showString "VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16"- showsPrec _ (VkFormat 1000156022) = showString "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16"- showsPrec _ (VkFormat 1000156023) = showString "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16"- showsPrec _ (VkFormat 1000156024) = showString "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16"- showsPrec _ (VkFormat 1000156025) = showString "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16"- showsPrec _ (VkFormat 1000156026) = showString "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16"- showsPrec _ (VkFormat 1000156027) = showString "VK_FORMAT_G16B16G16R16_422_UNORM"- showsPrec _ (VkFormat 1000156028) = showString "VK_FORMAT_B16G16R16G16_422_UNORM"- showsPrec _ (VkFormat 1000156029) = showString "VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM"- showsPrec _ (VkFormat 1000156030) = showString "VK_FORMAT_G16_B16R16_2PLANE_420_UNORM"- showsPrec _ (VkFormat 1000156031) = showString "VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM"- showsPrec _ (VkFormat 1000156032) = showString "VK_FORMAT_G16_B16R16_2PLANE_422_UNORM"- showsPrec _ (VkFormat 1000156033) = showString "VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM"- showsPrec _ (VkFormat 1000054000) = showString "VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG"- showsPrec _ (VkFormat 1000054001) = showString "VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG"- showsPrec _ (VkFormat 1000054002) = showString "VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG"- showsPrec _ (VkFormat 1000054003) = showString "VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG"- showsPrec _ (VkFormat 1000054004) = showString "VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG"- showsPrec _ (VkFormat 1000054005) = showString "VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG"- showsPrec _ (VkFormat 1000054006) = showString "VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG"- showsPrec _ (VkFormat 1000054007) = showString "VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG"- showsPrec p (VkFormat x) = showParen (p >= 11) (showString "VkFormat " . showsPrec 11 x)--instance Read VkFormat where- readPrec = parens ( choose [ ("VK_FORMAT_UNDEFINED", pure VK_FORMAT_UNDEFINED)- , ("VK_FORMAT_R4G4_UNORM_PACK8", pure VK_FORMAT_R4G4_UNORM_PACK8)- , ("VK_FORMAT_R4G4B4A4_UNORM_PACK16", pure VK_FORMAT_R4G4B4A4_UNORM_PACK16)- , ("VK_FORMAT_B4G4R4A4_UNORM_PACK16", pure VK_FORMAT_B4G4R4A4_UNORM_PACK16)- , ("VK_FORMAT_R5G6B5_UNORM_PACK16", pure VK_FORMAT_R5G6B5_UNORM_PACK16)- , ("VK_FORMAT_B5G6R5_UNORM_PACK16", pure VK_FORMAT_B5G6R5_UNORM_PACK16)- , ("VK_FORMAT_R5G5B5A1_UNORM_PACK16", pure VK_FORMAT_R5G5B5A1_UNORM_PACK16)- , ("VK_FORMAT_B5G5R5A1_UNORM_PACK16", pure VK_FORMAT_B5G5R5A1_UNORM_PACK16)- , ("VK_FORMAT_A1R5G5B5_UNORM_PACK16", pure VK_FORMAT_A1R5G5B5_UNORM_PACK16)- , ("VK_FORMAT_R8_UNORM", pure VK_FORMAT_R8_UNORM)- , ("VK_FORMAT_R8_SNORM", pure VK_FORMAT_R8_SNORM)- , ("VK_FORMAT_R8_USCALED", pure VK_FORMAT_R8_USCALED)- , ("VK_FORMAT_R8_SSCALED", pure VK_FORMAT_R8_SSCALED)- , ("VK_FORMAT_R8_UINT", pure VK_FORMAT_R8_UINT)- , ("VK_FORMAT_R8_SINT", pure VK_FORMAT_R8_SINT)- , ("VK_FORMAT_R8_SRGB", pure VK_FORMAT_R8_SRGB)- , ("VK_FORMAT_R8G8_UNORM", pure VK_FORMAT_R8G8_UNORM)- , ("VK_FORMAT_R8G8_SNORM", pure VK_FORMAT_R8G8_SNORM)- , ("VK_FORMAT_R8G8_USCALED", pure VK_FORMAT_R8G8_USCALED)- , ("VK_FORMAT_R8G8_SSCALED", pure VK_FORMAT_R8G8_SSCALED)- , ("VK_FORMAT_R8G8_UINT", pure VK_FORMAT_R8G8_UINT)- , ("VK_FORMAT_R8G8_SINT", pure VK_FORMAT_R8G8_SINT)- , ("VK_FORMAT_R8G8_SRGB", pure VK_FORMAT_R8G8_SRGB)- , ("VK_FORMAT_R8G8B8_UNORM", pure VK_FORMAT_R8G8B8_UNORM)- , ("VK_FORMAT_R8G8B8_SNORM", pure VK_FORMAT_R8G8B8_SNORM)- , ("VK_FORMAT_R8G8B8_USCALED", pure VK_FORMAT_R8G8B8_USCALED)- , ("VK_FORMAT_R8G8B8_SSCALED", pure VK_FORMAT_R8G8B8_SSCALED)- , ("VK_FORMAT_R8G8B8_UINT", pure VK_FORMAT_R8G8B8_UINT)- , ("VK_FORMAT_R8G8B8_SINT", pure VK_FORMAT_R8G8B8_SINT)- , ("VK_FORMAT_R8G8B8_SRGB", pure VK_FORMAT_R8G8B8_SRGB)- , ("VK_FORMAT_B8G8R8_UNORM", pure VK_FORMAT_B8G8R8_UNORM)- , ("VK_FORMAT_B8G8R8_SNORM", pure VK_FORMAT_B8G8R8_SNORM)- , ("VK_FORMAT_B8G8R8_USCALED", pure VK_FORMAT_B8G8R8_USCALED)- , ("VK_FORMAT_B8G8R8_SSCALED", pure VK_FORMAT_B8G8R8_SSCALED)- , ("VK_FORMAT_B8G8R8_UINT", pure VK_FORMAT_B8G8R8_UINT)- , ("VK_FORMAT_B8G8R8_SINT", pure VK_FORMAT_B8G8R8_SINT)- , ("VK_FORMAT_B8G8R8_SRGB", pure VK_FORMAT_B8G8R8_SRGB)- , ("VK_FORMAT_R8G8B8A8_UNORM", pure VK_FORMAT_R8G8B8A8_UNORM)- , ("VK_FORMAT_R8G8B8A8_SNORM", pure VK_FORMAT_R8G8B8A8_SNORM)- , ("VK_FORMAT_R8G8B8A8_USCALED", pure VK_FORMAT_R8G8B8A8_USCALED)- , ("VK_FORMAT_R8G8B8A8_SSCALED", pure VK_FORMAT_R8G8B8A8_SSCALED)- , ("VK_FORMAT_R8G8B8A8_UINT", pure VK_FORMAT_R8G8B8A8_UINT)- , ("VK_FORMAT_R8G8B8A8_SINT", pure VK_FORMAT_R8G8B8A8_SINT)- , ("VK_FORMAT_R8G8B8A8_SRGB", pure VK_FORMAT_R8G8B8A8_SRGB)- , ("VK_FORMAT_B8G8R8A8_UNORM", pure VK_FORMAT_B8G8R8A8_UNORM)- , ("VK_FORMAT_B8G8R8A8_SNORM", pure VK_FORMAT_B8G8R8A8_SNORM)- , ("VK_FORMAT_B8G8R8A8_USCALED", pure VK_FORMAT_B8G8R8A8_USCALED)- , ("VK_FORMAT_B8G8R8A8_SSCALED", pure VK_FORMAT_B8G8R8A8_SSCALED)- , ("VK_FORMAT_B8G8R8A8_UINT", pure VK_FORMAT_B8G8R8A8_UINT)- , ("VK_FORMAT_B8G8R8A8_SINT", pure VK_FORMAT_B8G8R8A8_SINT)- , ("VK_FORMAT_B8G8R8A8_SRGB", pure VK_FORMAT_B8G8R8A8_SRGB)- , ("VK_FORMAT_A8B8G8R8_UNORM_PACK32", pure VK_FORMAT_A8B8G8R8_UNORM_PACK32)- , ("VK_FORMAT_A8B8G8R8_SNORM_PACK32", pure VK_FORMAT_A8B8G8R8_SNORM_PACK32)- , ("VK_FORMAT_A8B8G8R8_USCALED_PACK32", pure VK_FORMAT_A8B8G8R8_USCALED_PACK32)- , ("VK_FORMAT_A8B8G8R8_SSCALED_PACK32", pure VK_FORMAT_A8B8G8R8_SSCALED_PACK32)- , ("VK_FORMAT_A8B8G8R8_UINT_PACK32", pure VK_FORMAT_A8B8G8R8_UINT_PACK32)- , ("VK_FORMAT_A8B8G8R8_SINT_PACK32", pure VK_FORMAT_A8B8G8R8_SINT_PACK32)- , ("VK_FORMAT_A8B8G8R8_SRGB_PACK32", pure VK_FORMAT_A8B8G8R8_SRGB_PACK32)- , ("VK_FORMAT_A2R10G10B10_UNORM_PACK32", pure VK_FORMAT_A2R10G10B10_UNORM_PACK32)- , ("VK_FORMAT_A2R10G10B10_SNORM_PACK32", pure VK_FORMAT_A2R10G10B10_SNORM_PACK32)- , ("VK_FORMAT_A2R10G10B10_USCALED_PACK32", pure VK_FORMAT_A2R10G10B10_USCALED_PACK32)- , ("VK_FORMAT_A2R10G10B10_SSCALED_PACK32", pure VK_FORMAT_A2R10G10B10_SSCALED_PACK32)- , ("VK_FORMAT_A2R10G10B10_UINT_PACK32", pure VK_FORMAT_A2R10G10B10_UINT_PACK32)- , ("VK_FORMAT_A2R10G10B10_SINT_PACK32", pure VK_FORMAT_A2R10G10B10_SINT_PACK32)- , ("VK_FORMAT_A2B10G10R10_UNORM_PACK32", pure VK_FORMAT_A2B10G10R10_UNORM_PACK32)- , ("VK_FORMAT_A2B10G10R10_SNORM_PACK32", pure VK_FORMAT_A2B10G10R10_SNORM_PACK32)- , ("VK_FORMAT_A2B10G10R10_USCALED_PACK32", pure VK_FORMAT_A2B10G10R10_USCALED_PACK32)- , ("VK_FORMAT_A2B10G10R10_SSCALED_PACK32", pure VK_FORMAT_A2B10G10R10_SSCALED_PACK32)- , ("VK_FORMAT_A2B10G10R10_UINT_PACK32", pure VK_FORMAT_A2B10G10R10_UINT_PACK32)- , ("VK_FORMAT_A2B10G10R10_SINT_PACK32", pure VK_FORMAT_A2B10G10R10_SINT_PACK32)- , ("VK_FORMAT_R16_UNORM", pure VK_FORMAT_R16_UNORM)- , ("VK_FORMAT_R16_SNORM", pure VK_FORMAT_R16_SNORM)- , ("VK_FORMAT_R16_USCALED", pure VK_FORMAT_R16_USCALED)- , ("VK_FORMAT_R16_SSCALED", pure VK_FORMAT_R16_SSCALED)- , ("VK_FORMAT_R16_UINT", pure VK_FORMAT_R16_UINT)- , ("VK_FORMAT_R16_SINT", pure VK_FORMAT_R16_SINT)- , ("VK_FORMAT_R16_SFLOAT", pure VK_FORMAT_R16_SFLOAT)- , ("VK_FORMAT_R16G16_UNORM", pure VK_FORMAT_R16G16_UNORM)- , ("VK_FORMAT_R16G16_SNORM", pure VK_FORMAT_R16G16_SNORM)- , ("VK_FORMAT_R16G16_USCALED", pure VK_FORMAT_R16G16_USCALED)- , ("VK_FORMAT_R16G16_SSCALED", pure VK_FORMAT_R16G16_SSCALED)- , ("VK_FORMAT_R16G16_UINT", pure VK_FORMAT_R16G16_UINT)- , ("VK_FORMAT_R16G16_SINT", pure VK_FORMAT_R16G16_SINT)- , ("VK_FORMAT_R16G16_SFLOAT", pure VK_FORMAT_R16G16_SFLOAT)- , ("VK_FORMAT_R16G16B16_UNORM", pure VK_FORMAT_R16G16B16_UNORM)- , ("VK_FORMAT_R16G16B16_SNORM", pure VK_FORMAT_R16G16B16_SNORM)- , ("VK_FORMAT_R16G16B16_USCALED", pure VK_FORMAT_R16G16B16_USCALED)- , ("VK_FORMAT_R16G16B16_SSCALED", pure VK_FORMAT_R16G16B16_SSCALED)- , ("VK_FORMAT_R16G16B16_UINT", pure VK_FORMAT_R16G16B16_UINT)- , ("VK_FORMAT_R16G16B16_SINT", pure VK_FORMAT_R16G16B16_SINT)- , ("VK_FORMAT_R16G16B16_SFLOAT", pure VK_FORMAT_R16G16B16_SFLOAT)- , ("VK_FORMAT_R16G16B16A16_UNORM", pure VK_FORMAT_R16G16B16A16_UNORM)- , ("VK_FORMAT_R16G16B16A16_SNORM", pure VK_FORMAT_R16G16B16A16_SNORM)- , ("VK_FORMAT_R16G16B16A16_USCALED", pure VK_FORMAT_R16G16B16A16_USCALED)- , ("VK_FORMAT_R16G16B16A16_SSCALED", pure VK_FORMAT_R16G16B16A16_SSCALED)- , ("VK_FORMAT_R16G16B16A16_UINT", pure VK_FORMAT_R16G16B16A16_UINT)- , ("VK_FORMAT_R16G16B16A16_SINT", pure VK_FORMAT_R16G16B16A16_SINT)- , ("VK_FORMAT_R16G16B16A16_SFLOAT", pure VK_FORMAT_R16G16B16A16_SFLOAT)- , ("VK_FORMAT_R32_UINT", pure VK_FORMAT_R32_UINT)- , ("VK_FORMAT_R32_SINT", pure VK_FORMAT_R32_SINT)- , ("VK_FORMAT_R32_SFLOAT", pure VK_FORMAT_R32_SFLOAT)- , ("VK_FORMAT_R32G32_UINT", pure VK_FORMAT_R32G32_UINT)- , ("VK_FORMAT_R32G32_SINT", pure VK_FORMAT_R32G32_SINT)- , ("VK_FORMAT_R32G32_SFLOAT", pure VK_FORMAT_R32G32_SFLOAT)- , ("VK_FORMAT_R32G32B32_UINT", pure VK_FORMAT_R32G32B32_UINT)- , ("VK_FORMAT_R32G32B32_SINT", pure VK_FORMAT_R32G32B32_SINT)- , ("VK_FORMAT_R32G32B32_SFLOAT", pure VK_FORMAT_R32G32B32_SFLOAT)- , ("VK_FORMAT_R32G32B32A32_UINT", pure VK_FORMAT_R32G32B32A32_UINT)- , ("VK_FORMAT_R32G32B32A32_SINT", pure VK_FORMAT_R32G32B32A32_SINT)- , ("VK_FORMAT_R32G32B32A32_SFLOAT", pure VK_FORMAT_R32G32B32A32_SFLOAT)- , ("VK_FORMAT_R64_UINT", pure VK_FORMAT_R64_UINT)- , ("VK_FORMAT_R64_SINT", pure VK_FORMAT_R64_SINT)- , ("VK_FORMAT_R64_SFLOAT", pure VK_FORMAT_R64_SFLOAT)- , ("VK_FORMAT_R64G64_UINT", pure VK_FORMAT_R64G64_UINT)- , ("VK_FORMAT_R64G64_SINT", pure VK_FORMAT_R64G64_SINT)- , ("VK_FORMAT_R64G64_SFLOAT", pure VK_FORMAT_R64G64_SFLOAT)- , ("VK_FORMAT_R64G64B64_UINT", pure VK_FORMAT_R64G64B64_UINT)- , ("VK_FORMAT_R64G64B64_SINT", pure VK_FORMAT_R64G64B64_SINT)- , ("VK_FORMAT_R64G64B64_SFLOAT", pure VK_FORMAT_R64G64B64_SFLOAT)- , ("VK_FORMAT_R64G64B64A64_UINT", pure VK_FORMAT_R64G64B64A64_UINT)- , ("VK_FORMAT_R64G64B64A64_SINT", pure VK_FORMAT_R64G64B64A64_SINT)- , ("VK_FORMAT_R64G64B64A64_SFLOAT", pure VK_FORMAT_R64G64B64A64_SFLOAT)- , ("VK_FORMAT_B10G11R11_UFLOAT_PACK32", pure VK_FORMAT_B10G11R11_UFLOAT_PACK32)- , ("VK_FORMAT_E5B9G9R9_UFLOAT_PACK32", pure VK_FORMAT_E5B9G9R9_UFLOAT_PACK32)- , ("VK_FORMAT_D16_UNORM", pure VK_FORMAT_D16_UNORM)- , ("VK_FORMAT_X8_D24_UNORM_PACK32", pure VK_FORMAT_X8_D24_UNORM_PACK32)- , ("VK_FORMAT_D32_SFLOAT", pure VK_FORMAT_D32_SFLOAT)- , ("VK_FORMAT_S8_UINT", pure VK_FORMAT_S8_UINT)- , ("VK_FORMAT_D16_UNORM_S8_UINT", pure VK_FORMAT_D16_UNORM_S8_UINT)- , ("VK_FORMAT_D24_UNORM_S8_UINT", pure VK_FORMAT_D24_UNORM_S8_UINT)- , ("VK_FORMAT_D32_SFLOAT_S8_UINT", pure VK_FORMAT_D32_SFLOAT_S8_UINT)- , ("VK_FORMAT_BC1_RGB_UNORM_BLOCK", pure VK_FORMAT_BC1_RGB_UNORM_BLOCK)- , ("VK_FORMAT_BC1_RGB_SRGB_BLOCK", pure VK_FORMAT_BC1_RGB_SRGB_BLOCK)- , ("VK_FORMAT_BC1_RGBA_UNORM_BLOCK", pure VK_FORMAT_BC1_RGBA_UNORM_BLOCK)- , ("VK_FORMAT_BC1_RGBA_SRGB_BLOCK", pure VK_FORMAT_BC1_RGBA_SRGB_BLOCK)- , ("VK_FORMAT_BC2_UNORM_BLOCK", pure VK_FORMAT_BC2_UNORM_BLOCK)- , ("VK_FORMAT_BC2_SRGB_BLOCK", pure VK_FORMAT_BC2_SRGB_BLOCK)- , ("VK_FORMAT_BC3_UNORM_BLOCK", pure VK_FORMAT_BC3_UNORM_BLOCK)- , ("VK_FORMAT_BC3_SRGB_BLOCK", pure VK_FORMAT_BC3_SRGB_BLOCK)- , ("VK_FORMAT_BC4_UNORM_BLOCK", pure VK_FORMAT_BC4_UNORM_BLOCK)- , ("VK_FORMAT_BC4_SNORM_BLOCK", pure VK_FORMAT_BC4_SNORM_BLOCK)- , ("VK_FORMAT_BC5_UNORM_BLOCK", pure VK_FORMAT_BC5_UNORM_BLOCK)- , ("VK_FORMAT_BC5_SNORM_BLOCK", pure VK_FORMAT_BC5_SNORM_BLOCK)- , ("VK_FORMAT_BC6H_UFLOAT_BLOCK", pure VK_FORMAT_BC6H_UFLOAT_BLOCK)- , ("VK_FORMAT_BC6H_SFLOAT_BLOCK", pure VK_FORMAT_BC6H_SFLOAT_BLOCK)- , ("VK_FORMAT_BC7_UNORM_BLOCK", pure VK_FORMAT_BC7_UNORM_BLOCK)- , ("VK_FORMAT_BC7_SRGB_BLOCK", pure VK_FORMAT_BC7_SRGB_BLOCK)- , ("VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK", pure VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK)- , ("VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK", pure VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK)- , ("VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK", pure VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK)- , ("VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK", pure VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK)- , ("VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK", pure VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK)- , ("VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK", pure VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK)- , ("VK_FORMAT_EAC_R11_UNORM_BLOCK", pure VK_FORMAT_EAC_R11_UNORM_BLOCK)- , ("VK_FORMAT_EAC_R11_SNORM_BLOCK", pure VK_FORMAT_EAC_R11_SNORM_BLOCK)- , ("VK_FORMAT_EAC_R11G11_UNORM_BLOCK", pure VK_FORMAT_EAC_R11G11_UNORM_BLOCK)- , ("VK_FORMAT_EAC_R11G11_SNORM_BLOCK", pure VK_FORMAT_EAC_R11G11_SNORM_BLOCK)- , ("VK_FORMAT_ASTC_4x4_UNORM_BLOCK", pure VK_FORMAT_ASTC_4x4_UNORM_BLOCK)- , ("VK_FORMAT_ASTC_4x4_SRGB_BLOCK", pure VK_FORMAT_ASTC_4x4_SRGB_BLOCK)- , ("VK_FORMAT_ASTC_5x4_UNORM_BLOCK", pure VK_FORMAT_ASTC_5x4_UNORM_BLOCK)- , ("VK_FORMAT_ASTC_5x4_SRGB_BLOCK", pure VK_FORMAT_ASTC_5x4_SRGB_BLOCK)- , ("VK_FORMAT_ASTC_5x5_UNORM_BLOCK", pure VK_FORMAT_ASTC_5x5_UNORM_BLOCK)- , ("VK_FORMAT_ASTC_5x5_SRGB_BLOCK", pure VK_FORMAT_ASTC_5x5_SRGB_BLOCK)- , ("VK_FORMAT_ASTC_6x5_UNORM_BLOCK", pure VK_FORMAT_ASTC_6x5_UNORM_BLOCK)- , ("VK_FORMAT_ASTC_6x5_SRGB_BLOCK", pure VK_FORMAT_ASTC_6x5_SRGB_BLOCK)- , ("VK_FORMAT_ASTC_6x6_UNORM_BLOCK", pure VK_FORMAT_ASTC_6x6_UNORM_BLOCK)- , ("VK_FORMAT_ASTC_6x6_SRGB_BLOCK", pure VK_FORMAT_ASTC_6x6_SRGB_BLOCK)- , ("VK_FORMAT_ASTC_8x5_UNORM_BLOCK", pure VK_FORMAT_ASTC_8x5_UNORM_BLOCK)- , ("VK_FORMAT_ASTC_8x5_SRGB_BLOCK", pure VK_FORMAT_ASTC_8x5_SRGB_BLOCK)- , ("VK_FORMAT_ASTC_8x6_UNORM_BLOCK", pure VK_FORMAT_ASTC_8x6_UNORM_BLOCK)- , ("VK_FORMAT_ASTC_8x6_SRGB_BLOCK", pure VK_FORMAT_ASTC_8x6_SRGB_BLOCK)- , ("VK_FORMAT_ASTC_8x8_UNORM_BLOCK", pure VK_FORMAT_ASTC_8x8_UNORM_BLOCK)- , ("VK_FORMAT_ASTC_8x8_SRGB_BLOCK", pure VK_FORMAT_ASTC_8x8_SRGB_BLOCK)- , ("VK_FORMAT_ASTC_10x5_UNORM_BLOCK", pure VK_FORMAT_ASTC_10x5_UNORM_BLOCK)- , ("VK_FORMAT_ASTC_10x5_SRGB_BLOCK", pure VK_FORMAT_ASTC_10x5_SRGB_BLOCK)- , ("VK_FORMAT_ASTC_10x6_UNORM_BLOCK", pure VK_FORMAT_ASTC_10x6_UNORM_BLOCK)- , ("VK_FORMAT_ASTC_10x6_SRGB_BLOCK", pure VK_FORMAT_ASTC_10x6_SRGB_BLOCK)- , ("VK_FORMAT_ASTC_10x8_UNORM_BLOCK", pure VK_FORMAT_ASTC_10x8_UNORM_BLOCK)- , ("VK_FORMAT_ASTC_10x8_SRGB_BLOCK", pure VK_FORMAT_ASTC_10x8_SRGB_BLOCK)- , ("VK_FORMAT_ASTC_10x10_UNORM_BLOCK", pure VK_FORMAT_ASTC_10x10_UNORM_BLOCK)- , ("VK_FORMAT_ASTC_10x10_SRGB_BLOCK", pure VK_FORMAT_ASTC_10x10_SRGB_BLOCK)- , ("VK_FORMAT_ASTC_12x10_UNORM_BLOCK", pure VK_FORMAT_ASTC_12x10_UNORM_BLOCK)- , ("VK_FORMAT_ASTC_12x10_SRGB_BLOCK", pure VK_FORMAT_ASTC_12x10_SRGB_BLOCK)- , ("VK_FORMAT_ASTC_12x12_UNORM_BLOCK", pure VK_FORMAT_ASTC_12x12_UNORM_BLOCK)- , ("VK_FORMAT_ASTC_12x12_SRGB_BLOCK", pure VK_FORMAT_ASTC_12x12_SRGB_BLOCK)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_FORMAT_G8B8G8R8_422_UNORM", pure (VkFormat 1000156000))- , ("VK_FORMAT_B8G8R8G8_422_UNORM", pure (VkFormat 1000156001))- , ("VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM", pure (VkFormat 1000156002))- , ("VK_FORMAT_G8_B8R8_2PLANE_420_UNORM", pure (VkFormat 1000156003))- , ("VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM", pure (VkFormat 1000156004))- , ("VK_FORMAT_G8_B8R8_2PLANE_422_UNORM", pure (VkFormat 1000156005))- , ("VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM", pure (VkFormat 1000156006))- , ("VK_FORMAT_R10X6_UNORM_PACK16", pure (VkFormat 1000156007))- , ("VK_FORMAT_R10X6G10X6_UNORM_2PACK16", pure (VkFormat 1000156008))- , ("VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16", pure (VkFormat 1000156009))- , ("VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16", pure (VkFormat 1000156010))- , ("VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16", pure (VkFormat 1000156011))- , ("VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16", pure (VkFormat 1000156012))- , ("VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16", pure (VkFormat 1000156013))- , ("VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16", pure (VkFormat 1000156014))- , ("VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16", pure (VkFormat 1000156015))- , ("VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16", pure (VkFormat 1000156016))- , ("VK_FORMAT_R12X4_UNORM_PACK16", pure (VkFormat 1000156017))- , ("VK_FORMAT_R12X4G12X4_UNORM_2PACK16", pure (VkFormat 1000156018))- , ("VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16", pure (VkFormat 1000156019))- , ("VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16", pure (VkFormat 1000156020))- , ("VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16", pure (VkFormat 1000156021))- , ("VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16", pure (VkFormat 1000156022))- , ("VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16", pure (VkFormat 1000156023))- , ("VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16", pure (VkFormat 1000156024))- , ("VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16", pure (VkFormat 1000156025))- , ("VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16", pure (VkFormat 1000156026))- , ("VK_FORMAT_G16B16G16R16_422_UNORM", pure (VkFormat 1000156027))- , ("VK_FORMAT_B16G16R16G16_422_UNORM", pure (VkFormat 1000156028))- , ("VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM", pure (VkFormat 1000156029))- , ("VK_FORMAT_G16_B16R16_2PLANE_420_UNORM", pure (VkFormat 1000156030))- , ("VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM", pure (VkFormat 1000156031))- , ("VK_FORMAT_G16_B16R16_2PLANE_422_UNORM", pure (VkFormat 1000156032))- , ("VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM", pure (VkFormat 1000156033))- , ("VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG", pure (VkFormat 1000054000))- , ("VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG", pure (VkFormat 1000054001))- , ("VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG", pure (VkFormat 1000054002))- , ("VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG", pure (VkFormat 1000054003))- , ("VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG", pure (VkFormat 1000054004))- , ("VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG", pure (VkFormat 1000054005))- , ("VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG", pure (VkFormat 1000054006))- , ("VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG", pure (VkFormat 1000054007))- ] +++- prec 10 (do- expectP (Ident "VkFormat")- v <- step readPrec- pure (VkFormat v)- )- )---- | @VK_FORMAT_UNDEFINED@ specifies that the format is not specified.-pattern VK_FORMAT_UNDEFINED :: VkFormat-pattern VK_FORMAT_UNDEFINED = VkFormat 0---- | @VK_FORMAT_R4G4_UNORM_PACK8@ specifies a two-component, 8-bit packed--- unsigned normalized format that has a 4-bit R component in bits 4..7,--- and a 4-bit G component in bits 0..3.-pattern VK_FORMAT_R4G4_UNORM_PACK8 :: VkFormat-pattern VK_FORMAT_R4G4_UNORM_PACK8 = VkFormat 1---- | @VK_FORMAT_R4G4B4A4_UNORM_PACK16@ specifies a four-component, 16-bit--- packed unsigned normalized format that has a 4-bit R component in bits--- 12..15, a 4-bit G component in bits 8..11, a 4-bit B component in bits--- 4..7, and a 4-bit A component in bits 0..3.-pattern VK_FORMAT_R4G4B4A4_UNORM_PACK16 :: VkFormat-pattern VK_FORMAT_R4G4B4A4_UNORM_PACK16 = VkFormat 2---- | @VK_FORMAT_B4G4R4A4_UNORM_PACK16@ specifies a four-component, 16-bit--- packed unsigned normalized format that has a 4-bit B component in bits--- 12..15, a 4-bit G component in bits 8..11, a 4-bit R component in bits--- 4..7, and a 4-bit A component in bits 0..3.-pattern VK_FORMAT_B4G4R4A4_UNORM_PACK16 :: VkFormat-pattern VK_FORMAT_B4G4R4A4_UNORM_PACK16 = VkFormat 3---- | @VK_FORMAT_R5G6B5_UNORM_PACK16@ specifies a three-component, 16-bit--- packed unsigned normalized format that has a 5-bit R component in bits--- 11..15, a 6-bit G component in bits 5..10, and a 5-bit B component in--- bits 0..4.-pattern VK_FORMAT_R5G6B5_UNORM_PACK16 :: VkFormat-pattern VK_FORMAT_R5G6B5_UNORM_PACK16 = VkFormat 4---- | @VK_FORMAT_B5G6R5_UNORM_PACK16@ specifies a three-component, 16-bit--- packed unsigned normalized format that has a 5-bit B component in bits--- 11..15, a 6-bit G component in bits 5..10, and a 5-bit R component in--- bits 0..4.-pattern VK_FORMAT_B5G6R5_UNORM_PACK16 :: VkFormat-pattern VK_FORMAT_B5G6R5_UNORM_PACK16 = VkFormat 5---- | @VK_FORMAT_R5G5B5A1_UNORM_PACK16@ specifies a four-component, 16-bit--- packed unsigned normalized format that has a 5-bit R component in bits--- 11..15, a 5-bit G component in bits 6..10, a 5-bit B component in bits--- 1..5, and a 1-bit A component in bit 0.-pattern VK_FORMAT_R5G5B5A1_UNORM_PACK16 :: VkFormat-pattern VK_FORMAT_R5G5B5A1_UNORM_PACK16 = VkFormat 6---- | @VK_FORMAT_B5G5R5A1_UNORM_PACK16@ specifies a four-component, 16-bit--- packed unsigned normalized format that has a 5-bit B component in bits--- 11..15, a 5-bit G component in bits 6..10, a 5-bit R component in bits--- 1..5, and a 1-bit A component in bit 0.-pattern VK_FORMAT_B5G5R5A1_UNORM_PACK16 :: VkFormat-pattern VK_FORMAT_B5G5R5A1_UNORM_PACK16 = VkFormat 7---- | @VK_FORMAT_A1R5G5B5_UNORM_PACK16@ specifies a four-component, 16-bit--- packed unsigned normalized format that has a 1-bit A component in bit--- 15, a 5-bit R component in bits 10..14, a 5-bit G component in bits--- 5..9, and a 5-bit B component in bits 0..4.-pattern VK_FORMAT_A1R5G5B5_UNORM_PACK16 :: VkFormat-pattern VK_FORMAT_A1R5G5B5_UNORM_PACK16 = VkFormat 8---- | @VK_FORMAT_R8_UNORM@ specifies a one-component, 8-bit unsigned--- normalized format that has a single 8-bit R component.-pattern VK_FORMAT_R8_UNORM :: VkFormat-pattern VK_FORMAT_R8_UNORM = VkFormat 9---- | @VK_FORMAT_R8_SNORM@ specifies a one-component, 8-bit signed normalized--- format that has a single 8-bit R component.-pattern VK_FORMAT_R8_SNORM :: VkFormat-pattern VK_FORMAT_R8_SNORM = VkFormat 10---- | @VK_FORMAT_R8_USCALED@ specifies a one-component, 8-bit unsigned scaled--- integer format that has a single 8-bit R component.-pattern VK_FORMAT_R8_USCALED :: VkFormat-pattern VK_FORMAT_R8_USCALED = VkFormat 11---- | @VK_FORMAT_R8_SSCALED@ specifies a one-component, 8-bit signed scaled--- integer format that has a single 8-bit R component.-pattern VK_FORMAT_R8_SSCALED :: VkFormat-pattern VK_FORMAT_R8_SSCALED = VkFormat 12---- | @VK_FORMAT_R8_UINT@ specifies a one-component, 8-bit unsigned integer--- format that has a single 8-bit R component.-pattern VK_FORMAT_R8_UINT :: VkFormat-pattern VK_FORMAT_R8_UINT = VkFormat 13---- | @VK_FORMAT_R8_SINT@ specifies a one-component, 8-bit signed integer--- format that has a single 8-bit R component.-pattern VK_FORMAT_R8_SINT :: VkFormat-pattern VK_FORMAT_R8_SINT = VkFormat 14---- | @VK_FORMAT_R8_SRGB@ specifies a one-component, 8-bit unsigned normalized--- format that has a single 8-bit R component stored with sRGB nonlinear--- encoding.-pattern VK_FORMAT_R8_SRGB :: VkFormat-pattern VK_FORMAT_R8_SRGB = VkFormat 15---- | @VK_FORMAT_R8G8_UNORM@ specifies a two-component, 16-bit unsigned--- normalized format that has an 8-bit R component in byte 0, and an 8-bit--- G component in byte 1.-pattern VK_FORMAT_R8G8_UNORM :: VkFormat-pattern VK_FORMAT_R8G8_UNORM = VkFormat 16---- | @VK_FORMAT_R8G8_SNORM@ specifies a two-component, 16-bit signed--- normalized format that has an 8-bit R component in byte 0, and an 8-bit--- G component in byte 1.-pattern VK_FORMAT_R8G8_SNORM :: VkFormat-pattern VK_FORMAT_R8G8_SNORM = VkFormat 17---- | @VK_FORMAT_R8G8_USCALED@ specifies a two-component, 16-bit unsigned--- scaled integer format that has an 8-bit R component in byte 0, and an--- 8-bit G component in byte 1.-pattern VK_FORMAT_R8G8_USCALED :: VkFormat-pattern VK_FORMAT_R8G8_USCALED = VkFormat 18---- | @VK_FORMAT_R8G8_SSCALED@ specifies a two-component, 16-bit signed scaled--- integer format that has an 8-bit R component in byte 0, and an 8-bit G--- component in byte 1.-pattern VK_FORMAT_R8G8_SSCALED :: VkFormat-pattern VK_FORMAT_R8G8_SSCALED = VkFormat 19---- | @VK_FORMAT_R8G8_UINT@ specifies a two-component, 16-bit unsigned integer--- format that has an 8-bit R component in byte 0, and an 8-bit G component--- in byte 1.-pattern VK_FORMAT_R8G8_UINT :: VkFormat-pattern VK_FORMAT_R8G8_UINT = VkFormat 20---- | @VK_FORMAT_R8G8_SINT@ specifies a two-component, 16-bit signed integer--- format that has an 8-bit R component in byte 0, and an 8-bit G component--- in byte 1.-pattern VK_FORMAT_R8G8_SINT :: VkFormat-pattern VK_FORMAT_R8G8_SINT = VkFormat 21---- | @VK_FORMAT_R8G8_SRGB@ specifies a two-component, 16-bit unsigned--- normalized format that has an 8-bit R component stored with sRGB--- nonlinear encoding in byte 0, and an 8-bit G component stored with sRGB--- nonlinear encoding in byte 1.-pattern VK_FORMAT_R8G8_SRGB :: VkFormat-pattern VK_FORMAT_R8G8_SRGB = VkFormat 22---- | @VK_FORMAT_R8G8B8_UNORM@ specifies a three-component, 24-bit unsigned--- normalized format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit B component in byte 2.-pattern VK_FORMAT_R8G8B8_UNORM :: VkFormat-pattern VK_FORMAT_R8G8B8_UNORM = VkFormat 23---- | @VK_FORMAT_R8G8B8_SNORM@ specifies a three-component, 24-bit signed--- normalized format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit B component in byte 2.-pattern VK_FORMAT_R8G8B8_SNORM :: VkFormat-pattern VK_FORMAT_R8G8B8_SNORM = VkFormat 24---- | @VK_FORMAT_R8G8B8_USCALED@ specifies a three-component, 24-bit unsigned--- scaled format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit B component in byte 2.-pattern VK_FORMAT_R8G8B8_USCALED :: VkFormat-pattern VK_FORMAT_R8G8B8_USCALED = VkFormat 25---- | @VK_FORMAT_R8G8B8_SSCALED@ specifies a three-component, 24-bit signed--- scaled format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit B component in byte 2.-pattern VK_FORMAT_R8G8B8_SSCALED :: VkFormat-pattern VK_FORMAT_R8G8B8_SSCALED = VkFormat 26---- | @VK_FORMAT_R8G8B8_UINT@ specifies a three-component, 24-bit unsigned--- integer format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit B component in byte 2.-pattern VK_FORMAT_R8G8B8_UINT :: VkFormat-pattern VK_FORMAT_R8G8B8_UINT = VkFormat 27---- | @VK_FORMAT_R8G8B8_SINT@ specifies a three-component, 24-bit signed--- integer format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit B component in byte 2.-pattern VK_FORMAT_R8G8B8_SINT :: VkFormat-pattern VK_FORMAT_R8G8B8_SINT = VkFormat 28---- | @VK_FORMAT_R8G8B8_SRGB@ specifies a three-component, 24-bit unsigned--- normalized format that has an 8-bit R component stored with sRGB--- nonlinear encoding in byte 0, an 8-bit G component stored with sRGB--- nonlinear encoding in byte 1, and an 8-bit B component stored with sRGB--- nonlinear encoding in byte 2.-pattern VK_FORMAT_R8G8B8_SRGB :: VkFormat-pattern VK_FORMAT_R8G8B8_SRGB = VkFormat 29---- | @VK_FORMAT_B8G8R8_UNORM@ specifies a three-component, 24-bit unsigned--- normalized format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit R component in byte 2.-pattern VK_FORMAT_B8G8R8_UNORM :: VkFormat-pattern VK_FORMAT_B8G8R8_UNORM = VkFormat 30---- | @VK_FORMAT_B8G8R8_SNORM@ specifies a three-component, 24-bit signed--- normalized format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit R component in byte 2.-pattern VK_FORMAT_B8G8R8_SNORM :: VkFormat-pattern VK_FORMAT_B8G8R8_SNORM = VkFormat 31---- | @VK_FORMAT_B8G8R8_USCALED@ specifies a three-component, 24-bit unsigned--- scaled format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit R component in byte 2.-pattern VK_FORMAT_B8G8R8_USCALED :: VkFormat-pattern VK_FORMAT_B8G8R8_USCALED = VkFormat 32---- | @VK_FORMAT_B8G8R8_SSCALED@ specifies a three-component, 24-bit signed--- scaled format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit R component in byte 2.-pattern VK_FORMAT_B8G8R8_SSCALED :: VkFormat-pattern VK_FORMAT_B8G8R8_SSCALED = VkFormat 33---- | @VK_FORMAT_B8G8R8_UINT@ specifies a three-component, 24-bit unsigned--- integer format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit R component in byte 2.-pattern VK_FORMAT_B8G8R8_UINT :: VkFormat-pattern VK_FORMAT_B8G8R8_UINT = VkFormat 34---- | @VK_FORMAT_B8G8R8_SINT@ specifies a three-component, 24-bit signed--- integer format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, and an 8-bit R component in byte 2.-pattern VK_FORMAT_B8G8R8_SINT :: VkFormat-pattern VK_FORMAT_B8G8R8_SINT = VkFormat 35---- | @VK_FORMAT_B8G8R8_SRGB@ specifies a three-component, 24-bit unsigned--- normalized format that has an 8-bit B component stored with sRGB--- nonlinear encoding in byte 0, an 8-bit G component stored with sRGB--- nonlinear encoding in byte 1, and an 8-bit R component stored with sRGB--- nonlinear encoding in byte 2.-pattern VK_FORMAT_B8G8R8_SRGB :: VkFormat-pattern VK_FORMAT_B8G8R8_SRGB = VkFormat 36---- | @VK_FORMAT_R8G8B8A8_UNORM@ specifies a four-component, 32-bit unsigned--- normalized format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A--- component in byte 3.-pattern VK_FORMAT_R8G8B8A8_UNORM :: VkFormat-pattern VK_FORMAT_R8G8B8A8_UNORM = VkFormat 37---- | @VK_FORMAT_R8G8B8A8_SNORM@ specifies a four-component, 32-bit signed--- normalized format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A--- component in byte 3.-pattern VK_FORMAT_R8G8B8A8_SNORM :: VkFormat-pattern VK_FORMAT_R8G8B8A8_SNORM = VkFormat 38---- | @VK_FORMAT_R8G8B8A8_USCALED@ specifies a four-component, 32-bit unsigned--- scaled format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A--- component in byte 3.-pattern VK_FORMAT_R8G8B8A8_USCALED :: VkFormat-pattern VK_FORMAT_R8G8B8A8_USCALED = VkFormat 39---- | @VK_FORMAT_R8G8B8A8_SSCALED@ specifies a four-component, 32-bit signed--- scaled format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A--- component in byte 3.-pattern VK_FORMAT_R8G8B8A8_SSCALED :: VkFormat-pattern VK_FORMAT_R8G8B8A8_SSCALED = VkFormat 40---- | @VK_FORMAT_R8G8B8A8_UINT@ specifies a four-component, 32-bit unsigned--- integer format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A--- component in byte 3.-pattern VK_FORMAT_R8G8B8A8_UINT :: VkFormat-pattern VK_FORMAT_R8G8B8A8_UINT = VkFormat 41---- | @VK_FORMAT_R8G8B8A8_SINT@ specifies a four-component, 32-bit signed--- integer format that has an 8-bit R component in byte 0, an 8-bit G--- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A--- component in byte 3.-pattern VK_FORMAT_R8G8B8A8_SINT :: VkFormat-pattern VK_FORMAT_R8G8B8A8_SINT = VkFormat 42---- | @VK_FORMAT_R8G8B8A8_SRGB@ specifies a four-component, 32-bit unsigned--- normalized format that has an 8-bit R component stored with sRGB--- nonlinear encoding in byte 0, an 8-bit G component stored with sRGB--- nonlinear encoding in byte 1, an 8-bit B component stored with sRGB--- nonlinear encoding in byte 2, and an 8-bit A component in byte 3.-pattern VK_FORMAT_R8G8B8A8_SRGB :: VkFormat-pattern VK_FORMAT_R8G8B8A8_SRGB = VkFormat 43---- | @VK_FORMAT_B8G8R8A8_UNORM@ specifies a four-component, 32-bit unsigned--- normalized format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A--- component in byte 3.-pattern VK_FORMAT_B8G8R8A8_UNORM :: VkFormat-pattern VK_FORMAT_B8G8R8A8_UNORM = VkFormat 44---- | @VK_FORMAT_B8G8R8A8_SNORM@ specifies a four-component, 32-bit signed--- normalized format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A--- component in byte 3.-pattern VK_FORMAT_B8G8R8A8_SNORM :: VkFormat-pattern VK_FORMAT_B8G8R8A8_SNORM = VkFormat 45---- | @VK_FORMAT_B8G8R8A8_USCALED@ specifies a four-component, 32-bit unsigned--- scaled format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A--- component in byte 3.-pattern VK_FORMAT_B8G8R8A8_USCALED :: VkFormat-pattern VK_FORMAT_B8G8R8A8_USCALED = VkFormat 46---- | @VK_FORMAT_B8G8R8A8_SSCALED@ specifies a four-component, 32-bit signed--- scaled format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A--- component in byte 3.-pattern VK_FORMAT_B8G8R8A8_SSCALED :: VkFormat-pattern VK_FORMAT_B8G8R8A8_SSCALED = VkFormat 47---- | @VK_FORMAT_B8G8R8A8_UINT@ specifies a four-component, 32-bit unsigned--- integer format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A--- component in byte 3.-pattern VK_FORMAT_B8G8R8A8_UINT :: VkFormat-pattern VK_FORMAT_B8G8R8A8_UINT = VkFormat 48---- | @VK_FORMAT_B8G8R8A8_SINT@ specifies a four-component, 32-bit signed--- integer format that has an 8-bit B component in byte 0, an 8-bit G--- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A--- component in byte 3.-pattern VK_FORMAT_B8G8R8A8_SINT :: VkFormat-pattern VK_FORMAT_B8G8R8A8_SINT = VkFormat 49---- | @VK_FORMAT_B8G8R8A8_SRGB@ specifies a four-component, 32-bit unsigned--- normalized format that has an 8-bit B component stored with sRGB--- nonlinear encoding in byte 0, an 8-bit G component stored with sRGB--- nonlinear encoding in byte 1, an 8-bit R component stored with sRGB--- nonlinear encoding in byte 2, and an 8-bit A component in byte 3.-pattern VK_FORMAT_B8G8R8A8_SRGB :: VkFormat-pattern VK_FORMAT_B8G8R8A8_SRGB = VkFormat 50---- | @VK_FORMAT_A8B8G8R8_UNORM_PACK32@ specifies a four-component, 32-bit--- packed unsigned normalized format that has an 8-bit A component in bits--- 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in--- bits 8..15, and an 8-bit R component in bits 0..7.-pattern VK_FORMAT_A8B8G8R8_UNORM_PACK32 :: VkFormat-pattern VK_FORMAT_A8B8G8R8_UNORM_PACK32 = VkFormat 51---- | @VK_FORMAT_A8B8G8R8_SNORM_PACK32@ specifies a four-component, 32-bit--- packed signed normalized format that has an 8-bit A component in bits--- 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in--- bits 8..15, and an 8-bit R component in bits 0..7.-pattern VK_FORMAT_A8B8G8R8_SNORM_PACK32 :: VkFormat-pattern VK_FORMAT_A8B8G8R8_SNORM_PACK32 = VkFormat 52---- | @VK_FORMAT_A8B8G8R8_USCALED_PACK32@ specifies a four-component, 32-bit--- packed unsigned scaled integer format that has an 8-bit A component in--- bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component--- in bits 8..15, and an 8-bit R component in bits 0..7.-pattern VK_FORMAT_A8B8G8R8_USCALED_PACK32 :: VkFormat-pattern VK_FORMAT_A8B8G8R8_USCALED_PACK32 = VkFormat 53---- | @VK_FORMAT_A8B8G8R8_SSCALED_PACK32@ specifies a four-component, 32-bit--- packed signed scaled integer format that has an 8-bit A component in--- bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component--- in bits 8..15, and an 8-bit R component in bits 0..7.-pattern VK_FORMAT_A8B8G8R8_SSCALED_PACK32 :: VkFormat-pattern VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = VkFormat 54---- | @VK_FORMAT_A8B8G8R8_UINT_PACK32@ specifies a four-component, 32-bit--- packed unsigned integer format that has an 8-bit A component in bits--- 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in--- bits 8..15, and an 8-bit R component in bits 0..7.-pattern VK_FORMAT_A8B8G8R8_UINT_PACK32 :: VkFormat-pattern VK_FORMAT_A8B8G8R8_UINT_PACK32 = VkFormat 55---- | @VK_FORMAT_A8B8G8R8_SINT_PACK32@ specifies a four-component, 32-bit--- packed signed integer format that has an 8-bit A component in bits--- 24..31, an 8-bit B component in bits 16..23, an 8-bit G component in--- bits 8..15, and an 8-bit R component in bits 0..7.-pattern VK_FORMAT_A8B8G8R8_SINT_PACK32 :: VkFormat-pattern VK_FORMAT_A8B8G8R8_SINT_PACK32 = VkFormat 56---- | @VK_FORMAT_A8B8G8R8_SRGB_PACK32@ specifies a four-component, 32-bit--- packed unsigned normalized format that has an 8-bit A component in bits--- 24..31, an 8-bit B component stored with sRGB nonlinear encoding in bits--- 16..23, an 8-bit G component stored with sRGB nonlinear encoding in bits--- 8..15, and an 8-bit R component stored with sRGB nonlinear encoding in--- bits 0..7.-pattern VK_FORMAT_A8B8G8R8_SRGB_PACK32 :: VkFormat-pattern VK_FORMAT_A8B8G8R8_SRGB_PACK32 = VkFormat 57---- | @VK_FORMAT_A2R10G10B10_UNORM_PACK32@ specifies a four-component, 32-bit--- packed unsigned normalized format that has a 2-bit A component in bits--- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in--- bits 10..19, and a 10-bit B component in bits 0..9.-pattern VK_FORMAT_A2R10G10B10_UNORM_PACK32 :: VkFormat-pattern VK_FORMAT_A2R10G10B10_UNORM_PACK32 = VkFormat 58---- | @VK_FORMAT_A2R10G10B10_SNORM_PACK32@ specifies a four-component, 32-bit--- packed signed normalized format that has a 2-bit A component in bits--- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in--- bits 10..19, and a 10-bit B component in bits 0..9.-pattern VK_FORMAT_A2R10G10B10_SNORM_PACK32 :: VkFormat-pattern VK_FORMAT_A2R10G10B10_SNORM_PACK32 = VkFormat 59---- | @VK_FORMAT_A2R10G10B10_USCALED_PACK32@ specifies a four-component,--- 32-bit packed unsigned scaled integer format that has a 2-bit A--- component in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit--- G component in bits 10..19, and a 10-bit B component in bits 0..9.-pattern VK_FORMAT_A2R10G10B10_USCALED_PACK32 :: VkFormat-pattern VK_FORMAT_A2R10G10B10_USCALED_PACK32 = VkFormat 60---- | @VK_FORMAT_A2R10G10B10_SSCALED_PACK32@ specifies a four-component,--- 32-bit packed signed scaled integer format that has a 2-bit A component--- in bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G--- component in bits 10..19, and a 10-bit B component in bits 0..9.-pattern VK_FORMAT_A2R10G10B10_SSCALED_PACK32 :: VkFormat-pattern VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = VkFormat 61---- | @VK_FORMAT_A2R10G10B10_UINT_PACK32@ specifies a four-component, 32-bit--- packed unsigned integer format that has a 2-bit A component in bits--- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in--- bits 10..19, and a 10-bit B component in bits 0..9.-pattern VK_FORMAT_A2R10G10B10_UINT_PACK32 :: VkFormat-pattern VK_FORMAT_A2R10G10B10_UINT_PACK32 = VkFormat 62---- | @VK_FORMAT_A2R10G10B10_SINT_PACK32@ specifies a four-component, 32-bit--- packed signed integer format that has a 2-bit A component in bits--- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in--- bits 10..19, and a 10-bit B component in bits 0..9.-pattern VK_FORMAT_A2R10G10B10_SINT_PACK32 :: VkFormat-pattern VK_FORMAT_A2R10G10B10_SINT_PACK32 = VkFormat 63---- | @VK_FORMAT_A2B10G10R10_UNORM_PACK32@ specifies a four-component, 32-bit--- packed unsigned normalized format that has a 2-bit A component in bits--- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in--- bits 10..19, and a 10-bit R component in bits 0..9.-pattern VK_FORMAT_A2B10G10R10_UNORM_PACK32 :: VkFormat-pattern VK_FORMAT_A2B10G10R10_UNORM_PACK32 = VkFormat 64---- | @VK_FORMAT_A2B10G10R10_SNORM_PACK32@ specifies a four-component, 32-bit--- packed signed normalized format that has a 2-bit A component in bits--- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in--- bits 10..19, and a 10-bit R component in bits 0..9.-pattern VK_FORMAT_A2B10G10R10_SNORM_PACK32 :: VkFormat-pattern VK_FORMAT_A2B10G10R10_SNORM_PACK32 = VkFormat 65---- | @VK_FORMAT_A2B10G10R10_USCALED_PACK32@ specifies a four-component,--- 32-bit packed unsigned scaled integer format that has a 2-bit A--- component in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit--- G component in bits 10..19, and a 10-bit R component in bits 0..9.-pattern VK_FORMAT_A2B10G10R10_USCALED_PACK32 :: VkFormat-pattern VK_FORMAT_A2B10G10R10_USCALED_PACK32 = VkFormat 66---- | @VK_FORMAT_A2B10G10R10_SSCALED_PACK32@ specifies a four-component,--- 32-bit packed signed scaled integer format that has a 2-bit A component--- in bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G--- component in bits 10..19, and a 10-bit R component in bits 0..9.-pattern VK_FORMAT_A2B10G10R10_SSCALED_PACK32 :: VkFormat-pattern VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = VkFormat 67---- | @VK_FORMAT_A2B10G10R10_UINT_PACK32@ specifies a four-component, 32-bit--- packed unsigned integer format that has a 2-bit A component in bits--- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in--- bits 10..19, and a 10-bit R component in bits 0..9.-pattern VK_FORMAT_A2B10G10R10_UINT_PACK32 :: VkFormat-pattern VK_FORMAT_A2B10G10R10_UINT_PACK32 = VkFormat 68---- | @VK_FORMAT_A2B10G10R10_SINT_PACK32@ specifies a four-component, 32-bit--- packed signed integer format that has a 2-bit A component in bits--- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in--- bits 10..19, and a 10-bit R component in bits 0..9.-pattern VK_FORMAT_A2B10G10R10_SINT_PACK32 :: VkFormat-pattern VK_FORMAT_A2B10G10R10_SINT_PACK32 = VkFormat 69---- | @VK_FORMAT_R16_UNORM@ specifies a one-component, 16-bit unsigned--- normalized format that has a single 16-bit R component.-pattern VK_FORMAT_R16_UNORM :: VkFormat-pattern VK_FORMAT_R16_UNORM = VkFormat 70---- | @VK_FORMAT_R16_SNORM@ specifies a one-component, 16-bit signed--- normalized format that has a single 16-bit R component.-pattern VK_FORMAT_R16_SNORM :: VkFormat-pattern VK_FORMAT_R16_SNORM = VkFormat 71---- | @VK_FORMAT_R16_USCALED@ specifies a one-component, 16-bit unsigned--- scaled integer format that has a single 16-bit R component.-pattern VK_FORMAT_R16_USCALED :: VkFormat-pattern VK_FORMAT_R16_USCALED = VkFormat 72---- | @VK_FORMAT_R16_SSCALED@ specifies a one-component, 16-bit signed scaled--- integer format that has a single 16-bit R component.-pattern VK_FORMAT_R16_SSCALED :: VkFormat-pattern VK_FORMAT_R16_SSCALED = VkFormat 73---- | @VK_FORMAT_R16_UINT@ specifies a one-component, 16-bit unsigned integer--- format that has a single 16-bit R component.-pattern VK_FORMAT_R16_UINT :: VkFormat-pattern VK_FORMAT_R16_UINT = VkFormat 74---- | @VK_FORMAT_R16_SINT@ specifies a one-component, 16-bit signed integer--- format that has a single 16-bit R component.-pattern VK_FORMAT_R16_SINT :: VkFormat-pattern VK_FORMAT_R16_SINT = VkFormat 75---- | @VK_FORMAT_R16_SFLOAT@ specifies a one-component, 16-bit signed--- floating-point format that has a single 16-bit R component.-pattern VK_FORMAT_R16_SFLOAT :: VkFormat-pattern VK_FORMAT_R16_SFLOAT = VkFormat 76---- | @VK_FORMAT_R16G16_UNORM@ specifies a two-component, 32-bit unsigned--- normalized format that has a 16-bit R component in bytes 0..1, and a--- 16-bit G component in bytes 2..3.-pattern VK_FORMAT_R16G16_UNORM :: VkFormat-pattern VK_FORMAT_R16G16_UNORM = VkFormat 77---- | @VK_FORMAT_R16G16_SNORM@ specifies a two-component, 32-bit signed--- normalized format that has a 16-bit R component in bytes 0..1, and a--- 16-bit G component in bytes 2..3.-pattern VK_FORMAT_R16G16_SNORM :: VkFormat-pattern VK_FORMAT_R16G16_SNORM = VkFormat 78---- | @VK_FORMAT_R16G16_USCALED@ specifies a two-component, 32-bit unsigned--- scaled integer format that has a 16-bit R component in bytes 0..1, and a--- 16-bit G component in bytes 2..3.-pattern VK_FORMAT_R16G16_USCALED :: VkFormat-pattern VK_FORMAT_R16G16_USCALED = VkFormat 79---- | @VK_FORMAT_R16G16_SSCALED@ specifies a two-component, 32-bit signed--- scaled integer format that has a 16-bit R component in bytes 0..1, and a--- 16-bit G component in bytes 2..3.-pattern VK_FORMAT_R16G16_SSCALED :: VkFormat-pattern VK_FORMAT_R16G16_SSCALED = VkFormat 80---- | @VK_FORMAT_R16G16_UINT@ specifies a two-component, 32-bit unsigned--- integer format that has a 16-bit R component in bytes 0..1, and a 16-bit--- G component in bytes 2..3.-pattern VK_FORMAT_R16G16_UINT :: VkFormat-pattern VK_FORMAT_R16G16_UINT = VkFormat 81---- | @VK_FORMAT_R16G16_SINT@ specifies a two-component, 32-bit signed integer--- format that has a 16-bit R component in bytes 0..1, and a 16-bit G--- component in bytes 2..3.-pattern VK_FORMAT_R16G16_SINT :: VkFormat-pattern VK_FORMAT_R16G16_SINT = VkFormat 82---- | @VK_FORMAT_R16G16_SFLOAT@ specifies a two-component, 32-bit signed--- floating-point format that has a 16-bit R component in bytes 0..1, and a--- 16-bit G component in bytes 2..3.-pattern VK_FORMAT_R16G16_SFLOAT :: VkFormat-pattern VK_FORMAT_R16G16_SFLOAT = VkFormat 83---- | @VK_FORMAT_R16G16B16_UNORM@ specifies a three-component, 48-bit unsigned--- normalized format that has a 16-bit R component in bytes 0..1, a 16-bit--- G component in bytes 2..3, and a 16-bit B component in bytes 4..5.-pattern VK_FORMAT_R16G16B16_UNORM :: VkFormat-pattern VK_FORMAT_R16G16B16_UNORM = VkFormat 84---- | @VK_FORMAT_R16G16B16_SNORM@ specifies a three-component, 48-bit signed--- normalized format that has a 16-bit R component in bytes 0..1, a 16-bit--- G component in bytes 2..3, and a 16-bit B component in bytes 4..5.-pattern VK_FORMAT_R16G16B16_SNORM :: VkFormat-pattern VK_FORMAT_R16G16B16_SNORM = VkFormat 85---- | @VK_FORMAT_R16G16B16_USCALED@ specifies a three-component, 48-bit--- unsigned scaled integer format that has a 16-bit R component in bytes--- 0..1, a 16-bit G component in bytes 2..3, and a 16-bit B component in--- bytes 4..5.-pattern VK_FORMAT_R16G16B16_USCALED :: VkFormat-pattern VK_FORMAT_R16G16B16_USCALED = VkFormat 86---- | @VK_FORMAT_R16G16B16_SSCALED@ specifies a three-component, 48-bit signed--- scaled integer format that has a 16-bit R component in bytes 0..1, a--- 16-bit G component in bytes 2..3, and a 16-bit B component in bytes--- 4..5.-pattern VK_FORMAT_R16G16B16_SSCALED :: VkFormat-pattern VK_FORMAT_R16G16B16_SSCALED = VkFormat 87---- | @VK_FORMAT_R16G16B16_UINT@ specifies a three-component, 48-bit unsigned--- integer format that has a 16-bit R component in bytes 0..1, a 16-bit G--- component in bytes 2..3, and a 16-bit B component in bytes 4..5.-pattern VK_FORMAT_R16G16B16_UINT :: VkFormat-pattern VK_FORMAT_R16G16B16_UINT = VkFormat 88---- | @VK_FORMAT_R16G16B16_SINT@ specifies a three-component, 48-bit signed--- integer format that has a 16-bit R component in bytes 0..1, a 16-bit G--- component in bytes 2..3, and a 16-bit B component in bytes 4..5.-pattern VK_FORMAT_R16G16B16_SINT :: VkFormat-pattern VK_FORMAT_R16G16B16_SINT = VkFormat 89---- | @VK_FORMAT_R16G16B16_SFLOAT@ specifies a three-component, 48-bit signed--- floating-point format that has a 16-bit R component in bytes 0..1, a--- 16-bit G component in bytes 2..3, and a 16-bit B component in bytes--- 4..5.-pattern VK_FORMAT_R16G16B16_SFLOAT :: VkFormat-pattern VK_FORMAT_R16G16B16_SFLOAT = VkFormat 90---- | @VK_FORMAT_R16G16B16A16_UNORM@ specifies a four-component, 64-bit--- unsigned normalized format that has a 16-bit R component in bytes 0..1,--- a 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5,--- and a 16-bit A component in bytes 6..7.-pattern VK_FORMAT_R16G16B16A16_UNORM :: VkFormat-pattern VK_FORMAT_R16G16B16A16_UNORM = VkFormat 91---- | @VK_FORMAT_R16G16B16A16_SNORM@ specifies a four-component, 64-bit signed--- normalized format that has a 16-bit R component in bytes 0..1, a 16-bit--- G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a--- 16-bit A component in bytes 6..7.-pattern VK_FORMAT_R16G16B16A16_SNORM :: VkFormat-pattern VK_FORMAT_R16G16B16A16_SNORM = VkFormat 92---- | @VK_FORMAT_R16G16B16A16_USCALED@ specifies a four-component, 64-bit--- unsigned scaled integer format that has a 16-bit R component in bytes--- 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes--- 4..5, and a 16-bit A component in bytes 6..7.-pattern VK_FORMAT_R16G16B16A16_USCALED :: VkFormat-pattern VK_FORMAT_R16G16B16A16_USCALED = VkFormat 93---- | @VK_FORMAT_R16G16B16A16_SSCALED@ specifies a four-component, 64-bit--- signed scaled integer format that has a 16-bit R component in bytes--- 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes--- 4..5, and a 16-bit A component in bytes 6..7.-pattern VK_FORMAT_R16G16B16A16_SSCALED :: VkFormat-pattern VK_FORMAT_R16G16B16A16_SSCALED = VkFormat 94---- | @VK_FORMAT_R16G16B16A16_UINT@ specifies a four-component, 64-bit--- unsigned integer format that has a 16-bit R component in bytes 0..1, a--- 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5,--- and a 16-bit A component in bytes 6..7.-pattern VK_FORMAT_R16G16B16A16_UINT :: VkFormat-pattern VK_FORMAT_R16G16B16A16_UINT = VkFormat 95---- | @VK_FORMAT_R16G16B16A16_SINT@ specifies a four-component, 64-bit signed--- integer format that has a 16-bit R component in bytes 0..1, a 16-bit G--- component in bytes 2..3, a 16-bit B component in bytes 4..5, and a--- 16-bit A component in bytes 6..7.-pattern VK_FORMAT_R16G16B16A16_SINT :: VkFormat-pattern VK_FORMAT_R16G16B16A16_SINT = VkFormat 96---- | @VK_FORMAT_R16G16B16A16_SFLOAT@ specifies a four-component, 64-bit--- signed floating-point format that has a 16-bit R component in bytes--- 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes--- 4..5, and a 16-bit A component in bytes 6..7.-pattern VK_FORMAT_R16G16B16A16_SFLOAT :: VkFormat-pattern VK_FORMAT_R16G16B16A16_SFLOAT = VkFormat 97---- | @VK_FORMAT_R32_UINT@ specifies a one-component, 32-bit unsigned integer--- format that has a single 32-bit R component.-pattern VK_FORMAT_R32_UINT :: VkFormat-pattern VK_FORMAT_R32_UINT = VkFormat 98---- | @VK_FORMAT_R32_SINT@ specifies a one-component, 32-bit signed integer--- format that has a single 32-bit R component.-pattern VK_FORMAT_R32_SINT :: VkFormat-pattern VK_FORMAT_R32_SINT = VkFormat 99---- | @VK_FORMAT_R32_SFLOAT@ specifies a one-component, 32-bit signed--- floating-point format that has a single 32-bit R component.-pattern VK_FORMAT_R32_SFLOAT :: VkFormat-pattern VK_FORMAT_R32_SFLOAT = VkFormat 100---- | @VK_FORMAT_R32G32_UINT@ specifies a two-component, 64-bit unsigned--- integer format that has a 32-bit R component in bytes 0..3, and a 32-bit--- G component in bytes 4..7.-pattern VK_FORMAT_R32G32_UINT :: VkFormat-pattern VK_FORMAT_R32G32_UINT = VkFormat 101---- | @VK_FORMAT_R32G32_SINT@ specifies a two-component, 64-bit signed integer--- format that has a 32-bit R component in bytes 0..3, and a 32-bit G--- component in bytes 4..7.-pattern VK_FORMAT_R32G32_SINT :: VkFormat-pattern VK_FORMAT_R32G32_SINT = VkFormat 102---- | @VK_FORMAT_R32G32_SFLOAT@ specifies a two-component, 64-bit signed--- floating-point format that has a 32-bit R component in bytes 0..3, and a--- 32-bit G component in bytes 4..7.-pattern VK_FORMAT_R32G32_SFLOAT :: VkFormat-pattern VK_FORMAT_R32G32_SFLOAT = VkFormat 103---- | @VK_FORMAT_R32G32B32_UINT@ specifies a three-component, 96-bit unsigned--- integer format that has a 32-bit R component in bytes 0..3, a 32-bit G--- component in bytes 4..7, and a 32-bit B component in bytes 8..11.-pattern VK_FORMAT_R32G32B32_UINT :: VkFormat-pattern VK_FORMAT_R32G32B32_UINT = VkFormat 104---- | @VK_FORMAT_R32G32B32_SINT@ specifies a three-component, 96-bit signed--- integer format that has a 32-bit R component in bytes 0..3, a 32-bit G--- component in bytes 4..7, and a 32-bit B component in bytes 8..11.-pattern VK_FORMAT_R32G32B32_SINT :: VkFormat-pattern VK_FORMAT_R32G32B32_SINT = VkFormat 105---- | @VK_FORMAT_R32G32B32_SFLOAT@ specifies a three-component, 96-bit signed--- floating-point format that has a 32-bit R component in bytes 0..3, a--- 32-bit G component in bytes 4..7, and a 32-bit B component in bytes--- 8..11.-pattern VK_FORMAT_R32G32B32_SFLOAT :: VkFormat-pattern VK_FORMAT_R32G32B32_SFLOAT = VkFormat 106---- | @VK_FORMAT_R32G32B32A32_UINT@ specifies a four-component, 128-bit--- unsigned integer format that has a 32-bit R component in bytes 0..3, a--- 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11,--- and a 32-bit A component in bytes 12..15.-pattern VK_FORMAT_R32G32B32A32_UINT :: VkFormat-pattern VK_FORMAT_R32G32B32A32_UINT = VkFormat 107---- | @VK_FORMAT_R32G32B32A32_SINT@ specifies a four-component, 128-bit signed--- integer format that has a 32-bit R component in bytes 0..3, a 32-bit G--- component in bytes 4..7, a 32-bit B component in bytes 8..11, and a--- 32-bit A component in bytes 12..15.-pattern VK_FORMAT_R32G32B32A32_SINT :: VkFormat-pattern VK_FORMAT_R32G32B32A32_SINT = VkFormat 108---- | @VK_FORMAT_R32G32B32A32_SFLOAT@ specifies a four-component, 128-bit--- signed floating-point format that has a 32-bit R component in bytes--- 0..3, a 32-bit G component in bytes 4..7, a 32-bit B component in bytes--- 8..11, and a 32-bit A component in bytes 12..15.-pattern VK_FORMAT_R32G32B32A32_SFLOAT :: VkFormat-pattern VK_FORMAT_R32G32B32A32_SFLOAT = VkFormat 109---- | @VK_FORMAT_R64_UINT@ specifies a one-component, 64-bit unsigned integer--- format that has a single 64-bit R component.-pattern VK_FORMAT_R64_UINT :: VkFormat-pattern VK_FORMAT_R64_UINT = VkFormat 110---- | @VK_FORMAT_R64_SINT@ specifies a one-component, 64-bit signed integer--- format that has a single 64-bit R component.-pattern VK_FORMAT_R64_SINT :: VkFormat-pattern VK_FORMAT_R64_SINT = VkFormat 111---- | @VK_FORMAT_R64_SFLOAT@ specifies a one-component, 64-bit signed--- floating-point format that has a single 64-bit R component.-pattern VK_FORMAT_R64_SFLOAT :: VkFormat-pattern VK_FORMAT_R64_SFLOAT = VkFormat 112---- | @VK_FORMAT_R64G64_UINT@ specifies a two-component, 128-bit unsigned--- integer format that has a 64-bit R component in bytes 0..7, and a 64-bit--- G component in bytes 8..15.-pattern VK_FORMAT_R64G64_UINT :: VkFormat-pattern VK_FORMAT_R64G64_UINT = VkFormat 113---- | @VK_FORMAT_R64G64_SINT@ specifies a two-component, 128-bit signed--- integer format that has a 64-bit R component in bytes 0..7, and a 64-bit--- G component in bytes 8..15.-pattern VK_FORMAT_R64G64_SINT :: VkFormat-pattern VK_FORMAT_R64G64_SINT = VkFormat 114---- | @VK_FORMAT_R64G64_SFLOAT@ specifies a two-component, 128-bit signed--- floating-point format that has a 64-bit R component in bytes 0..7, and a--- 64-bit G component in bytes 8..15.-pattern VK_FORMAT_R64G64_SFLOAT :: VkFormat-pattern VK_FORMAT_R64G64_SFLOAT = VkFormat 115---- | @VK_FORMAT_R64G64B64_UINT@ specifies a three-component, 192-bit unsigned--- integer format that has a 64-bit R component in bytes 0..7, a 64-bit G--- component in bytes 8..15, and a 64-bit B component in bytes 16..23.-pattern VK_FORMAT_R64G64B64_UINT :: VkFormat-pattern VK_FORMAT_R64G64B64_UINT = VkFormat 116---- | @VK_FORMAT_R64G64B64_SINT@ specifies a three-component, 192-bit signed--- integer format that has a 64-bit R component in bytes 0..7, a 64-bit G--- component in bytes 8..15, and a 64-bit B component in bytes 16..23.-pattern VK_FORMAT_R64G64B64_SINT :: VkFormat-pattern VK_FORMAT_R64G64B64_SINT = VkFormat 117---- | @VK_FORMAT_R64G64B64_SFLOAT@ specifies a three-component, 192-bit signed--- floating-point format that has a 64-bit R component in bytes 0..7, a--- 64-bit G component in bytes 8..15, and a 64-bit B component in bytes--- 16..23.-pattern VK_FORMAT_R64G64B64_SFLOAT :: VkFormat-pattern VK_FORMAT_R64G64B64_SFLOAT = VkFormat 118---- | @VK_FORMAT_R64G64B64A64_UINT@ specifies a four-component, 256-bit--- unsigned integer format that has a 64-bit R component in bytes 0..7, a--- 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23,--- and a 64-bit A component in bytes 24..31.-pattern VK_FORMAT_R64G64B64A64_UINT :: VkFormat-pattern VK_FORMAT_R64G64B64A64_UINT = VkFormat 119---- | @VK_FORMAT_R64G64B64A64_SINT@ specifies a four-component, 256-bit signed--- integer format that has a 64-bit R component in bytes 0..7, a 64-bit G--- component in bytes 8..15, a 64-bit B component in bytes 16..23, and a--- 64-bit A component in bytes 24..31.-pattern VK_FORMAT_R64G64B64A64_SINT :: VkFormat-pattern VK_FORMAT_R64G64B64A64_SINT = VkFormat 120---- | @VK_FORMAT_R64G64B64A64_SFLOAT@ specifies a four-component, 256-bit--- signed floating-point format that has a 64-bit R component in bytes--- 0..7, a 64-bit G component in bytes 8..15, a 64-bit B component in bytes--- 16..23, and a 64-bit A component in bytes 24..31.-pattern VK_FORMAT_R64G64B64A64_SFLOAT :: VkFormat-pattern VK_FORMAT_R64G64B64A64_SFLOAT = VkFormat 121---- | @VK_FORMAT_B10G11R11_UFLOAT_PACK32@ specifies a three-component, 32-bit--- packed unsigned floating-point format that has a 10-bit B component in--- bits 22..31, an 11-bit G component in bits 11..21, an 11-bit R component--- in bits 0..10. See--- [{html_spec_relative}#fundamentals-fp10](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-fp10)--- and--- [{html_spec_relative}#fundamentals-fp11](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-fp11).-pattern VK_FORMAT_B10G11R11_UFLOAT_PACK32 :: VkFormat-pattern VK_FORMAT_B10G11R11_UFLOAT_PACK32 = VkFormat 122---- | @VK_FORMAT_E5B9G9R9_UFLOAT_PACK32@ specifies a three-component, 32-bit--- packed unsigned floating-point format that has a 5-bit shared exponent--- in bits 27..31, a 9-bit B component mantissa in bits 18..26, a 9-bit G--- component mantissa in bits 9..17, and a 9-bit R component mantissa in--- bits 0..8.-pattern VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 :: VkFormat-pattern VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = VkFormat 123---- | @VK_FORMAT_D16_UNORM@ specifies a one-component, 16-bit unsigned--- normalized format that has a single 16-bit depth component.-pattern VK_FORMAT_D16_UNORM :: VkFormat-pattern VK_FORMAT_D16_UNORM = VkFormat 124---- | @VK_FORMAT_X8_D24_UNORM_PACK32@ specifies a two-component, 32-bit format--- that has 24 unsigned normalized bits in the depth component and,--- optionally:, 8 bits that are unused.-pattern VK_FORMAT_X8_D24_UNORM_PACK32 :: VkFormat-pattern VK_FORMAT_X8_D24_UNORM_PACK32 = VkFormat 125---- | @VK_FORMAT_D32_SFLOAT@ specifies a one-component, 32-bit signed--- floating-point format that has 32-bits in the depth component.-pattern VK_FORMAT_D32_SFLOAT :: VkFormat-pattern VK_FORMAT_D32_SFLOAT = VkFormat 126---- | @VK_FORMAT_S8_UINT@ specifies a one-component, 8-bit unsigned integer--- format that has 8-bits in the stencil component.-pattern VK_FORMAT_S8_UINT :: VkFormat-pattern VK_FORMAT_S8_UINT = VkFormat 127---- | @VK_FORMAT_D16_UNORM_S8_UINT@ specifies a two-component, 24-bit format--- that has 16 unsigned normalized bits in the depth component and 8--- unsigned integer bits in the stencil component.-pattern VK_FORMAT_D16_UNORM_S8_UINT :: VkFormat-pattern VK_FORMAT_D16_UNORM_S8_UINT = VkFormat 128---- | @VK_FORMAT_D24_UNORM_S8_UINT@ specifies a two-component, 32-bit packed--- format that has 8 unsigned integer bits in the stencil component, and 24--- unsigned normalized bits in the depth component.-pattern VK_FORMAT_D24_UNORM_S8_UINT :: VkFormat-pattern VK_FORMAT_D24_UNORM_S8_UINT = VkFormat 129---- | @VK_FORMAT_D32_SFLOAT_S8_UINT@ specifies a two-component format that has--- 32 signed float bits in the depth component and 8 unsigned integer bits--- in the stencil component. There are optionally: 24-bits that are unused.-pattern VK_FORMAT_D32_SFLOAT_S8_UINT :: VkFormat-pattern VK_FORMAT_D32_SFLOAT_S8_UINT = VkFormat 130---- | @VK_FORMAT_BC1_RGB_UNORM_BLOCK@ specifies a three-component,--- block-compressed format where each 64-bit compressed texel block encodes--- a 4×4 rectangle of unsigned normalized RGB texel data. This format has--- no alpha and is considered opaque.-pattern VK_FORMAT_BC1_RGB_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_BC1_RGB_UNORM_BLOCK = VkFormat 131---- | @VK_FORMAT_BC1_RGB_SRGB_BLOCK@ specifies a three-component,--- block-compressed format where each 64-bit compressed texel block encodes--- a 4×4 rectangle of unsigned normalized RGB texel data with sRGB--- nonlinear encoding. This format has no alpha and is considered opaque.-pattern VK_FORMAT_BC1_RGB_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_BC1_RGB_SRGB_BLOCK = VkFormat 132---- | @VK_FORMAT_BC1_RGBA_UNORM_BLOCK@ specifies a four-component,--- block-compressed format where each 64-bit compressed texel block encodes--- a 4×4 rectangle of unsigned normalized RGB texel data, and provides 1--- bit of alpha.-pattern VK_FORMAT_BC1_RGBA_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_BC1_RGBA_UNORM_BLOCK = VkFormat 133---- | @VK_FORMAT_BC1_RGBA_SRGB_BLOCK@ specifies a four-component,--- block-compressed format where each 64-bit compressed texel block encodes--- a 4×4 rectangle of unsigned normalized RGB texel data with sRGB--- nonlinear encoding, and provides 1 bit of alpha.-pattern VK_FORMAT_BC1_RGBA_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_BC1_RGBA_SRGB_BLOCK = VkFormat 134---- | @VK_FORMAT_BC2_UNORM_BLOCK@ specifies a four-component, block-compressed--- format where each 128-bit compressed texel block encodes a 4×4 rectangle--- of unsigned normalized RGBA texel data with the first 64 bits encoding--- alpha values followed by 64 bits encoding RGB values.-pattern VK_FORMAT_BC2_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_BC2_UNORM_BLOCK = VkFormat 135---- | @VK_FORMAT_BC2_SRGB_BLOCK@ specifies a four-component, block-compressed--- format where each 128-bit compressed texel block encodes a 4×4 rectangle--- of unsigned normalized RGBA texel data with the first 64 bits encoding--- alpha values followed by 64 bits encoding RGB values with sRGB nonlinear--- encoding.-pattern VK_FORMAT_BC2_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_BC2_SRGB_BLOCK = VkFormat 136---- | @VK_FORMAT_BC3_UNORM_BLOCK@ specifies a four-component, block-compressed--- format where each 128-bit compressed texel block encodes a 4×4 rectangle--- of unsigned normalized RGBA texel data with the first 64 bits encoding--- alpha values followed by 64 bits encoding RGB values.-pattern VK_FORMAT_BC3_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_BC3_UNORM_BLOCK = VkFormat 137---- | @VK_FORMAT_BC3_SRGB_BLOCK@ specifies a four-component, block-compressed--- format where each 128-bit compressed texel block encodes a 4×4 rectangle--- of unsigned normalized RGBA texel data with the first 64 bits encoding--- alpha values followed by 64 bits encoding RGB values with sRGB nonlinear--- encoding.-pattern VK_FORMAT_BC3_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_BC3_SRGB_BLOCK = VkFormat 138---- | @VK_FORMAT_BC4_UNORM_BLOCK@ specifies a one-component, block-compressed--- format where each 64-bit compressed texel block encodes a 4×4 rectangle--- of unsigned normalized red texel data.-pattern VK_FORMAT_BC4_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_BC4_UNORM_BLOCK = VkFormat 139---- | @VK_FORMAT_BC4_SNORM_BLOCK@ specifies a one-component, block-compressed--- format where each 64-bit compressed texel block encodes a 4×4 rectangle--- of signed normalized red texel data.-pattern VK_FORMAT_BC4_SNORM_BLOCK :: VkFormat-pattern VK_FORMAT_BC4_SNORM_BLOCK = VkFormat 140---- | @VK_FORMAT_BC5_UNORM_BLOCK@ specifies a two-component, block-compressed--- format where each 128-bit compressed texel block encodes a 4×4 rectangle--- of unsigned normalized RG texel data with the first 64 bits encoding red--- values followed by 64 bits encoding green values.-pattern VK_FORMAT_BC5_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_BC5_UNORM_BLOCK = VkFormat 141---- | @VK_FORMAT_BC5_SNORM_BLOCK@ specifies a two-component, block-compressed--- format where each 128-bit compressed texel block encodes a 4×4 rectangle--- of signed normalized RG texel data with the first 64 bits encoding red--- values followed by 64 bits encoding green values.-pattern VK_FORMAT_BC5_SNORM_BLOCK :: VkFormat-pattern VK_FORMAT_BC5_SNORM_BLOCK = VkFormat 142---- | @VK_FORMAT_BC6H_UFLOAT_BLOCK@ specifies a three-component,--- block-compressed format where each 128-bit compressed texel block--- encodes a 4×4 rectangle of unsigned floating-point RGB texel data.-pattern VK_FORMAT_BC6H_UFLOAT_BLOCK :: VkFormat-pattern VK_FORMAT_BC6H_UFLOAT_BLOCK = VkFormat 143---- | @VK_FORMAT_BC6H_SFLOAT_BLOCK@ specifies a three-component,--- block-compressed format where each 128-bit compressed texel block--- encodes a 4×4 rectangle of signed floating-point RGB texel data.-pattern VK_FORMAT_BC6H_SFLOAT_BLOCK :: VkFormat-pattern VK_FORMAT_BC6H_SFLOAT_BLOCK = VkFormat 144---- | @VK_FORMAT_BC7_UNORM_BLOCK@ specifies a four-component, block-compressed--- format where each 128-bit compressed texel block encodes a 4×4 rectangle--- of unsigned normalized RGBA texel data.-pattern VK_FORMAT_BC7_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_BC7_UNORM_BLOCK = VkFormat 145---- | @VK_FORMAT_BC7_SRGB_BLOCK@ specifies a four-component, block-compressed--- format where each 128-bit compressed texel block encodes a 4×4 rectangle--- of unsigned normalized RGBA texel data with sRGB nonlinear encoding--- applied to the RGB components.-pattern VK_FORMAT_BC7_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_BC7_SRGB_BLOCK = VkFormat 146---- | @VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK@ specifies a three-component, ETC2--- compressed format where each 64-bit compressed texel block encodes a 4×4--- rectangle of unsigned normalized RGB texel data. This format has no--- alpha and is considered opaque.-pattern VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = VkFormat 147---- | @VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK@ specifies a three-component, ETC2--- compressed format where each 64-bit compressed texel block encodes a 4×4--- rectangle of unsigned normalized RGB texel data with sRGB nonlinear--- encoding. This format has no alpha and is considered opaque.-pattern VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = VkFormat 148---- | @VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK@ specifies a four-component, ETC2--- compressed format where each 64-bit compressed texel block encodes a 4×4--- rectangle of unsigned normalized RGB texel data, and provides 1 bit of--- alpha.-pattern VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = VkFormat 149---- | @VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK@ specifies a four-component, ETC2--- compressed format where each 64-bit compressed texel block encodes a 4×4--- rectangle of unsigned normalized RGB texel data with sRGB nonlinear--- encoding, and provides 1 bit of alpha.-pattern VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = VkFormat 150---- | @VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK@ specifies a four-component, ETC2--- compressed format where each 128-bit compressed texel block encodes a--- 4×4 rectangle of unsigned normalized RGBA texel data with the first 64--- bits encoding alpha values followed by 64 bits encoding RGB values.-pattern VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = VkFormat 151---- | @VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK@ specifies a four-component, ETC2--- compressed format where each 128-bit compressed texel block encodes a--- 4×4 rectangle of unsigned normalized RGBA texel data with the first 64--- bits encoding alpha values followed by 64 bits encoding RGB values with--- sRGB nonlinear encoding applied.-pattern VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = VkFormat 152---- | @VK_FORMAT_EAC_R11_UNORM_BLOCK@ specifies a one-component, ETC2--- compressed format where each 64-bit compressed texel block encodes a 4×4--- rectangle of unsigned normalized red texel data.-pattern VK_FORMAT_EAC_R11_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_EAC_R11_UNORM_BLOCK = VkFormat 153---- | @VK_FORMAT_EAC_R11_SNORM_BLOCK@ specifies a one-component, ETC2--- compressed format where each 64-bit compressed texel block encodes a 4×4--- rectangle of signed normalized red texel data.-pattern VK_FORMAT_EAC_R11_SNORM_BLOCK :: VkFormat-pattern VK_FORMAT_EAC_R11_SNORM_BLOCK = VkFormat 154---- | @VK_FORMAT_EAC_R11G11_UNORM_BLOCK@ specifies a two-component, ETC2--- compressed format where each 128-bit compressed texel block encodes a--- 4×4 rectangle of unsigned normalized RG texel data with the first 64--- bits encoding red values followed by 64 bits encoding green values.-pattern VK_FORMAT_EAC_R11G11_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_EAC_R11G11_UNORM_BLOCK = VkFormat 155---- | @VK_FORMAT_EAC_R11G11_SNORM_BLOCK@ specifies a two-component, ETC2--- compressed format where each 128-bit compressed texel block encodes a--- 4×4 rectangle of signed normalized RG texel data with the first 64 bits--- encoding red values followed by 64 bits encoding green values.-pattern VK_FORMAT_EAC_R11G11_SNORM_BLOCK :: VkFormat-pattern VK_FORMAT_EAC_R11G11_SNORM_BLOCK = VkFormat 156---- | @VK_FORMAT_ASTC_4x4_UNORM_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 4×4 rectangle of unsigned normalized RGBA texel data.-pattern VK_FORMAT_ASTC_4x4_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_4x4_UNORM_BLOCK = VkFormat 157---- | @VK_FORMAT_ASTC_4x4_SRGB_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 4×4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear--- encoding applied to the RGB components.-pattern VK_FORMAT_ASTC_4x4_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_4x4_SRGB_BLOCK = VkFormat 158---- | @VK_FORMAT_ASTC_5x4_UNORM_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 5×4 rectangle of unsigned normalized RGBA texel data.-pattern VK_FORMAT_ASTC_5x4_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_5x4_UNORM_BLOCK = VkFormat 159---- | @VK_FORMAT_ASTC_5x4_SRGB_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 5×4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear--- encoding applied to the RGB components.-pattern VK_FORMAT_ASTC_5x4_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_5x4_SRGB_BLOCK = VkFormat 160---- | @VK_FORMAT_ASTC_5x5_UNORM_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 5×5 rectangle of unsigned normalized RGBA texel data.-pattern VK_FORMAT_ASTC_5x5_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_5x5_UNORM_BLOCK = VkFormat 161---- | @VK_FORMAT_ASTC_5x5_SRGB_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 5×5 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear--- encoding applied to the RGB components.-pattern VK_FORMAT_ASTC_5x5_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_5x5_SRGB_BLOCK = VkFormat 162---- | @VK_FORMAT_ASTC_6x5_UNORM_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 6×5 rectangle of unsigned normalized RGBA texel data.-pattern VK_FORMAT_ASTC_6x5_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_6x5_UNORM_BLOCK = VkFormat 163---- | @VK_FORMAT_ASTC_6x5_SRGB_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 6×5 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear--- encoding applied to the RGB components.-pattern VK_FORMAT_ASTC_6x5_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_6x5_SRGB_BLOCK = VkFormat 164---- | @VK_FORMAT_ASTC_6x6_UNORM_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 6×6 rectangle of unsigned normalized RGBA texel data.-pattern VK_FORMAT_ASTC_6x6_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_6x6_UNORM_BLOCK = VkFormat 165---- | @VK_FORMAT_ASTC_6x6_SRGB_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 6×6 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear--- encoding applied to the RGB components.-pattern VK_FORMAT_ASTC_6x6_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_6x6_SRGB_BLOCK = VkFormat 166---- | @VK_FORMAT_ASTC_8x5_UNORM_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes an--- 8×5 rectangle of unsigned normalized RGBA texel data.-pattern VK_FORMAT_ASTC_8x5_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_8x5_UNORM_BLOCK = VkFormat 167---- | @VK_FORMAT_ASTC_8x5_SRGB_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes an--- 8×5 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear--- encoding applied to the RGB components.-pattern VK_FORMAT_ASTC_8x5_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_8x5_SRGB_BLOCK = VkFormat 168---- | @VK_FORMAT_ASTC_8x6_UNORM_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes an--- 8×6 rectangle of unsigned normalized RGBA texel data.-pattern VK_FORMAT_ASTC_8x6_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_8x6_UNORM_BLOCK = VkFormat 169---- | @VK_FORMAT_ASTC_8x6_SRGB_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes an--- 8×6 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear--- encoding applied to the RGB components.-pattern VK_FORMAT_ASTC_8x6_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_8x6_SRGB_BLOCK = VkFormat 170---- | @VK_FORMAT_ASTC_8x8_UNORM_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes an--- 8×8 rectangle of unsigned normalized RGBA texel data.-pattern VK_FORMAT_ASTC_8x8_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_8x8_UNORM_BLOCK = VkFormat 171---- | @VK_FORMAT_ASTC_8x8_SRGB_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes an--- 8×8 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear--- encoding applied to the RGB components.-pattern VK_FORMAT_ASTC_8x8_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_8x8_SRGB_BLOCK = VkFormat 172---- | @VK_FORMAT_ASTC_10x5_UNORM_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 10×5 rectangle of unsigned normalized RGBA texel data.-pattern VK_FORMAT_ASTC_10x5_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_10x5_UNORM_BLOCK = VkFormat 173---- | @VK_FORMAT_ASTC_10x5_SRGB_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 10×5 rectangle of unsigned normalized RGBA texel data with sRGB--- nonlinear encoding applied to the RGB components.-pattern VK_FORMAT_ASTC_10x5_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_10x5_SRGB_BLOCK = VkFormat 174---- | @VK_FORMAT_ASTC_10x6_UNORM_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 10×6 rectangle of unsigned normalized RGBA texel data.-pattern VK_FORMAT_ASTC_10x6_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_10x6_UNORM_BLOCK = VkFormat 175---- | @VK_FORMAT_ASTC_10x6_SRGB_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 10×6 rectangle of unsigned normalized RGBA texel data with sRGB--- nonlinear encoding applied to the RGB components.-pattern VK_FORMAT_ASTC_10x6_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_10x6_SRGB_BLOCK = VkFormat 176---- | @VK_FORMAT_ASTC_10x8_UNORM_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 10×8 rectangle of unsigned normalized RGBA texel data.-pattern VK_FORMAT_ASTC_10x8_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_10x8_UNORM_BLOCK = VkFormat 177---- | @VK_FORMAT_ASTC_10x8_SRGB_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 10×8 rectangle of unsigned normalized RGBA texel data with sRGB--- nonlinear encoding applied to the RGB components.-pattern VK_FORMAT_ASTC_10x8_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_10x8_SRGB_BLOCK = VkFormat 178---- | @VK_FORMAT_ASTC_10x10_UNORM_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 10×10 rectangle of unsigned normalized RGBA texel data.-pattern VK_FORMAT_ASTC_10x10_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_10x10_UNORM_BLOCK = VkFormat 179---- | @VK_FORMAT_ASTC_10x10_SRGB_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 10×10 rectangle of unsigned normalized RGBA texel data with sRGB--- nonlinear encoding applied to the RGB components.-pattern VK_FORMAT_ASTC_10x10_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_10x10_SRGB_BLOCK = VkFormat 180---- | @VK_FORMAT_ASTC_12x10_UNORM_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 12×10 rectangle of unsigned normalized RGBA texel data.-pattern VK_FORMAT_ASTC_12x10_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_12x10_UNORM_BLOCK = VkFormat 181---- | @VK_FORMAT_ASTC_12x10_SRGB_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 12×10 rectangle of unsigned normalized RGBA texel data with sRGB--- nonlinear encoding applied to the RGB components.-pattern VK_FORMAT_ASTC_12x10_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_12x10_SRGB_BLOCK = VkFormat 182---- | @VK_FORMAT_ASTC_12x12_UNORM_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 12×12 rectangle of unsigned normalized RGBA texel data.-pattern VK_FORMAT_ASTC_12x12_UNORM_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_12x12_UNORM_BLOCK = VkFormat 183---- | @VK_FORMAT_ASTC_12x12_SRGB_BLOCK@ specifies a four-component, ASTC--- compressed format where each 128-bit compressed texel block encodes a--- 12×12 rectangle of unsigned normalized RGBA texel data with sRGB--- nonlinear encoding applied to the RGB components.-pattern VK_FORMAT_ASTC_12x12_SRGB_BLOCK :: VkFormat-pattern VK_FORMAT_ASTC_12x12_SRGB_BLOCK = VkFormat 184--- ** VkResult---- | VkResult - Vulkan command return codes------ = Description------ - @VK_SUCCESS@ Command successfully completed------ - @VK_NOT_READY@ A fence or query has not yet completed------ - @VK_TIMEOUT@ A wait operation has not completed in the specified--- time------ - @VK_EVENT_SET@ An event is signaled------ - @VK_EVENT_RESET@ An event is unsignaled------ - @VK_INCOMPLETE@ A return array was too small for the result------ - @VK_SUBOPTIMAL_KHR@ A swapchain no longer matches the surface--- properties exactly, but /can/ still be used to present to the--- surface successfully.------ - @VK_ERROR_OUT_OF_HOST_MEMORY@ A host memory allocation has failed.------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@ A device memory allocation has--- failed.------ - @VK_ERROR_INITIALIZATION_FAILED@ Initialization of an object could--- not be completed for implementation-specific reasons.------ - @VK_ERROR_DEVICE_LOST@ The logical or physical device has been lost.--- See [Lost--- Device](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-lost-device)------ - @VK_ERROR_MEMORY_MAP_FAILED@ Mapping of a memory object has failed.------ - @VK_ERROR_LAYER_NOT_PRESENT@ A requested layer is not present or--- could not be loaded.------ - @VK_ERROR_EXTENSION_NOT_PRESENT@ A requested extension is not--- supported.------ - @VK_ERROR_FEATURE_NOT_PRESENT@ A requested feature is not supported.------ - @VK_ERROR_INCOMPATIBLE_DRIVER@ The requested version of Vulkan is--- not supported by the driver or is otherwise incompatible for--- implementation-specific reasons.------ - @VK_ERROR_TOO_MANY_OBJECTS@ Too many objects of the type have--- already been created.------ - @VK_ERROR_FORMAT_NOT_SUPPORTED@ A requested format is not supported--- on this device.------ - @VK_ERROR_FRAGMENTED_POOL@ A pool allocation has failed due to--- fragmentation of the pool’s memory. This /must/ only be returned if--- no attempt to allocate host or device memory was made to accomodate--- the new allocation. This /should/ be returned in preference to--- @VK_ERROR_OUT_OF_POOL_MEMORY@, but only if the implementation is--- certain that the pool allocation failure was due to fragmentation.------ - @VK_ERROR_SURFACE_LOST_KHR@ A surface is no longer available.------ - @VK_ERROR_NATIVE_WINDOW_IN_USE_KHR@ The requested window is already--- in use by Vulkan or another API in a manner which prevents it from--- being used again.------ - @VK_ERROR_OUT_OF_DATE_KHR@ A surface has changed in such a way that--- it is no longer compatible with the swapchain, and further--- presentation requests using the swapchain will fail. Applications--- /must/ query the new surface properties and recreate their swapchain--- if they wish to continue presenting to the surface.------ - @VK_ERROR_INCOMPATIBLE_DISPLAY_KHR@ The display used by a swapchain--- does not use the same presentable image layout, or is incompatible--- in a way that prevents sharing an image.------ - @VK_ERROR_INVALID_SHADER_NV@ One or more shaders failed to compile--- or link. More details are reported back to the application via--- @{html_spec_relative}#VK_EXT_debug_report@ if enabled.------ - @VK_ERROR_OUT_OF_POOL_MEMORY@ A pool memory allocation has failed.--- This /must/ only be returned if no attempt to allocate host or--- device memory was made to accomodate the new allocation. If the--- failure was definitely due to fragmentation of the pool,--- @VK_ERROR_FRAGMENTED_POOL@ /should/ be returned instead.------ - @VK_ERROR_INVALID_EXTERNAL_HANDLE@ An external handle is not a valid--- handle of the specified type.------ - @VK_ERROR_FRAGMENTATION_EXT@ A descriptor pool creation has failed--- due to fragmentation.------ If a command returns a run time error, unless otherwise specified any--- output parameters will have undefined contents, except that if the--- output parameter is a structure with @sType@ and @pNext@ fields, those--- fields will be unmodified. Any structures chained from @pNext@ will also--- have undefined contents, except that @sType@ and @pNext@ will be--- unmodified.------ Out of memory errors do not damage any currently existing Vulkan--- objects. Objects that have already been successfully created /can/ still--- be used by the application.------ Performance-critical commands generally do not have return codes. If a--- run time error occurs in such commands, the implementation will defer--- reporting the error until a specified point. For commands that record--- into command buffers (@vkCmd*@) run time errors are reported by--- @vkEndCommandBuffer@.------ = See Also------ No cross-references are available,--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkPresentInfoKHR'-newtype VkResult = VkResult Int32- deriving (Eq, Ord, Storable)--instance Show VkResult where- showsPrec _ VK_SUCCESS = showString "VK_SUCCESS"- showsPrec _ VK_NOT_READY = showString "VK_NOT_READY"- showsPrec _ VK_TIMEOUT = showString "VK_TIMEOUT"- showsPrec _ VK_EVENT_SET = showString "VK_EVENT_SET"- showsPrec _ VK_EVENT_RESET = showString "VK_EVENT_RESET"- showsPrec _ VK_INCOMPLETE = showString "VK_INCOMPLETE"- showsPrec _ VK_ERROR_OUT_OF_HOST_MEMORY = showString "VK_ERROR_OUT_OF_HOST_MEMORY"- showsPrec _ VK_ERROR_OUT_OF_DEVICE_MEMORY = showString "VK_ERROR_OUT_OF_DEVICE_MEMORY"- showsPrec _ VK_ERROR_INITIALIZATION_FAILED = showString "VK_ERROR_INITIALIZATION_FAILED"- showsPrec _ VK_ERROR_DEVICE_LOST = showString "VK_ERROR_DEVICE_LOST"- showsPrec _ VK_ERROR_MEMORY_MAP_FAILED = showString "VK_ERROR_MEMORY_MAP_FAILED"- showsPrec _ VK_ERROR_LAYER_NOT_PRESENT = showString "VK_ERROR_LAYER_NOT_PRESENT"- showsPrec _ VK_ERROR_EXTENSION_NOT_PRESENT = showString "VK_ERROR_EXTENSION_NOT_PRESENT"- showsPrec _ VK_ERROR_FEATURE_NOT_PRESENT = showString "VK_ERROR_FEATURE_NOT_PRESENT"- showsPrec _ VK_ERROR_INCOMPATIBLE_DRIVER = showString "VK_ERROR_INCOMPATIBLE_DRIVER"- showsPrec _ VK_ERROR_TOO_MANY_OBJECTS = showString "VK_ERROR_TOO_MANY_OBJECTS"- showsPrec _ VK_ERROR_FORMAT_NOT_SUPPORTED = showString "VK_ERROR_FORMAT_NOT_SUPPORTED"- showsPrec _ VK_ERROR_FRAGMENTED_POOL = showString "VK_ERROR_FRAGMENTED_POOL"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkResult (-1000069000)) = showString "VK_ERROR_OUT_OF_POOL_MEMORY"- showsPrec _ (VkResult (-1000072003)) = showString "VK_ERROR_INVALID_EXTERNAL_HANDLE"- showsPrec _ (VkResult (-1000000000)) = showString "VK_ERROR_SURFACE_LOST_KHR"- showsPrec _ (VkResult (-1000000001)) = showString "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR"- showsPrec _ (VkResult 1000001003) = showString "VK_SUBOPTIMAL_KHR"- showsPrec _ (VkResult (-1000001004)) = showString "VK_ERROR_OUT_OF_DATE_KHR"- showsPrec _ (VkResult (-1000003001)) = showString "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR"- showsPrec _ (VkResult (-1000011001)) = showString "VK_ERROR_VALIDATION_FAILED_EXT"- showsPrec _ (VkResult (-1000012000)) = showString "VK_ERROR_INVALID_SHADER_NV"- showsPrec _ (VkResult (-1000161000)) = showString "VK_ERROR_FRAGMENTATION_EXT"- showsPrec _ (VkResult (-1000174001)) = showString "VK_ERROR_NOT_PERMITTED_EXT"- showsPrec p (VkResult x) = showParen (p >= 11) (showString "VkResult " . showsPrec 11 x)--instance Read VkResult where- readPrec = parens ( choose [ ("VK_SUCCESS", pure VK_SUCCESS)- , ("VK_NOT_READY", pure VK_NOT_READY)- , ("VK_TIMEOUT", pure VK_TIMEOUT)- , ("VK_EVENT_SET", pure VK_EVENT_SET)- , ("VK_EVENT_RESET", pure VK_EVENT_RESET)- , ("VK_INCOMPLETE", pure VK_INCOMPLETE)- , ("VK_ERROR_OUT_OF_HOST_MEMORY", pure VK_ERROR_OUT_OF_HOST_MEMORY)- , ("VK_ERROR_OUT_OF_DEVICE_MEMORY", pure VK_ERROR_OUT_OF_DEVICE_MEMORY)- , ("VK_ERROR_INITIALIZATION_FAILED", pure VK_ERROR_INITIALIZATION_FAILED)- , ("VK_ERROR_DEVICE_LOST", pure VK_ERROR_DEVICE_LOST)- , ("VK_ERROR_MEMORY_MAP_FAILED", pure VK_ERROR_MEMORY_MAP_FAILED)- , ("VK_ERROR_LAYER_NOT_PRESENT", pure VK_ERROR_LAYER_NOT_PRESENT)- , ("VK_ERROR_EXTENSION_NOT_PRESENT", pure VK_ERROR_EXTENSION_NOT_PRESENT)- , ("VK_ERROR_FEATURE_NOT_PRESENT", pure VK_ERROR_FEATURE_NOT_PRESENT)- , ("VK_ERROR_INCOMPATIBLE_DRIVER", pure VK_ERROR_INCOMPATIBLE_DRIVER)- , ("VK_ERROR_TOO_MANY_OBJECTS", pure VK_ERROR_TOO_MANY_OBJECTS)- , ("VK_ERROR_FORMAT_NOT_SUPPORTED", pure VK_ERROR_FORMAT_NOT_SUPPORTED)- , ("VK_ERROR_FRAGMENTED_POOL", pure VK_ERROR_FRAGMENTED_POOL)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_ERROR_OUT_OF_POOL_MEMORY", pure (VkResult (-1000069000)))- , ("VK_ERROR_INVALID_EXTERNAL_HANDLE", pure (VkResult (-1000072003)))- , ("VK_ERROR_SURFACE_LOST_KHR", pure (VkResult (-1000000000)))- , ("VK_ERROR_NATIVE_WINDOW_IN_USE_KHR", pure (VkResult (-1000000001)))- , ("VK_SUBOPTIMAL_KHR", pure (VkResult 1000001003))- , ("VK_ERROR_OUT_OF_DATE_KHR", pure (VkResult (-1000001004)))- , ("VK_ERROR_INCOMPATIBLE_DISPLAY_KHR", pure (VkResult (-1000003001)))- , ("VK_ERROR_VALIDATION_FAILED_EXT", pure (VkResult (-1000011001)))- , ("VK_ERROR_INVALID_SHADER_NV", pure (VkResult (-1000012000)))- , ("VK_ERROR_FRAGMENTATION_EXT", pure (VkResult (-1000161000)))- , ("VK_ERROR_NOT_PERMITTED_EXT", pure (VkResult (-1000174001)))- ] +++- prec 10 (do- expectP (Ident "VkResult")- v <- step readPrec- pure (VkResult v)- )- )---- No documentation found for Nested "VkResult" "VK_SUCCESS"-pattern VK_SUCCESS :: VkResult-pattern VK_SUCCESS = VkResult 0---- No documentation found for Nested "VkResult" "VK_NOT_READY"-pattern VK_NOT_READY :: VkResult-pattern VK_NOT_READY = VkResult 1---- No documentation found for Nested "VkResult" "VK_TIMEOUT"-pattern VK_TIMEOUT :: VkResult-pattern VK_TIMEOUT = VkResult 2---- No documentation found for Nested "VkResult" "VK_EVENT_SET"-pattern VK_EVENT_SET :: VkResult-pattern VK_EVENT_SET = VkResult 3---- No documentation found for Nested "VkResult" "VK_EVENT_RESET"-pattern VK_EVENT_RESET :: VkResult-pattern VK_EVENT_RESET = VkResult 4---- No documentation found for Nested "VkResult" "VK_INCOMPLETE"-pattern VK_INCOMPLETE :: VkResult-pattern VK_INCOMPLETE = VkResult 5---- No documentation found for Nested "VkResult" "VK_ERROR_OUT_OF_HOST_MEMORY"-pattern VK_ERROR_OUT_OF_HOST_MEMORY :: VkResult-pattern VK_ERROR_OUT_OF_HOST_MEMORY = VkResult (-1)---- No documentation found for Nested "VkResult" "VK_ERROR_OUT_OF_DEVICE_MEMORY"-pattern VK_ERROR_OUT_OF_DEVICE_MEMORY :: VkResult-pattern VK_ERROR_OUT_OF_DEVICE_MEMORY = VkResult (-2)---- No documentation found for Nested "VkResult" "VK_ERROR_INITIALIZATION_FAILED"-pattern VK_ERROR_INITIALIZATION_FAILED :: VkResult-pattern VK_ERROR_INITIALIZATION_FAILED = VkResult (-3)---- No documentation found for Nested "VkResult" "VK_ERROR_DEVICE_LOST"-pattern VK_ERROR_DEVICE_LOST :: VkResult-pattern VK_ERROR_DEVICE_LOST = VkResult (-4)---- No documentation found for Nested "VkResult" "VK_ERROR_MEMORY_MAP_FAILED"-pattern VK_ERROR_MEMORY_MAP_FAILED :: VkResult-pattern VK_ERROR_MEMORY_MAP_FAILED = VkResult (-5)---- No documentation found for Nested "VkResult" "VK_ERROR_LAYER_NOT_PRESENT"-pattern VK_ERROR_LAYER_NOT_PRESENT :: VkResult-pattern VK_ERROR_LAYER_NOT_PRESENT = VkResult (-6)---- No documentation found for Nested "VkResult" "VK_ERROR_EXTENSION_NOT_PRESENT"-pattern VK_ERROR_EXTENSION_NOT_PRESENT :: VkResult-pattern VK_ERROR_EXTENSION_NOT_PRESENT = VkResult (-7)---- No documentation found for Nested "VkResult" "VK_ERROR_FEATURE_NOT_PRESENT"-pattern VK_ERROR_FEATURE_NOT_PRESENT :: VkResult-pattern VK_ERROR_FEATURE_NOT_PRESENT = VkResult (-8)---- No documentation found for Nested "VkResult" "VK_ERROR_INCOMPATIBLE_DRIVER"-pattern VK_ERROR_INCOMPATIBLE_DRIVER :: VkResult-pattern VK_ERROR_INCOMPATIBLE_DRIVER = VkResult (-9)---- No documentation found for Nested "VkResult" "VK_ERROR_TOO_MANY_OBJECTS"-pattern VK_ERROR_TOO_MANY_OBJECTS :: VkResult-pattern VK_ERROR_TOO_MANY_OBJECTS = VkResult (-10)---- No documentation found for Nested "VkResult" "VK_ERROR_FORMAT_NOT_SUPPORTED"-pattern VK_ERROR_FORMAT_NOT_SUPPORTED :: VkResult-pattern VK_ERROR_FORMAT_NOT_SUPPORTED = VkResult (-11)---- No documentation found for Nested "VkResult" "VK_ERROR_FRAGMENTED_POOL"-pattern VK_ERROR_FRAGMENTED_POOL :: VkResult-pattern VK_ERROR_FRAGMENTED_POOL = VkResult (-12)--- ** VkStructureType---- | VkStructureType - Vulkan structure types (@stype@)------ = Description------ Each value corresponds to a particular structure with a @sType@ member--- with a matching name. As a general rule, the name of each--- @VkStructureType@ value is obtained by taking the name of the structure,--- stripping the leading @Vk@, prefixing each capital letter with @_@,--- converting the entire resulting string to upper case, and prefixing it--- with @VK_STRUCTURE_TYPE_@. For example, structures of type--- @VkImageCreateInfo@ correspond to a @VkStructureType@ of--- @VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO@, and thus its @sType@ member--- /must/ equal that when it is passed to the API.------ The values @VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO@ and--- @VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO@ are reserved for internal--- use by the loader, and do not have corresponding Vulkan structures in--- this Specification.------ = See Also------ 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkAcquireNextImageInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferFormatPropertiesANDROID',--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferPropertiesANDROID',--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferUsageANDROID',--- 'Graphics.Vulkan.Extensions.VK_KHR_android_surface.VkAndroidSurfaceCreateInfoKHR',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkApplicationInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindBufferMemoryDeviceGroupInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.VkBindBufferMemoryInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.VkBindImageMemoryInfo',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkBindImageMemorySwapchainInfoKHR',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkBindImagePlaneMemoryInfo',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkBindSparseInfo',--- 'Graphics.Vulkan.Core10.Buffer.VkBufferCreateInfo',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkBufferMemoryBarrier',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.VkBufferMemoryRequirementsInfo2',--- 'Graphics.Vulkan.Core10.BufferView.VkBufferViewCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkCmdProcessCommandsInfoNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkCmdReserveSpaceForCommandsInfoNVX',--- 'Graphics.Vulkan.Core10.CommandBuffer.VkCommandBufferAllocateInfo',--- 'Graphics.Vulkan.Core10.CommandBuffer.VkCommandBufferBeginInfo',--- 'Graphics.Vulkan.Core10.CommandBuffer.VkCommandBufferInheritanceInfo',--- 'Graphics.Vulkan.Core10.CommandPool.VkCommandPoolCreateInfo',--- 'Graphics.Vulkan.Core10.Pipeline.VkComputePipelineCreateInfo',--- 'Graphics.Vulkan.Core10.DescriptorSet.VkCopyDescriptorSet',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.VkD3D12FenceSubmitInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.VkDebugMarkerMarkerInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.VkDebugMarkerObjectNameInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.VkDebugMarkerObjectTagInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.VkDebugReportCallbackCreateInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.VkDebugUtilsLabelEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.VkDebugUtilsMessengerCallbackDataEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.VkDebugUtilsMessengerCreateInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.VkDebugUtilsObjectNameInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.VkDebugUtilsObjectTagInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationBufferCreateInfoNV',--- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationImageCreateInfoNV',--- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationMemoryAllocateInfoNV',--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorPoolCreateInfo',--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetAllocateInfo',--- 'Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing.VkDescriptorSetLayoutBindingFlagsCreateInfoEXT',--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetLayoutCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance3.VkDescriptorSetLayoutSupport',--- 'Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing.VkDescriptorSetVariableDescriptorCountAllocateInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing.VkDescriptorSetVariableDescriptorCountLayoutSupportEXT',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.VkDescriptorUpdateTemplateCreateInfo',--- 'Graphics.Vulkan.Core10.Device.VkDeviceCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.VkDeviceEventInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkDeviceGeneratedCommandsFeaturesNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkDeviceGeneratedCommandsLimitsNVX',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.VkDeviceGroupBindSparseInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.VkDeviceGroupCommandBufferBeginInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation.VkDeviceGroupDeviceCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkDeviceGroupPresentCapabilitiesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkDeviceGroupPresentInfoKHR',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.VkDeviceGroupRenderPassBeginInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.VkDeviceGroupSubmitInfo',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkDeviceGroupSwapchainCreateInfoKHR',--- 'Graphics.Vulkan.Core10.Device.VkDeviceQueueCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_EXT_global_priority.VkDeviceQueueGlobalPriorityCreateInfoEXT',--- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory.VkDeviceQueueInfo2',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.VkDisplayEventInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayModeCreateInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.VkDisplayPowerInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.VkDisplayPresentInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplaySurfaceCreateInfoKHR',--- 'Graphics.Vulkan.Core10.Event.VkEventCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence.VkExportFenceCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.VkExportFenceWin32HandleInfoKHR',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExportMemoryAllocateInfo',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.VkExportMemoryAllocateInfoNV',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.VkExportMemoryWin32HandleInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.VkExportMemoryWin32HandleInfoNV',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore.VkExportSemaphoreCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.VkExportSemaphoreWin32HandleInfoKHR',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalBufferProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceProperties',--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkExternalFormatANDROID',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalImageFormatProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryBufferCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryImageCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.VkExternalMemoryImageCreateInfoNV',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreProperties',--- 'Graphics.Vulkan.Core10.Fence.VkFenceCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.VkFenceGetFdInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.VkFenceGetWin32HandleInfoKHR',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkFormatProperties2',--- 'Graphics.Vulkan.Core10.Pass.VkFramebufferCreateInfo',--- 'Graphics.Vulkan.Core10.Pipeline.VkGraphicsPipelineCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata.VkHdrMetadataEXT',--- 'Graphics.Vulkan.Extensions.VK_MVK_ios_surface.VkIOSSurfaceCreateInfoMVK',--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_KHR_image_format_list.VkImageFormatListCreateInfoKHR',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkImageFormatProperties2',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkImageMemoryBarrier',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.VkImageMemoryRequirementsInfo2',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkImagePlaneMemoryRequirementsInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.VkImageSparseMemoryRequirementsInfo2',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkImageSwapchainCreateInfoKHR',--- 'Graphics.Vulkan.Core10.ImageView.VkImageViewCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkImageViewUsageCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkImportAndroidHardwareBufferInfoANDROID',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.VkImportFenceFdInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.VkImportFenceWin32HandleInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.VkImportMemoryFdInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.VkImportMemoryHostPointerInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.VkImportMemoryWin32HandleInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.VkImportMemoryWin32HandleInfoNV',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.VkImportSemaphoreFdInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.VkImportSemaphoreWin32HandleInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkIndirectCommandsLayoutCreateInfoNVX',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstanceCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_MVK_macos_surface.VkMacOSSurfaceCreateInfoMVK',--- 'Graphics.Vulkan.Core10.Memory.VkMappedMemoryRange',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.VkMemoryAllocateFlagsInfo',--- 'Graphics.Vulkan.Core10.Memory.VkMemoryAllocateInfo',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkMemoryBarrier',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedRequirements',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.VkMemoryFdPropertiesKHR',--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkMemoryGetAndroidHardwareBufferInfoANDROID',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.VkMemoryGetFdInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.VkMemoryGetWin32HandleInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.VkMemoryHostPointerPropertiesEXT',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.VkMemoryRequirements2',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.VkMemoryWin32HandlePropertiesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_mir_surface.VkMirSurfaceCreateInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkMultisamplePropertiesEXT',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTableCreateInfoNVX',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_16bit_storage.VkPhysicalDevice16BitStorageFeatures',--- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization.VkPhysicalDeviceConservativeRasterizationPropertiesEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing.VkPhysicalDeviceDescriptorIndexingFeaturesEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing.VkPhysicalDeviceDescriptorIndexingPropertiesEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.VkPhysicalDeviceDiscardRectanglePropertiesEXT',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkPhysicalDeviceExternalBufferInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkPhysicalDeviceExternalFenceInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkPhysicalDeviceExternalImageFormatInfo',--- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.VkPhysicalDeviceExternalMemoryHostPropertiesEXT',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkPhysicalDeviceExternalSemaphoreInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceFeatures2',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation.VkPhysicalDeviceGroupProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkPhysicalDeviceIDProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceImageFormatInfo2',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance3.VkPhysicalDeviceMaintenance3Properties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceMemoryProperties2',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview.VkPhysicalDeviceMultiviewFeatures',--- 'Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview.VkPhysicalDeviceMultiviewProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkPhysicalDevicePointClippingProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2',--- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory.VkPhysicalDeviceProtectedMemoryFeatures',--- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory.VkPhysicalDeviceProtectedMemoryProperties',--- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.VkPhysicalDevicePushDescriptorPropertiesKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPhysicalDeviceSampleLocationsPropertiesEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax.VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkPhysicalDeviceSamplerYcbcrConversionFeatures',--- 'Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties.VkPhysicalDeviceShaderCorePropertiesAMD',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_shader_draw_parameters.VkPhysicalDeviceShaderDrawParameterFeatures',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceSparseImageFormatInfo2',--- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_subgroup.VkPhysicalDeviceSubgroupProperties',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.VkPhysicalDeviceSurfaceInfo2KHR',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_variable_pointers.VkPhysicalDeviceVariablePointerFeatures',--- 'Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT',--- 'Graphics.Vulkan.Core10.PipelineCache.VkPipelineCacheCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPipelineColorBlendAdvancedStateCreateInfoEXT',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineColorBlendStateCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.VkPipelineCoverageModulationStateCreateInfoNV',--- 'Graphics.Vulkan.Extensions.VK_NV_fragment_coverage_to_color.VkPipelineCoverageToColorStateCreateInfoNV',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineDepthStencilStateCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.VkPipelineDiscardRectangleStateCreateInfoEXT',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineDynamicStateCreateInfo',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineInputAssemblyStateCreateInfo',--- 'Graphics.Vulkan.Core10.PipelineLayout.VkPipelineLayoutCreateInfo',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineMultisampleStateCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization.VkPipelineRasterizationConservativeStateCreateInfoEXT',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineRasterizationStateCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_AMD_rasterization_order.VkPipelineRasterizationStateRasterizationOrderAMD',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineShaderStageCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkPipelineTessellationDomainOriginStateCreateInfo',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineTessellationStateCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.VkPipelineVertexInputDivisorStateCreateInfoEXT',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineVertexInputStateCreateInfo',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineViewportStateCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle.VkPipelineViewportSwizzleStateCreateInfoNV',--- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkPipelineViewportWScalingStateCreateInfoNV',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkPresentInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_incremental_present.VkPresentRegionsKHR',--- 'Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing.VkPresentTimesInfoGOOGLE',--- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory.VkProtectedSubmitInfo',--- 'Graphics.Vulkan.Core10.Query.VkQueryPoolCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkQueueFamilyProperties2',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo',--- 'Graphics.Vulkan.Core10.Pass.VkRenderPassCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkRenderPassInputAttachmentAspectCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview.VkRenderPassMultiviewCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkRenderPassSampleLocationsBeginInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkSampleLocationsInfoEXT',--- 'Graphics.Vulkan.Core10.Sampler.VkSamplerCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax.VkSamplerReductionModeCreateInfoEXT',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionImageFormatProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionInfo',--- 'Graphics.Vulkan.Core10.QueueSemaphore.VkSemaphoreCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.VkSemaphoreGetFdInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.VkSemaphoreGetWin32HandleInfoKHR',--- 'Graphics.Vulkan.Core10.Shader.VkShaderModuleCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.VkShaderModuleValidationCacheCreateInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.VkSharedPresentSurfaceCapabilitiesKHR',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkSparseImageFormatProperties2',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.VkSparseImageMemoryRequirements2',--- 'Graphics.Vulkan.Core10.Queue.VkSubmitInfo',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCapabilities2EXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.VkSurfaceCapabilities2KHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.VkSurfaceFormat2KHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.VkSwapchainCounterCreateInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_AMD_texture_gather_bias_lod.VkTextureLODGatherFormatPropertiesAMD',--- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.VkValidationCacheCreateInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_validation_flags.VkValidationFlagsEXT',--- 'Graphics.Vulkan.Extensions.VK_NN_vi_surface.VkViSurfaceCreateInfoNN',--- 'Graphics.Vulkan.Extensions.VK_KHR_wayland_surface.VkWaylandSurfaceCreateInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_win32_keyed_mutex.VkWin32KeyedMutexAcquireReleaseInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex.VkWin32KeyedMutexAcquireReleaseInfoNV',--- 'Graphics.Vulkan.Extensions.VK_KHR_win32_surface.VkWin32SurfaceCreateInfoKHR',--- 'Graphics.Vulkan.Core10.DescriptorSet.VkWriteDescriptorSet',--- 'Graphics.Vulkan.Extensions.VK_KHR_xcb_surface.VkXcbSurfaceCreateInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_xlib_surface.VkXlibSurfaceCreateInfoKHR'-newtype VkStructureType = VkStructureType Int32- deriving (Eq, Ord, Storable)--instance Show VkStructureType where- showsPrec _ VK_STRUCTURE_TYPE_APPLICATION_INFO = showString "VK_STRUCTURE_TYPE_APPLICATION_INFO"- showsPrec _ VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_SUBMIT_INFO = showString "VK_STRUCTURE_TYPE_SUBMIT_INFO"- showsPrec _ VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = showString "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = showString "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE"- showsPrec _ VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = showString "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = showString "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = showString "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = showString "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = showString "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = showString "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = showString "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = showString "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = showString "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = showString "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = showString "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = showString "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET"- showsPrec _ VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = showString "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET"- showsPrec _ VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = showString "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = showString "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = showString "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = showString "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = showString "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = showString "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"- showsPrec _ VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = showString "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"- showsPrec _ VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = showString "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"- showsPrec _ VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = showString "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER"- showsPrec _ VK_STRUCTURE_TYPE_MEMORY_BARRIER = showString "VK_STRUCTURE_TYPE_MEMORY_BARRIER"- showsPrec _ VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO"- showsPrec _ VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = showString "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkStructureType 1000094000) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"- showsPrec _ (VkStructureType 1000157000) = showString "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO"- showsPrec _ (VkStructureType 1000157001) = showString "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO"- showsPrec _ (VkStructureType 1000083000) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"- showsPrec _ (VkStructureType 1000127000) = showString "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS"- showsPrec _ (VkStructureType 1000127001) = showString "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO"- showsPrec _ (VkStructureType 1000060000) = showString "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"- showsPrec _ (VkStructureType 1000060003) = showString "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"- showsPrec _ (VkStructureType 1000060004) = showString "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"- showsPrec _ (VkStructureType 1000060005) = showString "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"- showsPrec _ (VkStructureType 1000060006) = showString "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"- showsPrec _ (VkStructureType 1000060013) = showString "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"- showsPrec _ (VkStructureType 1000060014) = showString "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"- showsPrec _ (VkStructureType 1000070000) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES"- showsPrec _ (VkStructureType 1000070001) = showString "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"- showsPrec _ (VkStructureType 1000146000) = showString "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2"- showsPrec _ (VkStructureType 1000146001) = showString "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2"- showsPrec _ (VkStructureType 1000146002) = showString "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"- showsPrec _ (VkStructureType 1000146003) = showString "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2"- showsPrec _ (VkStructureType 1000146004) = showString "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"- showsPrec _ (VkStructureType 1000059000) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2"- showsPrec _ (VkStructureType 1000059001) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"- showsPrec _ (VkStructureType 1000059002) = showString "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2"- showsPrec _ (VkStructureType 1000059003) = showString "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2"- showsPrec _ (VkStructureType 1000059004) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"- showsPrec _ (VkStructureType 1000059005) = showString "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2"- showsPrec _ (VkStructureType 1000059006) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"- showsPrec _ (VkStructureType 1000059007) = showString "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2"- showsPrec _ (VkStructureType 1000059008) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"- showsPrec _ (VkStructureType 1000117000) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"- showsPrec _ (VkStructureType 1000117001) = showString "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"- showsPrec _ (VkStructureType 1000117002) = showString "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO"- showsPrec _ (VkStructureType 1000117003) = showString "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"- showsPrec _ (VkStructureType 1000053000) = showString "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO"- showsPrec _ (VkStructureType 1000053001) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"- showsPrec _ (VkStructureType 1000053002) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"- showsPrec _ (VkStructureType 1000120000) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES"- showsPrec _ (VkStructureType 1000145000) = showString "VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO"- showsPrec _ (VkStructureType 1000145001) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"- showsPrec _ (VkStructureType 1000145002) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"- showsPrec _ (VkStructureType 1000145003) = showString "VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2"- showsPrec _ (VkStructureType 1000156000) = showString "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"- showsPrec _ (VkStructureType 1000156001) = showString "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"- showsPrec _ (VkStructureType 1000156002) = showString "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"- showsPrec _ (VkStructureType 1000156003) = showString "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"- showsPrec _ (VkStructureType 1000156004) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"- showsPrec _ (VkStructureType 1000156005) = showString "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"- showsPrec _ (VkStructureType 1000085000) = showString "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"- showsPrec _ (VkStructureType 1000071000) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"- showsPrec _ (VkStructureType 1000071001) = showString "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES"- showsPrec _ (VkStructureType 1000071002) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"- showsPrec _ (VkStructureType 1000071003) = showString "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES"- showsPrec _ (VkStructureType 1000071004) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"- showsPrec _ (VkStructureType 1000072000) = showString "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO"- showsPrec _ (VkStructureType 1000072001) = showString "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO"- showsPrec _ (VkStructureType 1000072002) = showString "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO"- showsPrec _ (VkStructureType 1000112000) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"- showsPrec _ (VkStructureType 1000112001) = showString "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES"- showsPrec _ (VkStructureType 1000113000) = showString "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"- showsPrec _ (VkStructureType 1000077000) = showString "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO"- showsPrec _ (VkStructureType 1000076000) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"- showsPrec _ (VkStructureType 1000076001) = showString "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES"- showsPrec _ (VkStructureType 1000168000) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"- showsPrec _ (VkStructureType 1000168001) = showString "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT"- showsPrec _ (VkStructureType 1000063000) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES"- showsPrec _ (VkStructureType 1000001000) = showString "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR"- showsPrec _ (VkStructureType 1000001001) = showString "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR"- showsPrec _ (VkStructureType 1000060007) = showString "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"- showsPrec _ (VkStructureType 1000060008) = showString "VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"- showsPrec _ (VkStructureType 1000060009) = showString "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"- showsPrec _ (VkStructureType 1000060010) = showString "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"- showsPrec _ (VkStructureType 1000060011) = showString "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"- showsPrec _ (VkStructureType 1000060012) = showString "VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"- showsPrec _ (VkStructureType 1000002000) = showString "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"- showsPrec _ (VkStructureType 1000002001) = showString "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"- showsPrec _ (VkStructureType 1000003000) = showString "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"- showsPrec _ (VkStructureType 1000004000) = showString "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR"- showsPrec _ (VkStructureType 1000005000) = showString "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR"- showsPrec _ (VkStructureType 1000006000) = showString "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR"- showsPrec _ (VkStructureType 1000007000) = showString "VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR"- showsPrec _ (VkStructureType 1000008000) = showString "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR"- showsPrec _ (VkStructureType 1000009000) = showString "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR"- showsPrec _ (VkStructureType 1000010000) = showString "VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID"- showsPrec _ (VkStructureType 1000011000) = showString "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"- showsPrec _ (VkStructureType 1000018000) = showString "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"- showsPrec _ (VkStructureType 1000022000) = showString "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT"- showsPrec _ (VkStructureType 1000022001) = showString "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT"- showsPrec _ (VkStructureType 1000022002) = showString "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT"- showsPrec _ (VkStructureType 1000026000) = showString "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"- showsPrec _ (VkStructureType 1000026001) = showString "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"- showsPrec _ (VkStructureType 1000026002) = showString "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"- showsPrec _ (VkStructureType 1000041000) = showString "VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD"- showsPrec _ (VkStructureType 1000056000) = showString "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV"- showsPrec _ (VkStructureType 1000056001) = showString "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV"- showsPrec _ (VkStructureType 1000057000) = showString "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV"- showsPrec _ (VkStructureType 1000057001) = showString "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV"- showsPrec _ (VkStructureType 1000058000) = showString "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"- showsPrec _ (VkStructureType 1000061000) = showString "VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT"- showsPrec _ (VkStructureType 1000062000) = showString "VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN"- showsPrec _ (VkStructureType 1000073000) = showString "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR"- showsPrec _ (VkStructureType 1000073001) = showString "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR"- showsPrec _ (VkStructureType 1000073002) = showString "VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR"- showsPrec _ (VkStructureType 1000073003) = showString "VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR"- showsPrec _ (VkStructureType 1000074000) = showString "VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR"- showsPrec _ (VkStructureType 1000074001) = showString "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR"- showsPrec _ (VkStructureType 1000074002) = showString "VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR"- showsPrec _ (VkStructureType 1000075000) = showString "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"- showsPrec _ (VkStructureType 1000078000) = showString "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"- showsPrec _ (VkStructureType 1000078001) = showString "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"- showsPrec _ (VkStructureType 1000078002) = showString "VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR"- showsPrec _ (VkStructureType 1000078003) = showString "VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR"- showsPrec _ (VkStructureType 1000079000) = showString "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR"- showsPrec _ (VkStructureType 1000079001) = showString "VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR"- showsPrec _ (VkStructureType 1000080000) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR"- showsPrec _ (VkStructureType 1000084000) = showString "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR"- showsPrec _ (VkStructureType 1000086000) = showString "VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX"- showsPrec _ (VkStructureType 1000086001) = showString "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX"- showsPrec _ (VkStructureType 1000086002) = showString "VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX"- showsPrec _ (VkStructureType 1000086003) = showString "VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX"- showsPrec _ (VkStructureType 1000086004) = showString "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX"- showsPrec _ (VkStructureType 1000086005) = showString "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX"- showsPrec _ (VkStructureType 1000087000) = showString "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"- showsPrec _ (VkStructureType 1000090000) = showString "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT"- showsPrec _ (VkStructureType 1000091000) = showString "VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"- showsPrec _ (VkStructureType 1000091001) = showString "VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT"- showsPrec _ (VkStructureType 1000091002) = showString "VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT"- showsPrec _ (VkStructureType 1000091003) = showString "VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT"- showsPrec _ (VkStructureType 1000092000) = showString "VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE"- showsPrec _ (VkStructureType 1000097000) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"- showsPrec _ (VkStructureType 1000098000) = showString "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV"- showsPrec _ (VkStructureType 1000099000) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"- showsPrec _ (VkStructureType 1000099001) = showString "VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"- showsPrec _ (VkStructureType 1000101000) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"- showsPrec _ (VkStructureType 1000101001) = showString "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"- showsPrec _ (VkStructureType 1000105000) = showString "VK_STRUCTURE_TYPE_HDR_METADATA_EXT"- showsPrec _ (VkStructureType 1000111000) = showString "VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"- showsPrec _ (VkStructureType 1000114000) = showString "VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR"- showsPrec _ (VkStructureType 1000114001) = showString "VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR"- showsPrec _ (VkStructureType 1000114002) = showString "VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR"- showsPrec _ (VkStructureType 1000115000) = showString "VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR"- showsPrec _ (VkStructureType 1000115001) = showString "VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR"- showsPrec _ (VkStructureType 1000119000) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"- showsPrec _ (VkStructureType 1000119001) = showString "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR"- showsPrec _ (VkStructureType 1000119002) = showString "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR"- showsPrec _ (VkStructureType 1000122000) = showString "VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK"- showsPrec _ (VkStructureType 1000123000) = showString "VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK"- showsPrec _ (VkStructureType 1000128000) = showString "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT"- showsPrec _ (VkStructureType 1000128001) = showString "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT"- showsPrec _ (VkStructureType 1000128002) = showString "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT"- showsPrec _ (VkStructureType 1000128003) = showString "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"- showsPrec _ (VkStructureType 1000128004) = showString "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"- showsPrec _ (VkStructureType 1000129000) = showString "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"- showsPrec _ (VkStructureType 1000129001) = showString "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"- showsPrec _ (VkStructureType 1000129002) = showString "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"- showsPrec _ (VkStructureType 1000129003) = showString "VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"- showsPrec _ (VkStructureType 1000129004) = showString "VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"- showsPrec _ (VkStructureType 1000129005) = showString "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID"- showsPrec _ (VkStructureType 1000130000) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT"- showsPrec _ (VkStructureType 1000130001) = showString "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT"- showsPrec _ (VkStructureType 1000143000) = showString "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"- showsPrec _ (VkStructureType 1000143001) = showString "VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"- showsPrec _ (VkStructureType 1000143002) = showString "VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"- showsPrec _ (VkStructureType 1000143003) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"- showsPrec _ (VkStructureType 1000143004) = showString "VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT"- showsPrec _ (VkStructureType 1000147000) = showString "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR"- showsPrec _ (VkStructureType 1000148000) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"- showsPrec _ (VkStructureType 1000148001) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"- showsPrec _ (VkStructureType 1000148002) = showString "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"- showsPrec _ (VkStructureType 1000149000) = showString "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"- showsPrec _ (VkStructureType 1000152000) = showString "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"- showsPrec _ (VkStructureType 1000160000) = showString "VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT"- showsPrec _ (VkStructureType 1000160001) = showString "VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"- showsPrec _ (VkStructureType 1000161000) = showString "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT"- showsPrec _ (VkStructureType 1000161001) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT"- showsPrec _ (VkStructureType 1000161002) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT"- showsPrec _ (VkStructureType 1000161003) = showString "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT"- showsPrec _ (VkStructureType 1000161004) = showString "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT"- showsPrec _ (VkStructureType 1000174000) = showString "VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT"- showsPrec _ (VkStructureType 1000178000) = showString "VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT"- showsPrec _ (VkStructureType 1000178001) = showString "VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT"- showsPrec _ (VkStructureType 1000178002) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT"- showsPrec _ (VkStructureType 1000185000) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"- showsPrec _ (VkStructureType 1000190000) = showString "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT"- showsPrec _ (VkStructureType 1000190001) = showString "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT"- showsPrec p (VkStructureType x) = showParen (p >= 11) (showString "VkStructureType " . showsPrec 11 x)--instance Read VkStructureType where- readPrec = parens ( choose [ ("VK_STRUCTURE_TYPE_APPLICATION_INFO", pure VK_STRUCTURE_TYPE_APPLICATION_INFO)- , ("VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO", pure VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO", pure VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO", pure VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_SUBMIT_INFO", pure VK_STRUCTURE_TYPE_SUBMIT_INFO)- , ("VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO", pure VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO)- , ("VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE", pure VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE)- , ("VK_STRUCTURE_TYPE_BIND_SPARSE_INFO", pure VK_STRUCTURE_TYPE_BIND_SPARSE_INFO)- , ("VK_STRUCTURE_TYPE_FENCE_CREATE_INFO", pure VK_STRUCTURE_TYPE_FENCE_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO", pure VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_EVENT_CREATE_INFO", pure VK_STRUCTURE_TYPE_EVENT_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO", pure VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO", pure VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO", pure VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO", pure VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO", pure VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO", pure VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO", pure VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO", pure VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO", pure VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO", pure VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO", pure VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO", pure VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO", pure VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO", pure VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO", pure VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO", pure VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO", pure VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO", pure VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO", pure VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO", pure VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO", pure VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO", pure VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO", pure VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO", pure VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO)- , ("VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET", pure VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET)- , ("VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET", pure VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET)- , ("VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO", pure VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO", pure VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO", pure VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO", pure VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO)- , ("VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO", pure VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO)- , ("VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO", pure VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO)- , ("VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO", pure VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO)- , ("VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER", pure VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER)- , ("VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER", pure VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER)- , ("VK_STRUCTURE_TYPE_MEMORY_BARRIER", pure VK_STRUCTURE_TYPE_MEMORY_BARRIER)- , ("VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO", pure VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO)- , ("VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO", pure VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES", pure (VkStructureType 1000094000))- , ("VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO", pure (VkStructureType 1000157000))- , ("VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO", pure (VkStructureType 1000157001))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES", pure (VkStructureType 1000083000))- , ("VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS", pure (VkStructureType 1000127000))- , ("VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO", pure (VkStructureType 1000127001))- , ("VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO", pure (VkStructureType 1000060000))- , ("VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO", pure (VkStructureType 1000060003))- , ("VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO", pure (VkStructureType 1000060004))- , ("VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO", pure (VkStructureType 1000060005))- , ("VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO", pure (VkStructureType 1000060006))- , ("VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO", pure (VkStructureType 1000060013))- , ("VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO", pure (VkStructureType 1000060014))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES", pure (VkStructureType 1000070000))- , ("VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO", pure (VkStructureType 1000070001))- , ("VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2", pure (VkStructureType 1000146000))- , ("VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2", pure (VkStructureType 1000146001))- , ("VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2", pure (VkStructureType 1000146002))- , ("VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2", pure (VkStructureType 1000146003))- , ("VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2", pure (VkStructureType 1000146004))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2", pure (VkStructureType 1000059000))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2", pure (VkStructureType 1000059001))- , ("VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2", pure (VkStructureType 1000059002))- , ("VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2", pure (VkStructureType 1000059003))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2", pure (VkStructureType 1000059004))- , ("VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2", pure (VkStructureType 1000059005))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2", pure (VkStructureType 1000059006))- , ("VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2", pure (VkStructureType 1000059007))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2", pure (VkStructureType 1000059008))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES", pure (VkStructureType 1000117000))- , ("VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO", pure (VkStructureType 1000117001))- , ("VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO", pure (VkStructureType 1000117002))- , ("VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO", pure (VkStructureType 1000117003))- , ("VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO", pure (VkStructureType 1000053000))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES", pure (VkStructureType 1000053001))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES", pure (VkStructureType 1000053002))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES", pure (VkStructureType 1000120000))- , ("VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO", pure (VkStructureType 1000145000))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES", pure (VkStructureType 1000145001))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES", pure (VkStructureType 1000145002))- , ("VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2", pure (VkStructureType 1000145003))- , ("VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO", pure (VkStructureType 1000156000))- , ("VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO", pure (VkStructureType 1000156001))- , ("VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO", pure (VkStructureType 1000156002))- , ("VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO", pure (VkStructureType 1000156003))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES", pure (VkStructureType 1000156004))- , ("VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES", pure (VkStructureType 1000156005))- , ("VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO", pure (VkStructureType 1000085000))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO", pure (VkStructureType 1000071000))- , ("VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES", pure (VkStructureType 1000071001))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO", pure (VkStructureType 1000071002))- , ("VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES", pure (VkStructureType 1000071003))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES", pure (VkStructureType 1000071004))- , ("VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO", pure (VkStructureType 1000072000))- , ("VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO", pure (VkStructureType 1000072001))- , ("VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO", pure (VkStructureType 1000072002))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO", pure (VkStructureType 1000112000))- , ("VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES", pure (VkStructureType 1000112001))- , ("VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO", pure (VkStructureType 1000113000))- , ("VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO", pure (VkStructureType 1000077000))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO", pure (VkStructureType 1000076000))- , ("VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES", pure (VkStructureType 1000076001))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES", pure (VkStructureType 1000168000))- , ("VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT", pure (VkStructureType 1000168001))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES", pure (VkStructureType 1000063000))- , ("VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR", pure (VkStructureType 1000001000))- , ("VK_STRUCTURE_TYPE_PRESENT_INFO_KHR", pure (VkStructureType 1000001001))- , ("VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR", pure (VkStructureType 1000060007))- , ("VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR", pure (VkStructureType 1000060008))- , ("VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR", pure (VkStructureType 1000060009))- , ("VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR", pure (VkStructureType 1000060010))- , ("VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR", pure (VkStructureType 1000060011))- , ("VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR", pure (VkStructureType 1000060012))- , ("VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR", pure (VkStructureType 1000002000))- , ("VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR", pure (VkStructureType 1000002001))- , ("VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR", pure (VkStructureType 1000003000))- , ("VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR", pure (VkStructureType 1000004000))- , ("VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR", pure (VkStructureType 1000005000))- , ("VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR", pure (VkStructureType 1000006000))- , ("VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR", pure (VkStructureType 1000007000))- , ("VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR", pure (VkStructureType 1000008000))- , ("VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR", pure (VkStructureType 1000009000))- , ("VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID", pure (VkStructureType 1000010000))- , ("VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT", pure (VkStructureType 1000011000))- , ("VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD", pure (VkStructureType 1000018000))- , ("VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT", pure (VkStructureType 1000022000))- , ("VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT", pure (VkStructureType 1000022001))- , ("VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT", pure (VkStructureType 1000022002))- , ("VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV", pure (VkStructureType 1000026000))- , ("VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV", pure (VkStructureType 1000026001))- , ("VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV", pure (VkStructureType 1000026002))- , ("VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD", pure (VkStructureType 1000041000))- , ("VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV", pure (VkStructureType 1000056000))- , ("VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV", pure (VkStructureType 1000056001))- , ("VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV", pure (VkStructureType 1000057000))- , ("VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV", pure (VkStructureType 1000057001))- , ("VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV", pure (VkStructureType 1000058000))- , ("VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR", pure (VkStructureType 1000060007))- , ("VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR", pure (VkStructureType 1000060008))- , ("VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR", pure (VkStructureType 1000060009))- , ("VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR", pure (VkStructureType 1000060010))- , ("VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR", pure (VkStructureType 1000060011))- , ("VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR", pure (VkStructureType 1000060012))- , ("VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT", pure (VkStructureType 1000061000))- , ("VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN", pure (VkStructureType 1000062000))- , ("VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR", pure (VkStructureType 1000073000))- , ("VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR", pure (VkStructureType 1000073001))- , ("VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR", pure (VkStructureType 1000073002))- , ("VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR", pure (VkStructureType 1000073003))- , ("VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR", pure (VkStructureType 1000074000))- , ("VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR", pure (VkStructureType 1000074001))- , ("VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR", pure (VkStructureType 1000074002))- , ("VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR", pure (VkStructureType 1000075000))- , ("VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR", pure (VkStructureType 1000078000))- , ("VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR", pure (VkStructureType 1000078001))- , ("VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR", pure (VkStructureType 1000078002))- , ("VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR", pure (VkStructureType 1000078003))- , ("VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR", pure (VkStructureType 1000079000))- , ("VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR", pure (VkStructureType 1000079001))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR", pure (VkStructureType 1000080000))- , ("VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR", pure (VkStructureType 1000084000))- , ("VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX", pure (VkStructureType 1000086000))- , ("VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX", pure (VkStructureType 1000086001))- , ("VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX", pure (VkStructureType 1000086002))- , ("VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX", pure (VkStructureType 1000086003))- , ("VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX", pure (VkStructureType 1000086004))- , ("VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX", pure (VkStructureType 1000086005))- , ("VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV", pure (VkStructureType 1000087000))- , ("VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT", pure (VkStructureType 1000090000))- , ("VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT", pure (VkStructureType 1000091000))- , ("VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT", pure (VkStructureType 1000091001))- , ("VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT", pure (VkStructureType 1000091002))- , ("VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT", pure (VkStructureType 1000091003))- , ("VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE", pure (VkStructureType 1000092000))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX", pure (VkStructureType 1000097000))- , ("VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV", pure (VkStructureType 1000098000))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT", pure (VkStructureType 1000099000))- , ("VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT", pure (VkStructureType 1000099001))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT", pure (VkStructureType 1000101000))- , ("VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT", pure (VkStructureType 1000101001))- , ("VK_STRUCTURE_TYPE_HDR_METADATA_EXT", pure (VkStructureType 1000105000))- , ("VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR", pure (VkStructureType 1000111000))- , ("VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR", pure (VkStructureType 1000114000))- , ("VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR", pure (VkStructureType 1000114001))- , ("VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR", pure (VkStructureType 1000114002))- , ("VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR", pure (VkStructureType 1000115000))- , ("VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR", pure (VkStructureType 1000115001))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR", pure (VkStructureType 1000119000))- , ("VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR", pure (VkStructureType 1000119001))- , ("VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR", pure (VkStructureType 1000119002))- , ("VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK", pure (VkStructureType 1000122000))- , ("VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK", pure (VkStructureType 1000123000))- , ("VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT", pure (VkStructureType 1000128000))- , ("VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT", pure (VkStructureType 1000128001))- , ("VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT", pure (VkStructureType 1000128002))- , ("VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT", pure (VkStructureType 1000128003))- , ("VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT", pure (VkStructureType 1000128004))- , ("VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID", pure (VkStructureType 1000129000))- , ("VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID", pure (VkStructureType 1000129001))- , ("VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID", pure (VkStructureType 1000129002))- , ("VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID", pure (VkStructureType 1000129003))- , ("VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID", pure (VkStructureType 1000129004))- , ("VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID", pure (VkStructureType 1000129005))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT", pure (VkStructureType 1000130000))- , ("VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT", pure (VkStructureType 1000130001))- , ("VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT", pure (VkStructureType 1000143000))- , ("VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT", pure (VkStructureType 1000143001))- , ("VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT", pure (VkStructureType 1000143002))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT", pure (VkStructureType 1000143003))- , ("VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT", pure (VkStructureType 1000143004))- , ("VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR", pure (VkStructureType 1000147000))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT", pure (VkStructureType 1000148000))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT", pure (VkStructureType 1000148001))- , ("VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT", pure (VkStructureType 1000148002))- , ("VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV", pure (VkStructureType 1000149000))- , ("VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV", pure (VkStructureType 1000152000))- , ("VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT", pure (VkStructureType 1000160000))- , ("VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT", pure (VkStructureType 1000160001))- , ("VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT", pure (VkStructureType 1000161000))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT", pure (VkStructureType 1000161001))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT", pure (VkStructureType 1000161002))- , ("VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT", pure (VkStructureType 1000161003))- , ("VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT", pure (VkStructureType 1000161004))- , ("VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT", pure (VkStructureType 1000174000))- , ("VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT", pure (VkStructureType 1000178000))- , ("VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT", pure (VkStructureType 1000178001))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT", pure (VkStructureType 1000178002))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD", pure (VkStructureType 1000185000))- , ("VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT", pure (VkStructureType 1000190000))- , ("VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT", pure (VkStructureType 1000190001))- ] +++- prec 10 (do- expectP (Ident "VkStructureType")- v <- step readPrec- pure (VkStructureType v)- )- )---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_APPLICATION_INFO"-pattern VK_STRUCTURE_TYPE_APPLICATION_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_APPLICATION_INFO = VkStructureType 0---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = VkStructureType 1---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = VkStructureType 2---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = VkStructureType 3---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBMIT_INFO"-pattern VK_STRUCTURE_TYPE_SUBMIT_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_SUBMIT_INFO = VkStructureType 4---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO"-pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = VkStructureType 5---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE"-pattern VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE :: VkStructureType-pattern VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = VkStructureType 6---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO"-pattern VK_STRUCTURE_TYPE_BIND_SPARSE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = VkStructureType 7---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_FENCE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = VkStructureType 8---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = VkStructureType 9---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_EVENT_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = VkStructureType 10---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = VkStructureType 11---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = VkStructureType 12---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = VkStructureType 13---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = VkStructureType 14---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = VkStructureType 15---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = VkStructureType 16---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = VkStructureType 17---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = VkStructureType 18---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = VkStructureType 19---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = VkStructureType 20---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = VkStructureType 21---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = VkStructureType 22---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = VkStructureType 23---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = VkStructureType 24---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = VkStructureType 25---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = VkStructureType 26---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = VkStructureType 27---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = VkStructureType 28---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = VkStructureType 29---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = VkStructureType 30---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = VkStructureType 31---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = VkStructureType 32---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = VkStructureType 33---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO"-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = VkStructureType 34---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET"-pattern VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET :: VkStructureType-pattern VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = VkStructureType 35---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET"-pattern VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET :: VkStructureType-pattern VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = VkStructureType 36---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = VkStructureType 37---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = VkStructureType 38---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = VkStructureType 39---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"-pattern VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = VkStructureType 40---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"-pattern VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = VkStructureType 41---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"-pattern VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = VkStructureType 42---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"-pattern VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = VkStructureType 43---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"-pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER :: VkStructureType-pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = VkStructureType 44---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER"-pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = VkStructureType 45---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_BARRIER"-pattern VK_STRUCTURE_TYPE_MEMORY_BARRIER :: VkStructureType-pattern VK_STRUCTURE_TYPE_MEMORY_BARRIER = VkStructureType 46---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = VkStructureType 47---- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = VkStructureType 48--- ** VkObjectType---- | VkObjectType - Specify an enumeration to track object handle types------ = Description------ \'------ +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | 'VkObjectType' | Vulkan Handle Type |--- +===============================================+=====================================================================================================+--- | @VK_OBJECT_TYPE_UNKNOWN@ | Unknown\/Undefined Handle |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_INSTANCE@ | 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_PHYSICAL_DEVICE@ | 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_DEVICE@ | 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_QUEUE@ | 'Graphics.Vulkan.Core10.Queue.VkQueue' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_SEMAPHORE@ | 'Graphics.Vulkan.Core10.Queue.VkSemaphore' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_COMMAND_BUFFER@ | 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_FENCE@ | 'Graphics.Vulkan.Core10.Queue.VkFence' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_DEVICE_MEMORY@ | 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_BUFFER@ | 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_IMAGE@ | 'Graphics.Vulkan.Core10.MemoryManagement.VkImage' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_EVENT@ | 'Graphics.Vulkan.Core10.Event.VkEvent' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_QUERY_POOL@ | 'Graphics.Vulkan.Core10.Query.VkQueryPool' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_BUFFER_VIEW@ | 'Graphics.Vulkan.Core10.BufferView.VkBufferView' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_IMAGE_VIEW@ | 'Graphics.Vulkan.Core10.ImageView.VkImageView' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_SHADER_MODULE@ | 'Graphics.Vulkan.Core10.Shader.VkShaderModule' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_PIPELINE_CACHE@ | 'Graphics.Vulkan.Core10.PipelineCache.VkPipelineCache' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_PIPELINE_LAYOUT@ | 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_RENDER_PASS@ | 'Graphics.Vulkan.Core10.Pipeline.VkRenderPass' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_PIPELINE@ | 'Graphics.Vulkan.Core10.Pipeline.VkPipeline' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT@ | 'Graphics.Vulkan.Core10.PipelineLayout.VkDescriptorSetLayout' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_SAMPLER@ | 'Graphics.Vulkan.Core10.Sampler.VkSampler' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_DESCRIPTOR_POOL@ | 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorPool' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_DESCRIPTOR_SET@ | 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSet' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_FRAMEBUFFER@ | 'Graphics.Vulkan.Core10.Pass.VkFramebuffer' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_COMMAND_POOL@ | 'Graphics.Vulkan.Core10.CommandPool.VkCommandPool' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_SURFACE_KHR@ | 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_SWAPCHAIN_KHR@ | 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainKHR' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_DISPLAY_KHR@ | 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayKHR' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_DISPLAY_MODE_KHR@ | 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayModeKHR' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT@ | 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.VkDebugReportCallbackEXT' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE@ | 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.VkDescriptorUpdateTemplate' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_OBJECT_TABLE_NVX@ | 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTableNVX' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX@ | 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkIndirectCommandsLayoutNVX' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_OBJECT_TYPE_VALIDATION_CACHE_EXT@ | 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.VkValidationCacheEXT' |--- +-----------------------------------------------+-----------------------------------------------------------------------------------------------------+------ VkObjectType and Vulkan Handle Relationship------ = See Also------ 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.VkDebugUtilsObjectNameInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.VkDebugUtilsObjectTagInfoEXT'-newtype VkObjectType = VkObjectType Int32- deriving (Eq, Ord, Storable)--instance Show VkObjectType where- showsPrec _ VK_OBJECT_TYPE_UNKNOWN = showString "VK_OBJECT_TYPE_UNKNOWN"- showsPrec _ VK_OBJECT_TYPE_INSTANCE = showString "VK_OBJECT_TYPE_INSTANCE"- showsPrec _ VK_OBJECT_TYPE_PHYSICAL_DEVICE = showString "VK_OBJECT_TYPE_PHYSICAL_DEVICE"- showsPrec _ VK_OBJECT_TYPE_DEVICE = showString "VK_OBJECT_TYPE_DEVICE"- showsPrec _ VK_OBJECT_TYPE_QUEUE = showString "VK_OBJECT_TYPE_QUEUE"- showsPrec _ VK_OBJECT_TYPE_SEMAPHORE = showString "VK_OBJECT_TYPE_SEMAPHORE"- showsPrec _ VK_OBJECT_TYPE_COMMAND_BUFFER = showString "VK_OBJECT_TYPE_COMMAND_BUFFER"- showsPrec _ VK_OBJECT_TYPE_FENCE = showString "VK_OBJECT_TYPE_FENCE"- showsPrec _ VK_OBJECT_TYPE_DEVICE_MEMORY = showString "VK_OBJECT_TYPE_DEVICE_MEMORY"- showsPrec _ VK_OBJECT_TYPE_BUFFER = showString "VK_OBJECT_TYPE_BUFFER"- showsPrec _ VK_OBJECT_TYPE_IMAGE = showString "VK_OBJECT_TYPE_IMAGE"- showsPrec _ VK_OBJECT_TYPE_EVENT = showString "VK_OBJECT_TYPE_EVENT"- showsPrec _ VK_OBJECT_TYPE_QUERY_POOL = showString "VK_OBJECT_TYPE_QUERY_POOL"- showsPrec _ VK_OBJECT_TYPE_BUFFER_VIEW = showString "VK_OBJECT_TYPE_BUFFER_VIEW"- showsPrec _ VK_OBJECT_TYPE_IMAGE_VIEW = showString "VK_OBJECT_TYPE_IMAGE_VIEW"- showsPrec _ VK_OBJECT_TYPE_SHADER_MODULE = showString "VK_OBJECT_TYPE_SHADER_MODULE"- showsPrec _ VK_OBJECT_TYPE_PIPELINE_CACHE = showString "VK_OBJECT_TYPE_PIPELINE_CACHE"- showsPrec _ VK_OBJECT_TYPE_PIPELINE_LAYOUT = showString "VK_OBJECT_TYPE_PIPELINE_LAYOUT"- showsPrec _ VK_OBJECT_TYPE_RENDER_PASS = showString "VK_OBJECT_TYPE_RENDER_PASS"- showsPrec _ VK_OBJECT_TYPE_PIPELINE = showString "VK_OBJECT_TYPE_PIPELINE"- showsPrec _ VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = showString "VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT"- showsPrec _ VK_OBJECT_TYPE_SAMPLER = showString "VK_OBJECT_TYPE_SAMPLER"- showsPrec _ VK_OBJECT_TYPE_DESCRIPTOR_POOL = showString "VK_OBJECT_TYPE_DESCRIPTOR_POOL"- showsPrec _ VK_OBJECT_TYPE_DESCRIPTOR_SET = showString "VK_OBJECT_TYPE_DESCRIPTOR_SET"- showsPrec _ VK_OBJECT_TYPE_FRAMEBUFFER = showString "VK_OBJECT_TYPE_FRAMEBUFFER"- showsPrec _ VK_OBJECT_TYPE_COMMAND_POOL = showString "VK_OBJECT_TYPE_COMMAND_POOL"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkObjectType 1000156000) = showString "VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION"- showsPrec _ (VkObjectType 1000085000) = showString "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"- showsPrec _ (VkObjectType 1000000000) = showString "VK_OBJECT_TYPE_SURFACE_KHR"- showsPrec _ (VkObjectType 1000001000) = showString "VK_OBJECT_TYPE_SWAPCHAIN_KHR"- showsPrec _ (VkObjectType 1000002000) = showString "VK_OBJECT_TYPE_DISPLAY_KHR"- showsPrec _ (VkObjectType 1000002001) = showString "VK_OBJECT_TYPE_DISPLAY_MODE_KHR"- showsPrec _ (VkObjectType 1000011000) = showString "VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT"- showsPrec _ (VkObjectType 1000086000) = showString "VK_OBJECT_TYPE_OBJECT_TABLE_NVX"- showsPrec _ (VkObjectType 1000086001) = showString "VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX"- showsPrec _ (VkObjectType 1000128000) = showString "VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT"- showsPrec _ (VkObjectType 1000160000) = showString "VK_OBJECT_TYPE_VALIDATION_CACHE_EXT"- showsPrec p (VkObjectType x) = showParen (p >= 11) (showString "VkObjectType " . showsPrec 11 x)--instance Read VkObjectType where- readPrec = parens ( choose [ ("VK_OBJECT_TYPE_UNKNOWN", pure VK_OBJECT_TYPE_UNKNOWN)- , ("VK_OBJECT_TYPE_INSTANCE", pure VK_OBJECT_TYPE_INSTANCE)- , ("VK_OBJECT_TYPE_PHYSICAL_DEVICE", pure VK_OBJECT_TYPE_PHYSICAL_DEVICE)- , ("VK_OBJECT_TYPE_DEVICE", pure VK_OBJECT_TYPE_DEVICE)- , ("VK_OBJECT_TYPE_QUEUE", pure VK_OBJECT_TYPE_QUEUE)- , ("VK_OBJECT_TYPE_SEMAPHORE", pure VK_OBJECT_TYPE_SEMAPHORE)- , ("VK_OBJECT_TYPE_COMMAND_BUFFER", pure VK_OBJECT_TYPE_COMMAND_BUFFER)- , ("VK_OBJECT_TYPE_FENCE", pure VK_OBJECT_TYPE_FENCE)- , ("VK_OBJECT_TYPE_DEVICE_MEMORY", pure VK_OBJECT_TYPE_DEVICE_MEMORY)- , ("VK_OBJECT_TYPE_BUFFER", pure VK_OBJECT_TYPE_BUFFER)- , ("VK_OBJECT_TYPE_IMAGE", pure VK_OBJECT_TYPE_IMAGE)- , ("VK_OBJECT_TYPE_EVENT", pure VK_OBJECT_TYPE_EVENT)- , ("VK_OBJECT_TYPE_QUERY_POOL", pure VK_OBJECT_TYPE_QUERY_POOL)- , ("VK_OBJECT_TYPE_BUFFER_VIEW", pure VK_OBJECT_TYPE_BUFFER_VIEW)- , ("VK_OBJECT_TYPE_IMAGE_VIEW", pure VK_OBJECT_TYPE_IMAGE_VIEW)- , ("VK_OBJECT_TYPE_SHADER_MODULE", pure VK_OBJECT_TYPE_SHADER_MODULE)- , ("VK_OBJECT_TYPE_PIPELINE_CACHE", pure VK_OBJECT_TYPE_PIPELINE_CACHE)- , ("VK_OBJECT_TYPE_PIPELINE_LAYOUT", pure VK_OBJECT_TYPE_PIPELINE_LAYOUT)- , ("VK_OBJECT_TYPE_RENDER_PASS", pure VK_OBJECT_TYPE_RENDER_PASS)- , ("VK_OBJECT_TYPE_PIPELINE", pure VK_OBJECT_TYPE_PIPELINE)- , ("VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT", pure VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT)- , ("VK_OBJECT_TYPE_SAMPLER", pure VK_OBJECT_TYPE_SAMPLER)- , ("VK_OBJECT_TYPE_DESCRIPTOR_POOL", pure VK_OBJECT_TYPE_DESCRIPTOR_POOL)- , ("VK_OBJECT_TYPE_DESCRIPTOR_SET", pure VK_OBJECT_TYPE_DESCRIPTOR_SET)- , ("VK_OBJECT_TYPE_FRAMEBUFFER", pure VK_OBJECT_TYPE_FRAMEBUFFER)- , ("VK_OBJECT_TYPE_COMMAND_POOL", pure VK_OBJECT_TYPE_COMMAND_POOL)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION", pure (VkObjectType 1000156000))- , ("VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE", pure (VkObjectType 1000085000))- , ("VK_OBJECT_TYPE_SURFACE_KHR", pure (VkObjectType 1000000000))- , ("VK_OBJECT_TYPE_SWAPCHAIN_KHR", pure (VkObjectType 1000001000))- , ("VK_OBJECT_TYPE_DISPLAY_KHR", pure (VkObjectType 1000002000))- , ("VK_OBJECT_TYPE_DISPLAY_MODE_KHR", pure (VkObjectType 1000002001))- , ("VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT", pure (VkObjectType 1000011000))- , ("VK_OBJECT_TYPE_OBJECT_TABLE_NVX", pure (VkObjectType 1000086000))- , ("VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX", pure (VkObjectType 1000086001))- , ("VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT", pure (VkObjectType 1000128000))- , ("VK_OBJECT_TYPE_VALIDATION_CACHE_EXT", pure (VkObjectType 1000160000))- ] +++- prec 10 (do- expectP (Ident "VkObjectType")- v <- step readPrec- pure (VkObjectType v)- )- )---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_UNKNOWN"-pattern VK_OBJECT_TYPE_UNKNOWN :: VkObjectType-pattern VK_OBJECT_TYPE_UNKNOWN = VkObjectType 0---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_INSTANCE"-pattern VK_OBJECT_TYPE_INSTANCE :: VkObjectType-pattern VK_OBJECT_TYPE_INSTANCE = VkObjectType 1---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_PHYSICAL_DEVICE"-pattern VK_OBJECT_TYPE_PHYSICAL_DEVICE :: VkObjectType-pattern VK_OBJECT_TYPE_PHYSICAL_DEVICE = VkObjectType 2---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DEVICE"-pattern VK_OBJECT_TYPE_DEVICE :: VkObjectType-pattern VK_OBJECT_TYPE_DEVICE = VkObjectType 3---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_QUEUE"-pattern VK_OBJECT_TYPE_QUEUE :: VkObjectType-pattern VK_OBJECT_TYPE_QUEUE = VkObjectType 4---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SEMAPHORE"-pattern VK_OBJECT_TYPE_SEMAPHORE :: VkObjectType-pattern VK_OBJECT_TYPE_SEMAPHORE = VkObjectType 5---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_COMMAND_BUFFER"-pattern VK_OBJECT_TYPE_COMMAND_BUFFER :: VkObjectType-pattern VK_OBJECT_TYPE_COMMAND_BUFFER = VkObjectType 6---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_FENCE"-pattern VK_OBJECT_TYPE_FENCE :: VkObjectType-pattern VK_OBJECT_TYPE_FENCE = VkObjectType 7---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DEVICE_MEMORY"-pattern VK_OBJECT_TYPE_DEVICE_MEMORY :: VkObjectType-pattern VK_OBJECT_TYPE_DEVICE_MEMORY = VkObjectType 8---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_BUFFER"-pattern VK_OBJECT_TYPE_BUFFER :: VkObjectType-pattern VK_OBJECT_TYPE_BUFFER = VkObjectType 9---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_IMAGE"-pattern VK_OBJECT_TYPE_IMAGE :: VkObjectType-pattern VK_OBJECT_TYPE_IMAGE = VkObjectType 10---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_EVENT"-pattern VK_OBJECT_TYPE_EVENT :: VkObjectType-pattern VK_OBJECT_TYPE_EVENT = VkObjectType 11---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_QUERY_POOL"-pattern VK_OBJECT_TYPE_QUERY_POOL :: VkObjectType-pattern VK_OBJECT_TYPE_QUERY_POOL = VkObjectType 12---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_BUFFER_VIEW"-pattern VK_OBJECT_TYPE_BUFFER_VIEW :: VkObjectType-pattern VK_OBJECT_TYPE_BUFFER_VIEW = VkObjectType 13---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_IMAGE_VIEW"-pattern VK_OBJECT_TYPE_IMAGE_VIEW :: VkObjectType-pattern VK_OBJECT_TYPE_IMAGE_VIEW = VkObjectType 14---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SHADER_MODULE"-pattern VK_OBJECT_TYPE_SHADER_MODULE :: VkObjectType-pattern VK_OBJECT_TYPE_SHADER_MODULE = VkObjectType 15---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_PIPELINE_CACHE"-pattern VK_OBJECT_TYPE_PIPELINE_CACHE :: VkObjectType-pattern VK_OBJECT_TYPE_PIPELINE_CACHE = VkObjectType 16---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_PIPELINE_LAYOUT"-pattern VK_OBJECT_TYPE_PIPELINE_LAYOUT :: VkObjectType-pattern VK_OBJECT_TYPE_PIPELINE_LAYOUT = VkObjectType 17---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_RENDER_PASS"-pattern VK_OBJECT_TYPE_RENDER_PASS :: VkObjectType-pattern VK_OBJECT_TYPE_RENDER_PASS = VkObjectType 18---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_PIPELINE"-pattern VK_OBJECT_TYPE_PIPELINE :: VkObjectType-pattern VK_OBJECT_TYPE_PIPELINE = VkObjectType 19---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT"-pattern VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT :: VkObjectType-pattern VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = VkObjectType 20---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SAMPLER"-pattern VK_OBJECT_TYPE_SAMPLER :: VkObjectType-pattern VK_OBJECT_TYPE_SAMPLER = VkObjectType 21---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DESCRIPTOR_POOL"-pattern VK_OBJECT_TYPE_DESCRIPTOR_POOL :: VkObjectType-pattern VK_OBJECT_TYPE_DESCRIPTOR_POOL = VkObjectType 22---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DESCRIPTOR_SET"-pattern VK_OBJECT_TYPE_DESCRIPTOR_SET :: VkObjectType-pattern VK_OBJECT_TYPE_DESCRIPTOR_SET = VkObjectType 23---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_FRAMEBUFFER"-pattern VK_OBJECT_TYPE_FRAMEBUFFER :: VkObjectType-pattern VK_OBJECT_TYPE_FRAMEBUFFER = VkObjectType 24---- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_COMMAND_POOL"-pattern VK_OBJECT_TYPE_COMMAND_POOL :: VkObjectType-pattern VK_OBJECT_TYPE_COMMAND_POOL = VkObjectType 25--- | VkFlags - Vulkan bitmasks------ = Description------ Bitmasks are passed to many commands and structures to compactly--- represent options, but @VkFlags@ is not used directly in the API.--- Instead, a @Vk*Flags@ type which is an alias of @VkFlags@, and whose--- name matches the corresponding @Vk*FlagBits@ that are valid for that--- type, is used.------ = See Also------ 'Graphics.Vulkan.Core10.Pipeline.VkColorComponentFlags'-type VkFlags = Word32
src/Graphics/Vulkan/Core10/DescriptorSet.hs view
@@ -1,1861 +1,2361 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.DescriptorSet- ( VkDescriptorType(..)- , pattern VK_DESCRIPTOR_TYPE_SAMPLER- , pattern VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER- , pattern VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE- , pattern VK_DESCRIPTOR_TYPE_STORAGE_IMAGE- , pattern VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER- , pattern VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER- , pattern VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER- , pattern VK_DESCRIPTOR_TYPE_STORAGE_BUFFER- , pattern VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC- , pattern VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC- , pattern VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT- , VkDescriptorSetLayoutCreateFlagBits(..)- , VkDescriptorPoolCreateFlagBits(..)- , pattern VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT- , VkDescriptorPoolResetFlags(..)- , VkDescriptorSet- , VkDescriptorPool- , vkCreateDescriptorSetLayout- , vkDestroyDescriptorSetLayout- , vkCreateDescriptorPool- , vkDestroyDescriptorPool- , vkResetDescriptorPool- , vkAllocateDescriptorSets- , vkFreeDescriptorSets- , vkUpdateDescriptorSets- , VkDescriptorBufferInfo(..)- , VkDescriptorImageInfo(..)- , VkWriteDescriptorSet(..)- , VkCopyDescriptorSet(..)- , VkDescriptorSetLayoutBinding(..)- , VkDescriptorSetLayoutCreateInfo(..)- , VkDescriptorPoolSize(..)- , VkDescriptorPoolCreateInfo(..)- , VkDescriptorSetAllocateInfo(..)- , VkDescriptorSetLayoutCreateFlags- , VkDescriptorPoolCreateFlags- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Int- ( Int32- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.BufferView- ( VkBufferView- )-import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- , VkDeviceSize- )-import Graphics.Vulkan.Core10.Image- ( VkImageLayout(..)- )-import Graphics.Vulkan.Core10.ImageView- ( VkImageView- )-import Graphics.Vulkan.Core10.MemoryManagement- ( VkBuffer- )-import Graphics.Vulkan.Core10.PipelineLayout- ( VkDescriptorSetLayout- , VkShaderStageFlags- )-import Graphics.Vulkan.Core10.Sampler- ( VkSampler- )----- ** VkDescriptorType---- | VkDescriptorType - Specifies the type of a descriptor in a descriptor--- set------ = Description------ - @VK_DESCRIPTOR_TYPE_SAMPLER@ specifies a [sampler--- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-sampler).------ - @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@ specifies a [combined--- image sampler--- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-combinedimagesampler).------ - @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@ specifies a [sampled image--- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-sampledimage).------ - @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@ specifies a [storage image--- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storageimage).------ - @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ specifies a [uniform texel--- buffer--- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer).------ - @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ specifies a [storage texel--- buffer--- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer).------ - @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ specifies a [uniform buffer--- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformbuffer).------ - @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ specifies a [storage buffer--- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagebuffer).------ - @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ specifies a [dynamic--- uniform buffer--- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic).------ - @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ specifies a [dynamic--- storage buffer--- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic).------ - @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ specifies a [input attachment--- descriptor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-inputattachment).------ When a descriptor set is updated via elements of 'VkWriteDescriptorSet',--- members of @pImageInfo@, @pBufferInfo@ and @pTexelBufferView@ are only--- accessed by the implementation when they correspond to descriptor type--- being defined - otherwise they are ignored. The members accessed are as--- follows for each descriptor type:------ - For @VK_DESCRIPTOR_TYPE_SAMPLER@, only the @sample@ member of each--- element of 'VkWriteDescriptorSet'::@pImageInfo@ is accessed.------ - For @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@,--- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@, or--- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@, only the @imageView@ and--- @imageLayout@ members of each element of--- 'VkWriteDescriptorSet'::@pImageInfo@ are accessed.------ - For @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@, all members of each--- element of 'VkWriteDescriptorSet'::@pImageInfo@ are accessed.------ - For @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@,--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@,--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@, or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@, all members of each--- element of 'VkWriteDescriptorSet'::@pBufferInfo@ are accessed.------ - For @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@, each element of--- 'VkWriteDescriptorSet'::@pTexelBufferView@ is accessed.------ = See Also------ 'VkDescriptorPoolSize', 'VkDescriptorSetLayoutBinding',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.VkDescriptorUpdateTemplateEntry',--- 'VkWriteDescriptorSet'-newtype VkDescriptorType = VkDescriptorType Int32- deriving (Eq, Ord, Storable)--instance Show VkDescriptorType where- showsPrec _ VK_DESCRIPTOR_TYPE_SAMPLER = showString "VK_DESCRIPTOR_TYPE_SAMPLER"- showsPrec _ VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = showString "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER"- showsPrec _ VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = showString "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE"- showsPrec _ VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = showString "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE"- showsPrec _ VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = showString "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER"- showsPrec _ VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = showString "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER"- showsPrec _ VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = showString "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER"- showsPrec _ VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = showString "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER"- showsPrec _ VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = showString "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC"- showsPrec _ VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = showString "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC"- showsPrec _ VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = showString "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT"- showsPrec p (VkDescriptorType x) = showParen (p >= 11) (showString "VkDescriptorType " . showsPrec 11 x)--instance Read VkDescriptorType where- readPrec = parens ( choose [ ("VK_DESCRIPTOR_TYPE_SAMPLER", pure VK_DESCRIPTOR_TYPE_SAMPLER)- , ("VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER", pure VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER)- , ("VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE", pure VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE)- , ("VK_DESCRIPTOR_TYPE_STORAGE_IMAGE", pure VK_DESCRIPTOR_TYPE_STORAGE_IMAGE)- , ("VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER", pure VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER)- , ("VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER", pure VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER)- , ("VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER", pure VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER)- , ("VK_DESCRIPTOR_TYPE_STORAGE_BUFFER", pure VK_DESCRIPTOR_TYPE_STORAGE_BUFFER)- , ("VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC", pure VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC)- , ("VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC", pure VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC)- , ("VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT", pure VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT)- ] +++- prec 10 (do- expectP (Ident "VkDescriptorType")- v <- step readPrec- pure (VkDescriptorType v)- )- )---- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_SAMPLER"-pattern VK_DESCRIPTOR_TYPE_SAMPLER :: VkDescriptorType-pattern VK_DESCRIPTOR_TYPE_SAMPLER = VkDescriptorType 0---- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER"-pattern VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER :: VkDescriptorType-pattern VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = VkDescriptorType 1---- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE"-pattern VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE :: VkDescriptorType-pattern VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = VkDescriptorType 2---- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE"-pattern VK_DESCRIPTOR_TYPE_STORAGE_IMAGE :: VkDescriptorType-pattern VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = VkDescriptorType 3---- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER"-pattern VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER :: VkDescriptorType-pattern VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = VkDescriptorType 4---- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER"-pattern VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER :: VkDescriptorType-pattern VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = VkDescriptorType 5---- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER"-pattern VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER :: VkDescriptorType-pattern VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = VkDescriptorType 6---- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER"-pattern VK_DESCRIPTOR_TYPE_STORAGE_BUFFER :: VkDescriptorType-pattern VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = VkDescriptorType 7---- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC"-pattern VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC :: VkDescriptorType-pattern VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = VkDescriptorType 8---- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC"-pattern VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC :: VkDescriptorType-pattern VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = VkDescriptorType 9---- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT"-pattern VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT :: VkDescriptorType-pattern VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = VkDescriptorType 10--- ** VkDescriptorSetLayoutCreateFlagBits---- | VkDescriptorSetLayoutCreateFlagBits - Bitmask specifying descriptor set--- layout properties------ = See Also------ 'VkDescriptorSetLayoutCreateFlags'-newtype VkDescriptorSetLayoutCreateFlagBits = VkDescriptorSetLayoutCreateFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkDescriptorSetLayoutCreateFlagBits where- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkDescriptorSetLayoutCreateFlagBits 0x00000001) = showString "VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR"- showsPrec _ (VkDescriptorSetLayoutCreateFlagBits 0x00000002) = showString "VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT"- showsPrec p (VkDescriptorSetLayoutCreateFlagBits x) = showParen (p >= 11) (showString "VkDescriptorSetLayoutCreateFlagBits " . showsPrec 11 x)--instance Read VkDescriptorSetLayoutCreateFlagBits where- readPrec = parens ( choose [ -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR", pure (VkDescriptorSetLayoutCreateFlagBits 0x00000001))- , ("VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT", pure (VkDescriptorSetLayoutCreateFlagBits 0x00000002))- ] +++- prec 10 (do- expectP (Ident "VkDescriptorSetLayoutCreateFlagBits")- v <- step readPrec- pure (VkDescriptorSetLayoutCreateFlagBits v)- )- )----- ** VkDescriptorPoolCreateFlagBits---- | VkDescriptorPoolCreateFlagBits - Bitmask specifying certain supported--- operations on a descriptor pool------ = See Also------ 'VkDescriptorPoolCreateFlags'-newtype VkDescriptorPoolCreateFlagBits = VkDescriptorPoolCreateFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkDescriptorPoolCreateFlagBits where- showsPrec _ VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = showString "VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkDescriptorPoolCreateFlagBits 0x00000002) = showString "VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT"- showsPrec p (VkDescriptorPoolCreateFlagBits x) = showParen (p >= 11) (showString "VkDescriptorPoolCreateFlagBits " . showsPrec 11 x)--instance Read VkDescriptorPoolCreateFlagBits where- readPrec = parens ( choose [ ("VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT", pure VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT", pure (VkDescriptorPoolCreateFlagBits 0x00000002))- ] +++- prec 10 (do- expectP (Ident "VkDescriptorPoolCreateFlagBits")- v <- step readPrec- pure (VkDescriptorPoolCreateFlagBits v)- )- )---- | @VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT@ specifies that--- descriptor sets /can/ return their individual allocations to the pool,--- i.e. all of 'vkAllocateDescriptorSets', 'vkFreeDescriptorSets', and--- 'vkResetDescriptorPool' are allowed. Otherwise, descriptor sets--- allocated from the pool /must/ not be individually freed back to the--- pool, i.e. only 'vkAllocateDescriptorSets' and 'vkResetDescriptorPool'--- are allowed.-pattern VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT :: VkDescriptorPoolCreateFlagBits-pattern VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = VkDescriptorPoolCreateFlagBits 0x00000001--- ** VkDescriptorPoolResetFlags---- | VkDescriptorPoolResetFlags - Reserved for future use------ = Description------ @VkDescriptorPoolResetFlags@ is a bitmask type for setting a mask, but--- is currently reserved for future use.------ = See Also------ 'vkResetDescriptorPool'-newtype VkDescriptorPoolResetFlags = VkDescriptorPoolResetFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkDescriptorPoolResetFlags where- - showsPrec p (VkDescriptorPoolResetFlags x) = showParen (p >= 11) (showString "VkDescriptorPoolResetFlags " . showsPrec 11 x)--instance Read VkDescriptorPoolResetFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkDescriptorPoolResetFlags")- v <- step readPrec- pure (VkDescriptorPoolResetFlags v)- )- )----- | Dummy data to tag the 'Ptr' with-data VkDescriptorSet_T--- | VkDescriptorSet - Opaque handle to a descriptor set object------ = See Also------ 'VkCopyDescriptorSet',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTableDescriptorSetEntryNVX',--- 'VkWriteDescriptorSet', 'vkAllocateDescriptorSets',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindDescriptorSets',--- 'vkFreeDescriptorSets',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.vkUpdateDescriptorSetWithTemplate',--- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkUpdateDescriptorSetWithTemplateKHR'-type VkDescriptorSet = Ptr VkDescriptorSet_T--- | Dummy data to tag the 'Ptr' with-data VkDescriptorPool_T--- | VkDescriptorPool - Opaque handle to a descriptor pool object------ = See Also------ 'VkDescriptorSetAllocateInfo', 'vkCreateDescriptorPool',--- 'vkDestroyDescriptorPool', 'vkFreeDescriptorSets',--- 'vkResetDescriptorPool'-type VkDescriptorPool = Ptr VkDescriptorPool_T--- | vkCreateDescriptorSetLayout - Create a new descriptor set layout------ = Parameters------ - @device@ is the logical device that creates the descriptor set--- layout.------ - @pCreateInfo@ is a pointer to an instance of the--- 'VkDescriptorSetLayoutCreateInfo' structure specifying the state of--- the descriptor set layout object.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ - @pSetLayout@ points to a @VkDescriptorSetLayout@ handle in which the--- resulting descriptor set layout object is returned.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkDescriptorSetLayoutCreateInfo@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pSetLayout@ /must/ be a valid pointer to a @VkDescriptorSetLayout@--- handle------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.PipelineLayout.VkDescriptorSetLayout',--- 'VkDescriptorSetLayoutCreateInfo',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateDescriptorSetLayout" vkCreateDescriptorSetLayout :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSetLayout" ::: Ptr VkDescriptorSetLayout) -> IO VkResult--- | vkDestroyDescriptorSetLayout - Destroy a descriptor set layout object------ = Parameters------ - @device@ is the logical device that destroys the descriptor set--- layout.------ - @descriptorSetLayout@ is the descriptor set layout to destroy.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ == Valid Usage------ - If @VkAllocationCallbacks@ were provided when @descriptorSetLayout@--- was created, a compatible set of callbacks /must/ be provided here------ - If no @VkAllocationCallbacks@ were provided when--- @descriptorSetLayout@ was created, @pAllocator@ /must/ be @NULL@------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - If @descriptorSetLayout@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @descriptorSetLayout@ /must/ be a valid @VkDescriptorSetLayout@--- handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - If @descriptorSetLayout@ is a valid handle, it /must/ have been--- created, allocated, or retrieved from @device@------ == Host Synchronization------ - Host access to @descriptorSetLayout@ /must/ be externally--- synchronized------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.PipelineLayout.VkDescriptorSetLayout',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroyDescriptorSetLayout" vkDestroyDescriptorSetLayout :: ("device" ::: VkDevice) -> ("descriptorSetLayout" ::: VkDescriptorSetLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | vkCreateDescriptorPool - Creates a descriptor pool object------ = Parameters------ - @device@ is the logical device that creates the descriptor pool.------ - @pCreateInfo@ is a pointer to an instance of the--- 'VkDescriptorPoolCreateInfo' structure specifying the state of the--- descriptor pool object.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ - @pDescriptorPool@ points to a @VkDescriptorPool@ handle in which the--- resulting descriptor pool object is returned.------ = Description------ @pAllocator@ controls host memory allocation as described in the [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ The created descriptor pool is returned in @pDescriptorPool@.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkDescriptorPoolCreateInfo@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pDescriptorPool@ /must/ be a valid pointer to a @VkDescriptorPool@--- handle------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_FRAGMENTATION_EXT@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'VkDescriptorPool', 'VkDescriptorPoolCreateInfo',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateDescriptorPool" vkCreateDescriptorPool :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorPool" ::: Ptr VkDescriptorPool) -> IO VkResult--- | vkDestroyDescriptorPool - Destroy a descriptor pool object------ = Parameters------ - @device@ is the logical device that destroys the descriptor pool.------ - @descriptorPool@ is the descriptor pool to destroy.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ = Description------ When a pool is destroyed, all descriptor sets allocated from the pool--- are implicitly freed and become invalid. Descriptor sets allocated from--- a given pool do not need to be freed before destroying that descriptor--- pool.------ == Valid Usage------ - All submitted commands that refer to @descriptorPool@ (via any--- allocated descriptor sets) /must/ have completed execution------ - If @VkAllocationCallbacks@ were provided when @descriptorPool@ was--- created, a compatible set of callbacks /must/ be provided here------ - If no @VkAllocationCallbacks@ were provided when @descriptorPool@--- was created, @pAllocator@ /must/ be @NULL@------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - If @descriptorPool@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @descriptorPool@--- /must/ be a valid @VkDescriptorPool@ handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - If @descriptorPool@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@------ == Host Synchronization------ - Host access to @descriptorPool@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'VkDescriptorPool',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroyDescriptorPool" vkDestroyDescriptorPool :: ("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | vkResetDescriptorPool - Resets a descriptor pool object------ = Parameters------ - @device@ is the logical device that owns the descriptor pool.------ - @descriptorPool@ is the descriptor pool to be reset.------ - @flags@ is reserved for future use.------ = Description------ Resetting a descriptor pool recycles all of the resources from all of--- the descriptor sets allocated from the descriptor pool back to the--- descriptor pool, and the descriptor sets are implicitly freed.------ == Valid Usage------ - All uses of @descriptorPool@ (via any allocated descriptor sets)--- /must/ have completed execution------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @descriptorPool@ /must/ be a valid @VkDescriptorPool@ handle------ - @flags@ /must/ be @0@------ - @descriptorPool@ /must/ have been created, allocated, or retrieved--- from @device@------ == Host Synchronization------ - Host access to @descriptorPool@ /must/ be externally synchronized------ - Host access to any @VkDescriptorSet@ objects allocated from--- @descriptorPool@ /must/ be externally synchronized------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'VkDescriptorPool', 'VkDescriptorPoolResetFlags',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkResetDescriptorPool" vkResetDescriptorPool :: ("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("flags" ::: VkDescriptorPoolResetFlags) -> IO VkResult--- | vkAllocateDescriptorSets - Allocate one or more descriptor sets------ = Parameters------ - @device@ is the logical device that owns the descriptor pool.------ - @pAllocateInfo@ is a pointer to an instance of the--- 'VkDescriptorSetAllocateInfo' structure describing parameters of the--- allocation.------ - @pDescriptorSets@ is a pointer to an array of @VkDescriptorSet@--- handles in which the resulting descriptor set objects are returned.------ = Description------ The allocated descriptor sets are returned in @pDescriptorSets@.------ When a descriptor set is allocated, the initial state is largely--- uninitialized and all descriptors are undefined. However, the descriptor--- set /can/ be bound in a command buffer without causing errors or--- exceptions. For descriptor set bindings created with the--- @VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT@ bit set, all descriptors--- in that binding that are dynamically used /must/ have been populated--- before the descriptor set is--- [consumed](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-binding).--- For descriptor set bindings created without the--- @VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT@ bit set, all descriptors--- in that binding that are statically used /must/ have been populated--- before the descriptor set is--- [consumed](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-binding).--- Entries that are not used by a pipeline /can/ have uninitialized--- descriptors or descriptors of resources that have been destroyed, and--- executing a draw or dispatch with such a descriptor set bound does not--- cause undefined behavior. This means applications need not populate--- unused entries with dummy descriptors.------ If a call to @vkAllocateDescriptorSets@ would cause the total number of--- descriptor sets allocated from the pool to exceed the value of--- 'VkDescriptorPoolCreateInfo'::@maxSets@ used to create--- @pAllocateInfo@→@descriptorPool@, then the allocation /may/ fail due to--- lack of space in the descriptor pool. Similarly, the allocation /may/--- fail due to lack of space if the call to @vkAllocateDescriptorSets@--- would cause the number of any given descriptor type to exceed the sum of--- all the @descriptorCount@ members of each element of--- 'VkDescriptorPoolCreateInfo'::@pPoolSizes@ with a @member@ equal to that--- type. If the allocation fails due to no more space in the descriptor--- pool, and not because of system or device memory exhaustion, then--- @VK_ERROR_OUT_OF_POOL_MEMORY@ /must/ be returned.------ @vkAllocateDescriptorSets@ /can/ be used to create multiple descriptor--- sets. If the creation of any of those descriptor sets fails, then the--- implementation /must/ destroy all successfully created descriptor set--- objects from this command, set all entries of the @pDescriptorSets@--- array to 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' and return--- the error.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pAllocateInfo@ /must/ be a valid pointer to a valid--- @VkDescriptorSetAllocateInfo@ structure------ - @pDescriptorSets@ /must/ be a valid pointer to an array of--- @pAllocateInfo@::descriptorSetCount @VkDescriptorSet@ handles------ == Host Synchronization------ - Host access to @pAllocateInfo@::descriptorPool /must/ be externally--- synchronized------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_FRAGMENTED_POOL@------ - @VK_ERROR_OUT_OF_POOL_MEMORY@------ = See Also------ 'VkDescriptorSet', 'VkDescriptorSetAllocateInfo',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkAllocateDescriptorSets" vkAllocateDescriptorSets :: ("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkDescriptorSetAllocateInfo) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult--- | vkFreeDescriptorSets - Free one or more descriptor sets------ = Parameters------ - @device@ is the logical device that owns the descriptor pool.------ - @descriptorPool@ is the descriptor pool from which the descriptor--- sets were allocated.------ - @descriptorSetCount@ is the number of elements in the--- @pDescriptorSets@ array.------ - @pDescriptorSets@ is an array of handles to @VkDescriptorSet@--- objects.------ = Description------ After a successful call to @vkFreeDescriptorSets@, all descriptor sets--- in @pDescriptorSets@ are invalid.------ == Valid Usage------ - All submitted commands that refer to any element of--- @pDescriptorSets@ /must/ have completed execution------ - @pDescriptorSets@ /must/ be a valid pointer to an array of--- @descriptorSetCount@ @VkDescriptorSet@ handles, each element of--- which /must/ either be a valid handle or--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'------ - Each valid handle in @pDescriptorSets@ /must/ have been allocated--- from @descriptorPool@------ - @descriptorPool@ /must/ have been created with the--- @VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT@ flag------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @descriptorPool@ /must/ be a valid @VkDescriptorPool@ handle------ - @descriptorSetCount@ /must/ be greater than @0@------ - @descriptorPool@ /must/ have been created, allocated, or retrieved--- from @device@------ - Each element of @pDescriptorSets@ that is a valid handle /must/ have--- been created, allocated, or retrieved from @descriptorPool@------ == Host Synchronization------ - Host access to @descriptorPool@ /must/ be externally synchronized------ - Host access to each member of @pDescriptorSets@ /must/ be externally--- synchronized------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'VkDescriptorPool', 'VkDescriptorSet',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkFreeDescriptorSets" vkFreeDescriptorSets :: ("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult--- | vkUpdateDescriptorSets - Update the contents of a descriptor set object------ = Parameters------ - @device@ is the logical device that updates the descriptor sets.------ - @descriptorWriteCount@ is the number of elements in the--- @pDescriptorWrites@ array.------ - @pDescriptorWrites@ is a pointer to an array of--- 'VkWriteDescriptorSet' structures describing the descriptor sets to--- write to.------ - @descriptorCopyCount@ is the number of elements in the--- @pDescriptorCopies@ array.------ - @pDescriptorCopies@ is a pointer to an array of--- 'VkCopyDescriptorSet' structures describing the descriptor sets to--- copy between.------ = Description------ The operations described by @pDescriptorWrites@ are performed first,--- followed by the operations described by @pDescriptorCopies@. Within each--- array, the operations are performed in the order they appear in the--- array.------ Each element in the @pDescriptorWrites@ array describes an operation--- updating the descriptor set using descriptors for resources specified in--- the structure.------ Each element in the @pDescriptorCopies@ array is a 'VkCopyDescriptorSet'--- structure describing an operation copying descriptors between sets.------ If the @dstSet@ member of any element of @pDescriptorWrites@ or--- @pDescriptorCopies@ is bound, accessed, or modified by any command that--- was recorded to a command buffer which is currently in the [recording or--- executable--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle),--- and any of the descriptor bindings that are updated were not created--- with the @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ or--- @VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT@ bits set,--- that command buffer becomes--- [invalid](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).------ == Valid Usage------ - Descriptor bindings updated by this command which were created--- without the @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ or--- @VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT@ bits set--- /must/ not be used by any command that was recorded to a command--- buffer which is in the [pending--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - If @descriptorWriteCount@ is not @0@, @pDescriptorWrites@ /must/ be--- a valid pointer to an array of @descriptorWriteCount@ valid--- @VkWriteDescriptorSet@ structures------ - If @descriptorCopyCount@ is not @0@, @pDescriptorCopies@ /must/ be a--- valid pointer to an array of @descriptorCopyCount@ valid--- @VkCopyDescriptorSet@ structures------ == Host Synchronization------ - Host access to @pDescriptorWrites@[].dstSet /must/ be externally--- synchronized------ - Host access to @pDescriptorCopies@[].dstSet /must/ be externally--- synchronized------ = See Also------ 'VkCopyDescriptorSet',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkWriteDescriptorSet'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkUpdateDescriptorSets" vkUpdateDescriptorSets :: ("device" ::: VkDevice) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> ("descriptorCopyCount" ::: Word32) -> ("pDescriptorCopies" ::: Ptr VkCopyDescriptorSet) -> IO ()--- | VkDescriptorBufferInfo - Structure specifying descriptor buffer info------ = Description------ __Note__------ When setting @range@ to @VK_WHOLE_SIZE@, the effective range /must/ not--- be larger than the maximum range for the descriptor type--- ([maxUniformBufferRange](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-maxUniformBufferRange)--- or--- [maxStorageBufferRange](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-maxStorageBufferRange)).--- This means that @VK_WHOLE_SIZE@ is not typically useful in the common--- case where uniform buffer descriptors are suballocated from a buffer--- that is much larger than @maxUniformBufferRange@.------ For @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ and--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ descriptor types, @offset@--- is the base offset from which the dynamic offset is applied and @range@--- is the static size used for all dynamic offsets.------ == Valid Usage------ - @offset@ /must/ be less than the size of @buffer@------ - If @range@ is not equal to @VK_WHOLE_SIZE@, @range@ /must/ be--- greater than @0@------ - If @range@ is not equal to @VK_WHOLE_SIZE@, @range@ /must/ be less--- than or equal to the size of @buffer@ minus @offset@------ == Valid Usage (Implicit)------ - @buffer@ /must/ be a valid @VkBuffer@ handle------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer', @VkDeviceSize@,--- 'VkWriteDescriptorSet'-data VkDescriptorBufferInfo = VkDescriptorBufferInfo- { -- | @buffer@ is the buffer resource.- vkBuffer :: VkBuffer- , -- | @offset@ is the offset in bytes from the start of @buffer@. Access to- -- buffer memory via this descriptor uses addressing that is relative to- -- this starting offset.- vkOffset :: VkDeviceSize- , -- | @range@ is the size in bytes that is used for this descriptor update, or- -- @VK_WHOLE_SIZE@ to use the range from @offset@ to the end of the buffer.- vkRange :: VkDeviceSize- }- deriving (Eq, Show)--instance Storable VkDescriptorBufferInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkDescriptorBufferInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkBuffer (poked :: VkDescriptorBufferInfo))- *> poke (ptr `plusPtr` 8) (vkOffset (poked :: VkDescriptorBufferInfo))- *> poke (ptr `plusPtr` 16) (vkRange (poked :: VkDescriptorBufferInfo))--- | VkDescriptorImageInfo - Structure specifying descriptor image info------ = Description------ Members of @VkDescriptorImageInfo@ that are not used in an update (as--- described above) are ignored.------ == Valid Usage------ - @imageView@ /must/ not be 2D or 2D array image view created from a--- 3D image------ - @imageLayout@ /must/ match the actual--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' of each subresource--- accessible from @imageView@ at the time this descriptor is accessed------ - If @sampler@ is used and enables [sampler Y’CBCR--- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion):------ - The @format@ of the @imageView@ /must/ be the same as the--- 'Graphics.Vulkan.Core10.Core.VkFormat' of the image------ - The @aspectMask@ of the @imageView@ /must/ be--- @VK_IMAGE_ASPECT_COLOR_BIT@------ - The @components.a@ of the @imageView@ /must/ be--- @VK_COMPONENT_SWIZZLE_IDENTITY@------ - The @components.r@ of the @imageView@ /must/ be--- @VK_COMPONENT_SWIZZLE_IDENTITY@------ - The @components.g@ of the @imageView@ /must/ be--- @VK_COMPONENT_SWIZZLE_IDENTITY@------ - The @components.b@ of the @imageView@ /must/ be--- @VK_COMPONENT_SWIZZLE_IDENTITY@------ - The @pNext@ chain of the @imageView@ /must/ contain a--- @VkSamplerYcbcrConversionInfo@ which has a @conversion@ which is--- an /identically defined object/ to the @conversion@ of the--- @VkSamplerYcbcrConversionInfo@ which is in the @pNext@ chain of--- the @sampler@------ - If @sampler@ is used and does not enable [sampler Y’CBCR--- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion)--- and the 'Graphics.Vulkan.Core10.Core.VkFormat' of the image is a--- [multi-planar--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),--- the image /must/ have been created with--- @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@, and the @aspectMask@ of the--- @imageView@ /must/ be @VK_IMAGE_ASPECT_PLANE_0_BIT@,--- @VK_IMAGE_ASPECT_PLANE_1_BIT@ or (for three-plane formats only)--- @VK_IMAGE_ASPECT_PLANE_2_BIT@------ == Valid Usage (Implicit)------ - Both of @imageView@, and @sampler@ that are valid handles /must/--- have been created, allocated, or retrieved from the same @VkDevice@------ = See Also------ 'Graphics.Vulkan.Core10.Image.VkImageLayout',--- 'Graphics.Vulkan.Core10.ImageView.VkImageView',--- 'Graphics.Vulkan.Core10.Sampler.VkSampler', 'VkWriteDescriptorSet'-data VkDescriptorImageInfo = VkDescriptorImageInfo- { -- | @sampler@ is a sampler handle, and is used in descriptor updates for- -- types @VK_DESCRIPTOR_TYPE_SAMPLER@ and- -- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@ if the binding being updated- -- does not use immutable samplers.- vkSampler :: VkSampler- , -- | @imageView@ is an image view handle, and is used in descriptor updates- -- for types @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@,- -- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@,- -- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@, and- -- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@.- vkImageView :: VkImageView- , -- | @imageLayout@ is the layout that the image subresources accessible from- -- @imageView@ will be in at the time this descriptor is accessed.- -- @imageLayout@ is used in descriptor updates for types- -- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@, @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@,- -- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@, and- -- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@.- vkImageLayout :: VkImageLayout- }- deriving (Eq, Show)--instance Storable VkDescriptorImageInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkDescriptorImageInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSampler (poked :: VkDescriptorImageInfo))- *> poke (ptr `plusPtr` 8) (vkImageView (poked :: VkDescriptorImageInfo))- *> poke (ptr `plusPtr` 16) (vkImageLayout (poked :: VkDescriptorImageInfo))--- | VkWriteDescriptorSet - Structure specifying the parameters of a--- descriptor set write operation------ = Description------ Only one of @pImageInfo@, @pBufferInfo@, or @pTexelBufferView@ members--- is used according to the descriptor type specified in the--- @descriptorType@ member of the containing @VkWriteDescriptorSet@--- structure, as specified below.------ If the @dstBinding@ has fewer than @descriptorCount@ array elements--- remaining starting from @dstArrayElement@, then the remainder will be--- used to update the subsequent binding - @dstBinding@+1 starting at array--- element zero. If a binding has a @descriptorCount@ of zero, it is--- skipped. This behavior applies recursively, with the update affecting--- consecutive bindings as needed to update all @descriptorCount@--- descriptors.------ == Valid Usage------ - @dstBinding@ /must/ be less than or equal to the maximum value of--- @binding@ of all 'VkDescriptorSetLayoutBinding' structures specified--- when @dstSet@’s descriptor set layout was created------ - @dstBinding@ /must/ be a binding with a non-zero @descriptorCount@------ - All consecutive bindings updated via a single @VkWriteDescriptorSet@--- structure, except those with a @descriptorCount@ of zero, /must/--- have identical @descriptorType@ and @stageFlags@.------ - All consecutive bindings updated via a single @VkWriteDescriptorSet@--- structure, except those with a @descriptorCount@ of zero, /must/ all--- either use immutable samplers or /must/ all not use immutable--- samplers.------ - @descriptorType@ /must/ match the type of @dstBinding@ within--- @dstSet@------ - @dstSet@ /must/ be a valid 'VkDescriptorSet' handle------ - The sum of @dstArrayElement@ and @descriptorCount@ /must/ be less--- than or equal to the number of array elements in the descriptor set--- binding specified by @dstBinding@, and all applicable consecutive--- bindings, as described by--- [{html_spec_relative}#descriptorsets-updates-consecutive](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-updates-consecutive)------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_SAMPLER@,--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@,--- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@,--- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@, or--- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@, @pImageInfo@ /must/ be a--- valid pointer to an array of @descriptorCount@ valid--- @VkDescriptorImageInfo@ structures------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@, @pTexelBufferView@ /must/--- be a valid pointer to an array of @descriptorCount@ valid--- @VkBufferView@ handles------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@,--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@,--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@, or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@, @pBufferInfo@ /must/ be--- a valid pointer to an array of @descriptorCount@ valid--- @VkDescriptorBufferInfo@ structures------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_SAMPLER@ or--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@, and @dstSet@ was not--- allocated with a layout that included immutable samplers for--- @dstBinding@ with @descriptorType@, the @sampler@ member of each--- element of @pImageInfo@ /must/ be a valid @VkSampler@ object------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@,--- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@,--- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@, or--- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@, the @imageView@ and--- @imageLayout@ members of each element of @pImageInfo@ /must/ be a--- valid @VkImageView@ and--- 'Graphics.Vulkan.Core10.Image.VkImageLayout', respectively------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@, for each--- descriptor that will be accessed via load or store operations the--- @imageLayout@ member for corresponding elements of @pImageInfo@--- /must/ be @VK_IMAGE_LAYOUT_GENERAL@------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@, the @offset@ member of--- each element of @pBufferInfo@ /must/ be a multiple of--- @VkPhysicalDeviceLimits@::@minUniformBufferOffsetAlignment@------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@, the @offset@ member of--- each element of @pBufferInfo@ /must/ be a multiple of--- @VkPhysicalDeviceLimits@::@minStorageBufferOffsetAlignment@------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@,--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@,--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@, or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@, and the @buffer@ member--- of any element of @pBufferInfo@ is the handle of a non-sparse--- buffer, then that buffer /must/ be bound completely and contiguously--- to a single @VkDeviceMemory@ object------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@, the @buffer@ member of--- each element of @pBufferInfo@ /must/ have been created with--- @VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT@ set------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@, the @buffer@ member of--- each element of @pBufferInfo@ /must/ have been created with--- @VK_BUFFER_USAGE_STORAGE_BUFFER_BIT@ set------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@, the @range@ member of--- each element of @pBufferInfo@, or the effective range if @range@ is--- @VK_WHOLE_SIZE@, /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxUniformBufferRange@------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@, the @range@ member of--- each element of @pBufferInfo@, or the effective range if @range@ is--- @VK_WHOLE_SIZE@, /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxStorageBufferRange@------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@,--- the @VkBuffer@ that each element of @pTexelBufferView@ was created--- from /must/ have been created with--- @VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT@ set------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@,--- the @VkBuffer@ that each element of @pTexelBufferView@ was created--- from /must/ have been created with--- @VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT@ set------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@ or--- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@, the @imageView@ member of--- each element of @pImageInfo@ /must/ have been created with the--- identity swizzle------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@ or--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@, the @imageView@ member--- of each element of @pImageInfo@ /must/ have been created with--- @VK_IMAGE_USAGE_SAMPLED_BIT@ set------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@ or--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@, the @imageLayout@--- member of each element of @pImageInfo@ /must/ be--- @VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL@,--- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL@ or--- @VK_IMAGE_LAYOUT_GENERAL@------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@, the--- @imageView@ member of each element of @pImageInfo@ /must/ have been--- created with @VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT@ set------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@, the--- @imageView@ member of each element of @pImageInfo@ /must/ have been--- created with @VK_IMAGE_USAGE_STORAGE_BIT@ set------ - All consecutive bindings updated via a single @VkWriteDescriptorSet@--- structure, except those with a @descriptorCount@ of zero, /must/--- have identical--- 'Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing.VkDescriptorBindingFlagBitsEXT'.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET@------ - @pNext@ /must/ be @NULL@------ - @descriptorType@ /must/ be a valid 'VkDescriptorType' value------ - @descriptorCount@ /must/ be greater than @0@------ - Both of @dstSet@, and the elements of @pTexelBufferView@ that are--- valid handles /must/ have been created, allocated, or retrieved from--- the same @VkDevice@------ = See Also------ 'Graphics.Vulkan.Core10.BufferView.VkBufferView',--- 'VkDescriptorBufferInfo', 'VkDescriptorImageInfo', 'VkDescriptorSet',--- 'VkDescriptorType', 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.vkCmdPushDescriptorSetKHR',--- 'vkUpdateDescriptorSets'-data VkWriteDescriptorSet = VkWriteDescriptorSet- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @dstSet@ is the destination descriptor set to update.- vkDstSet :: VkDescriptorSet- , -- | @dstBinding@ is the descriptor binding within that set.- vkDstBinding :: Word32- , -- | @dstArrayElement@ is the starting element in that array.- vkDstArrayElement :: Word32- , -- | @descriptorCount@ is the number of descriptors to update (the number of- -- elements in @pImageInfo@, @pBufferInfo@, or @pTexelBufferView@).- vkDescriptorCount :: Word32- , -- | @descriptorType@ is a 'VkDescriptorType' specifying the type of each- -- descriptor in @pImageInfo@, @pBufferInfo@, or @pTexelBufferView@, as- -- described below. It /must/ be the same type as that specified in- -- @VkDescriptorSetLayoutBinding@ for @dstSet@ at @dstBinding@. The type of- -- the descriptor also controls which array the descriptors are taken from.- vkDescriptorType :: VkDescriptorType- , -- | @pImageInfo@ points to an array of 'VkDescriptorImageInfo' structures or- -- is ignored, as described below.- vkPImageInfo :: Ptr VkDescriptorImageInfo- , -- | @pBufferInfo@ points to an array of 'VkDescriptorBufferInfo' structures- -- or is ignored, as described below.- vkPBufferInfo :: Ptr VkDescriptorBufferInfo- , -- | @pTexelBufferView@ points to an array of- -- 'Graphics.Vulkan.Core10.BufferView.VkBufferView' handles as described in- -- the [Buffer- -- Views](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-buffer-views)- -- section or is ignored, as described below.- vkPTexelBufferView :: Ptr VkBufferView- }- deriving (Eq, Show)--instance Storable VkWriteDescriptorSet where- sizeOf ~_ = 64- alignment ~_ = 8- peek ptr = VkWriteDescriptorSet <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkWriteDescriptorSet))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkWriteDescriptorSet))- *> poke (ptr `plusPtr` 16) (vkDstSet (poked :: VkWriteDescriptorSet))- *> poke (ptr `plusPtr` 24) (vkDstBinding (poked :: VkWriteDescriptorSet))- *> poke (ptr `plusPtr` 28) (vkDstArrayElement (poked :: VkWriteDescriptorSet))- *> poke (ptr `plusPtr` 32) (vkDescriptorCount (poked :: VkWriteDescriptorSet))- *> poke (ptr `plusPtr` 36) (vkDescriptorType (poked :: VkWriteDescriptorSet))- *> poke (ptr `plusPtr` 40) (vkPImageInfo (poked :: VkWriteDescriptorSet))- *> poke (ptr `plusPtr` 48) (vkPBufferInfo (poked :: VkWriteDescriptorSet))- *> poke (ptr `plusPtr` 56) (vkPTexelBufferView (poked :: VkWriteDescriptorSet))--- | VkCopyDescriptorSet - Structure specifying a copy descriptor set--- operation------ == Valid Usage------ - @srcBinding@ /must/ be a valid binding within @srcSet@------ - The sum of @srcArrayElement@ and @descriptorCount@ /must/ be less--- than or equal to the number of array elements in the descriptor set--- binding specified by @srcBinding@, and all applicable consecutive--- bindings, as described by--- [{html_spec_relative}#descriptorsets-updates-consecutive](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-updates-consecutive)------ - @dstBinding@ /must/ be a valid binding within @dstSet@------ - The sum of @dstArrayElement@ and @descriptorCount@ /must/ be less--- than or equal to the number of array elements in the descriptor set--- binding specified by @dstBinding@, and all applicable consecutive--- bindings, as described by--- [{html_spec_relative}#descriptorsets-updates-consecutive](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-updates-consecutive)------ - If @srcSet@ is equal to @dstSet@, then the source and destination--- ranges of descriptors /must/ not overlap, where the ranges /may/--- include array elements from consecutive bindings as described by--- [{html_spec_relative}#descriptorsets-updates-consecutive](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-updates-consecutive)------ - If @srcSet@’s layout was created with the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@--- flag set, then @dstSet@’s layout /must/ also have been created with--- the @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@--- flag set------ - If @srcSet@’s layout was created without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@--- flag set, then @dstSet@’s layout /must/ also have been created--- without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@--- flag set------ - If the descriptor pool from which @srcSet@ was allocated was created--- with the @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@ flag--- set, then the descriptor pool from which @dstSet@ was allocated--- /must/ also have been created with the--- @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@ flag set------ - If the descriptor pool from which @srcSet@ was allocated was created--- without the @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@--- flag set, then the descriptor pool from which @dstSet@ was allocated--- /must/ also have been created without the--- @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@ flag set------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET@------ - @pNext@ /must/ be @NULL@------ - @srcSet@ /must/ be a valid @VkDescriptorSet@ handle------ - @dstSet@ /must/ be a valid @VkDescriptorSet@ handle------ - Both of @dstSet@, and @srcSet@ /must/ have been created, allocated,--- or retrieved from the same @VkDevice@------ = See Also------ 'VkDescriptorSet', 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkUpdateDescriptorSets'-data VkCopyDescriptorSet = VkCopyDescriptorSet- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @srcSet@, @srcBinding@, and @srcArrayElement@ are the source set,- -- binding, and array element, respectively.- vkSrcSet :: VkDescriptorSet- , -- No documentation found for Nested "VkCopyDescriptorSet" "srcBinding"- vkSrcBinding :: Word32- , -- No documentation found for Nested "VkCopyDescriptorSet" "srcArrayElement"- vkSrcArrayElement :: Word32- , -- | @dstSet@, @dstBinding@, and @dstArrayElement@ are the destination set,- -- binding, and array element, respectively.- vkDstSet :: VkDescriptorSet- , -- No documentation found for Nested "VkCopyDescriptorSet" "dstBinding"- vkDstBinding :: Word32- , -- No documentation found for Nested "VkCopyDescriptorSet" "dstArrayElement"- vkDstArrayElement :: Word32- , -- | @descriptorCount@ is the number of descriptors to copy from the source- -- to destination. If @descriptorCount@ is greater than the number of- -- remaining array elements in the source or destination binding, those- -- affect consecutive bindings in a manner similar to- -- 'VkWriteDescriptorSet' above.- vkDescriptorCount :: Word32- }- deriving (Eq, Show)--instance Storable VkCopyDescriptorSet where- sizeOf ~_ = 56- alignment ~_ = 8- peek ptr = VkCopyDescriptorSet <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 48)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkCopyDescriptorSet))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkCopyDescriptorSet))- *> poke (ptr `plusPtr` 16) (vkSrcSet (poked :: VkCopyDescriptorSet))- *> poke (ptr `plusPtr` 24) (vkSrcBinding (poked :: VkCopyDescriptorSet))- *> poke (ptr `plusPtr` 28) (vkSrcArrayElement (poked :: VkCopyDescriptorSet))- *> poke (ptr `plusPtr` 32) (vkDstSet (poked :: VkCopyDescriptorSet))- *> poke (ptr `plusPtr` 40) (vkDstBinding (poked :: VkCopyDescriptorSet))- *> poke (ptr `plusPtr` 44) (vkDstArrayElement (poked :: VkCopyDescriptorSet))- *> poke (ptr `plusPtr` 48) (vkDescriptorCount (poked :: VkCopyDescriptorSet))--- | VkDescriptorSetLayoutBinding - Structure specifying a descriptor set--- layout binding------ = Members------ - @binding@ is the binding number of this entry and corresponds to a--- resource of the same binding number in the shader stages.------ - @descriptorType@ is a 'VkDescriptorType' specifying which type of--- resource descriptors are used for this binding.------ - @descriptorCount@ is the number of descriptors contained in the--- binding, accessed in a shader as an array. If @descriptorCount@ is--- zero this binding entry is reserved and the resource /must/ not be--- accessed from any stage via this binding within any pipeline using--- the set layout.------ - @stageFlags@ member is a bitmask of--- 'Graphics.Vulkan.Core10.Pipeline.VkShaderStageFlagBits' specifying--- which pipeline shader stages /can/ access a resource for this--- binding. @VK_SHADER_STAGE_ALL@ is a shorthand specifying that all--- defined shader stages, including any additional stages defined by--- extensions, /can/ access the resource.------ If a shader stage is not included in @stageFlags@, then a resource--- /must/ not be accessed from that stage via this binding within any--- pipeline using the set layout. Other than input attachments which--- are limited to the fragment shader, there are no limitations on what--- combinations of stages /can/ use a descriptor binding, and in--- particular a binding /can/ be used by both graphics stages and the--- compute stage.------ = Description------ - @pImmutableSamplers@ affects initialization of samplers. If--- @descriptorType@ specifies a @VK_DESCRIPTOR_TYPE_SAMPLER@ or--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@ type descriptor, then--- @pImmutableSamplers@ /can/ be used to initialize a set of /immutable--- samplers/. Immutable samplers are permanently bound into the set--- layout; later binding a sampler into an immutable sampler slot in a--- descriptor set is not allowed. If @pImmutableSamplers@ is not--- @NULL@, then it is considered to be a pointer to an array of sampler--- handles that will be consumed by the set layout and used for the--- corresponding binding. If @pImmutableSamplers@ is @NULL@, then the--- sampler slots are dynamic and sampler handles /must/ be bound into--- descriptor sets using this layout. If @descriptorType@ is not one of--- these descriptor types, then @pImmutableSamplers@ is ignored.------ The above layout definition allows the descriptor bindings to be--- specified sparsely such that not all binding numbers between 0 and the--- maximum binding number need to be specified in the @pBindings@ array.--- Bindings that are not specified have a @descriptorCount@ and--- @stageFlags@ of zero, and the @descriptorType@ is treated as undefined.--- However, all binding numbers between 0 and the maximum binding number in--- the 'VkDescriptorSetLayoutCreateInfo'::@pBindings@ array /may/ consume--- memory in the descriptor set layout even if not all descriptor bindings--- are used, though it /should/ not consume additional memory from the--- descriptor pool.------ __Note__------ The maximum binding number specified /should/ be as compact as possible--- to avoid wasted memory.------ == Valid Usage------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_SAMPLER@ or--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@, and @descriptorCount@--- is not @0@ and @pImmutableSamplers@ is not @NULL@,--- @pImmutableSamplers@ /must/ be a valid pointer to an array of--- @descriptorCount@ valid @VkSampler@ handles------ - If @descriptorCount@ is not @0@, @stageFlags@ /must/ be a valid--- combination of--- 'Graphics.Vulkan.Core10.Pipeline.VkShaderStageFlagBits' values------ - If @descriptorType@ is @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ and--- @descriptorCount@ is not @0@, then @stageFlags@ /must/ be @0@ or--- @VK_SHADER_STAGE_FRAGMENT_BIT@------ == Valid Usage (Implicit)------ - @descriptorType@ /must/ be a valid 'VkDescriptorType' value------ = See Also------ 'VkDescriptorSetLayoutCreateInfo', 'VkDescriptorType',--- 'Graphics.Vulkan.Core10.Sampler.VkSampler',--- 'Graphics.Vulkan.Core10.PipelineLayout.VkShaderStageFlags'-data VkDescriptorSetLayoutBinding = VkDescriptorSetLayoutBinding- { -- No documentation found for Nested "VkDescriptorSetLayoutBinding" "binding"- vkBinding :: Word32- , -- No documentation found for Nested "VkDescriptorSetLayoutBinding" "descriptorType"- vkDescriptorType :: VkDescriptorType- , -- No documentation found for Nested "VkDescriptorSetLayoutBinding" "descriptorCount"- vkDescriptorCount :: Word32- , -- No documentation found for Nested "VkDescriptorSetLayoutBinding" "stageFlags"- vkStageFlags :: VkShaderStageFlags- , -- No documentation found for Nested "VkDescriptorSetLayoutBinding" "pImmutableSamplers"- vkPImmutableSamplers :: Ptr VkSampler- }- deriving (Eq, Show)--instance Storable VkDescriptorSetLayoutBinding where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkDescriptorSetLayoutBinding <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkBinding (poked :: VkDescriptorSetLayoutBinding))- *> poke (ptr `plusPtr` 4) (vkDescriptorType (poked :: VkDescriptorSetLayoutBinding))- *> poke (ptr `plusPtr` 8) (vkDescriptorCount (poked :: VkDescriptorSetLayoutBinding))- *> poke (ptr `plusPtr` 12) (vkStageFlags (poked :: VkDescriptorSetLayoutBinding))- *> poke (ptr `plusPtr` 16) (vkPImmutableSamplers (poked :: VkDescriptorSetLayoutBinding))--- | VkDescriptorSetLayoutCreateInfo - Structure specifying parameters of a--- newly created descriptor set layout------ == Valid Usage------ - The 'VkDescriptorSetLayoutBinding'::@binding@ members of the--- elements of the @pBindings@ array /must/ each have different values.------ - If @flags@ contains--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR@, then all--- elements of @pBindings@ /must/ not have a @descriptorType@ of--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@------ - If @flags@ contains--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR@, then the--- total number of elements of all bindings /must/ be less than or--- equal to--- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.VkPhysicalDevicePushDescriptorPropertiesKHR'::@maxPushDescriptors@------ - If any binding has the--- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ bit set, @flags@--- /must/ include--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@------ - If any binding has the--- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ bit set, then all--- bindings /must/ not have @descriptorType@ of--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO@------ - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing.VkDescriptorSetLayoutBindingFlagsCreateInfoEXT'------ - @flags@ /must/ be a valid combination of--- 'VkDescriptorSetLayoutCreateFlagBits' values------ - If @bindingCount@ is not @0@, @pBindings@ /must/ be a valid pointer--- to an array of @bindingCount@ valid @VkDescriptorSetLayoutBinding@--- structures------ = See Also------ 'VkDescriptorSetLayoutBinding', 'VkDescriptorSetLayoutCreateFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkCreateDescriptorSetLayout',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance3.vkGetDescriptorSetLayoutSupport',--- 'Graphics.Vulkan.Extensions.VK_KHR_maintenance3.vkGetDescriptorSetLayoutSupportKHR'-data VkDescriptorSetLayoutCreateInfo = VkDescriptorSetLayoutCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is a bitmask of 'VkDescriptorSetLayoutCreateFlagBits' specifying- -- options for descriptor set layout creation.- vkFlags :: VkDescriptorSetLayoutCreateFlags- , -- | @bindingCount@ is the number of elements in @pBindings@.- vkBindingCount :: Word32- , -- | @pBindings@ is a pointer to an array of 'VkDescriptorSetLayoutBinding'- -- structures.- vkPBindings :: Ptr VkDescriptorSetLayoutBinding- }- deriving (Eq, Show)--instance Storable VkDescriptorSetLayoutCreateInfo where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkDescriptorSetLayoutCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDescriptorSetLayoutCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDescriptorSetLayoutCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkDescriptorSetLayoutCreateInfo))- *> poke (ptr `plusPtr` 20) (vkBindingCount (poked :: VkDescriptorSetLayoutCreateInfo))- *> poke (ptr `plusPtr` 24) (vkPBindings (poked :: VkDescriptorSetLayoutCreateInfo))--- | VkDescriptorPoolSize - Structure specifying descriptor pool size------ == Valid Usage------ - @descriptorCount@ /must/ be greater than @0@------ == Valid Usage (Implicit)------ - @type@ /must/ be a valid 'VkDescriptorType' value------ = See Also------ 'VkDescriptorPoolCreateInfo', 'VkDescriptorType'-data VkDescriptorPoolSize = VkDescriptorPoolSize- { -- | @type@ is the type of descriptor.- vkType :: VkDescriptorType- , -- | @descriptorCount@ is the number of descriptors of that type to allocate.- vkDescriptorCount :: Word32- }- deriving (Eq, Show)--instance Storable VkDescriptorPoolSize where- sizeOf ~_ = 8- alignment ~_ = 4- peek ptr = VkDescriptorPoolSize <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- poke ptr poked = poke (ptr `plusPtr` 0) (vkType (poked :: VkDescriptorPoolSize))- *> poke (ptr `plusPtr` 4) (vkDescriptorCount (poked :: VkDescriptorPoolSize))--- | VkDescriptorPoolCreateInfo - Structure specifying parameters of a newly--- created descriptor pool------ = Description------ If multiple @VkDescriptorPoolSize@ structures appear in the @pPoolSizes@--- array then the pool will be created with enough storage for the total--- number of descriptors of each type.------ Fragmentation of a descriptor pool is possible and /may/ lead to--- descriptor set allocation failures. A failure due to fragmentation is--- defined as failing a descriptor set allocation despite the sum of all--- outstanding descriptor set allocations from the pool plus the requested--- allocation requiring no more than the total number of descriptors--- requested at pool creation. Implementations provide certain guarantees--- of when fragmentation /must/ not cause allocation failure, as described--- below.------ If a descriptor pool has not had any descriptor sets freed since it was--- created or most recently reset then fragmentation /must/ not cause an--- allocation failure (note that this is always the case for a pool created--- without the @VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT@ bit--- set). Additionally, if all sets allocated from the pool since it was--- created or most recently reset use the same number of descriptors (of--- each type) and the requested allocation also uses that same number of--- descriptors (of each type), then fragmentation /must/ not cause an--- allocation failure.------ If an allocation failure occurs due to fragmentation, an application--- /can/ create an additional descriptor pool to perform further descriptor--- set allocations.------ If @flags@ has the @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@--- bit set, descriptor pool creation /may/ fail with the error--- @VK_ERROR_FRAGMENTATION_EXT@ if the total number of descriptors across--- all pools (including this one) created with this bit set exceeds--- @maxUpdateAfterBindDescriptorsInAllPools@, or if fragmentation of the--- underlying hardware resources occurs.------ == Valid Usage------ - @maxSets@ /must/ be greater than @0@------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be a valid combination of--- 'VkDescriptorPoolCreateFlagBits' values------ - @pPoolSizes@ /must/ be a valid pointer to an array of--- @poolSizeCount@ valid @VkDescriptorPoolSize@ structures------ - @poolSizeCount@ /must/ be greater than @0@------ = See Also------ 'VkDescriptorPoolCreateFlags', 'VkDescriptorPoolSize',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateDescriptorPool'-data VkDescriptorPoolCreateInfo = VkDescriptorPoolCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is a bitmask of 'VkDescriptorPoolCreateFlagBits' specifying- -- certain supported operations on the pool.- vkFlags :: VkDescriptorPoolCreateFlags- , -- | @maxSets@ is the maximum number of descriptor sets that /can/ be- -- allocated from the pool.- vkMaxSets :: Word32- , -- | @poolSizeCount@ is the number of elements in @pPoolSizes@.- vkPoolSizeCount :: Word32- , -- | @pPoolSizes@ is a pointer to an array of @VkDescriptorPoolSize@- -- structures, each containing a descriptor type and number of descriptors- -- of that type to be allocated in the pool.- vkPPoolSizes :: Ptr VkDescriptorPoolSize- }- deriving (Eq, Show)--instance Storable VkDescriptorPoolCreateInfo where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkDescriptorPoolCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDescriptorPoolCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDescriptorPoolCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkDescriptorPoolCreateInfo))- *> poke (ptr `plusPtr` 20) (vkMaxSets (poked :: VkDescriptorPoolCreateInfo))- *> poke (ptr `plusPtr` 24) (vkPoolSizeCount (poked :: VkDescriptorPoolCreateInfo))- *> poke (ptr `plusPtr` 32) (vkPPoolSizes (poked :: VkDescriptorPoolCreateInfo))--- | VkDescriptorSetAllocateInfo - Structure specifying the allocation--- parameters for descriptor sets------ == Valid Usage------ - Each element of @pSetLayouts@ /must/ not have been created with--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR@ set------ - If any element of @pSetLayouts@ was created with the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set, @descriptorPool@ /must/ have been created with the--- @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@ flag set------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO@------ - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing.VkDescriptorSetVariableDescriptorCountAllocateInfoEXT'------ - @descriptorPool@ /must/ be a valid @VkDescriptorPool@ handle------ - @pSetLayouts@ /must/ be a valid pointer to an array of--- @descriptorSetCount@ valid @VkDescriptorSetLayout@ handles------ - @descriptorSetCount@ /must/ be greater than @0@------ - Both of @descriptorPool@, and the elements of @pSetLayouts@ /must/--- have been created, allocated, or retrieved from the same @VkDevice@------ = See Also------ 'VkDescriptorPool',--- 'Graphics.Vulkan.Core10.PipelineLayout.VkDescriptorSetLayout',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkAllocateDescriptorSets'-data VkDescriptorSetAllocateInfo = VkDescriptorSetAllocateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @descriptorPool@ is the pool which the sets will be allocated from.- vkDescriptorPool :: VkDescriptorPool- , -- | @descriptorSetCount@ determines the number of descriptor sets to be- -- allocated from the pool.- vkDescriptorSetCount :: Word32- , -- | @pSetLayouts@ is an array of descriptor set layouts, with each member- -- specifying how the corresponding descriptor set is allocated.- vkPSetLayouts :: Ptr VkDescriptorSetLayout- }- deriving (Eq, Show)--instance Storable VkDescriptorSetAllocateInfo where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkDescriptorSetAllocateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDescriptorSetAllocateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDescriptorSetAllocateInfo))- *> poke (ptr `plusPtr` 16) (vkDescriptorPool (poked :: VkDescriptorSetAllocateInfo))- *> poke (ptr `plusPtr` 24) (vkDescriptorSetCount (poked :: VkDescriptorSetAllocateInfo))- *> poke (ptr `plusPtr` 32) (vkPSetLayouts (poked :: VkDescriptorSetAllocateInfo))--- | VkDescriptorSetLayoutCreateFlags - Bitmask of--- VkDescriptorSetLayoutCreateFlagBits------ = Description------ @VkDescriptorSetLayoutCreateFlags@ is a bitmask type for setting a mask--- of zero or more 'VkDescriptorSetLayoutCreateFlagBits'.------ = See Also------ 'VkDescriptorSetLayoutCreateFlagBits', 'VkDescriptorSetLayoutCreateInfo'-type VkDescriptorSetLayoutCreateFlags = VkDescriptorSetLayoutCreateFlagBits--- | VkDescriptorPoolCreateFlags - Bitmask of VkDescriptorPoolCreateFlagBits------ = Description------ @VkDescriptorPoolCreateFlags@ is a bitmask type for setting a mask of--- zero or more 'VkDescriptorPoolCreateFlagBits'.------ = See Also------ 'VkDescriptorPoolCreateFlagBits', 'VkDescriptorPoolCreateInfo'-type VkDescriptorPoolCreateFlags = VkDescriptorPoolCreateFlagBits+{-# language CPP #-}+module Graphics.Vulkan.Core10.DescriptorSet ( createDescriptorSetLayout+ , withDescriptorSetLayout+ , destroyDescriptorSetLayout+ , createDescriptorPool+ , withDescriptorPool+ , destroyDescriptorPool+ , resetDescriptorPool+ , allocateDescriptorSets+ , withDescriptorSets+ , freeDescriptorSets+ , updateDescriptorSets+ , DescriptorBufferInfo(..)+ , DescriptorImageInfo(..)+ , WriteDescriptorSet(..)+ , CopyDescriptorSet(..)+ , DescriptorSetLayoutBinding(..)+ , DescriptorSetLayoutCreateInfo(..)+ , DescriptorPoolSize(..)+ , DescriptorPoolCreateInfo(..)+ , DescriptorSetAllocateInfo(..)+ ) where++import Control.Exception.Base (bracket)+import Control.Monad (unless)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Marshal.Utils (maybePeek)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Either (Either)+import Data.Type.Equality ((:~:)(Refl))+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.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.Core10.Handles (BufferView)+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.Handles (DescriptorPool)+import Graphics.Vulkan.Core10.Handles (DescriptorPool(..))+import Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits (DescriptorPoolCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block (DescriptorPoolInlineUniformBlockCreateInfoEXT)+import Graphics.Vulkan.Core10.Enums.DescriptorPoolResetFlags (DescriptorPoolResetFlags)+import Graphics.Vulkan.Core10.Enums.DescriptorPoolResetFlags (DescriptorPoolResetFlags(..))+import Graphics.Vulkan.Core10.Handles (DescriptorSet)+import Graphics.Vulkan.Core10.Handles (DescriptorSet(..))+import Graphics.Vulkan.Core10.Handles (DescriptorSetLayout)+import Graphics.Vulkan.Core10.Handles (DescriptorSetLayout(..))+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (DescriptorSetLayoutBindingFlagsCreateInfo)+import Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits (DescriptorSetLayoutCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (DescriptorSetVariableDescriptorCountAllocateInfo)+import Graphics.Vulkan.Core10.Enums.DescriptorType (DescriptorType)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkAllocateDescriptorSets))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateDescriptorPool))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateDescriptorSetLayout))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyDescriptorPool))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyDescriptorSetLayout))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkFreeDescriptorSets))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkResetDescriptorPool))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkUpdateDescriptorSets))+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout)+import Graphics.Vulkan.Core10.Handles (ImageView)+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Handles (Sampler)+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (WriteDescriptorSetAccelerationStructureNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block (WriteDescriptorSetInlineUniformBlockEXT)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_DESCRIPTOR_SET))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateDescriptorSetLayout+ :: FunPtr (Ptr Device_T -> Ptr (DescriptorSetLayoutCreateInfo a) -> Ptr AllocationCallbacks -> Ptr DescriptorSetLayout -> IO Result) -> Ptr Device_T -> Ptr (DescriptorSetLayoutCreateInfo a) -> Ptr AllocationCallbacks -> Ptr DescriptorSetLayout -> IO Result++-- | vkCreateDescriptorSetLayout - Create a new descriptor set layout+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the descriptor set layout.+--+-- - @pCreateInfo@ is a pointer to a 'DescriptorSetLayoutCreateInfo'+-- structure specifying the state of the descriptor set layout object.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pSetLayout@ is a pointer to a+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' handle in which+-- the resulting descriptor set layout object is returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'DescriptorSetLayoutCreateInfo' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pSetLayout@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout',+-- 'DescriptorSetLayoutCreateInfo', 'Graphics.Vulkan.Core10.Handles.Device'+createDescriptorSetLayout :: PokeChain a => Device -> DescriptorSetLayoutCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (DescriptorSetLayout)+createDescriptorSetLayout device createInfo allocator = evalContT $ do+ let vkCreateDescriptorSetLayout' = mkVkCreateDescriptorSetLayout (pVkCreateDescriptorSetLayout (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPSetLayout <- ContT $ bracket (callocBytes @DescriptorSetLayout 8) free+ r <- lift $ vkCreateDescriptorSetLayout' (deviceHandle (device)) pCreateInfo pAllocator (pPSetLayout)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSetLayout <- lift $ peek @DescriptorSetLayout pPSetLayout+ pure $ (pSetLayout)++-- | A safe wrapper for 'createDescriptorSetLayout' and+-- 'destroyDescriptorSetLayout' using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withDescriptorSetLayout :: PokeChain a => Device -> DescriptorSetLayoutCreateInfo a -> Maybe AllocationCallbacks -> (DescriptorSetLayout -> IO r) -> IO r+withDescriptorSetLayout device descriptorSetLayoutCreateInfo allocationCallbacks =+ bracket+ (createDescriptorSetLayout device descriptorSetLayoutCreateInfo allocationCallbacks)+ (\o -> destroyDescriptorSetLayout device o allocationCallbacks)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDestroyDescriptorSetLayout+ :: FunPtr (Ptr Device_T -> DescriptorSetLayout -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> DescriptorSetLayout -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyDescriptorSetLayout - Destroy a descriptor set layout object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the descriptor set layout.+--+-- - 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' is the+-- descriptor set layout to destroy.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- == Valid Usage+--+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' was created, a+-- compatible set of callbacks /must/ be provided here+--+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' was created,+-- @pAllocator@ /must/ be @NULL@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - If 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' /must/ be a+-- valid 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - If 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' is a valid+-- handle, it /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout'+-- /must/ be externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout',+-- 'Graphics.Vulkan.Core10.Handles.Device'+destroyDescriptorSetLayout :: Device -> DescriptorSetLayout -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyDescriptorSetLayout device descriptorSetLayout allocator = evalContT $ do+ let vkDestroyDescriptorSetLayout' = mkVkDestroyDescriptorSetLayout (pVkDestroyDescriptorSetLayout (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyDescriptorSetLayout' (deviceHandle (device)) (descriptorSetLayout) pAllocator+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateDescriptorPool+ :: FunPtr (Ptr Device_T -> Ptr (DescriptorPoolCreateInfo a) -> Ptr AllocationCallbacks -> Ptr DescriptorPool -> IO Result) -> Ptr Device_T -> Ptr (DescriptorPoolCreateInfo a) -> Ptr AllocationCallbacks -> Ptr DescriptorPool -> IO Result++-- | vkCreateDescriptorPool - Creates a descriptor pool object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the descriptor pool.+--+-- - @pCreateInfo@ is a pointer to a 'DescriptorPoolCreateInfo' structure+-- specifying the state of the descriptor pool object.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pDescriptorPool@ is a pointer to a+-- 'Graphics.Vulkan.Core10.Handles.DescriptorPool' handle in which the+-- resulting descriptor pool object is returned.+--+-- = Description+--+-- @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- The created descriptor pool is returned in @pDescriptorPool@.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'DescriptorPoolCreateInfo' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pDescriptorPool@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.DescriptorPool' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing.ERROR_FRAGMENTATION_EXT'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.DescriptorPool',+-- 'DescriptorPoolCreateInfo', 'Graphics.Vulkan.Core10.Handles.Device'+createDescriptorPool :: PokeChain a => Device -> DescriptorPoolCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (DescriptorPool)+createDescriptorPool device createInfo allocator = evalContT $ do+ let vkCreateDescriptorPool' = mkVkCreateDescriptorPool (pVkCreateDescriptorPool (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPDescriptorPool <- ContT $ bracket (callocBytes @DescriptorPool 8) free+ r <- lift $ vkCreateDescriptorPool' (deviceHandle (device)) pCreateInfo pAllocator (pPDescriptorPool)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pDescriptorPool <- lift $ peek @DescriptorPool pPDescriptorPool+ pure $ (pDescriptorPool)++-- | A safe wrapper for 'createDescriptorPool' and 'destroyDescriptorPool'+-- using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withDescriptorPool :: PokeChain a => Device -> DescriptorPoolCreateInfo a -> Maybe AllocationCallbacks -> (DescriptorPool -> IO r) -> IO r+withDescriptorPool device descriptorPoolCreateInfo allocationCallbacks =+ bracket+ (createDescriptorPool device descriptorPoolCreateInfo allocationCallbacks)+ (\o -> destroyDescriptorPool device o allocationCallbacks)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDestroyDescriptorPool+ :: FunPtr (Ptr Device_T -> DescriptorPool -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> DescriptorPool -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyDescriptorPool - Destroy a descriptor pool object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the descriptor pool.+--+-- - 'Graphics.Vulkan.Core10.Handles.DescriptorPool' is the descriptor+-- pool to destroy.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- = Description+--+-- When a pool is destroyed, all descriptor sets allocated from the pool+-- are implicitly freed and become invalid. Descriptor sets allocated from+-- a given pool do not need to be freed before destroying that descriptor+-- pool.+--+-- == Valid Usage+--+-- - All submitted commands that refer to+-- 'Graphics.Vulkan.Core10.Handles.DescriptorPool' (via any allocated+-- descriptor sets) /must/ have completed execution+--+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.DescriptorPool'+-- was created, a compatible set of callbacks /must/ be provided here+--+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.DescriptorPool'+-- was created, @pAllocator@ /must/ be @NULL@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - If 'Graphics.Vulkan.Core10.Handles.DescriptorPool' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.DescriptorPool' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.DescriptorPool' handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - If 'Graphics.Vulkan.Core10.Handles.DescriptorPool' is a valid+-- handle, it /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.DescriptorPool'+-- /must/ be externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.DescriptorPool',+-- 'Graphics.Vulkan.Core10.Handles.Device'+destroyDescriptorPool :: Device -> DescriptorPool -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyDescriptorPool device descriptorPool allocator = evalContT $ do+ let vkDestroyDescriptorPool' = mkVkDestroyDescriptorPool (pVkDestroyDescriptorPool (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyDescriptorPool' (deviceHandle (device)) (descriptorPool) pAllocator+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkResetDescriptorPool+ :: FunPtr (Ptr Device_T -> DescriptorPool -> DescriptorPoolResetFlags -> IO Result) -> Ptr Device_T -> DescriptorPool -> DescriptorPoolResetFlags -> IO Result++-- | vkResetDescriptorPool - Resets a descriptor pool object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the descriptor pool.+--+-- - 'Graphics.Vulkan.Core10.Handles.DescriptorPool' is the descriptor+-- pool to be reset.+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+--+-- = Description+--+-- Resetting a descriptor pool recycles all of the resources from all of+-- the descriptor sets allocated from the descriptor pool back to the+-- descriptor pool, and the descriptor sets are implicitly freed.+--+-- == Valid Usage+--+-- - All uses of 'Graphics.Vulkan.Core10.Handles.DescriptorPool' (via any+-- allocated descriptor sets) /must/ have completed execution+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.DescriptorPool' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.DescriptorPool' handle+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+--+-- - 'Graphics.Vulkan.Core10.Handles.DescriptorPool' /must/ have been+-- created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.DescriptorPool'+-- /must/ be externally synchronized+--+-- - Host access to any 'Graphics.Vulkan.Core10.Handles.DescriptorSet'+-- objects allocated from+-- 'Graphics.Vulkan.Core10.Handles.DescriptorPool' /must/ be externally+-- synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.DescriptorPool',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorPoolResetFlags.DescriptorPoolResetFlags',+-- 'Graphics.Vulkan.Core10.Handles.Device'+resetDescriptorPool :: Device -> DescriptorPool -> DescriptorPoolResetFlags -> IO ()+resetDescriptorPool device descriptorPool flags = do+ let vkResetDescriptorPool' = mkVkResetDescriptorPool (pVkResetDescriptorPool (deviceCmds (device :: Device)))+ _ <- vkResetDescriptorPool' (deviceHandle (device)) (descriptorPool) (flags)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkAllocateDescriptorSets+ :: FunPtr (Ptr Device_T -> Ptr (DescriptorSetAllocateInfo a) -> Ptr DescriptorSet -> IO Result) -> Ptr Device_T -> Ptr (DescriptorSetAllocateInfo a) -> Ptr DescriptorSet -> IO Result++-- | vkAllocateDescriptorSets - Allocate one or more descriptor sets+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the descriptor pool.+--+-- - @pAllocateInfo@ is a pointer to a 'DescriptorSetAllocateInfo'+-- structure describing parameters of the allocation.+--+-- - @pDescriptorSets@ is a pointer to an array of+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' handles in which the+-- resulting descriptor set objects are returned.+--+-- = Description+--+-- The allocated descriptor sets are returned in @pDescriptorSets@.+--+-- When a descriptor set is allocated, the initial state is largely+-- uninitialized and all descriptors are undefined. Descriptors also become+-- undefined if the underlying resource is destroyed. Descriptor sets+-- containing undefined descriptors /can/ still be bound and used, subject+-- to the following conditions:+--+-- - For descriptor set bindings created with the+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT'+-- bit set, all descriptors in that binding that are dynamically used+-- /must/ have been populated before the descriptor set is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-binding consumed>.+--+-- - For descriptor set bindings created without the+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT'+-- bit set, all descriptors in that binding that are statically used+-- /must/ have been populated before the descriptor set is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-binding consumed>.+--+-- - Descriptor bindings with descriptor type of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+-- /can/ be undefined when the descriptor set is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-binding consumed>;+-- though values in that block will be undefined.+--+-- - Entries that are not used by a pipeline /can/ have undefined+-- descriptors.+--+-- If a call to 'allocateDescriptorSets' would cause the total number of+-- descriptor sets allocated from the pool to exceed the value of+-- 'DescriptorPoolCreateInfo'::@maxSets@ used to create+-- @pAllocateInfo->descriptorPool@, then the allocation /may/ fail due to+-- lack of space in the descriptor pool. Similarly, the allocation /may/+-- fail due to lack of space if the call to 'allocateDescriptorSets' would+-- cause the number of any given descriptor type to exceed the sum of all+-- the @descriptorCount@ members of each element of+-- 'DescriptorPoolCreateInfo'::@pPoolSizes@ with a @member@ equal to that+-- type.+--+-- Additionally, the allocation /may/ also fail if a call to+-- 'allocateDescriptorSets' would cause the total number of inline uniform+-- block bindings allocated from the pool to exceed the value of+-- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.DescriptorPoolInlineUniformBlockCreateInfoEXT'::@maxInlineUniformBlockBindings@+-- used to create the descriptor pool.+--+-- If the allocation fails due to no more space in the descriptor pool, and+-- not because of system or device memory exhaustion, then+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_POOL_MEMORY' /must/ be+-- returned.+--+-- 'allocateDescriptorSets' /can/ be used to create multiple descriptor+-- sets. If the creation of any of those descriptor sets fails, then the+-- implementation /must/ destroy all successfully created descriptor set+-- objects from this command, set all entries of the @pDescriptorSets@+-- array to 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' and return+-- the error.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pAllocateInfo@ /must/ be a valid pointer to a valid+-- 'DescriptorSetAllocateInfo' structure+--+-- - @pDescriptorSets@ /must/ be a valid pointer to an array of+-- @pAllocateInfo@::descriptorSetCount+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' handles+--+-- - The value referenced by @pAllocateInfo@::@descriptorSetCount@ /must/+-- be greater than @0@+--+-- == Host Synchronization+--+-- - Host access to @pAllocateInfo@::descriptorPool /must/ be externally+-- synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_FRAGMENTED_POOL'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_POOL_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSet',+-- 'DescriptorSetAllocateInfo', 'Graphics.Vulkan.Core10.Handles.Device'+allocateDescriptorSets :: PokeChain a => Device -> DescriptorSetAllocateInfo a -> IO (("descriptorSets" ::: Vector DescriptorSet))+allocateDescriptorSets device allocateInfo = evalContT $ do+ let vkAllocateDescriptorSets' = mkVkAllocateDescriptorSets (pVkAllocateDescriptorSets (deviceCmds (device :: Device)))+ pAllocateInfo <- ContT $ withCStruct (allocateInfo)+ pPDescriptorSets <- ContT $ bracket (callocBytes @DescriptorSet ((fromIntegral . Data.Vector.length . setLayouts $ (allocateInfo)) * 8)) free+ r <- lift $ vkAllocateDescriptorSets' (deviceHandle (device)) pAllocateInfo (pPDescriptorSets)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pDescriptorSets <- lift $ generateM (fromIntegral . Data.Vector.length . setLayouts $ (allocateInfo)) (\i -> peek @DescriptorSet ((pPDescriptorSets `advancePtrBytes` (8 * (i)) :: Ptr DescriptorSet)))+ pure $ (pDescriptorSets)++-- | A safe wrapper for 'allocateDescriptorSets' and 'freeDescriptorSets'+-- using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withDescriptorSets :: PokeChain a => Device -> DescriptorSetAllocateInfo a -> (Vector DescriptorSet -> IO r) -> IO r+withDescriptorSets device descriptorSetAllocateInfo =+ bracket+ (allocateDescriptorSets device descriptorSetAllocateInfo)+ (\o -> freeDescriptorSets device (descriptorPool (descriptorSetAllocateInfo :: DescriptorSetAllocateInfo _)) o)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkFreeDescriptorSets+ :: FunPtr (Ptr Device_T -> DescriptorPool -> Word32 -> Ptr DescriptorSet -> IO Result) -> Ptr Device_T -> DescriptorPool -> Word32 -> Ptr DescriptorSet -> IO Result++-- | vkFreeDescriptorSets - Free one or more descriptor sets+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the descriptor pool.+--+-- - 'Graphics.Vulkan.Core10.Handles.DescriptorPool' is the descriptor+-- pool from which the descriptor sets were allocated.+--+-- - @descriptorSetCount@ is the number of elements in the+-- @pDescriptorSets@ array.+--+-- - @pDescriptorSets@ is a pointer to an array of handles to+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' objects.+--+-- = Description+--+-- After calling 'freeDescriptorSets', all descriptor sets in+-- @pDescriptorSets@ are invalid.+--+-- == Valid Usage+--+-- - All submitted commands that refer to any element of+-- @pDescriptorSets@ /must/ have completed execution+--+-- - @pDescriptorSets@ /must/ be a valid pointer to an array of+-- @descriptorSetCount@ 'Graphics.Vulkan.Core10.Handles.DescriptorSet'+-- handles, each element of which /must/ either be a valid handle or+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- - Each valid handle in @pDescriptorSets@ /must/ have been allocated+-- from 'Graphics.Vulkan.Core10.Handles.DescriptorPool'+--+-- - 'Graphics.Vulkan.Core10.Handles.DescriptorPool' /must/ have been+-- created with the+-- 'Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT'+-- flag+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.DescriptorPool' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.DescriptorPool' handle+--+-- - @descriptorSetCount@ /must/ be greater than @0@+--+-- - 'Graphics.Vulkan.Core10.Handles.DescriptorPool' /must/ have been+-- created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- - Each element of @pDescriptorSets@ that is a valid handle /must/ have+-- been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.DescriptorPool'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.DescriptorPool'+-- /must/ be externally synchronized+--+-- - Host access to each member of @pDescriptorSets@ /must/ be externally+-- synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.DescriptorPool',+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSet',+-- 'Graphics.Vulkan.Core10.Handles.Device'+freeDescriptorSets :: Device -> DescriptorPool -> ("descriptorSets" ::: Vector DescriptorSet) -> IO ()+freeDescriptorSets device descriptorPool descriptorSets = evalContT $ do+ let vkFreeDescriptorSets' = mkVkFreeDescriptorSets (pVkFreeDescriptorSets (deviceCmds (device :: Device)))+ pPDescriptorSets <- ContT $ allocaBytesAligned @DescriptorSet ((Data.Vector.length (descriptorSets)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPDescriptorSets `plusPtr` (8 * (i)) :: Ptr DescriptorSet) (e)) (descriptorSets)+ _ <- lift $ vkFreeDescriptorSets' (deviceHandle (device)) (descriptorPool) ((fromIntegral (Data.Vector.length $ (descriptorSets)) :: Word32)) (pPDescriptorSets)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkUpdateDescriptorSets+ :: FunPtr (Ptr Device_T -> Word32 -> Ptr (WriteDescriptorSet a) -> Word32 -> Ptr CopyDescriptorSet -> IO ()) -> Ptr Device_T -> Word32 -> Ptr (WriteDescriptorSet a) -> Word32 -> Ptr CopyDescriptorSet -> IO ()++-- | vkUpdateDescriptorSets - Update the contents of a descriptor set object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- updates the descriptor sets.+--+-- - @descriptorWriteCount@ is the number of elements in the+-- @pDescriptorWrites@ array.+--+-- - @pDescriptorWrites@ is a pointer to an array of 'WriteDescriptorSet'+-- structures describing the descriptor sets to write to.+--+-- - @descriptorCopyCount@ is the number of elements in the+-- @pDescriptorCopies@ array.+--+-- - @pDescriptorCopies@ is a pointer to an array of 'CopyDescriptorSet'+-- structures describing the descriptor sets to copy between.+--+-- = Description+--+-- The operations described by @pDescriptorWrites@ are performed first,+-- followed by the operations described by @pDescriptorCopies@. Within each+-- array, the operations are performed in the order they appear in the+-- array.+--+-- Each element in the @pDescriptorWrites@ array describes an operation+-- updating the descriptor set using descriptors for resources specified in+-- the structure.+--+-- Each element in the @pDescriptorCopies@ array is a 'CopyDescriptorSet'+-- structure describing an operation copying descriptors between sets.+--+-- If the @dstSet@ member of any element of @pDescriptorWrites@ or+-- @pDescriptorCopies@ is bound, accessed, or modified by any command that+-- was recorded to a command buffer which is currently in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording or executable state>,+-- and any of the descriptor bindings that are updated were not created+-- with the+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+-- or+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT'+-- bits set, that command buffer becomes+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.+--+-- == Valid Usage+--+-- - Descriptor bindings updated by this command which were created+-- without the+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+-- or+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT'+-- bits set /must/ not be used by any command that was recorded to a+-- command buffer which is in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - If @descriptorWriteCount@ is not @0@, @pDescriptorWrites@ /must/ be+-- a valid pointer to an array of @descriptorWriteCount@ valid+-- 'WriteDescriptorSet' structures+--+-- - If @descriptorCopyCount@ is not @0@, @pDescriptorCopies@ /must/ be a+-- valid pointer to an array of @descriptorCopyCount@ valid+-- 'CopyDescriptorSet' structures+--+-- == Host Synchronization+--+-- - Host access to @pDescriptorWrites@[].dstSet /must/ be externally+-- synchronized+--+-- - Host access to @pDescriptorCopies@[].dstSet /must/ be externally+-- synchronized+--+-- = See Also+--+-- 'CopyDescriptorSet', 'Graphics.Vulkan.Core10.Handles.Device',+-- 'WriteDescriptorSet'+updateDescriptorSets :: PokeChain a => Device -> ("descriptorWrites" ::: Vector (WriteDescriptorSet a)) -> ("descriptorCopies" ::: Vector CopyDescriptorSet) -> IO ()+updateDescriptorSets device descriptorWrites descriptorCopies = evalContT $ do+ let vkUpdateDescriptorSets' = mkVkUpdateDescriptorSets (pVkUpdateDescriptorSets (deviceCmds (device :: Device)))+ pPDescriptorWrites <- ContT $ allocaBytesAligned @(WriteDescriptorSet _) ((Data.Vector.length (descriptorWrites)) * 64) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDescriptorWrites `plusPtr` (64 * (i)) :: Ptr (WriteDescriptorSet _)) (e) . ($ ())) (descriptorWrites)+ pPDescriptorCopies <- ContT $ allocaBytesAligned @CopyDescriptorSet ((Data.Vector.length (descriptorCopies)) * 56) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDescriptorCopies `plusPtr` (56 * (i)) :: Ptr CopyDescriptorSet) (e) . ($ ())) (descriptorCopies)+ lift $ vkUpdateDescriptorSets' (deviceHandle (device)) ((fromIntegral (Data.Vector.length $ (descriptorWrites)) :: Word32)) (pPDescriptorWrites) ((fromIntegral (Data.Vector.length $ (descriptorCopies)) :: Word32)) (pPDescriptorCopies)+ pure $ ()+++-- | VkDescriptorBufferInfo - Structure specifying descriptor buffer info+--+-- = Description+--+-- Note+--+-- When setting @range@ to+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', the effective range+-- /must/ not be larger than the maximum range for the descriptor type+-- (<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxUniformBufferRange maxUniformBufferRange>+-- or+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxStorageBufferRange maxStorageBufferRange>).+-- This means that 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE' is not+-- typically useful in the common case where uniform buffer descriptors are+-- suballocated from a buffer that is much larger than+-- @maxUniformBufferRange@.+--+-- For+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'+-- and+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'+-- descriptor types, @offset@ is the base offset from which the dynamic+-- offset is applied and @range@ is the static size used for all dynamic+-- offsets.+--+-- == Valid Usage+--+-- - @offset@ /must/ be less than the size of+-- 'Graphics.Vulkan.Core10.Handles.Buffer'+--+-- - If @range@ is not equal to+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', @range@ /must/ be+-- greater than @0@+--+-- - If @range@ is not equal to+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', @range@ /must/ be+-- less than or equal to the size of+-- 'Graphics.Vulkan.Core10.Handles.Buffer' minus @offset@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize', 'WriteDescriptorSet'+data DescriptorBufferInfo = DescriptorBufferInfo+ { -- | 'Graphics.Vulkan.Core10.Handles.Buffer' is the buffer resource.+ buffer :: Buffer+ , -- | @offset@ is the offset in bytes from the start of+ -- 'Graphics.Vulkan.Core10.Handles.Buffer'. Access to buffer memory via+ -- this descriptor uses addressing that is relative to this starting+ -- offset.+ offset :: DeviceSize+ , -- | @range@ is the size in bytes that is used for this descriptor update, or+ -- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE' to use the range from+ -- @offset@ to the end of the buffer.+ range :: DeviceSize+ }+ deriving (Typeable)+deriving instance Show DescriptorBufferInfo++instance ToCStruct DescriptorBufferInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DescriptorBufferInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Buffer)) (buffer)+ poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (offset)+ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (range)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Buffer)) (zero)+ poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)+ f++instance FromCStruct DescriptorBufferInfo where+ peekCStruct p = do+ buffer <- peek @Buffer ((p `plusPtr` 0 :: Ptr Buffer))+ offset <- peek @DeviceSize ((p `plusPtr` 8 :: Ptr DeviceSize))+ range <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))+ pure $ DescriptorBufferInfo+ buffer offset range++instance Storable DescriptorBufferInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DescriptorBufferInfo where+ zero = DescriptorBufferInfo+ zero+ zero+ zero+++-- | VkDescriptorImageInfo - Structure specifying descriptor image info+--+-- = Description+--+-- Members of 'DescriptorImageInfo' that are not used in an update (as+-- described above) are ignored.+--+-- == Valid Usage+--+-- - 'Graphics.Vulkan.Core10.Handles.ImageView' /must/ not be 2D or 2D+-- array image view created from a 3D image+--+-- - If 'Graphics.Vulkan.Core10.Handles.ImageView' is created from a+-- depth\/stencil image, the @aspectMask@ used to create the+-- 'Graphics.Vulkan.Core10.Handles.ImageView' /must/ include either+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+-- but not both.+--+-- - 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match+-- the actual 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' of+-- each subresource accessible from+-- 'Graphics.Vulkan.Core10.Handles.ImageView' at the time this+-- descriptor is accessed as defined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-layouts-matching-rule image layout matching rules>+--+-- - If 'Graphics.Vulkan.Core10.Handles.Sampler' is used and the+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' of the image is a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,+-- the image /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT',+-- and the @aspectMask@ of the+-- 'Graphics.Vulkan.Core10.Handles.ImageView' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- or (for three-plane formats only)+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+--+-- == Valid Usage (Implicit)+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.ImageView', and+-- 'Graphics.Vulkan.Core10.Handles.Sampler' that are valid handles of+-- non-ignored parameters /must/ have been created, allocated, or+-- retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout',+-- 'Graphics.Vulkan.Core10.Handles.ImageView',+-- 'Graphics.Vulkan.Core10.Handles.Sampler', 'WriteDescriptorSet'+data DescriptorImageInfo = DescriptorImageInfo+ { -- | 'Graphics.Vulkan.Core10.Handles.Sampler' is a sampler handle, and is+ -- used in descriptor updates for types+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER'+ -- and+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'+ -- if the binding being updated does not use immutable samplers.+ sampler :: Sampler+ , -- | 'Graphics.Vulkan.Core10.Handles.ImageView' is an image view handle, and+ -- is used in descriptor updates for types+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+ -- and+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'.+ imageView :: ImageView+ , -- | 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' is the layout+ -- that the image subresources accessible from+ -- 'Graphics.Vulkan.Core10.Handles.ImageView' will be in at the time this+ -- descriptor is accessed.+ -- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' is used in+ -- descriptor updates for types+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+ -- and+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'.+ imageLayout :: ImageLayout+ }+ deriving (Typeable)+deriving instance Show DescriptorImageInfo++instance ToCStruct DescriptorImageInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DescriptorImageInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Sampler)) (sampler)+ poke ((p `plusPtr` 8 :: Ptr ImageView)) (imageView)+ poke ((p `plusPtr` 16 :: Ptr ImageLayout)) (imageLayout)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Sampler)) (zero)+ poke ((p `plusPtr` 8 :: Ptr ImageView)) (zero)+ poke ((p `plusPtr` 16 :: Ptr ImageLayout)) (zero)+ f++instance FromCStruct DescriptorImageInfo where+ peekCStruct p = do+ sampler <- peek @Sampler ((p `plusPtr` 0 :: Ptr Sampler))+ imageView <- peek @ImageView ((p `plusPtr` 8 :: Ptr ImageView))+ imageLayout <- peek @ImageLayout ((p `plusPtr` 16 :: Ptr ImageLayout))+ pure $ DescriptorImageInfo+ sampler imageView imageLayout++instance Storable DescriptorImageInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DescriptorImageInfo where+ zero = DescriptorImageInfo+ zero+ zero+ zero+++-- | VkWriteDescriptorSet - Structure specifying the parameters of a+-- descriptor set write operation+--+-- = Description+--+-- Only one of @pImageInfo@, @pBufferInfo@, or @pTexelBufferView@ members+-- is used according to the descriptor type specified in the+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' member of+-- the containing 'WriteDescriptorSet' structure, or none of them in case+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT',+-- in which case the source data for the descriptor writes is taken from+-- the+-- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlockEXT'+-- structure included in the @pNext@ chain of 'WriteDescriptorSet', or if+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV',+-- in which case the source data for the descriptor writes is taken from+-- the+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV'+-- structure in the @pNext@ chain of 'WriteDescriptorSet', as specified+-- below.+--+-- If the @dstBinding@ has fewer than @descriptorCount@ array elements+-- remaining starting from @dstArrayElement@, then the remainder will be+-- used to update the subsequent binding - @dstBinding@+1 starting at array+-- element zero. If a binding has a @descriptorCount@ of zero, it is+-- skipped. This behavior applies recursively, with the update affecting+-- consecutive bindings as needed to update all @descriptorCount@+-- descriptors.+--+-- Note+--+-- The same behavior applies to bindings with a descriptor type of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+-- where @descriptorCount@ specifies the number of bytes to update while+-- @dstArrayElement@ specifies the starting byte offset, thus in this case+-- if the @dstBinding@ has a smaller byte size than the sum of+-- @dstArrayElement@ and @descriptorCount@, then the remainder will be used+-- to update the subsequent binding - @dstBinding@+1 starting at offset+-- zero. This falls out as a special case of the above rule.+--+-- == Valid Usage+--+-- - @dstBinding@ /must/ be less than or equal to the maximum value of+-- @binding@ of all 'DescriptorSetLayoutBinding' structures specified+-- when @dstSet@’s descriptor set layout was created+--+-- - @dstBinding@ /must/ be a binding with a non-zero @descriptorCount@+--+-- - All consecutive bindings updated via a single 'WriteDescriptorSet'+-- structure, except those with a @descriptorCount@ of zero, /must/+-- have identical+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' and+-- @stageFlags@.+--+-- - All consecutive bindings updated via a single 'WriteDescriptorSet'+-- structure, except those with a @descriptorCount@ of zero, /must/ all+-- either use immutable samplers or /must/ all not use immutable+-- samplers.+--+-- - 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' /must/+-- match the type of @dstBinding@ within @dstSet@+--+-- - @dstSet@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' handle+--+-- - The sum of @dstArrayElement@ and @descriptorCount@ /must/ be less+-- than or equal to the number of array elements in the descriptor set+-- binding specified by @dstBinding@, and all applicable consecutive+-- bindings, as described by+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive>+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT',+-- @dstArrayElement@ /must/ be an integer multiple of @4@+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT',+-- @descriptorCount@ /must/ be an integer multiple of @4@+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',+-- @pImageInfo@ /must/ be a valid pointer to an array of+-- @descriptorCount@ valid 'DescriptorImageInfo' structures+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER',+-- @pTexelBufferView@ /must/ be a valid pointer to an array of+-- @descriptorCount@ valid 'Graphics.Vulkan.Core10.Handles.BufferView'+-- handles+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC',+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC',+-- @pBufferInfo@ /must/ be a valid pointer to an array of+-- @descriptorCount@ valid 'DescriptorBufferInfo' structures+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+-- and @dstSet@ was not allocated with a layout that included immutable+-- samplers for @dstBinding@ with+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType', the+-- 'Graphics.Vulkan.Core10.Handles.Sampler' member of each element of+-- @pImageInfo@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',+-- the 'Graphics.Vulkan.Core10.Handles.ImageView' and+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' members of+-- each element of @pImageInfo@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.ImageView' and+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout', respectively+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT',+-- the @pNext@ chain /must/ include a+-- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlockEXT'+-- structure whose @dataSize@ member equals @descriptorCount@+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV',+-- the @pNext@ chain /must/ include a+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV'+-- structure whose @accelerationStructureCount@ member equals+-- @descriptorCount@+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',+-- then the 'Graphics.Vulkan.Core10.Handles.ImageView' member of each+-- @pImageInfo@ element /must/ have been created without a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'+-- structure in its @pNext@ chain+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+-- and if any element of @pImageInfo@ has a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' member that was created+-- with a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'+-- structure in its @pNext@ chain, then @dstSet@ /must/ have been+-- allocated with a layout that included immutable samplers for+-- @dstBinding@, and the corresponding immutable sampler /must/ have+-- been created with an /identically defined/+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'+-- object+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+-- and @dstSet@ was allocated with a layout that included immutable+-- samplers for @dstBinding@, then the+-- 'Graphics.Vulkan.Core10.Handles.ImageView' member of each element of+-- @pImageInfo@ which corresponds to an immutable sampler that enables+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>+-- /must/ have been created with a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'+-- structure in its @pNext@ chain with an /identically defined/+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'+-- to the corresponding immutable sampler+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',+-- for each descriptor that will be accessed via load or store+-- operations the+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' member for+-- corresponding elements of @pImageInfo@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC',+-- the @offset@ member of each element of @pBufferInfo@ /must/ be a+-- multiple of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minUniformBufferOffsetAlignment@+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC',+-- the @offset@ member of each element of @pBufferInfo@ /must/ be a+-- multiple of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minStorageBufferOffsetAlignment@+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER',+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC',+-- and the 'Graphics.Vulkan.Core10.Handles.Buffer' member of any+-- element of @pBufferInfo@ is the handle of a non-sparse buffer, then+-- that buffer /must/ be bound completely and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC',+-- the 'Graphics.Vulkan.Core10.Handles.Buffer' member of each element+-- of @pBufferInfo@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_BUFFER_BIT'+-- set+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC',+-- the 'Graphics.Vulkan.Core10.Handles.Buffer' member of each element+-- of @pBufferInfo@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_BUFFER_BIT'+-- set+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC',+-- the @range@ member of each element of @pBufferInfo@, or the+-- effective range if @range@ is+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', /must/ be less+-- than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxUniformBufferRange@+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC',+-- the @range@ member of each element of @pBufferInfo@, or the+-- effective range if @range@ is+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', /must/ be less+-- than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxStorageBufferRange@+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER',+-- the 'Graphics.Vulkan.Core10.Handles.Buffer' that each element of+-- @pTexelBufferView@ was created from /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT'+-- set+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER',+-- the 'Graphics.Vulkan.Core10.Handles.Buffer' that each element of+-- @pTexelBufferView@ was created from /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT'+-- set+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',+-- the 'Graphics.Vulkan.Core10.Handles.ImageView' member of each+-- element of @pImageInfo@ /must/ have been created with the identity+-- swizzle+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+-- the 'Graphics.Vulkan.Core10.Handles.ImageView' member of each+-- element of @pImageInfo@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'+-- set+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+-- the 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' member of+-- each element of @pImageInfo@ /must/ be a member of the list given in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage Sampled Image>+-- or+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler Combined Image Sampler>,+-- corresponding to its type+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',+-- the 'Graphics.Vulkan.Core10.Handles.ImageView' member of each+-- element of @pImageInfo@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'+-- set+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',+-- the 'Graphics.Vulkan.Core10.Handles.ImageView' member of each+-- element of @pImageInfo@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT'+-- set+--+-- - All consecutive bindings updated via a single 'WriteDescriptorSet'+-- structure, except those with a @descriptorCount@ of zero, /must/+-- have identical+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DescriptorBindingFlagBits'.+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',+-- then @dstSet@ /must/ not have been allocated with a layout that+-- included immutable samplers for @dstBinding@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV'+-- or+-- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlockEXT'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' /must/+-- be a valid+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' value+--+-- - @descriptorCount@ /must/ be greater than @0@+--+-- - Both of @dstSet@, and the elements of @pTexelBufferView@ that are+-- valid handles of non-ignored parameters /must/ have been created,+-- allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.BufferView', 'DescriptorBufferInfo',+-- 'DescriptorImageInfo', 'Graphics.Vulkan.Core10.Handles.DescriptorSet',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetKHR',+-- 'updateDescriptorSets'+data WriteDescriptorSet (es :: [Type]) = WriteDescriptorSet+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | @dstSet@ is the destination descriptor set to update.+ dstSet :: DescriptorSet+ , -- | @dstBinding@ is the descriptor binding within that set.+ dstBinding :: Word32+ , -- | @dstArrayElement@ is the starting element in that array. If the+ -- descriptor binding identified by @dstSet@ and @dstBinding@ has a+ -- descriptor type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+ -- then @dstArrayElement@ specifies the starting byte offset within the+ -- binding.+ dstArrayElement :: Word32+ , -- | 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is a+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' specifying+ -- the type of each descriptor in @pImageInfo@, @pBufferInfo@, or+ -- @pTexelBufferView@, as described below. It /must/ be the same type as+ -- that specified in 'DescriptorSetLayoutBinding' for @dstSet@ at+ -- @dstBinding@. The type of the descriptor also controls which array the+ -- descriptors are taken from.+ descriptorType :: DescriptorType+ , -- | @pImageInfo@ is a pointer to an array of 'DescriptorImageInfo'+ -- structures or is ignored, as described below.+ imageInfo :: Vector DescriptorImageInfo+ , -- | @pBufferInfo@ is a pointer to an array of 'DescriptorBufferInfo'+ -- structures or is ignored, as described below.+ bufferInfo :: Vector DescriptorBufferInfo+ , -- | @pTexelBufferView@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.Handles.BufferView' handles as described in the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-views Buffer Views>+ -- section or is ignored, as described below.+ texelBufferView :: Vector BufferView+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (WriteDescriptorSet es)++instance Extensible WriteDescriptorSet where+ extensibleType = STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET+ setNext x next = x{next = next}+ getNext WriteDescriptorSet{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends WriteDescriptorSet e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @WriteDescriptorSetAccelerationStructureNV = Just f+ | Just Refl <- eqT @e @WriteDescriptorSetInlineUniformBlockEXT = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (WriteDescriptorSet es) where+ withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p WriteDescriptorSet{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr DescriptorSet)) (dstSet)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (dstBinding)+ lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (dstArrayElement)+ let pImageInfoLength = Data.Vector.length $ (imageInfo)+ let pBufferInfoLength = Data.Vector.length $ (bufferInfo)+ lift $ unless (pBufferInfoLength == pImageInfoLength) $+ throwIO $ IOError Nothing InvalidArgument "" "pBufferInfo and pImageInfo must have the same length" Nothing Nothing+ let pTexelBufferViewLength = Data.Vector.length $ (texelBufferView)+ lift $ unless (pTexelBufferViewLength == pImageInfoLength) $+ throwIO $ IOError Nothing InvalidArgument "" "pTexelBufferView and pImageInfo must have the same length" Nothing Nothing+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral pImageInfoLength :: Word32))+ lift $ poke ((p `plusPtr` 36 :: Ptr DescriptorType)) (descriptorType)+ pPImageInfo' <- ContT $ allocaBytesAligned @DescriptorImageInfo ((Data.Vector.length (imageInfo)) * 24) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPImageInfo' `plusPtr` (24 * (i)) :: Ptr DescriptorImageInfo) (e) . ($ ())) (imageInfo)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr DescriptorImageInfo))) (pPImageInfo')+ pPBufferInfo' <- ContT $ allocaBytesAligned @DescriptorBufferInfo ((Data.Vector.length (bufferInfo)) * 24) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBufferInfo' `plusPtr` (24 * (i)) :: Ptr DescriptorBufferInfo) (e) . ($ ())) (bufferInfo)+ lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr DescriptorBufferInfo))) (pPBufferInfo')+ pPTexelBufferView' <- ContT $ allocaBytesAligned @BufferView ((Data.Vector.length (texelBufferView)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPTexelBufferView' `plusPtr` (8 * (i)) :: Ptr BufferView) (e)) (texelBufferView)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr BufferView))) (pPTexelBufferView')+ lift $ f+ cStructSize = 64+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 16 :: Ptr DescriptorSet)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 36 :: Ptr DescriptorType)) (zero)+ pPImageInfo' <- ContT $ allocaBytesAligned @DescriptorImageInfo ((Data.Vector.length (mempty)) * 24) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPImageInfo' `plusPtr` (24 * (i)) :: Ptr DescriptorImageInfo) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr DescriptorImageInfo))) (pPImageInfo')+ pPBufferInfo' <- ContT $ allocaBytesAligned @DescriptorBufferInfo ((Data.Vector.length (mempty)) * 24) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBufferInfo' `plusPtr` (24 * (i)) :: Ptr DescriptorBufferInfo) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr DescriptorBufferInfo))) (pPBufferInfo')+ pPTexelBufferView' <- ContT $ allocaBytesAligned @BufferView ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPTexelBufferView' `plusPtr` (8 * (i)) :: Ptr BufferView) (e)) (mempty)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr BufferView))) (pPTexelBufferView')+ lift $ f++instance PeekChain es => FromCStruct (WriteDescriptorSet es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ dstSet <- peek @DescriptorSet ((p `plusPtr` 16 :: Ptr DescriptorSet))+ dstBinding <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ dstArrayElement <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+ descriptorType <- peek @DescriptorType ((p `plusPtr` 36 :: Ptr DescriptorType))+ descriptorCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pImageInfo <- peek @(Ptr DescriptorImageInfo) ((p `plusPtr` 40 :: Ptr (Ptr DescriptorImageInfo)))+ pImageInfo' <- generateM (fromIntegral descriptorCount) (\i -> peekCStruct @DescriptorImageInfo ((pImageInfo `advancePtrBytes` (24 * (i)) :: Ptr DescriptorImageInfo)))+ pBufferInfo <- peek @(Ptr DescriptorBufferInfo) ((p `plusPtr` 48 :: Ptr (Ptr DescriptorBufferInfo)))+ pBufferInfo' <- generateM (fromIntegral descriptorCount) (\i -> peekCStruct @DescriptorBufferInfo ((pBufferInfo `advancePtrBytes` (24 * (i)) :: Ptr DescriptorBufferInfo)))+ pTexelBufferView <- peek @(Ptr BufferView) ((p `plusPtr` 56 :: Ptr (Ptr BufferView)))+ pTexelBufferView' <- generateM (fromIntegral descriptorCount) (\i -> peek @BufferView ((pTexelBufferView `advancePtrBytes` (8 * (i)) :: Ptr BufferView)))+ pure $ WriteDescriptorSet+ next dstSet dstBinding dstArrayElement descriptorType pImageInfo' pBufferInfo' pTexelBufferView'++instance es ~ '[] => Zero (WriteDescriptorSet es) where+ zero = WriteDescriptorSet+ ()+ zero+ zero+ zero+ zero+ mempty+ mempty+ mempty+++-- | VkCopyDescriptorSet - Structure specifying a copy descriptor set+-- operation+--+-- == Valid Usage+--+-- - @srcBinding@ /must/ be a valid binding within @srcSet@+--+-- - The sum of @srcArrayElement@ and @descriptorCount@ /must/ be less+-- than or equal to the number of array elements in the descriptor set+-- binding specified by @srcBinding@, and all applicable consecutive+-- bindings, as described by+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive>+--+-- - @dstBinding@ /must/ be a valid binding within @dstSet@+--+-- - The sum of @dstArrayElement@ and @descriptorCount@ /must/ be less+-- than or equal to the number of array elements in the descriptor set+-- binding specified by @dstBinding@, and all applicable consecutive+-- bindings, as described by+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive>+--+-- - The type of @dstBinding@ within @dstSet@ /must/ be equal to the type+-- of @srcBinding@ within @srcSet@+--+-- - If @srcSet@ is equal to @dstSet@, then the source and destination+-- ranges of descriptors /must/ not overlap, where the ranges /may/+-- include array elements from consecutive bindings as described by+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive>+--+-- - If the descriptor type of the descriptor set binding specified by+-- @srcBinding@ is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT',+-- @srcArrayElement@ /must/ be an integer multiple of @4@+--+-- - If the descriptor type of the descriptor set binding specified by+-- @dstBinding@ is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT',+-- @dstArrayElement@ /must/ be an integer multiple of @4@+--+-- - If the descriptor type of the descriptor set binding specified by+-- either @srcBinding@ or @dstBinding@ is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT',+-- @descriptorCount@ /must/ be an integer multiple of @4@+--+-- - If @srcSet@’s layout was created with the+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+-- flag set, then @dstSet@’s layout /must/ also have been created with+-- the+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+-- flag set+--+-- - If @srcSet@’s layout was created without the+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+-- flag set, then @dstSet@’s layout /must/ also have been created+-- without the+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+-- flag set+--+-- - If the descriptor pool from which @srcSet@ was allocated was created+-- with the+-- 'Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT'+-- flag set, then the descriptor pool from which @dstSet@ was allocated+-- /must/ also have been created with the+-- 'Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT'+-- flag set+--+-- - If the descriptor pool from which @srcSet@ was allocated was created+-- without the+-- 'Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT'+-- flag set, then the descriptor pool from which @dstSet@ was allocated+-- /must/ also have been created without the+-- 'Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT'+-- flag set+--+-- - If the descriptor type of the descriptor set binding specified by+-- @dstBinding@ is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',+-- then @dstSet@ /must/ not have been allocated with a layout that+-- included immutable samplers for @dstBinding@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_DESCRIPTOR_SET'+--+-- - @pNext@ /must/ be @NULL@+--+-- - @srcSet@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' handle+--+-- - @dstSet@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' handle+--+-- - Both of @dstSet@, and @srcSet@ /must/ have been created, allocated,+-- or retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSet',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'updateDescriptorSets'+data CopyDescriptorSet = CopyDescriptorSet+ { -- | @srcSet@, @srcBinding@, and @srcArrayElement@ are the source set,+ -- binding, and array element, respectively. If the descriptor binding+ -- identified by @srcSet@ and @srcBinding@ has a descriptor type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+ -- then @srcArrayElement@ specifies the starting byte offset within the+ -- binding to copy from.+ srcSet :: DescriptorSet+ , -- No documentation found for Nested "VkCopyDescriptorSet" "srcBinding"+ srcBinding :: Word32+ , -- No documentation found for Nested "VkCopyDescriptorSet" "srcArrayElement"+ srcArrayElement :: Word32+ , -- | @dstSet@, @dstBinding@, and @dstArrayElement@ are the destination set,+ -- binding, and array element, respectively. If the descriptor binding+ -- identified by @dstSet@ and @dstBinding@ has a descriptor type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+ -- then @dstArrayElement@ specifies the starting byte offset within the+ -- binding to copy to.+ dstSet :: DescriptorSet+ , -- No documentation found for Nested "VkCopyDescriptorSet" "dstBinding"+ dstBinding :: Word32+ , -- No documentation found for Nested "VkCopyDescriptorSet" "dstArrayElement"+ dstArrayElement :: Word32+ , -- | @descriptorCount@ is the number of descriptors to copy from the source+ -- to destination. If @descriptorCount@ is greater than the number of+ -- remaining array elements in the source or destination binding, those+ -- affect consecutive bindings in a manner similar to 'WriteDescriptorSet'+ -- above. If the descriptor binding identified by @srcSet@ and @srcBinding@+ -- has a descriptor type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+ -- then @descriptorCount@ specifies the number of bytes to copy and the+ -- remaining array elements in the source or destination binding refer to+ -- the remaining number of bytes in those.+ descriptorCount :: Word32+ }+ deriving (Typeable)+deriving instance Show CopyDescriptorSet++instance ToCStruct CopyDescriptorSet where+ withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p CopyDescriptorSet{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_DESCRIPTOR_SET)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DescriptorSet)) (srcSet)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (srcBinding)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (srcArrayElement)+ poke ((p `plusPtr` 32 :: Ptr DescriptorSet)) (dstSet)+ poke ((p `plusPtr` 40 :: Ptr Word32)) (dstBinding)+ poke ((p `plusPtr` 44 :: Ptr Word32)) (dstArrayElement)+ poke ((p `plusPtr` 48 :: Ptr Word32)) (descriptorCount)+ f+ cStructSize = 56+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_DESCRIPTOR_SET)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DescriptorSet)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 32 :: Ptr DescriptorSet)) (zero)+ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)+ f++instance FromCStruct CopyDescriptorSet where+ peekCStruct p = do+ srcSet <- peek @DescriptorSet ((p `plusPtr` 16 :: Ptr DescriptorSet))+ srcBinding <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ srcArrayElement <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+ dstSet <- peek @DescriptorSet ((p `plusPtr` 32 :: Ptr DescriptorSet))+ dstBinding <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))+ dstArrayElement <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))+ descriptorCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+ pure $ CopyDescriptorSet+ srcSet srcBinding srcArrayElement dstSet dstBinding dstArrayElement descriptorCount++instance Storable CopyDescriptorSet where+ sizeOf ~_ = 56+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero CopyDescriptorSet where+ zero = CopyDescriptorSet+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkDescriptorSetLayoutBinding - Structure specifying a descriptor set+-- layout binding+--+-- = Description+--+-- - @pImmutableSamplers@ affects initialization of samplers. If+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType'+-- specifies a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'+-- type descriptor, then @pImmutableSamplers@ /can/ be used to+-- initialize a set of /immutable samplers/. Immutable samplers are+-- permanently bound into the set layout and /must/ not be changed;+-- updating a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER'+-- descriptor with immutable samplers is not allowed and updates to a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'+-- descriptor with immutable samplers does not modify the samplers (the+-- image views are updated, but the sampler updates are ignored). If+-- @pImmutableSamplers@ is not @NULL@, then it points to an array of+-- sampler handles that will be copied into the set layout and used for+-- the corresponding binding. Only the sampler handles are copied; the+-- sampler objects /must/ not be destroyed before the final use of the+-- set layout and any descriptor pools and sets created using it. If+-- @pImmutableSamplers@ is @NULL@, then the sampler slots are dynamic+-- and sampler handles /must/ be bound into descriptor sets using this+-- layout. If+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is not+-- one of these descriptor types, then @pImmutableSamplers@ is ignored.+--+-- The above layout definition allows the descriptor bindings to be+-- specified sparsely such that not all binding numbers between 0 and the+-- maximum binding number need to be specified in the @pBindings@ array.+-- Bindings that are not specified have a @descriptorCount@ and+-- @stageFlags@ of zero, and the value of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- undefined. However, all binding numbers between 0 and the maximum+-- binding number in the 'DescriptorSetLayoutCreateInfo'::@pBindings@ array+-- /may/ consume memory in the descriptor set layout even if not all+-- descriptor bindings are used, though it /should/ not consume additional+-- memory from the descriptor pool.+--+-- Note+--+-- The maximum binding number specified /should/ be as compact as possible+-- to avoid wasted memory.+--+-- == Valid Usage+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+-- and @descriptorCount@ is not @0@ and @pImmutableSamplers@ is not+-- @NULL@, @pImmutableSamplers@ /must/ be a valid pointer to an array+-- of @descriptorCount@ valid 'Graphics.Vulkan.Core10.Handles.Sampler'+-- handles+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+-- then @descriptorCount@ /must/ be a multiple of @4@+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+-- then @descriptorCount@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockPropertiesEXT'::@maxInlineUniformBlockSize@+--+-- - If @descriptorCount@ is not @0@, @stageFlags@ /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits'+-- values+--+-- - If 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'+-- and @descriptorCount@ is not @0@, then @stageFlags@ /must/ be @0@ or+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' /must/+-- be a valid+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' value+--+-- = See Also+--+-- 'DescriptorSetLayoutCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType',+-- 'Graphics.Vulkan.Core10.Handles.Sampler',+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags'+data DescriptorSetLayoutBinding = DescriptorSetLayoutBinding+ { -- | @binding@ is the binding number of this entry and corresponds to a+ -- resource of the same binding number in the shader stages.+ binding :: Word32+ , -- | 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is a+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' specifying+ -- which type of resource descriptors are used for this binding.+ descriptorType :: DescriptorType+ , -- | @stageFlags@ member is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits'+ -- specifying which pipeline shader stages /can/ access a resource for this+ -- binding.+ -- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ALL' is a+ -- shorthand specifying that all defined shader stages, including any+ -- additional stages defined by extensions, /can/ access the resource.+ --+ -- If a shader stage is not included in @stageFlags@, then a resource+ -- /must/ not be accessed from that stage via this binding within any+ -- pipeline using the set layout. Other than input attachments which are+ -- limited to the fragment shader, there are no limitations on what+ -- combinations of stages /can/ use a descriptor binding, and in particular+ -- a binding /can/ be used by both graphics stages and the compute stage.+ stageFlags :: ShaderStageFlags+ , -- No documentation found for Nested "VkDescriptorSetLayoutBinding" "pImmutableSamplers"+ immutableSamplers :: Either Word32 (Vector Sampler)+ }+ deriving (Typeable)+deriving instance Show DescriptorSetLayoutBinding++instance ToCStruct DescriptorSetLayoutBinding where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DescriptorSetLayoutBinding{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (binding)+ lift $ poke ((p `plusPtr` 4 :: Ptr DescriptorType)) (descriptorType)+ lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) ((fromIntegral (either id (fromIntegral . Data.Vector.length) (immutableSamplers)) :: Word32))+ lift $ poke ((p `plusPtr` 12 :: Ptr ShaderStageFlags)) (stageFlags)+ pImmutableSamplers'' <- case (immutableSamplers) of+ Left _ -> pure nullPtr+ Right v -> do+ pPImmutableSamplers' <- ContT $ allocaBytesAligned @Sampler ((Data.Vector.length (v)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPImmutableSamplers' `plusPtr` (8 * (i)) :: Ptr Sampler) (e)) (v)+ pure $ pPImmutableSamplers'+ lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr Sampler))) pImmutableSamplers''+ lift $ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 4 :: Ptr DescriptorType)) (zero)+ poke ((p `plusPtr` 12 :: Ptr ShaderStageFlags)) (zero)+ f++instance FromCStruct DescriptorSetLayoutBinding where+ peekCStruct p = do+ binding <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ descriptorType <- peek @DescriptorType ((p `plusPtr` 4 :: Ptr DescriptorType))+ stageFlags <- peek @ShaderStageFlags ((p `plusPtr` 12 :: Ptr ShaderStageFlags))+ descriptorCount <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ pImmutableSamplers <- peek @(Ptr Sampler) ((p `plusPtr` 16 :: Ptr (Ptr Sampler)))+ pImmutableSamplers' <- maybePeek (\j -> generateM (fromIntegral descriptorCount) (\i -> peek @Sampler (((j) `advancePtrBytes` (8 * (i)) :: Ptr Sampler)))) pImmutableSamplers+ let pImmutableSamplers'' = maybe (Left descriptorCount) Right pImmutableSamplers'+ pure $ DescriptorSetLayoutBinding+ binding descriptorType stageFlags pImmutableSamplers''++instance Zero DescriptorSetLayoutBinding where+ zero = DescriptorSetLayoutBinding+ zero+ zero+ zero+ (Left 0)+++-- | VkDescriptorSetLayoutCreateInfo - Structure specifying parameters of a+-- newly created descriptor set layout+--+-- == Valid Usage+--+-- - The 'DescriptorSetLayoutBinding'::@binding@ members of the elements+-- of the @pBindings@ array /must/ each have different values.+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR',+-- then all elements of @pBindings@ /must/ not have a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR',+-- then all elements of @pBindings@ /must/ not have a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR',+-- then the total number of elements of all bindings /must/ be less+-- than or equal to+-- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.PhysicalDevicePushDescriptorPropertiesKHR'::@maxPushDescriptors@+--+-- - If any binding has the+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+-- bit set, 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ include+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+--+-- - If any binding has the+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+-- bit set, then all bindings /must/ not have+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetLayoutBindingFlagsCreateInfo'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DescriptorSetLayoutCreateFlagBits'+-- values+--+-- - If @bindingCount@ is not @0@, @pBindings@ /must/ be a valid pointer+-- to an array of @bindingCount@ valid 'DescriptorSetLayoutBinding'+-- structures+--+-- = See Also+--+-- 'DescriptorSetLayoutBinding',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DescriptorSetLayoutCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createDescriptorSetLayout',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.getDescriptorSetLayoutSupport',+-- 'Graphics.Vulkan.Extensions.VK_KHR_maintenance3.getDescriptorSetLayoutSupportKHR'+data DescriptorSetLayoutCreateInfo (es :: [Type]) = DescriptorSetLayoutCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DescriptorSetLayoutCreateFlagBits'+ -- specifying options for descriptor set layout creation.+ flags :: DescriptorSetLayoutCreateFlags+ , -- | @pBindings@ is a pointer to an array of 'DescriptorSetLayoutBinding'+ -- structures.+ bindings :: Vector DescriptorSetLayoutBinding+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (DescriptorSetLayoutCreateInfo es)++instance Extensible DescriptorSetLayoutCreateInfo where+ extensibleType = STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO+ setNext x next = x{next = next}+ getNext DescriptorSetLayoutCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends DescriptorSetLayoutCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @DescriptorSetLayoutBindingFlagsCreateInfo = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (DescriptorSetLayoutCreateInfo es) where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DescriptorSetLayoutCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr DescriptorSetLayoutCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (bindings)) :: Word32))+ pPBindings' <- ContT $ allocaBytesAligned @DescriptorSetLayoutBinding ((Data.Vector.length (bindings)) * 24) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBindings' `plusPtr` (24 * (i)) :: Ptr DescriptorSetLayoutBinding) (e) . ($ ())) (bindings)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DescriptorSetLayoutBinding))) (pPBindings')+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ pPBindings' <- ContT $ allocaBytesAligned @DescriptorSetLayoutBinding ((Data.Vector.length (mempty)) * 24) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBindings' `plusPtr` (24 * (i)) :: Ptr DescriptorSetLayoutBinding) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DescriptorSetLayoutBinding))) (pPBindings')+ lift $ f++instance PeekChain es => FromCStruct (DescriptorSetLayoutCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @DescriptorSetLayoutCreateFlags ((p `plusPtr` 16 :: Ptr DescriptorSetLayoutCreateFlags))+ bindingCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pBindings <- peek @(Ptr DescriptorSetLayoutBinding) ((p `plusPtr` 24 :: Ptr (Ptr DescriptorSetLayoutBinding)))+ pBindings' <- generateM (fromIntegral bindingCount) (\i -> peekCStruct @DescriptorSetLayoutBinding ((pBindings `advancePtrBytes` (24 * (i)) :: Ptr DescriptorSetLayoutBinding)))+ pure $ DescriptorSetLayoutCreateInfo+ next flags pBindings'++instance es ~ '[] => Zero (DescriptorSetLayoutCreateInfo es) where+ zero = DescriptorSetLayoutCreateInfo+ ()+ zero+ mempty+++-- | VkDescriptorPoolSize - Structure specifying descriptor pool size+--+-- = Description+--+-- Note+--+-- When creating a descriptor pool that will contain descriptors for+-- combined image samplers of multi-planar formats, an application needs to+-- account for non-trivial descriptor consumption when choosing the+-- @descriptorCount@ value, as indicated by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionImageFormatProperties'::@combinedImageSamplerDescriptorCount@.+--+-- == Valid Usage+--+-- - @descriptorCount@ /must/ be greater than @0@+--+-- - If @type@ is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+-- then @descriptorCount@ /must/ be a multiple of @4@+--+-- == Valid Usage (Implicit)+--+-- - @type@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' value+--+-- = See Also+--+-- 'DescriptorPoolCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType'+data DescriptorPoolSize = DescriptorPoolSize+ { -- | @type@ is the type of descriptor.+ type' :: DescriptorType+ , -- | @descriptorCount@ is the number of descriptors of that type to allocate.+ -- If @type@ is+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+ -- then @descriptorCount@ is the number of bytes to allocate for+ -- descriptors of this type.+ descriptorCount :: Word32+ }+ deriving (Typeable)+deriving instance Show DescriptorPoolSize++instance ToCStruct DescriptorPoolSize where+ withCStruct x f = allocaBytesAligned 8 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DescriptorPoolSize{..} f = do+ poke ((p `plusPtr` 0 :: Ptr DescriptorType)) (type')+ poke ((p `plusPtr` 4 :: Ptr Word32)) (descriptorCount)+ f+ cStructSize = 8+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr DescriptorType)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ f++instance FromCStruct DescriptorPoolSize where+ peekCStruct p = do+ type' <- peek @DescriptorType ((p `plusPtr` 0 :: Ptr DescriptorType))+ descriptorCount <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ pure $ DescriptorPoolSize+ type' descriptorCount++instance Storable DescriptorPoolSize where+ sizeOf ~_ = 8+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DescriptorPoolSize where+ zero = DescriptorPoolSize+ zero+ zero+++-- | VkDescriptorPoolCreateInfo - Structure specifying parameters of a newly+-- created descriptor pool+--+-- = Description+--+-- If multiple 'DescriptorPoolSize' structures appear in the @pPoolSizes@+-- array then the pool will be created with enough storage for the total+-- number of descriptors of each type.+--+-- Fragmentation of a descriptor pool is possible and /may/ lead to+-- descriptor set allocation failures. A failure due to fragmentation is+-- defined as failing a descriptor set allocation despite the sum of all+-- outstanding descriptor set allocations from the pool plus the requested+-- allocation requiring no more than the total number of descriptors+-- requested at pool creation. Implementations provide certain guarantees+-- of when fragmentation /must/ not cause allocation failure, as described+-- below.+--+-- If a descriptor pool has not had any descriptor sets freed since it was+-- created or most recently reset then fragmentation /must/ not cause an+-- allocation failure (note that this is always the case for a pool created+-- without the+-- 'Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT'+-- bit set). Additionally, if all sets allocated from the pool since it was+-- created or most recently reset use the same number of descriptors (of+-- each type) and the requested allocation also uses that same number of+-- descriptors (of each type), then fragmentation /must/ not cause an+-- allocation failure.+--+-- If an allocation failure occurs due to fragmentation, an application+-- /can/ create an additional descriptor pool to perform further descriptor+-- set allocations.+--+-- If 'Graphics.Vulkan.Core10.BaseType.Flags' has the+-- 'Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT'+-- bit set, descriptor pool creation /may/ fail with the error+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_FRAGMENTATION' if the total+-- number of descriptors across all pools (including this one) created with+-- this bit set exceeds @maxUpdateAfterBindDescriptorsInAllPools@, or if+-- fragmentation of the underlying hardware resources occurs.+--+-- == Valid Usage+--+-- - @maxSets@ /must/ be greater than @0@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.DescriptorPoolInlineUniformBlockCreateInfoEXT'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DescriptorPoolCreateFlagBits'+-- values+--+-- - @pPoolSizes@ /must/ be a valid pointer to an array of+-- @poolSizeCount@ valid 'DescriptorPoolSize' structures+--+-- - @poolSizeCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DescriptorPoolCreateFlags',+-- 'DescriptorPoolSize',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createDescriptorPool'+data DescriptorPoolCreateInfo (es :: [Type]) = DescriptorPoolCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DescriptorPoolCreateFlagBits'+ -- specifying certain supported operations on the pool.+ flags :: DescriptorPoolCreateFlags+ , -- | @maxSets@ is the maximum number of descriptor sets that /can/ be+ -- allocated from the pool.+ maxSets :: Word32+ , -- | @pPoolSizes@ is a pointer to an array of 'DescriptorPoolSize'+ -- structures, each containing a descriptor type and number of descriptors+ -- of that type to be allocated in the pool.+ poolSizes :: Vector DescriptorPoolSize+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (DescriptorPoolCreateInfo es)++instance Extensible DescriptorPoolCreateInfo where+ extensibleType = STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO+ setNext x next = x{next = next}+ getNext DescriptorPoolCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends DescriptorPoolCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @DescriptorPoolInlineUniformBlockCreateInfoEXT = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (DescriptorPoolCreateInfo es) where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DescriptorPoolCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr DescriptorPoolCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (maxSets)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (poolSizes)) :: Word32))+ pPPoolSizes' <- ContT $ allocaBytesAligned @DescriptorPoolSize ((Data.Vector.length (poolSizes)) * 8) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPPoolSizes' `plusPtr` (8 * (i)) :: Ptr DescriptorPoolSize) (e) . ($ ())) (poolSizes)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr DescriptorPoolSize))) (pPPoolSizes')+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ pPPoolSizes' <- ContT $ allocaBytesAligned @DescriptorPoolSize ((Data.Vector.length (mempty)) * 8) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPPoolSizes' `plusPtr` (8 * (i)) :: Ptr DescriptorPoolSize) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr DescriptorPoolSize))) (pPPoolSizes')+ lift $ f++instance PeekChain es => FromCStruct (DescriptorPoolCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @DescriptorPoolCreateFlags ((p `plusPtr` 16 :: Ptr DescriptorPoolCreateFlags))+ maxSets <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ poolSizeCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ pPoolSizes <- peek @(Ptr DescriptorPoolSize) ((p `plusPtr` 32 :: Ptr (Ptr DescriptorPoolSize)))+ pPoolSizes' <- generateM (fromIntegral poolSizeCount) (\i -> peekCStruct @DescriptorPoolSize ((pPoolSizes `advancePtrBytes` (8 * (i)) :: Ptr DescriptorPoolSize)))+ pure $ DescriptorPoolCreateInfo+ next flags maxSets pPoolSizes'++instance es ~ '[] => Zero (DescriptorPoolCreateInfo es) where+ zero = DescriptorPoolCreateInfo+ ()+ zero+ zero+ mempty+++-- | VkDescriptorSetAllocateInfo - Structure specifying the allocation+-- parameters for descriptor sets+--+-- == Valid Usage+--+-- - Each element of @pSetLayouts@ /must/ not have been created with+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR'+-- set+--+-- - If any element of @pSetLayouts@ was created with the+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+-- bit set, 'Graphics.Vulkan.Core10.Handles.DescriptorPool' /must/ have+-- been created with the+-- 'Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT'+-- flag set+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetVariableDescriptorCountAllocateInfo'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.Handles.DescriptorPool' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.DescriptorPool' handle+--+-- - @pSetLayouts@ /must/ be a valid pointer to an array of+-- @descriptorSetCount@ valid+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' handles+--+-- - @descriptorSetCount@ /must/ be greater than @0@+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.DescriptorPool', and the+-- elements of @pSetLayouts@ /must/ have been created, allocated, or+-- retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.DescriptorPool',+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'allocateDescriptorSets'+data DescriptorSetAllocateInfo (es :: [Type]) = DescriptorSetAllocateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.Handles.DescriptorPool' is the pool which the+ -- sets will be allocated from.+ descriptorPool :: DescriptorPool+ , -- | @pSetLayouts@ is a pointer to an array of descriptor set layouts, with+ -- each member specifying how the corresponding descriptor set is+ -- allocated.+ setLayouts :: Vector DescriptorSetLayout+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (DescriptorSetAllocateInfo es)++instance Extensible DescriptorSetAllocateInfo where+ extensibleType = STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO+ setNext x next = x{next = next}+ getNext DescriptorSetAllocateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends DescriptorSetAllocateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @DescriptorSetVariableDescriptorCountAllocateInfo = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (DescriptorSetAllocateInfo es) where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DescriptorSetAllocateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr DescriptorPool)) (descriptorPool)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (setLayouts)) :: Word32))+ pPSetLayouts' <- ContT $ allocaBytesAligned @DescriptorSetLayout ((Data.Vector.length (setLayouts)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPSetLayouts' `plusPtr` (8 * (i)) :: Ptr DescriptorSetLayout) (e)) (setLayouts)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr DescriptorSetLayout))) (pPSetLayouts')+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 16 :: Ptr DescriptorPool)) (zero)+ pPSetLayouts' <- ContT $ allocaBytesAligned @DescriptorSetLayout ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPSetLayouts' `plusPtr` (8 * (i)) :: Ptr DescriptorSetLayout) (e)) (mempty)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr DescriptorSetLayout))) (pPSetLayouts')+ lift $ f++instance PeekChain es => FromCStruct (DescriptorSetAllocateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ descriptorPool <- peek @DescriptorPool ((p `plusPtr` 16 :: Ptr DescriptorPool))+ descriptorSetCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ pSetLayouts <- peek @(Ptr DescriptorSetLayout) ((p `plusPtr` 32 :: Ptr (Ptr DescriptorSetLayout)))+ pSetLayouts' <- generateM (fromIntegral descriptorSetCount) (\i -> peek @DescriptorSetLayout ((pSetLayouts `advancePtrBytes` (8 * (i)) :: Ptr DescriptorSetLayout)))+ pure $ DescriptorSetAllocateInfo+ next descriptorPool pSetLayouts'++instance es ~ '[] => Zero (DescriptorSetAllocateInfo es) where+ zero = DescriptorSetAllocateInfo+ ()+ zero+ mempty+
+ src/Graphics/Vulkan/Core10/DescriptorSet.hs-boot view
@@ -0,0 +1,93 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.DescriptorSet ( CopyDescriptorSet+ , DescriptorBufferInfo+ , DescriptorImageInfo+ , DescriptorPoolCreateInfo+ , DescriptorPoolSize+ , DescriptorSetAllocateInfo+ , DescriptorSetLayoutBinding+ , DescriptorSetLayoutCreateInfo+ , WriteDescriptorSet+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+data CopyDescriptorSet++instance ToCStruct CopyDescriptorSet+instance Show CopyDescriptorSet++instance FromCStruct CopyDescriptorSet+++data DescriptorBufferInfo++instance ToCStruct DescriptorBufferInfo+instance Show DescriptorBufferInfo++instance FromCStruct DescriptorBufferInfo+++data DescriptorImageInfo++instance ToCStruct DescriptorImageInfo+instance Show DescriptorImageInfo++instance FromCStruct DescriptorImageInfo+++type role DescriptorPoolCreateInfo nominal+data DescriptorPoolCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (DescriptorPoolCreateInfo es)+instance Show (Chain es) => Show (DescriptorPoolCreateInfo es)++instance PeekChain es => FromCStruct (DescriptorPoolCreateInfo es)+++data DescriptorPoolSize++instance ToCStruct DescriptorPoolSize+instance Show DescriptorPoolSize++instance FromCStruct DescriptorPoolSize+++type role DescriptorSetAllocateInfo nominal+data DescriptorSetAllocateInfo (es :: [Type])++instance PokeChain es => ToCStruct (DescriptorSetAllocateInfo es)+instance Show (Chain es) => Show (DescriptorSetAllocateInfo es)++instance PeekChain es => FromCStruct (DescriptorSetAllocateInfo es)+++data DescriptorSetLayoutBinding++instance ToCStruct DescriptorSetLayoutBinding+instance Show DescriptorSetLayoutBinding++instance FromCStruct DescriptorSetLayoutBinding+++type role DescriptorSetLayoutCreateInfo nominal+data DescriptorSetLayoutCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (DescriptorSetLayoutCreateInfo es)+instance Show (Chain es) => Show (DescriptorSetLayoutCreateInfo es)++instance PeekChain es => FromCStruct (DescriptorSetLayoutCreateInfo es)+++type role WriteDescriptorSet nominal+data WriteDescriptorSet (es :: [Type])++instance PokeChain es => ToCStruct (WriteDescriptorSet es)+instance Show (Chain es) => Show (WriteDescriptorSet es)++instance PeekChain es => FromCStruct (WriteDescriptorSet es)+
src/Graphics/Vulkan/Core10/Device.hs view
@@ -1,490 +1,841 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.Device- ( VkDeviceCreateFlags(..)- , VkDeviceQueueCreateFlagBits(..)- , vkCreateDevice- , vkDestroyDevice- , VkDeviceQueueCreateInfo(..)- , VkDeviceCreateInfo(..)- , VkDeviceQueueCreateFlags- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Word- ( Word32- )-import Foreign.C.Types- ( CChar(..)- , CFloat(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkPhysicalDeviceFeatures(..)- , VkDevice- , VkPhysicalDevice- )----- ** VkDeviceCreateFlags---- | VkDeviceCreateFlags - Reserved for future use------ = Description------ @VkDeviceCreateFlags@ is a bitmask type for setting a mask, but is--- currently reserved for future use.------ = See Also------ 'VkDeviceCreateInfo'-newtype VkDeviceCreateFlags = VkDeviceCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkDeviceCreateFlags where- - showsPrec p (VkDeviceCreateFlags x) = showParen (p >= 11) (showString "VkDeviceCreateFlags " . showsPrec 11 x)--instance Read VkDeviceCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkDeviceCreateFlags")- v <- step readPrec- pure (VkDeviceCreateFlags v)- )- )----- ** VkDeviceQueueCreateFlagBits---- | VkDeviceQueueCreateFlagBits - Bitmask specifying behavior of the queue------ = See Also------ 'VkDeviceQueueCreateFlags'-newtype VkDeviceQueueCreateFlagBits = VkDeviceQueueCreateFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkDeviceQueueCreateFlagBits where- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkDeviceQueueCreateFlagBits 0x00000001) = showString "VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT"- showsPrec p (VkDeviceQueueCreateFlagBits x) = showParen (p >= 11) (showString "VkDeviceQueueCreateFlagBits " . showsPrec 11 x)--instance Read VkDeviceQueueCreateFlagBits where- readPrec = parens ( choose [ -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT", pure (VkDeviceQueueCreateFlagBits 0x00000001))- ] +++- prec 10 (do- expectP (Ident "VkDeviceQueueCreateFlagBits")- v <- step readPrec- pure (VkDeviceQueueCreateFlagBits v)- )- )----- | vkCreateDevice - Create a new device instance------ = Parameters------ - @physicalDevice@ /must/ be one of the device handles returned from a--- call to @vkEnumeratePhysicalDevices@ (see [Physical Device--- Enumeration](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-physical-device-enumeration)).------ - @pCreateInfo@ is a pointer to a 'VkDeviceCreateInfo' structure--- containing information about how to create the device.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ - @pDevice@ points to a handle in which the created @VkDevice@ is--- returned.------ = Description------ @vkCreateDevice@ verifies that extensions and features requested in the--- @ppEnabledExtensionNames@ and @pEnabledFeatures@ members of--- @pCreateInfo@, respectively, are supported by the implementation. If any--- requested extension is not supported, @vkCreateDevice@ /must/ return--- @VK_ERROR_EXTENSION_NOT_PRESENT@. If any requested feature is not--- supported, @vkCreateDevice@ /must/ return--- @VK_ERROR_FEATURE_NOT_PRESENT@. Support for extensions /can/ be checked--- before creating a device by querying--- 'Graphics.Vulkan.Core10.ExtensionDiscovery.vkEnumerateDeviceExtensionProperties'.--- Support for features /can/ similarly be checked by querying--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceFeatures'.------ After verifying and enabling the extensions the @VkDevice@ object is--- created and returned to the application. If a requested extension is--- only supported by a layer, both the layer and the extension need to be--- specified at @vkCreateInstance@ time for the creation to succeed.------ Multiple logical devices /can/ be created from the same physical device.--- Logical device creation /may/ fail due to lack of device-specific--- resources (in addition to the other errors). If that occurs,--- @vkCreateDevice@ will return @VK_ERROR_TOO_MANY_OBJECTS@.------ == Valid Usage------ - All [required--- extensions](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#extended-functionality-extensions-dependencies)--- for each extension in the--- 'VkDeviceCreateInfo'::@ppEnabledExtensionNames@ list /must/ also be--- present in that list.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkDeviceCreateInfo@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pDevice@ /must/ be a valid pointer to a @VkDevice@ handle------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_INITIALIZATION_FAILED@------ - @VK_ERROR_EXTENSION_NOT_PRESENT@------ - @VK_ERROR_FEATURE_NOT_PRESENT@------ - @VK_ERROR_TOO_MANY_OBJECTS@------ - @VK_ERROR_DEVICE_LOST@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkDeviceCreateInfo',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateDevice" vkCreateDevice :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pCreateInfo" ::: Ptr VkDeviceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDevice" ::: Ptr VkDevice) -> IO VkResult--- | vkDestroyDevice - Destroy a logical device------ = Parameters------ - @device@ is the logical device to destroy.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ = Description------ To ensure that no work is active on the device,--- 'Graphics.Vulkan.Core10.Queue.vkDeviceWaitIdle' /can/ be used to gate--- the destruction of the device. Prior to destroying a device, an--- application is responsible for destroying\/freeing any Vulkan objects--- that were created using that device as the first parameter of the--- corresponding @vkCreate*@ or @vkAllocate*@ command.------ __Note__------ The lifetime of each of these objects is bound by the lifetime of the--- @VkDevice@ object. Therefore, to avoid resource leaks, it is critical--- that an application explicitly free all of these resources prior to--- calling @vkDestroyDevice@.------ == Valid Usage------ - All child objects created on @device@ /must/ have been destroyed--- prior to destroying @device@------ - If @VkAllocationCallbacks@ were provided when @device@ was created,--- a compatible set of callbacks /must/ be provided here------ - If no @VkAllocationCallbacks@ were provided when @device@ was--- created, @pAllocator@ /must/ be @NULL@------ == Valid Usage (Implicit)------ - If @device@ is not @NULL@, @device@ /must/ be a valid @VkDevice@--- handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ == Host Synchronization------ - Host access to @device@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroyDevice" vkDestroyDevice :: ("device" ::: VkDevice) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | VkDeviceQueueCreateInfo - Structure specifying parameters of a newly--- created device queue------ == Valid Usage------ - @queueFamilyIndex@ /must/ be less than @pQueueFamilyPropertyCount@--- returned by @vkGetPhysicalDeviceQueueFamilyProperties@------ - @queueCount@ /must/ be less than or equal to the @queueCount@ member--- of the @VkQueueFamilyProperties@ structure, as returned by--- @vkGetPhysicalDeviceQueueFamilyProperties@ in the--- @pQueueFamilyProperties@[@queueFamilyIndex@]------ - Each element of @pQueuePriorities@ /must/ be between @0.0@ and @1.0@--- inclusive------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO@------ - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Extensions.VK_EXT_global_priority.VkDeviceQueueGlobalPriorityCreateInfoEXT'------ - @flags@ /must/ be a valid combination of--- 'VkDeviceQueueCreateFlagBits' values------ - @pQueuePriorities@ /must/ be a valid pointer to an array of--- @queueCount@ @float@ values------ - @queueCount@ /must/ be greater than @0@------ = See Also------ 'VkDeviceCreateInfo', 'VkDeviceQueueCreateFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkDeviceQueueCreateInfo = VkDeviceQueueCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkDeviceQueueCreateFlags- , -- | @queueFamilyIndex@ is an unsigned integer indicating the index of the- -- queue family to create on this device. This index corresponds to the- -- index of an element of the @pQueueFamilyProperties@ array that was- -- returned by @vkGetPhysicalDeviceQueueFamilyProperties@.- vkQueueFamilyIndex :: Word32- , -- | @queueCount@ is an unsigned integer specifying the number of queues to- -- create in the queue family indicated by @queueFamilyIndex@.- vkQueueCount :: Word32- , -- | @pQueuePriorities@ is an array of @queueCount@ normalized floating point- -- values, specifying priorities of work that will be submitted to each- -- created queue. See [Queue- -- Priority](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-priority)- -- for more information.- vkPQueuePriorities :: Ptr CFloat- }- deriving (Eq, Show)--instance Storable VkDeviceQueueCreateInfo where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkDeviceQueueCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDeviceQueueCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDeviceQueueCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkDeviceQueueCreateInfo))- *> poke (ptr `plusPtr` 20) (vkQueueFamilyIndex (poked :: VkDeviceQueueCreateInfo))- *> poke (ptr `plusPtr` 24) (vkQueueCount (poked :: VkDeviceQueueCreateInfo))- *> poke (ptr `plusPtr` 32) (vkPQueuePriorities (poked :: VkDeviceQueueCreateInfo))--- | VkDeviceCreateInfo - Structure specifying parameters of a newly created--- device------ == Valid Usage------ - The @queueFamilyIndex@ member of each element of @pQueueCreateInfos@--- /must/ be unique within @pQueueCreateInfos@------ - If the @pNext@ chain includes a--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceFeatures2'--- structure, then @pEnabledFeatures@ /must/ be @NULL@------ - @ppEnabledExtensionNames@ /must/ not contain both--- @{html_spec_relative}#VK_KHR_maintenance1@ and--- @{html_spec_relative}#VK_AMD_negative_viewport_height@------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation.VkDeviceGroupDeviceCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_16bit_storage.VkPhysicalDevice16BitStorageFeatures',--- 'Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing.VkPhysicalDeviceDescriptorIndexingFeaturesEXT',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceFeatures2',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview.VkPhysicalDeviceMultiviewFeatures',--- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory.VkPhysicalDeviceProtectedMemoryFeatures',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkPhysicalDeviceSamplerYcbcrConversionFeatures',--- or--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_variable_pointers.VkPhysicalDeviceVariablePointerFeatures'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ - @flags@ /must/ be @0@------ - @pQueueCreateInfos@ /must/ be a valid pointer to an array of--- @queueCreateInfoCount@ valid @VkDeviceQueueCreateInfo@ structures------ - If @enabledLayerCount@ is not @0@, @ppEnabledLayerNames@ /must/ be a--- valid pointer to an array of @enabledLayerCount@ null-terminated--- UTF-8 strings------ - If @enabledExtensionCount@ is not @0@, @ppEnabledExtensionNames@--- /must/ be a valid pointer to an array of @enabledExtensionCount@--- null-terminated UTF-8 strings------ - If @pEnabledFeatures@ is not @NULL@, @pEnabledFeatures@ /must/ be a--- valid pointer to a valid @VkPhysicalDeviceFeatures@ structure------ - @queueCreateInfoCount@ /must/ be greater than @0@------ = See Also------ 'VkDeviceCreateFlags', 'VkDeviceQueueCreateInfo',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceFeatures',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateDevice'-data VkDeviceCreateInfo = VkDeviceCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkDeviceCreateFlags- , -- | @queueCreateInfoCount@ is the unsigned integer size of the- -- @pQueueCreateInfos@ array. Refer to the [Queue- -- Creation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-queue-creation)- -- section below for further details.- vkQueueCreateInfoCount :: Word32- , -- | @pQueueCreateInfos@ is a pointer to an array of- -- 'VkDeviceQueueCreateInfo' structures describing the queues that are- -- requested to be created along with the logical device. Refer to the- -- [Queue- -- Creation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-queue-creation)- -- section below for further details.- vkPQueueCreateInfos :: Ptr VkDeviceQueueCreateInfo- , -- | @enabledLayerCount@ is deprecated and ignored.- vkEnabledLayerCount :: Word32- , -- | @ppEnabledLayerNames@ is deprecated and ignored. See [Device Layer- -- Deprecation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#extended-functionality-device-layer-deprecation).- vkPPEnabledLayerNames :: Ptr (Ptr CChar)- , -- | @enabledExtensionCount@ is the number of device extensions to enable.- vkEnabledExtensionCount :: Word32- , -- | @ppEnabledExtensionNames@ is a pointer to an array of- -- @enabledExtensionCount@ null-terminated UTF-8 strings containing the- -- names of extensions to enable for the created device. See the- -- [Extensions](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#extended-functionality-extensions)- -- section for further details.- vkPPEnabledExtensionNames :: Ptr (Ptr CChar)- , -- | @pEnabledFeatures@ is @NULL@ or a pointer to a- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceFeatures'- -- structure that contains boolean indicators of all the features to be- -- enabled. Refer to the- -- [Features](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features)- -- section for further details.- vkPEnabledFeatures :: Ptr VkPhysicalDeviceFeatures- }- deriving (Eq, Show)--instance Storable VkDeviceCreateInfo where- sizeOf ~_ = 72- alignment ~_ = 8- peek ptr = VkDeviceCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 64)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDeviceCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDeviceCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkDeviceCreateInfo))- *> poke (ptr `plusPtr` 20) (vkQueueCreateInfoCount (poked :: VkDeviceCreateInfo))- *> poke (ptr `plusPtr` 24) (vkPQueueCreateInfos (poked :: VkDeviceCreateInfo))- *> poke (ptr `plusPtr` 32) (vkEnabledLayerCount (poked :: VkDeviceCreateInfo))- *> poke (ptr `plusPtr` 40) (vkPPEnabledLayerNames (poked :: VkDeviceCreateInfo))- *> poke (ptr `plusPtr` 48) (vkEnabledExtensionCount (poked :: VkDeviceCreateInfo))- *> poke (ptr `plusPtr` 56) (vkPPEnabledExtensionNames (poked :: VkDeviceCreateInfo))- *> poke (ptr `plusPtr` 64) (vkPEnabledFeatures (poked :: VkDeviceCreateInfo))--- | VkDeviceQueueCreateFlags - Bitmask of VkDeviceQueueCreateFlagBits------ = Description------ @VkDeviceQueueCreateFlags@ is a bitmask type for setting a mask of zero--- or more 'VkDeviceQueueCreateFlagBits'.------ = See Also------ 'VkDeviceQueueCreateFlagBits', 'VkDeviceQueueCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory.VkDeviceQueueInfo2'-type VkDeviceQueueCreateFlags = VkDeviceQueueCreateFlagBits+{-# language CPP #-}+module Graphics.Vulkan.Core10.Device ( createDevice+ , withDevice+ , destroyDevice+ , DeviceQueueCreateInfo(..)+ , DeviceCreateInfo(..)+ ) where++import Control.Exception.Base (bracket)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Marshal.Utils (maybePeek)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.ByteString (packCString)+import Data.ByteString (useAsCString)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CFloat(CFloat))+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.CStruct.Extends (forgetExtensions)+import Graphics.Vulkan.Dynamic (initDeviceCmds)+import Graphics.Vulkan.CStruct.Extends (peekSomeCStruct)+import Graphics.Vulkan.CStruct.Extends (pokeSomeCStruct)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Core10.Handles (Device(Device))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyDevice))+import Graphics.Vulkan.Core10.Enums.DeviceCreateFlags (DeviceCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation (DeviceGroupDeviceCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_memory_overallocation_behavior (DeviceMemoryOverallocationCreateInfoAMD)+import Graphics.Vulkan.Core10.Enums.DeviceQueueCreateFlagBits (DeviceQueueCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_global_priority (DeviceQueueGlobalPriorityCreateInfoEXT)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkCreateDevice))+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage (PhysicalDevice16BitStorageFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage (PhysicalDevice8BitStorageFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_astc_decode_mode (PhysicalDeviceASTCDecodeFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced (PhysicalDeviceBlendOperationAdvancedFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_device_coherent_memory (PhysicalDeviceCoherentMemoryFeaturesAMD)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering (PhysicalDeviceConditionalRenderingFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix (PhysicalDeviceCooperativeMatrixFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_corner_sampled_image (PhysicalDeviceCornerSampledImageFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode (PhysicalDeviceCoverageReductionModeFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing (PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable (PhysicalDeviceDepthClipEnableFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive (PhysicalDeviceExclusiveScissorFeaturesNV)+import Graphics.Vulkan.Core10.DeviceInitialization (PhysicalDeviceFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceFeatures2)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map (PhysicalDeviceFragmentDensityMapFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_fragment_shader_barycentric (PhysicalDeviceFragmentShaderBarycentricFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_fragment_shader_interlock (PhysicalDeviceFragmentShaderInterlockFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset (PhysicalDeviceHostQueryResetFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (PhysicalDeviceImagelessFramebufferFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_index_type_uint8 (PhysicalDeviceIndexTypeUint8FeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_line_rasterization (PhysicalDeviceLineRasterizationFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_memory_priority (PhysicalDeviceMemoryPriorityFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_mesh_shader (PhysicalDeviceMeshShaderFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview (PhysicalDeviceMultiviewFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryFeaturesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PhysicalDevicePipelineExecutablePropertiesFeaturesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test (PhysicalDeviceRepresentativeFragmentTestFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (PhysicalDeviceSamplerYcbcrConversionFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout (PhysicalDeviceScalarBlockLayoutFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (PhysicalDeviceSeparateDepthStencilLayoutsFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64 (PhysicalDeviceShaderAtomicInt64Features)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_shader_clock (PhysicalDeviceShaderClockFeaturesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation (PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters (PhysicalDeviceShaderDrawParametersFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8 (PhysicalDeviceShaderFloat16Int8Features)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shader_image_footprint (PhysicalDeviceShaderImageFootprintFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_shader_integer_functions2 (PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shader_sm_builtins (PhysicalDeviceShaderSMBuiltinsFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types (PhysicalDeviceShaderSubgroupExtendedTypesFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (PhysicalDeviceShadingRateImageFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control (PhysicalDeviceSubgroupSizeControlFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment (PhysicalDeviceTexelBufferAlignmentFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr (PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (PhysicalDeviceTimelineSemaphoreFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_transform_feedback (PhysicalDeviceTransformFeedbackFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout (PhysicalDeviceUniformBufferStandardLayoutFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers (PhysicalDeviceVariablePointersFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12 (PhysicalDeviceVulkan11Features)+import {-# SOURCE #-} Graphics.Vulkan.Core12 (PhysicalDeviceVulkan12Features)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model (PhysicalDeviceVulkanMemoryModelFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_ycbcr_image_arrays (PhysicalDeviceYcbcrImageArraysFeaturesEXT)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.CStruct.Extends (SomeStruct)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateDevice+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr (DeviceCreateInfo a) -> Ptr AllocationCallbacks -> Ptr (Ptr Device_T) -> IO Result) -> Ptr PhysicalDevice_T -> Ptr (DeviceCreateInfo a) -> Ptr AllocationCallbacks -> Ptr (Ptr Device_T) -> IO Result++-- | vkCreateDevice - Create a new device instance+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be one of the+-- device handles returned from a call to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.enumeratePhysicalDevices'+-- (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-physical-device-enumeration Physical Device Enumeration>).+--+-- - @pCreateInfo@ is a pointer to a 'DeviceCreateInfo' structure+-- containing information about how to create the device.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pDevice@ is a pointer to a handle in which the created+-- 'Graphics.Vulkan.Core10.Handles.Device' is returned.+--+-- = Description+--+-- 'createDevice' verifies that extensions and features requested in the+-- @ppEnabledExtensionNames@ and @pEnabledFeatures@ members of+-- @pCreateInfo@, respectively, are supported by the implementation. If any+-- requested extension is not supported, 'createDevice' /must/ return+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_EXTENSION_NOT_PRESENT'. If+-- any requested feature is not supported, 'createDevice' /must/ return+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_FEATURE_NOT_PRESENT'. Support+-- for extensions /can/ be checked before creating a device by querying+-- 'Graphics.Vulkan.Core10.ExtensionDiscovery.enumerateDeviceExtensionProperties'.+-- Support for features /can/ similarly be checked by querying+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFeatures'.+--+-- After verifying and enabling the extensions the+-- 'Graphics.Vulkan.Core10.Handles.Device' object is created and returned+-- to the application. If a requested extension is only supported by a+-- layer, both the layer and the extension need to be specified at+-- 'Graphics.Vulkan.Core10.DeviceInitialization.createInstance' time for+-- the creation to succeed.+--+-- Multiple logical devices /can/ be created from the same physical device.+-- Logical device creation /may/ fail due to lack of device-specific+-- resources (in addition to the other errors). If that occurs,+-- 'createDevice' will return+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS'.+--+-- == Valid Usage+--+-- - All+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-extensions-extensiondependencies required extensions>+-- for each extension in the+-- 'DeviceCreateInfo'::@ppEnabledExtensionNames@ list /must/ also be+-- present in that list.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'DeviceCreateInfo' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pDevice@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_EXTENSION_NOT_PRESENT'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_FEATURE_NOT_PRESENT'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device', 'DeviceCreateInfo',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+createDevice :: PokeChain a => PhysicalDevice -> DeviceCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (Device)+createDevice physicalDevice createInfo allocator = evalContT $ do+ let cmds = instanceCmds (physicalDevice :: PhysicalDevice)+ let vkCreateDevice' = mkVkCreateDevice (pVkCreateDevice cmds)+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPDevice <- ContT $ bracket (callocBytes @(Ptr Device_T) 8) free+ r <- lift $ vkCreateDevice' (physicalDeviceHandle (physicalDevice)) pCreateInfo pAllocator (pPDevice)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pDevice <- lift $ peek @(Ptr Device_T) pPDevice+ pDevice' <- lift $ (\h -> Device h <$> initDeviceCmds cmds h) pDevice+ pure $ (pDevice')++-- | A safe wrapper for 'createDevice' and 'destroyDevice' using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withDevice :: PokeChain a => PhysicalDevice -> DeviceCreateInfo a -> Maybe AllocationCallbacks -> (Device -> IO r) -> IO r+withDevice physicalDevice deviceCreateInfo allocationCallbacks =+ bracket+ (createDevice physicalDevice deviceCreateInfo allocationCallbacks)+ (\o -> destroyDevice o allocationCallbacks)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDestroyDevice+ :: FunPtr (Ptr Device_T -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyDevice - Destroy a logical device+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device to+-- destroy.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- = Description+--+-- To ensure that no work is active on the device,+-- 'Graphics.Vulkan.Core10.Queue.deviceWaitIdle' /can/ be used to gate the+-- destruction of the device. Prior to destroying a device, an application+-- is responsible for destroying\/freeing any Vulkan objects that were+-- created using that device as the first parameter of the corresponding+-- @vkCreate*@ or @vkAllocate*@ command.+--+-- Note+--+-- The lifetime of each of these objects is bound by the lifetime of the+-- 'Graphics.Vulkan.Core10.Handles.Device' object. Therefore, to avoid+-- resource leaks, it is critical that an application explicitly free all+-- of these resources prior to calling 'destroyDevice'.+--+-- == Valid Usage+--+-- - All child objects created on 'Graphics.Vulkan.Core10.Handles.Device'+-- /must/ have been destroyed prior to destroying+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.Device' was+-- created, a compatible set of callbacks /must/ be provided here+--+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.Device' was+-- created, @pAllocator@ /must/ be @NULL@+--+-- == Valid Usage (Implicit)+--+-- - If 'Graphics.Vulkan.Core10.Handles.Device' is not @NULL@,+-- 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Device' /must/ be+-- externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device'+destroyDevice :: Device -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyDevice device allocator = evalContT $ do+ let vkDestroyDevice' = mkVkDestroyDevice (pVkDestroyDevice (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyDevice' (deviceHandle (device)) pAllocator+ pure $ ()+++-- | VkDeviceQueueCreateInfo - Structure specifying parameters of a newly+-- created device queue+--+-- == Valid Usage+--+-- - @queueFamilyIndex@ /must/ be less than @pQueueFamilyPropertyCount@+-- returned by+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceQueueFamilyProperties'+--+-- - @queueCount@ /must/ be less than or equal to the @queueCount@ member+-- of the+-- 'Graphics.Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'+-- structure, as returned by+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceQueueFamilyProperties'+-- in the @pQueueFamilyProperties@[queueFamilyIndex]+--+-- - Each element of @pQueuePriorities@ /must/ be between @0.0@ and @1.0@+-- inclusive+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-protectedMemory protected memory>+-- feature is not enabled, the+-- 'Graphics.Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_PROTECTED_BIT'+-- bit of 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not be set.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_global_priority.DeviceQueueGlobalPriorityCreateInfoEXT'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DeviceQueueCreateFlagBits'+-- values+--+-- - @pQueuePriorities@ /must/ be a valid pointer to an array of+-- @queueCount@ @float@ values+--+-- - @queueCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'DeviceCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DeviceQueueCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DeviceQueueCreateInfo (es :: [Type]) = DeviceQueueCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask indicating behavior+ -- of the queue.+ flags :: DeviceQueueCreateFlags+ , -- | @queueFamilyIndex@ is an unsigned integer indicating the index of the+ -- queue family to create on this device. This index corresponds to the+ -- index of an element of the @pQueueFamilyProperties@ array that was+ -- returned by+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceQueueFamilyProperties'.+ queueFamilyIndex :: Word32+ , -- | @pQueuePriorities@ is a pointer to an array of @queueCount@ normalized+ -- floating point values, specifying priorities of work that will be+ -- submitted to each created queue. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-priority Queue Priority>+ -- for more information.+ queuePriorities :: Vector Float+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (DeviceQueueCreateInfo es)++instance Extensible DeviceQueueCreateInfo where+ extensibleType = STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO+ setNext x next = x{next = next}+ getNext DeviceQueueCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends DeviceQueueCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @DeviceQueueGlobalPriorityCreateInfoEXT = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (DeviceQueueCreateInfo es) where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DeviceQueueCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr DeviceQueueCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (queueFamilyIndex)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (queuePriorities)) :: Word32))+ pPQueuePriorities' <- ContT $ allocaBytesAligned @CFloat ((Data.Vector.length (queuePriorities)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPQueuePriorities' `plusPtr` (4 * (i)) :: Ptr CFloat) (CFloat (e))) (queuePriorities)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CFloat))) (pPQueuePriorities')+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ pPQueuePriorities' <- ContT $ allocaBytesAligned @CFloat ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPQueuePriorities' `plusPtr` (4 * (i)) :: Ptr CFloat) (CFloat (e))) (mempty)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CFloat))) (pPQueuePriorities')+ lift $ f++instance PeekChain es => FromCStruct (DeviceQueueCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @DeviceQueueCreateFlags ((p `plusPtr` 16 :: Ptr DeviceQueueCreateFlags))+ queueFamilyIndex <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ queueCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ pQueuePriorities <- peek @(Ptr CFloat) ((p `plusPtr` 32 :: Ptr (Ptr CFloat)))+ pQueuePriorities' <- generateM (fromIntegral queueCount) (\i -> do+ pQueuePrioritiesElem <- peek @CFloat ((pQueuePriorities `advancePtrBytes` (4 * (i)) :: Ptr CFloat))+ pure $ (\(CFloat a) -> a) pQueuePrioritiesElem)+ pure $ DeviceQueueCreateInfo+ next flags queueFamilyIndex pQueuePriorities'++instance es ~ '[] => Zero (DeviceQueueCreateInfo es) where+ zero = DeviceQueueCreateInfo+ ()+ zero+ zero+ mempty+++-- | VkDeviceCreateInfo - Structure specifying parameters of a newly created+-- device+--+-- == Valid Usage+--+-- - The @queueFamilyIndex@ member of each element of @pQueueCreateInfos@+-- /must/ be unique within @pQueueCreateInfos@, except that two members+-- can share the same @queueFamilyIndex@ if one is a protected-capable+-- queue and one is not a protected-capable queue+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'+-- structure, then @pEnabledFeatures@ /must/ be @NULL@+--+-- - @ppEnabledExtensionNames@ /must/ not contain+-- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_AMD_negative_viewport_height@+--+-- - @ppEnabledExtensionNames@ /must/ not contain both+-- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_KHR_buffer_device_address@+-- and+-- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_buffer_device_address@+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan11Features' structure,+-- then it /must/ not include a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage.PhysicalDevice16BitStorageFeatures',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewFeatures',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers.PhysicalDeviceVariablePointersFeatures',+-- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.PhysicalDeviceSamplerYcbcrConversionFeatures',+-- or+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters.PhysicalDeviceShaderDrawParametersFeatures'+-- structure+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan12Features' structure,+-- then it /must/ not include a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage.PhysicalDevice8BitStorageFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64.PhysicalDeviceShaderAtomicInt64Features',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8.PhysicalDeviceShaderFloat16Int8Features',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout.PhysicalDeviceScalarBlockLayoutFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.PhysicalDeviceImagelessFramebufferFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout.PhysicalDeviceUniformBufferStandardLayoutFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types.PhysicalDeviceShaderSubgroupExtendedTypesFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.PhysicalDeviceSeparateDepthStencilLayoutsFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.PhysicalDeviceHostQueryResetFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures',+-- or+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model.PhysicalDeviceVulkanMemoryModelFeatures'+-- structure+--+-- - If @ppEnabledExtensions@ contains @\"VK_KHR_draw_indirect_count\"@+-- and the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan12Features' structure,+-- then+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan12Features'::@drawIndirectCount@+-- /must/ be 'Graphics.Vulkan.Core10.BaseType.TRUE'+--+-- - If @ppEnabledExtensions@ contains+-- @\"VK_KHR_sampler_mirror_clamp_to_edge\"@ and the @pNext@ chain+-- includes a 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan12Features'+-- structure, then+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan12Features'::@samplerMirrorClampToEdge@+-- /must/ be 'Graphics.Vulkan.Core10.BaseType.TRUE'+--+-- - If @ppEnabledExtensions@ contains @\"VK_EXT_descriptor_indexing\"@+-- and the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan12Features' structure,+-- then+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan12Features'::@descriptorIndexing@+-- /must/ be 'Graphics.Vulkan.Core10.BaseType.TRUE'+--+-- - If @ppEnabledExtensions@ contains @\"VK_EXT_sampler_filter_minmax\"@+-- and the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan12Features' structure,+-- then+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan12Features'::@samplerFilterMinmax@+-- /must/ be 'Graphics.Vulkan.Core10.BaseType.TRUE'+--+-- - If @ppEnabledExtensions@ contains+-- @\"VK_EXT_shader_viewport_index_layer\"@ and the @pNext@ chain+-- includes a 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan12Features'+-- structure, then+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan12Features'::@shaderOutputViewportIndex@+-- and+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan12Features'::@shaderOutputLayer@+-- /must/ both be 'Graphics.Vulkan.Core10.BaseType.TRUE'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_CREATE_INFO'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.DeviceGroupDeviceCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_AMD_memory_overallocation_behavior.DeviceMemoryOverallocationCreateInfoAMD',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage.PhysicalDevice16BitStorageFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage.PhysicalDevice8BitStorageFeatures',+-- 'Graphics.Vulkan.Extensions.VK_EXT_astc_decode_mode.PhysicalDeviceASTCDecodeFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedFeaturesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures',+-- 'Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_AMD_device_coherent_memory.PhysicalDeviceCoherentMemoryFeaturesAMD',+-- 'Graphics.Vulkan.Extensions.VK_NV_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering.PhysicalDeviceConditionalRenderingFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_corner_sampled_image.PhysicalDeviceCornerSampledImageFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode.PhysicalDeviceCoverageReductionModeFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing.PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable.PhysicalDeviceDepthClipEnableFeaturesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingFeatures',+-- 'Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- 'Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_fragment_shader_barycentric.PhysicalDeviceFragmentShaderBarycentricFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_fragment_shader_interlock.PhysicalDeviceFragmentShaderInterlockFeaturesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.PhysicalDeviceHostQueryResetFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.PhysicalDeviceImagelessFramebufferFeatures',+-- 'Graphics.Vulkan.Extensions.VK_EXT_index_type_uint8.PhysicalDeviceIndexTypeUint8FeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_memory_priority.PhysicalDeviceMemoryPriorityFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderFeaturesNV',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewFeatures',+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryFeaturesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PhysicalDevicePipelineExecutablePropertiesFeaturesKHR',+-- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures',+-- 'Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test.PhysicalDeviceRepresentativeFragmentTestFeaturesNV',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.PhysicalDeviceSamplerYcbcrConversionFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout.PhysicalDeviceScalarBlockLayoutFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.PhysicalDeviceSeparateDepthStencilLayoutsFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64.PhysicalDeviceShaderAtomicInt64Features',+-- 'Graphics.Vulkan.Extensions.VK_KHR_shader_clock.PhysicalDeviceShaderClockFeaturesKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation.PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters.PhysicalDeviceShaderDrawParametersFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8.PhysicalDeviceShaderFloat16Int8Features',+-- 'Graphics.Vulkan.Extensions.VK_NV_shader_image_footprint.PhysicalDeviceShaderImageFootprintFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_shader_integer_functions2.PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL',+-- 'Graphics.Vulkan.Extensions.VK_NV_shader_sm_builtins.PhysicalDeviceShaderSMBuiltinsFeaturesNV',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types.PhysicalDeviceShaderSubgroupExtendedTypesFeatures',+-- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImageFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr.PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreFeatures',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackFeaturesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout.PhysicalDeviceUniformBufferStandardLayoutFeatures',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers.PhysicalDeviceVariablePointersFeatures',+-- 'Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorFeaturesEXT',+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan11Features',+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan12Features',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model.PhysicalDeviceVulkanMemoryModelFeatures',+-- or+-- 'Graphics.Vulkan.Extensions.VK_EXT_ycbcr_image_arrays.PhysicalDeviceYcbcrImageArraysFeaturesEXT'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+--+-- - @pQueueCreateInfos@ /must/ be a valid pointer to an array of+-- @queueCreateInfoCount@ valid 'DeviceQueueCreateInfo' structures+--+-- - If @enabledLayerCount@ is not @0@, @ppEnabledLayerNames@ /must/ be a+-- valid pointer to an array of @enabledLayerCount@ null-terminated+-- UTF-8 strings+--+-- - If @enabledExtensionCount@ is not @0@, @ppEnabledExtensionNames@+-- /must/ be a valid pointer to an array of @enabledExtensionCount@+-- null-terminated UTF-8 strings+--+-- - If @pEnabledFeatures@ is not @NULL@, @pEnabledFeatures@ /must/ be a+-- valid pointer to a valid+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures'+-- structure+--+-- - @queueCreateInfoCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.DeviceCreateFlags.DeviceCreateFlags',+-- 'DeviceQueueCreateInfo',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createDevice'+data DeviceCreateInfo (es :: [Type]) = DeviceCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: DeviceCreateFlags+ , -- | @pQueueCreateInfos@ is a pointer to an array of 'DeviceQueueCreateInfo'+ -- structures describing the queues that are requested to be created along+ -- with the logical device. Refer to the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-queue-creation Queue Creation>+ -- section below for further details.+ queueCreateInfos :: Vector (SomeStruct DeviceQueueCreateInfo)+ , -- | @ppEnabledLayerNames@ is deprecated and ignored. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-layers-devicelayerdeprecation>.+ enabledLayerNames :: Vector ByteString+ , -- | @ppEnabledExtensionNames@ is a pointer to an array of+ -- @enabledExtensionCount@ null-terminated UTF-8 strings containing the+ -- names of extensions to enable for the created device. See the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-extensions>+ -- section for further details.+ enabledExtensionNames :: Vector ByteString+ , -- | @pEnabledFeatures@ is @NULL@ or a pointer to a+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures'+ -- structure containing boolean indicators of all the features to be+ -- enabled. Refer to the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features Features>+ -- section for further details.+ enabledFeatures :: Maybe PhysicalDeviceFeatures+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (DeviceCreateInfo es)++instance Extensible DeviceCreateInfo where+ extensibleType = STRUCTURE_TYPE_DEVICE_CREATE_INFO+ setNext x next = x{next = next}+ getNext DeviceCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends DeviceCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @PhysicalDeviceCoherentMemoryFeaturesAMD = Just f+ | Just Refl <- eqT @e @PhysicalDeviceVulkan12Features = Just f+ | Just Refl <- eqT @e @PhysicalDeviceVulkan11Features = Just f+ | Just Refl <- eqT @e @PhysicalDeviceLineRasterizationFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceSubgroupSizeControlFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceTexelBufferAlignmentFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDevicePipelineExecutablePropertiesFeaturesKHR = Just f+ | Just Refl <- eqT @e @PhysicalDeviceSeparateDepthStencilLayoutsFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceFragmentShaderInterlockFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShaderSMBuiltinsFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceIndexTypeUint8FeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShaderClockFeaturesKHR = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL = Just f+ | Just Refl <- eqT @e @PhysicalDeviceCoverageReductionModeFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDevicePerformanceQueryFeaturesKHR = Just f+ | Just Refl <- eqT @e @PhysicalDeviceYcbcrImageArraysFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceCooperativeMatrixFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceImagelessFramebufferFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceBufferDeviceAddressFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceBufferDeviceAddressFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceMemoryPriorityFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceDepthClipEnableFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceUniformBufferStandardLayoutFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceScalarBlockLayoutFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMapFeaturesEXT = Just f+ | Just Refl <- eqT @e @DeviceMemoryOverallocationCreateInfoAMD = Just f+ | Just Refl <- eqT @e @PhysicalDeviceMeshShaderFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShadingRateImageFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShaderImageFootprintFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceFragmentShaderBarycentricFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceComputeShaderDerivativesFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceCornerSampledImageFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceExclusiveScissorFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceRepresentativeFragmentTestFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceTransformFeedbackFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceASTCDecodeFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceVertexAttributeDivisorFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShaderAtomicInt64Features = Just f+ | Just Refl <- eqT @e @PhysicalDeviceVulkanMemoryModelFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceConditionalRenderingFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDevice8BitStorageFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceTimelineSemaphoreFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceDescriptorIndexingFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceHostQueryResetFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShaderFloat16Int8Features = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShaderDrawParametersFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceInlineUniformBlockFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceBlendOperationAdvancedFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceProtectedMemoryFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceSamplerYcbcrConversionFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShaderSubgroupExtendedTypesFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDevice16BitStorageFeatures = Just f+ | Just Refl <- eqT @e @DeviceGroupDeviceCreateInfo = Just f+ | Just Refl <- eqT @e @PhysicalDeviceMultiviewFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceVariablePointersFeatures = Just f+ | Just Refl <- eqT @e @(PhysicalDeviceFeatures2 '[]) = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (DeviceCreateInfo es) where+ withCStruct x f = allocaBytesAligned 72 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DeviceCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr DeviceCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (queueCreateInfos)) :: Word32))+ pPQueueCreateInfos' <- ContT $ allocaBytesAligned @(DeviceQueueCreateInfo _) ((Data.Vector.length (queueCreateInfos)) * 40) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPQueueCreateInfos' `plusPtr` (40 * (i)) :: Ptr (DeviceQueueCreateInfo _))) (e) . ($ ())) (queueCreateInfos)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (DeviceQueueCreateInfo _)))) (pPQueueCreateInfos')+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (enabledLayerNames)) :: Word32))+ pPpEnabledLayerNames' <- ContT $ allocaBytesAligned @(Ptr CChar) ((Data.Vector.length (enabledLayerNames)) * 8) 8+ Data.Vector.imapM_ (\i e -> do+ ppEnabledLayerNames'' <- ContT $ useAsCString (e)+ lift $ poke (pPpEnabledLayerNames' `plusPtr` (8 * (i)) :: Ptr (Ptr CChar)) ppEnabledLayerNames'') (enabledLayerNames)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr (Ptr CChar)))) (pPpEnabledLayerNames')+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (enabledExtensionNames)) :: Word32))+ pPpEnabledExtensionNames' <- ContT $ allocaBytesAligned @(Ptr CChar) ((Data.Vector.length (enabledExtensionNames)) * 8) 8+ Data.Vector.imapM_ (\i e -> do+ ppEnabledExtensionNames'' <- ContT $ useAsCString (e)+ lift $ poke (pPpEnabledExtensionNames' `plusPtr` (8 * (i)) :: Ptr (Ptr CChar)) ppEnabledExtensionNames'') (enabledExtensionNames)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (Ptr CChar)))) (pPpEnabledExtensionNames')+ pEnabledFeatures'' <- case (enabledFeatures) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr PhysicalDeviceFeatures))) pEnabledFeatures''+ lift $ f+ cStructSize = 72+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ pPQueueCreateInfos' <- ContT $ allocaBytesAligned @(DeviceQueueCreateInfo _) ((Data.Vector.length (mempty)) * 40) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPQueueCreateInfos' `plusPtr` (40 * (i)) :: Ptr (DeviceQueueCreateInfo _))) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (DeviceQueueCreateInfo _)))) (pPQueueCreateInfos')+ pPpEnabledLayerNames' <- ContT $ allocaBytesAligned @(Ptr CChar) ((Data.Vector.length (mempty)) * 8) 8+ Data.Vector.imapM_ (\i e -> do+ ppEnabledLayerNames'' <- ContT $ useAsCString (e)+ lift $ poke (pPpEnabledLayerNames' `plusPtr` (8 * (i)) :: Ptr (Ptr CChar)) ppEnabledLayerNames'') (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr (Ptr CChar)))) (pPpEnabledLayerNames')+ pPpEnabledExtensionNames' <- ContT $ allocaBytesAligned @(Ptr CChar) ((Data.Vector.length (mempty)) * 8) 8+ Data.Vector.imapM_ (\i e -> do+ ppEnabledExtensionNames'' <- ContT $ useAsCString (e)+ lift $ poke (pPpEnabledExtensionNames' `plusPtr` (8 * (i)) :: Ptr (Ptr CChar)) ppEnabledExtensionNames'') (mempty)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (Ptr CChar)))) (pPpEnabledExtensionNames')+ lift $ f++instance PeekChain es => FromCStruct (DeviceCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @DeviceCreateFlags ((p `plusPtr` 16 :: Ptr DeviceCreateFlags))+ queueCreateInfoCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pQueueCreateInfos <- peek @(Ptr (DeviceQueueCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (DeviceQueueCreateInfo a))))+ pQueueCreateInfos' <- generateM (fromIntegral queueCreateInfoCount) (\i -> peekSomeCStruct (forgetExtensions ((pQueueCreateInfos `advancePtrBytes` (40 * (i)) :: Ptr (DeviceQueueCreateInfo _)))))+ enabledLayerCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ ppEnabledLayerNames <- peek @(Ptr (Ptr CChar)) ((p `plusPtr` 40 :: Ptr (Ptr (Ptr CChar))))+ ppEnabledLayerNames' <- generateM (fromIntegral enabledLayerCount) (\i -> packCString =<< peek ((ppEnabledLayerNames `advancePtrBytes` (8 * (i)) :: Ptr (Ptr CChar))))+ enabledExtensionCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+ ppEnabledExtensionNames <- peek @(Ptr (Ptr CChar)) ((p `plusPtr` 56 :: Ptr (Ptr (Ptr CChar))))+ ppEnabledExtensionNames' <- generateM (fromIntegral enabledExtensionCount) (\i -> packCString =<< peek ((ppEnabledExtensionNames `advancePtrBytes` (8 * (i)) :: Ptr (Ptr CChar))))+ pEnabledFeatures <- peek @(Ptr PhysicalDeviceFeatures) ((p `plusPtr` 64 :: Ptr (Ptr PhysicalDeviceFeatures)))+ pEnabledFeatures' <- maybePeek (\j -> peekCStruct @PhysicalDeviceFeatures (j)) pEnabledFeatures+ pure $ DeviceCreateInfo+ next flags pQueueCreateInfos' ppEnabledLayerNames' ppEnabledExtensionNames' pEnabledFeatures'++instance es ~ '[] => Zero (DeviceCreateInfo es) where+ zero = DeviceCreateInfo+ ()+ zero+ mempty+ mempty+ mempty+ Nothing+
+ src/Graphics/Vulkan/Core10/Device.hs-boot view
@@ -0,0 +1,28 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Device ( DeviceCreateInfo+ , DeviceQueueCreateInfo+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+type role DeviceCreateInfo nominal+data DeviceCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (DeviceCreateInfo es)+instance Show (Chain es) => Show (DeviceCreateInfo es)++instance PeekChain es => FromCStruct (DeviceCreateInfo es)+++type role DeviceQueueCreateInfo nominal+data DeviceQueueCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (DeviceQueueCreateInfo es)+instance Show (Chain es) => Show (DeviceQueueCreateInfo es)++instance PeekChain es => FromCStruct (DeviceQueueCreateInfo es)+
src/Graphics/Vulkan/Core10/DeviceInitialization.hs view
@@ -1,5492 +1,4638 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.DeviceInitialization- ( VkImageTiling(..)- , pattern VK_IMAGE_TILING_OPTIMAL- , pattern VK_IMAGE_TILING_LINEAR- , VkImageType(..)- , pattern VK_IMAGE_TYPE_1D- , pattern VK_IMAGE_TYPE_2D- , pattern VK_IMAGE_TYPE_3D- , VkPhysicalDeviceType(..)- , pattern VK_PHYSICAL_DEVICE_TYPE_OTHER- , pattern VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU- , pattern VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU- , pattern VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU- , pattern VK_PHYSICAL_DEVICE_TYPE_CPU- , VkSystemAllocationScope(..)- , pattern VK_SYSTEM_ALLOCATION_SCOPE_COMMAND- , pattern VK_SYSTEM_ALLOCATION_SCOPE_OBJECT- , pattern VK_SYSTEM_ALLOCATION_SCOPE_CACHE- , pattern VK_SYSTEM_ALLOCATION_SCOPE_DEVICE- , pattern VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE- , VkInternalAllocationType(..)- , pattern VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE- , VkInstanceCreateFlags(..)- , VkQueueFlagBits(..)- , pattern VK_QUEUE_GRAPHICS_BIT- , pattern VK_QUEUE_COMPUTE_BIT- , pattern VK_QUEUE_TRANSFER_BIT- , pattern VK_QUEUE_SPARSE_BINDING_BIT- , VkMemoryPropertyFlagBits(..)- , pattern VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT- , pattern VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT- , pattern VK_MEMORY_PROPERTY_HOST_COHERENT_BIT- , pattern VK_MEMORY_PROPERTY_HOST_CACHED_BIT- , pattern VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT- , VkMemoryHeapFlagBits(..)- , pattern VK_MEMORY_HEAP_DEVICE_LOCAL_BIT- , VkImageUsageFlagBits(..)- , pattern VK_IMAGE_USAGE_TRANSFER_SRC_BIT- , pattern VK_IMAGE_USAGE_TRANSFER_DST_BIT- , pattern VK_IMAGE_USAGE_SAMPLED_BIT- , pattern VK_IMAGE_USAGE_STORAGE_BIT- , pattern VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT- , pattern VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT- , pattern VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT- , pattern VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT- , VkImageCreateFlagBits(..)- , pattern VK_IMAGE_CREATE_SPARSE_BINDING_BIT- , pattern VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT- , pattern VK_IMAGE_CREATE_SPARSE_ALIASED_BIT- , pattern VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT- , pattern VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT- , VkFormatFeatureFlagBits(..)- , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT- , pattern VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT- , pattern VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT- , pattern VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT- , pattern VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT- , pattern VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT- , pattern VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT- , pattern VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT- , pattern VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT- , pattern VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT- , pattern VK_FORMAT_FEATURE_BLIT_SRC_BIT- , pattern VK_FORMAT_FEATURE_BLIT_DST_BIT- , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT- , VkSampleCountFlagBits(..)- , pattern VK_SAMPLE_COUNT_1_BIT- , pattern VK_SAMPLE_COUNT_2_BIT- , pattern VK_SAMPLE_COUNT_4_BIT- , pattern VK_SAMPLE_COUNT_8_BIT- , pattern VK_SAMPLE_COUNT_16_BIT- , pattern VK_SAMPLE_COUNT_32_BIT- , pattern VK_SAMPLE_COUNT_64_BIT- , VK_MAX_PHYSICAL_DEVICE_NAME_SIZE- , pattern VK_MAX_PHYSICAL_DEVICE_NAME_SIZE- , VK_UUID_SIZE- , pattern VK_UUID_SIZE- , VK_MAX_MEMORY_TYPES- , pattern VK_MAX_MEMORY_TYPES- , VK_MAX_MEMORY_HEAPS- , pattern VK_MAX_MEMORY_HEAPS- , PFN_vkInternalAllocationNotification- , PFN_vkInternalFreeNotification- , PFN_vkReallocationFunction- , PFN_vkAllocationFunction- , PFN_vkFreeFunction- , PFN_vkVoidFunction- , VkInstance- , VkPhysicalDevice- , VkDevice- , vkCreateInstance- , vkDestroyInstance- , vkEnumeratePhysicalDevices- , vkGetDeviceProcAddr- , vkGetInstanceProcAddr- , vkGetPhysicalDeviceProperties- , vkGetPhysicalDeviceQueueFamilyProperties- , vkGetPhysicalDeviceMemoryProperties- , vkGetPhysicalDeviceFeatures- , vkGetPhysicalDeviceFormatProperties- , vkGetPhysicalDeviceImageFormatProperties- , VkExtent3D(..)- , VkPhysicalDeviceProperties(..)- , VkApplicationInfo(..)- , VkAllocationCallbacks(..)- , VkInstanceCreateInfo(..)- , VkQueueFamilyProperties(..)- , VkPhysicalDeviceMemoryProperties(..)- , VkMemoryType(..)- , VkMemoryHeap(..)- , VkFormatProperties(..)- , VkImageFormatProperties(..)- , VkPhysicalDeviceFeatures(..)- , VkPhysicalDeviceSparseProperties(..)- , VkPhysicalDeviceLimits(..)- , VkQueueFlags- , VkMemoryPropertyFlags- , VkMemoryHeapFlags- , VkImageUsageFlags- , VkImageCreateFlags- , VkFormatFeatureFlags- , VkSampleCountFlags- , VkDeviceSize- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Int- ( Int32- )-import Data.Vector.Storable.Sized- ( Vector- )-import Data.Word- ( Word32- , Word64- , Word8- )-import Foreign.C.Types- ( CChar(..)- , CFloat(..)- , CSize(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkFormat(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )----- ** VkImageTiling---- | VkImageTiling - Specifies the tiling arrangement of data in an image------ = See Also------ 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceImageFormatInfo2',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceSparseImageFormatInfo2',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.vkGetPhysicalDeviceExternalImageFormatPropertiesNV',--- 'vkGetPhysicalDeviceImageFormatProperties',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetPhysicalDeviceSparseImageFormatProperties'-newtype VkImageTiling = VkImageTiling Int32- deriving (Eq, Ord, Storable)--instance Show VkImageTiling where- showsPrec _ VK_IMAGE_TILING_OPTIMAL = showString "VK_IMAGE_TILING_OPTIMAL"- showsPrec _ VK_IMAGE_TILING_LINEAR = showString "VK_IMAGE_TILING_LINEAR"- showsPrec p (VkImageTiling x) = showParen (p >= 11) (showString "VkImageTiling " . showsPrec 11 x)--instance Read VkImageTiling where- readPrec = parens ( choose [ ("VK_IMAGE_TILING_OPTIMAL", pure VK_IMAGE_TILING_OPTIMAL)- , ("VK_IMAGE_TILING_LINEAR", pure VK_IMAGE_TILING_LINEAR)- ] +++- prec 10 (do- expectP (Ident "VkImageTiling")- v <- step readPrec- pure (VkImageTiling v)- )- )---- | @VK_IMAGE_TILING_OPTIMAL@ specifies optimal tiling (texels are laid out--- in an implementation-dependent arrangement, for more optimal memory--- access).-pattern VK_IMAGE_TILING_OPTIMAL :: VkImageTiling-pattern VK_IMAGE_TILING_OPTIMAL = VkImageTiling 0---- | @VK_IMAGE_TILING_LINEAR@ specifies linear tiling (texels are laid out in--- memory in row-major order, possibly with some padding on each row).-pattern VK_IMAGE_TILING_LINEAR :: VkImageTiling-pattern VK_IMAGE_TILING_LINEAR = VkImageTiling 1--- ** VkImageType---- | VkImageType - Specifies the type of an image object------ = See Also------ 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceImageFormatInfo2',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceSparseImageFormatInfo2',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.vkGetPhysicalDeviceExternalImageFormatPropertiesNV',--- 'vkGetPhysicalDeviceImageFormatProperties',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetPhysicalDeviceSparseImageFormatProperties'-newtype VkImageType = VkImageType Int32- deriving (Eq, Ord, Storable)--instance Show VkImageType where- showsPrec _ VK_IMAGE_TYPE_1D = showString "VK_IMAGE_TYPE_1D"- showsPrec _ VK_IMAGE_TYPE_2D = showString "VK_IMAGE_TYPE_2D"- showsPrec _ VK_IMAGE_TYPE_3D = showString "VK_IMAGE_TYPE_3D"- showsPrec p (VkImageType x) = showParen (p >= 11) (showString "VkImageType " . showsPrec 11 x)--instance Read VkImageType where- readPrec = parens ( choose [ ("VK_IMAGE_TYPE_1D", pure VK_IMAGE_TYPE_1D)- , ("VK_IMAGE_TYPE_2D", pure VK_IMAGE_TYPE_2D)- , ("VK_IMAGE_TYPE_3D", pure VK_IMAGE_TYPE_3D)- ] +++- prec 10 (do- expectP (Ident "VkImageType")- v <- step readPrec- pure (VkImageType v)- )- )---- | @VK_IMAGE_TYPE_1D@ specifies a one-dimensional image.-pattern VK_IMAGE_TYPE_1D :: VkImageType-pattern VK_IMAGE_TYPE_1D = VkImageType 0---- | @VK_IMAGE_TYPE_2D@ specifies a two-dimensional image.-pattern VK_IMAGE_TYPE_2D :: VkImageType-pattern VK_IMAGE_TYPE_2D = VkImageType 1---- | @VK_IMAGE_TYPE_3D@ specifies a three-dimensional image.-pattern VK_IMAGE_TYPE_3D :: VkImageType-pattern VK_IMAGE_TYPE_3D = VkImageType 2--- ** VkPhysicalDeviceType---- | VkPhysicalDeviceType - Supported physical device types------ = Description------ - @VK_PHYSICAL_DEVICE_TYPE_OTHER@ - the device does not match any--- other available types.------ - @VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU@ - the device is typically--- one embedded in or tightly coupled with the host.------ - @VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU@ - the device is typically a--- separate processor connected to the host via an interlink.------ - @VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU@ - the device is typically a--- virtual node in a virtualization environment.------ - @VK_PHYSICAL_DEVICE_TYPE_CPU@ - the device is typically running on--- the same processors as the host.------ The physical device type is advertised for informational purposes only,--- and does not directly affect the operation of the system. However, the--- device type /may/ correlate with other advertised properties or--- capabilities of the system, such as how many memory heaps there are.------ = See Also------ 'VkPhysicalDeviceProperties'-newtype VkPhysicalDeviceType = VkPhysicalDeviceType Int32- deriving (Eq, Ord, Storable)--instance Show VkPhysicalDeviceType where- showsPrec _ VK_PHYSICAL_DEVICE_TYPE_OTHER = showString "VK_PHYSICAL_DEVICE_TYPE_OTHER"- showsPrec _ VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = showString "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU"- showsPrec _ VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = showString "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU"- showsPrec _ VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = showString "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU"- showsPrec _ VK_PHYSICAL_DEVICE_TYPE_CPU = showString "VK_PHYSICAL_DEVICE_TYPE_CPU"- showsPrec p (VkPhysicalDeviceType x) = showParen (p >= 11) (showString "VkPhysicalDeviceType " . showsPrec 11 x)--instance Read VkPhysicalDeviceType where- readPrec = parens ( choose [ ("VK_PHYSICAL_DEVICE_TYPE_OTHER", pure VK_PHYSICAL_DEVICE_TYPE_OTHER)- , ("VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU", pure VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU)- , ("VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU", pure VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU)- , ("VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU", pure VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU)- , ("VK_PHYSICAL_DEVICE_TYPE_CPU", pure VK_PHYSICAL_DEVICE_TYPE_CPU)- ] +++- prec 10 (do- expectP (Ident "VkPhysicalDeviceType")- v <- step readPrec- pure (VkPhysicalDeviceType v)- )- )---- No documentation found for Nested "VkPhysicalDeviceType" "VK_PHYSICAL_DEVICE_TYPE_OTHER"-pattern VK_PHYSICAL_DEVICE_TYPE_OTHER :: VkPhysicalDeviceType-pattern VK_PHYSICAL_DEVICE_TYPE_OTHER = VkPhysicalDeviceType 0---- No documentation found for Nested "VkPhysicalDeviceType" "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU"-pattern VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU :: VkPhysicalDeviceType-pattern VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = VkPhysicalDeviceType 1---- No documentation found for Nested "VkPhysicalDeviceType" "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU"-pattern VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU :: VkPhysicalDeviceType-pattern VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = VkPhysicalDeviceType 2---- No documentation found for Nested "VkPhysicalDeviceType" "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU"-pattern VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU :: VkPhysicalDeviceType-pattern VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = VkPhysicalDeviceType 3---- No documentation found for Nested "VkPhysicalDeviceType" "VK_PHYSICAL_DEVICE_TYPE_CPU"-pattern VK_PHYSICAL_DEVICE_TYPE_CPU :: VkPhysicalDeviceType-pattern VK_PHYSICAL_DEVICE_TYPE_CPU = VkPhysicalDeviceType 4--- ** VkSystemAllocationScope---- | VkSystemAllocationScope - Allocation scope------ = Description------ - @VK_SYSTEM_ALLOCATION_SCOPE_COMMAND@ specifies that the allocation--- is scoped to the duration of the Vulkan command.------ - @VK_SYSTEM_ALLOCATION_SCOPE_OBJECT@ specifies that the allocation is--- scoped to the lifetime of the Vulkan object that is being created or--- used.------ - @VK_SYSTEM_ALLOCATION_SCOPE_CACHE@ specifies that the allocation is--- scoped to the lifetime of a @VkPipelineCache@ or--- @VkValidationCacheEXT@ object.------ - @VK_SYSTEM_ALLOCATION_SCOPE_DEVICE@ specifies that the allocation is--- scoped to the lifetime of the Vulkan device.------ - @VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE@ specifies that the allocation--- is scoped to the lifetime of the Vulkan instance.------ Most Vulkan commands operate on a single object, or there is a sole--- object that is being created or manipulated. When an allocation uses an--- allocation scope of @VK_SYSTEM_ALLOCATION_SCOPE_OBJECT@ or--- @VK_SYSTEM_ALLOCATION_SCOPE_CACHE@, the allocation is scoped to the--- object being created or manipulated.------ When an implementation requires host memory, it will make callbacks to--- the application using the most specific allocator and allocation scope--- available:------ - If an allocation is scoped to the duration of a command, the--- allocator will use the @VK_SYSTEM_ALLOCATION_SCOPE_COMMAND@--- allocation scope. The most specific allocator available is used: if--- the object being created or manipulated has an allocator, that--- object’s allocator will be used, else if the parent @VkDevice@ has--- an allocator it will be used, else if the parent @VkInstance@ has an--- allocator it will be used. Else,------ - If an allocation is associated with an object of type--- @VkValidationCacheEXT@ or @VkPipelineCache@, the allocator will use--- the @VK_SYSTEM_ALLOCATION_SCOPE_CACHE@ allocation scope. The most--- specific allocator available is used (cache, else device, else--- instance). Else,------ - If an allocation is scoped to the lifetime of an object, that object--- is being created or manipulated by the command, and that object’s--- type is not @VkDevice@ or @VkInstance@, the allocator will use an--- allocation scope of @VK_SYSTEM_ALLOCATION_SCOPE_OBJECT@. The most--- specific allocator available is used (object, else device, else--- instance). Else,------ - If an allocation is scoped to the lifetime of a device, the--- allocator will use an allocation scope of--- @VK_SYSTEM_ALLOCATION_SCOPE_DEVICE@. The most specific allocator--- available is used (device, else instance). Else,------ - If the allocation is scoped to the lifetime of an instance and the--- instance has an allocator, its allocator will be used with an--- allocation scope of @VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE@.------ - Otherwise an implementation will allocate memory through an--- alternative mechanism that is unspecified.------ = See Also------ 'VkAllocationCallbacks'-newtype VkSystemAllocationScope = VkSystemAllocationScope Int32- deriving (Eq, Ord, Storable)--instance Show VkSystemAllocationScope where- showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = showString "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND"- showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = showString "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT"- showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_CACHE = showString "VK_SYSTEM_ALLOCATION_SCOPE_CACHE"- showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = showString "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE"- showsPrec _ VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = showString "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE"- showsPrec p (VkSystemAllocationScope x) = showParen (p >= 11) (showString "VkSystemAllocationScope " . showsPrec 11 x)--instance Read VkSystemAllocationScope where- readPrec = parens ( choose [ ("VK_SYSTEM_ALLOCATION_SCOPE_COMMAND", pure VK_SYSTEM_ALLOCATION_SCOPE_COMMAND)- , ("VK_SYSTEM_ALLOCATION_SCOPE_OBJECT", pure VK_SYSTEM_ALLOCATION_SCOPE_OBJECT)- , ("VK_SYSTEM_ALLOCATION_SCOPE_CACHE", pure VK_SYSTEM_ALLOCATION_SCOPE_CACHE)- , ("VK_SYSTEM_ALLOCATION_SCOPE_DEVICE", pure VK_SYSTEM_ALLOCATION_SCOPE_DEVICE)- , ("VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE", pure VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE)- ] +++- prec 10 (do- expectP (Ident "VkSystemAllocationScope")- v <- step readPrec- pure (VkSystemAllocationScope v)- )- )---- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND"-pattern VK_SYSTEM_ALLOCATION_SCOPE_COMMAND :: VkSystemAllocationScope-pattern VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = VkSystemAllocationScope 0---- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT"-pattern VK_SYSTEM_ALLOCATION_SCOPE_OBJECT :: VkSystemAllocationScope-pattern VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = VkSystemAllocationScope 1---- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_CACHE"-pattern VK_SYSTEM_ALLOCATION_SCOPE_CACHE :: VkSystemAllocationScope-pattern VK_SYSTEM_ALLOCATION_SCOPE_CACHE = VkSystemAllocationScope 2---- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE"-pattern VK_SYSTEM_ALLOCATION_SCOPE_DEVICE :: VkSystemAllocationScope-pattern VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = VkSystemAllocationScope 3---- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE"-pattern VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE :: VkSystemAllocationScope-pattern VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = VkSystemAllocationScope 4--- ** VkInternalAllocationType---- | VkInternalAllocationType - Allocation type------ = See Also------ 'PFN_vkInternalAllocationNotification', 'PFN_vkInternalFreeNotification'-newtype VkInternalAllocationType = VkInternalAllocationType Int32- deriving (Eq, Ord, Storable)--instance Show VkInternalAllocationType where- showsPrec _ VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = showString "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE"- showsPrec p (VkInternalAllocationType x) = showParen (p >= 11) (showString "VkInternalAllocationType " . showsPrec 11 x)--instance Read VkInternalAllocationType where- readPrec = parens ( choose [ ("VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE", pure VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE)- ] +++- prec 10 (do- expectP (Ident "VkInternalAllocationType")- v <- step readPrec- pure (VkInternalAllocationType v)- )- )---- | @VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE@ specifies that the allocation--- is intended for execution by the host.-pattern VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE :: VkInternalAllocationType-pattern VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = VkInternalAllocationType 0--- ** VkInstanceCreateFlags---- | VkInstanceCreateFlags - Reserved for future use------ = Description------ @VkInstanceCreateFlags@ is a bitmask type for setting a mask, but is--- currently reserved for future use.------ = See Also------ 'VkInstanceCreateInfo'-newtype VkInstanceCreateFlags = VkInstanceCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkInstanceCreateFlags where- - showsPrec p (VkInstanceCreateFlags x) = showParen (p >= 11) (showString "VkInstanceCreateFlags " . showsPrec 11 x)--instance Read VkInstanceCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkInstanceCreateFlags")- v <- step readPrec- pure (VkInstanceCreateFlags v)- )- )----- ** VkQueueFlagBits---- | VkQueueFlagBits - Bitmask specifying capabilities of queues in a queue--- family------ = Description------ - @VK_QUEUE_GRAPHICS_BIT@ specifies that queues in this queue family--- support graphics operations.------ - @VK_QUEUE_COMPUTE_BIT@ specifies that queues in this queue family--- support compute operations.------ - @VK_QUEUE_TRANSFER_BIT@ specifies that queues in this queue family--- support transfer operations.------ - @VK_QUEUE_SPARSE_BINDING_BIT@ specifies that queues in this queue--- family support sparse memory management operations (see [Sparse--- Resources](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#sparsememory)).--- If any of the sparse resource features are enabled, then at least--- one queue family /must/ support this bit.------ If an implementation exposes any queue family that supports graphics--- operations, at least one queue family of at least one physical device--- exposed by the implementation /must/ support both graphics and compute--- operations.------ __Note__------ All commands that are allowed on a queue that supports transfer--- operations are also allowed on a queue that supports either graphics or--- compute operations. Thus, if the capabilities of a queue family include--- @VK_QUEUE_GRAPHICS_BIT@ or @VK_QUEUE_COMPUTE_BIT@, then reporting the--- @VK_QUEUE_TRANSFER_BIT@ capability separately for that queue family is--- /optional/.------ For further details see--- [Queues](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-queues).------ = See Also------ 'VkQueueFlags'-newtype VkQueueFlagBits = VkQueueFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkQueueFlagBits where- showsPrec _ VK_QUEUE_GRAPHICS_BIT = showString "VK_QUEUE_GRAPHICS_BIT"- showsPrec _ VK_QUEUE_COMPUTE_BIT = showString "VK_QUEUE_COMPUTE_BIT"- showsPrec _ VK_QUEUE_TRANSFER_BIT = showString "VK_QUEUE_TRANSFER_BIT"- showsPrec _ VK_QUEUE_SPARSE_BINDING_BIT = showString "VK_QUEUE_SPARSE_BINDING_BIT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkQueueFlagBits 0x00000010) = showString "VK_QUEUE_PROTECTED_BIT"- showsPrec p (VkQueueFlagBits x) = showParen (p >= 11) (showString "VkQueueFlagBits " . showsPrec 11 x)--instance Read VkQueueFlagBits where- readPrec = parens ( choose [ ("VK_QUEUE_GRAPHICS_BIT", pure VK_QUEUE_GRAPHICS_BIT)- , ("VK_QUEUE_COMPUTE_BIT", pure VK_QUEUE_COMPUTE_BIT)- , ("VK_QUEUE_TRANSFER_BIT", pure VK_QUEUE_TRANSFER_BIT)- , ("VK_QUEUE_SPARSE_BINDING_BIT", pure VK_QUEUE_SPARSE_BINDING_BIT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_QUEUE_PROTECTED_BIT", pure (VkQueueFlagBits 0x00000010))- ] +++- prec 10 (do- expectP (Ident "VkQueueFlagBits")- v <- step readPrec- pure (VkQueueFlagBits v)- )- )---- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_GRAPHICS_BIT"-pattern VK_QUEUE_GRAPHICS_BIT :: VkQueueFlagBits-pattern VK_QUEUE_GRAPHICS_BIT = VkQueueFlagBits 0x00000001---- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_COMPUTE_BIT"-pattern VK_QUEUE_COMPUTE_BIT :: VkQueueFlagBits-pattern VK_QUEUE_COMPUTE_BIT = VkQueueFlagBits 0x00000002---- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_TRANSFER_BIT"-pattern VK_QUEUE_TRANSFER_BIT :: VkQueueFlagBits-pattern VK_QUEUE_TRANSFER_BIT = VkQueueFlagBits 0x00000004---- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_SPARSE_BINDING_BIT"-pattern VK_QUEUE_SPARSE_BINDING_BIT :: VkQueueFlagBits-pattern VK_QUEUE_SPARSE_BINDING_BIT = VkQueueFlagBits 0x00000008--- ** VkMemoryPropertyFlagBits---- | VkMemoryPropertyFlagBits - Bitmask specifying properties for a memory--- type------ = See Also------ 'VkMemoryPropertyFlags'-newtype VkMemoryPropertyFlagBits = VkMemoryPropertyFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkMemoryPropertyFlagBits where- showsPrec _ VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = showString "VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"- showsPrec _ VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = showString "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"- showsPrec _ VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = showString "VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"- showsPrec _ VK_MEMORY_PROPERTY_HOST_CACHED_BIT = showString "VK_MEMORY_PROPERTY_HOST_CACHED_BIT"- showsPrec _ VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = showString "VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkMemoryPropertyFlagBits 0x00000020) = showString "VK_MEMORY_PROPERTY_PROTECTED_BIT"- showsPrec p (VkMemoryPropertyFlagBits x) = showParen (p >= 11) (showString "VkMemoryPropertyFlagBits " . showsPrec 11 x)--instance Read VkMemoryPropertyFlagBits where- readPrec = parens ( choose [ ("VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT", pure VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT)- , ("VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT", pure VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT)- , ("VK_MEMORY_PROPERTY_HOST_COHERENT_BIT", pure VK_MEMORY_PROPERTY_HOST_COHERENT_BIT)- , ("VK_MEMORY_PROPERTY_HOST_CACHED_BIT", pure VK_MEMORY_PROPERTY_HOST_CACHED_BIT)- , ("VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT", pure VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_MEMORY_PROPERTY_PROTECTED_BIT", pure (VkMemoryPropertyFlagBits 0x00000020))- ] +++- prec 10 (do- expectP (Ident "VkMemoryPropertyFlagBits")- v <- step readPrec- pure (VkMemoryPropertyFlagBits v)- )- )---- | @VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT@ bit specifies that memory--- allocated with this type is the most efficient for device access. This--- property will be set if and only if the memory type belongs to a heap--- with the @VK_MEMORY_HEAP_DEVICE_LOCAL_BIT@ set.-pattern VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT :: VkMemoryPropertyFlagBits-pattern VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = VkMemoryPropertyFlagBits 0x00000001---- | @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ bit specifies that memory--- allocated with this type /can/ be mapped for host access using--- 'Graphics.Vulkan.Core10.Memory.vkMapMemory'.-pattern VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT :: VkMemoryPropertyFlagBits-pattern VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = VkMemoryPropertyFlagBits 0x00000002---- | @VK_MEMORY_PROPERTY_HOST_COHERENT_BIT@ bit specifies that the host cache--- management commands--- 'Graphics.Vulkan.Core10.Memory.vkFlushMappedMemoryRanges' and--- 'Graphics.Vulkan.Core10.Memory.vkInvalidateMappedMemoryRanges' are not--- needed to flush host writes to the device or make device writes visible--- to the host, respectively.-pattern VK_MEMORY_PROPERTY_HOST_COHERENT_BIT :: VkMemoryPropertyFlagBits-pattern VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = VkMemoryPropertyFlagBits 0x00000004---- | @VK_MEMORY_PROPERTY_HOST_CACHED_BIT@ bit specifies that memory allocated--- with this type is cached on the host. Host memory accesses to uncached--- memory are slower than to cached memory, however uncached memory is--- always host coherent.-pattern VK_MEMORY_PROPERTY_HOST_CACHED_BIT :: VkMemoryPropertyFlagBits-pattern VK_MEMORY_PROPERTY_HOST_CACHED_BIT = VkMemoryPropertyFlagBits 0x00000008---- | @VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT@ bit specifies that the memory--- type only allows device access to the memory. Memory types /must/ not--- have both @VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT@ and--- @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ set. Additionally, the object’s--- backing memory /may/ be provided by the implementation lazily as--- specified in [Lazily Allocated--- Memory](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-device-lazy_allocation).-pattern VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT :: VkMemoryPropertyFlagBits-pattern VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = VkMemoryPropertyFlagBits 0x00000010--- ** VkMemoryHeapFlagBits---- | VkMemoryHeapFlagBits - Bitmask specifying attribute flags for a heap------ = See Also------ 'VkMemoryHeapFlags'-newtype VkMemoryHeapFlagBits = VkMemoryHeapFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkMemoryHeapFlagBits where- showsPrec _ VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = showString "VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkMemoryHeapFlagBits 0x00000002) = showString "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT"- showsPrec p (VkMemoryHeapFlagBits x) = showParen (p >= 11) (showString "VkMemoryHeapFlagBits " . showsPrec 11 x)--instance Read VkMemoryHeapFlagBits where- readPrec = parens ( choose [ ("VK_MEMORY_HEAP_DEVICE_LOCAL_BIT", pure VK_MEMORY_HEAP_DEVICE_LOCAL_BIT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_MEMORY_HEAP_MULTI_INSTANCE_BIT", pure (VkMemoryHeapFlagBits 0x00000002))- ] +++- prec 10 (do- expectP (Ident "VkMemoryHeapFlagBits")- v <- step readPrec- pure (VkMemoryHeapFlagBits v)- )- )---- | @VK_MEMORY_HEAP_DEVICE_LOCAL_BIT@ specifies that the heap corresponds to--- device local memory. Device local memory /may/ have different--- performance characteristics than host local memory, and /may/ support--- different memory property flags.-pattern VK_MEMORY_HEAP_DEVICE_LOCAL_BIT :: VkMemoryHeapFlagBits-pattern VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = VkMemoryHeapFlagBits 0x00000001--- ** VkImageUsageFlagBits---- | VkImageUsageFlagBits - Bitmask specifying intended usage of an image------ = See Also------ 'VkImageUsageFlags'-newtype VkImageUsageFlagBits = VkImageUsageFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkImageUsageFlagBits where- showsPrec _ VK_IMAGE_USAGE_TRANSFER_SRC_BIT = showString "VK_IMAGE_USAGE_TRANSFER_SRC_BIT"- showsPrec _ VK_IMAGE_USAGE_TRANSFER_DST_BIT = showString "VK_IMAGE_USAGE_TRANSFER_DST_BIT"- showsPrec _ VK_IMAGE_USAGE_SAMPLED_BIT = showString "VK_IMAGE_USAGE_SAMPLED_BIT"- showsPrec _ VK_IMAGE_USAGE_STORAGE_BIT = showString "VK_IMAGE_USAGE_STORAGE_BIT"- showsPrec _ VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = showString "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"- showsPrec _ VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = showString "VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"- showsPrec _ VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = showString "VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"- showsPrec _ VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = showString "VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"- showsPrec p (VkImageUsageFlagBits x) = showParen (p >= 11) (showString "VkImageUsageFlagBits " . showsPrec 11 x)--instance Read VkImageUsageFlagBits where- readPrec = parens ( choose [ ("VK_IMAGE_USAGE_TRANSFER_SRC_BIT", pure VK_IMAGE_USAGE_TRANSFER_SRC_BIT)- , ("VK_IMAGE_USAGE_TRANSFER_DST_BIT", pure VK_IMAGE_USAGE_TRANSFER_DST_BIT)- , ("VK_IMAGE_USAGE_SAMPLED_BIT", pure VK_IMAGE_USAGE_SAMPLED_BIT)- , ("VK_IMAGE_USAGE_STORAGE_BIT", pure VK_IMAGE_USAGE_STORAGE_BIT)- , ("VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT", pure VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT)- , ("VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT", pure VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)- , ("VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT", pure VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT)- , ("VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT", pure VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT)- ] +++- prec 10 (do- expectP (Ident "VkImageUsageFlagBits")- v <- step readPrec- pure (VkImageUsageFlagBits v)- )- )---- | @VK_IMAGE_USAGE_TRANSFER_SRC_BIT@ specifies that the image /can/ be used--- as the source of a transfer command.-pattern VK_IMAGE_USAGE_TRANSFER_SRC_BIT :: VkImageUsageFlagBits-pattern VK_IMAGE_USAGE_TRANSFER_SRC_BIT = VkImageUsageFlagBits 0x00000001---- | @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ specifies that the image /can/ be used--- as the destination of a transfer command.-pattern VK_IMAGE_USAGE_TRANSFER_DST_BIT :: VkImageUsageFlagBits-pattern VK_IMAGE_USAGE_TRANSFER_DST_BIT = VkImageUsageFlagBits 0x00000002---- | @VK_IMAGE_USAGE_SAMPLED_BIT@ specifies that the image /can/ be used to--- create a @VkImageView@ suitable for occupying a @VkDescriptorSet@ slot--- either of type @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@ or--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@, and be sampled by a shader.-pattern VK_IMAGE_USAGE_SAMPLED_BIT :: VkImageUsageFlagBits-pattern VK_IMAGE_USAGE_SAMPLED_BIT = VkImageUsageFlagBits 0x00000004---- | @VK_IMAGE_USAGE_STORAGE_BIT@ specifies that the image /can/ be used to--- create a @VkImageView@ suitable for occupying a @VkDescriptorSet@ slot--- of type @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@.-pattern VK_IMAGE_USAGE_STORAGE_BIT :: VkImageUsageFlagBits-pattern VK_IMAGE_USAGE_STORAGE_BIT = VkImageUsageFlagBits 0x00000008---- | @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@ specifies that the image /can/ be--- used to create a @VkImageView@ suitable for use as a color or resolve--- attachment in a @VkFramebuffer@.-pattern VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT :: VkImageUsageFlagBits-pattern VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = VkImageUsageFlagBits 0x00000010---- | @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@ specifies that the image--- /can/ be used to create a @VkImageView@ suitable for use as a--- depth\/stencil attachment in a @VkFramebuffer@.-pattern VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT :: VkImageUsageFlagBits-pattern VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = VkImageUsageFlagBits 0x00000020---- | @VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT@ specifies that the memory--- bound to this image will have been allocated with the--- @VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT@ (see--- [{html_spec_relative}#memory](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory)--- for more detail). This bit /can/ be set for any image that /can/ be used--- to create a @VkImageView@ suitable for use as a color, resolve,--- depth\/stencil, or input attachment.-pattern VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT :: VkImageUsageFlagBits-pattern VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = VkImageUsageFlagBits 0x00000040---- | @VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT@ specifies that the image /can/ be--- used to create a @VkImageView@ suitable for occupying @VkDescriptorSet@--- slot of type @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@; be read from a--- shader as an input attachment; and be used as an input attachment in a--- framebuffer.-pattern VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT :: VkImageUsageFlagBits-pattern VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = VkImageUsageFlagBits 0x00000080--- ** VkImageCreateFlagBits---- | VkImageCreateFlagBits - Bitmask specifying additional parameters of an--- image------ = Description------ - @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@ specifies that the image will--- be backed using sparse memory binding.------ - @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@ specifies that the image--- /can/ be partially backed using sparse memory binding. Images--- created with this flag /must/ also be created with the--- @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@ flag.------ - @VK_IMAGE_CREATE_SPARSE_ALIASED_BIT@ specifies that the image will--- be backed using sparse memory binding with memory ranges that might--- also simultaneously be backing another image (or another portion of--- the same image). Images created with this flag /must/ also be--- created with the @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@ flag------ - @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@ specifies that the image /can/--- be used to create a @VkImageView@ with a different format from the--- image. For--- [multi-planar](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)--- formats, @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@ specifies that a--- @VkImageView@ can be created of a /plane/ of the image.------ - @VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT@ specifies that the image /can/--- be used to create a @VkImageView@ of type @VK_IMAGE_VIEW_TYPE_CUBE@--- or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@.------ - @VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT@ specifies that the image--- /can/ be used to create a @VkImageView@ of type--- @VK_IMAGE_VIEW_TYPE_2D@ or @VK_IMAGE_VIEW_TYPE_2D_ARRAY@.------ - @VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT@ specifies that the--- image /can/ be used with a non-zero value of the--- @splitInstanceBindRegionCount@ member of a--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo'--- structure passed into--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.vkBindImageMemory2'.--- This flag also has the effect of making the image use the standard--- sparse image block dimensions.------ - @VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT@ specifies that the--- image having a compressed format /can/ be used to create a--- @VkImageView@ with an uncompressed format where each texel in the--- image view corresponds to a compressed texel block of the image.------ - @VK_IMAGE_CREATE_EXTENDED_USAGE_BIT@ specifies that the image /can/--- be created with usage flags that are not supported for the format--- the image is created with but are supported for at least one format--- a @VkImageView@ created from the image /can/ have.------ - @VK_IMAGE_CREATE_DISJOINT_BIT@ specifies that an image with a--- [multi-planar--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)--- /must/ have each plane separately bound to memory, rather than--- having a single memory binding for the whole image; the presence of--- this bit distinguishes a /disjoint image/ from an image without this--- bit set.------ - @VK_IMAGE_CREATE_ALIAS_BIT@ specifies that two images created with--- the same creation parameters and aliased to the same memory /can/--- interpret the contents of the memory consistently with each other,--- subject to the rules described in the [Memory--- Aliasing](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-memory-aliasing)--- section. This flag further specifies that each plane of a /disjoint/--- image /can/ share an in-memory non-linear representation with--- single-plane images, and that a single-plane image /can/ share an--- in-memory non-linear representation with a plane of a multi-planar--- disjoint image, according to the rules in--- [{html_spec_relative}#features-formats-compatible-planes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatible-planes).--- If the @pNext@ chain includes a--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryImageCreateInfo'--- or--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.VkExternalMemoryImageCreateInfoNV'--- structure whose @handleTypes@ member is not @0@, it is as if--- @VK_IMAGE_CREATE_ALIAS_BIT@ is set.------ - @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@--- specifies that an image with a depth or depth\/stencil format /can/--- be used with custom sample locations when used as a depth\/stencil--- attachment.------ See [Sparse Resource--- Features](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#sparsememory-sparseresourcefeatures)--- and [Sparse Physical Device--- Features](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#sparsememory-physicalfeatures)--- for more details.------ = See Also------ 'VkImageCreateFlags'-newtype VkImageCreateFlagBits = VkImageCreateFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkImageCreateFlagBits where- showsPrec _ VK_IMAGE_CREATE_SPARSE_BINDING_BIT = showString "VK_IMAGE_CREATE_SPARSE_BINDING_BIT"- showsPrec _ VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = showString "VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"- showsPrec _ VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = showString "VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"- showsPrec _ VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = showString "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"- showsPrec _ VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = showString "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkImageCreateFlagBits 0x00000400) = showString "VK_IMAGE_CREATE_ALIAS_BIT"- showsPrec _ (VkImageCreateFlagBits 0x00000040) = showString "VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"- showsPrec _ (VkImageCreateFlagBits 0x00000020) = showString "VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT"- showsPrec _ (VkImageCreateFlagBits 0x00000080) = showString "VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"- showsPrec _ (VkImageCreateFlagBits 0x00000100) = showString "VK_IMAGE_CREATE_EXTENDED_USAGE_BIT"- showsPrec _ (VkImageCreateFlagBits 0x00000800) = showString "VK_IMAGE_CREATE_PROTECTED_BIT"- showsPrec _ (VkImageCreateFlagBits 0x00000200) = showString "VK_IMAGE_CREATE_DISJOINT_BIT"- showsPrec _ (VkImageCreateFlagBits 0x00001000) = showString "VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"- showsPrec p (VkImageCreateFlagBits x) = showParen (p >= 11) (showString "VkImageCreateFlagBits " . showsPrec 11 x)--instance Read VkImageCreateFlagBits where- readPrec = parens ( choose [ ("VK_IMAGE_CREATE_SPARSE_BINDING_BIT", pure VK_IMAGE_CREATE_SPARSE_BINDING_BIT)- , ("VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT", pure VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT)- , ("VK_IMAGE_CREATE_SPARSE_ALIASED_BIT", pure VK_IMAGE_CREATE_SPARSE_ALIASED_BIT)- , ("VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT", pure VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT)- , ("VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT", pure VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_IMAGE_CREATE_ALIAS_BIT", pure (VkImageCreateFlagBits 0x00000400))- , ("VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT", pure (VkImageCreateFlagBits 0x00000040))- , ("VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT", pure (VkImageCreateFlagBits 0x00000020))- , ("VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT", pure (VkImageCreateFlagBits 0x00000080))- , ("VK_IMAGE_CREATE_EXTENDED_USAGE_BIT", pure (VkImageCreateFlagBits 0x00000100))- , ("VK_IMAGE_CREATE_PROTECTED_BIT", pure (VkImageCreateFlagBits 0x00000800))- , ("VK_IMAGE_CREATE_DISJOINT_BIT", pure (VkImageCreateFlagBits 0x00000200))- , ("VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT", pure (VkImageCreateFlagBits 0x00001000))- ] +++- prec 10 (do- expectP (Ident "VkImageCreateFlagBits")- v <- step readPrec- pure (VkImageCreateFlagBits v)- )- )---- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_SPARSE_BINDING_BIT"-pattern VK_IMAGE_CREATE_SPARSE_BINDING_BIT :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_SPARSE_BINDING_BIT = VkImageCreateFlagBits 0x00000001---- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"-pattern VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = VkImageCreateFlagBits 0x00000002---- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"-pattern VK_IMAGE_CREATE_SPARSE_ALIASED_BIT :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = VkImageCreateFlagBits 0x00000004---- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"-pattern VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = VkImageCreateFlagBits 0x00000008---- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"-pattern VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = VkImageCreateFlagBits 0x00000010--- ** VkFormatFeatureFlagBits---- | VkFormatFeatureFlagBits - Bitmask specifying features supported by a--- buffer------ = Description------ The following bits /may/ be set in @linearTilingFeatures@ and--- @optimalTilingFeatures@, specifying that the features are supported by--- [images](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImage)--- or [image--- views](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkImageView)--- created with the queried--- 'vkGetPhysicalDeviceFormatProperties'::@format@:------ - @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@ specifies that an image view--- /can/ be [sampled--- from](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-sampledimage).------ - @VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT@ specifies that an image view--- /can/ be used as a [storage--- images](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storageimage).------ - @VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT@ specifies that an image--- view /can/ be used as storage image that supports atomic operations.------ - @VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT@ specifies that an image--- view /can/ be used as a framebuffer color attachment and as an input--- attachment.------ - @VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT@ specifies that an--- image view /can/ be used as a framebuffer color attachment that--- supports blending and as an input attachment.------ - @VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT@ specifies that an--- image view /can/ be used as a framebuffer depth\/stencil attachment--- and as an input attachment.------ - @VK_FORMAT_FEATURE_BLIT_SRC_BIT@ specifies that an image /can/ be--- used as @srcImage@ for the @vkCmdBlitImage@ command.------ - @VK_FORMAT_FEATURE_BLIT_DST_BIT@ specifies that an image /can/ be--- used as @dstImage@ for the @vkCmdBlitImage@ command.------ - @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ specifies that--- if @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@ is also set, an image view--- /can/ be used with a sampler that has either of @magFilter@ or--- @minFilter@ set to @VK_FILTER_LINEAR@, or @mipmapMode@ set to--- @VK_SAMPLER_MIPMAP_MODE_LINEAR@. If @VK_FORMAT_FEATURE_BLIT_SRC_BIT@--- is also set, an image can be used as the @srcImage@ to--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBlitImage' with a--- @filter@ of @VK_FILTER_LINEAR@. This bit /must/ only be exposed for--- formats that also support the @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@--- or @VK_FORMAT_FEATURE_BLIT_SRC_BIT@.------ If the format being queried is a depth\/stencil format, this bit--- only specifies that the depth aspect (not the stencil aspect) of an--- image of this format supports linear filtering, and that linear--- filtering of the depth aspect is supported whether depth compare is--- enabled in the sampler or not. If this bit is not present, linear--- filtering with depth compare disabled is unsupported and linear--- filtering with depth compare enabled is supported, but /may/ compute--- the filtered value in an implementation-dependent manner which--- differs from the normal rules of linear filtering. The resulting--- value /must/ be in the range [0,1] and /should/ be proportional to,--- or a weighted average of, the number of comparison passes or--- failures.------ - @VK_FORMAT_FEATURE_TRANSFER_SRC_BIT@ specifies that an image /can/--- be used as a source image for [copy--- commands](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#copies).------ - @VK_FORMAT_FEATURE_TRANSFER_DST_BIT@ specifies that an image /can/--- be used as a destination image for [copy--- commands](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#copies)--- and [clear--- commands](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#clears).------ - @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT@ specifies--- @VkImage@ /can/ be used as a sampled image with a min or max--- 'Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax.VkSamplerReductionModeEXT'.--- This bit /must/ only be exposed for formats that also support the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@.------ - @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG@ specifies--- that @VkImage@ /can/ be used with a sampler that has either of--- @magFilter@ or @minFilter@ set to @VK_FILTER_CUBIC_IMG@, or be the--- source image for a blit with @filter@ set to @VK_FILTER_CUBIC_IMG@.--- This bit /must/ only be exposed for formats that also support the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@. If the format being queried--- is a depth\/stencil format, this only specifies that the depth--- aspect is cubic filterable.------ - @VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT@ specifies that an--- application /can/ define a [sampler Y’CBCR--- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion)--- using this format as a source, and that an image of this format--- /can/ be used with a @VkSamplerYcbcrConversionCreateInfo@--- @xChromaOffset@ and\/or @yChromaOffset@ of--- @VK_CHROMA_LOCATION_MIDPOINT@. Otherwise both @xChromaOffset@ and--- @yChromaOffset@ /must/ be @VK_CHROMA_LOCATION_COSITED_EVEN@. If a--- format does not incorporate chroma downsampling (it is not a “422”--- or “420” format) but the implementation supports sampler Y’CBCR--- conversion for this format, the implementation /must/ set--- @VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT@.------ - @VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT@ specifies that an--- application /can/ define a [sampler Y’CBCR--- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion)--- using this format as a source, and that an image of this format--- /can/ be used with a @VkSamplerYcbcrConversionCreateInfo@--- @xChromaOffset@ and\/or @yChromaOffset@ of--- @VK_CHROMA_LOCATION_COSITED_EVEN@. Otherwise both @xChromaOffset@--- and @yChromaOffset@ /must/ be @VK_CHROMA_LOCATION_MIDPOINT@. If--- neither @VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT@ nor--- @VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT@ is set, the--- application /must/ not define a [sampler Y’CBCR--- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion)--- using this format as a source.------ - @VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT@--- specifies that the format can do linear sampler filtering--- (min\/magFilter) whilst sampler Y’CBCR conversion is enabled.------ - @VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT@--- specifies that the format can have different chroma, min, and mag--- filters.------ - @VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT@--- specifies that reconstruction is explicit, as described in--- [{html_spec_relative}#textures-chroma-reconstruction](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-chroma-reconstruction).--- If this bit is not present, reconstruction is implicit by default.------ - @VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT@--- specifies that reconstruction /can/ be forcibly made explicit by--- setting--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionCreateInfo'::@forceExplicitReconstruction@--- to @VK_TRUE@.------ - @VK_FORMAT_FEATURE_DISJOINT_BIT@ specifies that a multi-planar image--- /can/ have the @VK_IMAGE_CREATE_DISJOINT_BIT@ set during image--- creation. An implementation /must/ not set--- @VK_FORMAT_FEATURE_DISJOINT_BIT@ for /single-plane formats/.------ The following bits /may/ be set in @bufferFeatures@, specifying that the--- features are supported by--- [buffers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBuffer)--- or [buffer--- views](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkBufferView)--- created with the queried 'vkGetPhysicalDeviceProperties'::@format@:------ - @VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT@ specifies that the--- format /can/ be used to create a buffer view that /can/ be bound to--- a @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ descriptor.------ - @VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT@ specifies that the--- format /can/ be used to create a buffer view that /can/ be bound to--- a @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ descriptor.------ - @VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT@ specifies that--- atomic operations are supported on--- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ with this format.------ - @VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT@ specifies that the format--- /can/ be used as a vertex attribute format--- (@VkVertexInputAttributeDescription@::@format@).------ = See Also------ 'VkFormatFeatureFlags'-newtype VkFormatFeatureFlagBits = VkFormatFeatureFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkFormatFeatureFlagBits where- showsPrec _ VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"- showsPrec _ VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = showString "VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"- showsPrec _ VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = showString "VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"- showsPrec _ VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = showString "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"- showsPrec _ VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = showString "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"- showsPrec _ VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = showString "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"- showsPrec _ VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = showString "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"- showsPrec _ VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = showString "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"- showsPrec _ VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = showString "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"- showsPrec _ VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = showString "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"- showsPrec _ VK_FORMAT_FEATURE_BLIT_SRC_BIT = showString "VK_FORMAT_FEATURE_BLIT_SRC_BIT"- showsPrec _ VK_FORMAT_FEATURE_BLIT_DST_BIT = showString "VK_FORMAT_FEATURE_BLIT_DST_BIT"- showsPrec _ VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkFormatFeatureFlagBits 0x00004000) = showString "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT"- showsPrec _ (VkFormatFeatureFlagBits 0x00008000) = showString "VK_FORMAT_FEATURE_TRANSFER_DST_BIT"- showsPrec _ (VkFormatFeatureFlagBits 0x00020000) = showString "VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT"- showsPrec _ (VkFormatFeatureFlagBits 0x00040000) = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"- showsPrec _ (VkFormatFeatureFlagBits 0x00080000) = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"- showsPrec _ (VkFormatFeatureFlagBits 0x00100000) = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"- showsPrec _ (VkFormatFeatureFlagBits 0x00200000) = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"- showsPrec _ (VkFormatFeatureFlagBits 0x00400000) = showString "VK_FORMAT_FEATURE_DISJOINT_BIT"- showsPrec _ (VkFormatFeatureFlagBits 0x00800000) = showString "VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT"- showsPrec _ (VkFormatFeatureFlagBits 0x00002000) = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"- showsPrec _ (VkFormatFeatureFlagBits 0x00010000) = showString "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT"- showsPrec p (VkFormatFeatureFlagBits x) = showParen (p >= 11) (showString "VkFormatFeatureFlagBits " . showsPrec 11 x)--instance Read VkFormatFeatureFlagBits where- readPrec = parens ( choose [ ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT", pure VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT)- , ("VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT", pure VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT)- , ("VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT", pure VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT)- , ("VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", pure VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT)- , ("VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", pure VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT)- , ("VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT", pure VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT)- , ("VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT", pure VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT)- , ("VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", pure VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT)- , ("VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT", pure VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT)- , ("VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", pure VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT)- , ("VK_FORMAT_FEATURE_BLIT_SRC_BIT", pure VK_FORMAT_FEATURE_BLIT_SRC_BIT)- , ("VK_FORMAT_FEATURE_BLIT_DST_BIT", pure VK_FORMAT_FEATURE_BLIT_DST_BIT)- , ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT", pure VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_FORMAT_FEATURE_TRANSFER_SRC_BIT", pure (VkFormatFeatureFlagBits 0x00004000))- , ("VK_FORMAT_FEATURE_TRANSFER_DST_BIT", pure (VkFormatFeatureFlagBits 0x00008000))- , ("VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT", pure (VkFormatFeatureFlagBits 0x00020000))- , ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT", pure (VkFormatFeatureFlagBits 0x00040000))- , ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT", pure (VkFormatFeatureFlagBits 0x00080000))- , ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT", pure (VkFormatFeatureFlagBits 0x00100000))- , ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT", pure (VkFormatFeatureFlagBits 0x00200000))- , ("VK_FORMAT_FEATURE_DISJOINT_BIT", pure (VkFormatFeatureFlagBits 0x00400000))- , ("VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT", pure (VkFormatFeatureFlagBits 0x00800000))- , ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG", pure (VkFormatFeatureFlagBits 0x00002000))- , ("VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT", pure (VkFormatFeatureFlagBits 0x00010000))- ] +++- prec 10 (do- expectP (Ident "VkFormatFeatureFlagBits")- v <- step readPrec- pure (VkFormatFeatureFlagBits v)- )- )---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = VkFormatFeatureFlagBits 0x00000001---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"-pattern VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = VkFormatFeatureFlagBits 0x00000002---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"-pattern VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = VkFormatFeatureFlagBits 0x00000004---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"-pattern VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = VkFormatFeatureFlagBits 0x00000008---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"-pattern VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = VkFormatFeatureFlagBits 0x00000010---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"-pattern VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = VkFormatFeatureFlagBits 0x00000020---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"-pattern VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = VkFormatFeatureFlagBits 0x00000040---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"-pattern VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = VkFormatFeatureFlagBits 0x00000080---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"-pattern VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = VkFormatFeatureFlagBits 0x00000100---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"-pattern VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = VkFormatFeatureFlagBits 0x00000200---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_BLIT_SRC_BIT"-pattern VK_FORMAT_FEATURE_BLIT_SRC_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_BLIT_SRC_BIT = VkFormatFeatureFlagBits 0x00000400---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_BLIT_DST_BIT"-pattern VK_FORMAT_FEATURE_BLIT_DST_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_BLIT_DST_BIT = VkFormatFeatureFlagBits 0x00000800---- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = VkFormatFeatureFlagBits 0x00001000--- ** VkSampleCountFlagBits---- | VkSampleCountFlagBits - Bitmask specifying sample counts supported for--- an image used for storage operations------ = See Also------ 'Graphics.Vulkan.Core10.Pass.VkAttachmentDescription',--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceSparseImageFormatInfo2',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineMultisampleStateCreateInfo',--- 'VkSampleCountFlags',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkSampleLocationsInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.vkGetPhysicalDeviceMultisamplePropertiesEXT',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetPhysicalDeviceSparseImageFormatProperties'-newtype VkSampleCountFlagBits = VkSampleCountFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkSampleCountFlagBits where- showsPrec _ VK_SAMPLE_COUNT_1_BIT = showString "VK_SAMPLE_COUNT_1_BIT"- showsPrec _ VK_SAMPLE_COUNT_2_BIT = showString "VK_SAMPLE_COUNT_2_BIT"- showsPrec _ VK_SAMPLE_COUNT_4_BIT = showString "VK_SAMPLE_COUNT_4_BIT"- showsPrec _ VK_SAMPLE_COUNT_8_BIT = showString "VK_SAMPLE_COUNT_8_BIT"- showsPrec _ VK_SAMPLE_COUNT_16_BIT = showString "VK_SAMPLE_COUNT_16_BIT"- showsPrec _ VK_SAMPLE_COUNT_32_BIT = showString "VK_SAMPLE_COUNT_32_BIT"- showsPrec _ VK_SAMPLE_COUNT_64_BIT = showString "VK_SAMPLE_COUNT_64_BIT"- showsPrec p (VkSampleCountFlagBits x) = showParen (p >= 11) (showString "VkSampleCountFlagBits " . showsPrec 11 x)--instance Read VkSampleCountFlagBits where- readPrec = parens ( choose [ ("VK_SAMPLE_COUNT_1_BIT", pure VK_SAMPLE_COUNT_1_BIT)- , ("VK_SAMPLE_COUNT_2_BIT", pure VK_SAMPLE_COUNT_2_BIT)- , ("VK_SAMPLE_COUNT_4_BIT", pure VK_SAMPLE_COUNT_4_BIT)- , ("VK_SAMPLE_COUNT_8_BIT", pure VK_SAMPLE_COUNT_8_BIT)- , ("VK_SAMPLE_COUNT_16_BIT", pure VK_SAMPLE_COUNT_16_BIT)- , ("VK_SAMPLE_COUNT_32_BIT", pure VK_SAMPLE_COUNT_32_BIT)- , ("VK_SAMPLE_COUNT_64_BIT", pure VK_SAMPLE_COUNT_64_BIT)- ] +++- prec 10 (do- expectP (Ident "VkSampleCountFlagBits")- v <- step readPrec- pure (VkSampleCountFlagBits v)- )- )---- | @VK_SAMPLE_COUNT_1_BIT@ specifies an image with one sample per pixel.-pattern VK_SAMPLE_COUNT_1_BIT :: VkSampleCountFlagBits-pattern VK_SAMPLE_COUNT_1_BIT = VkSampleCountFlagBits 0x00000001---- | @VK_SAMPLE_COUNT_2_BIT@ specifies an image with 2 samples per pixel.-pattern VK_SAMPLE_COUNT_2_BIT :: VkSampleCountFlagBits-pattern VK_SAMPLE_COUNT_2_BIT = VkSampleCountFlagBits 0x00000002---- | @VK_SAMPLE_COUNT_4_BIT@ specifies an image with 4 samples per pixel.-pattern VK_SAMPLE_COUNT_4_BIT :: VkSampleCountFlagBits-pattern VK_SAMPLE_COUNT_4_BIT = VkSampleCountFlagBits 0x00000004---- | @VK_SAMPLE_COUNT_8_BIT@ specifies an image with 8 samples per pixel.-pattern VK_SAMPLE_COUNT_8_BIT :: VkSampleCountFlagBits-pattern VK_SAMPLE_COUNT_8_BIT = VkSampleCountFlagBits 0x00000008---- | @VK_SAMPLE_COUNT_16_BIT@ specifies an image with 16 samples per pixel.-pattern VK_SAMPLE_COUNT_16_BIT :: VkSampleCountFlagBits-pattern VK_SAMPLE_COUNT_16_BIT = VkSampleCountFlagBits 0x00000010---- | @VK_SAMPLE_COUNT_32_BIT@ specifies an image with 32 samples per pixel.-pattern VK_SAMPLE_COUNT_32_BIT :: VkSampleCountFlagBits-pattern VK_SAMPLE_COUNT_32_BIT = VkSampleCountFlagBits 0x00000020---- | @VK_SAMPLE_COUNT_64_BIT@ specifies an image with 64 samples per pixel.-pattern VK_SAMPLE_COUNT_64_BIT :: VkSampleCountFlagBits-pattern VK_SAMPLE_COUNT_64_BIT = VkSampleCountFlagBits 0x00000040--- No documentation found for TopLevel "VK_MAX_PHYSICAL_DEVICE_NAME_SIZE"-type VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256--- No documentation found for Nested "Integral a => a" "VK_MAX_PHYSICAL_DEVICE_NAME_SIZE"-pattern VK_MAX_PHYSICAL_DEVICE_NAME_SIZE :: Integral a => a-pattern VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256--- No documentation found for TopLevel "VK_UUID_SIZE"-type VK_UUID_SIZE = 16--- No documentation found for Nested "Integral a => a" "VK_UUID_SIZE"-pattern VK_UUID_SIZE :: Integral a => a-pattern VK_UUID_SIZE = 16--- No documentation found for TopLevel "VK_MAX_MEMORY_TYPES"-type VK_MAX_MEMORY_TYPES = 32--- No documentation found for Nested "Integral a => a" "VK_MAX_MEMORY_TYPES"-pattern VK_MAX_MEMORY_TYPES :: Integral a => a-pattern VK_MAX_MEMORY_TYPES = 32--- No documentation found for TopLevel "VK_MAX_MEMORY_HEAPS"-type VK_MAX_MEMORY_HEAPS = 16--- No documentation found for Nested "Integral a => a" "VK_MAX_MEMORY_HEAPS"-pattern VK_MAX_MEMORY_HEAPS :: Integral a => a-pattern VK_MAX_MEMORY_HEAPS = 16--- | PFN_vkInternalAllocationNotification - Application-defined memory--- allocation notification function------ = Parameters------ - @pUserData@ is the value specified for--- 'VkAllocationCallbacks'::@pUserData@ in the allocator specified by--- the application.------ - @size@ is the requested size of an allocation.------ - @allocationType@ is a 'VkInternalAllocationType' value specifying--- the requested type of an allocation.------ - @allocationScope@ is a 'VkSystemAllocationScope' value specifying--- the allocation scope of the lifetime of the allocation, as described--- [here](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-host-allocation-scope).------ = Description------ This is a purely informational callback.------ = See Also------ 'VkAllocationCallbacks'-type PFN_vkInternalAllocationNotification = Ptr (("pUserData" ::: Ptr ()) -> ("size" ::: CSize) -> ("allocationType" ::: VkInternalAllocationType) -> ("allocationScope" ::: VkSystemAllocationScope) -> IO ())--- | PFN_vkInternalFreeNotification - Application-defined memory free--- notification function------ = Parameters------ - @pUserData@ is the value specified for--- 'VkAllocationCallbacks'::@pUserData@ in the allocator specified by--- the application.------ - @size@ is the requested size of an allocation.------ - @allocationType@ is a 'VkInternalAllocationType' value specifying--- the requested type of an allocation.------ - @allocationScope@ is a 'VkSystemAllocationScope' value specifying--- the allocation scope of the lifetime of the allocation, as described--- [here](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-host-allocation-scope).------ = See Also------ 'VkAllocationCallbacks'-type PFN_vkInternalFreeNotification = Ptr (("pUserData" ::: Ptr ()) -> ("size" ::: CSize) -> ("allocationType" ::: VkInternalAllocationType) -> ("allocationScope" ::: VkSystemAllocationScope) -> IO ())--- | PFN_vkReallocationFunction - Application-defined memory reallocation--- function------ = Parameters------ - @pUserData@ is the value specified for--- 'VkAllocationCallbacks'::@pUserData@ in the allocator specified by--- the application.------ - @pOriginal@ /must/ be either @NULL@ or a pointer previously returned--- by @pfnReallocation@ or @pfnAllocation@ of the same allocator.------ - @size@ is the size in bytes of the requested allocation.------ - @alignment@ is the requested alignment of the allocation in bytes--- and /must/ be a power of two.------ - @allocationScope@ is a 'VkSystemAllocationScope' value specifying--- the allocation scope of the lifetime of the allocation, as described--- [here](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-host-allocation-scope).------ = Description------ @pfnReallocation@ /must/ return an allocation with enough space for--- @size@ bytes, and the contents of the original allocation from bytes--- zero to min(original size, new size) - 1 /must/ be preserved in the--- returned allocation. If @size@ is larger than the old size, the contents--- of the additional space are undefined. If satisfying these requirements--- involves creating a new allocation, then the old allocation /should/ be--- freed.------ If @pOriginal@ is @NULL@, then @pfnReallocation@ /must/ behave--- equivalently to a call to 'PFN_vkAllocationFunction' with the same--- parameter values (without @pOriginal@).------ If @size@ is zero, then @pfnReallocation@ /must/ behave equivalently to--- a call to 'PFN_vkFreeFunction' with the same @pUserData@ parameter--- value, and @pMemory@ equal to @pOriginal@.------ If @pOriginal@ is non-@NULL@, the implementation /must/ ensure that--- @alignment@ is equal to the @alignment@ used to originally allocate--- @pOriginal@.------ If this function fails and @pOriginal@ is non-@NULL@ the application--- /must/ not free the old allocation.------ @pfnReallocation@ /must/ follow the same [rules for return values as--- @PFN_vkAllocationFunction@](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkAllocationFunction_return_rules).------ = See Also------ 'VkAllocationCallbacks'-type PFN_vkReallocationFunction = Ptr (("pUserData" ::: Ptr ()) -> ("pOriginal" ::: Ptr ()) -> ("size" ::: CSize) -> ("alignment" ::: CSize) -> ("allocationScope" ::: VkSystemAllocationScope) -> IO (Ptr ()))--- | PFN_vkAllocationFunction - Application-defined memory allocation--- function------ = Parameters------ - @pUserData@ is the value specified for--- 'VkAllocationCallbacks'::@pUserData@ in the allocator specified by--- the application.------ - @size@ is the size in bytes of the requested allocation.------ - @alignment@ is the requested alignment of the allocation in bytes--- and /must/ be a power of two.------ - @allocationScope@ is a 'VkSystemAllocationScope' value specifying--- the allocation scope of the lifetime of the allocation, as described--- [here](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-host-allocation-scope).------ = Description------ If @pfnAllocation@ is unable to allocate the requested memory, it /must/--- return @NULL@. If the allocation was successful, it /must/ return a--- valid pointer to memory allocation containing at least @size@ bytes, and--- with the pointer value being a multiple of @alignment@.------ __Note__------ Correct Vulkan operation /cannot/ be assumed if the application does not--- follow these rules.------ For example, @pfnAllocation@ (or @pfnReallocation@) could cause--- termination of running Vulkan instance(s) on a failed allocation for--- debugging purposes, either directly or indirectly. In these--- circumstances, it /cannot/ be assumed that any part of any affected--- 'VkInstance' objects are going to operate correctly (even--- 'vkDestroyInstance'), and the application /must/ ensure it cleans up--- properly via other means (e.g. process termination).------ If @pfnAllocation@ returns @NULL@, and if the implementation is unable--- to continue correct processing of the current command without the--- requested allocation, it /must/ treat this as a run-time error, and--- generate @VK_ERROR_OUT_OF_HOST_MEMORY@ at the appropriate time for the--- command in which the condition was detected, as described in [Return--- Codes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes).------ If the implementation is able to continue correct processing of the--- current command without the requested allocation, then it /may/ do so,--- and /must/ not generate @VK_ERROR_OUT_OF_HOST_MEMORY@ as a result of--- this failed allocation.------ = See Also------ 'VkAllocationCallbacks'-type PFN_vkAllocationFunction = Ptr (("pUserData" ::: Ptr ()) -> ("size" ::: CSize) -> ("alignment" ::: CSize) -> ("allocationScope" ::: VkSystemAllocationScope) -> IO (Ptr ()))--- | PFN_vkFreeFunction - Application-defined memory free function------ = Parameters------ - @pUserData@ is the value specified for--- 'VkAllocationCallbacks'::@pUserData@ in the allocator specified by--- the application.------ - @pMemory@ is the allocation to be freed.------ = Description------ @pMemory@ /may/ be @NULL@, which the callback /must/ handle safely. If--- @pMemory@ is non-@NULL@, it /must/ be a pointer previously allocated by--- @pfnAllocation@ or @pfnReallocation@. The application /should/ free this--- memory.------ = See Also------ 'VkAllocationCallbacks'-type PFN_vkFreeFunction = Ptr (("pUserData" ::: Ptr ()) -> ("pMemory" ::: Ptr ()) -> IO ())--- | PFN_vkVoidFunction - Dummy function pointer type returned by queries------ = See Also------ 'vkGetDeviceProcAddr', 'vkGetInstanceProcAddr'-type PFN_vkVoidFunction = Ptr (() -> IO ())--- | Dummy data to tag the 'Ptr' with-data VkInstance_T--- | VkInstance - Opaque handle to a instance object------ = See Also------ 'Graphics.Vulkan.Extensions.VK_KHR_android_surface.vkCreateAndroidSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.vkCreateDebugReportCallbackEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkCreateDebugUtilsMessengerEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkCreateDisplayPlaneSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_MVK_ios_surface.vkCreateIOSSurfaceMVK',--- 'vkCreateInstance',--- 'Graphics.Vulkan.Extensions.VK_MVK_macos_surface.vkCreateMacOSSurfaceMVK',--- 'Graphics.Vulkan.Extensions.VK_KHR_mir_surface.vkCreateMirSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_NN_vi_surface.vkCreateViSurfaceNN',--- 'Graphics.Vulkan.Extensions.VK_KHR_wayland_surface.vkCreateWaylandSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_win32_surface.vkCreateWin32SurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_xcb_surface.vkCreateXcbSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_xlib_surface.vkCreateXlibSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.vkDebugReportMessageEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.vkDestroyDebugReportCallbackEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkDestroyDebugUtilsMessengerEXT',--- 'vkDestroyInstance',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkDestroySurfaceKHR',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation.vkEnumeratePhysicalDeviceGroups',--- 'Graphics.Vulkan.Extensions.VK_KHR_device_group_creation.vkEnumeratePhysicalDeviceGroupsKHR',--- 'vkEnumeratePhysicalDevices', 'vkGetInstanceProcAddr',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkSubmitDebugUtilsMessageEXT'-type VkInstance = Ptr VkInstance_T--- | Dummy data to tag the 'Ptr' with-data VkPhysicalDevice_T--- | VkPhysicalDevice - Opaque handle to a physical device object------ = See Also------ 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation.VkDeviceGroupDeviceCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation.VkPhysicalDeviceGroupProperties',--- 'Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display.vkAcquireXlibDisplayEXT',--- 'Graphics.Vulkan.Core10.Device.vkCreateDevice',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkCreateDisplayModeKHR',--- 'Graphics.Vulkan.Core10.ExtensionDiscovery.vkEnumerateDeviceExtensionProperties',--- 'Graphics.Vulkan.Core10.LayerDiscovery.vkEnumerateDeviceLayerProperties',--- 'vkEnumeratePhysicalDevices',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkGetDisplayModePropertiesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkGetDisplayPlaneCapabilitiesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkGetDisplayPlaneSupportedDisplaysKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkGetPhysicalDeviceDisplayPlanePropertiesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkGetPhysicalDeviceDisplayPropertiesKHR',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.vkGetPhysicalDeviceExternalBufferProperties',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities.vkGetPhysicalDeviceExternalBufferPropertiesKHR',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.vkGetPhysicalDeviceExternalFenceProperties',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_capabilities.vkGetPhysicalDeviceExternalFencePropertiesKHR',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.vkGetPhysicalDeviceExternalImageFormatPropertiesNV',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.vkGetPhysicalDeviceExternalSemaphoreProperties',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_capabilities.vkGetPhysicalDeviceExternalSemaphorePropertiesKHR',--- 'vkGetPhysicalDeviceFeatures',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceFeatures2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceFeatures2KHR',--- 'vkGetPhysicalDeviceFormatProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceFormatProperties2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceFormatProperties2KHR',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX',--- 'vkGetPhysicalDeviceImageFormatProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2KHR',--- 'vkGetPhysicalDeviceMemoryProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceMemoryProperties2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceMemoryProperties2KHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_mir_surface.vkGetPhysicalDeviceMirPresentationSupportKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.vkGetPhysicalDeviceMultisamplePropertiesEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkGetPhysicalDevicePresentRectanglesKHR',--- 'vkGetPhysicalDeviceProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceProperties2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceProperties2KHR',--- 'vkGetPhysicalDeviceQueueFamilyProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceQueueFamilyProperties2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceQueueFamilyProperties2KHR',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetPhysicalDeviceSparseImageFormatProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceSparseImageFormatProperties2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceSparseImageFormatProperties2KHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.vkGetPhysicalDeviceSurfaceCapabilities2EXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.vkGetPhysicalDeviceSurfaceCapabilities2KHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkGetPhysicalDeviceSurfaceCapabilitiesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.vkGetPhysicalDeviceSurfaceFormats2KHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkGetPhysicalDeviceSurfaceFormatsKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkGetPhysicalDeviceSurfacePresentModesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkGetPhysicalDeviceSurfaceSupportKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_wayland_surface.vkGetPhysicalDeviceWaylandPresentationSupportKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_win32_surface.vkGetPhysicalDeviceWin32PresentationSupportKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_xcb_surface.vkGetPhysicalDeviceXcbPresentationSupportKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_xlib_surface.vkGetPhysicalDeviceXlibPresentationSupportKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display.vkGetRandROutputDisplayEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_direct_mode_display.vkReleaseDisplayEXT'-type VkPhysicalDevice = Ptr VkPhysicalDevice_T--- | Dummy data to tag the 'Ptr' with-data VkDevice_T--- | VkDevice - Opaque handle to a device object------ = See Also------ 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkAcquireNextImage2KHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkAcquireNextImageKHR',--- 'Graphics.Vulkan.Core10.CommandBuffer.vkAllocateCommandBuffers',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkAllocateDescriptorSets',--- 'Graphics.Vulkan.Core10.Memory.vkAllocateMemory',--- 'Graphics.Vulkan.Core10.MemoryManagement.vkBindBufferMemory',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.vkBindBufferMemory2',--- 'Graphics.Vulkan.Extensions.VK_KHR_bind_memory2.vkBindBufferMemory2KHR',--- 'Graphics.Vulkan.Core10.MemoryManagement.vkBindImageMemory',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.vkBindImageMemory2',--- 'Graphics.Vulkan.Extensions.VK_KHR_bind_memory2.vkBindImageMemory2KHR',--- 'Graphics.Vulkan.Core10.Buffer.vkCreateBuffer',--- 'Graphics.Vulkan.Core10.BufferView.vkCreateBufferView',--- 'Graphics.Vulkan.Core10.CommandPool.vkCreateCommandPool',--- 'Graphics.Vulkan.Core10.Pipeline.vkCreateComputePipelines',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkCreateDescriptorPool',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkCreateDescriptorSetLayout',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.vkCreateDescriptorUpdateTemplate',--- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkCreateDescriptorUpdateTemplateKHR',--- 'Graphics.Vulkan.Core10.Device.vkCreateDevice',--- 'Graphics.Vulkan.Core10.Event.vkCreateEvent',--- 'Graphics.Vulkan.Core10.Fence.vkCreateFence',--- 'Graphics.Vulkan.Core10.Pass.vkCreateFramebuffer',--- 'Graphics.Vulkan.Core10.Pipeline.vkCreateGraphicsPipelines',--- 'Graphics.Vulkan.Core10.Image.vkCreateImage',--- 'Graphics.Vulkan.Core10.ImageView.vkCreateImageView',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCreateIndirectCommandsLayoutNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCreateObjectTableNVX',--- 'Graphics.Vulkan.Core10.PipelineCache.vkCreatePipelineCache',--- 'Graphics.Vulkan.Core10.PipelineLayout.vkCreatePipelineLayout',--- 'Graphics.Vulkan.Core10.Query.vkCreateQueryPool',--- 'Graphics.Vulkan.Core10.Pass.vkCreateRenderPass',--- 'Graphics.Vulkan.Core10.Sampler.vkCreateSampler',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.vkCreateSamplerYcbcrConversion',--- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.vkCreateSamplerYcbcrConversionKHR',--- 'Graphics.Vulkan.Core10.QueueSemaphore.vkCreateSemaphore',--- 'Graphics.Vulkan.Core10.Shader.vkCreateShaderModule',--- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.vkCreateSharedSwapchainsKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkCreateSwapchainKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.vkCreateValidationCacheEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.vkDebugMarkerSetObjectNameEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.vkDebugMarkerSetObjectTagEXT',--- 'Graphics.Vulkan.Core10.Buffer.vkDestroyBuffer',--- 'Graphics.Vulkan.Core10.BufferView.vkDestroyBufferView',--- 'Graphics.Vulkan.Core10.CommandPool.vkDestroyCommandPool',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkDestroyDescriptorPool',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkDestroyDescriptorSetLayout',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.vkDestroyDescriptorUpdateTemplate',--- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkDestroyDescriptorUpdateTemplateKHR',--- 'Graphics.Vulkan.Core10.Device.vkDestroyDevice',--- 'Graphics.Vulkan.Core10.Event.vkDestroyEvent',--- 'Graphics.Vulkan.Core10.Fence.vkDestroyFence',--- 'Graphics.Vulkan.Core10.Pass.vkDestroyFramebuffer',--- 'Graphics.Vulkan.Core10.Image.vkDestroyImage',--- 'Graphics.Vulkan.Core10.ImageView.vkDestroyImageView',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkDestroyIndirectCommandsLayoutNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkDestroyObjectTableNVX',--- 'Graphics.Vulkan.Core10.Pipeline.vkDestroyPipeline',--- 'Graphics.Vulkan.Core10.PipelineCache.vkDestroyPipelineCache',--- 'Graphics.Vulkan.Core10.PipelineLayout.vkDestroyPipelineLayout',--- 'Graphics.Vulkan.Core10.Query.vkDestroyQueryPool',--- 'Graphics.Vulkan.Core10.Pass.vkDestroyRenderPass',--- 'Graphics.Vulkan.Core10.Sampler.vkDestroySampler',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.vkDestroySamplerYcbcrConversion',--- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.vkDestroySamplerYcbcrConversionKHR',--- 'Graphics.Vulkan.Core10.QueueSemaphore.vkDestroySemaphore',--- 'Graphics.Vulkan.Core10.Shader.vkDestroyShaderModule',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkDestroySwapchainKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.vkDestroyValidationCacheEXT',--- 'Graphics.Vulkan.Core10.Queue.vkDeviceWaitIdle',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkDisplayPowerControlEXT',--- 'Graphics.Vulkan.Core10.Memory.vkFlushMappedMemoryRanges',--- 'Graphics.Vulkan.Core10.CommandBuffer.vkFreeCommandBuffers',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkFreeDescriptorSets',--- 'Graphics.Vulkan.Core10.Memory.vkFreeMemory',--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.vkGetAndroidHardwareBufferPropertiesANDROID',--- 'Graphics.Vulkan.Core10.MemoryManagement.vkGetBufferMemoryRequirements',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetBufferMemoryRequirements2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.vkGetBufferMemoryRequirements2KHR',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance3.vkGetDescriptorSetLayoutSupport',--- 'Graphics.Vulkan.Extensions.VK_KHR_maintenance3.vkGetDescriptorSetLayoutSupportKHR',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.vkGetDeviceGroupPeerMemoryFeatures',--- 'Graphics.Vulkan.Extensions.VK_KHR_device_group.vkGetDeviceGroupPeerMemoryFeaturesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkGetDeviceGroupPresentCapabilitiesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkGetDeviceGroupSurfacePresentModesKHR',--- 'Graphics.Vulkan.Core10.Memory.vkGetDeviceMemoryCommitment',--- 'vkGetDeviceProcAddr', 'Graphics.Vulkan.Core10.Queue.vkGetDeviceQueue',--- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory.vkGetDeviceQueue2',--- 'Graphics.Vulkan.Core10.Event.vkGetEventStatus',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.vkGetFenceFdKHR',--- 'Graphics.Vulkan.Core10.Fence.vkGetFenceStatus',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.vkGetFenceWin32HandleKHR',--- 'Graphics.Vulkan.Core10.MemoryManagement.vkGetImageMemoryRequirements',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2KHR',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetImageSparseMemoryRequirements',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageSparseMemoryRequirements2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.vkGetImageSparseMemoryRequirements2KHR',--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout',--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.vkGetMemoryAndroidHardwareBufferANDROID',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.vkGetMemoryFdKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.vkGetMemoryFdPropertiesKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.vkGetMemoryHostPointerPropertiesEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.vkGetMemoryWin32HandleKHR',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.vkGetMemoryWin32HandleNV',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.vkGetMemoryWin32HandlePropertiesKHR',--- 'Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing.vkGetPastPresentationTimingGOOGLE',--- 'Graphics.Vulkan.Core10.PipelineCache.vkGetPipelineCacheData',--- 'Graphics.Vulkan.Core10.Query.vkGetQueryPoolResults',--- 'Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing.vkGetRefreshCycleDurationGOOGLE',--- 'Graphics.Vulkan.Core10.Pass.vkGetRenderAreaGranularity',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.vkGetSemaphoreFdKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.vkGetSemaphoreWin32HandleKHR',--- 'Graphics.Vulkan.Extensions.VK_AMD_shader_info.vkGetShaderInfoAMD',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkGetSwapchainCounterEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkGetSwapchainImagesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.vkGetSwapchainStatusKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.vkGetValidationCacheDataEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.vkImportFenceFdKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.vkImportFenceWin32HandleKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.vkImportSemaphoreFdKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.vkImportSemaphoreWin32HandleKHR',--- 'Graphics.Vulkan.Core10.Memory.vkInvalidateMappedMemoryRanges',--- 'Graphics.Vulkan.Core10.Memory.vkMapMemory',--- 'Graphics.Vulkan.Core10.PipelineCache.vkMergePipelineCaches',--- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.vkMergeValidationCachesEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkRegisterDeviceEventEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkRegisterDisplayEventEXT',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkRegisterObjectsNVX',--- 'Graphics.Vulkan.Core10.CommandPool.vkResetCommandPool',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkResetDescriptorPool',--- 'Graphics.Vulkan.Core10.Event.vkResetEvent',--- 'Graphics.Vulkan.Core10.Fence.vkResetFences',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkSetDebugUtilsObjectNameEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkSetDebugUtilsObjectTagEXT',--- 'Graphics.Vulkan.Core10.Event.vkSetEvent',--- 'Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata.vkSetHdrMetadataEXT',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance1.vkTrimCommandPool',--- 'Graphics.Vulkan.Extensions.VK_KHR_maintenance1.vkTrimCommandPoolKHR',--- 'Graphics.Vulkan.Core10.Memory.vkUnmapMemory',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkUnregisterObjectsNVX',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.vkUpdateDescriptorSetWithTemplate',--- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkUpdateDescriptorSetWithTemplateKHR',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkUpdateDescriptorSets',--- 'Graphics.Vulkan.Core10.Fence.vkWaitForFences'-type VkDevice = Ptr VkDevice_T--- | vkCreateInstance - Create a new Vulkan instance------ = Parameters------ - @pCreateInfo@ points to an instance of 'VkInstanceCreateInfo'--- controlling creation of the instance.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ - @pInstance@ points a @VkInstance@ handle in which the resulting--- instance is returned.------ = Description------ @vkCreateInstance@ verifies that the requested layers exist. If not,--- @vkCreateInstance@ will return @VK_ERROR_LAYER_NOT_PRESENT@. Next--- @vkCreateInstance@ verifies that the requested extensions are supported--- (e.g. in the implementation or in any enabled instance layer) and if any--- requested extension is not supported, @vkCreateInstance@ /must/ return--- @VK_ERROR_EXTENSION_NOT_PRESENT@. After verifying and enabling the--- instance layers and extensions the @VkInstance@ object is created and--- returned to the application. If a requested extension is only supported--- by a layer, both the layer and the extension need to be specified at--- @vkCreateInstance@ time for the creation to succeed.------ == Valid Usage------ - All [required--- extensions](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#extended-functionality-extensions-dependencies)--- for each extension in the--- 'VkInstanceCreateInfo'::@ppEnabledExtensionNames@ list /must/ also--- be present in that list.------ == Valid Usage (Implicit)------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkInstanceCreateInfo@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pInstance@ /must/ be a valid pointer to a @VkInstance@ handle------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_INITIALIZATION_FAILED@------ - @VK_ERROR_LAYER_NOT_PRESENT@------ - @VK_ERROR_EXTENSION_NOT_PRESENT@------ - @VK_ERROR_INCOMPATIBLE_DRIVER@------ = See Also------ 'VkAllocationCallbacks', 'VkInstance', 'VkInstanceCreateInfo'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateInstance" vkCreateInstance :: ("pCreateInfo" ::: Ptr VkInstanceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pInstance" ::: Ptr VkInstance) -> IO VkResult--- | vkDestroyInstance - Destroy an instance of Vulkan------ = Parameters------ - @instance@ is the handle of the instance to destroy.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ == Valid Usage------ - All child objects created using @instance@ /must/ have been--- destroyed prior to destroying @instance@------ - If @VkAllocationCallbacks@ were provided when @instance@ was--- created, a compatible set of callbacks /must/ be provided here------ - If no @VkAllocationCallbacks@ were provided when @instance@ was--- created, @pAllocator@ /must/ be @NULL@------ == Valid Usage (Implicit)------ - If @instance@ is not @NULL@, @instance@ /must/ be a valid--- @VkInstance@ handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ == Host Synchronization------ - Host access to @instance@ /must/ be externally synchronized------ = See Also------ 'VkAllocationCallbacks', 'VkInstance'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroyInstance" vkDestroyInstance :: ("instance" ::: VkInstance) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | vkEnumeratePhysicalDevices - Enumerates the physical devices accessible--- to a Vulkan instance------ = Parameters------ - @instance@ is a handle to a Vulkan instance previously created with--- 'vkCreateInstance'.------ - @pPhysicalDeviceCount@ is a pointer to an integer related to the--- number of physical devices available or queried, as described below.------ - @pPhysicalDevices@ is either @NULL@ or a pointer to an array of--- @VkPhysicalDevice@ handles.------ = Description------ If @pPhysicalDevices@ is @NULL@, then the number of physical devices--- available is returned in @pPhysicalDeviceCount@. Otherwise,--- @pPhysicalDeviceCount@ /must/ point to a variable set by the user to the--- number of elements in the @pPhysicalDevices@ array, and on return the--- variable is overwritten with the number of handles actually written to--- @pPhysicalDevices@. If @pPhysicalDeviceCount@ is less than the number of--- physical devices available, at most @pPhysicalDeviceCount@ structures--- will be written. If @pPhysicalDeviceCount@ is smaller than the number of--- physical devices available, @VK_INCOMPLETE@ will be returned instead of--- @VK_SUCCESS@, to indicate that not all the available physical devices--- were returned.------ == Valid Usage (Implicit)------ - @instance@ /must/ be a valid @VkInstance@ handle------ - @pPhysicalDeviceCount@ /must/ be a valid pointer to a @uint32_t@--- value------ - If the value referenced by @pPhysicalDeviceCount@ is not @0@, and--- @pPhysicalDevices@ is not @NULL@, @pPhysicalDevices@ /must/ be a--- valid pointer to an array of @pPhysicalDeviceCount@--- @VkPhysicalDevice@ handles------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ - @VK_INCOMPLETE@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_INITIALIZATION_FAILED@------ = See Also------ 'VkInstance', 'VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkEnumeratePhysicalDevices" vkEnumeratePhysicalDevices :: ("instance" ::: VkInstance) -> ("pPhysicalDeviceCount" ::: Ptr Word32) -> ("pPhysicalDevices" ::: Ptr VkPhysicalDevice) -> IO VkResult--- | vkGetDeviceProcAddr - Return a function pointer for a command------ = Parameters------ The table below defines the various use cases for @vkGetDeviceProcAddr@--- and expected return value for each case.------ = Description------ The returned function pointer is of type 'PFN_vkVoidFunction', and must--- be cast to the type of the command being queried. The function pointer--- /must/ only be called with a dispatchable object (the first parameter)--- that is @device@ or a child of @device@.------ +-----------------------+-----------------------+-----------------------+--- | @device@ | @pName@ | return value |--- +=======================+=======================+=======================+--- | @NULL@ | * | undefined |--- +-----------------------+-----------------------+-----------------------+--- | invalid device | * | undefined |--- +-----------------------+-----------------------+-----------------------+--- | device | @NULL@ | undefined |--- +-----------------------+-----------------------+-----------------------+--- | device | core device-level | fp |--- | | Vulkan command | |--- +-----------------------+-----------------------+-----------------------+--- | device | enabled device | fp |--- | | extension commands | |--- +-----------------------+-----------------------+-----------------------+--- | device | * (any @pName@ not | @NULL@ |--- | | covered above) | |--- +-----------------------+-----------------------+-----------------------+------ vkGetDeviceProcAddr behavior------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pName@ /must/ be a null-terminated UTF-8 string------ = See Also------ 'PFN_vkVoidFunction', 'VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetDeviceProcAddr" vkGetDeviceProcAddr :: ("device" ::: VkDevice) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction--- | vkGetInstanceProcAddr - Return a function pointer for a command------ = Parameters------ - @instance@ is the instance that the function pointer will be--- compatible with, or @NULL@ for commands not dependent on any--- instance.------ - @pName@ is the name of the command to obtain.------ = Description------ @vkGetInstanceProcAddr@ itself is obtained in a platform- and loader---- specific manner. Typically, the loader library will export this command--- as a function symbol, so applications /can/ link against the loader--- library, or load it dynamically and look up the symbol using--- platform-specific APIs.------ The table below defines the various use cases for--- @vkGetInstanceProcAddr@ and expected return value (“fp” is “function--- pointer”) for each case.------ The returned function pointer is of type 'PFN_vkVoidFunction', and must--- be cast to the type of the command being queried.------ +-----------------------+------------------------------------------------------------------------------------+-----------------------+--- | @instance@ | @pName@ | return value |--- +=======================+====================================================================================+=======================+--- | * | @NULL@ | undefined |--- +-----------------------+------------------------------------------------------------------------------------+-----------------------+--- | invalid instance | * | undefined |--- +-----------------------+------------------------------------------------------------------------------------+-----------------------+--- | @NULL@ | 'Graphics.Vulkan.Core10.ExtensionDiscovery.vkEnumerateInstanceExtensionProperties' | fp |--- +-----------------------+------------------------------------------------------------------------------------+-----------------------+--- | @NULL@ | 'Graphics.Vulkan.Core10.LayerDiscovery.vkEnumerateInstanceLayerProperties' | fp |--- +-----------------------+------------------------------------------------------------------------------------+-----------------------+--- | @NULL@ | 'vkCreateInstance' | fp |--- +-----------------------+------------------------------------------------------------------------------------+-----------------------+--- | @NULL@ | * (any @pName@ not covered above) | @NULL@ |--- +-----------------------+------------------------------------------------------------------------------------+-----------------------+--- | instance | core Vulkan command | fp1 |--- +-----------------------+------------------------------------------------------------------------------------+-----------------------+--- | instance | enabled instance extension commands for @instance@ | fp1 |--- +-----------------------+------------------------------------------------------------------------------------+-----------------------+--- | instance | available device extension2 commands for @instance@ | fp1 |--- +-----------------------+------------------------------------------------------------------------------------+-----------------------+--- | instance | * (any @pName@ not covered above) | @NULL@ |--- +-----------------------+------------------------------------------------------------------------------------+-----------------------+------ vkGetInstanceProcAddr behavior------ [1]--- The returned function pointer /must/ only be called with a--- dispatchable object (the first parameter) that is @instance@ or a--- child of @instance@, e.g. 'VkInstance', 'VkPhysicalDevice',--- 'VkDevice', 'Graphics.Vulkan.Core10.Queue.VkQueue', or--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'.------ [2]--- An “available device extension” is a device extension supported by--- any physical device enumerated by @instance@.------ == Valid Usage (Implicit)------ - If @instance@ is not @NULL@, @instance@ /must/ be a valid--- @VkInstance@ handle------ - @pName@ /must/ be a null-terminated UTF-8 string------ = See Also------ 'PFN_vkVoidFunction', 'VkInstance'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetInstanceProcAddr" vkGetInstanceProcAddr :: ("instance" ::: VkInstance) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction--- | vkGetPhysicalDeviceProperties - Returns properties of a physical device------ = Parameters------ - @physicalDevice@ is the handle to the physical device whose--- properties will be queried.------ - @pProperties@ points to an instance of the--- 'VkPhysicalDeviceProperties' structure, that will be filled with--- returned information.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pProperties@ /must/ be a valid pointer to a--- @VkPhysicalDeviceProperties@ structure------ = See Also------ 'VkPhysicalDevice', 'VkPhysicalDeviceProperties'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceProperties" vkGetPhysicalDeviceProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties) -> IO ()--- | vkGetPhysicalDeviceQueueFamilyProperties - Reports properties of the--- queues of the specified physical device------ = Parameters------ - @physicalDevice@ is the handle to the physical device whose--- properties will be queried.------ - @pQueueFamilyPropertyCount@ is a pointer to an integer related to--- the number of queue families available or queried, as described--- below.------ - @pQueueFamilyProperties@ is either @NULL@ or a pointer to an array--- of 'VkQueueFamilyProperties' structures.------ = Description------ If @pQueueFamilyProperties@ is @NULL@, then the number of queue families--- available is returned in @pQueueFamilyPropertyCount@. Otherwise,--- @pQueueFamilyPropertyCount@ /must/ point to a variable set by the user--- to the number of elements in the @pQueueFamilyProperties@ array, and on--- return the variable is overwritten with the number of structures--- actually written to @pQueueFamilyProperties@. If--- @pQueueFamilyPropertyCount@ is less than the number of queue families--- available, at most @pQueueFamilyPropertyCount@ structures will be--- written.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pQueueFamilyPropertyCount@ /must/ be a valid pointer to a--- @uint32_t@ value------ - If the value referenced by @pQueueFamilyPropertyCount@ is not @0@,--- and @pQueueFamilyProperties@ is not @NULL@, @pQueueFamilyProperties@--- /must/ be a valid pointer to an array of @pQueueFamilyPropertyCount@--- @VkQueueFamilyProperties@ structures------ = See Also------ 'VkPhysicalDevice', 'VkQueueFamilyProperties'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceQueueFamilyProperties" vkGetPhysicalDeviceQueueFamilyProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties) -> IO ()--- | vkGetPhysicalDeviceMemoryProperties - Reports memory information for the--- specified physical device------ = Parameters------ - @physicalDevice@ is the handle to the device to query.------ - @pMemoryProperties@ points to an instance of--- @VkPhysicalDeviceMemoryProperties@ structure in which the properties--- are returned.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pMemoryProperties@ /must/ be a valid pointer to a--- @VkPhysicalDeviceMemoryProperties@ structure------ = See Also------ 'VkPhysicalDevice', 'VkPhysicalDeviceMemoryProperties'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceMemoryProperties" vkGetPhysicalDeviceMemoryProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties) -> IO ()--- | vkGetPhysicalDeviceFeatures - Reports capabilities of a physical device------ = Parameters------ - @physicalDevice@ is the physical device from which to query the--- supported features.------ - @pFeatures@ is a pointer to a 'VkPhysicalDeviceFeatures' structure--- in which the physical device features are returned. For each--- feature, a value of @VK_TRUE@ specifies that the feature is--- supported on this physical device, and @VK_FALSE@ specifies that the--- feature is not supported.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pFeatures@ /must/ be a valid pointer to a--- @VkPhysicalDeviceFeatures@ structure------ = See Also------ 'VkPhysicalDevice', 'VkPhysicalDeviceFeatures'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceFeatures" vkGetPhysicalDeviceFeatures :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures) -> IO ()--- | vkGetPhysicalDeviceFormatProperties - Lists physical device’s format--- capabilities------ = Parameters------ - @physicalDevice@ is the physical device from which to query the--- format properties.------ - @format@ is the format whose properties are queried.------ - @pFormatProperties@ is a pointer to a 'VkFormatProperties' structure--- in which physical device properties for @format@ are returned.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'--- value------ - @pFormatProperties@ /must/ be a valid pointer to a--- @VkFormatProperties@ structure------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkFormat', 'VkFormatProperties',--- 'VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceFormatProperties" vkGetPhysicalDeviceFormatProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties) -> IO ()--- | vkGetPhysicalDeviceImageFormatProperties - Lists physical device’s image--- format capabilities------ = Parameters------ - @physicalDevice@ is the physical device from which to query the--- image capabilities.------ - @format@ is a 'Graphics.Vulkan.Core10.Core.VkFormat' value--- specifying the image format, corresponding to--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@format@.------ - @type@ is a 'VkImageType' value specifying the image type,--- corresponding to--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@imageType@.------ - @tiling@ is a 'VkImageTiling' value specifying the image tiling,--- corresponding to--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@tiling@.------ - @usage@ is a bitmask of 'VkImageUsageFlagBits' specifying the--- intended usage of the image, corresponding to--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@usage@.------ - @flags@ is a bitmask of 'VkImageCreateFlagBits' specifying--- additional parameters of the image, corresponding to--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@flags@.------ - @pImageFormatProperties@ points to an instance of the--- 'VkImageFormatProperties' structure in which capabilities are--- returned.------ = Description------ The @format@, @type@, @tiling@, @usage@, and @flags@ parameters--- correspond to parameters that would be consumed by--- 'Graphics.Vulkan.Core10.Image.vkCreateImage' (as members of--- @VkImageCreateInfo@).------ If @format@ is not a supported image format, or if the combination of--- @format@, @type@, @tiling@, @usage@, and @flags@ is not supported for--- images, then @vkGetPhysicalDeviceImageFormatProperties@ returns--- @VK_ERROR_FORMAT_NOT_SUPPORTED@.------ The limitations on an image format that are reported by--- @vkGetPhysicalDeviceImageFormatProperties@ have the following property:--- if @usage1@ and @usage2@ of type 'VkImageUsageFlags' are such that the--- bits set in @usage1@ are a subset of the bits set in @usage2@, and--- @flags1@ and @flags2@ of type 'VkImageCreateFlags' are such that the--- bits set in @flags1@ are a subset of the bits set in @flags2@, then the--- limitations for @usage1@ and @flags1@ /must/ be no more strict than the--- limitations for @usage2@ and @flags2@, for all values of @format@,--- @type@, and @tiling@.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'--- value------ - @type@ /must/ be a valid 'VkImageType' value------ - @tiling@ /must/ be a valid 'VkImageTiling' value------ - @usage@ /must/ be a valid combination of 'VkImageUsageFlagBits'--- values------ - @usage@ /must/ not be @0@------ - @flags@ /must/ be a valid combination of 'VkImageCreateFlagBits'--- values------ - @pImageFormatProperties@ /must/ be a valid pointer to a--- @VkImageFormatProperties@ structure------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_FORMAT_NOT_SUPPORTED@------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkFormat', 'VkImageCreateFlags',--- 'VkImageFormatProperties', 'VkImageTiling', 'VkImageType',--- 'VkImageUsageFlags', 'VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceImageFormatProperties" vkGetPhysicalDeviceImageFormatProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties) -> IO VkResult--- | VkExtent3D - Structure specifying a three-dimensional extent------ = See Also------ 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkBufferImageCopy',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkImageCopy',--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo',--- 'VkImageFormatProperties',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkImageResolve',--- 'VkQueueFamilyProperties',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseImageFormatProperties',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseImageMemoryBind'-data VkExtent3D = VkExtent3D- { -- | @width@ is the width of the extent.- vkWidth :: Word32- , -- | @height@ is the height of the extent.- vkHeight :: Word32- , -- | @depth@ is the depth of the extent.- vkDepth :: Word32- }- deriving (Eq, Show)--instance Storable VkExtent3D where- sizeOf ~_ = 12- alignment ~_ = 4- peek ptr = VkExtent3D <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkWidth (poked :: VkExtent3D))- *> poke (ptr `plusPtr` 4) (vkHeight (poked :: VkExtent3D))- *> poke (ptr `plusPtr` 8) (vkDepth (poked :: VkExtent3D))--- | VkPhysicalDeviceProperties - Structure specifying physical device--- properties------ = Description------ The @vendorID@ and @deviceID@ fields are provided to allow applications--- to adapt to device characteristics that are not adequately exposed by--- other Vulkan queries.------ __Note__------ These /may/ include performance profiles, hardware errata, or other--- characteristics.------ The /vendor/ identified by @vendorID@ is the entity responsible for the--- most salient characteristics of the underlying implementation of the--- 'VkPhysicalDevice' being queried.------ __Note__------ For example, in the case of a discrete GPU implementation, this /should/--- be the GPU chipset vendor. In the case of a hardware accelerator--- integrated into a system-on-chip (SoC), this /should/ be the supplier of--- the silicon IP used to create the accelerator.------ If the vendor has a [PCI vendor--- ID](https://pcisig.com/membership/member-companies), the low 16 bits of--- @vendorID@ /must/ contain that PCI vendor ID, and the remaining bits--- /must/ be set to zero. Otherwise, the value returned /must/ be a valid--- Khronos vendor ID, obtained as described in the [Vulkan Documentation--- and--- Extensions](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vulkan-styleguide)--- document in the section “Registering a Vendor ID with Khronos”. Khronos--- vendor IDs are allocated starting at 0x10000, to distinguish them from--- the PCI vendor ID namespace.------ The vendor is also responsible for the value returned in @deviceID@. If--- the implementation is driven primarily by a [PCI--- device](https://pcisig.com/) with a [PCI device--- ID](https://pcisig.com/), the low 16 bits of @deviceID@ /must/ contain--- that PCI device ID, and the remaining bits /must/ be set to zero.--- Otherwise, the choice of what values to return /may/ be dictated by--- operating system or platform policies - but /should/ uniquely identify--- both the device version and any major configuration options (for--- example, core count in the case of multicore devices).------ __Note__------ The same device ID /should/ be used for all physical implementations of--- that device version and configuration. For example, all uses of a--- specific silicon IP GPU version and configuration /should/ use the same--- device ID, even if those uses occur in different SoCs.------ = See Also------ 'VkPhysicalDeviceLimits',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2',--- 'VkPhysicalDeviceSparseProperties', 'VkPhysicalDeviceType',--- 'vkGetPhysicalDeviceProperties'-data VkPhysicalDeviceProperties = VkPhysicalDeviceProperties- { -- | @apiVersion@ is the version of Vulkan supported by the device, encoded- -- as described in the [API Version Numbers and- -- Semantics](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-versionnum)- -- section.- vkApiVersion :: Word32- , -- | @driverVersion@ is the vendor-specified version of the driver.- vkDriverVersion :: Word32- , -- | @vendorID@ is a unique identifier for the /vendor/ (see below) of the- -- physical device.- vkVendorID :: Word32- , -- | @deviceID@ is a unique identifier for the physical device among devices- -- available from the vendor.- vkDeviceID :: Word32- , -- | @deviceType@ is a 'VkPhysicalDeviceType' specifying the type of device.- vkDeviceType :: VkPhysicalDeviceType- , -- | @deviceName@ is a null-terminated UTF-8 string containing the name of- -- the device.- vkDeviceName :: Vector VK_MAX_PHYSICAL_DEVICE_NAME_SIZE CChar- , -- | @pipelineCacheUUID@ is an array of size @VK_UUID_SIZE@, containing 8-bit- -- values that represent a universally unique identifier for the device.- vkPipelineCacheUUID :: Vector VK_UUID_SIZE Word8- , -- | @limits@ is the 'VkPhysicalDeviceLimits' structure which specifies- -- device-specific limits of the physical device. See- -- [Limits](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits)- -- for details.- vkLimits :: VkPhysicalDeviceLimits- , -- | @sparseProperties@ is the 'VkPhysicalDeviceSparseProperties' structure- -- which specifies various sparse related properties of the physical- -- device. See [Sparse- -- Properties](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#sparsememory-physicalprops)- -- for details.- vkSparseProperties :: VkPhysicalDeviceSparseProperties- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceProperties where- sizeOf ~_ = 824- alignment ~_ = 8- peek ptr = VkPhysicalDeviceProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 276)- <*> peek (ptr `plusPtr` 296)- <*> peek (ptr `plusPtr` 800)- poke ptr poked = poke (ptr `plusPtr` 0) (vkApiVersion (poked :: VkPhysicalDeviceProperties))- *> poke (ptr `plusPtr` 4) (vkDriverVersion (poked :: VkPhysicalDeviceProperties))- *> poke (ptr `plusPtr` 8) (vkVendorID (poked :: VkPhysicalDeviceProperties))- *> poke (ptr `plusPtr` 12) (vkDeviceID (poked :: VkPhysicalDeviceProperties))- *> poke (ptr `plusPtr` 16) (vkDeviceType (poked :: VkPhysicalDeviceProperties))- *> poke (ptr `plusPtr` 20) (vkDeviceName (poked :: VkPhysicalDeviceProperties))- *> poke (ptr `plusPtr` 276) (vkPipelineCacheUUID (poked :: VkPhysicalDeviceProperties))- *> poke (ptr `plusPtr` 296) (vkLimits (poked :: VkPhysicalDeviceProperties))- *> poke (ptr `plusPtr` 800) (vkSparseProperties (poked :: VkPhysicalDeviceProperties))--- | VkApplicationInfo - Structure specifying application info------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_APPLICATION_INFO@------ - @pNext@ /must/ be @NULL@------ - If @pApplicationName@ is not @NULL@, @pApplicationName@ /must/ be a--- null-terminated UTF-8 string------ - If @pEngineName@ is not @NULL@, @pEngineName@ /must/ be a--- null-terminated UTF-8 string------ = See Also------ 'VkInstanceCreateInfo', 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkApplicationInfo = VkApplicationInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @pApplicationName@ is @NULL@ or is a pointer to a null-terminated UTF-8- -- string containing the name of the application.- vkPApplicationName :: Ptr CChar- , -- | @applicationVersion@ is an unsigned integer variable containing the- -- developer-supplied version number of the application.- vkApplicationVersion :: Word32- , -- | @pEngineName@ is @NULL@ or is a pointer to a null-terminated UTF-8- -- string containing the name of the engine (if any) used to create the- -- application.- vkPEngineName :: Ptr CChar- , -- | @engineVersion@ is an unsigned integer variable containing the- -- developer-supplied version number of the engine used to create the- -- application.- vkEngineVersion :: Word32- , -- | @apiVersion@ is the version of the Vulkan API against which the- -- application expects to run, encoded as described in the [API Version- -- Numbers and- -- Semantics](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-versionnum)- -- section. If @apiVersion@ is 0 the implementation /must/ ignore it,- -- otherwise if the implementation does not support the requested- -- @apiVersion@, or an effective substitute for @apiVersion@, it /must/- -- return @VK_ERROR_INCOMPATIBLE_DRIVER@. The patch version number- -- specified in @apiVersion@ is ignored when creating an instance object.- -- Only the major and minor versions of the instance /must/ match those- -- requested in @apiVersion@.- vkApiVersion :: Word32- }- deriving (Eq, Show)--instance Storable VkApplicationInfo where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkApplicationInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 44)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkApplicationInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkApplicationInfo))- *> poke (ptr `plusPtr` 16) (vkPApplicationName (poked :: VkApplicationInfo))- *> poke (ptr `plusPtr` 24) (vkApplicationVersion (poked :: VkApplicationInfo))- *> poke (ptr `plusPtr` 32) (vkPEngineName (poked :: VkApplicationInfo))- *> poke (ptr `plusPtr` 40) (vkEngineVersion (poked :: VkApplicationInfo))- *> poke (ptr `plusPtr` 44) (vkApiVersion (poked :: VkApplicationInfo))--- | VkAllocationCallbacks - Structure containing callback function pointers--- for memory allocation------ == Valid Usage------ - @pfnAllocation@ /must/ be a valid pointer to a valid user-defined--- 'PFN_vkAllocationFunction'------ - @pfnReallocation@ /must/ be a valid pointer to a valid user-defined--- 'PFN_vkReallocationFunction'------ - @pfnFree@ /must/ be a valid pointer to a valid user-defined--- 'PFN_vkFreeFunction'------ - If either of @pfnInternalAllocation@ or @pfnInternalFree@ is not--- @NULL@, both /must/ be valid callbacks------ = See Also------ 'PFN_vkAllocationFunction', 'PFN_vkFreeFunction',--- 'PFN_vkInternalAllocationNotification',--- 'PFN_vkInternalFreeNotification', 'PFN_vkReallocationFunction',--- 'Graphics.Vulkan.Core10.Memory.vkAllocateMemory',--- 'Graphics.Vulkan.Extensions.VK_KHR_android_surface.vkCreateAndroidSurfaceKHR',--- 'Graphics.Vulkan.Core10.Buffer.vkCreateBuffer',--- 'Graphics.Vulkan.Core10.BufferView.vkCreateBufferView',--- 'Graphics.Vulkan.Core10.CommandPool.vkCreateCommandPool',--- 'Graphics.Vulkan.Core10.Pipeline.vkCreateComputePipelines',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.vkCreateDebugReportCallbackEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkCreateDebugUtilsMessengerEXT',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkCreateDescriptorPool',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkCreateDescriptorSetLayout',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.vkCreateDescriptorUpdateTemplate',--- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkCreateDescriptorUpdateTemplateKHR',--- 'Graphics.Vulkan.Core10.Device.vkCreateDevice',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkCreateDisplayModeKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkCreateDisplayPlaneSurfaceKHR',--- 'Graphics.Vulkan.Core10.Event.vkCreateEvent',--- 'Graphics.Vulkan.Core10.Fence.vkCreateFence',--- 'Graphics.Vulkan.Core10.Pass.vkCreateFramebuffer',--- 'Graphics.Vulkan.Core10.Pipeline.vkCreateGraphicsPipelines',--- 'Graphics.Vulkan.Extensions.VK_MVK_ios_surface.vkCreateIOSSurfaceMVK',--- 'Graphics.Vulkan.Core10.Image.vkCreateImage',--- 'Graphics.Vulkan.Core10.ImageView.vkCreateImageView',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCreateIndirectCommandsLayoutNVX',--- 'vkCreateInstance',--- 'Graphics.Vulkan.Extensions.VK_MVK_macos_surface.vkCreateMacOSSurfaceMVK',--- 'Graphics.Vulkan.Extensions.VK_KHR_mir_surface.vkCreateMirSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCreateObjectTableNVX',--- 'Graphics.Vulkan.Core10.PipelineCache.vkCreatePipelineCache',--- 'Graphics.Vulkan.Core10.PipelineLayout.vkCreatePipelineLayout',--- 'Graphics.Vulkan.Core10.Query.vkCreateQueryPool',--- 'Graphics.Vulkan.Core10.Pass.vkCreateRenderPass',--- 'Graphics.Vulkan.Core10.Sampler.vkCreateSampler',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.vkCreateSamplerYcbcrConversion',--- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.vkCreateSamplerYcbcrConversionKHR',--- 'Graphics.Vulkan.Core10.QueueSemaphore.vkCreateSemaphore',--- 'Graphics.Vulkan.Core10.Shader.vkCreateShaderModule',--- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.vkCreateSharedSwapchainsKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkCreateSwapchainKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.vkCreateValidationCacheEXT',--- 'Graphics.Vulkan.Extensions.VK_NN_vi_surface.vkCreateViSurfaceNN',--- 'Graphics.Vulkan.Extensions.VK_KHR_wayland_surface.vkCreateWaylandSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_win32_surface.vkCreateWin32SurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_xcb_surface.vkCreateXcbSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_xlib_surface.vkCreateXlibSurfaceKHR',--- 'Graphics.Vulkan.Core10.Buffer.vkDestroyBuffer',--- 'Graphics.Vulkan.Core10.BufferView.vkDestroyBufferView',--- 'Graphics.Vulkan.Core10.CommandPool.vkDestroyCommandPool',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.vkDestroyDebugReportCallbackEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkDestroyDebugUtilsMessengerEXT',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkDestroyDescriptorPool',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkDestroyDescriptorSetLayout',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.vkDestroyDescriptorUpdateTemplate',--- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkDestroyDescriptorUpdateTemplateKHR',--- 'Graphics.Vulkan.Core10.Device.vkDestroyDevice',--- 'Graphics.Vulkan.Core10.Event.vkDestroyEvent',--- 'Graphics.Vulkan.Core10.Fence.vkDestroyFence',--- 'Graphics.Vulkan.Core10.Pass.vkDestroyFramebuffer',--- 'Graphics.Vulkan.Core10.Image.vkDestroyImage',--- 'Graphics.Vulkan.Core10.ImageView.vkDestroyImageView',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkDestroyIndirectCommandsLayoutNVX',--- 'vkDestroyInstance',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkDestroyObjectTableNVX',--- 'Graphics.Vulkan.Core10.Pipeline.vkDestroyPipeline',--- 'Graphics.Vulkan.Core10.PipelineCache.vkDestroyPipelineCache',--- 'Graphics.Vulkan.Core10.PipelineLayout.vkDestroyPipelineLayout',--- 'Graphics.Vulkan.Core10.Query.vkDestroyQueryPool',--- 'Graphics.Vulkan.Core10.Pass.vkDestroyRenderPass',--- 'Graphics.Vulkan.Core10.Sampler.vkDestroySampler',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.vkDestroySamplerYcbcrConversion',--- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.vkDestroySamplerYcbcrConversionKHR',--- 'Graphics.Vulkan.Core10.QueueSemaphore.vkDestroySemaphore',--- 'Graphics.Vulkan.Core10.Shader.vkDestroyShaderModule',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkDestroySurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkDestroySwapchainKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.vkDestroyValidationCacheEXT',--- 'Graphics.Vulkan.Core10.Memory.vkFreeMemory',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkRegisterDeviceEventEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkRegisterDisplayEventEXT'-data VkAllocationCallbacks = VkAllocationCallbacks- { -- | @pUserData@ is a value to be interpreted by the implementation of the- -- callbacks. When any of the callbacks in @VkAllocationCallbacks@ are- -- called, the Vulkan implementation will pass this value as the first- -- parameter to the callback. This value /can/ vary each time an allocator- -- is passed into a command, even when the same object takes an allocator- -- in multiple commands.- vkPUserData :: Ptr ()- , -- | @pfnAllocation@ is a pointer to an application-defined memory allocation- -- function of type 'PFN_vkAllocationFunction'.- vkPfnAllocation :: PFN_vkAllocationFunction- , -- | @pfnReallocation@ is a pointer to an application-defined memory- -- reallocation function of type 'PFN_vkReallocationFunction'.- vkPfnReallocation :: PFN_vkReallocationFunction- , -- | @pfnFree@ is a pointer to an application-defined memory free function of- -- type 'PFN_vkFreeFunction'.- vkPfnFree :: PFN_vkFreeFunction- , -- | @pfnInternalAllocation@ is a pointer to an application-defined function- -- that is called by the implementation when the implementation makes- -- internal allocations, and it is of type- -- 'PFN_vkInternalAllocationNotification'.- vkPfnInternalAllocation :: PFN_vkInternalAllocationNotification- , -- | @pfnInternalFree@ is a pointer to an application-defined function that- -- is called by the implementation when the implementation frees internal- -- allocations, and it is of type 'PFN_vkInternalFreeNotification'.- vkPfnInternalFree :: PFN_vkInternalFreeNotification- }- deriving (Eq, Show)--instance Storable VkAllocationCallbacks where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkAllocationCallbacks <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- poke ptr poked = poke (ptr `plusPtr` 0) (vkPUserData (poked :: VkAllocationCallbacks))- *> poke (ptr `plusPtr` 8) (vkPfnAllocation (poked :: VkAllocationCallbacks))- *> poke (ptr `plusPtr` 16) (vkPfnReallocation (poked :: VkAllocationCallbacks))- *> poke (ptr `plusPtr` 24) (vkPfnFree (poked :: VkAllocationCallbacks))- *> poke (ptr `plusPtr` 32) (vkPfnInternalAllocation (poked :: VkAllocationCallbacks))- *> poke (ptr `plusPtr` 40) (vkPfnInternalFree (poked :: VkAllocationCallbacks))--- | VkInstanceCreateInfo - Structure specifying parameters of a newly--- created instance------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.VkDebugReportCallbackCreateInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.VkDebugUtilsMessengerCreateInfoEXT',--- or--- 'Graphics.Vulkan.Extensions.VK_EXT_validation_flags.VkValidationFlagsEXT'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ - @flags@ /must/ be @0@------ - If @pApplicationInfo@ is not @NULL@, @pApplicationInfo@ /must/ be a--- valid pointer to a valid @VkApplicationInfo@ structure------ - If @enabledLayerCount@ is not @0@, @ppEnabledLayerNames@ /must/ be a--- valid pointer to an array of @enabledLayerCount@ null-terminated--- UTF-8 strings------ - If @enabledExtensionCount@ is not @0@, @ppEnabledExtensionNames@--- /must/ be a valid pointer to an array of @enabledExtensionCount@--- null-terminated UTF-8 strings------ = See Also------ 'VkApplicationInfo', 'VkInstanceCreateFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateInstance'-data VkInstanceCreateInfo = VkInstanceCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkInstanceCreateFlags- , -- | @pApplicationInfo@ is @NULL@ or a pointer to an instance of- -- @VkApplicationInfo@. If not @NULL@, this information helps- -- implementations recognize behavior inherent to classes of applications.- -- 'VkApplicationInfo' is defined in detail below.- vkPApplicationInfo :: Ptr VkApplicationInfo- , -- | @enabledLayerCount@ is the number of global layers to enable.- vkEnabledLayerCount :: Word32- , -- | @ppEnabledLayerNames@ is a pointer to an array of @enabledLayerCount@- -- null-terminated UTF-8 strings containing the names of layers to enable- -- for the created instance. See the- -- [Layers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#extended-functionality-layers)- -- section for further details.- vkPPEnabledLayerNames :: Ptr (Ptr CChar)- , -- | @enabledExtensionCount@ is the number of global extensions to enable.- vkEnabledExtensionCount :: Word32- , -- | @ppEnabledExtensionNames@ is a pointer to an array of- -- @enabledExtensionCount@ null-terminated UTF-8 strings containing the- -- names of extensions to enable.- vkPPEnabledExtensionNames :: Ptr (Ptr CChar)- }- deriving (Eq, Show)--instance Storable VkInstanceCreateInfo where- sizeOf ~_ = 64- alignment ~_ = 8- peek ptr = VkInstanceCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkInstanceCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkInstanceCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkInstanceCreateInfo))- *> poke (ptr `plusPtr` 24) (vkPApplicationInfo (poked :: VkInstanceCreateInfo))- *> poke (ptr `plusPtr` 32) (vkEnabledLayerCount (poked :: VkInstanceCreateInfo))- *> poke (ptr `plusPtr` 40) (vkPPEnabledLayerNames (poked :: VkInstanceCreateInfo))- *> poke (ptr `plusPtr` 48) (vkEnabledExtensionCount (poked :: VkInstanceCreateInfo))- *> poke (ptr `plusPtr` 56) (vkPPEnabledExtensionNames (poked :: VkInstanceCreateInfo))--- | VkQueueFamilyProperties - Structure providing information about a queue--- family------ = Description------ The value returned in @minImageTransferGranularity@ has a unit of--- compressed texel blocks for images having a block-compressed format, and--- a unit of texels otherwise.------ Possible values of @minImageTransferGranularity@ are:------ - (0,0,0) which indicates that only whole mip levels /must/ be--- transferred using the image transfer operations on the corresponding--- queues. In this case, the following restrictions apply to all offset--- and extent parameters of image transfer operations:------ - The @x@, @y@, and @z@ members of a--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D'--- parameter /must/ always be zero.------ - The @width@, @height@, and @depth@ members of a 'VkExtent3D'--- parameter /must/ always match the width, height, and depth of--- the image subresource corresponding to the parameter,--- respectively.------ - (Ax, Ay, Az) where Ax, Ay, and Az are all integer powers of two. In--- this case the following restrictions apply to all image transfer--- operations:------ - @x@, @y@, and @z@ of a--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkOffset3D'--- parameter /must/ be integer multiples of Ax, Ay, and Az,--- respectively.------ - @width@ of a 'VkExtent3D' parameter /must/ be an integer--- multiple of Ax, or else @x@ + @width@ /must/ equal the width of--- the image subresource corresponding to the parameter.------ - @height@ of a 'VkExtent3D' parameter /must/ be an integer--- multiple of Ay, or else @y@ + @height@ /must/ equal the height--- of the image subresource corresponding to the parameter.------ - @depth@ of a 'VkExtent3D' parameter /must/ be an integer--- multiple of Az, or else @z@ + @depth@ /must/ equal the depth of--- the image subresource corresponding to the parameter.------ - If the format of the image corresponding to the parameters is--- one of the block-compressed formats then for the purposes of the--- above calculations the granularity /must/ be scaled up by the--- compressed texel block dimensions.------ Queues supporting graphics and\/or compute operations /must/ report--- (1,1,1) in @minImageTransferGranularity@, meaning that there are no--- additional restrictions on the granularity of image transfer operations--- for these queues. Other queues supporting image transfer operations are--- only /required/ to support whole mip level transfers, thus--- @minImageTransferGranularity@ for queues belonging to such queue--- families /may/ be (0,0,0).------ The [Device--- Memory](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-device)--- section describes memory properties queried from the physical device.------ For physical device feature queries see the--- [Features](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features)--- chapter.------ = See Also------ 'VkExtent3D',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkQueueFamilyProperties2',--- 'VkQueueFlags', 'vkGetPhysicalDeviceQueueFamilyProperties'-data VkQueueFamilyProperties = VkQueueFamilyProperties- { -- | @queueFlags@ is a bitmask of 'VkQueueFlagBits' indicating capabilities- -- of the queues in this queue family.- vkQueueFlags :: VkQueueFlags- , -- | @queueCount@ is the unsigned integer count of queues in this queue- -- family.- vkQueueCount :: Word32- , -- | @timestampValidBits@ is the unsigned integer count of meaningful bits in- -- the timestamps written via @vkCmdWriteTimestamp@. The valid range for- -- the count is 36..64 bits, or a value of 0, indicating no support for- -- timestamps. Bits outside the valid range are guaranteed to be zeros.- vkTimestampValidBits :: Word32- , -- | @minImageTransferGranularity@ is the minimum granularity supported for- -- image transfer operations on the queues in this queue family.- vkMinImageTransferGranularity :: VkExtent3D- }- deriving (Eq, Show)--instance Storable VkQueueFamilyProperties where- sizeOf ~_ = 24- alignment ~_ = 4- peek ptr = VkQueueFamilyProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- poke ptr poked = poke (ptr `plusPtr` 0) (vkQueueFlags (poked :: VkQueueFamilyProperties))- *> poke (ptr `plusPtr` 4) (vkQueueCount (poked :: VkQueueFamilyProperties))- *> poke (ptr `plusPtr` 8) (vkTimestampValidBits (poked :: VkQueueFamilyProperties))- *> poke (ptr `plusPtr` 12) (vkMinImageTransferGranularity (poked :: VkQueueFamilyProperties))--- | VkPhysicalDeviceMemoryProperties - Structure specifying physical device--- memory properties------ = Description------ The @VkPhysicalDeviceMemoryProperties@ structure describes a number of--- /memory heaps/ as well as a number of /memory types/ that /can/ be used--- to access memory allocated in those heaps. Each heap describes a memory--- resource of a particular size, and each memory type describes a set of--- memory properties (e.g. host cached vs uncached) that /can/ be used with--- a given memory heap. Allocations using a particular memory type will--- consume resources from the heap indicated by that memory type’s heap--- index. More than one memory type /may/ share each heap, and the heaps--- and memory types provide a mechanism to advertise an accurate size of--- the physical memory resources while allowing the memory to be used with--- a variety of different properties.------ The number of memory heaps is given by @memoryHeapCount@ and is less--- than or equal to @VK_MAX_MEMORY_HEAPS@. Each heap is described by an--- element of the @memoryHeaps@ array as a 'VkMemoryHeap' structure. The--- number of memory types available across all memory heaps is given by--- @memoryTypeCount@ and is less than or equal to @VK_MAX_MEMORY_TYPES@.--- Each memory type is described by an element of the @memoryTypes@ array--- as a 'VkMemoryType' structure.------ At least one heap /must/ include @VK_MEMORY_HEAP_DEVICE_LOCAL_BIT@ in--- 'VkMemoryHeap'::@flags@. If there are multiple heaps that all have--- similar performance characteristics, they /may/ all include--- @VK_MEMORY_HEAP_DEVICE_LOCAL_BIT@. In a unified memory architecture--- (UMA) system there is often only a single memory heap which is--- considered to be equally “local” to the host and to the device, and such--- an implementation /must/ advertise the heap as device-local.------ Each memory type returned by 'vkGetPhysicalDeviceMemoryProperties'--- /must/ have its @propertyFlags@ set to one of the following values:------ - 0------ - @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_COHERENT_BIT@------ - @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_CACHED_BIT@------ - @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_CACHED_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_COHERENT_BIT@------ - @VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT@------ - @VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_COHERENT_BIT@------ - @VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_CACHED_BIT@------ - @VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_CACHED_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_COHERENT_BIT@------ - @VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT@ |--- @VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT@------ There /must/ be at least one memory type with both the--- @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ and--- @VK_MEMORY_PROPERTY_HOST_COHERENT_BIT@ bits set in its @propertyFlags@.--- There /must/ be at least one memory type with the--- @VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT@ bit set in its @propertyFlags@.------ For each pair of elements __X__ and __Y__ returned in @memoryTypes@,--- __X__ /must/ be placed at a lower index position than __Y__ if:------ - either the set of bit flags returned in the @propertyFlags@ member--- of __X__ is a strict subset of the set of bit flags returned in the--- @propertyFlags@ member of __Y__.------ - or the @propertyFlags@ members of __X__ and __Y__ are equal, and--- __X__ belongs to a memory heap with greater performance (as--- determined in an implementation-specific manner).------ __Note__------ There is no ordering requirement between __X__ and __Y__ elements for--- the case their @propertyFlags@ members are not in a subset relation.--- That potentially allows more than one possible way to order the same set--- of memory types. Notice that the [list of all allowed memory property--- flag--- combinations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-device-bitmask-list)--- is written in the required order. But if instead--- @VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT@ was before--- @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@ |--- @VK_MEMORY_PROPERTY_HOST_COHERENT_BIT@, the list would still be in the--- required order.------ This ordering requirement enables applications to use a simple search--- loop to select the desired memory type along the lines of:------ > // Find a memory in `memoryTypeBitsRequirement` that includes all of `requiredProperties`--- > int32_t findProperties(const VkPhysicalDeviceMemoryProperties* pMemoryProperties,--- > uint32_t memoryTypeBitsRequirement,--- > VkMemoryPropertyFlags requiredProperties) {--- > const uint32_t memoryCount = pMemoryProperties->memoryTypeCount;--- > for (uint32_t memoryIndex = 0; memoryIndex < memoryCount; ++memoryIndex) {--- > const uint32_t memoryTypeBits = (1 << memoryIndex);--- > const bool isRequiredMemoryType = memoryTypeBitsRequirement & memoryTypeBits;--- >--- > const VkMemoryPropertyFlags properties =--- > pMemoryProperties->memoryTypes[memoryIndex].propertyFlags;--- > const bool hasRequiredProperties =--- > (properties & requiredProperties) == requiredProperties;--- >--- > if (isRequiredMemoryType && hasRequiredProperties)--- > return static_cast<int32_t>(memoryIndex);--- > }--- >--- > // failed to find memory type--- > return -1;--- > }--- >--- > // Try to find an optimal memory type, or if it does not exist try fallback memory type--- > // `device` is the VkDevice--- > // `image` is the VkImage that requires memory to be bound--- > // `memoryProperties` properties as returned by vkGetPhysicalDeviceMemoryProperties--- > // `requiredProperties` are the property flags that must be present--- > // `optimalProperties` are the property flags that are preferred by the application--- > VkMemoryRequirements memoryRequirements;--- > vkGetImageMemoryRequirements(device, image, &memoryRequirements);--- > int32_t memoryType =--- > findProperties(&memoryProperties, memoryRequirements.memoryTypeBits, optimalProperties);--- > if (memoryType == -1) // not found; try fallback properties--- > memoryType =--- > findProperties(&memoryProperties, memoryRequirements.memoryTypeBits, requiredProperties);------ = See Also------ 'VkMemoryHeap', 'VkMemoryType',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceMemoryProperties2',--- 'vkGetPhysicalDeviceMemoryProperties'-data VkPhysicalDeviceMemoryProperties = VkPhysicalDeviceMemoryProperties- { -- | @memoryTypeCount@ is the number of valid elements in the @memoryTypes@- -- array.- vkMemoryTypeCount :: Word32- , -- | @memoryTypes@ is an array of 'VkMemoryType' structures describing the- -- /memory types/ that /can/ be used to access memory allocated from the- -- heaps specified by @memoryHeaps@.- vkMemoryTypes :: Vector VK_MAX_MEMORY_TYPES VkMemoryType- , -- | @memoryHeapCount@ is the number of valid elements in the @memoryHeaps@- -- array.- vkMemoryHeapCount :: Word32- , -- | @memoryHeaps@ is an array of 'VkMemoryHeap' structures describing the- -- /memory heaps/ from which memory /can/ be allocated.- vkMemoryHeaps :: Vector VK_MAX_MEMORY_HEAPS VkMemoryHeap- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceMemoryProperties where- sizeOf ~_ = 520- alignment ~_ = 8- peek ptr = VkPhysicalDeviceMemoryProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 260)- <*> peek (ptr `plusPtr` 264)- poke ptr poked = poke (ptr `plusPtr` 0) (vkMemoryTypeCount (poked :: VkPhysicalDeviceMemoryProperties))- *> poke (ptr `plusPtr` 4) (vkMemoryTypes (poked :: VkPhysicalDeviceMemoryProperties))- *> poke (ptr `plusPtr` 260) (vkMemoryHeapCount (poked :: VkPhysicalDeviceMemoryProperties))- *> poke (ptr `plusPtr` 264) (vkMemoryHeaps (poked :: VkPhysicalDeviceMemoryProperties))--- | VkMemoryType - Structure specifying memory type------ = See Also------ 'VkMemoryPropertyFlags', 'VkPhysicalDeviceMemoryProperties'-data VkMemoryType = VkMemoryType- { -- | @propertyFlags@ is a bitmask of 'VkMemoryPropertyFlagBits' of properties- -- for this memory type.- vkPropertyFlags :: VkMemoryPropertyFlags- , -- | @heapIndex@ describes which memory heap this memory type corresponds to,- -- and /must/ be less than @memoryHeapCount@ from the- -- 'VkPhysicalDeviceMemoryProperties' structure.- vkHeapIndex :: Word32- }- deriving (Eq, Show)--instance Storable VkMemoryType where- sizeOf ~_ = 8- alignment ~_ = 4- peek ptr = VkMemoryType <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- poke ptr poked = poke (ptr `plusPtr` 0) (vkPropertyFlags (poked :: VkMemoryType))- *> poke (ptr `plusPtr` 4) (vkHeapIndex (poked :: VkMemoryType))--- | VkMemoryHeap - Structure specifying a memory heap------ = See Also------ @VkDeviceSize@, 'VkMemoryHeapFlags', 'VkPhysicalDeviceMemoryProperties'-data VkMemoryHeap = VkMemoryHeap- { -- | @size@ is the total memory size in bytes in the heap.- vkSize :: VkDeviceSize- , -- | @flags@ is a bitmask of 'VkMemoryHeapFlagBits' specifying attribute- -- flags for the heap.- vkFlags :: VkMemoryHeapFlags- }- deriving (Eq, Show)--instance Storable VkMemoryHeap where- sizeOf ~_ = 16- alignment ~_ = 8- peek ptr = VkMemoryHeap <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSize (poked :: VkMemoryHeap))- *> poke (ptr `plusPtr` 8) (vkFlags (poked :: VkMemoryHeap))--- | VkFormatProperties - Structure specifying image format properties------ = Description------ __Note__------ If no format feature flags are supported, the format itself is not--- supported, and images of that format cannot be created.------ If @format@ is a block-compression format, then buffers /must/ not--- support any features for the format.------ = See Also------ 'VkFormatFeatureFlags',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkFormatProperties2',--- 'vkGetPhysicalDeviceFormatProperties'-data VkFormatProperties = VkFormatProperties- { -- | @linearTilingFeatures@ is a bitmask of 'VkFormatFeatureFlagBits'- -- specifying features supported by images created with a @tiling@- -- parameter of @VK_IMAGE_TILING_LINEAR@.- vkLinearTilingFeatures :: VkFormatFeatureFlags- , -- | @optimalTilingFeatures@ is a bitmask of 'VkFormatFeatureFlagBits'- -- specifying features supported by images created with a @tiling@- -- parameter of @VK_IMAGE_TILING_OPTIMAL@.- vkOptimalTilingFeatures :: VkFormatFeatureFlags- , -- | @bufferFeatures@ is a bitmask of 'VkFormatFeatureFlagBits' specifying- -- features supported by buffers.- vkBufferFeatures :: VkFormatFeatureFlags- }- deriving (Eq, Show)--instance Storable VkFormatProperties where- sizeOf ~_ = 12- alignment ~_ = 4- peek ptr = VkFormatProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkLinearTilingFeatures (poked :: VkFormatProperties))- *> poke (ptr `plusPtr` 4) (vkOptimalTilingFeatures (poked :: VkFormatProperties))- *> poke (ptr `plusPtr` 8) (vkBufferFeatures (poked :: VkFormatProperties))--- | VkImageFormatProperties - Structure specifying a image format properties------ = Members------ - @maxExtent@ are the maximum image dimensions. See the [Allowed--- Extent--- Values](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-extentperimagetype)--- section below for how these values are constrained by @type@.------ - @maxMipLevels@ is the maximum number of mipmap levels.--- @maxMipLevels@ /must/ be equal to ⌈log2(max(@width@, @height@,--- @depth@))⌉ + 1, where @width@, @height@, and @depth@ are taken from--- the corresponding members of @maxExtent@, except when one of the--- following conditions is true, in which case it /may/ instead be @1@:------ - @vkGetPhysicalDeviceImageFormatProperties@::@tiling@ was--- @VK_IMAGE_TILING_LINEAR@------ - the--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceImageFormatInfo2'::@pNext@--- chain included an instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkPhysicalDeviceExternalImageFormatInfo'--- with a handle type included in the @handleTypes@ member for--- which mipmap image support is not required------ - @maxArrayLayers@ is the maximum number of array layers.--- @maxArrayLayers@ /must/ either be equal to 1 or be greater than or--- equal to the @maxImageArrayLayers@ member of--- 'VkPhysicalDeviceLimits'. A value of 1 is valid only if @tiling@ is--- @VK_IMAGE_TILING_LINEAR@ or if @type@ is @VK_IMAGE_TYPE_3D@.------ - @sampleCounts@ is a bitmask of 'VkSampleCountFlagBits' specifying--- all the supported sample counts for this image as described--- [below](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-supported-sample-counts).------ - @maxResourceSize@ is an upper bound on the total image size in--- bytes, inclusive of all image subresources. Implementations /may/--- have an address space limit on total size of a resource, which is--- advertised by this property. @maxResourceSize@ /must/ be at least--- 231.------ = Description------ __Note__------ There is no mechanism to query the size of an image before creating it,--- to compare that size against @maxResourceSize@. If an application--- attempts to create an image that exceeds this limit, the creation will--- fail and 'Graphics.Vulkan.Core10.Image.vkCreateImage' will return--- @VK_ERROR_OUT_OF_DEVICE_MEMORY@. While the advertised limit /must/ be at--- least 231, it /may/ not be possible to create an image that approaches--- that size, particularly for @VK_IMAGE_TYPE_1D@.------ If the combination of parameters to--- @vkGetPhysicalDeviceImageFormatProperties@ is not supported by the--- implementation for use in 'Graphics.Vulkan.Core10.Image.vkCreateImage',--- then all members of @VkImageFormatProperties@ will be filled with zero.------ __Note__------ Filling @VkImageFormatProperties@ with zero for unsupported formats is--- an exception to the usual rule that output structures have undefined--- contents on error. This exception was unintentional, but is preserved--- for backwards compatibility.------ = See Also------ @VkDeviceSize@, 'VkExtent3D',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalImageFormatPropertiesNV',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkImageFormatProperties2',--- 'VkSampleCountFlags', 'vkGetPhysicalDeviceImageFormatProperties'-data VkImageFormatProperties = VkImageFormatProperties- { -- No documentation found for Nested "VkImageFormatProperties" "maxExtent"- vkMaxExtent :: VkExtent3D- , -- No documentation found for Nested "VkImageFormatProperties" "maxMipLevels"- vkMaxMipLevels :: Word32- , -- No documentation found for Nested "VkImageFormatProperties" "maxArrayLayers"- vkMaxArrayLayers :: Word32- , -- No documentation found for Nested "VkImageFormatProperties" "sampleCounts"- vkSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkImageFormatProperties" "maxResourceSize"- vkMaxResourceSize :: VkDeviceSize- }- deriving (Eq, Show)--instance Storable VkImageFormatProperties where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkImageFormatProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkMaxExtent (poked :: VkImageFormatProperties))- *> poke (ptr `plusPtr` 12) (vkMaxMipLevels (poked :: VkImageFormatProperties))- *> poke (ptr `plusPtr` 16) (vkMaxArrayLayers (poked :: VkImageFormatProperties))- *> poke (ptr `plusPtr` 20) (vkSampleCounts (poked :: VkImageFormatProperties))- *> poke (ptr `plusPtr` 24) (vkMaxResourceSize (poked :: VkImageFormatProperties))--- | VkPhysicalDeviceFeatures - Structure describing the fine-grained--- features that can be supported by an implementation------ = Members------ The members of the @VkPhysicalDeviceFeatures@ structure describe the--- following features:------ = Description------ - @robustBufferAccess@ specifies that accesses to buffers are--- bounds-checked against the range of the buffer descriptor (as--- determined by @VkDescriptorBufferInfo@::@range@,--- @VkBufferViewCreateInfo@::@range@, or the size of the buffer). Out--- of bounds accesses /must/ not cause application termination, and the--- effects of shader loads, stores, and atomics /must/ conform to an--- implementation-dependent behavior as described below.------ - A buffer access is considered to be out of bounds if any of the--- following are true:------ - The pointer was formed by @OpImageTexelPointer@ and the--- coordinate is less than zero or greater than or equal to the--- number of whole elements in the bound range.------ - The pointer was not formed by @OpImageTexelPointer@ and the--- object pointed to is not wholly contained within the bound--- range. This includes accesses performed via /variable--- pointers/ where the buffer descriptor being accessed cannot--- be statically determined. Uninitialized pointers and--- pointers equal to @OpConstantNull@ are treated as pointing--- to a zero-sized object, so all accesses through such--- pointers are considered to be out of bounds.------ __Note__------ If a SPIR-V @OpLoad@ instruction loads a structure and the--- tail end of the structure is out of bounds, then all members--- of the structure are considered out of bounds even if the--- members at the end are not statically used.------ - If any buffer access in a given SPIR-V block is determined--- to be out of bounds, then any other access of the same type--- (load, store, or atomic) in the same SPIR-V block that--- accesses an address less than 16 bytes away from the out of--- bounds address /may/ also be considered out of bounds.------ - Out-of-bounds buffer loads will return any of the following--- values:------ - Values from anywhere within the memory range(s) bound to the--- buffer (possibly including bytes of memory past the end of--- the buffer, up to the end of the bound range).------ - Zero values, or (0,0,0,x) vectors for vector reads where x--- is a valid value represented in the type of the vector--- components and /may/ be any of:------ - 0, 1, or the maximum representable positive integer--- value, for signed or unsigned integer components------ - 0.0 or 1.0, for floating-point components------ - Out-of-bounds writes /may/ modify values within the memory--- range(s) bound to the buffer, but /must/ not modify any other--- memory.------ - Out-of-bounds atomics /may/ modify values within the memory--- range(s) bound to the buffer, but /must/ not modify any other--- memory, and return an undefined value.------ - Vertex input attributes are considered out of bounds if the--- offset of the attribute in the bound vertex buffer range plus--- the size of the attribute is greater than either:------ - @vertexBufferRangeSize@, if @bindingStride@ == 0; or------ - (@vertexBufferRangeSize@ - (@vertexBufferRangeSize@ %--- @bindingStride@))------ where @vertexBufferRangeSize@ is the byte size of the memory--- range bound to the vertex buffer binding and @bindingStride@ is--- the byte stride of the corresponding vertex input binding.--- Further, if any vertex input attribute using a specific vertex--- input binding is out of bounds, then all vertex input attributes--- using that vertex input binding for that vertex shader--- invocation are considered out of bounds.------ - If a vertex input attribute is out of bounds, it will be--- assigned one of the following values:------ - Values from anywhere within the memory range(s) bound to--- the buffer, converted according to the format of the--- attribute.------ - Zero values, format converted according to the format of--- the attribute.------ - Zero values, or (0,0,0,x) vectors, as described above.------ - If @robustBufferAccess@ is not enabled, out of bounds accesses--- /may/ corrupt any memory within the process and cause undefined--- behavior up to and including application termination.------ - @fullDrawIndexUint32@ specifies the full 32-bit range of indices is--- supported for indexed draw calls when using a--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkIndexType' of--- @VK_INDEX_TYPE_UINT32@. @maxDrawIndexedIndexValue@ is the maximum--- index value that /may/ be used (aside from the primitive restart--- index, which is always 232-1 when the--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkIndexType' is--- @VK_INDEX_TYPE_UINT32@). If this feature is supported,--- @maxDrawIndexedIndexValue@ /must/ be 232-1; otherwise it /must/ be--- no smaller than 224-1. See--- [maxDrawIndexedIndexValue](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-maxDrawIndexedIndexValue).------ - @imageCubeArray@ specifies whether image views with a--- 'Graphics.Vulkan.Core10.ImageView.VkImageViewType' of--- @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@ /can/ be created, and that the--- corresponding @SampledCubeArray@ and @ImageCubeArray@ SPIR-V--- capabilities /can/ be used in shader code.------ - @independentBlend@ specifies whether the--- @VkPipelineColorBlendAttachmentState@ settings are controlled--- independently per-attachment. If this feature is not enabled, the--- @VkPipelineColorBlendAttachmentState@ settings for all color--- attachments /must/ be identical. Otherwise, a different--- @VkPipelineColorBlendAttachmentState@ /can/ be provided for each--- bound color attachment.------ - @geometryShader@ specifies whether geometry shaders are supported.--- If this feature is not enabled, the @VK_SHADER_STAGE_GEOMETRY_BIT@--- and @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@ enum values /must/ not--- be used. This also specifies whether shader modules /can/ declare--- the @Geometry@ capability.------ - @tessellationShader@ specifies whether tessellation control and--- evaluation shaders are supported. If this feature is not enabled,--- the @VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT@,--- @VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT@,--- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@,--- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@, and--- @VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO@ enum--- values /must/ not be used. This also specifies whether shader--- modules /can/ declare the @Tessellation@ capability.------ - @sampleRateShading@ specifies whether [Sample--- Shading](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#primsrast-sampleshading)--- and multisample interpolation are supported. If this feature is not--- enabled, the @sampleShadingEnable@ member of the--- @VkPipelineMultisampleStateCreateInfo@ structure /must/ be set to--- @VK_FALSE@ and the @minSampleShading@ member is ignored. This also--- specifies whether shader modules /can/ declare the--- @SampleRateShading@ capability.------ - @dualSrcBlend@ specifies whether blend operations which take two--- sources are supported. If this feature is not enabled, the--- @VK_BLEND_FACTOR_SRC1_COLOR@,--- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@,--- @VK_BLEND_FACTOR_SRC1_ALPHA@, and--- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@ enum values /must/ not be--- used as source or destination blending factors. See--- [{html_spec_relative}#framebuffer-dsb](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-dsb).------ - @logicOp@ specifies whether logic operations are supported. If this--- feature is not enabled, the @logicOpEnable@ member of the--- @VkPipelineColorBlendStateCreateInfo@ structure /must/ be set to--- @VK_FALSE@, and the @logicOp@ member is ignored.------ - @multiDrawIndirect@ specifies whether multiple draw indirect is--- supported. If this feature is not enabled, the @drawCount@ parameter--- to the @vkCmdDrawIndirect@ and @vkCmdDrawIndexedIndirect@ commands--- /must/ be 0 or 1. The @maxDrawIndirectCount@ member of the--- @VkPhysicalDeviceLimits@ structure /must/ also be 1 if this feature--- is not supported. See--- [maxDrawIndirectCount](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-maxDrawIndirectCount).------ - @drawIndirectFirstInstance@ specifies whether indirect draw calls--- support the @firstInstance@ parameter. If this feature is not--- enabled, the @firstInstance@ member of all @VkDrawIndirectCommand@--- and @VkDrawIndexedIndirectCommand@ structures that are provided to--- the @vkCmdDrawIndirect@ and @vkCmdDrawIndexedIndirect@ commands--- /must/ be 0.------ - @depthClamp@ specifies whether depth clamping is supported. If this--- feature is not enabled, the @depthClampEnable@ member of the--- @VkPipelineRasterizationStateCreateInfo@ structure /must/ be set to--- @VK_FALSE@. Otherwise, setting @depthClampEnable@ to @VK_TRUE@ will--- enable depth clamping.------ - @depthBiasClamp@ specifies whether depth bias clamping is supported.--- If this feature is not enabled, the @depthBiasClamp@ member of the--- @VkPipelineRasterizationStateCreateInfo@ structure /must/ be set to--- 0.0 unless the @VK_DYNAMIC_STATE_DEPTH_BIAS@ dynamic state is--- enabled, and the @depthBiasClamp@ parameter to @vkCmdSetDepthBias@--- /must/ be set to 0.0.------ - @fillModeNonSolid@ specifies whether point and wireframe fill modes--- are supported. If this feature is not enabled, the--- @VK_POLYGON_MODE_POINT@ and @VK_POLYGON_MODE_LINE@ enum values--- /must/ not be used.------ - @depthBounds@ specifies whether depth bounds tests are supported. If--- this feature is not enabled, the @depthBoundsTestEnable@ member of--- the @VkPipelineDepthStencilStateCreateInfo@ structure /must/ be set--- to @VK_FALSE@. When @depthBoundsTestEnable@ is set to @VK_FALSE@,--- the @minDepthBounds@ and @maxDepthBounds@ members of the--- @VkPipelineDepthStencilStateCreateInfo@ structure are ignored.------ - @wideLines@ specifies whether lines with width other than 1.0 are--- supported. If this feature is not enabled, the @lineWidth@ member of--- the @VkPipelineRasterizationStateCreateInfo@ structure /must/ be set--- to 1.0 unless the @VK_DYNAMIC_STATE_LINE_WIDTH@ dynamic state is--- enabled, and the @lineWidth@ parameter to @vkCmdSetLineWidth@ /must/--- be set to 1.0. When this feature is supported, the range and--- granularity of supported line widths are indicated by the--- @lineWidthRange@ and @lineWidthGranularity@ members of the--- @VkPhysicalDeviceLimits@ structure, respectively.------ - @largePoints@ specifies whether points with size greater than 1.0--- are supported. If this feature is not enabled, only a point size of--- 1.0 written by a shader is supported. The range and granularity of--- supported point sizes are indicated by the @pointSizeRange@ and--- @pointSizeGranularity@ members of the @VkPhysicalDeviceLimits@--- structure, respectively.------ - @alphaToOne@ specifies whether the implementation is able to replace--- the alpha value of the color fragment output from the fragment--- shader with the maximum representable alpha value for fixed-point--- colors or 1.0 for floating-point colors. If this feature is not--- enabled, then the @alphaToOneEnable@ member of the--- @VkPipelineMultisampleStateCreateInfo@ structure /must/ be set to--- @VK_FALSE@. Otherwise setting @alphaToOneEnable@ to @VK_TRUE@ will--- enable alpha-to-one behavior.------ - @multiViewport@ specifies whether more than one viewport is--- supported. If this feature is not enabled, the @viewportCount@ and--- @scissorCount@ members of the @VkPipelineViewportStateCreateInfo@--- structure /must/ be set to 1. Similarly, the @viewportCount@--- parameter to the @vkCmdSetViewport@ command and the @scissorCount@--- parameter to the @vkCmdSetScissor@ command /must/ be 1, and the--- @firstViewport@ parameter to the @vkCmdSetViewport@ command and the--- @firstScissor@ parameter to the @vkCmdSetScissor@ command /must/ be--- 0.------ - @samplerAnisotropy@ specifies whether anisotropic filtering is--- supported. If this feature is not enabled, the @anisotropyEnable@--- member of the @VkSamplerCreateInfo@ structure /must/ be @VK_FALSE@.------ - @textureCompressionETC2@ specifies whether all of the ETC2 and EAC--- compressed texture formats are supported. If this feature is--- enabled, then the @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@,--- @VK_FORMAT_FEATURE_BLIT_SRC_BIT@ and--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ features /must/--- be supported in @optimalTilingFeatures@ for the following formats:------ - @VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK@------ - @VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK@------ - @VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK@------ - @VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK@------ - @VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK@------ - @VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK@------ - @VK_FORMAT_EAC_R11_UNORM_BLOCK@------ - @VK_FORMAT_EAC_R11_SNORM_BLOCK@------ - @VK_FORMAT_EAC_R11G11_UNORM_BLOCK@------ - @VK_FORMAT_EAC_R11G11_SNORM_BLOCK@------ 'vkGetPhysicalDeviceFormatProperties' and--- 'vkGetPhysicalDeviceImageFormatProperties' /can/ be used to check--- for additional supported properties of individual formats.------ - @textureCompressionASTC_LDR@ specifies whether all of the ASTC LDR--- compressed texture formats are supported. If this feature is--- enabled, then the @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@,--- @VK_FORMAT_FEATURE_BLIT_SRC_BIT@ and--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ features /must/--- be supported in @optimalTilingFeatures@ for the following formats:------ - @VK_FORMAT_ASTC_4x4_UNORM_BLOCK@------ - @VK_FORMAT_ASTC_4x4_SRGB_BLOCK@------ - @VK_FORMAT_ASTC_5x4_UNORM_BLOCK@------ - @VK_FORMAT_ASTC_5x4_SRGB_BLOCK@------ - @VK_FORMAT_ASTC_5x5_UNORM_BLOCK@------ - @VK_FORMAT_ASTC_5x5_SRGB_BLOCK@------ - @VK_FORMAT_ASTC_6x5_UNORM_BLOCK@------ - @VK_FORMAT_ASTC_6x5_SRGB_BLOCK@------ - @VK_FORMAT_ASTC_6x6_UNORM_BLOCK@------ - @VK_FORMAT_ASTC_6x6_SRGB_BLOCK@------ - @VK_FORMAT_ASTC_8x5_UNORM_BLOCK@------ - @VK_FORMAT_ASTC_8x5_SRGB_BLOCK@------ - @VK_FORMAT_ASTC_8x6_UNORM_BLOCK@------ - @VK_FORMAT_ASTC_8x6_SRGB_BLOCK@------ - @VK_FORMAT_ASTC_8x8_UNORM_BLOCK@------ - @VK_FORMAT_ASTC_8x8_SRGB_BLOCK@------ - @VK_FORMAT_ASTC_10x5_UNORM_BLOCK@------ - @VK_FORMAT_ASTC_10x5_SRGB_BLOCK@------ - @VK_FORMAT_ASTC_10x6_UNORM_BLOCK@------ - @VK_FORMAT_ASTC_10x6_SRGB_BLOCK@------ - @VK_FORMAT_ASTC_10x8_UNORM_BLOCK@------ - @VK_FORMAT_ASTC_10x8_SRGB_BLOCK@------ - @VK_FORMAT_ASTC_10x10_UNORM_BLOCK@------ - @VK_FORMAT_ASTC_10x10_SRGB_BLOCK@------ - @VK_FORMAT_ASTC_12x10_UNORM_BLOCK@------ - @VK_FORMAT_ASTC_12x10_SRGB_BLOCK@------ - @VK_FORMAT_ASTC_12x12_UNORM_BLOCK@------ - @VK_FORMAT_ASTC_12x12_SRGB_BLOCK@------ 'vkGetPhysicalDeviceFormatProperties' and--- 'vkGetPhysicalDeviceImageFormatProperties' /can/ be used to check--- for additional supported properties of individual formats.------ - @textureCompressionBC@ specifies whether all of the BC compressed--- texture formats are supported. If this feature is enabled, then the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@,--- @VK_FORMAT_FEATURE_BLIT_SRC_BIT@ and--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ features /must/--- be supported in @optimalTilingFeatures@ for the following formats:------ - @VK_FORMAT_BC1_RGB_UNORM_BLOCK@------ - @VK_FORMAT_BC1_RGB_SRGB_BLOCK@------ - @VK_FORMAT_BC1_RGBA_UNORM_BLOCK@------ - @VK_FORMAT_BC1_RGBA_SRGB_BLOCK@------ - @VK_FORMAT_BC2_UNORM_BLOCK@------ - @VK_FORMAT_BC2_SRGB_BLOCK@------ - @VK_FORMAT_BC3_UNORM_BLOCK@------ - @VK_FORMAT_BC3_SRGB_BLOCK@------ - @VK_FORMAT_BC4_UNORM_BLOCK@------ - @VK_FORMAT_BC4_SNORM_BLOCK@------ - @VK_FORMAT_BC5_UNORM_BLOCK@------ - @VK_FORMAT_BC5_SNORM_BLOCK@------ - @VK_FORMAT_BC6H_UFLOAT_BLOCK@------ - @VK_FORMAT_BC6H_SFLOAT_BLOCK@------ - @VK_FORMAT_BC7_UNORM_BLOCK@------ - @VK_FORMAT_BC7_SRGB_BLOCK@------ 'vkGetPhysicalDeviceFormatProperties' and--- 'vkGetPhysicalDeviceImageFormatProperties' /can/ be used to check--- for additional supported properties of individual formats.------ - @occlusionQueryPrecise@ specifies whether occlusion queries--- returning actual sample counts are supported. Occlusion queries are--- created in a @VkQueryPool@ by specifying the @queryType@ of--- @VK_QUERY_TYPE_OCCLUSION@ in the @VkQueryPoolCreateInfo@ structure--- which is passed to @vkCreateQueryPool@. If this feature is enabled,--- queries of this type /can/ enable @VK_QUERY_CONTROL_PRECISE_BIT@ in--- the @flags@ parameter to @vkCmdBeginQuery@. If this feature is not--- supported, the implementation supports only boolean occlusion--- queries. When any samples are passed, boolean queries will return a--- non-zero result value, otherwise a result value of zero is returned.--- When this feature is enabled and @VK_QUERY_CONTROL_PRECISE_BIT@ is--- set, occlusion queries will report the actual number of samples--- passed.------ - @pipelineStatisticsQuery@ specifies whether the pipeline statistics--- queries are supported. If this feature is not enabled, queries of--- type @VK_QUERY_TYPE_PIPELINE_STATISTICS@ /cannot/ be created, and--- none of the--- 'Graphics.Vulkan.Core10.Query.VkQueryPipelineStatisticFlagBits' bits--- /can/ be set in the @pipelineStatistics@ member of the--- @VkQueryPoolCreateInfo@ structure.------ - @vertexPipelineStoresAndAtomics@ specifies whether storage buffers--- and images support stores and atomic operations in the vertex,--- tessellation, and geometry shader stages. If this feature is not--- enabled, all storage image, storage texel buffers, and storage--- buffer variables used by these stages in shader modules /must/ be--- decorated with the @NonWriteable@ decoration (or the @readonly@--- memory qualifier in GLSL).------ - @fragmentStoresAndAtomics@ specifies whether storage buffers and--- images support stores and atomic operations in the fragment shader--- stage. If this feature is not enabled, all storage image, storage--- texel buffers, and storage buffer variables used by the fragment--- stage in shader modules /must/ be decorated with the @NonWriteable@--- decoration (or the @readonly@ memory qualifier in GLSL).------ - @shaderTessellationAndGeometryPointSize@ specifies whether the--- @PointSize@ built-in decoration is available in the tessellation--- control, tessellation evaluation, and geometry shader stages. If--- this feature is not enabled, members decorated with the @PointSize@--- built-in decoration /must/ not be read from or written to and all--- points written from a tessellation or geometry shader will have a--- size of 1.0. This also specifies whether shader modules /can/--- declare the @TessellationPointSize@ capability for tessellation--- control and evaluation shaders, or if the shader modules /can/--- declare the @GeometryPointSize@ capability for geometry shaders. An--- implementation supporting this feature /must/ also support one or--- both of the--- [@tessellationShader@](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)--- or--- [@geometryShader@](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)--- features.------ - @shaderImageGatherExtended@ specifies whether the extended set of--- image gather instructions are available in shader code. If this--- feature is not enabled, the @OpImage@*@Gather@ instructions do not--- support the @Offset@ and @ConstOffsets@ operands. This also--- specifies whether shader modules /can/ declare the--- @ImageGatherExtended@ capability.------ - @shaderStorageImageExtendedFormats@ specifies whether the extended--- storage image formats are available in shader code. If this feature--- is not enabled, the formats requiring the--- @StorageImageExtendedFormats@ capability are not supported for--- storage images. This also specifies whether shader modules /can/--- declare the @StorageImageExtendedFormats@ capability.------ - @shaderStorageImageMultisample@ specifies whether multisampled--- storage images are supported. If this feature is not enabled, images--- that are created with a @usage@ that includes--- @VK_IMAGE_USAGE_STORAGE_BIT@ /must/ be created with @samples@ equal--- to @VK_SAMPLE_COUNT_1_BIT@. This also specifies whether shader--- modules /can/ declare the @StorageImageMultisample@ capability.------ - @shaderStorageImageReadWithoutFormat@ specifies whether storage--- images require a format qualifier to be specified when reading from--- storage images. If this feature is not enabled, the @OpImageRead@--- instruction /must/ not have an @OpTypeImage@ of @Unknown@. This also--- specifies whether shader modules /can/ declare the--- @StorageImageReadWithoutFormat@ capability.------ - @shaderStorageImageWriteWithoutFormat@ specifies whether storage--- images require a format qualifier to be specified when writing to--- storage images. If this feature is not enabled, the @OpImageWrite@--- instruction /must/ not have an @OpTypeImage@ of @Unknown@. This also--- specifies whether shader modules /can/ declare the--- @StorageImageWriteWithoutFormat@ capability.------ - @shaderUniformBufferArrayDynamicIndexing@ specifies whether arrays--- of uniform buffers /can/ be indexed by /dynamically uniform/ integer--- expressions in shader code. If this feature is not enabled,--- resources with a descriptor type of--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ /must/ be indexed only--- by constant integral expressions when aggregated into arrays in--- shader code. This also specifies whether shader modules /can/--- declare the @UniformBufferArrayDynamicIndexing@ capability.------ - @shaderSampledImageArrayDynamicIndexing@ specifies whether arrays of--- samplers or sampled images /can/ be indexed by dynamically uniform--- integer expressions in shader code. If this feature is not enabled,--- resources with a descriptor type of @VK_DESCRIPTOR_TYPE_SAMPLER@,--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@, or--- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@ /must/ be indexed only by--- constant integral expressions when aggregated into arrays in shader--- code. This also specifies whether shader modules /can/ declare the--- @SampledImageArrayDynamicIndexing@ capability.------ - @shaderStorageBufferArrayDynamicIndexing@ specifies whether arrays--- of storage buffers /can/ be indexed by dynamically uniform integer--- expressions in shader code. If this feature is not enabled,--- resources with a descriptor type of--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ /must/ be indexed only--- by constant integral expressions when aggregated into arrays in--- shader code. This also specifies whether shader modules /can/--- declare the @StorageBufferArrayDynamicIndexing@ capability.------ - @shaderStorageImageArrayDynamicIndexing@ specifies whether arrays of--- storage images /can/ be indexed by dynamically uniform integer--- expressions in shader code. If this feature is not enabled,--- resources with a descriptor type of--- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@ /must/ be indexed only by--- constant integral expressions when aggregated into arrays in shader--- code. This also specifies whether shader modules /can/ declare the--- @StorageImageArrayDynamicIndexing@ capability.------ - @shaderClipDistance@ specifies whether clip distances are supported--- in shader code. If this feature is not enabled, any members--- decorated with the @ClipDistance@ built-in decoration /must/ not be--- read from or written to in shader modules. This also specifies--- whether shader modules /can/ declare the @ClipDistance@ capability.------ - @shaderCullDistance@ specifies whether cull distances are supported--- in shader code. If this feature is not enabled, any members--- decorated with the @CullDistance@ built-in decoration /must/ not be--- read from or written to in shader modules. This also specifies--- whether shader modules /can/ declare the @CullDistance@ capability.------ - @shaderFloat64@ specifies whether 64-bit floats (doubles) are--- supported in shader code. If this feature is not enabled, 64-bit--- floating-point types /must/ not be used in shader code. This also--- specifies whether shader modules /can/ declare the @Float64@--- capability.------ - @shaderInt64@ specifies whether 64-bit integers (signed and--- unsigned) are supported in shader code. If this feature is not--- enabled, 64-bit integer types /must/ not be used in shader code.--- This also specifies whether shader modules /can/ declare the @Int64@--- capability.------ - @shaderInt16@ specifies whether 16-bit integers (signed and--- unsigned) are supported in shader code. If this feature is not--- enabled, 16-bit integer types /must/ not be used in shader code.--- This also specifies whether shader modules /can/ declare the @Int16@--- capability.------ - @shaderResourceResidency@ specifies whether image operations that--- return resource residency information are supported in shader code.--- If this feature is not enabled, the @OpImageSparse@* instructions--- /must/ not be used in shader code. This also specifies whether--- shader modules /can/ declare the @SparseResidency@ capability. The--- feature requires at least one of the @sparseResidency*@ features to--- be supported.------ - @shaderResourceMinLod@ specifies whether image operations that--- specify the minimum resource LOD are supported in shader code. If--- this feature is not enabled, the @MinLod@ image operand /must/ not--- be used in shader code. This also specifies whether shader modules--- /can/ declare the @MinLod@ capability.------ - @sparseBinding@ specifies whether resource memory /can/ be managed--- at opaque sparse block level instead of at the object level. If this--- feature is not enabled, resource memory /must/ be bound only on a--- per-object basis using the @vkBindBufferMemory@ and--- @vkBindImageMemory@ commands. In this case, buffers and images--- /must/ not be created with @VK_BUFFER_CREATE_SPARSE_BINDING_BIT@ and--- @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@ set in the @flags@ member of--- the @VkBufferCreateInfo@ and @VkImageCreateInfo@ structures,--- respectively. Otherwise resource memory /can/ be managed as--- described in [Sparse Resource--- Features](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#sparsememory-sparseresourcefeatures).------ - @sparseResidencyBuffer@ specifies whether the device /can/ access--- partially resident buffers. If this feature is not enabled, buffers--- /must/ not be created with @VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT@--- set in the @flags@ member of the @VkBufferCreateInfo@ structure.------ - @sparseResidencyImage2D@ specifies whether the device /can/ access--- partially resident 2D images with 1 sample per pixel. If this--- feature is not enabled, images with an @imageType@ of--- @VK_IMAGE_TYPE_2D@ and @samples@ set to @VK_SAMPLE_COUNT_1_BIT@--- /must/ not be created with @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@--- set in the @flags@ member of the @VkImageCreateInfo@ structure.------ - @sparseResidencyImage3D@ specifies whether the device /can/ access--- partially resident 3D images. If this feature is not enabled, images--- with an @imageType@ of @VK_IMAGE_TYPE_3D@ /must/ not be created with--- @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@ set in the @flags@ member of--- the @VkImageCreateInfo@ structure.------ - @sparseResidency2Samples@ specifies whether the physical device--- /can/ access partially resident 2D images with 2 samples per pixel.--- If this feature is not enabled, images with an @imageType@ of--- @VK_IMAGE_TYPE_2D@ and @samples@ set to @VK_SAMPLE_COUNT_2_BIT@--- /must/ not be created with @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@--- set in the @flags@ member of the @VkImageCreateInfo@ structure.------ - @sparseResidency4Samples@ specifies whether the physical device--- /can/ access partially resident 2D images with 4 samples per pixel.--- If this feature is not enabled, images with an @imageType@ of--- @VK_IMAGE_TYPE_2D@ and @samples@ set to @VK_SAMPLE_COUNT_4_BIT@--- /must/ not be created with @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@--- set in the @flags@ member of the @VkImageCreateInfo@ structure.------ - @sparseResidency8Samples@ specifies whether the physical device--- /can/ access partially resident 2D images with 8 samples per pixel.--- If this feature is not enabled, images with an @imageType@ of--- @VK_IMAGE_TYPE_2D@ and @samples@ set to @VK_SAMPLE_COUNT_8_BIT@--- /must/ not be created with @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@--- set in the @flags@ member of the @VkImageCreateInfo@ structure.------ - @sparseResidency16Samples@ specifies whether the physical device--- /can/ access partially resident 2D images with 16 samples per pixel.--- If this feature is not enabled, images with an @imageType@ of--- @VK_IMAGE_TYPE_2D@ and @samples@ set to @VK_SAMPLE_COUNT_16_BIT@--- /must/ not be created with @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@--- set in the @flags@ member of the @VkImageCreateInfo@ structure.------ - @sparseResidencyAliased@ specifies whether the physical device /can/--- correctly access data aliased into multiple locations. If this--- feature is not enabled, the @VK_BUFFER_CREATE_SPARSE_ALIASED_BIT@--- and @VK_IMAGE_CREATE_SPARSE_ALIASED_BIT@ enum values /must/ not be--- used in @flags@ members of the @VkBufferCreateInfo@ and--- @VkImageCreateInfo@ structures, respectively.------ - @variableMultisampleRate@ specifies whether all pipelines that will--- be bound to a command buffer during a subpass with no attachments--- /must/ have the same value for--- @VkPipelineMultisampleStateCreateInfo@::@rasterizationSamples@. If--- set to @VK_TRUE@, the implementation supports variable multisample--- rates in a subpass with no attachments. If set to @VK_FALSE@, then--- all pipelines bound in such a subpass /must/ have the same--- multisample rate. This has no effect in situations where a subpass--- uses any attachments.------ - @inheritedQueries@ specifies whether a secondary command buffer--- /may/ be executed while a query is active.------ = See Also------ @VkBool32@, 'Graphics.Vulkan.Core10.Device.VkDeviceCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceFeatures2',--- 'vkGetPhysicalDeviceFeatures'-data VkPhysicalDeviceFeatures = VkPhysicalDeviceFeatures- { -- No documentation found for Nested "VkPhysicalDeviceFeatures" "robustBufferAccess"- vkRobustBufferAccess :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "fullDrawIndexUint32"- vkFullDrawIndexUint32 :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "imageCubeArray"- vkImageCubeArray :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "independentBlend"- vkIndependentBlend :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "geometryShader"- vkGeometryShader :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "tessellationShader"- vkTessellationShader :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sampleRateShading"- vkSampleRateShading :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "dualSrcBlend"- vkDualSrcBlend :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "logicOp"- vkLogicOp :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "multiDrawIndirect"- vkMultiDrawIndirect :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "drawIndirectFirstInstance"- vkDrawIndirectFirstInstance :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "depthClamp"- vkDepthClamp :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "depthBiasClamp"- vkDepthBiasClamp :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "fillModeNonSolid"- vkFillModeNonSolid :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "depthBounds"- vkDepthBounds :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "wideLines"- vkWideLines :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "largePoints"- vkLargePoints :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "alphaToOne"- vkAlphaToOne :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "multiViewport"- vkMultiViewport :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "samplerAnisotropy"- vkSamplerAnisotropy :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "textureCompressionETC2"- vkTextureCompressionETC2 :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "textureCompressionASTC_LDR"- vkTextureCompressionASTC_LDR :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "textureCompressionBC"- vkTextureCompressionBC :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "occlusionQueryPrecise"- vkOcclusionQueryPrecise :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "pipelineStatisticsQuery"- vkPipelineStatisticsQuery :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "vertexPipelineStoresAndAtomics"- vkVertexPipelineStoresAndAtomics :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "fragmentStoresAndAtomics"- vkFragmentStoresAndAtomics :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderTessellationAndGeometryPointSize"- vkShaderTessellationAndGeometryPointSize :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderImageGatherExtended"- vkShaderImageGatherExtended :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderStorageImageExtendedFormats"- vkShaderStorageImageExtendedFormats :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderStorageImageMultisample"- vkShaderStorageImageMultisample :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderStorageImageReadWithoutFormat"- vkShaderStorageImageReadWithoutFormat :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderStorageImageWriteWithoutFormat"- vkShaderStorageImageWriteWithoutFormat :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderUniformBufferArrayDynamicIndexing"- vkShaderUniformBufferArrayDynamicIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderSampledImageArrayDynamicIndexing"- vkShaderSampledImageArrayDynamicIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderStorageBufferArrayDynamicIndexing"- vkShaderStorageBufferArrayDynamicIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderStorageImageArrayDynamicIndexing"- vkShaderStorageImageArrayDynamicIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderClipDistance"- vkShaderClipDistance :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderCullDistance"- vkShaderCullDistance :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderFloat64"- vkShaderFloat64 :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderInt64"- vkShaderInt64 :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderInt16"- vkShaderInt16 :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderResourceResidency"- vkShaderResourceResidency :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "shaderResourceMinLod"- vkShaderResourceMinLod :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseBinding"- vkSparseBinding :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidencyBuffer"- vkSparseResidencyBuffer :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidencyImage2D"- vkSparseResidencyImage2D :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidencyImage3D"- vkSparseResidencyImage3D :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidency2Samples"- vkSparseResidency2Samples :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidency4Samples"- vkSparseResidency4Samples :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidency8Samples"- vkSparseResidency8Samples :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidency16Samples"- vkSparseResidency16Samples :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "sparseResidencyAliased"- vkSparseResidencyAliased :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "variableMultisampleRate"- vkVariableMultisampleRate :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceFeatures" "inheritedQueries"- vkInheritedQueries :: VkBool32- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceFeatures where- sizeOf ~_ = 220- alignment ~_ = 4- peek ptr = VkPhysicalDeviceFeatures <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 52)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 60)- <*> peek (ptr `plusPtr` 64)- <*> peek (ptr `plusPtr` 68)- <*> peek (ptr `plusPtr` 72)- <*> peek (ptr `plusPtr` 76)- <*> peek (ptr `plusPtr` 80)- <*> peek (ptr `plusPtr` 84)- <*> peek (ptr `plusPtr` 88)- <*> peek (ptr `plusPtr` 92)- <*> peek (ptr `plusPtr` 96)- <*> peek (ptr `plusPtr` 100)- <*> peek (ptr `plusPtr` 104)- <*> peek (ptr `plusPtr` 108)- <*> peek (ptr `plusPtr` 112)- <*> peek (ptr `plusPtr` 116)- <*> peek (ptr `plusPtr` 120)- <*> peek (ptr `plusPtr` 124)- <*> peek (ptr `plusPtr` 128)- <*> peek (ptr `plusPtr` 132)- <*> peek (ptr `plusPtr` 136)- <*> peek (ptr `plusPtr` 140)- <*> peek (ptr `plusPtr` 144)- <*> peek (ptr `plusPtr` 148)- <*> peek (ptr `plusPtr` 152)- <*> peek (ptr `plusPtr` 156)- <*> peek (ptr `plusPtr` 160)- <*> peek (ptr `plusPtr` 164)- <*> peek (ptr `plusPtr` 168)- <*> peek (ptr `plusPtr` 172)- <*> peek (ptr `plusPtr` 176)- <*> peek (ptr `plusPtr` 180)- <*> peek (ptr `plusPtr` 184)- <*> peek (ptr `plusPtr` 188)- <*> peek (ptr `plusPtr` 192)- <*> peek (ptr `plusPtr` 196)- <*> peek (ptr `plusPtr` 200)- <*> peek (ptr `plusPtr` 204)- <*> peek (ptr `plusPtr` 208)- <*> peek (ptr `plusPtr` 212)- <*> peek (ptr `plusPtr` 216)- poke ptr poked = poke (ptr `plusPtr` 0) (vkRobustBufferAccess (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 4) (vkFullDrawIndexUint32 (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 8) (vkImageCubeArray (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 12) (vkIndependentBlend (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 16) (vkGeometryShader (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 20) (vkTessellationShader (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 24) (vkSampleRateShading (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 28) (vkDualSrcBlend (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 32) (vkLogicOp (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 36) (vkMultiDrawIndirect (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 40) (vkDrawIndirectFirstInstance (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 44) (vkDepthClamp (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 48) (vkDepthBiasClamp (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 52) (vkFillModeNonSolid (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 56) (vkDepthBounds (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 60) (vkWideLines (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 64) (vkLargePoints (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 68) (vkAlphaToOne (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 72) (vkMultiViewport (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 76) (vkSamplerAnisotropy (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 80) (vkTextureCompressionETC2 (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 84) (vkTextureCompressionASTC_LDR (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 88) (vkTextureCompressionBC (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 92) (vkOcclusionQueryPrecise (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 96) (vkPipelineStatisticsQuery (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 100) (vkVertexPipelineStoresAndAtomics (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 104) (vkFragmentStoresAndAtomics (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 108) (vkShaderTessellationAndGeometryPointSize (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 112) (vkShaderImageGatherExtended (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 116) (vkShaderStorageImageExtendedFormats (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 120) (vkShaderStorageImageMultisample (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 124) (vkShaderStorageImageReadWithoutFormat (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 128) (vkShaderStorageImageWriteWithoutFormat (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 132) (vkShaderUniformBufferArrayDynamicIndexing (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 136) (vkShaderSampledImageArrayDynamicIndexing (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 140) (vkShaderStorageBufferArrayDynamicIndexing (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 144) (vkShaderStorageImageArrayDynamicIndexing (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 148) (vkShaderClipDistance (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 152) (vkShaderCullDistance (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 156) (vkShaderFloat64 (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 160) (vkShaderInt64 (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 164) (vkShaderInt16 (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 168) (vkShaderResourceResidency (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 172) (vkShaderResourceMinLod (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 176) (vkSparseBinding (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 180) (vkSparseResidencyBuffer (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 184) (vkSparseResidencyImage2D (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 188) (vkSparseResidencyImage3D (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 192) (vkSparseResidency2Samples (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 196) (vkSparseResidency4Samples (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 200) (vkSparseResidency8Samples (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 204) (vkSparseResidency16Samples (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 208) (vkSparseResidencyAliased (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 212) (vkVariableMultisampleRate (poked :: VkPhysicalDeviceFeatures))- *> poke (ptr `plusPtr` 216) (vkInheritedQueries (poked :: VkPhysicalDeviceFeatures))--- | VkPhysicalDeviceSparseProperties - Structure specifying physical device--- sparse memory properties------ = See Also------ @VkBool32@, 'VkPhysicalDeviceProperties'-data VkPhysicalDeviceSparseProperties = VkPhysicalDeviceSparseProperties- { -- | @residencyStandard2DBlockShape@ is @VK_TRUE@ if the physical device will- -- access all single-sample 2D sparse resources using the standard sparse- -- image block shapes (based on image format), as described in the- -- [Standard Sparse Image Block Shapes (Single- -- Sample)](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#sparsememory-sparseblockshapessingle)- -- table. If this property is not supported the value returned in the- -- @imageGranularity@ member of the @VkSparseImageFormatProperties@- -- structure for single-sample 2D images is not /required/ to match the- -- standard sparse image block dimensions listed in the table.- vkResidencyStandard2DBlockShape :: VkBool32- , -- | @residencyStandard2DMultisampleBlockShape@ is @VK_TRUE@ if the physical- -- device will access all multisample 2D sparse resources using the- -- standard sparse image block shapes (based on image format), as described- -- in the [Standard Sparse Image Block Shapes- -- (MSAA)](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#sparsememory-sparseblockshapesmsaa)- -- table. If this property is not supported, the value returned in the- -- @imageGranularity@ member of the @VkSparseImageFormatProperties@- -- structure for multisample 2D images is not /required/ to match the- -- standard sparse image block dimensions listed in the table.- vkResidencyStandard2DMultisampleBlockShape :: VkBool32- , -- | @residencyStandard3DBlockShape@ is @VK_TRUE@ if the physical device will- -- access all 3D sparse resources using the standard sparse image block- -- shapes (based on image format), as described in the [Standard Sparse- -- Image Block Shapes (Single- -- Sample)](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#sparsememory-sparseblockshapessingle)- -- table. If this property is not supported, the value returned in the- -- @imageGranularity@ member of the @VkSparseImageFormatProperties@- -- structure for 3D images is not /required/ to match the standard sparse- -- image block dimensions listed in the table.- vkResidencyStandard3DBlockShape :: VkBool32- , -- | @residencyAlignedMipSize@ is @VK_TRUE@ if images with mip level- -- dimensions that are not integer multiples of the corresponding- -- dimensions of the sparse image block /may/ be placed in the mip tail. If- -- this property is not reported, only mip levels with dimensions smaller- -- than the @imageGranularity@ member of the- -- @VkSparseImageFormatProperties@ structure will be placed in the mip- -- tail. If this property is reported the implementation is allowed to- -- return @VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT@ in the @flags@- -- member of @VkSparseImageFormatProperties@, indicating that mip level- -- dimensions that are not integer multiples of the corresponding- -- dimensions of the sparse image block will be placed in the mip tail.- vkResidencyAlignedMipSize :: VkBool32- , -- | @residencyNonResidentStrict@ specifies whether the physical device /can/- -- consistently access non-resident regions of a resource. If this property- -- is @VK_TRUE@, access to non-resident regions of resources will be- -- guaranteed to return values as if the resource were populated with 0;- -- writes to non-resident regions will be discarded.- vkResidencyNonResidentStrict :: VkBool32- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceSparseProperties where- sizeOf ~_ = 20- alignment ~_ = 4- peek ptr = VkPhysicalDeviceSparseProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkResidencyStandard2DBlockShape (poked :: VkPhysicalDeviceSparseProperties))- *> poke (ptr `plusPtr` 4) (vkResidencyStandard2DMultisampleBlockShape (poked :: VkPhysicalDeviceSparseProperties))- *> poke (ptr `plusPtr` 8) (vkResidencyStandard3DBlockShape (poked :: VkPhysicalDeviceSparseProperties))- *> poke (ptr `plusPtr` 12) (vkResidencyAlignedMipSize (poked :: VkPhysicalDeviceSparseProperties))- *> poke (ptr `plusPtr` 16) (vkResidencyNonResidentStrict (poked :: VkPhysicalDeviceSparseProperties))--- | VkPhysicalDeviceLimits - Structure reporting implementation-dependent--- physical device limits------ = Members------ - @maxImageDimension1D@ is the maximum dimension (@width@) supported--- for all images created with an @imageType@ of @VK_IMAGE_TYPE_1D@.------ - @maxImageDimension2D@ is the maximum dimension (@width@ or @height@)--- supported for all images created with an @imageType@ of--- @VK_IMAGE_TYPE_2D@ and without @VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT@--- set in @flags@.------ - @maxImageDimension3D@ is the maximum dimension (@width@, @height@,--- or @depth@) supported for all images created with an @imageType@ of--- @VK_IMAGE_TYPE_3D@.------ - @maxImageDimensionCube@ is the maximum dimension (@width@ or--- @height@) supported for all images created with an @imageType@ of--- @VK_IMAGE_TYPE_2D@ and with @VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT@--- set in @flags@.------ - @maxImageArrayLayers@ is the maximum number of layers--- (@arrayLayers@) for an image.------ - @maxTexelBufferElements@ is the maximum number of addressable texels--- for a buffer view created on a buffer which was created with the--- @VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT@ or--- @VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT@ set in the @usage@ member--- of the @VkBufferCreateInfo@ structure.------ - @maxUniformBufferRange@ is the maximum value that /can/ be specified--- in the @range@ member of any--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorBufferInfo'--- structures passed to a call to--- 'Graphics.Vulkan.Core10.DescriptorSet.vkUpdateDescriptorSets' for--- descriptors of type @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@.------ - @maxStorageBufferRange@ is the maximum value that /can/ be specified--- in the @range@ member of any--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorBufferInfo'--- structures passed to a call to--- 'Graphics.Vulkan.Core10.DescriptorSet.vkUpdateDescriptorSets' for--- descriptors of type @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@.------ - @maxPushConstantsSize@ is the maximum size, in bytes, of the pool of--- push constant memory. For each of the push constant ranges indicated--- by the @pPushConstantRanges@ member of the--- @VkPipelineLayoutCreateInfo@ structure, (@offset@ + @size@) /must/--- be less than or equal to this limit.------ - @maxMemoryAllocationCount@ is the maximum number of device memory--- allocations, as created by--- 'Graphics.Vulkan.Core10.Memory.vkAllocateMemory', which /can/--- simultaneously exist.------ - @maxSamplerAllocationCount@ is the maximum number of sampler--- objects, as created by--- 'Graphics.Vulkan.Core10.Sampler.vkCreateSampler', which /can/--- simultaneously exist on a device.------ - @bufferImageGranularity@ is the granularity, in bytes, at which--- buffer or linear image resources, and optimal image resources /can/--- be bound to adjacent offsets in the same @VkDeviceMemory@ object--- without aliasing. See [Buffer-Image--- Granularity](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-bufferimagegranularity)--- for more details.------ - @sparseAddressSpaceSize@ is the total amount of address space--- available, in bytes, for sparse memory resources. This is an upper--- bound on the sum of the size of all sparse resources, regardless of--- whether any memory is bound to them.------ - @maxBoundDescriptorSets@ is the maximum number of descriptor sets--- that /can/ be simultaneously used by a pipeline. All @DescriptorSet@--- decorations in shader modules /must/ have a value less than--- @maxBoundDescriptorSets@. See--- [{html_spec_relative}#descriptorsets-sets](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-sets).------ - @maxPerStageDescriptorSamplers@ is the maximum number of samplers--- that /can/ be accessible to a single shader stage in a pipeline--- layout. Descriptors with a type of @VK_DESCRIPTOR_TYPE_SAMPLER@ or--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@ count against this--- limit. Only descriptors in descriptor set layouts created without--- the @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@--- bit set count against this limit. A descriptor is accessible to a--- shader stage when the @stageFlags@ member of the--- @VkDescriptorSetLayoutBinding@ structure has the bit for that shader--- stage set. See--- [{html_spec_relative}#descriptorsets-sampler](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-sampler)--- and--- [{html_spec_relative}#descriptorsets-combinedimagesampler](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-combinedimagesampler).------ - @maxPerStageDescriptorUniformBuffers@ is the maximum number of--- uniform buffers that /can/ be accessible to a single shader stage in--- a pipeline layout. Descriptors with a type of--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ count against this--- limit. Only descriptors in descriptor set layouts created without--- the @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@--- bit set count against this limit. A descriptor is accessible to a--- shader stage when the @stageFlags@ member of the--- @VkDescriptorSetLayoutBinding@ structure has the bit for that shader--- stage set. See--- [{html_spec_relative}#descriptorsets-uniformbuffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformbuffer)--- and--- [{html_spec_relative}#descriptorsets-uniformbufferdynamic](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic).------ - @maxPerStageDescriptorStorageBuffers@ is the maximum number of--- storage buffers that /can/ be accessible to a single shader stage in--- a pipeline layout. Descriptors with a type of--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ count against this--- limit. Only descriptors in descriptor set layouts created without--- the @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@--- bit set count against this limit. A descriptor is accessible to a--- pipeline shader stage when the @stageFlags@ member of the--- @VkDescriptorSetLayoutBinding@ structure has the bit for that shader--- stage set. See--- [{html_spec_relative}#descriptorsets-storagebuffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagebuffer)--- and--- [{html_spec_relative}#descriptorsets-storagebufferdynamic](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic).------ - @maxPerStageDescriptorSampledImages@ is the maximum number of--- sampled images that /can/ be accessible to a single shader stage in--- a pipeline layout. Descriptors with a type of--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@,--- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@, or--- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ count against this limit.--- Only descriptors in descriptor set layouts created without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set count against this limit. A descriptor is accessible to a--- pipeline shader stage when the @stageFlags@ member of the--- @VkDescriptorSetLayoutBinding@ structure has the bit for that shader--- stage set. See--- [{html_spec_relative}#descriptorsets-combinedimagesampler](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-combinedimagesampler),--- [{html_spec_relative}#descriptorsets-sampledimage](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-sampledimage),--- and--- [{html_spec_relative}#descriptorsets-uniformtexelbuffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer).------ - @maxPerStageDescriptorStorageImages@ is the maximum number of--- storage images that /can/ be accessible to a single shader stage in--- a pipeline layout. Descriptors with a type of--- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@, or--- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ count against this limit.--- Only descriptors in descriptor set layouts created without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set count against this limit. A descriptor is accessible to a--- pipeline shader stage when the @stageFlags@ member of the--- @VkDescriptorSetLayoutBinding@ structure has the bit for that shader--- stage set. See--- [{html_spec_relative}#descriptorsets-storageimage](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storageimage),--- and--- [{html_spec_relative}#descriptorsets-storagetexelbuffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer).------ - @maxPerStageDescriptorInputAttachments@ is the maximum number of--- input attachments that /can/ be accessible to a single shader stage--- in a pipeline layout. Descriptors with a type of--- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ count against this limit. Only--- descriptors in descriptor set layouts created without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set count against this limit. A descriptor is accessible to a--- pipeline shader stage when the @stageFlags@ member of the--- @VkDescriptorSetLayoutBinding@ structure has the bit for that shader--- stage set. These are only supported for the fragment stage. See--- [{html_spec_relative}#descriptorsets-inputattachment](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-inputattachment).------ - @maxPerStageResources@ is the maximum number of resources that /can/--- be accessible to a single shader stage in a pipeline layout.--- Descriptors with a type of--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@,--- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@,--- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@,--- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@,--- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@,--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@,--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@,--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@,--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@, or--- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ count against this limit. Only--- descriptors in descriptor set layouts created without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set count against this limit. For the fragment shader stage the--- framebuffer color attachments also count against this limit.------ - @maxDescriptorSetSamplers@ is the maximum number of samplers that--- /can/ be included in descriptor bindings in a pipeline layout across--- all pipeline shader stages and descriptor set numbers. Descriptors--- with a type of @VK_DESCRIPTOR_TYPE_SAMPLER@ or--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@ count against this--- limit. Only descriptors in descriptor set layouts created without--- the @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@--- bit set count against this limit. See--- [{html_spec_relative}#descriptorsets-sampler](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-sampler)--- and--- [{html_spec_relative}#descriptorsets-combinedimagesampler](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-combinedimagesampler).------ - @maxDescriptorSetUniformBuffers@ is the maximum number of uniform--- buffers that /can/ be included in descriptor bindings in a pipeline--- layout across all pipeline shader stages and descriptor set numbers.--- Descriptors with a type of @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ count against this--- limit. Only descriptors in descriptor set layouts created without--- the @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@--- bit set count against this limit. See--- [{html_spec_relative}#descriptorsets-uniformbuffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformbuffer)--- and--- [{html_spec_relative}#descriptorsets-uniformbufferdynamic](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic).------ - @maxDescriptorSetUniformBuffersDynamic@ is the maximum number of--- dynamic uniform buffers that /can/ be included in descriptor--- bindings in a pipeline layout across all pipeline shader stages and--- descriptor set numbers. Descriptors with a type of--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ count against this--- limit. Only descriptors in descriptor set layouts created without--- the @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@--- bit set count against this limit. See--- [{html_spec_relative}#descriptorsets-uniformbufferdynamic](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic).------ - @maxDescriptorSetStorageBuffers@ is the maximum number of storage--- buffers that /can/ be included in descriptor bindings in a pipeline--- layout across all pipeline shader stages and descriptor set numbers.--- Descriptors with a type of @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ count against this--- limit. Only descriptors in descriptor set layouts created without--- the @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@--- bit set count against this limit. See--- [{html_spec_relative}#descriptorsets-storagebuffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagebuffer)--- and--- [{html_spec_relative}#descriptorsets-storagebufferdynamic](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic).------ - @maxDescriptorSetStorageBuffersDynamic@ is the maximum number of--- dynamic storage buffers that /can/ be included in descriptor--- bindings in a pipeline layout across all pipeline shader stages and--- descriptor set numbers. Descriptors with a type of--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ count against this--- limit. Only descriptors in descriptor set layouts created without--- the @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@--- bit set count against this limit. See--- [{html_spec_relative}#descriptorsets-storagebufferdynamic](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic).------ - @maxDescriptorSetSampledImages@ is the maximum number of sampled--- images that /can/ be included in descriptor bindings in a pipeline--- layout across all pipeline shader stages and descriptor set numbers.--- Descriptors with a type of--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@,--- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@, or--- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ count against this limit.--- Only descriptors in descriptor set layouts created without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set count against this limit. See--- [{html_spec_relative}#descriptorsets-combinedimagesampler](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-combinedimagesampler),--- [{html_spec_relative}#descriptorsets-sampledimage](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-sampledimage),--- and--- [{html_spec_relative}#descriptorsets-uniformtexelbuffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer).------ - @maxDescriptorSetStorageImages@ is the maximum number of storage--- images that /can/ be included in descriptor bindings in a pipeline--- layout across all pipeline shader stages and descriptor set numbers.--- Descriptors with a type of @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@, or--- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ count against this limit.--- Only descriptors in descriptor set layouts created without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set count against this limit. See--- [{html_spec_relative}#descriptorsets-storageimage](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storageimage),--- and--- [{html_spec_relative}#descriptorsets-storagetexelbuffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer).------ - @maxDescriptorSetInputAttachments@ is the maximum number of input--- attachments that /can/ be included in descriptor bindings in a--- pipeline layout across all pipeline shader stages and descriptor set--- numbers. Descriptors with a type of--- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ count against this limit. Only--- descriptors in descriptor set layouts created without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set count against this limit. See--- [{html_spec_relative}#descriptorsets-inputattachment](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-inputattachment).------ - @maxVertexInputAttributes@ is the maximum number of vertex input--- attributes that /can/ be specified for a graphics pipeline. These--- are described in the array of @VkVertexInputAttributeDescription@--- structures that are provided at graphics pipeline creation time via--- the @pVertexAttributeDescriptions@ member of the--- @VkPipelineVertexInputStateCreateInfo@ structure. See--- [{html_spec_relative}#fxvertex-attrib](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fxvertex-attrib)--- and--- [{html_spec_relative}#fxvertex-input](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fxvertex-input).------ - @maxVertexInputBindings@ is the maximum number of vertex buffers--- that /can/ be specified for providing vertex attributes to a--- graphics pipeline. These are described in the array of--- @VkVertexInputBindingDescription@ structures that are provided at--- graphics pipeline creation time via the @pVertexBindingDescriptions@--- member of the @VkPipelineVertexInputStateCreateInfo@ structure. The--- @binding@ member of @VkVertexInputBindingDescription@ /must/ be less--- than this limit. See--- [{html_spec_relative}#fxvertex-input](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fxvertex-input).------ - @maxVertexInputAttributeOffset@ is the maximum vertex input--- attribute offset that /can/ be added to the vertex input binding--- stride. The @offset@ member of the--- @VkVertexInputAttributeDescription@ structure /must/ be less than or--- equal to this limit. See--- [{html_spec_relative}#fxvertex-input](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fxvertex-input).------ - @maxVertexInputBindingStride@ is the maximum vertex input binding--- stride that /can/ be specified in a vertex input binding. The--- @stride@ member of the @VkVertexInputBindingDescription@ structure--- /must/ be less than or equal to this limit. See--- [{html_spec_relative}#fxvertex-input](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fxvertex-input).------ - @maxVertexOutputComponents@ is the maximum number of components of--- output variables which /can/ be output by a vertex shader. See--- [{html_spec_relative}#shaders-vertex](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-vertex).------ - @maxTessellationGenerationLevel@ is the maximum tessellation--- generation level supported by the fixed-function tessellation--- primitive generator. See--- [{html_spec_relative}#tessellation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#tessellation).------ - @maxTessellationPatchSize@ is the maximum patch size, in vertices,--- of patches that /can/ be processed by the tessellation control--- shader and tessellation primitive generator. The--- @patchControlPoints@ member of the--- @VkPipelineTessellationStateCreateInfo@ structure specified at--- pipeline creation time and the value provided in the--- @OutputVertices@ execution mode of shader modules /must/ be less--- than or equal to this limit. See--- [{html_spec_relative}#tessellation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#tessellation).------ - @maxTessellationControlPerVertexInputComponents@ is the maximum--- number of components of input variables which /can/ be provided as--- per-vertex inputs to the tessellation control shader stage.------ - @maxTessellationControlPerVertexOutputComponents@ is the maximum--- number of components of per-vertex output variables which /can/ be--- output from the tessellation control shader stage.------ - @maxTessellationControlPerPatchOutputComponents@ is the maximum--- number of components of per-patch output variables which /can/ be--- output from the tessellation control shader stage.------ - @maxTessellationControlTotalOutputComponents@ is the maximum total--- number of components of per-vertex and per-patch output variables--- which /can/ be output from the tessellation control shader stage.------ - @maxTessellationEvaluationInputComponents@ is the maximum number of--- components of input variables which /can/ be provided as per-vertex--- inputs to the tessellation evaluation shader stage.------ - @maxTessellationEvaluationOutputComponents@ is the maximum number of--- components of per-vertex output variables which /can/ be output from--- the tessellation evaluation shader stage.------ - @maxGeometryShaderInvocations@ is the maximum invocation count--- supported for instanced geometry shaders. The value provided in the--- @Invocations@ execution mode of shader modules /must/ be less than--- or equal to this limit. See--- [{html_spec_relative}#geometry](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#geometry).------ - @maxGeometryInputComponents@ is the maximum number of components of--- input variables which /can/ be provided as inputs to the geometry--- shader stage.------ - @maxGeometryOutputComponents@ is the maximum number of components of--- output variables which /can/ be output from the geometry shader--- stage.------ - @maxGeometryOutputVertices@ is the maximum number of vertices which--- /can/ be emitted by any geometry shader.------ - @maxGeometryTotalOutputComponents@ is the maximum total number of--- components of output, across all emitted vertices, which /can/ be--- output from the geometry shader stage.------ - @maxFragmentInputComponents@ is the maximum number of components of--- input variables which /can/ be provided as inputs to the fragment--- shader stage.------ - @maxFragmentOutputAttachments@ is the maximum number of output--- attachments which /can/ be written to by the fragment shader stage.------ - @maxFragmentDualSrcAttachments@ is the maximum number of output--- attachments which /can/ be written to by the fragment shader stage--- when blending is enabled and one of the dual source blend modes is--- in use. See--- [{html_spec_relative}#framebuffer-dsb](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-dsb)--- and--- [dualSrcBlend](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-dualSrcBlend).------ - @maxFragmentCombinedOutputResources@ is the total number of storage--- buffers, storage images, and output buffers which /can/ be used in--- the fragment shader stage.------ - @maxComputeSharedMemorySize@ is the maximum total storage size, in--- bytes, of all variables declared with the @WorkgroupLocal@ storage--- class in shader modules (or with the @shared@ storage qualifier in--- GLSL) in the compute shader stage.------ - @maxComputeWorkGroupCount@[3] is the maximum number of local--- workgroups that /can/ be dispatched by a single dispatch command.--- These three values represent the maximum number of local workgroups--- for the X, Y, and Z dimensions, respectively. The workgroup count--- parameters to the dispatch commands /must/ be less than or equal to--- the corresponding limit. See--- [{html_spec_relative}#dispatch](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#dispatch).------ - @maxComputeWorkGroupInvocations@ is the maximum total number of--- compute shader invocations in a single local workgroup. The product--- of the X, Y, and Z sizes as specified by the @LocalSize@ execution--- mode in shader modules and by the object decorated by the--- @WorkgroupSize@ decoration /must/ be less than or equal to this--- limit.------ - @maxComputeWorkGroupSize@[3] is the maximum size of a local compute--- workgroup, per dimension. These three values represent the maximum--- local workgroup size in the X, Y, and Z dimensions, respectively.--- The @x@, @y@, and @z@ sizes specified by the @LocalSize@ execution--- mode and by the object decorated by the @WorkgroupSize@ decoration--- in shader modules /must/ be less than or equal to the corresponding--- limit.------ - @subPixelPrecisionBits@ is the number of bits of subpixel precision--- in framebuffer coordinates xf and yf. See--- [{html_spec_relative}#primsrast](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#primsrast).------ - @subTexelPrecisionBits@ is the number of bits of precision in the--- division along an axis of an image used for minification and--- magnification filters. 2@subTexelPrecisionBits@ is the actual number--- of divisions along each axis of the image represented. Sub-texel--- values calculated during image sampling will snap to these locations--- when generating the filtered results.------ - @mipmapPrecisionBits@ is the number of bits of division that the LOD--- calculation for mipmap fetching get snapped to when determining the--- contribution from each mip level to the mip filtered results.--- 2@mipmapPrecisionBits@ is the actual number of divisions.------ __Note__------ For example, if this value is 2 bits then when linearly filtering--- between two levels, each level could: contribute: 0%, 33%, 66%, or--- 100% (this is just an example and the amount of contribution--- /should/ be covered by different equations in the spec).------ - @maxDrawIndexedIndexValue@ is the maximum index value that /can/ be--- used for indexed draw calls when using 32-bit indices. This excludes--- the primitive restart index value of 0xFFFFFFFF. See--- [fullDrawIndexUint32](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-fullDrawIndexUint32).------ - @maxDrawIndirectCount@ is the maximum draw count that is supported--- for indirect draw calls. See--- [multiDrawIndirect](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiDrawIndirect).------ - @maxSamplerLodBias@ is the maximum absolute sampler LOD bias. The--- sum of the @mipLodBias@ member of the @VkSamplerCreateInfo@--- structure and the @Bias@ operand of image sampling operations in--- shader modules (or 0 if no @Bias@ operand is provided to an image--- sampling operation) are clamped to the range--- [-@maxSamplerLodBias@,+@maxSamplerLodBias@]. See--- [{html_spec_relative}#samplers-mipLodBias](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-mipLodBias).------ - @maxSamplerAnisotropy@ is the maximum degree of sampler anisotropy.--- The maximum degree of anisotropic filtering used for an image--- sampling operation is the minimum of the @maxAnisotropy@ member of--- the @VkSamplerCreateInfo@ structure and this limit. See--- [{html_spec_relative}#samplers-maxAnisotropy](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-maxAnisotropy).------ - @maxViewports@ is the maximum number of active viewports. The--- @viewportCount@ member of the @VkPipelineViewportStateCreateInfo@--- structure that is provided at pipeline creation /must/ be less than--- or equal to this limit.------ - @maxViewportDimensions@[2] are the maximum viewport dimensions in--- the X (width) and Y (height) dimensions, respectively. The maximum--- viewport dimensions /must/ be greater than or equal to the largest--- image which /can/ be created and used as a framebuffer attachment.--- See [Controlling the--- Viewport](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vertexpostproc-viewport).------ - @viewportBoundsRange@[2] is the [minimum, maximum] range that the--- corners of a viewport /must/ be contained in. This range /must/ be--- at least [-2 × @size@, 2 × @size@ - 1], where @size@ =--- max(@maxViewportDimensions@[0], @maxViewportDimensions@[1]). See--- [Controlling the--- Viewport](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vertexpostproc-viewport).------ __Note__------ The intent of the @viewportBoundsRange@ limit is to allow a maximum--- sized viewport to be arbitrarily shifted relative to the output--- target as long as at least some portion intersects. This would give--- a bounds limit of [-@size@ + 1, 2 × @size@ - 1] which would allow--- all possible non-empty-set intersections of the output target and--- the viewport. Since these numbers are typically powers of two,--- picking the signed number range using the smallest possible number--- of bits ends up with the specified range.------ - @viewportSubPixelBits@ is the number of bits of subpixel precision--- for viewport bounds. The subpixel precision that floating-point--- viewport bounds are interpreted at is given by this limit.------ - @minMemoryMapAlignment@ is the minimum /required/ alignment, in--- bytes, of host visible memory allocations within the host address--- space. When mapping a memory allocation with--- 'Graphics.Vulkan.Core10.Memory.vkMapMemory', subtracting @offset@--- bytes from the returned pointer will always produce an integer--- multiple of this limit. See--- [{html_spec_relative}#memory-device-hostaccess](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-device-hostaccess).------ - @minTexelBufferOffsetAlignment@ is the minimum /required/ alignment,--- in bytes, for the @offset@ member of the @VkBufferViewCreateInfo@--- structure for texel buffers. When a buffer view is created for a--- buffer which was created with--- @VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT@ or--- @VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT@ set in the @usage@ member--- of the @VkBufferCreateInfo@ structure, the @offset@ /must/ be an--- integer multiple of this limit.------ - @minUniformBufferOffsetAlignment@ is the minimum /required/--- alignment, in bytes, for the @offset@ member of the--- @VkDescriptorBufferInfo@ structure for uniform buffers. When a--- descriptor of type @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ is updated, the @offset@--- /must/ be an integer multiple of this limit. Similarly, dynamic--- offsets for uniform buffers /must/ be multiples of this limit.------ - @minStorageBufferOffsetAlignment@ is the minimum /required/--- alignment, in bytes, for the @offset@ member of the--- @VkDescriptorBufferInfo@ structure for storage buffers. When a--- descriptor of type @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ is updated, the @offset@--- /must/ be an integer multiple of this limit. Similarly, dynamic--- offsets for storage buffers /must/ be multiples of this limit.------ - @minTexelOffset@ is the minimum offset value for the @ConstOffset@--- image operand of any of the @OpImageSample@* or @OpImageFetch@*--- image instructions.------ - @maxTexelOffset@ is the maximum offset value for the @ConstOffset@--- image operand of any of the @OpImageSample@* or @OpImageFetch@*--- image instructions.------ - @minTexelGatherOffset@ is the minimum offset value for the @Offset@--- or @ConstOffsets@ image operands of any of the @OpImage@*@Gather@--- image instructions.------ - @maxTexelGatherOffset@ is the maximum offset value for the @Offset@--- or @ConstOffsets@ image operands of any of the @OpImage@*@Gather@--- image instructions.------ - @minInterpolationOffset@ is the minimum negative offset value for--- the @offset@ operand of the @InterpolateAtOffset@ extended--- instruction.------ - @maxInterpolationOffset@ is the maximum positive offset value for--- the @offset@ operand of the @InterpolateAtOffset@ extended--- instruction.------ - @subPixelInterpolationOffsetBits@ is the number of subpixel--- fractional bits that the @x@ and @y@ offsets to the--- @InterpolateAtOffset@ extended instruction /may/ be rounded to as--- fixed-point values.------ - @maxFramebufferWidth@ is the maximum width for a framebuffer. The--- @width@ member of the @VkFramebufferCreateInfo@ structure /must/ be--- less than or equal to this limit.------ - @maxFramebufferHeight@ is the maximum height for a framebuffer. The--- @height@ member of the @VkFramebufferCreateInfo@ structure /must/ be--- less than or equal to this limit.------ - @maxFramebufferLayers@ is the maximum layer count for a layered--- framebuffer. The @layers@ member of the @VkFramebufferCreateInfo@--- structure /must/ be less than or equal to this limit.------ - @framebufferColorSampleCounts@ is a bitmask1 of--- 'VkSampleCountFlagBits' indicating the color sample counts that are--- supported for all framebuffer color attachments with floating- or--- fixed-point formats. There is no limit that specifies the color--- sample counts that are supported for all color attachments with--- integer formats.------ - @framebufferDepthSampleCounts@ is a bitmask1 of--- 'VkSampleCountFlagBits' indicating the supported depth sample counts--- for all framebuffer depth\/stencil attachments, when the format--- includes a depth component.------ - @framebufferStencilSampleCounts@ is a bitmask1 of--- 'VkSampleCountFlagBits' indicating the supported stencil sample--- counts for all framebuffer depth\/stencil attachments, when the--- format includes a stencil component.------ - @framebufferNoAttachmentsSampleCounts@ is a bitmask1 of--- 'VkSampleCountFlagBits' indicating the supported sample counts for a--- framebuffer with no attachments.------ - @maxColorAttachments@ is the maximum number of color attachments--- that /can/ be used by a subpass in a render pass. The--- @colorAttachmentCount@ member of the @VkSubpassDescription@--- structure /must/ be less than or equal to this limit.------ - @sampledImageColorSampleCounts@ is a bitmask1 of--- 'VkSampleCountFlagBits' indicating the sample counts supported for--- all 2D images created with @VK_IMAGE_TILING_OPTIMAL@, @usage@--- containing @VK_IMAGE_USAGE_SAMPLED_BIT@, and a non-integer color--- format.------ - @sampledImageIntegerSampleCounts@ is a bitmask1 of--- 'VkSampleCountFlagBits' indicating the sample counts supported for--- all 2D images created with @VK_IMAGE_TILING_OPTIMAL@, @usage@--- containing @VK_IMAGE_USAGE_SAMPLED_BIT@, and an integer color--- format.------ - @sampledImageDepthSampleCounts@ is a bitmask1 of--- 'VkSampleCountFlagBits' indicating the sample counts supported for--- all 2D images created with @VK_IMAGE_TILING_OPTIMAL@, @usage@--- containing @VK_IMAGE_USAGE_SAMPLED_BIT@, and a depth format.------ - @sampledImageStencilSampleCounts@ is a bitmask1 of--- 'VkSampleCountFlagBits' indicating the sample supported for all 2D--- images created with @VK_IMAGE_TILING_OPTIMAL@, @usage@ containing--- @VK_IMAGE_USAGE_SAMPLED_BIT@, and a stencil format.------ - @storageImageSampleCounts@ is a bitmask1 of 'VkSampleCountFlagBits'--- indicating the sample counts supported for all 2D images created--- with @VK_IMAGE_TILING_OPTIMAL@, and @usage@ containing--- @VK_IMAGE_USAGE_STORAGE_BIT@.------ - @maxSampleMaskWords@ is the maximum number of array elements of a--- variable decorated with the @SampleMask@ built-in decoration.------ - @timestampComputeAndGraphics@ specifies support for timestamps on--- all graphics and compute queues. If this limit is set to @VK_TRUE@,--- all queues that advertise the @VK_QUEUE_GRAPHICS_BIT@ or--- @VK_QUEUE_COMPUTE_BIT@ in the--- @VkQueueFamilyProperties@::@queueFlags@ support--- @VkQueueFamilyProperties@::@timestampValidBits@ of at least 36. See--- [Timestamp--- Queries](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-timestamps).------ - @timestampPeriod@ is the number of nanoseconds /required/ for a--- timestamp query to be incremented by 1. See [Timestamp--- Queries](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-timestamps).------ - @maxClipDistances@ is the maximum number of clip distances that--- /can/ be used in a single shader stage. The size of any array--- declared with the @ClipDistance@ built-in decoration in a shader--- module /must/ be less than or equal to this limit.------ - @maxCullDistances@ is the maximum number of cull distances that--- /can/ be used in a single shader stage. The size of any array--- declared with the @CullDistance@ built-in decoration in a shader--- module /must/ be less than or equal to this limit.------ - @maxCombinedClipAndCullDistances@ is the maximum combined number of--- clip and cull distances that /can/ be used in a single shader stage.--- The sum of the sizes of any pair of arrays declared with the--- @ClipDistance@ and @CullDistance@ built-in decoration used by a--- single shader stage in a shader module /must/ be less than or equal--- to this limit.------ - @discreteQueuePriorities@ is the number of discrete priorities that--- /can/ be assigned to a queue based on the value of each member of--- @VkDeviceQueueCreateInfo@::@pQueuePriorities@. This /must/ be at--- least 2, and levels /must/ be spread evenly over the range, with at--- least one level at 1.0, and another at 0.0. See--- [{html_spec_relative}#devsandqueues-priority](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-priority).------ - @pointSizeRange@[2] is the range [@minimum@,@maximum@] of supported--- sizes for points. Values written to variables decorated with the--- @PointSize@ built-in decoration are clamped to this range.------ - @lineWidthRange@[2] is the range [@minimum@,@maximum@] of supported--- widths for lines. Values specified by the @lineWidth@ member of the--- @VkPipelineRasterizationStateCreateInfo@ or the @lineWidth@--- parameter to @vkCmdSetLineWidth@ are clamped to this range.------ - @pointSizeGranularity@ is the granularity of supported point sizes.--- Not all point sizes in the range defined by @pointSizeRange@ are--- supported. This limit specifies the granularity (or increment)--- between successive supported point sizes.------ - @lineWidthGranularity@ is the granularity of supported line widths.--- Not all line widths in the range defined by @lineWidthRange@ are--- supported. This limit specifies the granularity (or increment)--- between successive supported line widths.------ - @strictLines@ specifies whether lines are rasterized according to--- the preferred method of rasterization. If set to @VK_FALSE@, lines--- /may/ be rasterized under a relaxed set of rules. If set to--- @VK_TRUE@, lines are rasterized as per the strict definition. See--- [Basic Line Segment--- Rasterization](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#primsrast-lines-basic).------ - @standardSampleLocations@ specifies whether rasterization uses the--- standard sample locations as documented in--- [Multisampling](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#primsrast-multisampling).--- If set to @VK_TRUE@, the implementation uses the documented sample--- locations. If set to @VK_FALSE@, the implementation /may/ use--- different sample locations.------ - @optimalBufferCopyOffsetAlignment@ is the optimal buffer offset--- alignment in bytes for @vkCmdCopyBufferToImage@ and--- @vkCmdCopyImageToBuffer@. The per texel alignment requirements are--- enforced, but applications /should/ use the optimal alignment for--- optimal performance and power use.------ - @optimalBufferCopyRowPitchAlignment@ is the optimal buffer row pitch--- alignment in bytes for @vkCmdCopyBufferToImage@ and--- @vkCmdCopyImageToBuffer@. Row pitch is the number of bytes between--- texels with the same X coordinate in adjacent rows (Y coordinates--- differ by one). The per texel alignment requirements are enforced,--- but applications /should/ use the optimal alignment for optimal--- performance and power use.------ - @nonCoherentAtomSize@ is the size and alignment in bytes that bounds--- concurrent access to [host-mapped device--- memory](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-device-hostaccess).------ - 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.VkPhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@--- is the maximum number of active discard rectangles. This limit can--- be queried by setting the @pNext@ pointer from a--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2'--- object to an instance of--- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.VkPhysicalDeviceDiscardRectanglePropertiesEXT'--- and using @vkGetPhysicalDeviceProperties2@ to fill out the members.------ - 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkPhysicalDevicePointClippingProperties'::@pointClippingBehavior@--- defines the clipping behavior of points. This limit can be queried--- by setting the @pNext@ pointer from a--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2'--- object to an instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkPhysicalDevicePointClippingProperties'--- and using @vkGetPhysicalDeviceProperties2@ to fill out the members.------ - @VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT@::@maxVertexAttribDivisor@--- is the maximum value of the number of instances that will repeat the--- value of vertex attribute data when instanced rendering is enabled.--- This limit can be queried by setting the @pNext@ pointer from a--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2'--- object to an instance of--- 'Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT'--- and using @vkGetPhysicalDeviceProperties2@ to fill out the members.------ = Description------ [1]--- For all bitmasks of 'VkSampleCountFlagBits', the sample count limits--- defined above represent the minimum supported sample counts for each--- image type. Individual images /may/ support additional sample--- counts, which are queried using--- 'vkGetPhysicalDeviceImageFormatProperties' as described in--- [Supported Sample--- Counts](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-supported-sample-counts).------ = See Also------ @VkBool32@, @VkDeviceSize@, 'VkPhysicalDeviceProperties',--- 'VkSampleCountFlags'-data VkPhysicalDeviceLimits = VkPhysicalDeviceLimits- { -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxImageDimension1D"- vkMaxImageDimension1D :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxImageDimension2D"- vkMaxImageDimension2D :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxImageDimension3D"- vkMaxImageDimension3D :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxImageDimensionCube"- vkMaxImageDimensionCube :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxImageArrayLayers"- vkMaxImageArrayLayers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTexelBufferElements"- vkMaxTexelBufferElements :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxUniformBufferRange"- vkMaxUniformBufferRange :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxStorageBufferRange"- vkMaxStorageBufferRange :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxPushConstantsSize"- vkMaxPushConstantsSize :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxMemoryAllocationCount"- vkMaxMemoryAllocationCount :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxSamplerAllocationCount"- vkMaxSamplerAllocationCount :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "bufferImageGranularity"- vkBufferImageGranularity :: VkDeviceSize- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "sparseAddressSpaceSize"- vkSparseAddressSpaceSize :: VkDeviceSize- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxBoundDescriptorSets"- vkMaxBoundDescriptorSets :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxPerStageDescriptorSamplers"- vkMaxPerStageDescriptorSamplers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxPerStageDescriptorUniformBuffers"- vkMaxPerStageDescriptorUniformBuffers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxPerStageDescriptorStorageBuffers"- vkMaxPerStageDescriptorStorageBuffers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxPerStageDescriptorSampledImages"- vkMaxPerStageDescriptorSampledImages :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxPerStageDescriptorStorageImages"- vkMaxPerStageDescriptorStorageImages :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxPerStageDescriptorInputAttachments"- vkMaxPerStageDescriptorInputAttachments :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxPerStageResources"- vkMaxPerStageResources :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxDescriptorSetSamplers"- vkMaxDescriptorSetSamplers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxDescriptorSetUniformBuffers"- vkMaxDescriptorSetUniformBuffers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxDescriptorSetUniformBuffersDynamic"- vkMaxDescriptorSetUniformBuffersDynamic :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxDescriptorSetStorageBuffers"- vkMaxDescriptorSetStorageBuffers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxDescriptorSetStorageBuffersDynamic"- vkMaxDescriptorSetStorageBuffersDynamic :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxDescriptorSetSampledImages"- vkMaxDescriptorSetSampledImages :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxDescriptorSetStorageImages"- vkMaxDescriptorSetStorageImages :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxDescriptorSetInputAttachments"- vkMaxDescriptorSetInputAttachments :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxVertexInputAttributes"- vkMaxVertexInputAttributes :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxVertexInputBindings"- vkMaxVertexInputBindings :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxVertexInputAttributeOffset"- vkMaxVertexInputAttributeOffset :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxVertexInputBindingStride"- vkMaxVertexInputBindingStride :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxVertexOutputComponents"- vkMaxVertexOutputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTessellationGenerationLevel"- vkMaxTessellationGenerationLevel :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTessellationPatchSize"- vkMaxTessellationPatchSize :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTessellationControlPerVertexInputComponents"- vkMaxTessellationControlPerVertexInputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTessellationControlPerVertexOutputComponents"- vkMaxTessellationControlPerVertexOutputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTessellationControlPerPatchOutputComponents"- vkMaxTessellationControlPerPatchOutputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTessellationControlTotalOutputComponents"- vkMaxTessellationControlTotalOutputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTessellationEvaluationInputComponents"- vkMaxTessellationEvaluationInputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTessellationEvaluationOutputComponents"- vkMaxTessellationEvaluationOutputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxGeometryShaderInvocations"- vkMaxGeometryShaderInvocations :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxGeometryInputComponents"- vkMaxGeometryInputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxGeometryOutputComponents"- vkMaxGeometryOutputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxGeometryOutputVertices"- vkMaxGeometryOutputVertices :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxGeometryTotalOutputComponents"- vkMaxGeometryTotalOutputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxFragmentInputComponents"- vkMaxFragmentInputComponents :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxFragmentOutputAttachments"- vkMaxFragmentOutputAttachments :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxFragmentDualSrcAttachments"- vkMaxFragmentDualSrcAttachments :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxFragmentCombinedOutputResources"- vkMaxFragmentCombinedOutputResources :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxComputeSharedMemorySize"- vkMaxComputeSharedMemorySize :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxComputeWorkGroupCount"- vkMaxComputeWorkGroupCount :: Vector 3 Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxComputeWorkGroupInvocations"- vkMaxComputeWorkGroupInvocations :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxComputeWorkGroupSize"- vkMaxComputeWorkGroupSize :: Vector 3 Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "subPixelPrecisionBits"- vkSubPixelPrecisionBits :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "subTexelPrecisionBits"- vkSubTexelPrecisionBits :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "mipmapPrecisionBits"- vkMipmapPrecisionBits :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxDrawIndexedIndexValue"- vkMaxDrawIndexedIndexValue :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxDrawIndirectCount"- vkMaxDrawIndirectCount :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxSamplerLodBias"- vkMaxSamplerLodBias :: CFloat- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxSamplerAnisotropy"- vkMaxSamplerAnisotropy :: CFloat- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxViewports"- vkMaxViewports :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxViewportDimensions"- vkMaxViewportDimensions :: Vector 2 Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "viewportBoundsRange"- vkViewportBoundsRange :: Vector 2 CFloat- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "viewportSubPixelBits"- vkViewportSubPixelBits :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "minMemoryMapAlignment"- vkMinMemoryMapAlignment :: CSize- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "minTexelBufferOffsetAlignment"- vkMinTexelBufferOffsetAlignment :: VkDeviceSize- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "minUniformBufferOffsetAlignment"- vkMinUniformBufferOffsetAlignment :: VkDeviceSize- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "minStorageBufferOffsetAlignment"- vkMinStorageBufferOffsetAlignment :: VkDeviceSize- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "minTexelOffset"- vkMinTexelOffset :: Int32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTexelOffset"- vkMaxTexelOffset :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "minTexelGatherOffset"- vkMinTexelGatherOffset :: Int32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxTexelGatherOffset"- vkMaxTexelGatherOffset :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "minInterpolationOffset"- vkMinInterpolationOffset :: CFloat- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxInterpolationOffset"- vkMaxInterpolationOffset :: CFloat- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "subPixelInterpolationOffsetBits"- vkSubPixelInterpolationOffsetBits :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxFramebufferWidth"- vkMaxFramebufferWidth :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxFramebufferHeight"- vkMaxFramebufferHeight :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxFramebufferLayers"- vkMaxFramebufferLayers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "framebufferColorSampleCounts"- vkFramebufferColorSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "framebufferDepthSampleCounts"- vkFramebufferDepthSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "framebufferStencilSampleCounts"- vkFramebufferStencilSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "framebufferNoAttachmentsSampleCounts"- vkFramebufferNoAttachmentsSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxColorAttachments"- vkMaxColorAttachments :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "sampledImageColorSampleCounts"- vkSampledImageColorSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "sampledImageIntegerSampleCounts"- vkSampledImageIntegerSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "sampledImageDepthSampleCounts"- vkSampledImageDepthSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "sampledImageStencilSampleCounts"- vkSampledImageStencilSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "storageImageSampleCounts"- vkStorageImageSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxSampleMaskWords"- vkMaxSampleMaskWords :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "timestampComputeAndGraphics"- vkTimestampComputeAndGraphics :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "timestampPeriod"- vkTimestampPeriod :: CFloat- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxClipDistances"- vkMaxClipDistances :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxCullDistances"- vkMaxCullDistances :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "maxCombinedClipAndCullDistances"- vkMaxCombinedClipAndCullDistances :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "discreteQueuePriorities"- vkDiscreteQueuePriorities :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "pointSizeRange"- vkPointSizeRange :: Vector 2 CFloat- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "lineWidthRange"- vkLineWidthRange :: Vector 2 CFloat- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "pointSizeGranularity"- vkPointSizeGranularity :: CFloat- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "lineWidthGranularity"- vkLineWidthGranularity :: CFloat- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "strictLines"- vkStrictLines :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "standardSampleLocations"- vkStandardSampleLocations :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "optimalBufferCopyOffsetAlignment"- vkOptimalBufferCopyOffsetAlignment :: VkDeviceSize- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "optimalBufferCopyRowPitchAlignment"- vkOptimalBufferCopyRowPitchAlignment :: VkDeviceSize- , -- No documentation found for Nested "VkPhysicalDeviceLimits" "nonCoherentAtomSize"- vkNonCoherentAtomSize :: VkDeviceSize- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceLimits where- sizeOf ~_ = 504- alignment ~_ = 8- peek ptr = VkPhysicalDeviceLimits <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 64)- <*> peek (ptr `plusPtr` 68)- <*> peek (ptr `plusPtr` 72)- <*> peek (ptr `plusPtr` 76)- <*> peek (ptr `plusPtr` 80)- <*> peek (ptr `plusPtr` 84)- <*> peek (ptr `plusPtr` 88)- <*> peek (ptr `plusPtr` 92)- <*> peek (ptr `plusPtr` 96)- <*> peek (ptr `plusPtr` 100)- <*> peek (ptr `plusPtr` 104)- <*> peek (ptr `plusPtr` 108)- <*> peek (ptr `plusPtr` 112)- <*> peek (ptr `plusPtr` 116)- <*> peek (ptr `plusPtr` 120)- <*> peek (ptr `plusPtr` 124)- <*> peek (ptr `plusPtr` 128)- <*> peek (ptr `plusPtr` 132)- <*> peek (ptr `plusPtr` 136)- <*> peek (ptr `plusPtr` 140)- <*> peek (ptr `plusPtr` 144)- <*> peek (ptr `plusPtr` 148)- <*> peek (ptr `plusPtr` 152)- <*> peek (ptr `plusPtr` 156)- <*> peek (ptr `plusPtr` 160)- <*> peek (ptr `plusPtr` 164)- <*> peek (ptr `plusPtr` 168)- <*> peek (ptr `plusPtr` 172)- <*> peek (ptr `plusPtr` 176)- <*> peek (ptr `plusPtr` 180)- <*> peek (ptr `plusPtr` 184)- <*> peek (ptr `plusPtr` 188)- <*> peek (ptr `plusPtr` 192)- <*> peek (ptr `plusPtr` 196)- <*> peek (ptr `plusPtr` 200)- <*> peek (ptr `plusPtr` 204)- <*> peek (ptr `plusPtr` 208)- <*> peek (ptr `plusPtr` 212)- <*> peek (ptr `plusPtr` 216)- <*> peek (ptr `plusPtr` 220)- <*> peek (ptr `plusPtr` 232)- <*> peek (ptr `plusPtr` 236)- <*> peek (ptr `plusPtr` 248)- <*> peek (ptr `plusPtr` 252)- <*> peek (ptr `plusPtr` 256)- <*> peek (ptr `plusPtr` 260)- <*> peek (ptr `plusPtr` 264)- <*> peek (ptr `plusPtr` 268)- <*> peek (ptr `plusPtr` 272)- <*> peek (ptr `plusPtr` 276)- <*> peek (ptr `plusPtr` 280)- <*> peek (ptr `plusPtr` 288)- <*> peek (ptr `plusPtr` 296)- <*> peek (ptr `plusPtr` 304)- <*> peek (ptr `plusPtr` 312)- <*> peek (ptr `plusPtr` 320)- <*> peek (ptr `plusPtr` 328)- <*> peek (ptr `plusPtr` 336)- <*> peek (ptr `plusPtr` 340)- <*> peek (ptr `plusPtr` 344)- <*> peek (ptr `plusPtr` 348)- <*> peek (ptr `plusPtr` 352)- <*> peek (ptr `plusPtr` 356)- <*> peek (ptr `plusPtr` 360)- <*> peek (ptr `plusPtr` 364)- <*> peek (ptr `plusPtr` 368)- <*> peek (ptr `plusPtr` 372)- <*> peek (ptr `plusPtr` 376)- <*> peek (ptr `plusPtr` 380)- <*> peek (ptr `plusPtr` 384)- <*> peek (ptr `plusPtr` 388)- <*> peek (ptr `plusPtr` 392)- <*> peek (ptr `plusPtr` 396)- <*> peek (ptr `plusPtr` 400)- <*> peek (ptr `plusPtr` 404)- <*> peek (ptr `plusPtr` 408)- <*> peek (ptr `plusPtr` 412)- <*> peek (ptr `plusPtr` 416)- <*> peek (ptr `plusPtr` 420)- <*> peek (ptr `plusPtr` 424)- <*> peek (ptr `plusPtr` 428)- <*> peek (ptr `plusPtr` 432)- <*> peek (ptr `plusPtr` 436)- <*> peek (ptr `plusPtr` 440)- <*> peek (ptr `plusPtr` 444)- <*> peek (ptr `plusPtr` 452)- <*> peek (ptr `plusPtr` 460)- <*> peek (ptr `plusPtr` 464)- <*> peek (ptr `plusPtr` 468)- <*> peek (ptr `plusPtr` 472)- <*> peek (ptr `plusPtr` 480)- <*> peek (ptr `plusPtr` 488)- <*> peek (ptr `plusPtr` 496)- poke ptr poked = poke (ptr `plusPtr` 0) (vkMaxImageDimension1D (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 4) (vkMaxImageDimension2D (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 8) (vkMaxImageDimension3D (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 12) (vkMaxImageDimensionCube (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 16) (vkMaxImageArrayLayers (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 20) (vkMaxTexelBufferElements (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 24) (vkMaxUniformBufferRange (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 28) (vkMaxStorageBufferRange (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 32) (vkMaxPushConstantsSize (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 36) (vkMaxMemoryAllocationCount (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 40) (vkMaxSamplerAllocationCount (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 48) (vkBufferImageGranularity (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 56) (vkSparseAddressSpaceSize (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 64) (vkMaxBoundDescriptorSets (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 68) (vkMaxPerStageDescriptorSamplers (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 72) (vkMaxPerStageDescriptorUniformBuffers (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 76) (vkMaxPerStageDescriptorStorageBuffers (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 80) (vkMaxPerStageDescriptorSampledImages (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 84) (vkMaxPerStageDescriptorStorageImages (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 88) (vkMaxPerStageDescriptorInputAttachments (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 92) (vkMaxPerStageResources (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 96) (vkMaxDescriptorSetSamplers (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 100) (vkMaxDescriptorSetUniformBuffers (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 104) (vkMaxDescriptorSetUniformBuffersDynamic (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 108) (vkMaxDescriptorSetStorageBuffers (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 112) (vkMaxDescriptorSetStorageBuffersDynamic (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 116) (vkMaxDescriptorSetSampledImages (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 120) (vkMaxDescriptorSetStorageImages (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 124) (vkMaxDescriptorSetInputAttachments (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 128) (vkMaxVertexInputAttributes (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 132) (vkMaxVertexInputBindings (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 136) (vkMaxVertexInputAttributeOffset (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 140) (vkMaxVertexInputBindingStride (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 144) (vkMaxVertexOutputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 148) (vkMaxTessellationGenerationLevel (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 152) (vkMaxTessellationPatchSize (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 156) (vkMaxTessellationControlPerVertexInputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 160) (vkMaxTessellationControlPerVertexOutputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 164) (vkMaxTessellationControlPerPatchOutputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 168) (vkMaxTessellationControlTotalOutputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 172) (vkMaxTessellationEvaluationInputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 176) (vkMaxTessellationEvaluationOutputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 180) (vkMaxGeometryShaderInvocations (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 184) (vkMaxGeometryInputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 188) (vkMaxGeometryOutputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 192) (vkMaxGeometryOutputVertices (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 196) (vkMaxGeometryTotalOutputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 200) (vkMaxFragmentInputComponents (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 204) (vkMaxFragmentOutputAttachments (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 208) (vkMaxFragmentDualSrcAttachments (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 212) (vkMaxFragmentCombinedOutputResources (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 216) (vkMaxComputeSharedMemorySize (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 220) (vkMaxComputeWorkGroupCount (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 232) (vkMaxComputeWorkGroupInvocations (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 236) (vkMaxComputeWorkGroupSize (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 248) (vkSubPixelPrecisionBits (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 252) (vkSubTexelPrecisionBits (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 256) (vkMipmapPrecisionBits (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 260) (vkMaxDrawIndexedIndexValue (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 264) (vkMaxDrawIndirectCount (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 268) (vkMaxSamplerLodBias (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 272) (vkMaxSamplerAnisotropy (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 276) (vkMaxViewports (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 280) (vkMaxViewportDimensions (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 288) (vkViewportBoundsRange (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 296) (vkViewportSubPixelBits (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 304) (vkMinMemoryMapAlignment (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 312) (vkMinTexelBufferOffsetAlignment (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 320) (vkMinUniformBufferOffsetAlignment (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 328) (vkMinStorageBufferOffsetAlignment (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 336) (vkMinTexelOffset (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 340) (vkMaxTexelOffset (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 344) (vkMinTexelGatherOffset (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 348) (vkMaxTexelGatherOffset (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 352) (vkMinInterpolationOffset (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 356) (vkMaxInterpolationOffset (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 360) (vkSubPixelInterpolationOffsetBits (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 364) (vkMaxFramebufferWidth (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 368) (vkMaxFramebufferHeight (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 372) (vkMaxFramebufferLayers (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 376) (vkFramebufferColorSampleCounts (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 380) (vkFramebufferDepthSampleCounts (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 384) (vkFramebufferStencilSampleCounts (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 388) (vkFramebufferNoAttachmentsSampleCounts (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 392) (vkMaxColorAttachments (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 396) (vkSampledImageColorSampleCounts (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 400) (vkSampledImageIntegerSampleCounts (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 404) (vkSampledImageDepthSampleCounts (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 408) (vkSampledImageStencilSampleCounts (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 412) (vkStorageImageSampleCounts (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 416) (vkMaxSampleMaskWords (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 420) (vkTimestampComputeAndGraphics (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 424) (vkTimestampPeriod (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 428) (vkMaxClipDistances (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 432) (vkMaxCullDistances (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 436) (vkMaxCombinedClipAndCullDistances (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 440) (vkDiscreteQueuePriorities (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 444) (vkPointSizeRange (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 452) (vkLineWidthRange (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 460) (vkPointSizeGranularity (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 464) (vkLineWidthGranularity (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 468) (vkStrictLines (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 472) (vkStandardSampleLocations (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 480) (vkOptimalBufferCopyOffsetAlignment (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 488) (vkOptimalBufferCopyRowPitchAlignment (poked :: VkPhysicalDeviceLimits))- *> poke (ptr `plusPtr` 496) (vkNonCoherentAtomSize (poked :: VkPhysicalDeviceLimits))--- | VkQueueFlags - Bitmask of VkQueueFlagBits------ = Description------ @VkQueueFlags@ is a bitmask type for setting a mask of zero or more--- 'VkQueueFlagBits'.------ = See Also------ 'VkQueueFamilyProperties', 'VkQueueFlagBits'-type VkQueueFlags = VkQueueFlagBits--- | VkMemoryPropertyFlags - Bitmask of VkMemoryPropertyFlagBits------ = Description------ @VkMemoryPropertyFlags@ is a bitmask type for setting a mask of zero or--- more 'VkMemoryPropertyFlagBits'.------ = See Also------ 'VkMemoryPropertyFlagBits', 'VkMemoryType'-type VkMemoryPropertyFlags = VkMemoryPropertyFlagBits--- | VkMemoryHeapFlags - Bitmask of VkMemoryHeapFlagBits------ = Description------ @VkMemoryHeapFlags@ is a bitmask type for setting a mask of zero or more--- 'VkMemoryHeapFlagBits'.------ = See Also------ 'VkMemoryHeap', 'VkMemoryHeapFlagBits'-type VkMemoryHeapFlags = VkMemoryHeapFlagBits--- | VkImageUsageFlags - Bitmask of VkImageUsageFlagBits------ = Description------ @VkImageUsageFlags@ is a bitmask type for setting a mask of zero or more--- 'VkImageUsageFlagBits'.------ = See Also------ 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo',--- 'VkImageUsageFlagBits',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkImageViewUsageCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceImageFormatInfo2',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceSparseImageFormatInfo2',--- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.VkSharedPresentSurfaceCapabilitiesKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCapabilities2EXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceCapabilitiesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.vkGetPhysicalDeviceExternalImageFormatPropertiesNV',--- 'vkGetPhysicalDeviceImageFormatProperties',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetPhysicalDeviceSparseImageFormatProperties'-type VkImageUsageFlags = VkImageUsageFlagBits--- | VkImageCreateFlags - Bitmask of VkImageCreateFlagBits------ = Description------ @VkImageCreateFlags@ is a bitmask type for setting a mask of zero or--- more 'VkImageCreateFlagBits'.------ = See Also------ 'VkImageCreateFlagBits',--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceImageFormatInfo2',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.vkGetPhysicalDeviceExternalImageFormatPropertiesNV',--- 'vkGetPhysicalDeviceImageFormatProperties'-type VkImageCreateFlags = VkImageCreateFlagBits--- | VkFormatFeatureFlags - Bitmask of VkFormatFeatureFlagBits------ = Description------ @VkFormatFeatureFlags@ is a bitmask type for setting a mask of zero or--- more 'VkFormatFeatureFlagBits'.------ = See Also------ 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferFormatPropertiesANDROID',--- 'VkFormatFeatureFlagBits', 'VkFormatProperties'-type VkFormatFeatureFlags = VkFormatFeatureFlagBits--- | VkSampleCountFlags - Bitmask of VkSampleCountFlagBits------ = Description------ @VkSampleCountFlags@ is a bitmask type for setting a mask of zero or--- more 'VkSampleCountFlagBits'.------ = See Also------ 'VkImageFormatProperties', 'VkPhysicalDeviceLimits',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPhysicalDeviceSampleLocationsPropertiesEXT',--- 'VkSampleCountFlagBits'-type VkSampleCountFlags = VkSampleCountFlagBits--- | VkDeviceSize - Vulkan device memory size and offsets------ = See Also------ 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferPropertiesANDROID',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.VkBindBufferMemoryInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.VkBindImageMemoryInfo',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkBufferCopy',--- 'Graphics.Vulkan.Core10.Buffer.VkBufferCreateInfo',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkBufferImageCopy',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkBufferMemoryBarrier',--- 'Graphics.Vulkan.Core10.BufferView.VkBufferViewCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkCmdProcessCommandsInfoNVX',--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorBufferInfo',--- 'VkImageFormatProperties',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkIndirectCommandsTokenNVX',--- 'Graphics.Vulkan.Core10.Memory.VkMappedMemoryRange',--- 'Graphics.Vulkan.Core10.Memory.VkMemoryAllocateInfo', 'VkMemoryHeap',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkMemoryRequirements',--- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.VkPhysicalDeviceExternalMemoryHostPropertiesEXT',--- 'VkPhysicalDeviceLimits',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance3.VkPhysicalDeviceMaintenance3Properties',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseImageMemoryBind',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseImageMemoryRequirements',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseMemoryBind',--- 'Graphics.Vulkan.Core10.Image.VkSubresourceLayout',--- 'Graphics.Vulkan.Core10.MemoryManagement.vkBindBufferMemory',--- 'Graphics.Vulkan.Core10.MemoryManagement.vkBindImageMemory',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindIndexBuffer',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindVertexBuffers',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyQueryPoolResults',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDispatchIndirect',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDrawIndexedIndirect',--- 'Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count.vkCmdDrawIndexedIndirectCountAMD',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDrawIndirect',--- 'Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count.vkCmdDrawIndirectCountAMD',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdFillBuffer',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdUpdateBuffer',--- 'Graphics.Vulkan.Extensions.VK_AMD_buffer_marker.vkCmdWriteBufferMarkerAMD',--- 'Graphics.Vulkan.Core10.Memory.vkGetDeviceMemoryCommitment',--- 'Graphics.Vulkan.Core10.Query.vkGetQueryPoolResults',--- 'Graphics.Vulkan.Core10.Memory.vkMapMemory'-type VkDeviceSize = Word64+{-# language CPP #-}+module Graphics.Vulkan.Core10.DeviceInitialization ( createInstance+ , withInstance+ , destroyInstance+ , enumeratePhysicalDevices+ , getDeviceProcAddr+ , getInstanceProcAddr+ , getPhysicalDeviceProperties+ , getPhysicalDeviceQueueFamilyProperties+ , getPhysicalDeviceMemoryProperties+ , getPhysicalDeviceFeatures+ , getPhysicalDeviceFormatProperties+ , getPhysicalDeviceImageFormatProperties+ , PhysicalDeviceProperties(..)+ , ApplicationInfo(..)+ , InstanceCreateInfo(..)+ , QueueFamilyProperties(..)+ , PhysicalDeviceMemoryProperties(..)+ , MemoryType(..)+ , MemoryHeap(..)+ , FormatProperties(..)+ , ImageFormatProperties(..)+ , PhysicalDeviceFeatures(..)+ , PhysicalDeviceSparseProperties(..)+ , PhysicalDeviceLimits(..)+ ) where++import Control.Exception.Base (bracket)+import Control.Monad (unless)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Marshal.Utils (maybePeek)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (castFunPtr)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.ByteString (packCString)+import Data.ByteString (useAsCString)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.C.Types (CChar(..))+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CFloat(CFloat))+import Foreign.C.Types (CSize)+import Foreign.C.Types (CSize(CSize))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import GHC.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Ptr (Ptr(Ptr))+import Data.Word (Word32)+import Data.Word (Word64)+import Data.Word (Word8)+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import qualified Data.Vector.Storable.Sized (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Dynamic (getInstanceProcAddr')+import Graphics.Vulkan.Dynamic (initInstanceCmds)+import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)+import Graphics.Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)+import Graphics.Vulkan.CStruct.Utils (pokeFixedLengthByteString)+import Graphics.Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct.Extends (Chain)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_report (DebugReportCallbackCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsMessengerCreateInfoEXT)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetDeviceProcAddr))+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.Core10.SharedTypes (Extent3D)+import Graphics.Vulkan.Core10.Enums.Format (Format)+import Graphics.Vulkan.Core10.Enums.Format (Format(..))+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(..))+import Graphics.Vulkan.Core10.Enums.ImageTiling (ImageTiling)+import Graphics.Vulkan.Core10.Enums.ImageTiling (ImageTiling(..))+import Graphics.Vulkan.Core10.Enums.ImageType (ImageType)+import Graphics.Vulkan.Core10.Enums.ImageType (ImageType(..))+import Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)+import Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)+import Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlagBits(..))+import Graphics.Vulkan.Core10.Handles (Instance)+import Graphics.Vulkan.Core10.Handles (Instance(..))+import Graphics.Vulkan.Core10.Handles (Instance(Instance))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkDestroyInstance))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkEnumeratePhysicalDevices))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetInstanceProcAddr))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceFeatures))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceFormatProperties))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceImageFormatProperties))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceMemoryProperties))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceProperties))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceQueueFamilyProperties))+import Graphics.Vulkan.Core10.Enums.InstanceCreateFlags (InstanceCreateFlags)+import Graphics.Vulkan.Core10.Handles (Instance_T)+import Graphics.Vulkan.Core10.APIConstants (MAX_MEMORY_HEAPS)+import Graphics.Vulkan.Core10.APIConstants (MAX_MEMORY_TYPES)+import Graphics.Vulkan.Core10.APIConstants (MAX_PHYSICAL_DEVICE_NAME_SIZE)+import Graphics.Vulkan.Core10.Enums.MemoryHeapFlagBits (MemoryHeapFlags)+import Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits (MemoryPropertyFlags)+import Graphics.Vulkan.Core10.FuncPointers (PFN_vkVoidFunction)+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(PhysicalDevice))+import Graphics.Vulkan.Core10.Enums.PhysicalDeviceType (PhysicalDeviceType)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Enums.QueueFlagBits (QueueFlags)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Core10.APIConstants (UUID_SIZE)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_validation_features (ValidationFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_validation_flags (ValidationFlagsEXT)+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.APIConstants (pattern MAX_MEMORY_HEAPS)+import Graphics.Vulkan.Core10.APIConstants (pattern MAX_MEMORY_TYPES)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_APPLICATION_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INSTANCE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateInstance+ :: FunPtr (Ptr (InstanceCreateInfo a) -> Ptr AllocationCallbacks -> Ptr (Ptr Instance_T) -> IO Result) -> Ptr (InstanceCreateInfo a) -> Ptr AllocationCallbacks -> Ptr (Ptr Instance_T) -> IO Result++-- | vkCreateInstance - Create a new Vulkan instance+--+-- = Parameters+--+-- - @pCreateInfo@ is a pointer to a 'InstanceCreateInfo' structure+-- controlling creation of the instance.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pInstance@ points a 'Graphics.Vulkan.Core10.Handles.Instance'+-- handle in which the resulting instance is returned.+--+-- = Description+--+-- 'createInstance' verifies that the requested layers exist. If not,+-- 'createInstance' will return+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_LAYER_NOT_PRESENT'. Next+-- 'createInstance' verifies that the requested extensions are supported+-- (e.g. in the implementation or in any enabled instance layer) and if any+-- requested extension is not supported, 'createInstance' /must/ return+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_EXTENSION_NOT_PRESENT'. After+-- verifying and enabling the instance layers and extensions the+-- 'Graphics.Vulkan.Core10.Handles.Instance' object is created and returned+-- to the application. If a requested extension is only supported by a+-- layer, both the layer and the extension need to be specified at+-- 'createInstance' time for the creation to succeed.+--+-- == Valid Usage+--+-- - All+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-extensions-extensiondependencies required extensions>+-- for each extension in the+-- 'InstanceCreateInfo'::@ppEnabledExtensionNames@ list /must/ also be+-- present in that list.+--+-- == Valid Usage (Implicit)+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'InstanceCreateInfo' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pInstance@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_LAYER_NOT_PRESENT'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_EXTENSION_NOT_PRESENT'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INCOMPATIBLE_DRIVER'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Instance', 'InstanceCreateInfo'+createInstance :: PokeChain a => InstanceCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (Instance)+createInstance createInfo allocator = evalContT $ do+ vkCreateInstance' <- lift $ mkVkCreateInstance . castFunPtr @_ @(("pCreateInfo" ::: Ptr (InstanceCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pInstance" ::: Ptr (Ptr Instance_T)) -> IO Result) <$> getInstanceProcAddr' nullPtr (Ptr "vkCreateInstance"#)+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPInstance <- ContT $ bracket (callocBytes @(Ptr Instance_T) 8) free+ r <- lift $ vkCreateInstance' pCreateInfo pAllocator (pPInstance)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pInstance <- lift $ peek @(Ptr Instance_T) pPInstance+ pInstance' <- lift $ (\h -> Instance h <$> initInstanceCmds h) pInstance+ pure $ (pInstance')++-- | A safe wrapper for 'createInstance' and 'destroyInstance' using+-- 'bracket'+--+-- The allocated value must not be returned from the provided computation+withInstance :: PokeChain a => InstanceCreateInfo a -> Maybe AllocationCallbacks -> (Instance -> IO r) -> IO r+withInstance instanceCreateInfo allocationCallbacks =+ bracket+ (createInstance instanceCreateInfo allocationCallbacks)+ (\o -> destroyInstance o allocationCallbacks)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDestroyInstance+ :: FunPtr (Ptr Instance_T -> Ptr AllocationCallbacks -> IO ()) -> Ptr Instance_T -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyInstance - Destroy an instance of Vulkan+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' is the handle of the+-- instance to destroy.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- == Valid Usage+--+-- - All child objects created using+-- 'Graphics.Vulkan.Core10.Handles.Instance' /must/ have been destroyed+-- prior to destroying 'Graphics.Vulkan.Core10.Handles.Instance'+--+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.Instance' was+-- created, a compatible set of callbacks /must/ be provided here+--+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.Instance' was+-- created, @pAllocator@ /must/ be @NULL@+--+-- == Valid Usage (Implicit)+--+-- - If 'Graphics.Vulkan.Core10.Handles.Instance' is not @NULL@,+-- 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be+-- externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Instance'+destroyInstance :: Instance -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyInstance instance' allocator = evalContT $ do+ let vkDestroyInstance' = mkVkDestroyInstance (pVkDestroyInstance (instanceCmds (instance' :: Instance)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyInstance' (instanceHandle (instance')) pAllocator+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkEnumeratePhysicalDevices+ :: FunPtr (Ptr Instance_T -> Ptr Word32 -> Ptr (Ptr PhysicalDevice_T) -> IO Result) -> Ptr Instance_T -> Ptr Word32 -> Ptr (Ptr PhysicalDevice_T) -> IO Result++-- | vkEnumeratePhysicalDevices - Enumerates the physical devices accessible+-- to a Vulkan instance+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' is a handle to a Vulkan+-- instance previously created with 'createInstance'.+--+-- - @pPhysicalDeviceCount@ is a pointer to an integer related to the+-- number of physical devices available or queried, as described below.+--+-- - @pPhysicalDevices@ is either @NULL@ or a pointer to an array of+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handles.+--+-- = Description+--+-- If @pPhysicalDevices@ is @NULL@, then the number of physical devices+-- available is returned in @pPhysicalDeviceCount@. Otherwise,+-- @pPhysicalDeviceCount@ /must/ point to a variable set by the user to the+-- number of elements in the @pPhysicalDevices@ array, and on return the+-- variable is overwritten with the number of handles actually written to+-- @pPhysicalDevices@. If @pPhysicalDeviceCount@ is less than the number of+-- physical devices available, at most @pPhysicalDeviceCount@ structures+-- will be written. If @pPhysicalDeviceCount@ is smaller than the number of+-- physical devices available,+-- 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned+-- instead of 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS', to indicate+-- that not all the available physical devices were returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle+--+-- - @pPhysicalDeviceCount@ /must/ be a valid pointer to a @uint32_t@+-- value+--+-- - If the value referenced by @pPhysicalDeviceCount@ is not @0@, and+-- @pPhysicalDevices@ is not @NULL@, @pPhysicalDevices@ /must/ be a+-- valid pointer to an array of @pPhysicalDeviceCount@+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handles+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Instance',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+enumeratePhysicalDevices :: Instance -> IO (Result, ("physicalDevices" ::: Vector PhysicalDevice))+enumeratePhysicalDevices instance' = evalContT $ do+ let cmds = instanceCmds (instance' :: Instance)+ let vkEnumeratePhysicalDevices' = mkVkEnumeratePhysicalDevices (pVkEnumeratePhysicalDevices cmds)+ let instance'' = instanceHandle (instance')+ pPPhysicalDeviceCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkEnumeratePhysicalDevices' instance'' (pPPhysicalDeviceCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pPhysicalDeviceCount <- lift $ peek @Word32 pPPhysicalDeviceCount+ pPPhysicalDevices <- ContT $ bracket (callocBytes @(Ptr PhysicalDevice_T) ((fromIntegral (pPhysicalDeviceCount)) * 8)) free+ r' <- lift $ vkEnumeratePhysicalDevices' instance'' (pPPhysicalDeviceCount) (pPPhysicalDevices)+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pPhysicalDeviceCount' <- lift $ peek @Word32 pPPhysicalDeviceCount+ pPhysicalDevices' <- lift $ generateM (fromIntegral (pPhysicalDeviceCount')) (\i -> do+ pPhysicalDevicesElem <- peek @(Ptr PhysicalDevice_T) ((pPPhysicalDevices `advancePtrBytes` (8 * (i)) :: Ptr (Ptr PhysicalDevice_T)))+ pure $ (\h -> PhysicalDevice h cmds ) pPhysicalDevicesElem)+ pure $ ((r'), pPhysicalDevices')+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetDeviceProcAddr+ :: FunPtr (Ptr Device_T -> Ptr CChar -> IO PFN_vkVoidFunction) -> Ptr Device_T -> Ptr CChar -> IO PFN_vkVoidFunction++-- | vkGetDeviceProcAddr - Return a function pointer for a command+--+-- = Parameters+--+-- The table below defines the various use cases for 'getDeviceProcAddr'+-- and expected return value for each case.+--+-- = Description+--+-- The returned function pointer is of type+-- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkVoidFunction', and must be+-- cast to the type of the command being queried. The function pointer+-- /must/ only be called with a dispatchable object (the first parameter)+-- that is 'Graphics.Vulkan.Core10.Handles.Device' or a child of+-- 'Graphics.Vulkan.Core10.Handles.Device'.+--+-- +-----------------------------------------+----------------------+-----------------------++-- | 'Graphics.Vulkan.Core10.Handles.Device' | @pName@ | return value |+-- +=========================================+======================+=======================++-- | @NULL@ | *1 | undefined |+-- +-----------------------------------------+----------------------+-----------------------++-- | invalid device | *1 | undefined |+-- +-----------------------------------------+----------------------+-----------------------++-- | device | @NULL@ | undefined |+-- +-----------------------------------------+----------------------+-----------------------++-- | device | core device-level | fp2 |+-- | | Vulkan command | |+-- +-----------------------------------------+----------------------+-----------------------++-- | device | enabled extension | fp2 |+-- | | device-level | |+-- | | commands | |+-- +-----------------------------------------+----------------------+-----------------------++-- | any other case, not covered above | @NULL@ | |+-- +-----------------------------------------+----------------------+-----------------------++--+-- vkGetDeviceProcAddr behavior+--+-- [1]+-- \"*\" means any representable value for the parameter (including+-- valid values, invalid values, and @NULL@).+--+-- [2]+-- The returned function pointer /must/ only be called with a+-- dispatchable object (the first parameter) that is+-- 'Graphics.Vulkan.Core10.Handles.Device' or a child of+-- 'Graphics.Vulkan.Core10.Handles.Device' e.g.+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Queue', or+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkVoidFunction',+-- 'Graphics.Vulkan.Core10.Handles.Device'+getDeviceProcAddr :: Device -> ("name" ::: ByteString) -> IO (PFN_vkVoidFunction)+getDeviceProcAddr device name = evalContT $ do+ let vkGetDeviceProcAddr' = mkVkGetDeviceProcAddr (pVkGetDeviceProcAddr (deviceCmds (device :: Device)))+ pName <- ContT $ useAsCString (name)+ r <- lift $ vkGetDeviceProcAddr' (deviceHandle (device)) pName+ pure $ (r)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetInstanceProcAddr+ :: FunPtr (Ptr Instance_T -> Ptr CChar -> IO PFN_vkVoidFunction) -> Ptr Instance_T -> Ptr CChar -> IO PFN_vkVoidFunction++-- | vkGetInstanceProcAddr - Return a function pointer for a command+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' is the instance that the+-- function pointer will be compatible with, or @NULL@ for commands not+-- dependent on any instance.+--+-- - @pName@ is the name of the command to obtain.+--+-- = Description+--+-- 'getInstanceProcAddr' itself is obtained in a platform- and loader-+-- specific manner. Typically, the loader library will export this command+-- as a function symbol, so applications /can/ link against the loader+-- library, or load it dynamically and look up the symbol using+-- platform-specific APIs.+--+-- The table below defines the various use cases for 'getInstanceProcAddr'+-- and expected return value (“fp” is “function pointer”) for each case.+--+-- The returned function pointer is of type+-- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkVoidFunction', and must be+-- cast to the type of the command being queried.+--+-- +-------------------------------------------+----------------------------------------------------------------------------------+-----------------------++-- | 'Graphics.Vulkan.Core10.Handles.Instance' | @pName@ | return value |+-- +===========================================+==================================================================================+=======================++-- | *1 | @NULL@ | undefined |+-- +-------------------------------------------+----------------------------------------------------------------------------------+-----------------------++-- | invalid non-@NULL@ instance | *1 | undefined |+-- +-------------------------------------------+----------------------------------------------------------------------------------+-----------------------++-- | @NULL@ | 'Graphics.Vulkan.Core11.DeviceInitialization.enumerateInstanceVersion' | fp |+-- +-------------------------------------------+----------------------------------------------------------------------------------+-----------------------++-- | @NULL@ | 'Graphics.Vulkan.Core10.ExtensionDiscovery.enumerateInstanceExtensionProperties' | fp |+-- +-------------------------------------------+----------------------------------------------------------------------------------+-----------------------++-- | @NULL@ | 'Graphics.Vulkan.Core10.LayerDiscovery.enumerateInstanceLayerProperties' | fp |+-- +-------------------------------------------+----------------------------------------------------------------------------------+-----------------------++-- | @NULL@ | 'createInstance' | fp |+-- +-------------------------------------------+----------------------------------------------------------------------------------+-----------------------++-- | instance | core Vulkan command | fp2 |+-- +-------------------------------------------+----------------------------------------------------------------------------------+-----------------------++-- | instance | enabled instance extension commands for | fp2 |+-- | | 'Graphics.Vulkan.Core10.Handles.Instance' | |+-- +-------------------------------------------+----------------------------------------------------------------------------------+-----------------------++-- | instance | available device extension3 commands for | fp2 |+-- | | 'Graphics.Vulkan.Core10.Handles.Instance' | |+-- +-------------------------------------------+----------------------------------------------------------------------------------+-----------------------++-- | any other case, not covered above | @NULL@ | |+-- +-------------------------------------------+----------------------------------------------------------------------------------+-----------------------++--+-- vkGetInstanceProcAddr behavior+--+-- [1]+-- \"*\" means any representable value for the parameter (including+-- valid values, invalid values, and @NULL@).+--+-- [2]+-- The returned function pointer /must/ only be called with a+-- dispatchable object (the first parameter) that is+-- 'Graphics.Vulkan.Core10.Handles.Instance' or a child of+-- 'Graphics.Vulkan.Core10.Handles.Instance', e.g.+-- 'Graphics.Vulkan.Core10.Handles.Instance',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Queue', or+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'.+--+-- [3]+-- An “available device extension” is a device extension supported by+-- any physical device enumerated by+-- 'Graphics.Vulkan.Core10.Handles.Instance'.+--+-- == Valid Usage (Implicit)+--+-- - If 'Graphics.Vulkan.Core10.Handles.Instance' is not @NULL@,+-- 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle+--+-- - @pName@ /must/ be a null-terminated UTF-8 string+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkVoidFunction',+-- 'Graphics.Vulkan.Core10.Handles.Instance'+getInstanceProcAddr :: Instance -> ("name" ::: ByteString) -> IO (PFN_vkVoidFunction)+getInstanceProcAddr instance' name = evalContT $ do+ let vkGetInstanceProcAddr' = mkVkGetInstanceProcAddr (pVkGetInstanceProcAddr (instanceCmds (instance' :: Instance)))+ pName <- ContT $ useAsCString (name)+ r <- lift $ vkGetInstanceProcAddr' (instanceHandle (instance')) pName+ pure $ (r)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceProperties+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr PhysicalDeviceProperties -> IO ()) -> Ptr PhysicalDevice_T -> Ptr PhysicalDeviceProperties -> IO ()++-- | vkGetPhysicalDeviceProperties - Returns properties of a physical device+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the handle to the+-- physical device whose properties will be queried.+--+-- - @pProperties@ is a pointer to a 'PhysicalDeviceProperties' structure+-- in which properties are returned.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'PhysicalDeviceProperties'+getPhysicalDeviceProperties :: PhysicalDevice -> IO (PhysicalDeviceProperties)+getPhysicalDeviceProperties physicalDevice = evalContT $ do+ let vkGetPhysicalDeviceProperties' = mkVkGetPhysicalDeviceProperties (pVkGetPhysicalDeviceProperties (instanceCmds (physicalDevice :: PhysicalDevice)))+ pPProperties <- ContT (withZeroCStruct @PhysicalDeviceProperties)+ lift $ vkGetPhysicalDeviceProperties' (physicalDeviceHandle (physicalDevice)) (pPProperties)+ pProperties <- lift $ peekCStruct @PhysicalDeviceProperties pPProperties+ pure $ (pProperties)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceQueueFamilyProperties+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr QueueFamilyProperties -> IO ()) -> Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr QueueFamilyProperties -> IO ()++-- | vkGetPhysicalDeviceQueueFamilyProperties - Reports properties of the+-- queues of the specified physical device+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the handle to the+-- physical device whose properties will be queried.+--+-- - @pQueueFamilyPropertyCount@ is a pointer to an integer related to+-- the number of queue families available or queried, as described+-- below.+--+-- - @pQueueFamilyProperties@ is either @NULL@ or a pointer to an array+-- of 'QueueFamilyProperties' structures.+--+-- = Description+--+-- If @pQueueFamilyProperties@ is @NULL@, then the number of queue families+-- available is returned in @pQueueFamilyPropertyCount@. Implementations+-- /must/ support at least one queue family. Otherwise,+-- @pQueueFamilyPropertyCount@ /must/ point to a variable set by the user+-- to the number of elements in the @pQueueFamilyProperties@ array, and on+-- return the variable is overwritten with the number of structures+-- actually written to @pQueueFamilyProperties@. If+-- @pQueueFamilyPropertyCount@ is less than the number of queue families+-- available, at most @pQueueFamilyPropertyCount@ structures will be+-- written.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @pQueueFamilyPropertyCount@ /must/ be a valid pointer to a+-- @uint32_t@ value+--+-- - If the value referenced by @pQueueFamilyPropertyCount@ is not @0@,+-- and @pQueueFamilyProperties@ is not @NULL@, @pQueueFamilyProperties@+-- /must/ be a valid pointer to an array of @pQueueFamilyPropertyCount@+-- 'QueueFamilyProperties' structures+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice', 'QueueFamilyProperties'+getPhysicalDeviceQueueFamilyProperties :: PhysicalDevice -> IO (("queueFamilyProperties" ::: Vector QueueFamilyProperties))+getPhysicalDeviceQueueFamilyProperties physicalDevice = evalContT $ do+ let vkGetPhysicalDeviceQueueFamilyProperties' = mkVkGetPhysicalDeviceQueueFamilyProperties (pVkGetPhysicalDeviceQueueFamilyProperties (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pPQueueFamilyPropertyCount <- ContT $ bracket (callocBytes @Word32 4) free+ lift $ vkGetPhysicalDeviceQueueFamilyProperties' physicalDevice' (pPQueueFamilyPropertyCount) (nullPtr)+ pQueueFamilyPropertyCount <- lift $ peek @Word32 pPQueueFamilyPropertyCount+ pPQueueFamilyProperties <- ContT $ bracket (callocBytes @QueueFamilyProperties ((fromIntegral (pQueueFamilyPropertyCount)) * 24)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPQueueFamilyProperties `advancePtrBytes` (i * 24) :: Ptr QueueFamilyProperties) . ($ ())) [0..(fromIntegral (pQueueFamilyPropertyCount)) - 1]+ lift $ vkGetPhysicalDeviceQueueFamilyProperties' physicalDevice' (pPQueueFamilyPropertyCount) ((pPQueueFamilyProperties))+ pQueueFamilyPropertyCount' <- lift $ peek @Word32 pPQueueFamilyPropertyCount+ pQueueFamilyProperties' <- lift $ generateM (fromIntegral (pQueueFamilyPropertyCount')) (\i -> peekCStruct @QueueFamilyProperties (((pPQueueFamilyProperties) `advancePtrBytes` (24 * (i)) :: Ptr QueueFamilyProperties)))+ pure $ (pQueueFamilyProperties')+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceMemoryProperties+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr PhysicalDeviceMemoryProperties -> IO ()) -> Ptr PhysicalDevice_T -> Ptr PhysicalDeviceMemoryProperties -> IO ()++-- | vkGetPhysicalDeviceMemoryProperties - Reports memory information for the+-- specified physical device+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the handle to the+-- device to query.+--+-- - @pMemoryProperties@ is a pointer to a+-- 'PhysicalDeviceMemoryProperties' structure in which the properties+-- are returned.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'PhysicalDeviceMemoryProperties'+getPhysicalDeviceMemoryProperties :: PhysicalDevice -> IO (PhysicalDeviceMemoryProperties)+getPhysicalDeviceMemoryProperties physicalDevice = evalContT $ do+ let vkGetPhysicalDeviceMemoryProperties' = mkVkGetPhysicalDeviceMemoryProperties (pVkGetPhysicalDeviceMemoryProperties (instanceCmds (physicalDevice :: PhysicalDevice)))+ pPMemoryProperties <- ContT (withZeroCStruct @PhysicalDeviceMemoryProperties)+ lift $ vkGetPhysicalDeviceMemoryProperties' (physicalDeviceHandle (physicalDevice)) (pPMemoryProperties)+ pMemoryProperties <- lift $ peekCStruct @PhysicalDeviceMemoryProperties pPMemoryProperties+ pure $ (pMemoryProperties)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceFeatures+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr PhysicalDeviceFeatures -> IO ()) -> Ptr PhysicalDevice_T -> Ptr PhysicalDeviceFeatures -> IO ()++-- | vkGetPhysicalDeviceFeatures - Reports capabilities of a physical device+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device from which to query the supported features.+--+-- - @pFeatures@ is a pointer to a 'PhysicalDeviceFeatures' structure in+-- which the physical device features are returned. For each feature, a+-- value of 'Graphics.Vulkan.Core10.BaseType.TRUE' specifies that the+-- feature is supported on this physical device, and+-- 'Graphics.Vulkan.Core10.BaseType.FALSE' specifies that the feature+-- is not supported.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'PhysicalDeviceFeatures'+getPhysicalDeviceFeatures :: PhysicalDevice -> IO (PhysicalDeviceFeatures)+getPhysicalDeviceFeatures physicalDevice = evalContT $ do+ let vkGetPhysicalDeviceFeatures' = mkVkGetPhysicalDeviceFeatures (pVkGetPhysicalDeviceFeatures (instanceCmds (physicalDevice :: PhysicalDevice)))+ pPFeatures <- ContT (withZeroCStruct @PhysicalDeviceFeatures)+ lift $ vkGetPhysicalDeviceFeatures' (physicalDeviceHandle (physicalDevice)) (pPFeatures)+ pFeatures <- lift $ peekCStruct @PhysicalDeviceFeatures pPFeatures+ pure $ (pFeatures)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceFormatProperties+ :: FunPtr (Ptr PhysicalDevice_T -> Format -> Ptr FormatProperties -> IO ()) -> Ptr PhysicalDevice_T -> Format -> Ptr FormatProperties -> IO ()++-- | vkGetPhysicalDeviceFormatProperties - Lists physical device’s format+-- capabilities+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device from which to query the format properties.+--+-- - 'Graphics.Vulkan.Core10.Enums.Format.Format' is the format whose+-- properties are queried.+--+-- - @pFormatProperties@ is a pointer to a 'FormatProperties' structure+-- in which physical device properties for+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' are returned.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.Format.Format', 'FormatProperties',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+getPhysicalDeviceFormatProperties :: PhysicalDevice -> Format -> IO (FormatProperties)+getPhysicalDeviceFormatProperties physicalDevice format = evalContT $ do+ let vkGetPhysicalDeviceFormatProperties' = mkVkGetPhysicalDeviceFormatProperties (pVkGetPhysicalDeviceFormatProperties (instanceCmds (physicalDevice :: PhysicalDevice)))+ pPFormatProperties <- ContT (withZeroCStruct @FormatProperties)+ lift $ vkGetPhysicalDeviceFormatProperties' (physicalDeviceHandle (physicalDevice)) (format) (pPFormatProperties)+ pFormatProperties <- lift $ peekCStruct @FormatProperties pPFormatProperties+ pure $ (pFormatProperties)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceImageFormatProperties+ :: FunPtr (Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> Ptr ImageFormatProperties -> IO Result) -> Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> Ptr ImageFormatProperties -> IO Result++-- | vkGetPhysicalDeviceImageFormatProperties - Lists physical device’s image+-- format capabilities+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device from which to query the image capabilities.+--+-- - 'Graphics.Vulkan.Core10.Enums.Format.Format' is a+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' value specifying the+-- image format, corresponding to+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.Enums.Format.Format'.+--+-- - @type@ is a 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' value+-- specifying the image type, corresponding to+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.Enums.ImageType.ImageType'.+--+-- - @tiling@ is a 'Graphics.Vulkan.Core10.Enums.ImageTiling.ImageTiling'+-- value specifying the image tiling, corresponding to+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@tiling@.+--+-- - @usage@ is a bitmask of+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits'+-- specifying the intended usage of the image, corresponding to+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@usage@.+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits'+-- specifying additional parameters of the image, corresponding to+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'.+--+-- - @pImageFormatProperties@ is a pointer to a 'ImageFormatProperties'+-- structure in which capabilities are returned.+--+-- = Description+--+-- The 'Graphics.Vulkan.Core10.Enums.Format.Format', @type@, @tiling@,+-- @usage@, and 'Graphics.Vulkan.Core10.BaseType.Flags' parameters+-- correspond to parameters that would be consumed by+-- 'Graphics.Vulkan.Core10.Image.createImage' (as members of+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo').+--+-- If 'Graphics.Vulkan.Core10.Enums.Format.Format' is not a supported image+-- format, or if the combination of+-- 'Graphics.Vulkan.Core10.Enums.Format.Format', @type@, @tiling@, @usage@,+-- and 'Graphics.Vulkan.Core10.BaseType.Flags' is not supported for images,+-- then 'getPhysicalDeviceImageFormatProperties' returns+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_FORMAT_NOT_SUPPORTED'.+--+-- The limitations on an image format that are reported by+-- 'getPhysicalDeviceImageFormatProperties' have the following property: if+-- @usage1@ and @usage2@ of type+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags' are+-- such that the bits set in @usage1@ are a subset of the bits set in+-- @usage2@, and @flags1@ and @flags2@ of type+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlags' are+-- such that the bits set in @flags1@ are a subset of the bits set in+-- @flags2@, then the limitations for @usage1@ and @flags1@ /must/ be no+-- more strict than the limitations for @usage2@ and @flags2@, for all+-- values of 'Graphics.Vulkan.Core10.Enums.Format.Format', @type@, and+-- @tiling@.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_FORMAT_NOT_SUPPORTED'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlags',+-- 'ImageFormatProperties',+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.ImageTiling',+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+getPhysicalDeviceImageFormatProperties :: PhysicalDevice -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> IO (ImageFormatProperties)+getPhysicalDeviceImageFormatProperties physicalDevice format type' tiling usage flags = evalContT $ do+ let vkGetPhysicalDeviceImageFormatProperties' = mkVkGetPhysicalDeviceImageFormatProperties (pVkGetPhysicalDeviceImageFormatProperties (instanceCmds (physicalDevice :: PhysicalDevice)))+ pPImageFormatProperties <- ContT (withZeroCStruct @ImageFormatProperties)+ r <- lift $ vkGetPhysicalDeviceImageFormatProperties' (physicalDeviceHandle (physicalDevice)) (format) (type') (tiling) (usage) (flags) (pPImageFormatProperties)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pImageFormatProperties <- lift $ peekCStruct @ImageFormatProperties pPImageFormatProperties+ pure $ (pImageFormatProperties)+++-- | VkPhysicalDeviceProperties - Structure specifying physical device+-- properties+--+-- = Description+--+-- Note+--+-- The value of @apiVersion@ /may/ be different than the version returned+-- by+-- 'Graphics.Vulkan.Core11.DeviceInitialization.enumerateInstanceVersion';+-- either higher or lower. In such cases, the application /must/ not use+-- functionality that exceeds the version of Vulkan associated with a given+-- object. The @pApiVersion@ parameter returned by+-- 'Graphics.Vulkan.Core11.DeviceInitialization.enumerateInstanceVersion'+-- is the version associated with a+-- 'Graphics.Vulkan.Core10.Handles.Instance' and its children, except for a+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' and its children.+-- 'PhysicalDeviceProperties'::@apiVersion@ is the version associated with+-- a 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' and its children.+--+-- The @vendorID@ and @deviceID@ fields are provided to allow applications+-- to adapt to device characteristics that are not adequately exposed by+-- other Vulkan queries.+--+-- Note+--+-- These /may/ include performance profiles, hardware errata, or other+-- characteristics.+--+-- The /vendor/ identified by @vendorID@ is the entity responsible for the+-- most salient characteristics of the underlying implementation of the+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' being queried.+--+-- Note+--+-- For example, in the case of a discrete GPU implementation, this /should/+-- be the GPU chipset vendor. In the case of a hardware accelerator+-- integrated into a system-on-chip (SoC), this /should/ be the supplier of+-- the silicon IP used to create the accelerator.+--+-- If the vendor has a+-- <https://pcisig.com/membership/member-companies PCI vendor ID>, the low+-- 16 bits of @vendorID@ /must/ contain that PCI vendor ID, and the+-- remaining bits /must/ be set to zero. Otherwise, the value returned+-- /must/ be a valid Khronos vendor ID, obtained as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vulkan-styleguide Vulkan Documentation and Extensions: Procedures and Conventions>+-- document in the section “Registering a Vendor ID with Khronos”. Khronos+-- vendor IDs are allocated starting at 0x10000, to distinguish them from+-- the PCI vendor ID namespace. Khronos vendor IDs are symbolically defined+-- in the 'Graphics.Vulkan.Core10.Enums.VendorId.VendorId' type.+--+-- The vendor is also responsible for the value returned in @deviceID@. If+-- the implementation is driven primarily by a+-- <https://pcisig.com/ PCI device> with a+-- <https://pcisig.com/ PCI device ID>, the low 16 bits of @deviceID@+-- /must/ contain that PCI device ID, and the remaining bits /must/ be set+-- to zero. Otherwise, the choice of what values to return /may/ be+-- dictated by operating system or platform policies - but /should/+-- uniquely identify both the device version and any major configuration+-- options (for example, core count in the case of multicore devices).+--+-- Note+--+-- The same device ID /should/ be used for all physical implementations of+-- that device version and configuration. For example, all uses of a+-- specific silicon IP GPU version and configuration /should/ use the same+-- device ID, even if those uses occur in different SoCs.+--+-- = See Also+--+-- 'PhysicalDeviceLimits',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- 'PhysicalDeviceSparseProperties',+-- 'Graphics.Vulkan.Core10.Enums.PhysicalDeviceType.PhysicalDeviceType',+-- 'getPhysicalDeviceProperties'+data PhysicalDeviceProperties = PhysicalDeviceProperties+ { -- | @apiVersion@ is the version of Vulkan supported by the device, encoded+ -- as described in+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-coreversions-versionnumbers>.+ apiVersion :: Word32+ , -- | @driverVersion@ is the vendor-specified version of the driver.+ driverVersion :: Word32+ , -- | @vendorID@ is a unique identifier for the /vendor/ (see below) of the+ -- physical device.+ vendorID :: Word32+ , -- | @deviceID@ is a unique identifier for the physical device among devices+ -- available from the vendor.+ deviceID :: Word32+ , -- | @deviceType@ is a+ -- 'Graphics.Vulkan.Core10.Enums.PhysicalDeviceType.PhysicalDeviceType'+ -- specifying the type of device.+ deviceType :: PhysicalDeviceType+ , -- | @deviceName@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.MAX_PHYSICAL_DEVICE_NAME_SIZE'+ -- @char@ containing a null-terminated UTF-8 string which is the name of+ -- the device.+ deviceName :: ByteString+ , -- | @pipelineCacheUUID@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.UUID_SIZE' @uint8_t@ values+ -- representing a universally unique identifier for the device.+ pipelineCacheUUID :: ByteString+ , -- | @limits@ is the 'PhysicalDeviceLimits' structure specifying+ -- device-specific limits of the physical device. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits Limits>+ -- for details.+ limits :: PhysicalDeviceLimits+ , -- | @sparseProperties@ is the 'PhysicalDeviceSparseProperties' structure+ -- specifying various sparse related properties of the physical device. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-physicalprops Sparse Properties>+ -- for details.+ sparseProperties :: PhysicalDeviceSparseProperties+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceProperties++instance ToCStruct PhysicalDeviceProperties where+ withCStruct x f = allocaBytesAligned 824 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceProperties{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (apiVersion)+ lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (driverVersion)+ lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (vendorID)+ lift $ poke ((p `plusPtr` 12 :: Ptr Word32)) (deviceID)+ lift $ poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceType)) (deviceType)+ lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))) (deviceName)+ lift $ pokeFixedLengthByteString ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (pipelineCacheUUID)+ ContT $ pokeCStruct ((p `plusPtr` 296 :: Ptr PhysicalDeviceLimits)) (limits) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 800 :: Ptr PhysicalDeviceSparseProperties)) (sparseProperties) . ($ ())+ lift $ f+ cStructSize = 824+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 16 :: Ptr PhysicalDeviceType)) (zero)+ lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))) (mempty)+ lift $ pokeFixedLengthByteString ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (mempty)+ ContT $ pokeCStruct ((p `plusPtr` 296 :: Ptr PhysicalDeviceLimits)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 800 :: Ptr PhysicalDeviceSparseProperties)) (zero) . ($ ())+ lift $ f++instance FromCStruct PhysicalDeviceProperties where+ peekCStruct p = do+ apiVersion <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ driverVersion <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ vendorID <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ deviceID <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))+ deviceType <- peek @PhysicalDeviceType ((p `plusPtr` 16 :: Ptr PhysicalDeviceType))+ deviceName <- packCString (lowerArrayPtr ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_PHYSICAL_DEVICE_NAME_SIZE CChar))))+ pipelineCacheUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8)))+ limits <- peekCStruct @PhysicalDeviceLimits ((p `plusPtr` 296 :: Ptr PhysicalDeviceLimits))+ sparseProperties <- peekCStruct @PhysicalDeviceSparseProperties ((p `plusPtr` 800 :: Ptr PhysicalDeviceSparseProperties))+ pure $ PhysicalDeviceProperties+ apiVersion driverVersion vendorID deviceID deviceType deviceName pipelineCacheUUID limits sparseProperties++instance Zero PhysicalDeviceProperties where+ zero = PhysicalDeviceProperties+ zero+ zero+ zero+ zero+ zero+ mempty+ mempty+ zero+ zero+++-- | VkApplicationInfo - Structure specifying application info+--+-- = Description+--+-- Vulkan 1.0 implementations were required to return+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INCOMPATIBLE_DRIVER' if+-- @apiVersion@ was larger than 1.0. Implementations that support Vulkan+-- 1.1 or later /must/ not return+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INCOMPATIBLE_DRIVER' for any+-- value of @apiVersion@.+--+-- Note+--+-- Because Vulkan 1.0 implementations /may/ fail with+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INCOMPATIBLE_DRIVER',+-- applications /should/ determine the version of Vulkan available before+-- calling 'createInstance'. If the 'getInstanceProcAddr' returns @NULL@+-- for+-- 'Graphics.Vulkan.Core11.DeviceInitialization.enumerateInstanceVersion',+-- it is a Vulkan 1.0 implementation. Otherwise, the application /can/ call+-- 'Graphics.Vulkan.Core11.DeviceInitialization.enumerateInstanceVersion'+-- to determine the version of Vulkan.+--+-- As long as the instance supports at least Vulkan 1.1, an application+-- /can/ use different versions of Vulkan with an instance than it does+-- with a device or physical device.+--+-- Note+--+-- The Khronos validation layers will treat @apiVersion@ as the highest API+-- version the application targets, and will validate API usage against the+-- minimum of that version and the implementation version (instance or+-- device, depending on context). If an application tries to use+-- functionality from a greater version than this, a validation error will+-- be triggered.+--+-- For example, if the instance supports Vulkan 1.1 and three physical+-- devices support Vulkan 1.0, Vulkan 1.1, and Vulkan 1.2, respectively,+-- and if the application sets @apiVersion@ to 1.2, the application /can/+-- use the following versions of Vulkan:+--+-- - Vulkan 1.0 /can/ be used with the instance and with all physical+-- devices.+--+-- - Vulkan 1.1 /can/ be used with the instance and with the physical+-- devices that support Vulkan 1.1 and Vulkan 1.2.+--+-- - Vulkan 1.2 /can/ be used with the physical device that supports+-- Vulkan 1.2.+--+-- If we modify the above example so that the application sets @apiVersion@+-- to 1.1, then the application /must/ not use Vulkan 1.2 functionality on+-- the physical device that supports Vulkan 1.2.+--+-- Implicit layers /must/ be disabled if they do not support a version at+-- least as high as @apiVersion@. See the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#LoaderAndLayerInterface Vulkan Loader Specification and Architecture Overview>+-- document for additional information.+--+-- Note+--+-- Providing a @NULL@ 'InstanceCreateInfo'::@pApplicationInfo@ or providing+-- an @apiVersion@ of 0 is equivalent to providing an @apiVersion@ of+-- @VK_MAKE_VERSION(1,0,0)@.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_APPLICATION_INFO'+--+-- - @pNext@ /must/ be @NULL@+--+-- - If @pApplicationName@ is not @NULL@, @pApplicationName@ /must/ be a+-- null-terminated UTF-8 string+--+-- - If @pEngineName@ is not @NULL@, @pEngineName@ /must/ be a+-- null-terminated UTF-8 string+--+-- = See Also+--+-- 'InstanceCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ApplicationInfo = ApplicationInfo+ { -- | @pApplicationName@ is @NULL@ or is a pointer to a null-terminated UTF-8+ -- string containing the name of the application.+ applicationName :: Maybe ByteString+ , -- | @applicationVersion@ is an unsigned integer variable containing the+ -- developer-supplied version number of the application.+ applicationVersion :: Word32+ , -- | @pEngineName@ is @NULL@ or is a pointer to a null-terminated UTF-8+ -- string containing the name of the engine (if any) used to create the+ -- application.+ engineName :: Maybe ByteString+ , -- | @engineVersion@ is an unsigned integer variable containing the+ -- developer-supplied version number of the engine used to create the+ -- application.+ engineVersion :: Word32+ , -- | @apiVersion@ /must/ be the highest version of Vulkan that the+ -- application is designed to use, encoded as described in+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-coreversions-versionnumbers>.+ -- The patch version number specified in @apiVersion@ is ignored when+ -- creating an instance object. Only the major and minor versions of the+ -- instance /must/ match those requested in @apiVersion@.+ apiVersion :: Word32+ }+ deriving (Typeable)+deriving instance Show ApplicationInfo++instance ToCStruct ApplicationInfo where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ApplicationInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_APPLICATION_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pApplicationName'' <- case (applicationName) of+ Nothing -> pure nullPtr+ Just j -> ContT $ useAsCString (j)+ lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CChar))) pApplicationName''+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (applicationVersion)+ pEngineName'' <- case (engineName) of+ Nothing -> pure nullPtr+ Just j -> ContT $ useAsCString (j)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CChar))) pEngineName''+ lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (engineVersion)+ lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) (apiVersion)+ lift $ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_APPLICATION_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)+ f++instance FromCStruct ApplicationInfo where+ peekCStruct p = do+ pApplicationName <- peek @(Ptr CChar) ((p `plusPtr` 16 :: Ptr (Ptr CChar)))+ pApplicationName' <- maybePeek (\j -> packCString (j)) pApplicationName+ applicationVersion <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ pEngineName <- peek @(Ptr CChar) ((p `plusPtr` 32 :: Ptr (Ptr CChar)))+ pEngineName' <- maybePeek (\j -> packCString (j)) pEngineName+ engineVersion <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))+ apiVersion <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))+ pure $ ApplicationInfo+ pApplicationName' applicationVersion pEngineName' engineVersion apiVersion++instance Zero ApplicationInfo where+ zero = ApplicationInfo+ Nothing+ zero+ Nothing+ zero+ zero+++-- | VkInstanceCreateInfo - Structure specifying parameters of a newly+-- created instance+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INSTANCE_CREATE_INFO'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.DebugReportCallbackCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_features.ValidationFeaturesEXT',+-- or+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_flags.ValidationFlagsEXT'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+--+-- - If @pApplicationInfo@ is not @NULL@, @pApplicationInfo@ /must/ be a+-- valid pointer to a valid 'ApplicationInfo' structure+--+-- - If @enabledLayerCount@ is not @0@, @ppEnabledLayerNames@ /must/ be a+-- valid pointer to an array of @enabledLayerCount@ null-terminated+-- UTF-8 strings+--+-- - If @enabledExtensionCount@ is not @0@, @ppEnabledExtensionNames@+-- /must/ be a valid pointer to an array of @enabledExtensionCount@+-- null-terminated UTF-8 strings+--+-- = See Also+--+-- 'ApplicationInfo',+-- 'Graphics.Vulkan.Core10.Enums.InstanceCreateFlags.InstanceCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createInstance'+data InstanceCreateInfo (es :: [Type]) = InstanceCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: InstanceCreateFlags+ , -- | @pApplicationInfo@ is @NULL@ or a pointer to a 'ApplicationInfo'+ -- structure. If not @NULL@, this information helps implementations+ -- recognize behavior inherent to classes of applications.+ -- 'ApplicationInfo' is defined in detail below.+ applicationInfo :: Maybe ApplicationInfo+ , -- | @ppEnabledLayerNames@ is a pointer to an array of @enabledLayerCount@+ -- null-terminated UTF-8 strings containing the names of layers to enable+ -- for the created instance. See the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-layers>+ -- section for further details.+ enabledLayerNames :: Vector ByteString+ , -- | @ppEnabledExtensionNames@ is a pointer to an array of+ -- @enabledExtensionCount@ null-terminated UTF-8 strings containing the+ -- names of extensions to enable.+ enabledExtensionNames :: Vector ByteString+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (InstanceCreateInfo es)++instance Extensible InstanceCreateInfo where+ extensibleType = STRUCTURE_TYPE_INSTANCE_CREATE_INFO+ setNext x next = x{next = next}+ getNext InstanceCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends InstanceCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @DebugUtilsMessengerCreateInfoEXT = Just f+ | Just Refl <- eqT @e @ValidationFeaturesEXT = Just f+ | Just Refl <- eqT @e @ValidationFlagsEXT = Just f+ | Just Refl <- eqT @e @DebugReportCallbackCreateInfoEXT = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (InstanceCreateInfo es) where+ withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p InstanceCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INSTANCE_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr InstanceCreateFlags)) (flags)+ pApplicationInfo'' <- case (applicationInfo) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ApplicationInfo))) pApplicationInfo''+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (enabledLayerNames)) :: Word32))+ pPpEnabledLayerNames' <- ContT $ allocaBytesAligned @(Ptr CChar) ((Data.Vector.length (enabledLayerNames)) * 8) 8+ Data.Vector.imapM_ (\i e -> do+ ppEnabledLayerNames'' <- ContT $ useAsCString (e)+ lift $ poke (pPpEnabledLayerNames' `plusPtr` (8 * (i)) :: Ptr (Ptr CChar)) ppEnabledLayerNames'') (enabledLayerNames)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr (Ptr CChar)))) (pPpEnabledLayerNames')+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (enabledExtensionNames)) :: Word32))+ pPpEnabledExtensionNames' <- ContT $ allocaBytesAligned @(Ptr CChar) ((Data.Vector.length (enabledExtensionNames)) * 8) 8+ Data.Vector.imapM_ (\i e -> do+ ppEnabledExtensionNames'' <- ContT $ useAsCString (e)+ lift $ poke (pPpEnabledExtensionNames' `plusPtr` (8 * (i)) :: Ptr (Ptr CChar)) ppEnabledExtensionNames'') (enabledExtensionNames)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (Ptr CChar)))) (pPpEnabledExtensionNames')+ lift $ f+ cStructSize = 64+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INSTANCE_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ pPpEnabledLayerNames' <- ContT $ allocaBytesAligned @(Ptr CChar) ((Data.Vector.length (mempty)) * 8) 8+ Data.Vector.imapM_ (\i e -> do+ ppEnabledLayerNames'' <- ContT $ useAsCString (e)+ lift $ poke (pPpEnabledLayerNames' `plusPtr` (8 * (i)) :: Ptr (Ptr CChar)) ppEnabledLayerNames'') (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr (Ptr CChar)))) (pPpEnabledLayerNames')+ pPpEnabledExtensionNames' <- ContT $ allocaBytesAligned @(Ptr CChar) ((Data.Vector.length (mempty)) * 8) 8+ Data.Vector.imapM_ (\i e -> do+ ppEnabledExtensionNames'' <- ContT $ useAsCString (e)+ lift $ poke (pPpEnabledExtensionNames' `plusPtr` (8 * (i)) :: Ptr (Ptr CChar)) ppEnabledExtensionNames'') (mempty)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (Ptr CChar)))) (pPpEnabledExtensionNames')+ lift $ f++instance PeekChain es => FromCStruct (InstanceCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @InstanceCreateFlags ((p `plusPtr` 16 :: Ptr InstanceCreateFlags))+ pApplicationInfo <- peek @(Ptr ApplicationInfo) ((p `plusPtr` 24 :: Ptr (Ptr ApplicationInfo)))+ pApplicationInfo' <- maybePeek (\j -> peekCStruct @ApplicationInfo (j)) pApplicationInfo+ enabledLayerCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ ppEnabledLayerNames <- peek @(Ptr (Ptr CChar)) ((p `plusPtr` 40 :: Ptr (Ptr (Ptr CChar))))+ ppEnabledLayerNames' <- generateM (fromIntegral enabledLayerCount) (\i -> packCString =<< peek ((ppEnabledLayerNames `advancePtrBytes` (8 * (i)) :: Ptr (Ptr CChar))))+ enabledExtensionCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+ ppEnabledExtensionNames <- peek @(Ptr (Ptr CChar)) ((p `plusPtr` 56 :: Ptr (Ptr (Ptr CChar))))+ ppEnabledExtensionNames' <- generateM (fromIntegral enabledExtensionCount) (\i -> packCString =<< peek ((ppEnabledExtensionNames `advancePtrBytes` (8 * (i)) :: Ptr (Ptr CChar))))+ pure $ InstanceCreateInfo+ next flags pApplicationInfo' ppEnabledLayerNames' ppEnabledExtensionNames'++instance es ~ '[] => Zero (InstanceCreateInfo es) where+ zero = InstanceCreateInfo+ ()+ zero+ Nothing+ mempty+ mempty+++-- | VkQueueFamilyProperties - Structure providing information about a queue+-- family+--+-- = Description+--+-- The value returned in @minImageTransferGranularity@ has a unit of+-- compressed texel blocks for images having a block-compressed format, and+-- a unit of texels otherwise.+--+-- Possible values of @minImageTransferGranularity@ are:+--+-- - (0,0,0) which indicates that only whole mip levels /must/ be+-- transferred using the image transfer operations on the corresponding+-- queues. In this case, the following restrictions apply to all offset+-- and extent parameters of image transfer operations:+--+-- - The @x@, @y@, and @z@ members of a+-- 'Graphics.Vulkan.Core10.SharedTypes.Offset3D' parameter /must/+-- always be zero.+--+-- - The @width@, @height@, and @depth@ members of a+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent3D' parameter /must/+-- always match the width, height, and depth of the image+-- subresource corresponding to the parameter, respectively.+--+-- - (Ax, Ay, Az) where Ax, Ay, and Az are all integer powers of two. In+-- this case the following restrictions apply to all image transfer+-- operations:+--+-- - @x@, @y@, and @z@ of a+-- 'Graphics.Vulkan.Core10.SharedTypes.Offset3D' parameter /must/+-- be integer multiples of Ax, Ay, and Az, respectively.+--+-- - @width@ of a 'Graphics.Vulkan.Core10.SharedTypes.Extent3D'+-- parameter /must/ be an integer multiple of Ax, or else @x@ ++-- @width@ /must/ equal the width of the image subresource+-- corresponding to the parameter.+--+-- - @height@ of a 'Graphics.Vulkan.Core10.SharedTypes.Extent3D'+-- parameter /must/ be an integer multiple of Ay, or else @y@ ++-- @height@ /must/ equal the height of the image subresource+-- corresponding to the parameter.+--+-- - @depth@ of a 'Graphics.Vulkan.Core10.SharedTypes.Extent3D'+-- parameter /must/ be an integer multiple of Az, or else @z@ ++-- @depth@ /must/ equal the depth of the image subresource+-- corresponding to the parameter.+--+-- - If the format of the image corresponding to the parameters is+-- one of the block-compressed formats then for the purposes of the+-- above calculations the granularity /must/ be scaled up by the+-- compressed texel block dimensions.+--+-- Queues supporting graphics and\/or compute operations /must/ report+-- (1,1,1) in @minImageTransferGranularity@, meaning that there are no+-- additional restrictions on the granularity of image transfer operations+-- for these queues. Other queues supporting image transfer operations are+-- only /required/ to support whole mip level transfers, thus+-- @minImageTransferGranularity@ for queues belonging to such queue+-- families /may/ be (0,0,0).+--+-- The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device Device Memory>+-- section describes memory properties queried from the physical device.+--+-- For physical device feature queries see the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features Features>+-- chapter.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent3D',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2',+-- 'Graphics.Vulkan.Core10.Enums.QueueFlagBits.QueueFlags',+-- 'getPhysicalDeviceQueueFamilyProperties'+data QueueFamilyProperties = QueueFamilyProperties+ { -- | 'Graphics.Vulkan.Core10.Enums.QueueFlagBits.QueueFlags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.QueueFlagBits.QueueFlagBits' indicating+ -- capabilities of the queues in this queue family.+ queueFlags :: QueueFlags+ , -- | @queueCount@ is the unsigned integer count of queues in this queue+ -- family. Each queue family /must/ support at least one queue.+ queueCount :: Word32+ , -- | @timestampValidBits@ is the unsigned integer count of meaningful bits in+ -- the timestamps written via+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp'. The+ -- valid range for the count is 36..64 bits, or a value of 0, indicating no+ -- support for timestamps. Bits outside the valid range are guaranteed to+ -- be zeros.+ timestampValidBits :: Word32+ , -- | @minImageTransferGranularity@ is the minimum granularity supported for+ -- image transfer operations on the queues in this queue family.+ minImageTransferGranularity :: Extent3D+ }+ deriving (Typeable)+deriving instance Show QueueFamilyProperties++instance ToCStruct QueueFamilyProperties where+ withCStruct x f = allocaBytesAligned 24 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p QueueFamilyProperties{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr QueueFlags)) (queueFlags)+ lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (queueCount)+ lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (timestampValidBits)+ ContT $ pokeCStruct ((p `plusPtr` 12 :: Ptr Extent3D)) (minImageTransferGranularity) . ($ ())+ lift $ f+ cStructSize = 24+ cStructAlignment = 4+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 12 :: Ptr Extent3D)) (zero) . ($ ())+ lift $ f++instance FromCStruct QueueFamilyProperties where+ peekCStruct p = do+ queueFlags <- peek @QueueFlags ((p `plusPtr` 0 :: Ptr QueueFlags))+ queueCount <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ timestampValidBits <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ minImageTransferGranularity <- peekCStruct @Extent3D ((p `plusPtr` 12 :: Ptr Extent3D))+ pure $ QueueFamilyProperties+ queueFlags queueCount timestampValidBits minImageTransferGranularity++instance Zero QueueFamilyProperties where+ zero = QueueFamilyProperties+ zero+ zero+ zero+ zero+++-- | VkPhysicalDeviceMemoryProperties - Structure specifying physical device+-- memory properties+--+-- = Description+--+-- The 'PhysicalDeviceMemoryProperties' structure describes a number of+-- /memory heaps/ as well as a number of /memory types/ that /can/ be used+-- to access memory allocated in those heaps. Each heap describes a memory+-- resource of a particular size, and each memory type describes a set of+-- memory properties (e.g. host cached vs uncached) that /can/ be used with+-- a given memory heap. Allocations using a particular memory type will+-- consume resources from the heap indicated by that memory type’s heap+-- index. More than one memory type /may/ share each heap, and the heaps+-- and memory types provide a mechanism to advertise an accurate size of+-- the physical memory resources while allowing the memory to be used with+-- a variety of different properties.+--+-- The number of memory heaps is given by @memoryHeapCount@ and is less+-- than or equal to 'Graphics.Vulkan.Core10.APIConstants.MAX_MEMORY_HEAPS'.+-- Each heap is described by an element of the @memoryHeaps@ array as a+-- 'MemoryHeap' structure. The number of memory types available across all+-- memory heaps is given by @memoryTypeCount@ and is less than or equal to+-- 'Graphics.Vulkan.Core10.APIConstants.MAX_MEMORY_TYPES'. Each memory type+-- is described by an element of the @memoryTypes@ array as a 'MemoryType'+-- structure.+--+-- At least one heap /must/ include+-- 'Graphics.Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_DEVICE_LOCAL_BIT'+-- in 'MemoryHeap'::'Graphics.Vulkan.Core10.BaseType.Flags'. If there are+-- multiple heaps that all have similar performance characteristics, they+-- /may/ all include+-- 'Graphics.Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_DEVICE_LOCAL_BIT'.+-- In a unified memory architecture (UMA) system there is often only a+-- single memory heap which is considered to be equally “local” to the host+-- and to the device, and such an implementation /must/ advertise the heap+-- as device-local.+--+-- Each memory type returned by 'getPhysicalDeviceMemoryProperties' /must/+-- have its @propertyFlags@ set to one of the following values:+--+-- - 0+--+-- - 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'+--+-- - 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'+--+-- - 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'+--+-- - 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'+--+-- - 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'+--+-- - 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'+--+-- - 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'+--+-- - 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT'+--+-- - 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT'+--+-- - 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'+--+-- - 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'+--+-- - 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'+--+-- - 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'+--+-- - 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'+--+-- - 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'+--+-- - 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD'+--+-- - 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD'+--+-- - 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD'+--+-- - 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD'+--+-- - 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_CACHED_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD'+--+-- There /must/ be at least one memory type with both the+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'+-- and+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'+-- bits set in its @propertyFlags@. There /must/ be at least one memory+-- type with the+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'+-- bit set in its @propertyFlags@. If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceCoherentMemory deviceCoherentMemory>+-- feature is enabled, there /must/ be at least one memory type with the+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'+-- bit set in its @propertyFlags@.+--+-- For each pair of elements __X__ and __Y__ returned in @memoryTypes@,+-- __X__ /must/ be placed at a lower index position than __Y__ if:+--+-- - either the set of bit flags returned in the @propertyFlags@ member+-- of __X__ is a strict subset of the set of bit flags returned in the+-- @propertyFlags@ member of __Y__; or+--+-- - the @propertyFlags@ members of __X__ and __Y__ are equal, and __X__+-- belongs to a memory heap with greater performance (as determined in+-- an implementation-specific manner) ; or+--+-- - or the @propertyFlags@ members of __X__ includes+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'+-- or+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD'+-- and __Y__ does not+--+-- Note+--+-- There is no ordering requirement between __X__ and __Y__ elements for+-- the case their @propertyFlags@ members are not in a subset relation.+-- That potentially allows more than one possible way to order the same set+-- of memory types. Notice that the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-bitmask-list list of all allowed memory property flag combinations>+-- is written in a valid order. But if instead+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'+-- was before+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT',+-- the list would still be in a valid order.+--+-- There may be a performance penalty for using device coherent or uncached+-- device memory types, and using these accidentally is undesirable. In+-- order to avoid this, memory types with these properties always appear at+-- the end of the list; but are subject to the same rules otherwise.+--+-- This ordering requirement enables applications to use a simple search+-- loop to select the desired memory type along the lines of:+--+-- > // Find a memory in `memoryTypeBitsRequirement` that includes all of `requiredProperties`+-- > int32_t findProperties(const VkPhysicalDeviceMemoryProperties* pMemoryProperties,+-- > uint32_t memoryTypeBitsRequirement,+-- > VkMemoryPropertyFlags requiredProperties) {+-- > const uint32_t memoryCount = pMemoryProperties->memoryTypeCount;+-- > for (uint32_t memoryIndex = 0; memoryIndex < memoryCount; ++memoryIndex) {+-- > const uint32_t memoryTypeBits = (1 << memoryIndex);+-- > const bool isRequiredMemoryType = memoryTypeBitsRequirement & memoryTypeBits;+-- >+-- > const VkMemoryPropertyFlags properties =+-- > pMemoryProperties->memoryTypes[memoryIndex].propertyFlags;+-- > const bool hasRequiredProperties =+-- > (properties & requiredProperties) == requiredProperties;+-- >+-- > if (isRequiredMemoryType && hasRequiredProperties)+-- > return static_cast<int32_t>(memoryIndex);+-- > }+-- >+-- > // failed to find memory type+-- > return -1;+-- > }+-- >+-- > // Try to find an optimal memory type, or if it does not exist try fallback memory type+-- > // `device` is the VkDevice+-- > // `image` is the VkImage that requires memory to be bound+-- > // `memoryProperties` properties as returned by vkGetPhysicalDeviceMemoryProperties+-- > // `requiredProperties` are the property flags that must be present+-- > // `optimalProperties` are the property flags that are preferred by the application+-- > VkMemoryRequirements memoryRequirements;+-- > vkGetImageMemoryRequirements(device, image, &memoryRequirements);+-- > int32_t memoryType =+-- > findProperties(&memoryProperties, memoryRequirements.memoryTypeBits, optimalProperties);+-- > if (memoryType == -1) // not found; try fallback properties+-- > memoryType =+-- > findProperties(&memoryProperties, memoryRequirements.memoryTypeBits, requiredProperties);+--+-- = See Also+--+-- 'MemoryHeap', 'MemoryType',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceMemoryProperties2',+-- 'getPhysicalDeviceMemoryProperties'+data PhysicalDeviceMemoryProperties = PhysicalDeviceMemoryProperties+ { -- | @memoryTypeCount@ is the number of valid elements in the @memoryTypes@+ -- array.+ memoryTypeCount :: Word32+ , -- | @memoryTypes@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.MAX_MEMORY_TYPES' 'MemoryType'+ -- structures describing the /memory types/ that /can/ be used to access+ -- memory allocated from the heaps specified by @memoryHeaps@.+ memoryTypes :: Vector MemoryType+ , -- | @memoryHeapCount@ is the number of valid elements in the @memoryHeaps@+ -- array.+ memoryHeapCount :: Word32+ , -- | @memoryHeaps@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.MAX_MEMORY_HEAPS' 'MemoryHeap'+ -- structures describing the /memory heaps/ from which memory /can/ be+ -- allocated.+ memoryHeaps :: Vector MemoryHeap+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceMemoryProperties++instance ToCStruct PhysicalDeviceMemoryProperties where+ withCStruct x f = allocaBytesAligned 520 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceMemoryProperties{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (memoryTypeCount)+ lift $ unless ((Data.Vector.length $ (memoryTypes)) <= MAX_MEMORY_TYPES) $+ throwIO $ IOError Nothing InvalidArgument "" "memoryTypes is too long, a maximum of MAX_MEMORY_TYPES elements are allowed" Nothing Nothing+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct ((lowerArrayPtr ((p `plusPtr` 4 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_TYPES MemoryType)))) `plusPtr` (8 * (i)) :: Ptr MemoryType) (e) . ($ ())) (memoryTypes)+ lift $ poke ((p `plusPtr` 260 :: Ptr Word32)) (memoryHeapCount)+ lift $ unless ((Data.Vector.length $ (memoryHeaps)) <= MAX_MEMORY_HEAPS) $+ throwIO $ IOError Nothing InvalidArgument "" "memoryHeaps is too long, a maximum of MAX_MEMORY_HEAPS elements are allowed" Nothing Nothing+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct ((lowerArrayPtr ((p `plusPtr` 264 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_HEAPS MemoryHeap)))) `plusPtr` (16 * (i)) :: Ptr MemoryHeap) (e) . ($ ())) (memoryHeaps)+ lift $ f+ cStructSize = 520+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ lift $ unless ((Data.Vector.length $ (mempty)) <= MAX_MEMORY_TYPES) $+ throwIO $ IOError Nothing InvalidArgument "" "memoryTypes is too long, a maximum of MAX_MEMORY_TYPES elements are allowed" Nothing Nothing+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct ((lowerArrayPtr ((p `plusPtr` 4 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_TYPES MemoryType)))) `plusPtr` (8 * (i)) :: Ptr MemoryType) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 260 :: Ptr Word32)) (zero)+ lift $ unless ((Data.Vector.length $ (mempty)) <= MAX_MEMORY_HEAPS) $+ throwIO $ IOError Nothing InvalidArgument "" "memoryHeaps is too long, a maximum of MAX_MEMORY_HEAPS elements are allowed" Nothing Nothing+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct ((lowerArrayPtr ((p `plusPtr` 264 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_HEAPS MemoryHeap)))) `plusPtr` (16 * (i)) :: Ptr MemoryHeap) (e) . ($ ())) (mempty)+ lift $ f++instance FromCStruct PhysicalDeviceMemoryProperties where+ peekCStruct p = do+ memoryTypeCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ memoryTypes <- generateM (MAX_MEMORY_TYPES) (\i -> peekCStruct @MemoryType (((lowerArrayPtr @MemoryType ((p `plusPtr` 4 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_TYPES MemoryType)))) `advancePtrBytes` (8 * (i)) :: Ptr MemoryType)))+ memoryHeapCount <- peek @Word32 ((p `plusPtr` 260 :: Ptr Word32))+ memoryHeaps <- generateM (MAX_MEMORY_HEAPS) (\i -> peekCStruct @MemoryHeap (((lowerArrayPtr @MemoryHeap ((p `plusPtr` 264 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_HEAPS MemoryHeap)))) `advancePtrBytes` (16 * (i)) :: Ptr MemoryHeap)))+ pure $ PhysicalDeviceMemoryProperties+ memoryTypeCount memoryTypes memoryHeapCount memoryHeaps++instance Zero PhysicalDeviceMemoryProperties where+ zero = PhysicalDeviceMemoryProperties+ zero+ mempty+ zero+ mempty+++-- | VkMemoryType - Structure specifying memory type+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MemoryPropertyFlags',+-- 'PhysicalDeviceMemoryProperties'+data MemoryType = MemoryType+ { -- | @propertyFlags@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MemoryPropertyFlagBits'+ -- of properties for this memory type.+ propertyFlags :: MemoryPropertyFlags+ , -- | @heapIndex@ describes which memory heap this memory type corresponds to,+ -- and /must/ be less than @memoryHeapCount@ from the+ -- 'PhysicalDeviceMemoryProperties' structure.+ heapIndex :: Word32+ }+ deriving (Typeable)+deriving instance Show MemoryType++instance ToCStruct MemoryType where+ withCStruct x f = allocaBytesAligned 8 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p MemoryType{..} f = do+ poke ((p `plusPtr` 0 :: Ptr MemoryPropertyFlags)) (propertyFlags)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (heapIndex)+ f+ cStructSize = 8+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ f++instance FromCStruct MemoryType where+ peekCStruct p = do+ propertyFlags <- peek @MemoryPropertyFlags ((p `plusPtr` 0 :: Ptr MemoryPropertyFlags))+ heapIndex <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ pure $ MemoryType+ propertyFlags heapIndex++instance Storable MemoryType where+ sizeOf ~_ = 8+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MemoryType where+ zero = MemoryType+ zero+ zero+++-- | VkMemoryHeap - Structure specifying a memory heap+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.MemoryHeapFlagBits.MemoryHeapFlags',+-- 'PhysicalDeviceMemoryProperties'+data MemoryHeap = MemoryHeap+ { -- | @size@ is the total memory size in bytes in the heap.+ size :: DeviceSize+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.MemoryHeapFlagBits.MemoryHeapFlagBits'+ -- specifying attribute flags for the heap.+ flags :: MemoryHeapFlags+ }+ deriving (Typeable)+deriving instance Show MemoryHeap++instance ToCStruct MemoryHeap where+ withCStruct x f = allocaBytesAligned 16 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p MemoryHeap{..} f = do+ poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (size)+ poke ((p `plusPtr` 8 :: Ptr MemoryHeapFlags)) (flags)+ f+ cStructSize = 16+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (zero)+ f++instance FromCStruct MemoryHeap where+ peekCStruct p = do+ size <- peek @DeviceSize ((p `plusPtr` 0 :: Ptr DeviceSize))+ flags <- peek @MemoryHeapFlags ((p `plusPtr` 8 :: Ptr MemoryHeapFlags))+ pure $ MemoryHeap+ size flags++instance Storable MemoryHeap where+ sizeOf ~_ = 16+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MemoryHeap where+ zero = MemoryHeap+ zero+ zero+++-- | VkFormatProperties - Structure specifying image format properties+--+-- = Description+--+-- Note+--+-- If no format feature flags are supported, the format itself is not+-- supported, and images of that format cannot be created.+--+-- If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a block-compressed+-- format, then @bufferFeatures@ /must/ not support any features for the+-- format.+--+-- If 'Graphics.Vulkan.Core10.Enums.Format.Format' is not a multi-plane+-- format then @linearTilingFeatures@ and @optimalTilingFeatures@ /must/+-- not contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DISJOINT_BIT'.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlags',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2',+-- 'getPhysicalDeviceFormatProperties'+data FormatProperties = FormatProperties+ { -- | @linearTilingFeatures@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits'+ -- specifying features supported by images created with a @tiling@+ -- parameter of+ -- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR'.+ linearTilingFeatures :: FormatFeatureFlags+ , -- | @optimalTilingFeatures@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits'+ -- specifying features supported by images created with a @tiling@+ -- parameter of+ -- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'.+ optimalTilingFeatures :: FormatFeatureFlags+ , -- | @bufferFeatures@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits'+ -- specifying features supported by buffers.+ bufferFeatures :: FormatFeatureFlags+ }+ deriving (Typeable)+deriving instance Show FormatProperties++instance ToCStruct FormatProperties where+ withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p FormatProperties{..} f = do+ poke ((p `plusPtr` 0 :: Ptr FormatFeatureFlags)) (linearTilingFeatures)+ poke ((p `plusPtr` 4 :: Ptr FormatFeatureFlags)) (optimalTilingFeatures)+ poke ((p `plusPtr` 8 :: Ptr FormatFeatureFlags)) (bufferFeatures)+ f+ cStructSize = 12+ cStructAlignment = 4+ pokeZeroCStruct _ f = f++instance FromCStruct FormatProperties where+ peekCStruct p = do+ linearTilingFeatures <- peek @FormatFeatureFlags ((p `plusPtr` 0 :: Ptr FormatFeatureFlags))+ optimalTilingFeatures <- peek @FormatFeatureFlags ((p `plusPtr` 4 :: Ptr FormatFeatureFlags))+ bufferFeatures <- peek @FormatFeatureFlags ((p `plusPtr` 8 :: Ptr FormatFeatureFlags))+ pure $ FormatProperties+ linearTilingFeatures optimalTilingFeatures bufferFeatures++instance Storable FormatProperties where+ sizeOf ~_ = 12+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero FormatProperties where+ zero = FormatProperties+ zero+ zero+ zero+++-- | VkImageFormatProperties - Structure specifying an image format+-- properties+--+-- = Members+--+-- - @maxExtent@ are the maximum image dimensions. See the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extentperimagetype Allowed Extent Values>+-- section below for how these values are constrained by @type@.+--+-- - @maxMipLevels@ is the maximum number of mipmap levels.+-- @maxMipLevels@ /must/ be equal to the number of levels in the+-- complete mipmap chain based on the @maxExtent.width@,+-- @maxExtent.height@, and @maxExtent.depth@, except when one of the+-- following conditions is true, in which case it /may/ instead be @1@:+--+-- - 'getPhysicalDeviceImageFormatProperties'::@tiling@ was+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR'+--+-- - 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'::@tiling@+-- was+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'+--+-- - the+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'::@pNext@+-- chain included a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo'+-- structure with a handle type included in the @handleTypes@+-- member for which mipmap image support is not required+--+-- - image 'Graphics.Vulkan.Core10.Enums.Format.Format' is one of+-- those listed in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion>+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'+--+-- - @maxArrayLayers@ is the maximum number of array layers.+-- @maxArrayLayers@ /must/ be no less than+-- 'PhysicalDeviceLimits'::@maxImageArrayLayers@, except when one of+-- the following conditions is true, in which case it /may/ instead be+-- @1@:+--+-- - @tiling@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR'+--+-- - @tiling@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'+-- and @type@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D'+--+-- - 'Graphics.Vulkan.Core10.Enums.Format.Format' is one of those+-- listed in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion>+--+-- - If @tiling@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',+-- then @maxArrayLayers@ /must/ not be 0.+--+-- - @sampleCounts@ is a bitmask of+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+-- specifying all the supported sample counts for this image as+-- described+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-supported-sample-counts below>.+--+-- - @maxResourceSize@ is an upper bound on the total image size in+-- bytes, inclusive of all image subresources. Implementations /may/+-- have an address space limit on total size of a resource, which is+-- advertised by this property. @maxResourceSize@ /must/ be at least+-- 231.+--+-- = Description+--+-- Note+--+-- There is no mechanism to query the size of an image before creating it,+-- to compare that size against @maxResourceSize@. If an application+-- attempts to create an image that exceeds this limit, the creation will+-- fail and 'Graphics.Vulkan.Core10.Image.createImage' will return+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'. While+-- the advertised limit /must/ be at least 231, it /may/ not be possible to+-- create an image that approaches that size, particularly for+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D'.+--+-- If the combination of parameters to+-- 'getPhysicalDeviceImageFormatProperties' is not supported by the+-- implementation for use in 'Graphics.Vulkan.Core10.Image.createImage',+-- then all members of 'ImageFormatProperties' will be filled with zero.+--+-- Note+--+-- Filling 'ImageFormatProperties' with zero for unsupported formats is an+-- exception to the usual rule that output structures have undefined+-- contents on error. This exception was unintentional, but is preserved+-- for backwards compatibility.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent3D',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.ExternalImageFormatPropertiesNV',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2',+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlags',+-- 'getPhysicalDeviceImageFormatProperties'+data ImageFormatProperties = ImageFormatProperties+ { -- No documentation found for Nested "VkImageFormatProperties" "maxExtent"+ maxExtent :: Extent3D+ , -- No documentation found for Nested "VkImageFormatProperties" "maxMipLevels"+ maxMipLevels :: Word32+ , -- No documentation found for Nested "VkImageFormatProperties" "maxArrayLayers"+ maxArrayLayers :: Word32+ , -- No documentation found for Nested "VkImageFormatProperties" "sampleCounts"+ sampleCounts :: SampleCountFlags+ , -- No documentation found for Nested "VkImageFormatProperties" "maxResourceSize"+ maxResourceSize :: DeviceSize+ }+ deriving (Typeable)+deriving instance Show ImageFormatProperties++instance ToCStruct ImageFormatProperties where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageFormatProperties{..} f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Extent3D)) (maxExtent) . ($ ())+ lift $ poke ((p `plusPtr` 12 :: Ptr Word32)) (maxMipLevels)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (maxArrayLayers)+ lift $ poke ((p `plusPtr` 20 :: Ptr SampleCountFlags)) (sampleCounts)+ lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (maxResourceSize)+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Extent3D)) (zero) . ($ ())+ lift $ poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)+ lift $ f++instance FromCStruct ImageFormatProperties where+ peekCStruct p = do+ maxExtent <- peekCStruct @Extent3D ((p `plusPtr` 0 :: Ptr Extent3D))+ maxMipLevels <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))+ maxArrayLayers <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ sampleCounts <- peek @SampleCountFlags ((p `plusPtr` 20 :: Ptr SampleCountFlags))+ maxResourceSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))+ pure $ ImageFormatProperties+ maxExtent maxMipLevels maxArrayLayers sampleCounts maxResourceSize++instance Zero ImageFormatProperties where+ zero = ImageFormatProperties+ zero+ zero+ zero+ zero+ zero+++-- | VkPhysicalDeviceFeatures - Structure describing the fine-grained+-- features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceFeatures' structure describe the+-- following features:+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- 'getPhysicalDeviceFeatures'+data PhysicalDeviceFeatures = PhysicalDeviceFeatures+ { -- | @robustBufferAccess@ specifies that accesses to buffers are+ -- bounds-checked against the range of the buffer descriptor (as determined+ -- by 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorBufferInfo'::@range@,+ -- 'Graphics.Vulkan.Core10.BufferView.BufferViewCreateInfo'::@range@, or+ -- the size of the buffer). Out of bounds accesses /must/ not cause+ -- application termination, and the effects of shader loads, stores, and+ -- atomics /must/ conform to an implementation-dependent behavior as+ -- described below.+ --+ -- - A buffer access is considered to be out of bounds if any of the+ -- following are true:+ --+ -- - The pointer was formed by @OpImageTexelPointer@ and the+ -- coordinate is less than zero or greater than or equal to the+ -- number of whole elements in the bound range.+ --+ -- - The pointer was not formed by @OpImageTexelPointer@ and the+ -- object pointed to is not wholly contained within the bound+ -- range. This includes accesses performed via /variable pointers/+ -- where the buffer descriptor being accessed cannot be statically+ -- determined. Uninitialized pointers and pointers equal to+ -- @OpConstantNull@ are treated as pointing to a zero-sized object,+ -- so all accesses through such pointers are considered to be out+ -- of bounds. Buffer accesses through buffer device addresses are+ -- not bounds-checked. If the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cooperativeMatrixRobustBufferAccess cooperativeMatrixRobustBufferAccess>+ -- feature is not enabled, then accesses using+ -- @OpCooperativeMatrixLoadNV@ and @OpCooperativeMatrixStoreNV@+ -- /may/ not be bounds-checked.+ --+ -- Note+ --+ -- If a SPIR-V @OpLoad@ instruction loads a structure and the tail+ -- end of the structure is out of bounds, then all members of the+ -- structure are considered out of bounds even if the members at+ -- the end are not statically used.+ --+ -- - If any buffer access is determined to be out of bounds, then any+ -- other access of the same type (load, store, or atomic) to the+ -- same buffer that accesses an address less than 16 bytes away+ -- from the out of bounds address /may/ also be considered out of+ -- bounds.+ --+ -- - Out-of-bounds buffer loads will return any of the following values:+ --+ -- - Values from anywhere within the memory range(s) bound to the+ -- buffer (possibly including bytes of memory past the end of the+ -- buffer, up to the end of the bound range).+ --+ -- - Zero values, or (0,0,0,x) vectors for vector reads where x is a+ -- valid value represented in the type of the vector components and+ -- /may/ be any of:+ --+ -- - 0, 1, or the maximum representable positive integer value,+ -- for signed or unsigned integer components+ --+ -- - 0.0 or 1.0, for floating-point components+ --+ -- - Out-of-bounds writes /may/ modify values within the memory range(s)+ -- bound to the buffer, but /must/ not modify any other memory.+ --+ -- - Out-of-bounds atomics /may/ modify values within the memory range(s)+ -- bound to the buffer, but /must/ not modify any other memory, and+ -- return an undefined value.+ --+ -- - Vertex input attributes are considered out of bounds if the offset+ -- of the attribute in the bound vertex buffer range plus the size of+ -- the attribute is greater than either:+ --+ -- - @vertexBufferRangeSize@, if @bindingStride@ == 0; or+ --+ -- - (@vertexBufferRangeSize@ - (@vertexBufferRangeSize@ %+ -- @bindingStride@))+ --+ -- where @vertexBufferRangeSize@ is the byte size of the memory range+ -- bound to the vertex buffer binding and @bindingStride@ is the byte+ -- stride of the corresponding vertex input binding. Further, if any+ -- vertex input attribute using a specific vertex input binding is out+ -- of bounds, then all vertex input attributes using that vertex input+ -- binding for that vertex shader invocation are considered out of+ -- bounds.+ --+ -- - If a vertex input attribute is out of bounds, it will be+ -- assigned one of the following values:+ --+ -- - Values from anywhere within the memory range(s) bound to the+ -- buffer, converted according to the format of the attribute.+ --+ -- - Zero values, format converted according to the format of the+ -- attribute.+ --+ -- - Zero values, or (0,0,0,x) vectors, as described above.+ --+ -- - If @robustBufferAccess@ is not enabled, applications /must/ not+ -- perform out of bounds accesses.+ robustBufferAccess :: Bool+ , -- | @fullDrawIndexUint32@ specifies the full 32-bit range of indices is+ -- supported for indexed draw calls when using a+ -- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' of+ -- 'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32'.+ -- @maxDrawIndexedIndexValue@ is the maximum index value that /may/ be used+ -- (aside from the primitive restart index, which is always 232-1 when the+ -- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' is+ -- 'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32'). If this+ -- feature is supported, @maxDrawIndexedIndexValue@ /must/ be 232-1;+ -- otherwise it /must/ be no smaller than 224-1. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxDrawIndexedIndexValue maxDrawIndexedIndexValue>.+ fullDrawIndexUint32 :: Bool+ , -- | @imageCubeArray@ specifies whether image views with a+ -- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' of+ -- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'+ -- /can/ be created, and that the corresponding @SampledCubeArray@ and+ -- @ImageCubeArray@ SPIR-V capabilities /can/ be used in shader code.+ imageCubeArray :: Bool+ , -- | @independentBlend@ specifies whether the+ -- 'Graphics.Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'+ -- settings are controlled independently per-attachment. If this feature is+ -- not enabled, the+ -- 'Graphics.Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'+ -- settings for all color attachments /must/ be identical. Otherwise, a+ -- different+ -- 'Graphics.Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'+ -- /can/ be provided for each bound color attachment.+ independentBlend :: Bool+ , -- | @geometryShader@ specifies whether geometry shaders are supported. If+ -- this feature is not enabled, the+ -- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'+ -- and+ -- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'+ -- enum values /must/ not be used. This also specifies whether shader+ -- modules /can/ declare the @Geometry@ capability.+ geometryShader :: Bool+ , -- | @tessellationShader@ specifies whether tessellation control and+ -- evaluation shaders are supported. If this feature is not enabled, the+ -- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',+ -- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',+ -- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',+ -- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',+ -- and+ -- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO'+ -- enum values /must/ not be used. This also specifies whether shader+ -- modules /can/ declare the @Tessellation@ capability.+ tessellationShader :: Bool+ , -- | @sampleRateShading@ specifies whether+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading Sample Shading>+ -- and multisample interpolation are supported. If this feature is not+ -- enabled, the @sampleShadingEnable@ member of the+ -- 'Graphics.Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'+ -- structure /must/ be set to 'Graphics.Vulkan.Core10.BaseType.FALSE' and+ -- the @minSampleShading@ member is ignored. This also specifies whether+ -- shader modules /can/ declare the @SampleRateShading@ capability.+ sampleRateShading :: Bool+ , -- | @dualSrcBlend@ specifies whether blend operations which take two sources+ -- are supported. If this feature is not enabled, the+ -- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_COLOR',+ -- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_COLOR',+ -- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA', and+ -- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'+ -- enum values /must/ not be used as source or destination blending+ -- factors. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb>.+ dualSrcBlend :: Bool+ , -- | 'Graphics.Vulkan.Core10.Enums.LogicOp.LogicOp' specifies whether logic+ -- operations are supported. If this feature is not enabled, the+ -- @logicOpEnable@ member of the+ -- 'Graphics.Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'+ -- structure /must/ be set to 'Graphics.Vulkan.Core10.BaseType.FALSE', and+ -- the 'Graphics.Vulkan.Core10.Enums.LogicOp.LogicOp' member is ignored.+ logicOp :: Bool+ , -- | @multiDrawIndirect@ specifies whether multiple draw indirect is+ -- supported. If this feature is not enabled, the @drawCount@ parameter to+ -- the 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect' and+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect'+ -- commands /must/ be 0 or 1. The @maxDrawIndirectCount@ member of the+ -- 'PhysicalDeviceLimits' structure /must/ also be 1 if this feature is not+ -- supported. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxDrawIndirectCount maxDrawIndirectCount>.+ multiDrawIndirect :: Bool+ , -- | @drawIndirectFirstInstance@ specifies whether indirect draw calls+ -- support the @firstInstance@ parameter. If this feature is not enabled,+ -- the @firstInstance@ member of all+ -- 'Graphics.Vulkan.Core10.OtherTypes.DrawIndirectCommand' and+ -- 'Graphics.Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand'+ -- structures that are provided to the+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect' and+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect'+ -- commands /must/ be 0.+ drawIndirectFirstInstance :: Bool+ , -- | @depthClamp@ specifies whether depth clamping is supported. If this+ -- feature is not enabled, the @depthClampEnable@ member of the+ -- 'Graphics.Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'+ -- structure /must/ be set to 'Graphics.Vulkan.Core10.BaseType.FALSE'.+ -- Otherwise, setting @depthClampEnable@ to+ -- 'Graphics.Vulkan.Core10.BaseType.TRUE' will enable depth clamping.+ depthClamp :: Bool+ , -- | @depthBiasClamp@ specifies whether depth bias clamping is supported. If+ -- this feature is not enabled, the @depthBiasClamp@ member of the+ -- 'Graphics.Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'+ -- structure /must/ be set to 0.0 unless the+ -- 'Graphics.Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS'+ -- dynamic state is enabled, and the @depthBiasClamp@ parameter to+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' /must/ be+ -- set to 0.0.+ depthBiasClamp :: Bool+ , -- | @fillModeNonSolid@ specifies whether point and wireframe fill modes are+ -- supported. If this feature is not enabled, the+ -- 'Graphics.Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_POINT' and+ -- 'Graphics.Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_LINE' enum values+ -- /must/ not be used.+ fillModeNonSolid :: Bool+ , -- | @depthBounds@ specifies whether depth bounds tests are supported. If+ -- this feature is not enabled, the @depthBoundsTestEnable@ member of the+ -- 'Graphics.Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'+ -- structure /must/ be set to 'Graphics.Vulkan.Core10.BaseType.FALSE'. When+ -- @depthBoundsTestEnable@ is set to+ -- 'Graphics.Vulkan.Core10.BaseType.FALSE', the @minDepthBounds@ and+ -- @maxDepthBounds@ members of the+ -- 'Graphics.Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'+ -- structure are ignored.+ depthBounds :: Bool+ , -- | @wideLines@ specifies whether lines with width other than 1.0 are+ -- supported. If this feature is not enabled, the @lineWidth@ member of the+ -- 'Graphics.Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'+ -- structure /must/ be set to 1.0 unless the+ -- 'Graphics.Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH'+ -- dynamic state is enabled, and the @lineWidth@ parameter to+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' /must/ be+ -- set to 1.0. When this feature is supported, the range and granularity of+ -- supported line widths are indicated by the @lineWidthRange@ and+ -- @lineWidthGranularity@ members of the 'PhysicalDeviceLimits' structure,+ -- respectively.+ wideLines :: Bool+ , -- | @largePoints@ specifies whether points with size greater than 1.0 are+ -- supported. If this feature is not enabled, only a point size of 1.0+ -- written by a shader is supported. The range and granularity of supported+ -- point sizes are indicated by the @pointSizeRange@ and+ -- @pointSizeGranularity@ members of the 'PhysicalDeviceLimits' structure,+ -- respectively.+ largePoints :: Bool+ , -- | @alphaToOne@ specifies whether the implementation is able to replace the+ -- alpha value of the color fragment output from the fragment shader with+ -- the maximum representable alpha value for fixed-point colors or 1.0 for+ -- floating-point colors. If this feature is not enabled, then the+ -- @alphaToOneEnable@ member of the+ -- 'Graphics.Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'+ -- structure /must/ be set to 'Graphics.Vulkan.Core10.BaseType.FALSE'.+ -- Otherwise setting @alphaToOneEnable@ to+ -- 'Graphics.Vulkan.Core10.BaseType.TRUE' will enable alpha-to-one+ -- behavior.+ alphaToOne :: Bool+ , -- | @multiViewport@ specifies whether more than one viewport is supported.+ -- If this feature is not enabled:+ --+ -- - The @viewportCount@ and @scissorCount@ members of the+ -- 'Graphics.Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'+ -- structure /must/ be set to 1.+ --+ -- - The @firstViewport@ and @viewportCount@ parameters to the+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetViewport'+ -- command /must/ be set to 0 and 1, respectively.+ --+ -- - The @firstScissor@ and @scissorCount@ parameters to the+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' command+ -- /must/ be set to 0 and 1, respectively.+ --+ -- - The @exclusiveScissorCount@ member of the+ -- 'Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'+ -- structure /must/ be set to 0 or 1.+ --+ -- - The @firstExclusiveScissor@ and @exclusiveScissorCount@ parameters+ -- to the+ -- 'Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'+ -- command /must/ be set to 0 and 1, respectively.+ multiViewport :: Bool+ , -- | @samplerAnisotropy@ specifies whether anisotropic filtering is+ -- supported. If this feature is not enabled, the @anisotropyEnable@ member+ -- of the 'Graphics.Vulkan.Core10.Sampler.SamplerCreateInfo' structure+ -- /must/ be 'Graphics.Vulkan.Core10.BaseType.FALSE'.+ samplerAnisotropy :: Bool+ , -- | @textureCompressionETC2@ specifies whether all of the ETC2 and EAC+ -- compressed texture formats are supported. If this feature is enabled,+ -- then the+ -- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_BIT',+ -- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_SRC_BIT'+ -- and+ -- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+ -- features /must/ be supported in @optimalTilingFeatures@ for the+ -- following formats:+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ETC2_R8G8B8_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ETC2_R8G8B8_SRGB_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_EAC_R11_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_EAC_R11_SNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_EAC_R11G11_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_EAC_R11G11_SNORM_BLOCK'+ --+ -- To query for additional properties, or if the feature is not enabled,+ -- 'getPhysicalDeviceFormatProperties' and+ -- 'getPhysicalDeviceImageFormatProperties' /can/ be used to check for+ -- supported properties of individual formats as normal.+ textureCompressionETC2 :: Bool+ , -- | @textureCompressionASTC_LDR@ specifies whether all of the ASTC LDR+ -- compressed texture formats are supported. If this feature is enabled,+ -- then the+ -- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_BIT',+ -- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_SRC_BIT'+ -- and+ -- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+ -- features /must/ be supported in @optimalTilingFeatures@ for the+ -- following formats:+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4_SRGB_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4_SRGB_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5_SRGB_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5_SRGB_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6_SRGB_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x5_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x5_SRGB_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x6_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x6_SRGB_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x8_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x8_SRGB_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x5_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x5_SRGB_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x6_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x6_SRGB_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x8_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x8_SRGB_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x10_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x10_SRGB_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x10_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x10_SRGB_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x12_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x12_SRGB_BLOCK'+ --+ -- To query for additional properties, or if the feature is not enabled,+ -- 'getPhysicalDeviceFormatProperties' and+ -- 'getPhysicalDeviceImageFormatProperties' /can/ be used to check for+ -- supported properties of individual formats as normal.+ textureCompressionASTC_LDR :: Bool+ , -- | @textureCompressionBC@ specifies whether all of the BC compressed+ -- texture formats are supported. If this feature is enabled, then the+ -- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_BIT',+ -- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_SRC_BIT'+ -- and+ -- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+ -- features /must/ be supported in @optimalTilingFeatures@ for the+ -- following formats:+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_BC1_RGB_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_BC1_RGB_SRGB_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_BC1_RGBA_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_BC1_RGBA_SRGB_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_BC2_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_BC2_SRGB_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_BC3_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_BC3_SRGB_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_BC4_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_BC4_SNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_BC5_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_BC5_SNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_BC6H_UFLOAT_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_BC6H_SFLOAT_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_BC7_UNORM_BLOCK'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_BC7_SRGB_BLOCK'+ --+ -- To query for additional properties, or if the feature is not enabled,+ -- 'getPhysicalDeviceFormatProperties' and+ -- 'getPhysicalDeviceImageFormatProperties' /can/ be used to check for+ -- supported properties of individual formats as normal.+ textureCompressionBC :: Bool+ , -- | @occlusionQueryPrecise@ specifies whether occlusion queries returning+ -- actual sample counts are supported. Occlusion queries are created in a+ -- 'Graphics.Vulkan.Core10.Handles.QueryPool' by specifying the+ -- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' of+ -- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION' in the+ -- 'Graphics.Vulkan.Core10.Query.QueryPoolCreateInfo' structure which is+ -- passed to 'Graphics.Vulkan.Core10.Query.createQueryPool'. If this+ -- feature is enabled, queries of this type /can/ enable+ -- 'Graphics.Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT'+ -- in the 'Graphics.Vulkan.Core10.BaseType.Flags' parameter to+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery'. If this+ -- feature is not supported, the implementation supports only boolean+ -- occlusion queries. When any samples are passed, boolean queries will+ -- return a non-zero result value, otherwise a result value of zero is+ -- returned. When this feature is enabled and+ -- 'Graphics.Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT'+ -- is set, occlusion queries will report the actual number of samples+ -- passed.+ occlusionQueryPrecise :: Bool+ , -- | @pipelineStatisticsQuery@ specifies whether the pipeline statistics+ -- queries are supported. If this feature is not enabled, queries of type+ -- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS'+ -- /cannot/ be created, and none of the+ -- 'Graphics.Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlagBits'+ -- bits /can/ be set in the @pipelineStatistics@ member of the+ -- 'Graphics.Vulkan.Core10.Query.QueryPoolCreateInfo' structure.+ pipelineStatisticsQuery :: Bool+ , -- | @vertexPipelineStoresAndAtomics@ specifies whether storage buffers and+ -- images support stores and atomic operations in the vertex, tessellation,+ -- and geometry shader stages. If this feature is not enabled, all storage+ -- image, storage texel buffers, and storage buffer variables used by these+ -- stages in shader modules /must/ be decorated with the @NonWritable@+ -- decoration (or the @readonly@ memory qualifier in GLSL).+ vertexPipelineStoresAndAtomics :: Bool+ , -- | @fragmentStoresAndAtomics@ specifies whether storage buffers and images+ -- support stores and atomic operations in the fragment shader stage. If+ -- this feature is not enabled, all storage image, storage texel buffers,+ -- and storage buffer variables used by the fragment stage in shader+ -- modules /must/ be decorated with the @NonWritable@ decoration (or the+ -- @readonly@ memory qualifier in GLSL).+ fragmentStoresAndAtomics :: Bool+ , -- | @shaderTessellationAndGeometryPointSize@ specifies whether the+ -- @PointSize@ built-in decoration is available in the tessellation+ -- control, tessellation evaluation, and geometry shader stages. If this+ -- feature is not enabled, members decorated with the @PointSize@ built-in+ -- decoration /must/ not be read from or written to and all points written+ -- from a tessellation or geometry shader will have a size of 1.0. This+ -- also specifies whether shader modules /can/ declare the+ -- @TessellationPointSize@ capability for tessellation control and+ -- evaluation shaders, or if the shader modules /can/ declare the+ -- @GeometryPointSize@ capability for geometry shaders. An implementation+ -- supporting this feature /must/ also support one or both of the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>+ -- or+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>+ -- features.+ shaderTessellationAndGeometryPointSize :: Bool+ , -- | @shaderImageGatherExtended@ specifies whether the extended set of image+ -- gather instructions are available in shader code. If this feature is not+ -- enabled, the @OpImage@*@Gather@ instructions do not support the @Offset@+ -- and @ConstOffsets@ operands. This also specifies whether shader modules+ -- /can/ declare the @ImageGatherExtended@ capability.+ shaderImageGatherExtended :: Bool+ , -- | @shaderStorageImageExtendedFormats@ specifies whether all the “storage+ -- image extended formats” below are supported; if this feature is+ -- supported, then the+ -- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_BIT'+ -- /must/ be supported in @optimalTilingFeatures@ for the following+ -- formats:+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16G16_SFLOAT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_B10G11R11_UFLOAT_PACK32'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16_SFLOAT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16G16B16A16_UNORM'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_A2B10G10R10_UNORM_PACK32'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16G16_UNORM'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R8G8_UNORM'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16_UNORM'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R8_UNORM'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16G16B16A16_SNORM'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16G16_SNORM'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R8G8_SNORM'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16_SNORM'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R8_SNORM'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16G16_SINT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R8G8_SINT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16_SINT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R8_SINT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_A2B10G10R10_UINT_PACK32'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16G16_UINT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R8G8_UINT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16_UINT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R8_UINT'+ --+ -- Note+ --+ -- @shaderStorageImageExtendedFormats@ feature only adds a guarantee of+ -- format support, which is specified for the whole physical device.+ -- Therefore enabling or disabling the feature via+ -- 'Graphics.Vulkan.Core10.Device.createDevice' has no practical effect.+ --+ -- To query for additional properties, or if the feature is not supported,+ -- 'getPhysicalDeviceFormatProperties' and+ -- 'getPhysicalDeviceImageFormatProperties' /can/ be used to check for+ -- supported properties of individual formats, as usual rules allow.+ --+ -- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R32G32_UINT',+ -- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R32G32_SINT', and+ -- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R32G32_SFLOAT' from+ -- @StorageImageExtendedFormats@ SPIR-V capability, are already covered by+ -- core Vulkan+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-mandatory-features-32bit mandatory format support>.+ shaderStorageImageExtendedFormats :: Bool+ , -- | @shaderStorageImageMultisample@ specifies whether multisampled storage+ -- images are supported. If this feature is not enabled, images that are+ -- created with a @usage@ that includes+ -- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT'+ -- /must/ be created with @samples@ equal to+ -- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'.+ -- This also specifies whether shader modules /can/ declare the+ -- @StorageImageMultisample@ capability.+ shaderStorageImageMultisample :: Bool+ , -- | @shaderStorageImageReadWithoutFormat@ specifies whether storage images+ -- require a format qualifier to be specified when reading from storage+ -- images. If this feature is not enabled, the @OpImageRead@ instruction+ -- /must/ not have an @OpTypeImage@ of @Unknown@. This also specifies+ -- whether shader modules /can/ declare the @StorageImageReadWithoutFormat@+ -- capability.+ shaderStorageImageReadWithoutFormat :: Bool+ , -- | @shaderStorageImageWriteWithoutFormat@ specifies whether storage images+ -- require a format qualifier to be specified when writing to storage+ -- images. If this feature is not enabled, the @OpImageWrite@ instruction+ -- /must/ not have an @OpTypeImage@ of @Unknown@. This also specifies+ -- whether shader modules /can/ declare the+ -- @StorageImageWriteWithoutFormat@ capability.+ shaderStorageImageWriteWithoutFormat :: Bool+ , -- | @shaderUniformBufferArrayDynamicIndexing@ specifies whether arrays of+ -- uniform buffers /can/ be indexed by /dynamically uniform/ integer+ -- expressions in shader code. If this feature is not enabled, resources+ -- with a descriptor type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'+ -- /must/ be indexed only by constant integral expressions when aggregated+ -- into arrays in shader code. This also specifies whether shader modules+ -- /can/ declare the @UniformBufferArrayDynamicIndexing@ capability.+ shaderUniformBufferArrayDynamicIndexing :: Bool+ , -- | @shaderSampledImageArrayDynamicIndexing@ specifies whether arrays of+ -- samplers or sampled images /can/ be indexed by dynamically uniform+ -- integer expressions in shader code. If this feature is not enabled,+ -- resources with a descriptor type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'+ -- /must/ be indexed only by constant integral expressions when aggregated+ -- into arrays in shader code. This also specifies whether shader modules+ -- /can/ declare the @SampledImageArrayDynamicIndexing@ capability.+ shaderSampledImageArrayDynamicIndexing :: Bool+ , -- | @shaderStorageBufferArrayDynamicIndexing@ specifies whether arrays of+ -- storage buffers /can/ be indexed by dynamically uniform integer+ -- expressions in shader code. If this feature is not enabled, resources+ -- with a descriptor type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'+ -- /must/ be indexed only by constant integral expressions when aggregated+ -- into arrays in shader code. This also specifies whether shader modules+ -- /can/ declare the @StorageBufferArrayDynamicIndexing@ capability.+ shaderStorageBufferArrayDynamicIndexing :: Bool+ , -- | @shaderStorageImageArrayDynamicIndexing@ specifies whether arrays of+ -- storage images /can/ be indexed by dynamically uniform integer+ -- expressions in shader code. If this feature is not enabled, resources+ -- with a descriptor type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'+ -- /must/ be indexed only by constant integral expressions when aggregated+ -- into arrays in shader code. This also specifies whether shader modules+ -- /can/ declare the @StorageImageArrayDynamicIndexing@ capability.+ shaderStorageImageArrayDynamicIndexing :: Bool+ , -- | @shaderClipDistance@ specifies whether clip distances are supported in+ -- shader code. If this feature is not enabled, any members decorated with+ -- the @ClipDistance@ built-in decoration /must/ not be read from or+ -- written to in shader modules. This also specifies whether shader modules+ -- /can/ declare the @ClipDistance@ capability.+ shaderClipDistance :: Bool+ , -- | @shaderCullDistance@ specifies whether cull distances are supported in+ -- shader code. If this feature is not enabled, any members decorated with+ -- the @CullDistance@ built-in decoration /must/ not be read from or+ -- written to in shader modules. This also specifies whether shader modules+ -- /can/ declare the @CullDistance@ capability.+ shaderCullDistance :: Bool+ , -- | @shaderFloat64@ specifies whether 64-bit floats (doubles) are supported+ -- in shader code. If this feature is not enabled, 64-bit floating-point+ -- types /must/ not be used in shader code. This also specifies whether+ -- shader modules /can/ declare the @Float64@ capability. Declaring and+ -- using 64-bit floats is enabled for all storage classes that SPIR-V+ -- allows with the @Float64@ capability.+ shaderFloat64 :: Bool+ , -- | @shaderInt64@ specifies whether 64-bit integers (signed and unsigned)+ -- are supported in shader code. If this feature is not enabled, 64-bit+ -- integer types /must/ not be used in shader code. This also specifies+ -- whether shader modules /can/ declare the @Int64@ capability. Declaring+ -- and using 64-bit integers is enabled for all storage classes that SPIR-V+ -- allows with the @Int64@ capability.+ shaderInt64 :: Bool+ , -- | @shaderInt16@ specifies whether 16-bit integers (signed and unsigned)+ -- are supported in shader code. If this feature is not enabled, 16-bit+ -- integer types /must/ not be used in shader code. This also specifies+ -- whether shader modules /can/ declare the @Int16@ capability. However,+ -- this only enables a subset of the storage classes that SPIR-V allows for+ -- the @Int16@ SPIR-V capability: Declaring and using 16-bit integers in+ -- the @Private@, @Workgroup@, and @Function@ storage classes is enabled,+ -- while declaring them in the interface storage classes (e.g.,+ -- @UniformConstant@, @Uniform@, @StorageBuffer@, @Input@, @Output@, and+ -- @PushConstant@) is not enabled.+ shaderInt16 :: Bool+ , -- | @shaderResourceResidency@ specifies whether image operations that return+ -- resource residency information are supported in shader code. If this+ -- feature is not enabled, the @OpImageSparse@* instructions /must/ not be+ -- used in shader code. This also specifies whether shader modules /can/+ -- declare the @SparseResidency@ capability. The feature requires at least+ -- one of the @sparseResidency*@ features to be supported.+ shaderResourceResidency :: Bool+ , -- | @shaderResourceMinLod@ specifies whether image operations specifying the+ -- minimum resource LOD are supported in shader code. If this feature is+ -- not enabled, the @MinLod@ image operand /must/ not be used in shader+ -- code. This also specifies whether shader modules /can/ declare the+ -- @MinLod@ capability.+ shaderResourceMinLod :: Bool+ , -- | @sparseBinding@ specifies whether resource memory /can/ be managed at+ -- opaque sparse block level instead of at the object level. If this+ -- feature is not enabled, resource memory /must/ be bound only on a+ -- per-object basis using the+ -- 'Graphics.Vulkan.Core10.MemoryManagement.bindBufferMemory' and+ -- 'Graphics.Vulkan.Core10.MemoryManagement.bindImageMemory' commands. In+ -- this case, buffers and images /must/ not be created with+ -- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_BINDING_BIT'+ -- and+ -- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT'+ -- set in the 'Graphics.Vulkan.Core10.BaseType.Flags' member of the+ -- 'Graphics.Vulkan.Core10.Buffer.BufferCreateInfo' and+ -- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' structures, respectively.+ -- Otherwise resource memory /can/ be managed as described in+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseresourcefeatures Sparse Resource Features>.+ sparseBinding :: Bool+ , -- | @sparseResidencyBuffer@ specifies whether the device /can/ access+ -- partially resident buffers. If this feature is not enabled, buffers+ -- /must/ not be created with+ -- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'+ -- set in the 'Graphics.Vulkan.Core10.BaseType.Flags' member of the+ -- 'Graphics.Vulkan.Core10.Buffer.BufferCreateInfo' structure.+ sparseResidencyBuffer :: Bool+ , -- | @sparseResidencyImage2D@ specifies whether the device /can/ access+ -- partially resident 2D images with 1 sample per pixel. If this feature is+ -- not enabled, images with an+ -- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' of+ -- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and @samples@ set+ -- to 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+ -- /must/ not be created with+ -- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+ -- set in the 'Graphics.Vulkan.Core10.BaseType.Flags' member of the+ -- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' structure.+ sparseResidencyImage2D :: Bool+ , -- | @sparseResidencyImage3D@ specifies whether the device /can/ access+ -- partially resident 3D images. If this feature is not enabled, images+ -- with an 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' of+ -- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D' /must/ not be+ -- created with+ -- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+ -- set in the 'Graphics.Vulkan.Core10.BaseType.Flags' member of the+ -- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' structure.+ sparseResidencyImage3D :: Bool+ , -- | @sparseResidency2Samples@ specifies whether the physical device /can/+ -- access partially resident 2D images with 2 samples per pixel. If this+ -- feature is not enabled, images with an+ -- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' of+ -- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and @samples@ set+ -- to 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_2_BIT'+ -- /must/ not be created with+ -- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+ -- set in the 'Graphics.Vulkan.Core10.BaseType.Flags' member of the+ -- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' structure.+ sparseResidency2Samples :: Bool+ , -- | @sparseResidency4Samples@ specifies whether the physical device /can/+ -- access partially resident 2D images with 4 samples per pixel. If this+ -- feature is not enabled, images with an+ -- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' of+ -- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and @samples@ set+ -- to 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_4_BIT'+ -- /must/ not be created with+ -- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+ -- set in the 'Graphics.Vulkan.Core10.BaseType.Flags' member of the+ -- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' structure.+ sparseResidency4Samples :: Bool+ , -- | @sparseResidency8Samples@ specifies whether the physical device /can/+ -- access partially resident 2D images with 8 samples per pixel. If this+ -- feature is not enabled, images with an+ -- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' of+ -- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and @samples@ set+ -- to 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_8_BIT'+ -- /must/ not be created with+ -- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+ -- set in the 'Graphics.Vulkan.Core10.BaseType.Flags' member of the+ -- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' structure.+ sparseResidency8Samples :: Bool+ , -- | @sparseResidency16Samples@ specifies whether the physical device /can/+ -- access partially resident 2D images with 16 samples per pixel. If this+ -- feature is not enabled, images with an+ -- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' of+ -- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and @samples@ set+ -- to+ -- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_16_BIT'+ -- /must/ not be created with+ -- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+ -- set in the 'Graphics.Vulkan.Core10.BaseType.Flags' member of the+ -- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' structure.+ sparseResidency16Samples :: Bool+ , -- | @sparseResidencyAliased@ specifies whether the physical device /can/+ -- correctly access data aliased into multiple locations. If this feature+ -- is not enabled, the+ -- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_ALIASED_BIT'+ -- and+ -- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_ALIASED_BIT'+ -- enum values /must/ not be used in+ -- 'Graphics.Vulkan.Core10.BaseType.Flags' members of the+ -- 'Graphics.Vulkan.Core10.Buffer.BufferCreateInfo' and+ -- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' structures, respectively.+ sparseResidencyAliased :: Bool+ , -- | @variableMultisampleRate@ specifies whether all pipelines that will be+ -- bound to a command buffer during a subpass with no attachments /must/+ -- have the same value for+ -- 'Graphics.Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@.+ -- If set to 'Graphics.Vulkan.Core10.BaseType.TRUE', the implementation+ -- supports variable multisample rates in a subpass with no attachments. If+ -- set to 'Graphics.Vulkan.Core10.BaseType.FALSE', then all pipelines bound+ -- in such a subpass /must/ have the same multisample rate. This has no+ -- effect in situations where a subpass uses any attachments.+ variableMultisampleRate :: Bool+ , -- | @inheritedQueries@ specifies whether a secondary command buffer /may/ be+ -- executed while a query is active.+ inheritedQueries :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceFeatures++instance ToCStruct PhysicalDeviceFeatures where+ withCStruct x f = allocaBytesAligned 220 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceFeatures{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (robustBufferAccess))+ poke ((p `plusPtr` 4 :: Ptr Bool32)) (boolToBool32 (fullDrawIndexUint32))+ poke ((p `plusPtr` 8 :: Ptr Bool32)) (boolToBool32 (imageCubeArray))+ poke ((p `plusPtr` 12 :: Ptr Bool32)) (boolToBool32 (independentBlend))+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (geometryShader))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (tessellationShader))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (sampleRateShading))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (dualSrcBlend))+ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (logicOp))+ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (multiDrawIndirect))+ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (drawIndirectFirstInstance))+ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (depthClamp))+ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (depthBiasClamp))+ poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (fillModeNonSolid))+ poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (depthBounds))+ poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (wideLines))+ poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (largePoints))+ poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (alphaToOne))+ poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (multiViewport))+ poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (samplerAnisotropy))+ poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (textureCompressionETC2))+ poke ((p `plusPtr` 84 :: Ptr Bool32)) (boolToBool32 (textureCompressionASTC_LDR))+ poke ((p `plusPtr` 88 :: Ptr Bool32)) (boolToBool32 (textureCompressionBC))+ poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (occlusionQueryPrecise))+ poke ((p `plusPtr` 96 :: Ptr Bool32)) (boolToBool32 (pipelineStatisticsQuery))+ poke ((p `plusPtr` 100 :: Ptr Bool32)) (boolToBool32 (vertexPipelineStoresAndAtomics))+ poke ((p `plusPtr` 104 :: Ptr Bool32)) (boolToBool32 (fragmentStoresAndAtomics))+ poke ((p `plusPtr` 108 :: Ptr Bool32)) (boolToBool32 (shaderTessellationAndGeometryPointSize))+ poke ((p `plusPtr` 112 :: Ptr Bool32)) (boolToBool32 (shaderImageGatherExtended))+ poke ((p `plusPtr` 116 :: Ptr Bool32)) (boolToBool32 (shaderStorageImageExtendedFormats))+ poke ((p `plusPtr` 120 :: Ptr Bool32)) (boolToBool32 (shaderStorageImageMultisample))+ poke ((p `plusPtr` 124 :: Ptr Bool32)) (boolToBool32 (shaderStorageImageReadWithoutFormat))+ poke ((p `plusPtr` 128 :: Ptr Bool32)) (boolToBool32 (shaderStorageImageWriteWithoutFormat))+ poke ((p `plusPtr` 132 :: Ptr Bool32)) (boolToBool32 (shaderUniformBufferArrayDynamicIndexing))+ poke ((p `plusPtr` 136 :: Ptr Bool32)) (boolToBool32 (shaderSampledImageArrayDynamicIndexing))+ poke ((p `plusPtr` 140 :: Ptr Bool32)) (boolToBool32 (shaderStorageBufferArrayDynamicIndexing))+ poke ((p `plusPtr` 144 :: Ptr Bool32)) (boolToBool32 (shaderStorageImageArrayDynamicIndexing))+ poke ((p `plusPtr` 148 :: Ptr Bool32)) (boolToBool32 (shaderClipDistance))+ poke ((p `plusPtr` 152 :: Ptr Bool32)) (boolToBool32 (shaderCullDistance))+ poke ((p `plusPtr` 156 :: Ptr Bool32)) (boolToBool32 (shaderFloat64))+ poke ((p `plusPtr` 160 :: Ptr Bool32)) (boolToBool32 (shaderInt64))+ poke ((p `plusPtr` 164 :: Ptr Bool32)) (boolToBool32 (shaderInt16))+ poke ((p `plusPtr` 168 :: Ptr Bool32)) (boolToBool32 (shaderResourceResidency))+ poke ((p `plusPtr` 172 :: Ptr Bool32)) (boolToBool32 (shaderResourceMinLod))+ poke ((p `plusPtr` 176 :: Ptr Bool32)) (boolToBool32 (sparseBinding))+ poke ((p `plusPtr` 180 :: Ptr Bool32)) (boolToBool32 (sparseResidencyBuffer))+ poke ((p `plusPtr` 184 :: Ptr Bool32)) (boolToBool32 (sparseResidencyImage2D))+ poke ((p `plusPtr` 188 :: Ptr Bool32)) (boolToBool32 (sparseResidencyImage3D))+ poke ((p `plusPtr` 192 :: Ptr Bool32)) (boolToBool32 (sparseResidency2Samples))+ poke ((p `plusPtr` 196 :: Ptr Bool32)) (boolToBool32 (sparseResidency4Samples))+ poke ((p `plusPtr` 200 :: Ptr Bool32)) (boolToBool32 (sparseResidency8Samples))+ poke ((p `plusPtr` 204 :: Ptr Bool32)) (boolToBool32 (sparseResidency16Samples))+ poke ((p `plusPtr` 208 :: Ptr Bool32)) (boolToBool32 (sparseResidencyAliased))+ poke ((p `plusPtr` 212 :: Ptr Bool32)) (boolToBool32 (variableMultisampleRate))+ poke ((p `plusPtr` 216 :: Ptr Bool32)) (boolToBool32 (inheritedQueries))+ f+ cStructSize = 220+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 4 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 8 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 12 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 84 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 88 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 96 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 100 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 104 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 108 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 112 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 116 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 120 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 124 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 128 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 132 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 136 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 140 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 144 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 148 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 152 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 156 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 160 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 164 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 168 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 172 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 176 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 180 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 184 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 188 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 192 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 196 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 200 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 204 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 208 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 212 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 216 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceFeatures where+ peekCStruct p = do+ robustBufferAccess <- peek @Bool32 ((p `plusPtr` 0 :: Ptr Bool32))+ fullDrawIndexUint32 <- peek @Bool32 ((p `plusPtr` 4 :: Ptr Bool32))+ imageCubeArray <- peek @Bool32 ((p `plusPtr` 8 :: Ptr Bool32))+ independentBlend <- peek @Bool32 ((p `plusPtr` 12 :: Ptr Bool32))+ geometryShader <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ tessellationShader <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ sampleRateShading <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ dualSrcBlend <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))+ logicOp <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))+ multiDrawIndirect <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))+ drawIndirectFirstInstance <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))+ depthClamp <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))+ depthBiasClamp <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))+ fillModeNonSolid <- peek @Bool32 ((p `plusPtr` 52 :: Ptr Bool32))+ depthBounds <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))+ wideLines <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))+ largePoints <- peek @Bool32 ((p `plusPtr` 64 :: Ptr Bool32))+ alphaToOne <- peek @Bool32 ((p `plusPtr` 68 :: Ptr Bool32))+ multiViewport <- peek @Bool32 ((p `plusPtr` 72 :: Ptr Bool32))+ samplerAnisotropy <- peek @Bool32 ((p `plusPtr` 76 :: Ptr Bool32))+ textureCompressionETC2 <- peek @Bool32 ((p `plusPtr` 80 :: Ptr Bool32))+ textureCompressionASTC_LDR <- peek @Bool32 ((p `plusPtr` 84 :: Ptr Bool32))+ textureCompressionBC <- peek @Bool32 ((p `plusPtr` 88 :: Ptr Bool32))+ occlusionQueryPrecise <- peek @Bool32 ((p `plusPtr` 92 :: Ptr Bool32))+ pipelineStatisticsQuery <- peek @Bool32 ((p `plusPtr` 96 :: Ptr Bool32))+ vertexPipelineStoresAndAtomics <- peek @Bool32 ((p `plusPtr` 100 :: Ptr Bool32))+ fragmentStoresAndAtomics <- peek @Bool32 ((p `plusPtr` 104 :: Ptr Bool32))+ shaderTessellationAndGeometryPointSize <- peek @Bool32 ((p `plusPtr` 108 :: Ptr Bool32))+ shaderImageGatherExtended <- peek @Bool32 ((p `plusPtr` 112 :: Ptr Bool32))+ shaderStorageImageExtendedFormats <- peek @Bool32 ((p `plusPtr` 116 :: Ptr Bool32))+ shaderStorageImageMultisample <- peek @Bool32 ((p `plusPtr` 120 :: Ptr Bool32))+ shaderStorageImageReadWithoutFormat <- peek @Bool32 ((p `plusPtr` 124 :: Ptr Bool32))+ shaderStorageImageWriteWithoutFormat <- peek @Bool32 ((p `plusPtr` 128 :: Ptr Bool32))+ shaderUniformBufferArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 132 :: Ptr Bool32))+ shaderSampledImageArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 136 :: Ptr Bool32))+ shaderStorageBufferArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 140 :: Ptr Bool32))+ shaderStorageImageArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 144 :: Ptr Bool32))+ shaderClipDistance <- peek @Bool32 ((p `plusPtr` 148 :: Ptr Bool32))+ shaderCullDistance <- peek @Bool32 ((p `plusPtr` 152 :: Ptr Bool32))+ shaderFloat64 <- peek @Bool32 ((p `plusPtr` 156 :: Ptr Bool32))+ shaderInt64 <- peek @Bool32 ((p `plusPtr` 160 :: Ptr Bool32))+ shaderInt16 <- peek @Bool32 ((p `plusPtr` 164 :: Ptr Bool32))+ shaderResourceResidency <- peek @Bool32 ((p `plusPtr` 168 :: Ptr Bool32))+ shaderResourceMinLod <- peek @Bool32 ((p `plusPtr` 172 :: Ptr Bool32))+ sparseBinding <- peek @Bool32 ((p `plusPtr` 176 :: Ptr Bool32))+ sparseResidencyBuffer <- peek @Bool32 ((p `plusPtr` 180 :: Ptr Bool32))+ sparseResidencyImage2D <- peek @Bool32 ((p `plusPtr` 184 :: Ptr Bool32))+ sparseResidencyImage3D <- peek @Bool32 ((p `plusPtr` 188 :: Ptr Bool32))+ sparseResidency2Samples <- peek @Bool32 ((p `plusPtr` 192 :: Ptr Bool32))+ sparseResidency4Samples <- peek @Bool32 ((p `plusPtr` 196 :: Ptr Bool32))+ sparseResidency8Samples <- peek @Bool32 ((p `plusPtr` 200 :: Ptr Bool32))+ sparseResidency16Samples <- peek @Bool32 ((p `plusPtr` 204 :: Ptr Bool32))+ sparseResidencyAliased <- peek @Bool32 ((p `plusPtr` 208 :: Ptr Bool32))+ variableMultisampleRate <- peek @Bool32 ((p `plusPtr` 212 :: Ptr Bool32))+ inheritedQueries <- peek @Bool32 ((p `plusPtr` 216 :: Ptr Bool32))+ pure $ PhysicalDeviceFeatures+ (bool32ToBool robustBufferAccess) (bool32ToBool fullDrawIndexUint32) (bool32ToBool imageCubeArray) (bool32ToBool independentBlend) (bool32ToBool geometryShader) (bool32ToBool tessellationShader) (bool32ToBool sampleRateShading) (bool32ToBool dualSrcBlend) (bool32ToBool logicOp) (bool32ToBool multiDrawIndirect) (bool32ToBool drawIndirectFirstInstance) (bool32ToBool depthClamp) (bool32ToBool depthBiasClamp) (bool32ToBool fillModeNonSolid) (bool32ToBool depthBounds) (bool32ToBool wideLines) (bool32ToBool largePoints) (bool32ToBool alphaToOne) (bool32ToBool multiViewport) (bool32ToBool samplerAnisotropy) (bool32ToBool textureCompressionETC2) (bool32ToBool textureCompressionASTC_LDR) (bool32ToBool textureCompressionBC) (bool32ToBool occlusionQueryPrecise) (bool32ToBool pipelineStatisticsQuery) (bool32ToBool vertexPipelineStoresAndAtomics) (bool32ToBool fragmentStoresAndAtomics) (bool32ToBool shaderTessellationAndGeometryPointSize) (bool32ToBool shaderImageGatherExtended) (bool32ToBool shaderStorageImageExtendedFormats) (bool32ToBool shaderStorageImageMultisample) (bool32ToBool shaderStorageImageReadWithoutFormat) (bool32ToBool shaderStorageImageWriteWithoutFormat) (bool32ToBool shaderUniformBufferArrayDynamicIndexing) (bool32ToBool shaderSampledImageArrayDynamicIndexing) (bool32ToBool shaderStorageBufferArrayDynamicIndexing) (bool32ToBool shaderStorageImageArrayDynamicIndexing) (bool32ToBool shaderClipDistance) (bool32ToBool shaderCullDistance) (bool32ToBool shaderFloat64) (bool32ToBool shaderInt64) (bool32ToBool shaderInt16) (bool32ToBool shaderResourceResidency) (bool32ToBool shaderResourceMinLod) (bool32ToBool sparseBinding) (bool32ToBool sparseResidencyBuffer) (bool32ToBool sparseResidencyImage2D) (bool32ToBool sparseResidencyImage3D) (bool32ToBool sparseResidency2Samples) (bool32ToBool sparseResidency4Samples) (bool32ToBool sparseResidency8Samples) (bool32ToBool sparseResidency16Samples) (bool32ToBool sparseResidencyAliased) (bool32ToBool variableMultisampleRate) (bool32ToBool inheritedQueries)++instance Storable PhysicalDeviceFeatures where+ sizeOf ~_ = 220+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceFeatures where+ zero = PhysicalDeviceFeatures+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkPhysicalDeviceSparseProperties - Structure specifying physical device+-- sparse memory properties+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32', 'PhysicalDeviceProperties'+data PhysicalDeviceSparseProperties = PhysicalDeviceSparseProperties+ { -- | @residencyStandard2DBlockShape@ is+ -- 'Graphics.Vulkan.Core10.BaseType.TRUE' if the physical device will+ -- access all single-sample 2D sparse resources using the standard sparse+ -- image block shapes (based on image format), as described in the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseblockshapessingle Standard Sparse Image Block Shapes (Single Sample)>+ -- table. If this property is not supported the value returned in the+ -- @imageGranularity@ member of the+ -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties'+ -- structure for single-sample 2D images is not /required/ to match the+ -- standard sparse image block dimensions listed in the table.+ residencyStandard2DBlockShape :: Bool+ , -- | @residencyStandard2DMultisampleBlockShape@ is+ -- 'Graphics.Vulkan.Core10.BaseType.TRUE' if the physical device will+ -- access all multisample 2D sparse resources using the standard sparse+ -- image block shapes (based on image format), as described in the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseblockshapesmsaa Standard Sparse Image Block Shapes (MSAA)>+ -- table. If this property is not supported, the value returned in the+ -- @imageGranularity@ member of the+ -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties'+ -- structure for multisample 2D images is not /required/ to match the+ -- standard sparse image block dimensions listed in the table.+ residencyStandard2DMultisampleBlockShape :: Bool+ , -- | @residencyStandard3DBlockShape@ is+ -- 'Graphics.Vulkan.Core10.BaseType.TRUE' if the physical device will+ -- access all 3D sparse resources using the standard sparse image block+ -- shapes (based on image format), as described in the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseblockshapessingle Standard Sparse Image Block Shapes (Single Sample)>+ -- table. If this property is not supported, the value returned in the+ -- @imageGranularity@ member of the+ -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties'+ -- structure for 3D images is not /required/ to match the standard sparse+ -- image block dimensions listed in the table.+ residencyStandard3DBlockShape :: Bool+ , -- | @residencyAlignedMipSize@ is 'Graphics.Vulkan.Core10.BaseType.TRUE' if+ -- images with mip level dimensions that are not integer multiples of the+ -- corresponding dimensions of the sparse image block /may/ be placed in+ -- the mip tail. If this property is not reported, only mip levels with+ -- dimensions smaller than the @imageGranularity@ member of the+ -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties'+ -- structure will be placed in the mip tail. If this property is reported+ -- the implementation is allowed to return+ -- 'Graphics.Vulkan.Core10.Enums.SparseImageFormatFlagBits.SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT'+ -- in the 'Graphics.Vulkan.Core10.BaseType.Flags' member of+ -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties',+ -- indicating that mip level dimensions that are not integer multiples of+ -- the corresponding dimensions of the sparse image block will be placed in+ -- the mip tail.+ residencyAlignedMipSize :: Bool+ , -- | @residencyNonResidentStrict@ specifies whether the physical device /can/+ -- consistently access non-resident regions of a resource. If this property+ -- is 'Graphics.Vulkan.Core10.BaseType.TRUE', access to non-resident+ -- regions of resources will be guaranteed to return values as if the+ -- resource were populated with 0; writes to non-resident regions will be+ -- discarded.+ residencyNonResidentStrict :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceSparseProperties++instance ToCStruct PhysicalDeviceSparseProperties where+ withCStruct x f = allocaBytesAligned 20 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceSparseProperties{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (residencyStandard2DBlockShape))+ poke ((p `plusPtr` 4 :: Ptr Bool32)) (boolToBool32 (residencyStandard2DMultisampleBlockShape))+ poke ((p `plusPtr` 8 :: Ptr Bool32)) (boolToBool32 (residencyStandard3DBlockShape))+ poke ((p `plusPtr` 12 :: Ptr Bool32)) (boolToBool32 (residencyAlignedMipSize))+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (residencyNonResidentStrict))+ f+ cStructSize = 20+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 4 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 8 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 12 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceSparseProperties where+ peekCStruct p = do+ residencyStandard2DBlockShape <- peek @Bool32 ((p `plusPtr` 0 :: Ptr Bool32))+ residencyStandard2DMultisampleBlockShape <- peek @Bool32 ((p `plusPtr` 4 :: Ptr Bool32))+ residencyStandard3DBlockShape <- peek @Bool32 ((p `plusPtr` 8 :: Ptr Bool32))+ residencyAlignedMipSize <- peek @Bool32 ((p `plusPtr` 12 :: Ptr Bool32))+ residencyNonResidentStrict <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceSparseProperties+ (bool32ToBool residencyStandard2DBlockShape) (bool32ToBool residencyStandard2DMultisampleBlockShape) (bool32ToBool residencyStandard3DBlockShape) (bool32ToBool residencyAlignedMipSize) (bool32ToBool residencyNonResidentStrict)++instance Storable PhysicalDeviceSparseProperties where+ sizeOf ~_ = 20+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceSparseProperties where+ zero = PhysicalDeviceSparseProperties+ zero+ zero+ zero+ zero+ zero+++-- | VkPhysicalDeviceLimits - Structure reporting implementation-dependent+-- physical device limits+--+-- = Members+--+-- The 'PhysicalDeviceLimits' are properties of the physical device. These+-- are available in the @limits@ member of the 'PhysicalDeviceProperties'+-- structure which is returned from 'getPhysicalDeviceProperties'.+--+-- = Description+--+-- [1]+-- For all bitmasks of+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',+-- the sample count limits defined above represent the minimum+-- supported sample counts for each image type. Individual images /may/+-- support additional sample counts, which are queried using+-- 'getPhysicalDeviceImageFormatProperties' as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-supported-sample-counts Supported Sample Counts>.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'PhysicalDeviceProperties',+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlags'+data PhysicalDeviceLimits = PhysicalDeviceLimits+ { -- | @maxImageDimension1D@ is the maximum dimension (@width@) supported for+ -- all images created with an+ -- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' of+ -- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D'.+ maxImageDimension1D :: Word32+ , -- | @maxImageDimension2D@ is the maximum dimension (@width@ or @height@)+ -- supported for all images created with an+ -- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' of+ -- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and without+ -- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CUBE_COMPATIBLE_BIT'+ -- set in 'Graphics.Vulkan.Core10.BaseType.Flags'.+ maxImageDimension2D :: Word32+ , -- | @maxImageDimension3D@ is the maximum dimension (@width@, @height@, or+ -- @depth@) supported for all images created with an+ -- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' of+ -- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D'.+ maxImageDimension3D :: Word32+ , -- | @maxImageDimensionCube@ is the maximum dimension (@width@ or @height@)+ -- supported for all images created with an+ -- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' of+ -- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and with+ -- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CUBE_COMPATIBLE_BIT'+ -- set in 'Graphics.Vulkan.Core10.BaseType.Flags'.+ maxImageDimensionCube :: Word32+ , -- | @maxImageArrayLayers@ is the maximum number of layers (@arrayLayers@)+ -- for an image.+ maxImageArrayLayers :: Word32+ , -- | @maxTexelBufferElements@ is the maximum number of addressable texels for+ -- a buffer view created on a buffer which was created with the+ -- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT'+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT'+ -- set in the @usage@ member of the+ -- 'Graphics.Vulkan.Core10.Buffer.BufferCreateInfo' structure.+ maxTexelBufferElements :: Word32+ , -- | @maxUniformBufferRange@ is the maximum value that /can/ be specified in+ -- the @range@ member of any+ -- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' structures+ -- passed to a call to+ -- 'Graphics.Vulkan.Core10.DescriptorSet.updateDescriptorSets' for+ -- descriptors of type+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'.+ maxUniformBufferRange :: Word32+ , -- | @maxStorageBufferRange@ is the maximum value that /can/ be specified in+ -- the @range@ member of any+ -- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' structures+ -- passed to a call to+ -- 'Graphics.Vulkan.Core10.DescriptorSet.updateDescriptorSets' for+ -- descriptors of type+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'.+ maxStorageBufferRange :: Word32+ , -- | @maxPushConstantsSize@ is the maximum size, in bytes, of the pool of+ -- push constant memory. For each of the push constant ranges indicated by+ -- the @pPushConstantRanges@ member of the+ -- 'Graphics.Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'+ -- structure, (@offset@ + @size@) /must/ be less than or equal to this+ -- limit.+ maxPushConstantsSize :: Word32+ , -- | @maxMemoryAllocationCount@ is the maximum number of device memory+ -- allocations, as created by+ -- 'Graphics.Vulkan.Core10.Memory.allocateMemory', which /can/+ -- simultaneously exist.+ maxMemoryAllocationCount :: Word32+ , -- | @maxSamplerAllocationCount@ is the maximum number of sampler objects, as+ -- created by 'Graphics.Vulkan.Core10.Sampler.createSampler', which /can/+ -- simultaneously exist on a device.+ maxSamplerAllocationCount :: Word32+ , -- | @bufferImageGranularity@ is the granularity, in bytes, at which buffer+ -- or linear image resources, and optimal image resources /can/ be bound to+ -- adjacent offsets in the same+ -- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object without aliasing.+ -- See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-bufferimagegranularity Buffer-Image Granularity>+ -- for more details.+ bufferImageGranularity :: DeviceSize+ , -- | @sparseAddressSpaceSize@ is the total amount of address space available,+ -- in bytes, for sparse memory resources. This is an upper bound on the sum+ -- of the size of all sparse resources, regardless of whether any memory is+ -- bound to them.+ sparseAddressSpaceSize :: DeviceSize+ , -- | @maxBoundDescriptorSets@ is the maximum number of descriptor sets that+ -- /can/ be simultaneously used by a pipeline. All+ -- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' decorations in shader+ -- modules /must/ have a value less than @maxBoundDescriptorSets@. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sets>.+ maxBoundDescriptorSets :: Word32+ , -- | @maxPerStageDescriptorSamplers@ is the maximum number of samplers that+ -- /can/ be accessible to a single shader stage in a pipeline layout.+ -- Descriptors with a type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER' or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'+ -- count against this limit. Only descriptors in descriptor set layouts+ -- created without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set count against this limit. A descriptor is accessible to a shader+ -- stage when the @stageFlags@ member of the+ -- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'+ -- structure has the bit for that shader stage set. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampler>+ -- and+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler>.+ maxPerStageDescriptorSamplers :: Word32+ , -- | @maxPerStageDescriptorUniformBuffers@ is the maximum number of uniform+ -- buffers that /can/ be accessible to a single shader stage in a pipeline+ -- layout. Descriptors with a type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'+ -- count against this limit. Only descriptors in descriptor set layouts+ -- created without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set count against this limit. A descriptor is accessible to a shader+ -- stage when the @stageFlags@ member of the+ -- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'+ -- structure has the bit for that shader stage set. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbuffer>+ -- and+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic>.+ maxPerStageDescriptorUniformBuffers :: Word32+ , -- | @maxPerStageDescriptorStorageBuffers@ is the maximum number of storage+ -- buffers that /can/ be accessible to a single shader stage in a pipeline+ -- layout. Descriptors with a type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'+ -- count against this limit. Only descriptors in descriptor set layouts+ -- created without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set count against this limit. A descriptor is accessible to a+ -- pipeline shader stage when the @stageFlags@ member of the+ -- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'+ -- structure has the bit for that shader stage set. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebuffer>+ -- and+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic>.+ maxPerStageDescriptorStorageBuffers :: Word32+ , -- | @maxPerStageDescriptorSampledImages@ is the maximum number of sampled+ -- images that /can/ be accessible to a single shader stage in a pipeline+ -- layout. Descriptors with a type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'+ -- count against this limit. Only descriptors in descriptor set layouts+ -- created without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set count against this limit. A descriptor is accessible to a+ -- pipeline shader stage when the @stageFlags@ member of the+ -- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'+ -- structure has the bit for that shader stage set. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler>,+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage>,+ -- and+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer>.+ maxPerStageDescriptorSampledImages :: Word32+ , -- | @maxPerStageDescriptorStorageImages@ is the maximum number of storage+ -- images that /can/ be accessible to a single shader stage in a pipeline+ -- layout. Descriptors with a type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'+ -- count against this limit. Only descriptors in descriptor set layouts+ -- created without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set count against this limit. A descriptor is accessible to a+ -- pipeline shader stage when the @stageFlags@ member of the+ -- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'+ -- structure has the bit for that shader stage set. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage>,+ -- and+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer>.+ maxPerStageDescriptorStorageImages :: Word32+ , -- | @maxPerStageDescriptorInputAttachments@ is the maximum number of input+ -- attachments that /can/ be accessible to a single shader stage in a+ -- pipeline layout. Descriptors with a type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'+ -- count against this limit. Only descriptors in descriptor set layouts+ -- created without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set count against this limit. A descriptor is accessible to a+ -- pipeline shader stage when the @stageFlags@ member of the+ -- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'+ -- structure has the bit for that shader stage set. These are only+ -- supported for the fragment stage. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inputattachment>.+ maxPerStageDescriptorInputAttachments :: Word32+ , -- | @maxPerStageResources@ is the maximum number of resources that /can/ be+ -- accessible to a single shader stage in a pipeline layout. Descriptors+ -- with a type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER',+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER',+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER',+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER',+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC',+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC',+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'+ -- count against this limit. Only descriptors in descriptor set layouts+ -- created without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set count against this limit. For the fragment shader stage the+ -- framebuffer color attachments also count against this limit.+ maxPerStageResources :: Word32+ , -- | @maxDescriptorSetSamplers@ is the maximum number of samplers that /can/+ -- be included in a pipeline layout. Descriptors with a type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER' or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'+ -- count against this limit. Only descriptors in descriptor set layouts+ -- created without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set count against this limit. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampler>+ -- and+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler>.+ maxDescriptorSetSamplers :: Word32+ , -- | @maxDescriptorSetUniformBuffers@ is the maximum number of uniform+ -- buffers that /can/ be included in a pipeline layout. Descriptors with a+ -- type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'+ -- count against this limit. Only descriptors in descriptor set layouts+ -- created without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set count against this limit. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbuffer>+ -- and+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic>.+ maxDescriptorSetUniformBuffers :: Word32+ , -- | @maxDescriptorSetUniformBuffersDynamic@ is the maximum number of dynamic+ -- uniform buffers that /can/ be included in a pipeline layout. Descriptors+ -- with a type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'+ -- count against this limit. Only descriptors in descriptor set layouts+ -- created without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set count against this limit. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic>.+ maxDescriptorSetUniformBuffersDynamic :: Word32+ , -- | @maxDescriptorSetStorageBuffers@ is the maximum number of storage+ -- buffers that /can/ be included in a pipeline layout. Descriptors with a+ -- type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'+ -- count against this limit. Only descriptors in descriptor set layouts+ -- created without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set count against this limit. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebuffer>+ -- and+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic>.+ maxDescriptorSetStorageBuffers :: Word32+ , -- | @maxDescriptorSetStorageBuffersDynamic@ is the maximum number of dynamic+ -- storage buffers that /can/ be included in a pipeline layout. Descriptors+ -- with a type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'+ -- count against this limit. Only descriptors in descriptor set layouts+ -- created without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set count against this limit. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic>.+ maxDescriptorSetStorageBuffersDynamic :: Word32+ , -- | @maxDescriptorSetSampledImages@ is the maximum number of sampled images+ -- that /can/ be included in a pipeline layout. Descriptors with a type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'+ -- count against this limit. Only descriptors in descriptor set layouts+ -- created without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set count against this limit. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler>,+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage>,+ -- and+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer>.+ maxDescriptorSetSampledImages :: Word32+ , -- | @maxDescriptorSetStorageImages@ is the maximum number of storage images+ -- that /can/ be included in a pipeline layout. Descriptors with a type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'+ -- count against this limit. Only descriptors in descriptor set layouts+ -- created without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set count against this limit. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage>,+ -- and+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer>.+ maxDescriptorSetStorageImages :: Word32+ , -- | @maxDescriptorSetInputAttachments@ is the maximum number of input+ -- attachments that /can/ be included in a pipeline layout. Descriptors+ -- with a type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'+ -- count against this limit. Only descriptors in descriptor set layouts+ -- created without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set count against this limit. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inputattachment>.+ maxDescriptorSetInputAttachments :: Word32+ , -- | @maxVertexInputAttributes@ is the maximum number of vertex input+ -- attributes that /can/ be specified for a graphics pipeline. These are+ -- described in the array of+ -- 'Graphics.Vulkan.Core10.Pipeline.VertexInputAttributeDescription'+ -- structures that are provided at graphics pipeline creation time via the+ -- @pVertexAttributeDescriptions@ member of the+ -- 'Graphics.Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo'+ -- structure. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-attrib>+ -- and+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input>.+ maxVertexInputAttributes :: Word32+ , -- | @maxVertexInputBindings@ is the maximum number of vertex buffers that+ -- /can/ be specified for providing vertex attributes to a graphics+ -- pipeline. These are described in the array of+ -- 'Graphics.Vulkan.Core10.Pipeline.VertexInputBindingDescription'+ -- structures that are provided at graphics pipeline creation time via the+ -- @pVertexBindingDescriptions@ member of the+ -- 'Graphics.Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo'+ -- structure. The @binding@ member of+ -- 'Graphics.Vulkan.Core10.Pipeline.VertexInputBindingDescription' /must/+ -- be less than this limit. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input>.+ maxVertexInputBindings :: Word32+ , -- | @maxVertexInputAttributeOffset@ is the maximum vertex input attribute+ -- offset that /can/ be added to the vertex input binding stride. The+ -- @offset@ member of the+ -- 'Graphics.Vulkan.Core10.Pipeline.VertexInputAttributeDescription'+ -- structure /must/ be less than or equal to this limit. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input>.+ maxVertexInputAttributeOffset :: Word32+ , -- | @maxVertexInputBindingStride@ is the maximum vertex input binding stride+ -- that /can/ be specified in a vertex input binding. The @stride@ member+ -- of the 'Graphics.Vulkan.Core10.Pipeline.VertexInputBindingDescription'+ -- structure /must/ be less than or equal to this limit. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input>.+ maxVertexInputBindingStride :: Word32+ , -- | @maxVertexOutputComponents@ is the maximum number of components of+ -- output variables which /can/ be output by a vertex shader. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-vertex>.+ maxVertexOutputComponents :: Word32+ , -- | @maxTessellationGenerationLevel@ is the maximum tessellation generation+ -- level supported by the fixed-function tessellation primitive generator.+ -- See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation>.+ maxTessellationGenerationLevel :: Word32+ , -- | @maxTessellationPatchSize@ is the maximum patch size, in vertices, of+ -- patches that /can/ be processed by the tessellation control shader and+ -- tessellation primitive generator. The @patchControlPoints@ member of the+ -- 'Graphics.Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo'+ -- structure specified at pipeline creation time and the value provided in+ -- the @OutputVertices@ execution mode of shader modules /must/ be less+ -- than or equal to this limit. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation>.+ maxTessellationPatchSize :: Word32+ , -- | @maxTessellationControlPerVertexInputComponents@ is the maximum number+ -- of components of input variables which /can/ be provided as per-vertex+ -- inputs to the tessellation control shader stage.+ maxTessellationControlPerVertexInputComponents :: Word32+ , -- | @maxTessellationControlPerVertexOutputComponents@ is the maximum number+ -- of components of per-vertex output variables which /can/ be output from+ -- the tessellation control shader stage.+ maxTessellationControlPerVertexOutputComponents :: Word32+ , -- | @maxTessellationControlPerPatchOutputComponents@ is the maximum number+ -- of components of per-patch output variables which /can/ be output from+ -- the tessellation control shader stage.+ maxTessellationControlPerPatchOutputComponents :: Word32+ , -- | @maxTessellationControlTotalOutputComponents@ is the maximum total+ -- number of components of per-vertex and per-patch output variables which+ -- /can/ be output from the tessellation control shader stage.+ maxTessellationControlTotalOutputComponents :: Word32+ , -- | @maxTessellationEvaluationInputComponents@ is the maximum number of+ -- components of input variables which /can/ be provided as per-vertex+ -- inputs to the tessellation evaluation shader stage.+ maxTessellationEvaluationInputComponents :: Word32+ , -- | @maxTessellationEvaluationOutputComponents@ is the maximum number of+ -- components of per-vertex output variables which /can/ be output from the+ -- tessellation evaluation shader stage.+ maxTessellationEvaluationOutputComponents :: Word32+ , -- | @maxGeometryShaderInvocations@ is the maximum invocation count supported+ -- for instanced geometry shaders. The value provided in the @Invocations@+ -- execution mode of shader modules /must/ be less than or equal to this+ -- limit. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry>.+ maxGeometryShaderInvocations :: Word32+ , -- | @maxGeometryInputComponents@ is the maximum number of components of+ -- input variables which /can/ be provided as inputs to the geometry shader+ -- stage.+ maxGeometryInputComponents :: Word32+ , -- | @maxGeometryOutputComponents@ is the maximum number of components of+ -- output variables which /can/ be output from the geometry shader stage.+ maxGeometryOutputComponents :: Word32+ , -- | @maxGeometryOutputVertices@ is the maximum number of vertices which+ -- /can/ be emitted by any geometry shader.+ maxGeometryOutputVertices :: Word32+ , -- | @maxGeometryTotalOutputComponents@ is the maximum total number of+ -- components of output, across all emitted vertices, which /can/ be output+ -- from the geometry shader stage.+ maxGeometryTotalOutputComponents :: Word32+ , -- | @maxFragmentInputComponents@ is the maximum number of components of+ -- input variables which /can/ be provided as inputs to the fragment shader+ -- stage.+ maxFragmentInputComponents :: Word32+ , -- | @maxFragmentOutputAttachments@ is the maximum number of output+ -- attachments which /can/ be written to by the fragment shader stage.+ maxFragmentOutputAttachments :: Word32+ , -- | @maxFragmentDualSrcAttachments@ is the maximum number of output+ -- attachments which /can/ be written to by the fragment shader stage when+ -- blending is enabled and one of the dual source blend modes is in use.+ -- See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb>+ -- and+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dualSrcBlend dualSrcBlend>.+ maxFragmentDualSrcAttachments :: Word32+ , -- | @maxFragmentCombinedOutputResources@ is the total number of storage+ -- buffers, storage images, and output buffers which /can/ be used in the+ -- fragment shader stage.+ maxFragmentCombinedOutputResources :: Word32+ , -- | @maxComputeSharedMemorySize@ is the maximum total storage size, in+ -- bytes, available for variables declared with the @Workgroup@ storage+ -- class in shader modules (or with the @shared@ storage qualifier in GLSL)+ -- in the compute shader stage. The amount of storage consumed by the+ -- variables declared with the @Workgroup@ storage class is+ -- implementation-dependent. However, the amount of storage consumed may+ -- not exceed the largest block size that would be obtained if all active+ -- variables declared with @Workgroup@ storage class were assigned offsets+ -- in an arbitrary order by successively taking the smallest valid offset+ -- according to the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources-standard-layout Standard Storage Buffer Layout>+ -- rules. (This is equivalent to using the GLSL std430 layout rules.)+ maxComputeSharedMemorySize :: Word32+ , -- | @maxComputeWorkGroupCount@[3] is the maximum number of local workgroups+ -- that /can/ be dispatched by a single dispatch command. These three+ -- values represent the maximum number of local workgroups for the X, Y,+ -- and Z dimensions, respectively. The workgroup count parameters to the+ -- dispatch commands /must/ be less than or equal to the corresponding+ -- limit. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dispatch>.+ maxComputeWorkGroupCount :: (Word32, Word32, Word32)+ , -- | @maxComputeWorkGroupInvocations@ is the maximum total number of compute+ -- shader invocations in a single local workgroup. The product of the X, Y,+ -- and Z sizes, as specified by the @LocalSize@ execution mode in shader+ -- modules or by the object decorated by the @WorkgroupSize@ decoration,+ -- /must/ be less than or equal to this limit.+ maxComputeWorkGroupInvocations :: Word32+ , -- | @maxComputeWorkGroupSize@[3] is the maximum size of a local compute+ -- workgroup, per dimension. These three values represent the maximum local+ -- workgroup size in the X, Y, and Z dimensions, respectively. The @x@,+ -- @y@, and @z@ sizes, as specified by the @LocalSize@ execution mode or by+ -- the object decorated by the @WorkgroupSize@ decoration in shader+ -- modules, /must/ be less than or equal to the corresponding limit.+ maxComputeWorkGroupSize :: (Word32, Word32, Word32)+ , -- | @subPixelPrecisionBits@ is the number of bits of subpixel precision in+ -- framebuffer coordinates xf and yf. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast>.+ subPixelPrecisionBits :: Word32+ , -- | @subTexelPrecisionBits@ is the number of bits of precision in the+ -- division along an axis of an image used for minification and+ -- magnification filters. 2@subTexelPrecisionBits@ is the actual number of+ -- divisions along each axis of the image represented. Sub-texel values+ -- calculated during image sampling will snap to these locations when+ -- generating the filtered results.+ subTexelPrecisionBits :: Word32+ , -- | @mipmapPrecisionBits@ is the number of bits of division that the LOD+ -- calculation for mipmap fetching get snapped to when determining the+ -- contribution from each mip level to the mip filtered results.+ -- 2@mipmapPrecisionBits@ is the actual number of divisions.+ mipmapPrecisionBits :: Word32+ , -- | @maxDrawIndexedIndexValue@ is the maximum index value that /can/ be used+ -- for indexed draw calls when using 32-bit indices. This excludes the+ -- primitive restart index value of 0xFFFFFFFF. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fullDrawIndexUint32 fullDrawIndexUint32>.+ maxDrawIndexedIndexValue :: Word32+ , -- | @maxDrawIndirectCount@ is the maximum draw count that is supported for+ -- indirect draw calls. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirect multiDrawIndirect>.+ maxDrawIndirectCount :: Word32+ , -- | @maxSamplerLodBias@ is the maximum absolute sampler LOD bias. The sum of+ -- the @mipLodBias@ member of the+ -- 'Graphics.Vulkan.Core10.Sampler.SamplerCreateInfo' structure and the+ -- @Bias@ operand of image sampling operations in shader modules (or 0 if+ -- no @Bias@ operand is provided to an image sampling operation) are+ -- clamped to the range [-@maxSamplerLodBias@,+@maxSamplerLodBias@]. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-mipLodBias>.+ maxSamplerLodBias :: Float+ , -- | @maxSamplerAnisotropy@ is the maximum degree of sampler anisotropy. The+ -- maximum degree of anisotropic filtering used for an image sampling+ -- operation is the minimum of the @maxAnisotropy@ member of the+ -- 'Graphics.Vulkan.Core10.Sampler.SamplerCreateInfo' structure and this+ -- limit. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-maxAnisotropy>.+ maxSamplerAnisotropy :: Float+ , -- | @maxViewports@ is the maximum number of active viewports. The+ -- @viewportCount@ member of the+ -- 'Graphics.Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'+ -- structure that is provided at pipeline creation /must/ be less than or+ -- equal to this limit.+ maxViewports :: Word32+ , -- | @maxViewportDimensions@[2] are the maximum viewport dimensions in the X+ -- (width) and Y (height) dimensions, respectively. The maximum viewport+ -- dimensions /must/ be greater than or equal to the largest image which+ -- /can/ be created and used as a framebuffer attachment. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-viewport Controlling the Viewport>.+ maxViewportDimensions :: (Word32, Word32)+ , -- | @viewportBoundsRange@[2] is the [minimum, maximum] range that the+ -- corners of a viewport /must/ be contained in. This range /must/ be at+ -- least [-2 × @size@, 2 × @size@ - 1], where @size@ =+ -- max(@maxViewportDimensions@[0], @maxViewportDimensions@[1]). See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-viewport Controlling the Viewport>.+ --+ -- Note+ --+ -- The intent of the @viewportBoundsRange@ limit is to allow a maximum+ -- sized viewport to be arbitrarily shifted relative to the output target+ -- as long as at least some portion intersects. This would give a bounds+ -- limit of [-@size@ + 1, 2 × @size@ - 1] which would allow all possible+ -- non-empty-set intersections of the output target and the viewport. Since+ -- these numbers are typically powers of two, picking the signed number+ -- range using the smallest possible number of bits ends up with the+ -- specified range.+ viewportBoundsRange :: (Float, Float)+ , -- | @viewportSubPixelBits@ is the number of bits of subpixel precision for+ -- viewport bounds. The subpixel precision that floating-point viewport+ -- bounds are interpreted at is given by this limit.+ viewportSubPixelBits :: Word32+ , -- | @minMemoryMapAlignment@ is the minimum /required/ alignment, in bytes,+ -- of host visible memory allocations within the host address space. When+ -- mapping a memory allocation with+ -- 'Graphics.Vulkan.Core10.Memory.mapMemory', subtracting @offset@ bytes+ -- from the returned pointer will always produce an integer multiple of+ -- this limit. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-hostaccess>.+ minMemoryMapAlignment :: Word64+ , -- | @minTexelBufferOffsetAlignment@ is the minimum /required/ alignment, in+ -- bytes, for the @offset@ member of the+ -- 'Graphics.Vulkan.Core10.BufferView.BufferViewCreateInfo' structure for+ -- texel buffers. If+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignment texelBufferAlignment>+ -- is enabled, this limit is equivalent to the maximum of the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-uniformTexelBufferOffsetAlignmentBytes uniformTexelBufferOffsetAlignmentBytes>+ -- and+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-storageTexelBufferOffsetAlignmentBytes storageTexelBufferOffsetAlignmentBytes>+ -- members of+ -- 'Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT',+ -- but smaller alignment is optionally: allowed by+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-storageTexelBufferOffsetSingleTexelAlignment storageTexelBufferOffsetSingleTexelAlignment>+ -- and+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-uniformTexelBufferOffsetSingleTexelAlignment uniformTexelBufferOffsetSingleTexelAlignment>.+ -- If+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignment texelBufferAlignment>+ -- is not enabled,+ -- 'Graphics.Vulkan.Core10.BufferView.BufferViewCreateInfo'::@offset@+ -- /must/ be a multiple of this value.+ minTexelBufferOffsetAlignment :: DeviceSize+ , -- | @minUniformBufferOffsetAlignment@ is the minimum /required/ alignment,+ -- in bytes, for the @offset@ member of the+ -- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' structure+ -- for uniform buffers. When a descriptor of type+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'+ -- is updated, the @offset@ /must/ be an integer multiple of this limit.+ -- Similarly, dynamic offsets for uniform buffers /must/ be multiples of+ -- this limit.+ minUniformBufferOffsetAlignment :: DeviceSize+ , -- | @minStorageBufferOffsetAlignment@ is the minimum /required/ alignment,+ -- in bytes, for the @offset@ member of the+ -- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' structure+ -- for storage buffers. When a descriptor of type+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'+ -- is updated, the @offset@ /must/ be an integer multiple of this limit.+ -- Similarly, dynamic offsets for storage buffers /must/ be multiples of+ -- this limit.+ minStorageBufferOffsetAlignment :: DeviceSize+ , -- | @minTexelOffset@ is the minimum offset value for the @ConstOffset@ image+ -- operand of any of the @OpImageSample@* or @OpImageFetch@* image+ -- instructions.+ minTexelOffset :: Int32+ , -- | @maxTexelOffset@ is the maximum offset value for the @ConstOffset@ image+ -- operand of any of the @OpImageSample@* or @OpImageFetch@* image+ -- instructions.+ maxTexelOffset :: Word32+ , -- | @minTexelGatherOffset@ is the minimum offset value for the @Offset@,+ -- @ConstOffset@, or @ConstOffsets@ image operands of any of the+ -- @OpImage@*@Gather@ image instructions.+ minTexelGatherOffset :: Int32+ , -- | @maxTexelGatherOffset@ is the maximum offset value for the @Offset@,+ -- @ConstOffset@, or @ConstOffsets@ image operands of any of the+ -- @OpImage@*@Gather@ image instructions.+ maxTexelGatherOffset :: Word32+ , -- | @minInterpolationOffset@ is the minimum negative offset value for the+ -- @offset@ operand of the @InterpolateAtOffset@ extended instruction.+ minInterpolationOffset :: Float+ , -- | @maxInterpolationOffset@ is the maximum positive offset value for the+ -- @offset@ operand of the @InterpolateAtOffset@ extended instruction.+ maxInterpolationOffset :: Float+ , -- | @subPixelInterpolationOffsetBits@ is the number of subpixel fractional+ -- bits that the @x@ and @y@ offsets to the @InterpolateAtOffset@ extended+ -- instruction /may/ be rounded to as fixed-point values.+ subPixelInterpolationOffsetBits :: Word32+ , -- | @maxFramebufferWidth@ is the maximum width for a framebuffer. The+ -- @width@ member of the+ -- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo' structure /must/ be+ -- less than or equal to this limit.+ maxFramebufferWidth :: Word32+ , -- | @maxFramebufferHeight@ is the maximum height for a framebuffer. The+ -- @height@ member of the+ -- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo' structure /must/ be+ -- less than or equal to this limit.+ maxFramebufferHeight :: Word32+ , -- | @maxFramebufferLayers@ is the maximum layer count for a layered+ -- framebuffer. The @layers@ member of the+ -- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo' structure /must/ be+ -- less than or equal to this limit.+ maxFramebufferLayers :: Word32+ , -- | @framebufferColorSampleCounts@ is a bitmask1 of+ -- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+ -- indicating the color sample counts that are supported for all+ -- framebuffer color attachments with floating- or fixed-point formats.+ -- There is no limit that specifies the color sample counts that are+ -- supported for all color attachments with integer formats.+ framebufferColorSampleCounts :: SampleCountFlags+ , -- | @framebufferDepthSampleCounts@ is a bitmask1 of+ -- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+ -- indicating the supported depth sample counts for all framebuffer+ -- depth\/stencil attachments, when the format includes a depth component.+ framebufferDepthSampleCounts :: SampleCountFlags+ , -- | @framebufferStencilSampleCounts@ is a bitmask1 of+ -- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+ -- indicating the supported stencil sample counts for all framebuffer+ -- depth\/stencil attachments, when the format includes a stencil+ -- component.+ framebufferStencilSampleCounts :: SampleCountFlags+ , -- | @framebufferNoAttachmentsSampleCounts@ is a bitmask1 of+ -- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+ -- indicating the supported sample counts for a framebuffer with no+ -- attachments.+ framebufferNoAttachmentsSampleCounts :: SampleCountFlags+ , -- | @maxColorAttachments@ is the maximum number of color attachments that+ -- /can/ be used by a subpass in a render pass. The @colorAttachmentCount@+ -- member of the 'Graphics.Vulkan.Core10.Pass.SubpassDescription' structure+ -- /must/ be less than or equal to this limit.+ maxColorAttachments :: Word32+ , -- | @sampledImageColorSampleCounts@ is a bitmask1 of+ -- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+ -- indicating the sample counts supported for all 2D images created with+ -- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', @usage@+ -- containing+ -- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT',+ -- and a non-integer color format.+ sampledImageColorSampleCounts :: SampleCountFlags+ , -- | @sampledImageIntegerSampleCounts@ is a bitmask1 of+ -- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+ -- indicating the sample counts supported for all 2D images created with+ -- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', @usage@+ -- containing+ -- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT',+ -- and an integer color format.+ sampledImageIntegerSampleCounts :: SampleCountFlags+ , -- | @sampledImageDepthSampleCounts@ is a bitmask1 of+ -- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+ -- indicating the sample counts supported for all 2D images created with+ -- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', @usage@+ -- containing+ -- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT',+ -- and a depth format.+ sampledImageDepthSampleCounts :: SampleCountFlags+ , -- | @sampledImageStencilSampleCounts@ is a bitmask1 of+ -- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+ -- indicating the sample supported for all 2D images created with+ -- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', @usage@+ -- containing+ -- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT',+ -- and a stencil format.+ sampledImageStencilSampleCounts :: SampleCountFlags+ , -- | @storageImageSampleCounts@ is a bitmask1 of+ -- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+ -- indicating the sample counts supported for all 2D images created with+ -- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', and+ -- @usage@ containing+ -- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT'.+ storageImageSampleCounts :: SampleCountFlags+ , -- | @maxSampleMaskWords@ is the maximum number of array elements of a+ -- variable decorated with the 'Graphics.Vulkan.Core10.BaseType.SampleMask'+ -- built-in decoration.+ maxSampleMaskWords :: Word32+ , -- | @timestampComputeAndGraphics@ specifies support for timestamps on all+ -- graphics and compute queues. If this limit is set to+ -- 'Graphics.Vulkan.Core10.BaseType.TRUE', all queues that advertise the+ -- 'Graphics.Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or+ -- 'Graphics.Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' in the+ -- 'QueueFamilyProperties'::'Graphics.Vulkan.Core10.Enums.QueueFlagBits.QueueFlags'+ -- support 'QueueFamilyProperties'::@timestampValidBits@ of at least 36.+ -- See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-timestamps Timestamp Queries>.+ timestampComputeAndGraphics :: Bool+ , -- | @timestampPeriod@ is the number of nanoseconds /required/ for a+ -- timestamp query to be incremented by 1. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-timestamps Timestamp Queries>.+ timestampPeriod :: Float+ , -- | @maxClipDistances@ is the maximum number of clip distances that /can/ be+ -- used in a single shader stage. The size of any array declared with the+ -- @ClipDistance@ built-in decoration in a shader module /must/ be less+ -- than or equal to this limit.+ maxClipDistances :: Word32+ , -- | @maxCullDistances@ is the maximum number of cull distances that /can/ be+ -- used in a single shader stage. The size of any array declared with the+ -- @CullDistance@ built-in decoration in a shader module /must/ be less+ -- than or equal to this limit.+ maxCullDistances :: Word32+ , -- | @maxCombinedClipAndCullDistances@ is the maximum combined number of clip+ -- and cull distances that /can/ be used in a single shader stage. The sum+ -- of the sizes of any pair of arrays declared with the @ClipDistance@ and+ -- @CullDistance@ built-in decoration used by a single shader stage in a+ -- shader module /must/ be less than or equal to this limit.+ maxCombinedClipAndCullDistances :: Word32+ , -- | @discreteQueuePriorities@ is the number of discrete priorities that+ -- /can/ be assigned to a queue based on the value of each member of+ -- 'Graphics.Vulkan.Core10.Device.DeviceQueueCreateInfo'::@pQueuePriorities@.+ -- This /must/ be at least 2, and levels /must/ be spread evenly over the+ -- range, with at least one level at 1.0, and another at 0.0. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-priority>.+ discreteQueuePriorities :: Word32+ , -- | @pointSizeRange@[2] is the range [@minimum@,@maximum@] of supported+ -- sizes for points. Values written to variables decorated with the+ -- @PointSize@ built-in decoration are clamped to this range.+ pointSizeRange :: (Float, Float)+ , -- | @lineWidthRange@[2] is the range [@minimum@,@maximum@] of supported+ -- widths for lines. Values specified by the @lineWidth@ member of the+ -- 'Graphics.Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'+ -- or the @lineWidth@ parameter to+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' are+ -- clamped to this range.+ lineWidthRange :: (Float, Float)+ , -- | @pointSizeGranularity@ is the granularity of supported point sizes. Not+ -- all point sizes in the range defined by @pointSizeRange@ are supported.+ -- This limit specifies the granularity (or increment) between successive+ -- supported point sizes.+ pointSizeGranularity :: Float+ , -- | @lineWidthGranularity@ is the granularity of supported line widths. Not+ -- all line widths in the range defined by @lineWidthRange@ are supported.+ -- This limit specifies the granularity (or increment) between successive+ -- supported line widths.+ lineWidthGranularity :: Float+ , -- | @strictLines@ specifies whether lines are rasterized according to the+ -- preferred method of rasterization. If set to+ -- 'Graphics.Vulkan.Core10.BaseType.FALSE', lines /may/ be rasterized under+ -- a relaxed set of rules. If set to+ -- 'Graphics.Vulkan.Core10.BaseType.TRUE', lines are rasterized as per the+ -- strict definition. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-basic Basic Line Segment Rasterization>.+ strictLines :: Bool+ , -- | @standardSampleLocations@ specifies whether rasterization uses the+ -- standard sample locations as documented in+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling Multisampling>.+ -- If set to 'Graphics.Vulkan.Core10.BaseType.TRUE', the implementation+ -- uses the documented sample locations. If set to+ -- 'Graphics.Vulkan.Core10.BaseType.FALSE', the implementation /may/ use+ -- different sample locations.+ standardSampleLocations :: Bool+ , -- | @optimalBufferCopyOffsetAlignment@ is the optimal buffer offset+ -- alignment in bytes for+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage' and+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer'. The+ -- per texel alignment requirements are enforced, but applications /should/+ -- use the optimal alignment for optimal performance and power use.+ optimalBufferCopyOffsetAlignment :: DeviceSize+ , -- | @optimalBufferCopyRowPitchAlignment@ is the optimal buffer row pitch+ -- alignment in bytes for+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage' and+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer'. Row+ -- pitch is the number of bytes between texels with the same X coordinate+ -- in adjacent rows (Y coordinates differ by one). The per texel alignment+ -- requirements are enforced, but applications /should/ use the optimal+ -- alignment for optimal performance and power use.+ optimalBufferCopyRowPitchAlignment :: DeviceSize+ , -- | @nonCoherentAtomSize@ is the size and alignment in bytes that bounds+ -- concurrent access to+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-hostaccess host-mapped device memory>.+ nonCoherentAtomSize :: DeviceSize+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceLimits++instance ToCStruct PhysicalDeviceLimits where+ withCStruct x f = allocaBytesAligned 504 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceLimits{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (maxImageDimension1D)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (maxImageDimension2D)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (maxImageDimension3D)+ poke ((p `plusPtr` 12 :: Ptr Word32)) (maxImageDimensionCube)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (maxImageArrayLayers)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (maxTexelBufferElements)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (maxUniformBufferRange)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (maxStorageBufferRange)+ poke ((p `plusPtr` 32 :: Ptr Word32)) (maxPushConstantsSize)+ poke ((p `plusPtr` 36 :: Ptr Word32)) (maxMemoryAllocationCount)+ poke ((p `plusPtr` 40 :: Ptr Word32)) (maxSamplerAllocationCount)+ poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (bufferImageGranularity)+ poke ((p `plusPtr` 56 :: Ptr DeviceSize)) (sparseAddressSpaceSize)+ poke ((p `plusPtr` 64 :: Ptr Word32)) (maxBoundDescriptorSets)+ poke ((p `plusPtr` 68 :: Ptr Word32)) (maxPerStageDescriptorSamplers)+ poke ((p `plusPtr` 72 :: Ptr Word32)) (maxPerStageDescriptorUniformBuffers)+ poke ((p `plusPtr` 76 :: Ptr Word32)) (maxPerStageDescriptorStorageBuffers)+ poke ((p `plusPtr` 80 :: Ptr Word32)) (maxPerStageDescriptorSampledImages)+ poke ((p `plusPtr` 84 :: Ptr Word32)) (maxPerStageDescriptorStorageImages)+ poke ((p `plusPtr` 88 :: Ptr Word32)) (maxPerStageDescriptorInputAttachments)+ poke ((p `plusPtr` 92 :: Ptr Word32)) (maxPerStageResources)+ poke ((p `plusPtr` 96 :: Ptr Word32)) (maxDescriptorSetSamplers)+ poke ((p `plusPtr` 100 :: Ptr Word32)) (maxDescriptorSetUniformBuffers)+ poke ((p `plusPtr` 104 :: Ptr Word32)) (maxDescriptorSetUniformBuffersDynamic)+ poke ((p `plusPtr` 108 :: Ptr Word32)) (maxDescriptorSetStorageBuffers)+ poke ((p `plusPtr` 112 :: Ptr Word32)) (maxDescriptorSetStorageBuffersDynamic)+ poke ((p `plusPtr` 116 :: Ptr Word32)) (maxDescriptorSetSampledImages)+ poke ((p `plusPtr` 120 :: Ptr Word32)) (maxDescriptorSetStorageImages)+ poke ((p `plusPtr` 124 :: Ptr Word32)) (maxDescriptorSetInputAttachments)+ poke ((p `plusPtr` 128 :: Ptr Word32)) (maxVertexInputAttributes)+ poke ((p `plusPtr` 132 :: Ptr Word32)) (maxVertexInputBindings)+ poke ((p `plusPtr` 136 :: Ptr Word32)) (maxVertexInputAttributeOffset)+ poke ((p `plusPtr` 140 :: Ptr Word32)) (maxVertexInputBindingStride)+ poke ((p `plusPtr` 144 :: Ptr Word32)) (maxVertexOutputComponents)+ poke ((p `plusPtr` 148 :: Ptr Word32)) (maxTessellationGenerationLevel)+ poke ((p `plusPtr` 152 :: Ptr Word32)) (maxTessellationPatchSize)+ poke ((p `plusPtr` 156 :: Ptr Word32)) (maxTessellationControlPerVertexInputComponents)+ poke ((p `plusPtr` 160 :: Ptr Word32)) (maxTessellationControlPerVertexOutputComponents)+ poke ((p `plusPtr` 164 :: Ptr Word32)) (maxTessellationControlPerPatchOutputComponents)+ poke ((p `plusPtr` 168 :: Ptr Word32)) (maxTessellationControlTotalOutputComponents)+ poke ((p `plusPtr` 172 :: Ptr Word32)) (maxTessellationEvaluationInputComponents)+ poke ((p `plusPtr` 176 :: Ptr Word32)) (maxTessellationEvaluationOutputComponents)+ poke ((p `plusPtr` 180 :: Ptr Word32)) (maxGeometryShaderInvocations)+ poke ((p `plusPtr` 184 :: Ptr Word32)) (maxGeometryInputComponents)+ poke ((p `plusPtr` 188 :: Ptr Word32)) (maxGeometryOutputComponents)+ poke ((p `plusPtr` 192 :: Ptr Word32)) (maxGeometryOutputVertices)+ poke ((p `plusPtr` 196 :: Ptr Word32)) (maxGeometryTotalOutputComponents)+ poke ((p `plusPtr` 200 :: Ptr Word32)) (maxFragmentInputComponents)+ poke ((p `plusPtr` 204 :: Ptr Word32)) (maxFragmentOutputAttachments)+ poke ((p `plusPtr` 208 :: Ptr Word32)) (maxFragmentDualSrcAttachments)+ poke ((p `plusPtr` 212 :: Ptr Word32)) (maxFragmentCombinedOutputResources)+ poke ((p `plusPtr` 216 :: Ptr Word32)) (maxComputeSharedMemorySize)+ let pMaxComputeWorkGroupCount' = lowerArrayPtr ((p `plusPtr` 220 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+ case (maxComputeWorkGroupCount) of+ (e0, e1, e2) -> do+ poke (pMaxComputeWorkGroupCount' :: Ptr Word32) (e0)+ poke (pMaxComputeWorkGroupCount' `plusPtr` 4 :: Ptr Word32) (e1)+ poke (pMaxComputeWorkGroupCount' `plusPtr` 8 :: Ptr Word32) (e2)+ poke ((p `plusPtr` 232 :: Ptr Word32)) (maxComputeWorkGroupInvocations)+ let pMaxComputeWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 236 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+ case (maxComputeWorkGroupSize) of+ (e0, e1, e2) -> do+ poke (pMaxComputeWorkGroupSize' :: Ptr Word32) (e0)+ poke (pMaxComputeWorkGroupSize' `plusPtr` 4 :: Ptr Word32) (e1)+ poke (pMaxComputeWorkGroupSize' `plusPtr` 8 :: Ptr Word32) (e2)+ poke ((p `plusPtr` 248 :: Ptr Word32)) (subPixelPrecisionBits)+ poke ((p `plusPtr` 252 :: Ptr Word32)) (subTexelPrecisionBits)+ poke ((p `plusPtr` 256 :: Ptr Word32)) (mipmapPrecisionBits)+ poke ((p `plusPtr` 260 :: Ptr Word32)) (maxDrawIndexedIndexValue)+ poke ((p `plusPtr` 264 :: Ptr Word32)) (maxDrawIndirectCount)+ poke ((p `plusPtr` 268 :: Ptr CFloat)) (CFloat (maxSamplerLodBias))+ poke ((p `plusPtr` 272 :: Ptr CFloat)) (CFloat (maxSamplerAnisotropy))+ poke ((p `plusPtr` 276 :: Ptr Word32)) (maxViewports)+ let pMaxViewportDimensions' = lowerArrayPtr ((p `plusPtr` 280 :: Ptr (Data.Vector.Storable.Sized.Vector 2 Word32)))+ case (maxViewportDimensions) of+ (e0, e1) -> do+ poke (pMaxViewportDimensions' :: Ptr Word32) (e0)+ poke (pMaxViewportDimensions' `plusPtr` 4 :: Ptr Word32) (e1)+ let pViewportBoundsRange' = lowerArrayPtr ((p `plusPtr` 288 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+ case (viewportBoundsRange) of+ (e0, e1) -> do+ poke (pViewportBoundsRange' :: Ptr CFloat) (CFloat (e0))+ poke (pViewportBoundsRange' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+ poke ((p `plusPtr` 296 :: Ptr Word32)) (viewportSubPixelBits)+ poke ((p `plusPtr` 304 :: Ptr CSize)) (CSize (minMemoryMapAlignment))+ poke ((p `plusPtr` 312 :: Ptr DeviceSize)) (minTexelBufferOffsetAlignment)+ poke ((p `plusPtr` 320 :: Ptr DeviceSize)) (minUniformBufferOffsetAlignment)+ poke ((p `plusPtr` 328 :: Ptr DeviceSize)) (minStorageBufferOffsetAlignment)+ poke ((p `plusPtr` 336 :: Ptr Int32)) (minTexelOffset)+ poke ((p `plusPtr` 340 :: Ptr Word32)) (maxTexelOffset)+ poke ((p `plusPtr` 344 :: Ptr Int32)) (minTexelGatherOffset)+ poke ((p `plusPtr` 348 :: Ptr Word32)) (maxTexelGatherOffset)+ poke ((p `plusPtr` 352 :: Ptr CFloat)) (CFloat (minInterpolationOffset))+ poke ((p `plusPtr` 356 :: Ptr CFloat)) (CFloat (maxInterpolationOffset))+ poke ((p `plusPtr` 360 :: Ptr Word32)) (subPixelInterpolationOffsetBits)+ poke ((p `plusPtr` 364 :: Ptr Word32)) (maxFramebufferWidth)+ poke ((p `plusPtr` 368 :: Ptr Word32)) (maxFramebufferHeight)+ poke ((p `plusPtr` 372 :: Ptr Word32)) (maxFramebufferLayers)+ poke ((p `plusPtr` 376 :: Ptr SampleCountFlags)) (framebufferColorSampleCounts)+ poke ((p `plusPtr` 380 :: Ptr SampleCountFlags)) (framebufferDepthSampleCounts)+ poke ((p `plusPtr` 384 :: Ptr SampleCountFlags)) (framebufferStencilSampleCounts)+ poke ((p `plusPtr` 388 :: Ptr SampleCountFlags)) (framebufferNoAttachmentsSampleCounts)+ poke ((p `plusPtr` 392 :: Ptr Word32)) (maxColorAttachments)+ poke ((p `plusPtr` 396 :: Ptr SampleCountFlags)) (sampledImageColorSampleCounts)+ poke ((p `plusPtr` 400 :: Ptr SampleCountFlags)) (sampledImageIntegerSampleCounts)+ poke ((p `plusPtr` 404 :: Ptr SampleCountFlags)) (sampledImageDepthSampleCounts)+ poke ((p `plusPtr` 408 :: Ptr SampleCountFlags)) (sampledImageStencilSampleCounts)+ poke ((p `plusPtr` 412 :: Ptr SampleCountFlags)) (storageImageSampleCounts)+ poke ((p `plusPtr` 416 :: Ptr Word32)) (maxSampleMaskWords)+ poke ((p `plusPtr` 420 :: Ptr Bool32)) (boolToBool32 (timestampComputeAndGraphics))+ poke ((p `plusPtr` 424 :: Ptr CFloat)) (CFloat (timestampPeriod))+ poke ((p `plusPtr` 428 :: Ptr Word32)) (maxClipDistances)+ poke ((p `plusPtr` 432 :: Ptr Word32)) (maxCullDistances)+ poke ((p `plusPtr` 436 :: Ptr Word32)) (maxCombinedClipAndCullDistances)+ poke ((p `plusPtr` 440 :: Ptr Word32)) (discreteQueuePriorities)+ let pPointSizeRange' = lowerArrayPtr ((p `plusPtr` 444 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+ case (pointSizeRange) of+ (e0, e1) -> do+ poke (pPointSizeRange' :: Ptr CFloat) (CFloat (e0))+ poke (pPointSizeRange' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+ let pLineWidthRange' = lowerArrayPtr ((p `plusPtr` 452 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+ case (lineWidthRange) of+ (e0, e1) -> do+ poke (pLineWidthRange' :: Ptr CFloat) (CFloat (e0))+ poke (pLineWidthRange' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+ poke ((p `plusPtr` 460 :: Ptr CFloat)) (CFloat (pointSizeGranularity))+ poke ((p `plusPtr` 464 :: Ptr CFloat)) (CFloat (lineWidthGranularity))+ poke ((p `plusPtr` 468 :: Ptr Bool32)) (boolToBool32 (strictLines))+ poke ((p `plusPtr` 472 :: Ptr Bool32)) (boolToBool32 (standardSampleLocations))+ poke ((p `plusPtr` 480 :: Ptr DeviceSize)) (optimalBufferCopyOffsetAlignment)+ poke ((p `plusPtr` 488 :: Ptr DeviceSize)) (optimalBufferCopyRowPitchAlignment)+ poke ((p `plusPtr` 496 :: Ptr DeviceSize)) (nonCoherentAtomSize)+ f+ cStructSize = 504+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 56 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 64 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 68 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 72 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 76 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 80 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 84 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 88 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 92 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 96 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 100 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 104 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 108 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 112 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 116 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 120 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 124 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 128 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 132 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 136 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 140 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 144 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 148 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 152 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 156 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 160 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 164 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 168 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 172 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 176 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 180 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 184 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 188 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 192 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 196 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 200 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 204 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 208 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 212 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 216 :: Ptr Word32)) (zero)+ let pMaxComputeWorkGroupCount' = lowerArrayPtr ((p `plusPtr` 220 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+ case ((zero, zero, zero)) of+ (e0, e1, e2) -> do+ poke (pMaxComputeWorkGroupCount' :: Ptr Word32) (e0)+ poke (pMaxComputeWorkGroupCount' `plusPtr` 4 :: Ptr Word32) (e1)+ poke (pMaxComputeWorkGroupCount' `plusPtr` 8 :: Ptr Word32) (e2)+ poke ((p `plusPtr` 232 :: Ptr Word32)) (zero)+ let pMaxComputeWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 236 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+ case ((zero, zero, zero)) of+ (e0, e1, e2) -> do+ poke (pMaxComputeWorkGroupSize' :: Ptr Word32) (e0)+ poke (pMaxComputeWorkGroupSize' `plusPtr` 4 :: Ptr Word32) (e1)+ poke (pMaxComputeWorkGroupSize' `plusPtr` 8 :: Ptr Word32) (e2)+ poke ((p `plusPtr` 248 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 252 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 256 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 260 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 264 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 268 :: Ptr CFloat)) (CFloat (zero))+ poke ((p `plusPtr` 272 :: Ptr CFloat)) (CFloat (zero))+ poke ((p `plusPtr` 276 :: Ptr Word32)) (zero)+ let pMaxViewportDimensions' = lowerArrayPtr ((p `plusPtr` 280 :: Ptr (Data.Vector.Storable.Sized.Vector 2 Word32)))+ case ((zero, zero)) of+ (e0, e1) -> do+ poke (pMaxViewportDimensions' :: Ptr Word32) (e0)+ poke (pMaxViewportDimensions' `plusPtr` 4 :: Ptr Word32) (e1)+ let pViewportBoundsRange' = lowerArrayPtr ((p `plusPtr` 288 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+ case ((zero, zero)) of+ (e0, e1) -> do+ poke (pViewportBoundsRange' :: Ptr CFloat) (CFloat (e0))+ poke (pViewportBoundsRange' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+ poke ((p `plusPtr` 296 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 304 :: Ptr CSize)) (CSize (zero))+ poke ((p `plusPtr` 312 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 320 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 328 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 336 :: Ptr Int32)) (zero)+ poke ((p `plusPtr` 340 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 344 :: Ptr Int32)) (zero)+ poke ((p `plusPtr` 348 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 352 :: Ptr CFloat)) (CFloat (zero))+ poke ((p `plusPtr` 356 :: Ptr CFloat)) (CFloat (zero))+ poke ((p `plusPtr` 360 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 364 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 368 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 372 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 392 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 416 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 420 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 424 :: Ptr CFloat)) (CFloat (zero))+ poke ((p `plusPtr` 428 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 432 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 436 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 440 :: Ptr Word32)) (zero)+ let pPointSizeRange' = lowerArrayPtr ((p `plusPtr` 444 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+ case ((zero, zero)) of+ (e0, e1) -> do+ poke (pPointSizeRange' :: Ptr CFloat) (CFloat (e0))+ poke (pPointSizeRange' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+ let pLineWidthRange' = lowerArrayPtr ((p `plusPtr` 452 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+ case ((zero, zero)) of+ (e0, e1) -> do+ poke (pLineWidthRange' :: Ptr CFloat) (CFloat (e0))+ poke (pLineWidthRange' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+ poke ((p `plusPtr` 460 :: Ptr CFloat)) (CFloat (zero))+ poke ((p `plusPtr` 464 :: Ptr CFloat)) (CFloat (zero))+ poke ((p `plusPtr` 468 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 472 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 480 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 488 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 496 :: Ptr DeviceSize)) (zero)+ f++instance FromCStruct PhysicalDeviceLimits where+ peekCStruct p = do+ maxImageDimension1D <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ maxImageDimension2D <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ maxImageDimension3D <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ maxImageDimensionCube <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))+ maxImageArrayLayers <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ maxTexelBufferElements <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ maxUniformBufferRange <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ maxStorageBufferRange <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+ maxPushConstantsSize <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ maxMemoryAllocationCount <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))+ maxSamplerAllocationCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))+ bufferImageGranularity <- peek @DeviceSize ((p `plusPtr` 48 :: Ptr DeviceSize))+ sparseAddressSpaceSize <- peek @DeviceSize ((p `plusPtr` 56 :: Ptr DeviceSize))+ maxBoundDescriptorSets <- peek @Word32 ((p `plusPtr` 64 :: Ptr Word32))+ maxPerStageDescriptorSamplers <- peek @Word32 ((p `plusPtr` 68 :: Ptr Word32))+ maxPerStageDescriptorUniformBuffers <- peek @Word32 ((p `plusPtr` 72 :: Ptr Word32))+ maxPerStageDescriptorStorageBuffers <- peek @Word32 ((p `plusPtr` 76 :: Ptr Word32))+ maxPerStageDescriptorSampledImages <- peek @Word32 ((p `plusPtr` 80 :: Ptr Word32))+ maxPerStageDescriptorStorageImages <- peek @Word32 ((p `plusPtr` 84 :: Ptr Word32))+ maxPerStageDescriptorInputAttachments <- peek @Word32 ((p `plusPtr` 88 :: Ptr Word32))+ maxPerStageResources <- peek @Word32 ((p `plusPtr` 92 :: Ptr Word32))+ maxDescriptorSetSamplers <- peek @Word32 ((p `plusPtr` 96 :: Ptr Word32))+ maxDescriptorSetUniformBuffers <- peek @Word32 ((p `plusPtr` 100 :: Ptr Word32))+ maxDescriptorSetUniformBuffersDynamic <- peek @Word32 ((p `plusPtr` 104 :: Ptr Word32))+ maxDescriptorSetStorageBuffers <- peek @Word32 ((p `plusPtr` 108 :: Ptr Word32))+ maxDescriptorSetStorageBuffersDynamic <- peek @Word32 ((p `plusPtr` 112 :: Ptr Word32))+ maxDescriptorSetSampledImages <- peek @Word32 ((p `plusPtr` 116 :: Ptr Word32))+ maxDescriptorSetStorageImages <- peek @Word32 ((p `plusPtr` 120 :: Ptr Word32))+ maxDescriptorSetInputAttachments <- peek @Word32 ((p `plusPtr` 124 :: Ptr Word32))+ maxVertexInputAttributes <- peek @Word32 ((p `plusPtr` 128 :: Ptr Word32))+ maxVertexInputBindings <- peek @Word32 ((p `plusPtr` 132 :: Ptr Word32))+ maxVertexInputAttributeOffset <- peek @Word32 ((p `plusPtr` 136 :: Ptr Word32))+ maxVertexInputBindingStride <- peek @Word32 ((p `plusPtr` 140 :: Ptr Word32))+ maxVertexOutputComponents <- peek @Word32 ((p `plusPtr` 144 :: Ptr Word32))+ maxTessellationGenerationLevel <- peek @Word32 ((p `plusPtr` 148 :: Ptr Word32))+ maxTessellationPatchSize <- peek @Word32 ((p `plusPtr` 152 :: Ptr Word32))+ maxTessellationControlPerVertexInputComponents <- peek @Word32 ((p `plusPtr` 156 :: Ptr Word32))+ maxTessellationControlPerVertexOutputComponents <- peek @Word32 ((p `plusPtr` 160 :: Ptr Word32))+ maxTessellationControlPerPatchOutputComponents <- peek @Word32 ((p `plusPtr` 164 :: Ptr Word32))+ maxTessellationControlTotalOutputComponents <- peek @Word32 ((p `plusPtr` 168 :: Ptr Word32))+ maxTessellationEvaluationInputComponents <- peek @Word32 ((p `plusPtr` 172 :: Ptr Word32))+ maxTessellationEvaluationOutputComponents <- peek @Word32 ((p `plusPtr` 176 :: Ptr Word32))+ maxGeometryShaderInvocations <- peek @Word32 ((p `plusPtr` 180 :: Ptr Word32))+ maxGeometryInputComponents <- peek @Word32 ((p `plusPtr` 184 :: Ptr Word32))+ maxGeometryOutputComponents <- peek @Word32 ((p `plusPtr` 188 :: Ptr Word32))+ maxGeometryOutputVertices <- peek @Word32 ((p `plusPtr` 192 :: Ptr Word32))+ maxGeometryTotalOutputComponents <- peek @Word32 ((p `plusPtr` 196 :: Ptr Word32))+ maxFragmentInputComponents <- peek @Word32 ((p `plusPtr` 200 :: Ptr Word32))+ maxFragmentOutputAttachments <- peek @Word32 ((p `plusPtr` 204 :: Ptr Word32))+ maxFragmentDualSrcAttachments <- peek @Word32 ((p `plusPtr` 208 :: Ptr Word32))+ maxFragmentCombinedOutputResources <- peek @Word32 ((p `plusPtr` 212 :: Ptr Word32))+ maxComputeSharedMemorySize <- peek @Word32 ((p `plusPtr` 216 :: Ptr Word32))+ let pmaxComputeWorkGroupCount = lowerArrayPtr @Word32 ((p `plusPtr` 220 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+ maxComputeWorkGroupCount0 <- peek @Word32 ((pmaxComputeWorkGroupCount `advancePtrBytes` 0 :: Ptr Word32))+ maxComputeWorkGroupCount1 <- peek @Word32 ((pmaxComputeWorkGroupCount `advancePtrBytes` 4 :: Ptr Word32))+ maxComputeWorkGroupCount2 <- peek @Word32 ((pmaxComputeWorkGroupCount `advancePtrBytes` 8 :: Ptr Word32))+ maxComputeWorkGroupInvocations <- peek @Word32 ((p `plusPtr` 232 :: Ptr Word32))+ let pmaxComputeWorkGroupSize = lowerArrayPtr @Word32 ((p `plusPtr` 236 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+ maxComputeWorkGroupSize0 <- peek @Word32 ((pmaxComputeWorkGroupSize `advancePtrBytes` 0 :: Ptr Word32))+ maxComputeWorkGroupSize1 <- peek @Word32 ((pmaxComputeWorkGroupSize `advancePtrBytes` 4 :: Ptr Word32))+ maxComputeWorkGroupSize2 <- peek @Word32 ((pmaxComputeWorkGroupSize `advancePtrBytes` 8 :: Ptr Word32))+ subPixelPrecisionBits <- peek @Word32 ((p `plusPtr` 248 :: Ptr Word32))+ subTexelPrecisionBits <- peek @Word32 ((p `plusPtr` 252 :: Ptr Word32))+ mipmapPrecisionBits <- peek @Word32 ((p `plusPtr` 256 :: Ptr Word32))+ maxDrawIndexedIndexValue <- peek @Word32 ((p `plusPtr` 260 :: Ptr Word32))+ maxDrawIndirectCount <- peek @Word32 ((p `plusPtr` 264 :: Ptr Word32))+ maxSamplerLodBias <- peek @CFloat ((p `plusPtr` 268 :: Ptr CFloat))+ maxSamplerAnisotropy <- peek @CFloat ((p `plusPtr` 272 :: Ptr CFloat))+ maxViewports <- peek @Word32 ((p `plusPtr` 276 :: Ptr Word32))+ let pmaxViewportDimensions = lowerArrayPtr @Word32 ((p `plusPtr` 280 :: Ptr (Data.Vector.Storable.Sized.Vector 2 Word32)))+ maxViewportDimensions0 <- peek @Word32 ((pmaxViewportDimensions `advancePtrBytes` 0 :: Ptr Word32))+ maxViewportDimensions1 <- peek @Word32 ((pmaxViewportDimensions `advancePtrBytes` 4 :: Ptr Word32))+ let pviewportBoundsRange = lowerArrayPtr @CFloat ((p `plusPtr` 288 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+ viewportBoundsRange0 <- peek @CFloat ((pviewportBoundsRange `advancePtrBytes` 0 :: Ptr CFloat))+ viewportBoundsRange1 <- peek @CFloat ((pviewportBoundsRange `advancePtrBytes` 4 :: Ptr CFloat))+ viewportSubPixelBits <- peek @Word32 ((p `plusPtr` 296 :: Ptr Word32))+ minMemoryMapAlignment <- peek @CSize ((p `plusPtr` 304 :: Ptr CSize))+ minTexelBufferOffsetAlignment <- peek @DeviceSize ((p `plusPtr` 312 :: Ptr DeviceSize))+ minUniformBufferOffsetAlignment <- peek @DeviceSize ((p `plusPtr` 320 :: Ptr DeviceSize))+ minStorageBufferOffsetAlignment <- peek @DeviceSize ((p `plusPtr` 328 :: Ptr DeviceSize))+ minTexelOffset <- peek @Int32 ((p `plusPtr` 336 :: Ptr Int32))+ maxTexelOffset <- peek @Word32 ((p `plusPtr` 340 :: Ptr Word32))+ minTexelGatherOffset <- peek @Int32 ((p `plusPtr` 344 :: Ptr Int32))+ maxTexelGatherOffset <- peek @Word32 ((p `plusPtr` 348 :: Ptr Word32))+ minInterpolationOffset <- peek @CFloat ((p `plusPtr` 352 :: Ptr CFloat))+ maxInterpolationOffset <- peek @CFloat ((p `plusPtr` 356 :: Ptr CFloat))+ subPixelInterpolationOffsetBits <- peek @Word32 ((p `plusPtr` 360 :: Ptr Word32))+ maxFramebufferWidth <- peek @Word32 ((p `plusPtr` 364 :: Ptr Word32))+ maxFramebufferHeight <- peek @Word32 ((p `plusPtr` 368 :: Ptr Word32))+ maxFramebufferLayers <- peek @Word32 ((p `plusPtr` 372 :: Ptr Word32))+ framebufferColorSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 376 :: Ptr SampleCountFlags))+ framebufferDepthSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 380 :: Ptr SampleCountFlags))+ framebufferStencilSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 384 :: Ptr SampleCountFlags))+ framebufferNoAttachmentsSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 388 :: Ptr SampleCountFlags))+ maxColorAttachments <- peek @Word32 ((p `plusPtr` 392 :: Ptr Word32))+ sampledImageColorSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 396 :: Ptr SampleCountFlags))+ sampledImageIntegerSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 400 :: Ptr SampleCountFlags))+ sampledImageDepthSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 404 :: Ptr SampleCountFlags))+ sampledImageStencilSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 408 :: Ptr SampleCountFlags))+ storageImageSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 412 :: Ptr SampleCountFlags))+ maxSampleMaskWords <- peek @Word32 ((p `plusPtr` 416 :: Ptr Word32))+ timestampComputeAndGraphics <- peek @Bool32 ((p `plusPtr` 420 :: Ptr Bool32))+ timestampPeriod <- peek @CFloat ((p `plusPtr` 424 :: Ptr CFloat))+ maxClipDistances <- peek @Word32 ((p `plusPtr` 428 :: Ptr Word32))+ maxCullDistances <- peek @Word32 ((p `plusPtr` 432 :: Ptr Word32))+ maxCombinedClipAndCullDistances <- peek @Word32 ((p `plusPtr` 436 :: Ptr Word32))+ discreteQueuePriorities <- peek @Word32 ((p `plusPtr` 440 :: Ptr Word32))+ let ppointSizeRange = lowerArrayPtr @CFloat ((p `plusPtr` 444 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+ pointSizeRange0 <- peek @CFloat ((ppointSizeRange `advancePtrBytes` 0 :: Ptr CFloat))+ pointSizeRange1 <- peek @CFloat ((ppointSizeRange `advancePtrBytes` 4 :: Ptr CFloat))+ let plineWidthRange = lowerArrayPtr @CFloat ((p `plusPtr` 452 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+ lineWidthRange0 <- peek @CFloat ((plineWidthRange `advancePtrBytes` 0 :: Ptr CFloat))+ lineWidthRange1 <- peek @CFloat ((plineWidthRange `advancePtrBytes` 4 :: Ptr CFloat))+ pointSizeGranularity <- peek @CFloat ((p `plusPtr` 460 :: Ptr CFloat))+ lineWidthGranularity <- peek @CFloat ((p `plusPtr` 464 :: Ptr CFloat))+ strictLines <- peek @Bool32 ((p `plusPtr` 468 :: Ptr Bool32))+ standardSampleLocations <- peek @Bool32 ((p `plusPtr` 472 :: Ptr Bool32))+ optimalBufferCopyOffsetAlignment <- peek @DeviceSize ((p `plusPtr` 480 :: Ptr DeviceSize))+ optimalBufferCopyRowPitchAlignment <- peek @DeviceSize ((p `plusPtr` 488 :: Ptr DeviceSize))+ nonCoherentAtomSize <- peek @DeviceSize ((p `plusPtr` 496 :: Ptr DeviceSize))+ pure $ PhysicalDeviceLimits+ maxImageDimension1D maxImageDimension2D maxImageDimension3D maxImageDimensionCube maxImageArrayLayers maxTexelBufferElements maxUniformBufferRange maxStorageBufferRange maxPushConstantsSize maxMemoryAllocationCount maxSamplerAllocationCount bufferImageGranularity sparseAddressSpaceSize maxBoundDescriptorSets maxPerStageDescriptorSamplers maxPerStageDescriptorUniformBuffers maxPerStageDescriptorStorageBuffers maxPerStageDescriptorSampledImages maxPerStageDescriptorStorageImages maxPerStageDescriptorInputAttachments maxPerStageResources maxDescriptorSetSamplers maxDescriptorSetUniformBuffers maxDescriptorSetUniformBuffersDynamic maxDescriptorSetStorageBuffers maxDescriptorSetStorageBuffersDynamic maxDescriptorSetSampledImages maxDescriptorSetStorageImages maxDescriptorSetInputAttachments maxVertexInputAttributes maxVertexInputBindings maxVertexInputAttributeOffset maxVertexInputBindingStride maxVertexOutputComponents maxTessellationGenerationLevel maxTessellationPatchSize maxTessellationControlPerVertexInputComponents maxTessellationControlPerVertexOutputComponents maxTessellationControlPerPatchOutputComponents maxTessellationControlTotalOutputComponents maxTessellationEvaluationInputComponents maxTessellationEvaluationOutputComponents maxGeometryShaderInvocations maxGeometryInputComponents maxGeometryOutputComponents maxGeometryOutputVertices maxGeometryTotalOutputComponents maxFragmentInputComponents maxFragmentOutputAttachments maxFragmentDualSrcAttachments maxFragmentCombinedOutputResources maxComputeSharedMemorySize ((maxComputeWorkGroupCount0, maxComputeWorkGroupCount1, maxComputeWorkGroupCount2)) maxComputeWorkGroupInvocations ((maxComputeWorkGroupSize0, maxComputeWorkGroupSize1, maxComputeWorkGroupSize2)) subPixelPrecisionBits subTexelPrecisionBits mipmapPrecisionBits maxDrawIndexedIndexValue maxDrawIndirectCount ((\(CFloat a) -> a) maxSamplerLodBias) ((\(CFloat a) -> a) maxSamplerAnisotropy) maxViewports ((maxViewportDimensions0, maxViewportDimensions1)) ((((\(CFloat a) -> a) viewportBoundsRange0), ((\(CFloat a) -> a) viewportBoundsRange1))) viewportSubPixelBits ((\(CSize a) -> a) minMemoryMapAlignment) minTexelBufferOffsetAlignment minUniformBufferOffsetAlignment minStorageBufferOffsetAlignment minTexelOffset maxTexelOffset minTexelGatherOffset maxTexelGatherOffset ((\(CFloat a) -> a) minInterpolationOffset) ((\(CFloat a) -> a) maxInterpolationOffset) subPixelInterpolationOffsetBits maxFramebufferWidth maxFramebufferHeight maxFramebufferLayers framebufferColorSampleCounts framebufferDepthSampleCounts framebufferStencilSampleCounts framebufferNoAttachmentsSampleCounts maxColorAttachments sampledImageColorSampleCounts sampledImageIntegerSampleCounts sampledImageDepthSampleCounts sampledImageStencilSampleCounts storageImageSampleCounts maxSampleMaskWords (bool32ToBool timestampComputeAndGraphics) ((\(CFloat a) -> a) timestampPeriod) maxClipDistances maxCullDistances maxCombinedClipAndCullDistances discreteQueuePriorities ((((\(CFloat a) -> a) pointSizeRange0), ((\(CFloat a) -> a) pointSizeRange1))) ((((\(CFloat a) -> a) lineWidthRange0), ((\(CFloat a) -> a) lineWidthRange1))) ((\(CFloat a) -> a) pointSizeGranularity) ((\(CFloat a) -> a) lineWidthGranularity) (bool32ToBool strictLines) (bool32ToBool standardSampleLocations) optimalBufferCopyOffsetAlignment optimalBufferCopyRowPitchAlignment nonCoherentAtomSize++instance Storable PhysicalDeviceLimits where+ sizeOf ~_ = 504+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceLimits where+ zero = PhysicalDeviceLimits+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ (zero, zero, zero)+ zero+ (zero, zero, zero)+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ (zero, zero)+ (zero, zero)+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ (zero, zero)+ (zero, zero)+ zero+ zero+ zero+ zero+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core10/DeviceInitialization.hs-boot view
@@ -0,0 +1,117 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.DeviceInitialization ( ApplicationInfo+ , FormatProperties+ , ImageFormatProperties+ , InstanceCreateInfo+ , MemoryHeap+ , MemoryType+ , PhysicalDeviceFeatures+ , PhysicalDeviceLimits+ , PhysicalDeviceMemoryProperties+ , PhysicalDeviceProperties+ , PhysicalDeviceSparseProperties+ , QueueFamilyProperties+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+data ApplicationInfo++instance ToCStruct ApplicationInfo+instance Show ApplicationInfo++instance FromCStruct ApplicationInfo+++data FormatProperties++instance ToCStruct FormatProperties+instance Show FormatProperties++instance FromCStruct FormatProperties+++data ImageFormatProperties++instance ToCStruct ImageFormatProperties+instance Show ImageFormatProperties++instance FromCStruct ImageFormatProperties+++type role InstanceCreateInfo nominal+data InstanceCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (InstanceCreateInfo es)+instance Show (Chain es) => Show (InstanceCreateInfo es)++instance PeekChain es => FromCStruct (InstanceCreateInfo es)+++data MemoryHeap++instance ToCStruct MemoryHeap+instance Show MemoryHeap++instance FromCStruct MemoryHeap+++data MemoryType++instance ToCStruct MemoryType+instance Show MemoryType++instance FromCStruct MemoryType+++data PhysicalDeviceFeatures++instance ToCStruct PhysicalDeviceFeatures+instance Show PhysicalDeviceFeatures++instance FromCStruct PhysicalDeviceFeatures+++data PhysicalDeviceLimits++instance ToCStruct PhysicalDeviceLimits+instance Show PhysicalDeviceLimits++instance FromCStruct PhysicalDeviceLimits+++data PhysicalDeviceMemoryProperties++instance ToCStruct PhysicalDeviceMemoryProperties+instance Show PhysicalDeviceMemoryProperties++instance FromCStruct PhysicalDeviceMemoryProperties+++data PhysicalDeviceProperties++instance ToCStruct PhysicalDeviceProperties+instance Show PhysicalDeviceProperties++instance FromCStruct PhysicalDeviceProperties+++data PhysicalDeviceSparseProperties++instance ToCStruct PhysicalDeviceSparseProperties+instance Show PhysicalDeviceSparseProperties++instance FromCStruct PhysicalDeviceSparseProperties+++data QueueFamilyProperties++instance ToCStruct QueueFamilyProperties+instance Show QueueFamilyProperties++instance FromCStruct QueueFamilyProperties+
+ src/Graphics/Vulkan/Core10/Enums.hs view
@@ -0,0 +1,193 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums ( module Graphics.Vulkan.Core10.Enums.AccessFlagBits+ , module Graphics.Vulkan.Core10.Enums.AttachmentDescriptionFlagBits+ , module Graphics.Vulkan.Core10.Enums.AttachmentLoadOp+ , module Graphics.Vulkan.Core10.Enums.AttachmentStoreOp+ , module Graphics.Vulkan.Core10.Enums.BlendFactor+ , module Graphics.Vulkan.Core10.Enums.BlendOp+ , module Graphics.Vulkan.Core10.Enums.BorderColor+ , module Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits+ , module Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits+ , module Graphics.Vulkan.Core10.Enums.BufferViewCreateFlags+ , module Graphics.Vulkan.Core10.Enums.ColorComponentFlagBits+ , module Graphics.Vulkan.Core10.Enums.CommandBufferLevel+ , module Graphics.Vulkan.Core10.Enums.CommandBufferResetFlagBits+ , module Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits+ , module Graphics.Vulkan.Core10.Enums.CommandPoolCreateFlagBits+ , module Graphics.Vulkan.Core10.Enums.CommandPoolResetFlagBits+ , module Graphics.Vulkan.Core10.Enums.CompareOp+ , module Graphics.Vulkan.Core10.Enums.ComponentSwizzle+ , module Graphics.Vulkan.Core10.Enums.CullModeFlagBits+ , module Graphics.Vulkan.Core10.Enums.DependencyFlagBits+ , module Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits+ , module Graphics.Vulkan.Core10.Enums.DescriptorPoolResetFlags+ , module Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits+ , module Graphics.Vulkan.Core10.Enums.DescriptorType+ , module Graphics.Vulkan.Core10.Enums.DeviceCreateFlags+ , module Graphics.Vulkan.Core10.Enums.DeviceQueueCreateFlagBits+ , module Graphics.Vulkan.Core10.Enums.DynamicState+ , module Graphics.Vulkan.Core10.Enums.EventCreateFlags+ , module Graphics.Vulkan.Core10.Enums.FenceCreateFlagBits+ , module Graphics.Vulkan.Core10.Enums.Filter+ , module Graphics.Vulkan.Core10.Enums.Format+ , module Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits+ , module Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits+ , module Graphics.Vulkan.Core10.Enums.FrontFace+ , module Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits+ , module Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits+ , module Graphics.Vulkan.Core10.Enums.ImageLayout+ , module Graphics.Vulkan.Core10.Enums.ImageTiling+ , module Graphics.Vulkan.Core10.Enums.ImageType+ , module Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits+ , module Graphics.Vulkan.Core10.Enums.ImageViewCreateFlagBits+ , module Graphics.Vulkan.Core10.Enums.ImageViewType+ , module Graphics.Vulkan.Core10.Enums.IndexType+ , module Graphics.Vulkan.Core10.Enums.InstanceCreateFlags+ , module Graphics.Vulkan.Core10.Enums.InternalAllocationType+ , module Graphics.Vulkan.Core10.Enums.LogicOp+ , module Graphics.Vulkan.Core10.Enums.MemoryHeapFlagBits+ , module Graphics.Vulkan.Core10.Enums.MemoryMapFlags+ , module Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits+ , module Graphics.Vulkan.Core10.Enums.ObjectType+ , module Graphics.Vulkan.Core10.Enums.PhysicalDeviceType+ , module Graphics.Vulkan.Core10.Enums.PipelineBindPoint+ , module Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlags+ , module Graphics.Vulkan.Core10.Enums.PipelineCacheHeaderVersion+ , module Graphics.Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlags+ , module Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits+ , module Graphics.Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlags+ , module Graphics.Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags+ , module Graphics.Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags+ , module Graphics.Vulkan.Core10.Enums.PipelineLayoutCreateFlags+ , module Graphics.Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags+ , module Graphics.Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags+ , module Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits+ , module Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits+ , module Graphics.Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags+ , module Graphics.Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags+ , module Graphics.Vulkan.Core10.Enums.PipelineViewportStateCreateFlags+ , module Graphics.Vulkan.Core10.Enums.PolygonMode+ , module Graphics.Vulkan.Core10.Enums.PrimitiveTopology+ , module Graphics.Vulkan.Core10.Enums.QueryControlFlagBits+ , module Graphics.Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits+ , module Graphics.Vulkan.Core10.Enums.QueryPoolCreateFlags+ , module Graphics.Vulkan.Core10.Enums.QueryResultFlagBits+ , module Graphics.Vulkan.Core10.Enums.QueryType+ , module Graphics.Vulkan.Core10.Enums.QueueFlagBits+ , module Graphics.Vulkan.Core10.Enums.RenderPassCreateFlagBits+ , module Graphics.Vulkan.Core10.Enums.Result+ , module Graphics.Vulkan.Core10.Enums.SampleCountFlagBits+ , module Graphics.Vulkan.Core10.Enums.SamplerAddressMode+ , module Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits+ , module Graphics.Vulkan.Core10.Enums.SamplerMipmapMode+ , module Graphics.Vulkan.Core10.Enums.SemaphoreCreateFlags+ , module Graphics.Vulkan.Core10.Enums.ShaderModuleCreateFlagBits+ , module Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits+ , module Graphics.Vulkan.Core10.Enums.SharingMode+ , module Graphics.Vulkan.Core10.Enums.SparseImageFormatFlagBits+ , module Graphics.Vulkan.Core10.Enums.SparseMemoryBindFlagBits+ , module Graphics.Vulkan.Core10.Enums.StencilFaceFlagBits+ , module Graphics.Vulkan.Core10.Enums.StencilOp+ , module Graphics.Vulkan.Core10.Enums.StructureType+ , module Graphics.Vulkan.Core10.Enums.SubpassContents+ , module Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits+ , module Graphics.Vulkan.Core10.Enums.SystemAllocationScope+ , module Graphics.Vulkan.Core10.Enums.VendorId+ , module Graphics.Vulkan.Core10.Enums.VertexInputRate+ ) where+import Graphics.Vulkan.Core10.Enums.AccessFlagBits+import Graphics.Vulkan.Core10.Enums.AttachmentDescriptionFlagBits+import Graphics.Vulkan.Core10.Enums.AttachmentLoadOp+import Graphics.Vulkan.Core10.Enums.AttachmentStoreOp+import Graphics.Vulkan.Core10.Enums.BlendFactor+import Graphics.Vulkan.Core10.Enums.BlendOp+import Graphics.Vulkan.Core10.Enums.BorderColor+import Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits+import Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits+import Graphics.Vulkan.Core10.Enums.BufferViewCreateFlags+import Graphics.Vulkan.Core10.Enums.ColorComponentFlagBits+import Graphics.Vulkan.Core10.Enums.CommandBufferLevel+import Graphics.Vulkan.Core10.Enums.CommandBufferResetFlagBits+import Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits+import Graphics.Vulkan.Core10.Enums.CommandPoolCreateFlagBits+import Graphics.Vulkan.Core10.Enums.CommandPoolResetFlagBits+import Graphics.Vulkan.Core10.Enums.CompareOp+import Graphics.Vulkan.Core10.Enums.ComponentSwizzle+import Graphics.Vulkan.Core10.Enums.CullModeFlagBits+import Graphics.Vulkan.Core10.Enums.DependencyFlagBits+import Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits+import Graphics.Vulkan.Core10.Enums.DescriptorPoolResetFlags+import Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits+import Graphics.Vulkan.Core10.Enums.DescriptorType+import Graphics.Vulkan.Core10.Enums.DeviceCreateFlags+import Graphics.Vulkan.Core10.Enums.DeviceQueueCreateFlagBits+import Graphics.Vulkan.Core10.Enums.DynamicState+import Graphics.Vulkan.Core10.Enums.EventCreateFlags+import Graphics.Vulkan.Core10.Enums.FenceCreateFlagBits+import Graphics.Vulkan.Core10.Enums.Filter+import Graphics.Vulkan.Core10.Enums.Format+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits+import Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits+import Graphics.Vulkan.Core10.Enums.FrontFace+import Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits+import Graphics.Vulkan.Core10.Enums.ImageLayout+import Graphics.Vulkan.Core10.Enums.ImageTiling+import Graphics.Vulkan.Core10.Enums.ImageType+import Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits+import Graphics.Vulkan.Core10.Enums.ImageViewCreateFlagBits+import Graphics.Vulkan.Core10.Enums.ImageViewType+import Graphics.Vulkan.Core10.Enums.IndexType+import Graphics.Vulkan.Core10.Enums.InstanceCreateFlags+import Graphics.Vulkan.Core10.Enums.InternalAllocationType+import Graphics.Vulkan.Core10.Enums.LogicOp+import Graphics.Vulkan.Core10.Enums.MemoryHeapFlagBits+import Graphics.Vulkan.Core10.Enums.MemoryMapFlags+import Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits+import Graphics.Vulkan.Core10.Enums.ObjectType+import Graphics.Vulkan.Core10.Enums.PhysicalDeviceType+import Graphics.Vulkan.Core10.Enums.PipelineBindPoint+import Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlags+import Graphics.Vulkan.Core10.Enums.PipelineCacheHeaderVersion+import Graphics.Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlags+import Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits+import Graphics.Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlags+import Graphics.Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags+import Graphics.Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags+import Graphics.Vulkan.Core10.Enums.PipelineLayoutCreateFlags+import Graphics.Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags+import Graphics.Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags+import Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits+import Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits+import Graphics.Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags+import Graphics.Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags+import Graphics.Vulkan.Core10.Enums.PipelineViewportStateCreateFlags+import Graphics.Vulkan.Core10.Enums.PolygonMode+import Graphics.Vulkan.Core10.Enums.PrimitiveTopology+import Graphics.Vulkan.Core10.Enums.QueryControlFlagBits+import Graphics.Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits+import Graphics.Vulkan.Core10.Enums.QueryPoolCreateFlags+import Graphics.Vulkan.Core10.Enums.QueryResultFlagBits+import Graphics.Vulkan.Core10.Enums.QueryType+import Graphics.Vulkan.Core10.Enums.QueueFlagBits+import Graphics.Vulkan.Core10.Enums.RenderPassCreateFlagBits+import Graphics.Vulkan.Core10.Enums.Result+import Graphics.Vulkan.Core10.Enums.SampleCountFlagBits+import Graphics.Vulkan.Core10.Enums.SamplerAddressMode+import Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits+import Graphics.Vulkan.Core10.Enums.SamplerMipmapMode+import Graphics.Vulkan.Core10.Enums.SemaphoreCreateFlags+import Graphics.Vulkan.Core10.Enums.ShaderModuleCreateFlagBits+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits+import Graphics.Vulkan.Core10.Enums.SharingMode+import Graphics.Vulkan.Core10.Enums.SparseImageFormatFlagBits+import Graphics.Vulkan.Core10.Enums.SparseMemoryBindFlagBits+import Graphics.Vulkan.Core10.Enums.StencilFaceFlagBits+import Graphics.Vulkan.Core10.Enums.StencilOp+import Graphics.Vulkan.Core10.Enums.StructureType+import Graphics.Vulkan.Core10.Enums.SubpassContents+import Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits+import Graphics.Vulkan.Core10.Enums.SystemAllocationScope+import Graphics.Vulkan.Core10.Enums.VendorId+import Graphics.Vulkan.Core10.Enums.VertexInputRate+
+ src/Graphics/Vulkan/Core10/Enums/AccessFlagBits.hs view
@@ -0,0 +1,392 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.AccessFlagBits ( AccessFlagBits( ACCESS_INDIRECT_COMMAND_READ_BIT+ , ACCESS_INDEX_READ_BIT+ , ACCESS_VERTEX_ATTRIBUTE_READ_BIT+ , ACCESS_UNIFORM_READ_BIT+ , ACCESS_INPUT_ATTACHMENT_READ_BIT+ , ACCESS_SHADER_READ_BIT+ , ACCESS_SHADER_WRITE_BIT+ , ACCESS_COLOR_ATTACHMENT_READ_BIT+ , ACCESS_COLOR_ATTACHMENT_WRITE_BIT+ , ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT+ , ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT+ , ACCESS_TRANSFER_READ_BIT+ , ACCESS_TRANSFER_WRITE_BIT+ , ACCESS_HOST_READ_BIT+ , ACCESS_HOST_WRITE_BIT+ , ACCESS_MEMORY_READ_BIT+ , ACCESS_MEMORY_WRITE_BIT+ , ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT+ , ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV+ , ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV+ , ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV+ , ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT+ , ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX+ , ACCESS_COMMAND_PROCESS_READ_BIT_NVX+ , ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT+ , ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT+ , ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT+ , ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT+ , ..+ )+ , AccessFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkAccessFlagBits - Bitmask specifying memory access types that will+-- participate in a memory dependency+--+-- = Description+--+-- Certain access types are only performed by a subset of pipeline stages.+-- Any synchronization command that takes both stage masks and access masks+-- uses both to define the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes>+-- - only the specified access types performed by the specified stages are+-- included in the access scope. An application /must/ not specify an+-- access flag in a synchronization command if it does not include a+-- pipeline stage in the corresponding stage mask that is able to perform+-- accesses of that type. The following table lists, for each access flag,+-- which pipeline stages /can/ perform that type of access.+--+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | Access flag | Supported pipeline stages |+-- +====================================================+=========================================================================================================++-- | 'ACCESS_INDIRECT_COMMAND_READ_BIT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_INDEX_READ_BIT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_INPUT_BIT' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_VERTEX_ATTRIBUTE_READ_BIT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_INPUT_BIT' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_UNIFORM_READ_BIT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV', |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV', |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV', |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT', |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT', |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT', |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT', |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_SHADER_READ_BIT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV', |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV', |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV', |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT', |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT', |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT', |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT', |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_SHADER_WRITE_BIT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV', |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV', |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV', |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT', |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT', |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT', |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT', |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_INPUT_ATTACHMENT_READ_BIT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_COLOR_ATTACHMENT_READ_BIT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_COLOR_ATTACHMENT_WRITE_BIT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT', or |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT', or |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_TRANSFER_READ_BIT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_TRANSFER_WRITE_BIT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_HOST_READ_BIT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_HOST_WRITE_BIT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_MEMORY_READ_BIT' | Any |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_MEMORY_WRITE_BIT' | Any |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_COMMAND_PROCESS_READ_BIT_NVX' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV', or |+-- | | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++-- | 'ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT' | 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT' |+-- +----------------------------------------------------+---------------------------------------------------------------------------------------------------------++--+-- Supported access types+--+-- If a memory object does not have the+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'+-- property, then 'Graphics.Vulkan.Core10.Memory.flushMappedMemoryRanges'+-- /must/ be called in order to guarantee that writes to the memory object+-- from the host are made available to the host domain, where they /can/ be+-- further made available to the device domain via a domain operation.+-- Similarly, 'Graphics.Vulkan.Core10.Memory.invalidateMappedMemoryRanges'+-- /must/ be called to guarantee that writes which are available to the+-- host domain are made visible to host operations.+--+-- If the memory object does have the+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'+-- property flag, writes to the memory object from the host are+-- automatically made available to the host domain. Similarly, writes made+-- available to the host domain are automatically made visible to the host.+--+-- Note+--+-- The 'Graphics.Vulkan.Core10.Queue.queueSubmit' command+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-host-writes automatically performs a domain operation from host to device>+-- for all writes performed before the command executes, so in most cases+-- an explicit memory barrier is not needed for this case. In the few+-- circumstances where a submit does not occur between the host write and+-- the device read access, writes /can/ be made available by using an+-- explicit memory barrier.+--+-- = See Also+--+-- 'AccessFlags'+newtype AccessFlagBits = AccessFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'ACCESS_INDIRECT_COMMAND_READ_BIT' specifies read access to indirect+-- command data read as part of an indirect drawing or dispatch command.+pattern ACCESS_INDIRECT_COMMAND_READ_BIT = AccessFlagBits 0x00000001+-- | 'ACCESS_INDEX_READ_BIT' specifies read access to an index buffer as part+-- of an indexed drawing command, bound by+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'.+pattern ACCESS_INDEX_READ_BIT = AccessFlagBits 0x00000002+-- | 'ACCESS_VERTEX_ATTRIBUTE_READ_BIT' specifies read access to a vertex+-- buffer as part of a drawing command, bound by+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers'.+pattern ACCESS_VERTEX_ATTRIBUTE_READ_BIT = AccessFlagBits 0x00000004+-- | 'ACCESS_UNIFORM_READ_BIT' specifies read access to a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbuffer uniform buffer>.+pattern ACCESS_UNIFORM_READ_BIT = AccessFlagBits 0x00000008+-- | 'ACCESS_INPUT_ATTACHMENT_READ_BIT' specifies read access to an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass input attachment>+-- within a render pass during fragment shading.+pattern ACCESS_INPUT_ATTACHMENT_READ_BIT = AccessFlagBits 0x00000010+-- | 'ACCESS_SHADER_READ_BIT' specifies read access to a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer>,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-physical-storage-buffer physical storage buffer>,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer uniform texel buffer>,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffer>,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled image>,+-- or+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image>.+pattern ACCESS_SHADER_READ_BIT = AccessFlagBits 0x00000020+-- | 'ACCESS_SHADER_WRITE_BIT' specifies write access to a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer>,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-physical-storage-buffer physical storage buffer>,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffer>,+-- or+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image>.+pattern ACCESS_SHADER_WRITE_BIT = AccessFlagBits 0x00000040+-- | 'ACCESS_COLOR_ATTACHMENT_READ_BIT' specifies read access to a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass color attachment>,+-- such as via+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-logicop logic operations>,+-- or via certain+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load operations>.+-- It does not include+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>.+pattern ACCESS_COLOR_ATTACHMENT_READ_BIT = AccessFlagBits 0x00000080+-- | 'ACCESS_COLOR_ATTACHMENT_WRITE_BIT' specifies write access to a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass color, resolve, or depth\/stencil resolve attachment>+-- during a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass render pass>+-- or via certain+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load and store operations>.+pattern ACCESS_COLOR_ATTACHMENT_WRITE_BIT = AccessFlagBits 0x00000100+-- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT' specifies read access to a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass depth\/stencil attachment>,+-- via+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-ds-state depth or stencil operations>+-- or via certain+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load operations>.+pattern ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = AccessFlagBits 0x00000200+-- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT' specifies write access to a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass depth\/stencil attachment>,+-- via+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-ds-state depth or stencil operations>+-- or via certain+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load and store operations>.+pattern ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = AccessFlagBits 0x00000400+-- | 'ACCESS_TRANSFER_READ_BIT' specifies read access to an image or buffer+-- in a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy>+-- operation.+pattern ACCESS_TRANSFER_READ_BIT = AccessFlagBits 0x00000800+-- | 'ACCESS_TRANSFER_WRITE_BIT' specifies write access to an image or buffer+-- in a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears clear>+-- or+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy>+-- operation.+pattern ACCESS_TRANSFER_WRITE_BIT = AccessFlagBits 0x00001000+-- | 'ACCESS_HOST_READ_BIT' specifies read access by a host operation.+-- Accesses of this type are not performed through a resource, but directly+-- on memory.+pattern ACCESS_HOST_READ_BIT = AccessFlagBits 0x00002000+-- | 'ACCESS_HOST_WRITE_BIT' specifies write access by a host operation.+-- Accesses of this type are not performed through a resource, but directly+-- on memory.+pattern ACCESS_HOST_WRITE_BIT = AccessFlagBits 0x00004000+-- | 'ACCESS_MEMORY_READ_BIT' specifies all read accesses. It is always valid+-- in any access mask, and is treated as equivalent to setting all @READ@+-- access flags that are valid where it is used.+pattern ACCESS_MEMORY_READ_BIT = AccessFlagBits 0x00008000+-- | 'ACCESS_MEMORY_WRITE_BIT' specifies all write accesses. It is always+-- valid in any access mask, and is treated as equivalent to setting all+-- @WRITE@ access flags that are valid where it is used.+pattern ACCESS_MEMORY_WRITE_BIT = AccessFlagBits 0x00010000+-- | 'ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT' specifies read access to a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>+-- during dynamic+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops fragment density map operations>+pattern ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = AccessFlagBits 0x01000000+-- | 'ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV' specifies write access to+-- an acceleration structure as part of a build command.+pattern ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = AccessFlagBits 0x00400000+-- | 'ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV' specifies read access to an+-- acceleration structure as part of a trace or build command.+pattern ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = AccessFlagBits 0x00200000+-- | 'ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV' specifies read access to a+-- shading rate image as part of a drawing command, as bound by+-- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.cmdBindShadingRateImageNV'.+pattern ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = AccessFlagBits 0x00800000+-- | 'ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT' is similar to+-- 'ACCESS_COLOR_ATTACHMENT_READ_BIT', but also includes+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>.+pattern ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = AccessFlagBits 0x00080000+-- | 'ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX' specifies writes to the target+-- command buffer in+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.cmdProcessCommandsNVX'.+pattern ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = AccessFlagBits 0x00040000+-- | 'ACCESS_COMMAND_PROCESS_READ_BIT_NVX' specifies reads from+-- 'Graphics.Vulkan.Core10.Handles.Buffer' inputs to+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.cmdProcessCommandsNVX'.+pattern ACCESS_COMMAND_PROCESS_READ_BIT_NVX = AccessFlagBits 0x00020000+-- | 'ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT' specifies read access to a+-- predicate as part of conditional rendering.+pattern ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = AccessFlagBits 0x00100000+-- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT' specifies write access+-- to a transform feedback counter buffer which is written when+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT'+-- executes.+pattern ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = AccessFlagBits 0x08000000+-- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT' specifies read access+-- to a transform feedback counter buffer which is read when+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT'+-- executes.+pattern ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = AccessFlagBits 0x04000000+-- | 'ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT' specifies write access to a+-- transform feedback buffer made when transform feedback is active.+pattern ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = AccessFlagBits 0x02000000++type AccessFlags = AccessFlagBits++instance Show AccessFlagBits where+ showsPrec p = \case+ ACCESS_INDIRECT_COMMAND_READ_BIT -> showString "ACCESS_INDIRECT_COMMAND_READ_BIT"+ ACCESS_INDEX_READ_BIT -> showString "ACCESS_INDEX_READ_BIT"+ ACCESS_VERTEX_ATTRIBUTE_READ_BIT -> showString "ACCESS_VERTEX_ATTRIBUTE_READ_BIT"+ ACCESS_UNIFORM_READ_BIT -> showString "ACCESS_UNIFORM_READ_BIT"+ ACCESS_INPUT_ATTACHMENT_READ_BIT -> showString "ACCESS_INPUT_ATTACHMENT_READ_BIT"+ ACCESS_SHADER_READ_BIT -> showString "ACCESS_SHADER_READ_BIT"+ ACCESS_SHADER_WRITE_BIT -> showString "ACCESS_SHADER_WRITE_BIT"+ ACCESS_COLOR_ATTACHMENT_READ_BIT -> showString "ACCESS_COLOR_ATTACHMENT_READ_BIT"+ ACCESS_COLOR_ATTACHMENT_WRITE_BIT -> showString "ACCESS_COLOR_ATTACHMENT_WRITE_BIT"+ ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT -> showString "ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"+ ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT -> showString "ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"+ ACCESS_TRANSFER_READ_BIT -> showString "ACCESS_TRANSFER_READ_BIT"+ ACCESS_TRANSFER_WRITE_BIT -> showString "ACCESS_TRANSFER_WRITE_BIT"+ ACCESS_HOST_READ_BIT -> showString "ACCESS_HOST_READ_BIT"+ ACCESS_HOST_WRITE_BIT -> showString "ACCESS_HOST_WRITE_BIT"+ ACCESS_MEMORY_READ_BIT -> showString "ACCESS_MEMORY_READ_BIT"+ ACCESS_MEMORY_WRITE_BIT -> showString "ACCESS_MEMORY_WRITE_BIT"+ ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT -> showString "ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT"+ ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV -> showString "ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV"+ ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV -> showString "ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV"+ ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV -> showString "ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV"+ ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT -> showString "ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"+ ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX -> showString "ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX"+ ACCESS_COMMAND_PROCESS_READ_BIT_NVX -> showString "ACCESS_COMMAND_PROCESS_READ_BIT_NVX"+ ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT -> showString "ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT"+ ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT -> showString "ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"+ ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT -> showString "ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"+ ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT -> showString "ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT"+ AccessFlagBits x -> showParen (p >= 11) (showString "AccessFlagBits 0x" . showHex x)++instance Read AccessFlagBits where+ readPrec = parens (choose [("ACCESS_INDIRECT_COMMAND_READ_BIT", pure ACCESS_INDIRECT_COMMAND_READ_BIT)+ , ("ACCESS_INDEX_READ_BIT", pure ACCESS_INDEX_READ_BIT)+ , ("ACCESS_VERTEX_ATTRIBUTE_READ_BIT", pure ACCESS_VERTEX_ATTRIBUTE_READ_BIT)+ , ("ACCESS_UNIFORM_READ_BIT", pure ACCESS_UNIFORM_READ_BIT)+ , ("ACCESS_INPUT_ATTACHMENT_READ_BIT", pure ACCESS_INPUT_ATTACHMENT_READ_BIT)+ , ("ACCESS_SHADER_READ_BIT", pure ACCESS_SHADER_READ_BIT)+ , ("ACCESS_SHADER_WRITE_BIT", pure ACCESS_SHADER_WRITE_BIT)+ , ("ACCESS_COLOR_ATTACHMENT_READ_BIT", pure ACCESS_COLOR_ATTACHMENT_READ_BIT)+ , ("ACCESS_COLOR_ATTACHMENT_WRITE_BIT", pure ACCESS_COLOR_ATTACHMENT_WRITE_BIT)+ , ("ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT", pure ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT)+ , ("ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT", pure ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT)+ , ("ACCESS_TRANSFER_READ_BIT", pure ACCESS_TRANSFER_READ_BIT)+ , ("ACCESS_TRANSFER_WRITE_BIT", pure ACCESS_TRANSFER_WRITE_BIT)+ , ("ACCESS_HOST_READ_BIT", pure ACCESS_HOST_READ_BIT)+ , ("ACCESS_HOST_WRITE_BIT", pure ACCESS_HOST_WRITE_BIT)+ , ("ACCESS_MEMORY_READ_BIT", pure ACCESS_MEMORY_READ_BIT)+ , ("ACCESS_MEMORY_WRITE_BIT", pure ACCESS_MEMORY_WRITE_BIT)+ , ("ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT", pure ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT)+ , ("ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV", pure ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV)+ , ("ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV", pure ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV)+ , ("ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV", pure ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV)+ , ("ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT", pure ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT)+ , ("ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX", pure ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX)+ , ("ACCESS_COMMAND_PROCESS_READ_BIT_NVX", pure ACCESS_COMMAND_PROCESS_READ_BIT_NVX)+ , ("ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT", pure ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT)+ , ("ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT", pure ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT)+ , ("ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT", pure ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT)+ , ("ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT", pure ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT)]+ ++++ prec 10 (do+ expectP (Ident "AccessFlagBits")+ v <- step readPrec+ pure (AccessFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/AttachmentDescriptionFlagBits.hs view
@@ -0,0 +1,50 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.AttachmentDescriptionFlagBits ( AttachmentDescriptionFlagBits( ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT+ , ..+ )+ , AttachmentDescriptionFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkAttachmentDescriptionFlagBits - Bitmask specifying additional+-- properties of an attachment+--+-- = See Also+--+-- 'AttachmentDescriptionFlags'+newtype AttachmentDescriptionFlagBits = AttachmentDescriptionFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT' specifies that the attachment+-- aliases the same device memory as other attachments.+pattern ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = AttachmentDescriptionFlagBits 0x00000001++type AttachmentDescriptionFlags = AttachmentDescriptionFlagBits++instance Show AttachmentDescriptionFlagBits where+ showsPrec p = \case+ ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT -> showString "ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"+ AttachmentDescriptionFlagBits x -> showParen (p >= 11) (showString "AttachmentDescriptionFlagBits 0x" . showHex x)++instance Read AttachmentDescriptionFlagBits where+ readPrec = parens (choose [("ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT", pure ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT)]+ ++++ prec 10 (do+ expectP (Ident "AttachmentDescriptionFlagBits")+ v <- step readPrec+ pure (AttachmentDescriptionFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/AttachmentLoadOp.hs view
@@ -0,0 +1,75 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.AttachmentLoadOp (AttachmentLoadOp( ATTACHMENT_LOAD_OP_LOAD+ , ATTACHMENT_LOAD_OP_CLEAR+ , ATTACHMENT_LOAD_OP_DONT_CARE+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkAttachmentLoadOp - Specify how contents of an attachment are treated+-- at the beginning of a subpass+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2'+newtype AttachmentLoadOp = AttachmentLoadOp Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'ATTACHMENT_LOAD_OP_LOAD' specifies that the previous contents of the+-- image within the render area will be preserved. For attachments with a+-- depth\/stencil format, this uses the access type+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT'.+-- For attachments with a color format, this uses the access type+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_READ_BIT'.+pattern ATTACHMENT_LOAD_OP_LOAD = AttachmentLoadOp 0+-- | 'ATTACHMENT_LOAD_OP_CLEAR' specifies that the contents within the render+-- area will be cleared to a uniform value, which is specified when a+-- render pass instance is begun. For attachments with a depth\/stencil+-- format, this uses the access type+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'.+-- For attachments with a color format, this uses the access type+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.+pattern ATTACHMENT_LOAD_OP_CLEAR = AttachmentLoadOp 1+-- | 'ATTACHMENT_LOAD_OP_DONT_CARE' specifies that the previous contents+-- within the area need not be preserved; the contents of the attachment+-- will be undefined inside the render area. For attachments with a+-- depth\/stencil format, this uses the access type+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'.+-- For attachments with a color format, this uses the access type+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.+pattern ATTACHMENT_LOAD_OP_DONT_CARE = AttachmentLoadOp 2+{-# complete ATTACHMENT_LOAD_OP_LOAD,+ ATTACHMENT_LOAD_OP_CLEAR,+ ATTACHMENT_LOAD_OP_DONT_CARE :: AttachmentLoadOp #-}++instance Show AttachmentLoadOp where+ showsPrec p = \case+ ATTACHMENT_LOAD_OP_LOAD -> showString "ATTACHMENT_LOAD_OP_LOAD"+ ATTACHMENT_LOAD_OP_CLEAR -> showString "ATTACHMENT_LOAD_OP_CLEAR"+ ATTACHMENT_LOAD_OP_DONT_CARE -> showString "ATTACHMENT_LOAD_OP_DONT_CARE"+ AttachmentLoadOp x -> showParen (p >= 11) (showString "AttachmentLoadOp " . showsPrec 11 x)++instance Read AttachmentLoadOp where+ readPrec = parens (choose [("ATTACHMENT_LOAD_OP_LOAD", pure ATTACHMENT_LOAD_OP_LOAD)+ , ("ATTACHMENT_LOAD_OP_CLEAR", pure ATTACHMENT_LOAD_OP_CLEAR)+ , ("ATTACHMENT_LOAD_OP_DONT_CARE", pure ATTACHMENT_LOAD_OP_DONT_CARE)]+ ++++ prec 10 (do+ expectP (Ident "AttachmentLoadOp")+ v <- step readPrec+ pure (AttachmentLoadOp v)))+
+ src/Graphics/Vulkan/Core10/Enums/AttachmentStoreOp.hs view
@@ -0,0 +1,71 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp( ATTACHMENT_STORE_OP_STORE+ , ATTACHMENT_STORE_OP_DONT_CARE+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkAttachmentStoreOp - Specify how contents of an attachment are treated+-- at the end of a subpass+--+-- = Description+--+-- Note+--+-- 'ATTACHMENT_STORE_OP_DONT_CARE' /can/ cause contents generated during+-- previous render passes to be discarded before reaching memory, even if+-- no write to the attachment occurs during the current render pass.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2'+newtype AttachmentStoreOp = AttachmentStoreOp Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'ATTACHMENT_STORE_OP_STORE' specifies the contents generated during the+-- render pass and within the render area are written to memory. For+-- attachments with a depth\/stencil format, this uses the access type+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'.+-- For attachments with a color format, this uses the access type+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.+pattern ATTACHMENT_STORE_OP_STORE = AttachmentStoreOp 0+-- | 'ATTACHMENT_STORE_OP_DONT_CARE' specifies the contents within the render+-- area are not needed after rendering, and /may/ be discarded; the+-- contents of the attachment will be undefined inside the render area. For+-- attachments with a depth\/stencil format, this uses the access type+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'.+-- For attachments with a color format, this uses the access type+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.+pattern ATTACHMENT_STORE_OP_DONT_CARE = AttachmentStoreOp 1+{-# complete ATTACHMENT_STORE_OP_STORE,+ ATTACHMENT_STORE_OP_DONT_CARE :: AttachmentStoreOp #-}++instance Show AttachmentStoreOp where+ showsPrec p = \case+ ATTACHMENT_STORE_OP_STORE -> showString "ATTACHMENT_STORE_OP_STORE"+ ATTACHMENT_STORE_OP_DONT_CARE -> showString "ATTACHMENT_STORE_OP_DONT_CARE"+ AttachmentStoreOp x -> showParen (p >= 11) (showString "AttachmentStoreOp " . showsPrec 11 x)++instance Read AttachmentStoreOp where+ readPrec = parens (choose [("ATTACHMENT_STORE_OP_STORE", pure ATTACHMENT_STORE_OP_STORE)+ , ("ATTACHMENT_STORE_OP_DONT_CARE", pure ATTACHMENT_STORE_OP_DONT_CARE)]+ ++++ prec 10 (do+ expectP (Ident "AttachmentStoreOp")+ v <- step readPrec+ pure (AttachmentStoreOp v)))+
+ src/Graphics/Vulkan/Core10/Enums/BlendFactor.hs view
@@ -0,0 +1,223 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.BlendFactor (BlendFactor( BLEND_FACTOR_ZERO+ , BLEND_FACTOR_ONE+ , BLEND_FACTOR_SRC_COLOR+ , BLEND_FACTOR_ONE_MINUS_SRC_COLOR+ , BLEND_FACTOR_DST_COLOR+ , BLEND_FACTOR_ONE_MINUS_DST_COLOR+ , BLEND_FACTOR_SRC_ALPHA+ , BLEND_FACTOR_ONE_MINUS_SRC_ALPHA+ , BLEND_FACTOR_DST_ALPHA+ , BLEND_FACTOR_ONE_MINUS_DST_ALPHA+ , BLEND_FACTOR_CONSTANT_COLOR+ , BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR+ , BLEND_FACTOR_CONSTANT_ALPHA+ , BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA+ , BLEND_FACTOR_SRC_ALPHA_SATURATE+ , BLEND_FACTOR_SRC1_COLOR+ , BLEND_FACTOR_ONE_MINUS_SRC1_COLOR+ , BLEND_FACTOR_SRC1_ALPHA+ , BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkBlendFactor - Framebuffer blending factors+--+-- = Description+--+-- The semantics of each enum value is described in the table below:+--+-- +-----------------------------------------+---------------------+--------++-- | 'BlendFactor' | RGB Blend Factors | Alpha |+-- | | (Sr,Sg,Sb) or | Blend |+-- | | (Dr,Dg,Db) | Factor |+-- | | | (Sa or |+-- | | | Da) |+-- +=========================================+=====================+========++-- | 'BLEND_FACTOR_ZERO' | (0,0,0) | 0 |+-- +-----------------------------------------+---------------------+--------++-- | 'BLEND_FACTOR_ONE' | (1,1,1) | 1 |+-- +-----------------------------------------+---------------------+--------++-- | 'BLEND_FACTOR_SRC_COLOR' | (Rs0,Gs0,Bs0) | As0 |+-- +-----------------------------------------+---------------------+--------++-- | 'BLEND_FACTOR_ONE_MINUS_SRC_COLOR' | (1-Rs0,1-Gs0,1-Bs0) | 1-As0 |+-- +-----------------------------------------+---------------------+--------++-- | 'BLEND_FACTOR_DST_COLOR' | (Rd,Gd,Bd) | Ad |+-- +-----------------------------------------+---------------------+--------++-- | 'BLEND_FACTOR_ONE_MINUS_DST_COLOR' | (1-Rd,1-Gd,1-Bd) | 1-Ad |+-- +-----------------------------------------+---------------------+--------++-- | 'BLEND_FACTOR_SRC_ALPHA' | (As0,As0,As0) | As0 |+-- +-----------------------------------------+---------------------+--------++-- | 'BLEND_FACTOR_ONE_MINUS_SRC_ALPHA' | (1-As0,1-As0,1-As0) | 1-As0 |+-- +-----------------------------------------+---------------------+--------++-- | 'BLEND_FACTOR_DST_ALPHA' | (Ad,Ad,Ad) | Ad |+-- +-----------------------------------------+---------------------+--------++-- | 'BLEND_FACTOR_ONE_MINUS_DST_ALPHA' | (1-Ad,1-Ad,1-Ad) | 1-Ad |+-- +-----------------------------------------+---------------------+--------++-- | 'BLEND_FACTOR_CONSTANT_COLOR' | (Rc,Gc,Bc) | Ac |+-- +-----------------------------------------+---------------------+--------++-- | 'BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR' | (1-Rc,1-Gc,1-Bc) | 1-Ac |+-- +-----------------------------------------+---------------------+--------++-- | 'BLEND_FACTOR_CONSTANT_ALPHA' | (Ac,Ac,Ac) | Ac |+-- +-----------------------------------------+---------------------+--------++-- | 'BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA' | (1-Ac,1-Ac,1-Ac) | 1-Ac |+-- +-----------------------------------------+---------------------+--------++-- | 'BLEND_FACTOR_SRC_ALPHA_SATURATE' | (f,f,f); f = | 1 |+-- | | min(As0,1-Ad) | |+-- +-----------------------------------------+---------------------+--------++-- | 'BLEND_FACTOR_SRC1_COLOR' | (Rs1,Gs1,Bs1) | As1 |+-- +-----------------------------------------+---------------------+--------++-- | 'BLEND_FACTOR_ONE_MINUS_SRC1_COLOR' | (1-Rs1,1-Gs1,1-Bs1) | 1-As1 |+-- +-----------------------------------------+---------------------+--------++-- | 'BLEND_FACTOR_SRC1_ALPHA' | (As1,As1,As1) | As1 |+-- +-----------------------------------------+---------------------+--------++-- | 'BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA' | (1-As1,1-As1,1-As1) | 1-As1 |+-- +-----------------------------------------+---------------------+--------++--+-- Blend Factors+--+-- In this table, the following conventions are used:+--+-- - Rs0,Gs0,Bs0 and As0 represent the first source color R, G, B, and A+-- components, respectively, for the fragment output location+-- corresponding to the color attachment being blended.+--+-- - Rs1,Gs1,Bs1 and As1 represent the second source color R, G, B, and A+-- components, respectively, used in dual source blending modes, for+-- the fragment output location corresponding to the color attachment+-- being blended.+--+-- - Rd,Gd,Bd and Ad represent the R, G, B, and A components of the+-- destination color. That is, the color currently in the corresponding+-- color attachment for this fragment\/sample.+--+-- - Rc,Gc,Bc and Ac represent the blend constant R, G, B, and A+-- components, respectively.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'+newtype BlendFactor = BlendFactor Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ZERO"+pattern BLEND_FACTOR_ZERO = BlendFactor 0+-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE"+pattern BLEND_FACTOR_ONE = BlendFactor 1+-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC_COLOR"+pattern BLEND_FACTOR_SRC_COLOR = BlendFactor 2+-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR"+pattern BLEND_FACTOR_ONE_MINUS_SRC_COLOR = BlendFactor 3+-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_DST_COLOR"+pattern BLEND_FACTOR_DST_COLOR = BlendFactor 4+-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR"+pattern BLEND_FACTOR_ONE_MINUS_DST_COLOR = BlendFactor 5+-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC_ALPHA"+pattern BLEND_FACTOR_SRC_ALPHA = BlendFactor 6+-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"+pattern BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = BlendFactor 7+-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_DST_ALPHA"+pattern BLEND_FACTOR_DST_ALPHA = BlendFactor 8+-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA"+pattern BLEND_FACTOR_ONE_MINUS_DST_ALPHA = BlendFactor 9+-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_CONSTANT_COLOR"+pattern BLEND_FACTOR_CONSTANT_COLOR = BlendFactor 10+-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR"+pattern BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = BlendFactor 11+-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_CONSTANT_ALPHA"+pattern BLEND_FACTOR_CONSTANT_ALPHA = BlendFactor 12+-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA"+pattern BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = BlendFactor 13+-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE"+pattern BLEND_FACTOR_SRC_ALPHA_SATURATE = BlendFactor 14+-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC1_COLOR"+pattern BLEND_FACTOR_SRC1_COLOR = BlendFactor 15+-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"+pattern BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = BlendFactor 16+-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC1_ALPHA"+pattern BLEND_FACTOR_SRC1_ALPHA = BlendFactor 17+-- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"+pattern BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = BlendFactor 18+{-# complete BLEND_FACTOR_ZERO,+ BLEND_FACTOR_ONE,+ BLEND_FACTOR_SRC_COLOR,+ BLEND_FACTOR_ONE_MINUS_SRC_COLOR,+ BLEND_FACTOR_DST_COLOR,+ BLEND_FACTOR_ONE_MINUS_DST_COLOR,+ BLEND_FACTOR_SRC_ALPHA,+ BLEND_FACTOR_ONE_MINUS_SRC_ALPHA,+ BLEND_FACTOR_DST_ALPHA,+ BLEND_FACTOR_ONE_MINUS_DST_ALPHA,+ BLEND_FACTOR_CONSTANT_COLOR,+ BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR,+ BLEND_FACTOR_CONSTANT_ALPHA,+ BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,+ BLEND_FACTOR_SRC_ALPHA_SATURATE,+ BLEND_FACTOR_SRC1_COLOR,+ BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,+ BLEND_FACTOR_SRC1_ALPHA,+ BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA :: BlendFactor #-}++instance Show BlendFactor where+ showsPrec p = \case+ BLEND_FACTOR_ZERO -> showString "BLEND_FACTOR_ZERO"+ BLEND_FACTOR_ONE -> showString "BLEND_FACTOR_ONE"+ BLEND_FACTOR_SRC_COLOR -> showString "BLEND_FACTOR_SRC_COLOR"+ BLEND_FACTOR_ONE_MINUS_SRC_COLOR -> showString "BLEND_FACTOR_ONE_MINUS_SRC_COLOR"+ BLEND_FACTOR_DST_COLOR -> showString "BLEND_FACTOR_DST_COLOR"+ BLEND_FACTOR_ONE_MINUS_DST_COLOR -> showString "BLEND_FACTOR_ONE_MINUS_DST_COLOR"+ BLEND_FACTOR_SRC_ALPHA -> showString "BLEND_FACTOR_SRC_ALPHA"+ BLEND_FACTOR_ONE_MINUS_SRC_ALPHA -> showString "BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"+ BLEND_FACTOR_DST_ALPHA -> showString "BLEND_FACTOR_DST_ALPHA"+ BLEND_FACTOR_ONE_MINUS_DST_ALPHA -> showString "BLEND_FACTOR_ONE_MINUS_DST_ALPHA"+ BLEND_FACTOR_CONSTANT_COLOR -> showString "BLEND_FACTOR_CONSTANT_COLOR"+ BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR -> showString "BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR"+ BLEND_FACTOR_CONSTANT_ALPHA -> showString "BLEND_FACTOR_CONSTANT_ALPHA"+ BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA -> showString "BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA"+ BLEND_FACTOR_SRC_ALPHA_SATURATE -> showString "BLEND_FACTOR_SRC_ALPHA_SATURATE"+ BLEND_FACTOR_SRC1_COLOR -> showString "BLEND_FACTOR_SRC1_COLOR"+ BLEND_FACTOR_ONE_MINUS_SRC1_COLOR -> showString "BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"+ BLEND_FACTOR_SRC1_ALPHA -> showString "BLEND_FACTOR_SRC1_ALPHA"+ BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA -> showString "BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"+ BlendFactor x -> showParen (p >= 11) (showString "BlendFactor " . showsPrec 11 x)++instance Read BlendFactor where+ readPrec = parens (choose [("BLEND_FACTOR_ZERO", pure BLEND_FACTOR_ZERO)+ , ("BLEND_FACTOR_ONE", pure BLEND_FACTOR_ONE)+ , ("BLEND_FACTOR_SRC_COLOR", pure BLEND_FACTOR_SRC_COLOR)+ , ("BLEND_FACTOR_ONE_MINUS_SRC_COLOR", pure BLEND_FACTOR_ONE_MINUS_SRC_COLOR)+ , ("BLEND_FACTOR_DST_COLOR", pure BLEND_FACTOR_DST_COLOR)+ , ("BLEND_FACTOR_ONE_MINUS_DST_COLOR", pure BLEND_FACTOR_ONE_MINUS_DST_COLOR)+ , ("BLEND_FACTOR_SRC_ALPHA", pure BLEND_FACTOR_SRC_ALPHA)+ , ("BLEND_FACTOR_ONE_MINUS_SRC_ALPHA", pure BLEND_FACTOR_ONE_MINUS_SRC_ALPHA)+ , ("BLEND_FACTOR_DST_ALPHA", pure BLEND_FACTOR_DST_ALPHA)+ , ("BLEND_FACTOR_ONE_MINUS_DST_ALPHA", pure BLEND_FACTOR_ONE_MINUS_DST_ALPHA)+ , ("BLEND_FACTOR_CONSTANT_COLOR", pure BLEND_FACTOR_CONSTANT_COLOR)+ , ("BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR", pure BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR)+ , ("BLEND_FACTOR_CONSTANT_ALPHA", pure BLEND_FACTOR_CONSTANT_ALPHA)+ , ("BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA", pure BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA)+ , ("BLEND_FACTOR_SRC_ALPHA_SATURATE", pure BLEND_FACTOR_SRC_ALPHA_SATURATE)+ , ("BLEND_FACTOR_SRC1_COLOR", pure BLEND_FACTOR_SRC1_COLOR)+ , ("BLEND_FACTOR_ONE_MINUS_SRC1_COLOR", pure BLEND_FACTOR_ONE_MINUS_SRC1_COLOR)+ , ("BLEND_FACTOR_SRC1_ALPHA", pure BLEND_FACTOR_SRC1_ALPHA)+ , ("BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA", pure BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA)]+ ++++ prec 10 (do+ expectP (Ident "BlendFactor")+ v <- step readPrec+ pure (BlendFactor v)))+
+ src/Graphics/Vulkan/Core10/Enums/BlendOp.hs view
@@ -0,0 +1,410 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.BlendOp (BlendOp( BLEND_OP_ADD+ , BLEND_OP_SUBTRACT+ , BLEND_OP_REVERSE_SUBTRACT+ , BLEND_OP_MIN+ , BLEND_OP_MAX+ , BLEND_OP_BLUE_EXT+ , BLEND_OP_GREEN_EXT+ , BLEND_OP_RED_EXT+ , BLEND_OP_INVERT_OVG_EXT+ , BLEND_OP_CONTRAST_EXT+ , BLEND_OP_MINUS_CLAMPED_EXT+ , BLEND_OP_MINUS_EXT+ , BLEND_OP_PLUS_DARKER_EXT+ , BLEND_OP_PLUS_CLAMPED_ALPHA_EXT+ , BLEND_OP_PLUS_CLAMPED_EXT+ , BLEND_OP_PLUS_EXT+ , BLEND_OP_HSL_LUMINOSITY_EXT+ , BLEND_OP_HSL_COLOR_EXT+ , BLEND_OP_HSL_SATURATION_EXT+ , BLEND_OP_HSL_HUE_EXT+ , BLEND_OP_HARDMIX_EXT+ , BLEND_OP_PINLIGHT_EXT+ , BLEND_OP_LINEARLIGHT_EXT+ , BLEND_OP_VIVIDLIGHT_EXT+ , BLEND_OP_LINEARBURN_EXT+ , BLEND_OP_LINEARDODGE_EXT+ , BLEND_OP_INVERT_RGB_EXT+ , BLEND_OP_INVERT_EXT+ , BLEND_OP_EXCLUSION_EXT+ , BLEND_OP_DIFFERENCE_EXT+ , BLEND_OP_SOFTLIGHT_EXT+ , BLEND_OP_HARDLIGHT_EXT+ , BLEND_OP_COLORBURN_EXT+ , BLEND_OP_COLORDODGE_EXT+ , BLEND_OP_LIGHTEN_EXT+ , BLEND_OP_DARKEN_EXT+ , BLEND_OP_OVERLAY_EXT+ , BLEND_OP_SCREEN_EXT+ , BLEND_OP_MULTIPLY_EXT+ , BLEND_OP_XOR_EXT+ , BLEND_OP_DST_ATOP_EXT+ , BLEND_OP_SRC_ATOP_EXT+ , BLEND_OP_DST_OUT_EXT+ , BLEND_OP_SRC_OUT_EXT+ , BLEND_OP_DST_IN_EXT+ , BLEND_OP_SRC_IN_EXT+ , BLEND_OP_DST_OVER_EXT+ , BLEND_OP_SRC_OVER_EXT+ , BLEND_OP_DST_EXT+ , BLEND_OP_SRC_EXT+ , BLEND_OP_ZERO_EXT+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkBlendOp - Framebuffer blending operations+--+-- = Description+--+-- The semantics of each basic blend operations is described in the table+-- below:+--+-- +-------------------------------+--------------------+-----------------++-- | 'BlendOp' | RGB Components | Alpha Component |+-- +===============================+====================+=================++-- | 'BLEND_OP_ADD' | R = Rs0 × Sr + Rd | A = As0 × Sa + |+-- | | × Dr | Ad × Da |+-- | | G = Gs0 × Sg + Gd | |+-- | | × Dg | |+-- | | B = Bs0 × Sb + Bd | |+-- | | × Db | |+-- +-------------------------------+--------------------+-----------------++-- | 'BLEND_OP_SUBTRACT' | R = Rs0 × Sr - Rd | A = As0 × Sa - |+-- | | × Dr | Ad × Da |+-- | | G = Gs0 × Sg - Gd | |+-- | | × Dg | |+-- | | B = Bs0 × Sb - Bd | |+-- | | × Db | |+-- +-------------------------------+--------------------+-----------------++-- | 'BLEND_OP_REVERSE_SUBTRACT' | R = Rd × Dr - Rs0 | A = Ad × Da - |+-- | | × Sr | As0 × Sa |+-- | | G = Gd × Dg - Gs0 | |+-- | | × Sg | |+-- | | B = Bd × Db - Bs0 | |+-- | | × Sb | |+-- +-------------------------------+--------------------+-----------------++-- | 'BLEND_OP_MIN' | R = min(Rs0,Rd) | A = min(As0,Ad) |+-- | | G = min(Gs0,Gd) | |+-- | | B = min(Bs0,Bd) | |+-- +-------------------------------+--------------------+-----------------++-- | 'BLEND_OP_MAX' | R = max(Rs0,Rd) | A = max(As0,Ad) |+-- | | G = max(Gs0,Gd) | |+-- | | B = max(Bs0,Bd) | |+-- +-------------------------------+--------------------+-----------------++--+-- Basic Blend Operations+--+-- In this table, the following conventions are used:+--+-- - Rs0, Gs0, Bs0 and As0 represent the first source color R, G, B, and+-- A components, respectively.+--+-- - Rd, Gd, Bd and Ad represent the R, G, B, and A components of the+-- destination color. That is, the color currently in the corresponding+-- color attachment for this fragment\/sample.+--+-- - Sr, Sg, Sb and Sa represent the source blend factor R, G, B, and A+-- components, respectively.+--+-- - Dr, Dg, Db and Da represent the destination blend factor R, G, B,+-- and A components, respectively.+--+-- The blending operation produces a new set of values R, G, B and A, which+-- are written to the framebuffer attachment. If blending is not enabled+-- for this attachment, then R, G, B and A are assigned Rs0, Gs0, Bs0 and+-- As0, respectively.+--+-- If the color attachment is fixed-point, the components of the source and+-- destination values and blend factors are each clamped to [0,1] or [-1,1]+-- respectively for an unsigned normalized or signed normalized color+-- attachment prior to evaluating the blend operations. If the color+-- attachment is floating-point, no clamping occurs.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'+newtype BlendOp = BlendOp Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_ADD"+pattern BLEND_OP_ADD = BlendOp 0+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SUBTRACT"+pattern BLEND_OP_SUBTRACT = BlendOp 1+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_REVERSE_SUBTRACT"+pattern BLEND_OP_REVERSE_SUBTRACT = BlendOp 2+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MIN"+pattern BLEND_OP_MIN = BlendOp 3+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MAX"+pattern BLEND_OP_MAX = BlendOp 4+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_BLUE_EXT"+pattern BLEND_OP_BLUE_EXT = BlendOp 1000148045+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_GREEN_EXT"+pattern BLEND_OP_GREEN_EXT = BlendOp 1000148044+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_RED_EXT"+pattern BLEND_OP_RED_EXT = BlendOp 1000148043+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_INVERT_OVG_EXT"+pattern BLEND_OP_INVERT_OVG_EXT = BlendOp 1000148042+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_CONTRAST_EXT"+pattern BLEND_OP_CONTRAST_EXT = BlendOp 1000148041+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MINUS_CLAMPED_EXT"+pattern BLEND_OP_MINUS_CLAMPED_EXT = BlendOp 1000148040+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MINUS_EXT"+pattern BLEND_OP_MINUS_EXT = BlendOp 1000148039+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_PLUS_DARKER_EXT"+pattern BLEND_OP_PLUS_DARKER_EXT = BlendOp 1000148038+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT"+pattern BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = BlendOp 1000148037+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_PLUS_CLAMPED_EXT"+pattern BLEND_OP_PLUS_CLAMPED_EXT = BlendOp 1000148036+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_PLUS_EXT"+pattern BLEND_OP_PLUS_EXT = BlendOp 1000148035+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HSL_LUMINOSITY_EXT"+pattern BLEND_OP_HSL_LUMINOSITY_EXT = BlendOp 1000148034+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HSL_COLOR_EXT"+pattern BLEND_OP_HSL_COLOR_EXT = BlendOp 1000148033+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HSL_SATURATION_EXT"+pattern BLEND_OP_HSL_SATURATION_EXT = BlendOp 1000148032+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HSL_HUE_EXT"+pattern BLEND_OP_HSL_HUE_EXT = BlendOp 1000148031+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HARDMIX_EXT"+pattern BLEND_OP_HARDMIX_EXT = BlendOp 1000148030+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_PINLIGHT_EXT"+pattern BLEND_OP_PINLIGHT_EXT = BlendOp 1000148029+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_LINEARLIGHT_EXT"+pattern BLEND_OP_LINEARLIGHT_EXT = BlendOp 1000148028+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_VIVIDLIGHT_EXT"+pattern BLEND_OP_VIVIDLIGHT_EXT = BlendOp 1000148027+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_LINEARBURN_EXT"+pattern BLEND_OP_LINEARBURN_EXT = BlendOp 1000148026+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_LINEARDODGE_EXT"+pattern BLEND_OP_LINEARDODGE_EXT = BlendOp 1000148025+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_INVERT_RGB_EXT"+pattern BLEND_OP_INVERT_RGB_EXT = BlendOp 1000148024+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_INVERT_EXT"+pattern BLEND_OP_INVERT_EXT = BlendOp 1000148023+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_EXCLUSION_EXT"+pattern BLEND_OP_EXCLUSION_EXT = BlendOp 1000148022+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DIFFERENCE_EXT"+pattern BLEND_OP_DIFFERENCE_EXT = BlendOp 1000148021+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SOFTLIGHT_EXT"+pattern BLEND_OP_SOFTLIGHT_EXT = BlendOp 1000148020+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HARDLIGHT_EXT"+pattern BLEND_OP_HARDLIGHT_EXT = BlendOp 1000148019+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_COLORBURN_EXT"+pattern BLEND_OP_COLORBURN_EXT = BlendOp 1000148018+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_COLORDODGE_EXT"+pattern BLEND_OP_COLORDODGE_EXT = BlendOp 1000148017+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_LIGHTEN_EXT"+pattern BLEND_OP_LIGHTEN_EXT = BlendOp 1000148016+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DARKEN_EXT"+pattern BLEND_OP_DARKEN_EXT = BlendOp 1000148015+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_OVERLAY_EXT"+pattern BLEND_OP_OVERLAY_EXT = BlendOp 1000148014+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SCREEN_EXT"+pattern BLEND_OP_SCREEN_EXT = BlendOp 1000148013+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MULTIPLY_EXT"+pattern BLEND_OP_MULTIPLY_EXT = BlendOp 1000148012+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_XOR_EXT"+pattern BLEND_OP_XOR_EXT = BlendOp 1000148011+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DST_ATOP_EXT"+pattern BLEND_OP_DST_ATOP_EXT = BlendOp 1000148010+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SRC_ATOP_EXT"+pattern BLEND_OP_SRC_ATOP_EXT = BlendOp 1000148009+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DST_OUT_EXT"+pattern BLEND_OP_DST_OUT_EXT = BlendOp 1000148008+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SRC_OUT_EXT"+pattern BLEND_OP_SRC_OUT_EXT = BlendOp 1000148007+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DST_IN_EXT"+pattern BLEND_OP_DST_IN_EXT = BlendOp 1000148006+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SRC_IN_EXT"+pattern BLEND_OP_SRC_IN_EXT = BlendOp 1000148005+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DST_OVER_EXT"+pattern BLEND_OP_DST_OVER_EXT = BlendOp 1000148004+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SRC_OVER_EXT"+pattern BLEND_OP_SRC_OVER_EXT = BlendOp 1000148003+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DST_EXT"+pattern BLEND_OP_DST_EXT = BlendOp 1000148002+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SRC_EXT"+pattern BLEND_OP_SRC_EXT = BlendOp 1000148001+-- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_ZERO_EXT"+pattern BLEND_OP_ZERO_EXT = BlendOp 1000148000+{-# complete BLEND_OP_ADD,+ BLEND_OP_SUBTRACT,+ BLEND_OP_REVERSE_SUBTRACT,+ BLEND_OP_MIN,+ BLEND_OP_MAX,+ BLEND_OP_BLUE_EXT,+ BLEND_OP_GREEN_EXT,+ BLEND_OP_RED_EXT,+ BLEND_OP_INVERT_OVG_EXT,+ BLEND_OP_CONTRAST_EXT,+ BLEND_OP_MINUS_CLAMPED_EXT,+ BLEND_OP_MINUS_EXT,+ BLEND_OP_PLUS_DARKER_EXT,+ BLEND_OP_PLUS_CLAMPED_ALPHA_EXT,+ BLEND_OP_PLUS_CLAMPED_EXT,+ BLEND_OP_PLUS_EXT,+ BLEND_OP_HSL_LUMINOSITY_EXT,+ BLEND_OP_HSL_COLOR_EXT,+ BLEND_OP_HSL_SATURATION_EXT,+ BLEND_OP_HSL_HUE_EXT,+ BLEND_OP_HARDMIX_EXT,+ BLEND_OP_PINLIGHT_EXT,+ BLEND_OP_LINEARLIGHT_EXT,+ BLEND_OP_VIVIDLIGHT_EXT,+ BLEND_OP_LINEARBURN_EXT,+ BLEND_OP_LINEARDODGE_EXT,+ BLEND_OP_INVERT_RGB_EXT,+ BLEND_OP_INVERT_EXT,+ BLEND_OP_EXCLUSION_EXT,+ BLEND_OP_DIFFERENCE_EXT,+ BLEND_OP_SOFTLIGHT_EXT,+ BLEND_OP_HARDLIGHT_EXT,+ BLEND_OP_COLORBURN_EXT,+ BLEND_OP_COLORDODGE_EXT,+ BLEND_OP_LIGHTEN_EXT,+ BLEND_OP_DARKEN_EXT,+ BLEND_OP_OVERLAY_EXT,+ BLEND_OP_SCREEN_EXT,+ BLEND_OP_MULTIPLY_EXT,+ BLEND_OP_XOR_EXT,+ BLEND_OP_DST_ATOP_EXT,+ BLEND_OP_SRC_ATOP_EXT,+ BLEND_OP_DST_OUT_EXT,+ BLEND_OP_SRC_OUT_EXT,+ BLEND_OP_DST_IN_EXT,+ BLEND_OP_SRC_IN_EXT,+ BLEND_OP_DST_OVER_EXT,+ BLEND_OP_SRC_OVER_EXT,+ BLEND_OP_DST_EXT,+ BLEND_OP_SRC_EXT,+ BLEND_OP_ZERO_EXT :: BlendOp #-}++instance Show BlendOp where+ showsPrec p = \case+ BLEND_OP_ADD -> showString "BLEND_OP_ADD"+ BLEND_OP_SUBTRACT -> showString "BLEND_OP_SUBTRACT"+ BLEND_OP_REVERSE_SUBTRACT -> showString "BLEND_OP_REVERSE_SUBTRACT"+ BLEND_OP_MIN -> showString "BLEND_OP_MIN"+ BLEND_OP_MAX -> showString "BLEND_OP_MAX"+ BLEND_OP_BLUE_EXT -> showString "BLEND_OP_BLUE_EXT"+ BLEND_OP_GREEN_EXT -> showString "BLEND_OP_GREEN_EXT"+ BLEND_OP_RED_EXT -> showString "BLEND_OP_RED_EXT"+ BLEND_OP_INVERT_OVG_EXT -> showString "BLEND_OP_INVERT_OVG_EXT"+ BLEND_OP_CONTRAST_EXT -> showString "BLEND_OP_CONTRAST_EXT"+ BLEND_OP_MINUS_CLAMPED_EXT -> showString "BLEND_OP_MINUS_CLAMPED_EXT"+ BLEND_OP_MINUS_EXT -> showString "BLEND_OP_MINUS_EXT"+ BLEND_OP_PLUS_DARKER_EXT -> showString "BLEND_OP_PLUS_DARKER_EXT"+ BLEND_OP_PLUS_CLAMPED_ALPHA_EXT -> showString "BLEND_OP_PLUS_CLAMPED_ALPHA_EXT"+ BLEND_OP_PLUS_CLAMPED_EXT -> showString "BLEND_OP_PLUS_CLAMPED_EXT"+ BLEND_OP_PLUS_EXT -> showString "BLEND_OP_PLUS_EXT"+ BLEND_OP_HSL_LUMINOSITY_EXT -> showString "BLEND_OP_HSL_LUMINOSITY_EXT"+ BLEND_OP_HSL_COLOR_EXT -> showString "BLEND_OP_HSL_COLOR_EXT"+ BLEND_OP_HSL_SATURATION_EXT -> showString "BLEND_OP_HSL_SATURATION_EXT"+ BLEND_OP_HSL_HUE_EXT -> showString "BLEND_OP_HSL_HUE_EXT"+ BLEND_OP_HARDMIX_EXT -> showString "BLEND_OP_HARDMIX_EXT"+ BLEND_OP_PINLIGHT_EXT -> showString "BLEND_OP_PINLIGHT_EXT"+ BLEND_OP_LINEARLIGHT_EXT -> showString "BLEND_OP_LINEARLIGHT_EXT"+ BLEND_OP_VIVIDLIGHT_EXT -> showString "BLEND_OP_VIVIDLIGHT_EXT"+ BLEND_OP_LINEARBURN_EXT -> showString "BLEND_OP_LINEARBURN_EXT"+ BLEND_OP_LINEARDODGE_EXT -> showString "BLEND_OP_LINEARDODGE_EXT"+ BLEND_OP_INVERT_RGB_EXT -> showString "BLEND_OP_INVERT_RGB_EXT"+ BLEND_OP_INVERT_EXT -> showString "BLEND_OP_INVERT_EXT"+ BLEND_OP_EXCLUSION_EXT -> showString "BLEND_OP_EXCLUSION_EXT"+ BLEND_OP_DIFFERENCE_EXT -> showString "BLEND_OP_DIFFERENCE_EXT"+ BLEND_OP_SOFTLIGHT_EXT -> showString "BLEND_OP_SOFTLIGHT_EXT"+ BLEND_OP_HARDLIGHT_EXT -> showString "BLEND_OP_HARDLIGHT_EXT"+ BLEND_OP_COLORBURN_EXT -> showString "BLEND_OP_COLORBURN_EXT"+ BLEND_OP_COLORDODGE_EXT -> showString "BLEND_OP_COLORDODGE_EXT"+ BLEND_OP_LIGHTEN_EXT -> showString "BLEND_OP_LIGHTEN_EXT"+ BLEND_OP_DARKEN_EXT -> showString "BLEND_OP_DARKEN_EXT"+ BLEND_OP_OVERLAY_EXT -> showString "BLEND_OP_OVERLAY_EXT"+ BLEND_OP_SCREEN_EXT -> showString "BLEND_OP_SCREEN_EXT"+ BLEND_OP_MULTIPLY_EXT -> showString "BLEND_OP_MULTIPLY_EXT"+ BLEND_OP_XOR_EXT -> showString "BLEND_OP_XOR_EXT"+ BLEND_OP_DST_ATOP_EXT -> showString "BLEND_OP_DST_ATOP_EXT"+ BLEND_OP_SRC_ATOP_EXT -> showString "BLEND_OP_SRC_ATOP_EXT"+ BLEND_OP_DST_OUT_EXT -> showString "BLEND_OP_DST_OUT_EXT"+ BLEND_OP_SRC_OUT_EXT -> showString "BLEND_OP_SRC_OUT_EXT"+ BLEND_OP_DST_IN_EXT -> showString "BLEND_OP_DST_IN_EXT"+ BLEND_OP_SRC_IN_EXT -> showString "BLEND_OP_SRC_IN_EXT"+ BLEND_OP_DST_OVER_EXT -> showString "BLEND_OP_DST_OVER_EXT"+ BLEND_OP_SRC_OVER_EXT -> showString "BLEND_OP_SRC_OVER_EXT"+ BLEND_OP_DST_EXT -> showString "BLEND_OP_DST_EXT"+ BLEND_OP_SRC_EXT -> showString "BLEND_OP_SRC_EXT"+ BLEND_OP_ZERO_EXT -> showString "BLEND_OP_ZERO_EXT"+ BlendOp x -> showParen (p >= 11) (showString "BlendOp " . showsPrec 11 x)++instance Read BlendOp where+ readPrec = parens (choose [("BLEND_OP_ADD", pure BLEND_OP_ADD)+ , ("BLEND_OP_SUBTRACT", pure BLEND_OP_SUBTRACT)+ , ("BLEND_OP_REVERSE_SUBTRACT", pure BLEND_OP_REVERSE_SUBTRACT)+ , ("BLEND_OP_MIN", pure BLEND_OP_MIN)+ , ("BLEND_OP_MAX", pure BLEND_OP_MAX)+ , ("BLEND_OP_BLUE_EXT", pure BLEND_OP_BLUE_EXT)+ , ("BLEND_OP_GREEN_EXT", pure BLEND_OP_GREEN_EXT)+ , ("BLEND_OP_RED_EXT", pure BLEND_OP_RED_EXT)+ , ("BLEND_OP_INVERT_OVG_EXT", pure BLEND_OP_INVERT_OVG_EXT)+ , ("BLEND_OP_CONTRAST_EXT", pure BLEND_OP_CONTRAST_EXT)+ , ("BLEND_OP_MINUS_CLAMPED_EXT", pure BLEND_OP_MINUS_CLAMPED_EXT)+ , ("BLEND_OP_MINUS_EXT", pure BLEND_OP_MINUS_EXT)+ , ("BLEND_OP_PLUS_DARKER_EXT", pure BLEND_OP_PLUS_DARKER_EXT)+ , ("BLEND_OP_PLUS_CLAMPED_ALPHA_EXT", pure BLEND_OP_PLUS_CLAMPED_ALPHA_EXT)+ , ("BLEND_OP_PLUS_CLAMPED_EXT", pure BLEND_OP_PLUS_CLAMPED_EXT)+ , ("BLEND_OP_PLUS_EXT", pure BLEND_OP_PLUS_EXT)+ , ("BLEND_OP_HSL_LUMINOSITY_EXT", pure BLEND_OP_HSL_LUMINOSITY_EXT)+ , ("BLEND_OP_HSL_COLOR_EXT", pure BLEND_OP_HSL_COLOR_EXT)+ , ("BLEND_OP_HSL_SATURATION_EXT", pure BLEND_OP_HSL_SATURATION_EXT)+ , ("BLEND_OP_HSL_HUE_EXT", pure BLEND_OP_HSL_HUE_EXT)+ , ("BLEND_OP_HARDMIX_EXT", pure BLEND_OP_HARDMIX_EXT)+ , ("BLEND_OP_PINLIGHT_EXT", pure BLEND_OP_PINLIGHT_EXT)+ , ("BLEND_OP_LINEARLIGHT_EXT", pure BLEND_OP_LINEARLIGHT_EXT)+ , ("BLEND_OP_VIVIDLIGHT_EXT", pure BLEND_OP_VIVIDLIGHT_EXT)+ , ("BLEND_OP_LINEARBURN_EXT", pure BLEND_OP_LINEARBURN_EXT)+ , ("BLEND_OP_LINEARDODGE_EXT", pure BLEND_OP_LINEARDODGE_EXT)+ , ("BLEND_OP_INVERT_RGB_EXT", pure BLEND_OP_INVERT_RGB_EXT)+ , ("BLEND_OP_INVERT_EXT", pure BLEND_OP_INVERT_EXT)+ , ("BLEND_OP_EXCLUSION_EXT", pure BLEND_OP_EXCLUSION_EXT)+ , ("BLEND_OP_DIFFERENCE_EXT", pure BLEND_OP_DIFFERENCE_EXT)+ , ("BLEND_OP_SOFTLIGHT_EXT", pure BLEND_OP_SOFTLIGHT_EXT)+ , ("BLEND_OP_HARDLIGHT_EXT", pure BLEND_OP_HARDLIGHT_EXT)+ , ("BLEND_OP_COLORBURN_EXT", pure BLEND_OP_COLORBURN_EXT)+ , ("BLEND_OP_COLORDODGE_EXT", pure BLEND_OP_COLORDODGE_EXT)+ , ("BLEND_OP_LIGHTEN_EXT", pure BLEND_OP_LIGHTEN_EXT)+ , ("BLEND_OP_DARKEN_EXT", pure BLEND_OP_DARKEN_EXT)+ , ("BLEND_OP_OVERLAY_EXT", pure BLEND_OP_OVERLAY_EXT)+ , ("BLEND_OP_SCREEN_EXT", pure BLEND_OP_SCREEN_EXT)+ , ("BLEND_OP_MULTIPLY_EXT", pure BLEND_OP_MULTIPLY_EXT)+ , ("BLEND_OP_XOR_EXT", pure BLEND_OP_XOR_EXT)+ , ("BLEND_OP_DST_ATOP_EXT", pure BLEND_OP_DST_ATOP_EXT)+ , ("BLEND_OP_SRC_ATOP_EXT", pure BLEND_OP_SRC_ATOP_EXT)+ , ("BLEND_OP_DST_OUT_EXT", pure BLEND_OP_DST_OUT_EXT)+ , ("BLEND_OP_SRC_OUT_EXT", pure BLEND_OP_SRC_OUT_EXT)+ , ("BLEND_OP_DST_IN_EXT", pure BLEND_OP_DST_IN_EXT)+ , ("BLEND_OP_SRC_IN_EXT", pure BLEND_OP_SRC_IN_EXT)+ , ("BLEND_OP_DST_OVER_EXT", pure BLEND_OP_DST_OVER_EXT)+ , ("BLEND_OP_SRC_OVER_EXT", pure BLEND_OP_SRC_OVER_EXT)+ , ("BLEND_OP_DST_EXT", pure BLEND_OP_DST_EXT)+ , ("BLEND_OP_SRC_EXT", pure BLEND_OP_SRC_EXT)+ , ("BLEND_OP_ZERO_EXT", pure BLEND_OP_ZERO_EXT)]+ ++++ prec 10 (do+ expectP (Ident "BlendOp")+ v <- step readPrec+ pure (BlendOp v)))+
+ src/Graphics/Vulkan/Core10/Enums/BorderColor.hs view
@@ -0,0 +1,85 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.BorderColor (BorderColor( BORDER_COLOR_FLOAT_TRANSPARENT_BLACK+ , BORDER_COLOR_INT_TRANSPARENT_BLACK+ , BORDER_COLOR_FLOAT_OPAQUE_BLACK+ , BORDER_COLOR_INT_OPAQUE_BLACK+ , BORDER_COLOR_FLOAT_OPAQUE_WHITE+ , BORDER_COLOR_INT_OPAQUE_WHITE+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkBorderColor - Specify border color used for texture lookups+--+-- = Description+--+-- These colors are described in detail in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-replacement Texel Replacement>.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Sampler.SamplerCreateInfo'+newtype BorderColor = BorderColor Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'BORDER_COLOR_FLOAT_TRANSPARENT_BLACK' specifies a transparent,+-- floating-point format, black color.+pattern BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = BorderColor 0+-- | 'BORDER_COLOR_INT_TRANSPARENT_BLACK' specifies a transparent, integer+-- format, black color.+pattern BORDER_COLOR_INT_TRANSPARENT_BLACK = BorderColor 1+-- | 'BORDER_COLOR_FLOAT_OPAQUE_BLACK' specifies an opaque, floating-point+-- format, black color.+pattern BORDER_COLOR_FLOAT_OPAQUE_BLACK = BorderColor 2+-- | 'BORDER_COLOR_INT_OPAQUE_BLACK' specifies an opaque, integer format,+-- black color.+pattern BORDER_COLOR_INT_OPAQUE_BLACK = BorderColor 3+-- | 'BORDER_COLOR_FLOAT_OPAQUE_WHITE' specifies an opaque, floating-point+-- format, white color.+pattern BORDER_COLOR_FLOAT_OPAQUE_WHITE = BorderColor 4+-- | 'BORDER_COLOR_INT_OPAQUE_WHITE' specifies an opaque, integer format,+-- white color.+pattern BORDER_COLOR_INT_OPAQUE_WHITE = BorderColor 5+{-# complete BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,+ BORDER_COLOR_INT_TRANSPARENT_BLACK,+ BORDER_COLOR_FLOAT_OPAQUE_BLACK,+ BORDER_COLOR_INT_OPAQUE_BLACK,+ BORDER_COLOR_FLOAT_OPAQUE_WHITE,+ BORDER_COLOR_INT_OPAQUE_WHITE :: BorderColor #-}++instance Show BorderColor where+ showsPrec p = \case+ BORDER_COLOR_FLOAT_TRANSPARENT_BLACK -> showString "BORDER_COLOR_FLOAT_TRANSPARENT_BLACK"+ BORDER_COLOR_INT_TRANSPARENT_BLACK -> showString "BORDER_COLOR_INT_TRANSPARENT_BLACK"+ BORDER_COLOR_FLOAT_OPAQUE_BLACK -> showString "BORDER_COLOR_FLOAT_OPAQUE_BLACK"+ BORDER_COLOR_INT_OPAQUE_BLACK -> showString "BORDER_COLOR_INT_OPAQUE_BLACK"+ BORDER_COLOR_FLOAT_OPAQUE_WHITE -> showString "BORDER_COLOR_FLOAT_OPAQUE_WHITE"+ BORDER_COLOR_INT_OPAQUE_WHITE -> showString "BORDER_COLOR_INT_OPAQUE_WHITE"+ BorderColor x -> showParen (p >= 11) (showString "BorderColor " . showsPrec 11 x)++instance Read BorderColor where+ readPrec = parens (choose [("BORDER_COLOR_FLOAT_TRANSPARENT_BLACK", pure BORDER_COLOR_FLOAT_TRANSPARENT_BLACK)+ , ("BORDER_COLOR_INT_TRANSPARENT_BLACK", pure BORDER_COLOR_INT_TRANSPARENT_BLACK)+ , ("BORDER_COLOR_FLOAT_OPAQUE_BLACK", pure BORDER_COLOR_FLOAT_OPAQUE_BLACK)+ , ("BORDER_COLOR_INT_OPAQUE_BLACK", pure BORDER_COLOR_INT_OPAQUE_BLACK)+ , ("BORDER_COLOR_FLOAT_OPAQUE_WHITE", pure BORDER_COLOR_FLOAT_OPAQUE_WHITE)+ , ("BORDER_COLOR_INT_OPAQUE_WHITE", pure BORDER_COLOR_INT_OPAQUE_WHITE)]+ ++++ prec 10 (do+ expectP (Ident "BorderColor")+ v <- step readPrec+ pure (BorderColor v)))+
+ src/Graphics/Vulkan/Core10/Enums/BufferCreateFlagBits.hs view
@@ -0,0 +1,90 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits ( BufferCreateFlagBits( BUFFER_CREATE_SPARSE_BINDING_BIT+ , BUFFER_CREATE_SPARSE_RESIDENCY_BIT+ , BUFFER_CREATE_SPARSE_ALIASED_BIT+ , BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT+ , BUFFER_CREATE_PROTECTED_BIT+ , ..+ )+ , BufferCreateFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkBufferCreateFlagBits - Bitmask specifying additional parameters of a+-- buffer+--+-- = Description+--+-- See+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseresourcefeatures Sparse Resource Features>+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features Physical Device Features>+-- for details of the sparse memory features supported on a device.+--+-- = See Also+--+-- 'BufferCreateFlags'+newtype BufferCreateFlagBits = BufferCreateFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'BUFFER_CREATE_SPARSE_BINDING_BIT' specifies that the buffer will be+-- backed using sparse memory binding.+pattern BUFFER_CREATE_SPARSE_BINDING_BIT = BufferCreateFlagBits 0x00000001+-- | 'BUFFER_CREATE_SPARSE_RESIDENCY_BIT' specifies that the buffer /can/ be+-- partially backed using sparse memory binding. Buffers created with this+-- flag /must/ also be created with the 'BUFFER_CREATE_SPARSE_BINDING_BIT'+-- flag.+pattern BUFFER_CREATE_SPARSE_RESIDENCY_BIT = BufferCreateFlagBits 0x00000002+-- | 'BUFFER_CREATE_SPARSE_ALIASED_BIT' specifies that the buffer will be+-- backed using sparse memory binding with memory ranges that might also+-- simultaneously be backing another buffer (or another portion of the same+-- buffer). Buffers created with this flag /must/ also be created with the+-- 'BUFFER_CREATE_SPARSE_BINDING_BIT' flag.+pattern BUFFER_CREATE_SPARSE_ALIASED_BIT = BufferCreateFlagBits 0x00000004+-- | 'BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT' specifies that the+-- buffer’s address /can/ be saved and reused on a subsequent run (e.g. for+-- trace capture and replay), see+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferOpaqueCaptureAddressCreateInfo'+-- for more detail.+pattern BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = BufferCreateFlagBits 0x00000010+-- | 'BUFFER_CREATE_PROTECTED_BIT' specifies that the buffer is a protected+-- buffer.+pattern BUFFER_CREATE_PROTECTED_BIT = BufferCreateFlagBits 0x00000008++type BufferCreateFlags = BufferCreateFlagBits++instance Show BufferCreateFlagBits where+ showsPrec p = \case+ BUFFER_CREATE_SPARSE_BINDING_BIT -> showString "BUFFER_CREATE_SPARSE_BINDING_BIT"+ BUFFER_CREATE_SPARSE_RESIDENCY_BIT -> showString "BUFFER_CREATE_SPARSE_RESIDENCY_BIT"+ BUFFER_CREATE_SPARSE_ALIASED_BIT -> showString "BUFFER_CREATE_SPARSE_ALIASED_BIT"+ BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT -> showString "BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"+ BUFFER_CREATE_PROTECTED_BIT -> showString "BUFFER_CREATE_PROTECTED_BIT"+ BufferCreateFlagBits x -> showParen (p >= 11) (showString "BufferCreateFlagBits 0x" . showHex x)++instance Read BufferCreateFlagBits where+ readPrec = parens (choose [("BUFFER_CREATE_SPARSE_BINDING_BIT", pure BUFFER_CREATE_SPARSE_BINDING_BIT)+ , ("BUFFER_CREATE_SPARSE_RESIDENCY_BIT", pure BUFFER_CREATE_SPARSE_RESIDENCY_BIT)+ , ("BUFFER_CREATE_SPARSE_ALIASED_BIT", pure BUFFER_CREATE_SPARSE_ALIASED_BIT)+ , ("BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT", pure BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT)+ , ("BUFFER_CREATE_PROTECTED_BIT", pure BUFFER_CREATE_PROTECTED_BIT)]+ ++++ prec 10 (do+ expectP (Ident "BufferCreateFlagBits")+ v <- step readPrec+ pure (BufferCreateFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/BufferUsageFlagBits.hs view
@@ -0,0 +1,167 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits ( BufferUsageFlagBits( BUFFER_USAGE_TRANSFER_SRC_BIT+ , BUFFER_USAGE_TRANSFER_DST_BIT+ , BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT+ , BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT+ , BUFFER_USAGE_UNIFORM_BUFFER_BIT+ , BUFFER_USAGE_STORAGE_BUFFER_BIT+ , BUFFER_USAGE_INDEX_BUFFER_BIT+ , BUFFER_USAGE_VERTEX_BUFFER_BIT+ , BUFFER_USAGE_INDIRECT_BUFFER_BIT+ , BUFFER_USAGE_RAY_TRACING_BIT_NV+ , BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT+ , BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT+ , BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT+ , BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT+ , ..+ )+ , BufferUsageFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkBufferUsageFlagBits - Bitmask specifying allowed usage of a buffer+--+-- = See Also+--+-- 'BufferUsageFlags'+newtype BufferUsageFlagBits = BufferUsageFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'BUFFER_USAGE_TRANSFER_SRC_BIT' specifies that the buffer /can/ be used+-- as the source of a /transfer command/ (see the definition of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-transfer >).+pattern BUFFER_USAGE_TRANSFER_SRC_BIT = BufferUsageFlagBits 0x00000001+-- | 'BUFFER_USAGE_TRANSFER_DST_BIT' specifies that the buffer /can/ be used+-- as the destination of a transfer command.+pattern BUFFER_USAGE_TRANSFER_DST_BIT = BufferUsageFlagBits 0x00000002+-- | 'BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT' specifies that the buffer /can/+-- be used to create a 'Graphics.Vulkan.Core10.Handles.BufferView' suitable+-- for occupying a 'Graphics.Vulkan.Core10.Handles.DescriptorSet' slot of+-- type+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'.+pattern BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = BufferUsageFlagBits 0x00000004+-- | 'BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT' specifies that the buffer /can/+-- be used to create a 'Graphics.Vulkan.Core10.Handles.BufferView' suitable+-- for occupying a 'Graphics.Vulkan.Core10.Handles.DescriptorSet' slot of+-- type+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'.+pattern BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = BufferUsageFlagBits 0x00000008+-- | 'BUFFER_USAGE_UNIFORM_BUFFER_BIT' specifies that the buffer /can/ be+-- used in a 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorBufferInfo'+-- suitable for occupying a 'Graphics.Vulkan.Core10.Handles.DescriptorSet'+-- slot either of type+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'.+pattern BUFFER_USAGE_UNIFORM_BUFFER_BIT = BufferUsageFlagBits 0x00000010+-- | 'BUFFER_USAGE_STORAGE_BUFFER_BIT' specifies that the buffer /can/ be+-- used in a 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorBufferInfo'+-- suitable for occupying a 'Graphics.Vulkan.Core10.Handles.DescriptorSet'+-- slot either of type+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'.+pattern BUFFER_USAGE_STORAGE_BUFFER_BIT = BufferUsageFlagBits 0x00000020+-- | 'BUFFER_USAGE_INDEX_BUFFER_BIT' specifies that the buffer is suitable+-- for passing as the 'Graphics.Vulkan.Core10.Handles.Buffer' parameter to+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'.+pattern BUFFER_USAGE_INDEX_BUFFER_BIT = BufferUsageFlagBits 0x00000040+-- | 'BUFFER_USAGE_VERTEX_BUFFER_BIT' specifies that the buffer is suitable+-- for passing as an element of the @pBuffers@ array to+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers'.+pattern BUFFER_USAGE_VERTEX_BUFFER_BIT = BufferUsageFlagBits 0x00000080+-- | 'BUFFER_USAGE_INDIRECT_BUFFER_BIT' specifies that the buffer is suitable+-- for passing as the 'Graphics.Vulkan.Core10.Handles.Buffer' parameter to+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect',+-- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV',+-- or 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect'.+-- It is also suitable for passing as the+-- 'Graphics.Vulkan.Core10.Handles.Buffer' member of+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.IndirectCommandsTokenNVX',+-- or @sequencesCountBuffer@ or @sequencesIndexBuffer@ member of+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdProcessCommandsInfoNVX'+pattern BUFFER_USAGE_INDIRECT_BUFFER_BIT = BufferUsageFlagBits 0x00000100+-- | 'BUFFER_USAGE_RAY_TRACING_BIT_NV' specifies that the buffer is suitable+-- for use in 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV'+-- and+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV'.+pattern BUFFER_USAGE_RAY_TRACING_BIT_NV = BufferUsageFlagBits 0x00000400+-- | 'BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT' specifies that the buffer+-- is suitable for passing as the 'Graphics.Vulkan.Core10.Handles.Buffer'+-- parameter to+-- 'Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering.cmdBeginConditionalRenderingEXT'.+pattern BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = BufferUsageFlagBits 0x00000200+-- | 'BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT' specifies that+-- the buffer is suitable for using as a counter buffer with+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT'+-- and+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT'.+pattern BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = BufferUsageFlagBits 0x00001000+-- | 'BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT' specifies that the+-- buffer is suitable for using for binding as a transform feedback buffer+-- with+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT'.+pattern BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = BufferUsageFlagBits 0x00000800+-- | 'BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT' specifies that the buffer /can/+-- be used to retrieve a buffer device address via+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'+-- and use that address to access the buffer’s memory from a shader.+pattern BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = BufferUsageFlagBits 0x00020000++type BufferUsageFlags = BufferUsageFlagBits++instance Show BufferUsageFlagBits where+ showsPrec p = \case+ BUFFER_USAGE_TRANSFER_SRC_BIT -> showString "BUFFER_USAGE_TRANSFER_SRC_BIT"+ BUFFER_USAGE_TRANSFER_DST_BIT -> showString "BUFFER_USAGE_TRANSFER_DST_BIT"+ BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT -> showString "BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"+ BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT -> showString "BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"+ BUFFER_USAGE_UNIFORM_BUFFER_BIT -> showString "BUFFER_USAGE_UNIFORM_BUFFER_BIT"+ BUFFER_USAGE_STORAGE_BUFFER_BIT -> showString "BUFFER_USAGE_STORAGE_BUFFER_BIT"+ BUFFER_USAGE_INDEX_BUFFER_BIT -> showString "BUFFER_USAGE_INDEX_BUFFER_BIT"+ BUFFER_USAGE_VERTEX_BUFFER_BIT -> showString "BUFFER_USAGE_VERTEX_BUFFER_BIT"+ BUFFER_USAGE_INDIRECT_BUFFER_BIT -> showString "BUFFER_USAGE_INDIRECT_BUFFER_BIT"+ BUFFER_USAGE_RAY_TRACING_BIT_NV -> showString "BUFFER_USAGE_RAY_TRACING_BIT_NV"+ BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT -> showString "BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT"+ BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT -> showString "BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT"+ BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT -> showString "BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT"+ BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT -> showString "BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT"+ BufferUsageFlagBits x -> showParen (p >= 11) (showString "BufferUsageFlagBits 0x" . showHex x)++instance Read BufferUsageFlagBits where+ readPrec = parens (choose [("BUFFER_USAGE_TRANSFER_SRC_BIT", pure BUFFER_USAGE_TRANSFER_SRC_BIT)+ , ("BUFFER_USAGE_TRANSFER_DST_BIT", pure BUFFER_USAGE_TRANSFER_DST_BIT)+ , ("BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT", pure BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT)+ , ("BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT", pure BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT)+ , ("BUFFER_USAGE_UNIFORM_BUFFER_BIT", pure BUFFER_USAGE_UNIFORM_BUFFER_BIT)+ , ("BUFFER_USAGE_STORAGE_BUFFER_BIT", pure BUFFER_USAGE_STORAGE_BUFFER_BIT)+ , ("BUFFER_USAGE_INDEX_BUFFER_BIT", pure BUFFER_USAGE_INDEX_BUFFER_BIT)+ , ("BUFFER_USAGE_VERTEX_BUFFER_BIT", pure BUFFER_USAGE_VERTEX_BUFFER_BIT)+ , ("BUFFER_USAGE_INDIRECT_BUFFER_BIT", pure BUFFER_USAGE_INDIRECT_BUFFER_BIT)+ , ("BUFFER_USAGE_RAY_TRACING_BIT_NV", pure BUFFER_USAGE_RAY_TRACING_BIT_NV)+ , ("BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT", pure BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT)+ , ("BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT", pure BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT)+ , ("BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT", pure BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT)+ , ("BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT", pure BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT)]+ ++++ prec 10 (do+ expectP (Ident "BufferUsageFlagBits")+ v <- step readPrec+ pure (BufferUsageFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/BufferViewCreateFlags.hs view
@@ -0,0 +1,45 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.BufferViewCreateFlags (BufferViewCreateFlags(..)) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkBufferViewCreateFlags - Reserved for future use+--+-- = Description+--+-- 'BufferViewCreateFlags' is a bitmask type for setting a mask, but is+-- currently reserved for future use.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BufferView.BufferViewCreateInfo'+newtype BufferViewCreateFlags = BufferViewCreateFlags Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show BufferViewCreateFlags where+ showsPrec p = \case+ BufferViewCreateFlags x -> showParen (p >= 11) (showString "BufferViewCreateFlags 0x" . showHex x)++instance Read BufferViewCreateFlags where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "BufferViewCreateFlags")+ v <- step readPrec+ pure (BufferViewCreateFlags v)))+
+ src/Graphics/Vulkan/Core10/Enums/ColorComponentFlagBits.hs view
@@ -0,0 +1,77 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.ColorComponentFlagBits ( ColorComponentFlagBits( COLOR_COMPONENT_R_BIT+ , COLOR_COMPONENT_G_BIT+ , COLOR_COMPONENT_B_BIT+ , COLOR_COMPONENT_A_BIT+ , ..+ )+ , ColorComponentFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkColorComponentFlagBits - Bitmask controlling which components are+-- written to the framebuffer+--+-- = Description+--+-- The color write mask operation is applied regardless of whether blending+-- is enabled.+--+-- = See Also+--+-- 'ColorComponentFlags'+newtype ColorComponentFlagBits = ColorComponentFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'COLOR_COMPONENT_R_BIT' specifies that the R value is written to the+-- color attachment for the appropriate sample. Otherwise, the value in+-- memory is unmodified.+pattern COLOR_COMPONENT_R_BIT = ColorComponentFlagBits 0x00000001+-- | 'COLOR_COMPONENT_G_BIT' specifies that the G value is written to the+-- color attachment for the appropriate sample. Otherwise, the value in+-- memory is unmodified.+pattern COLOR_COMPONENT_G_BIT = ColorComponentFlagBits 0x00000002+-- | 'COLOR_COMPONENT_B_BIT' specifies that the B value is written to the+-- color attachment for the appropriate sample. Otherwise, the value in+-- memory is unmodified.+pattern COLOR_COMPONENT_B_BIT = ColorComponentFlagBits 0x00000004+-- | 'COLOR_COMPONENT_A_BIT' specifies that the A value is written to the+-- color attachment for the appropriate sample. Otherwise, the value in+-- memory is unmodified.+pattern COLOR_COMPONENT_A_BIT = ColorComponentFlagBits 0x00000008++type ColorComponentFlags = ColorComponentFlagBits++instance Show ColorComponentFlagBits where+ showsPrec p = \case+ COLOR_COMPONENT_R_BIT -> showString "COLOR_COMPONENT_R_BIT"+ COLOR_COMPONENT_G_BIT -> showString "COLOR_COMPONENT_G_BIT"+ COLOR_COMPONENT_B_BIT -> showString "COLOR_COMPONENT_B_BIT"+ COLOR_COMPONENT_A_BIT -> showString "COLOR_COMPONENT_A_BIT"+ ColorComponentFlagBits x -> showParen (p >= 11) (showString "ColorComponentFlagBits 0x" . showHex x)++instance Read ColorComponentFlagBits where+ readPrec = parens (choose [("COLOR_COMPONENT_R_BIT", pure COLOR_COMPONENT_R_BIT)+ , ("COLOR_COMPONENT_G_BIT", pure COLOR_COMPONENT_G_BIT)+ , ("COLOR_COMPONENT_B_BIT", pure COLOR_COMPONENT_B_BIT)+ , ("COLOR_COMPONENT_A_BIT", pure COLOR_COMPONENT_A_BIT)]+ ++++ prec 10 (do+ expectP (Ident "ColorComponentFlagBits")+ v <- step readPrec+ pure (ColorComponentFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/CommandBufferLevel.hs view
@@ -0,0 +1,50 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.CommandBufferLevel (CommandBufferLevel( COMMAND_BUFFER_LEVEL_PRIMARY+ , COMMAND_BUFFER_LEVEL_SECONDARY+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkCommandBufferLevel - Enumerant specifying a command buffer level+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.CommandBuffer.CommandBufferAllocateInfo'+newtype CommandBufferLevel = CommandBufferLevel Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'COMMAND_BUFFER_LEVEL_PRIMARY' specifies a primary command buffer.+pattern COMMAND_BUFFER_LEVEL_PRIMARY = CommandBufferLevel 0+-- | 'COMMAND_BUFFER_LEVEL_SECONDARY' specifies a secondary command buffer.+pattern COMMAND_BUFFER_LEVEL_SECONDARY = CommandBufferLevel 1+{-# complete COMMAND_BUFFER_LEVEL_PRIMARY,+ COMMAND_BUFFER_LEVEL_SECONDARY :: CommandBufferLevel #-}++instance Show CommandBufferLevel where+ showsPrec p = \case+ COMMAND_BUFFER_LEVEL_PRIMARY -> showString "COMMAND_BUFFER_LEVEL_PRIMARY"+ COMMAND_BUFFER_LEVEL_SECONDARY -> showString "COMMAND_BUFFER_LEVEL_SECONDARY"+ CommandBufferLevel x -> showParen (p >= 11) (showString "CommandBufferLevel " . showsPrec 11 x)++instance Read CommandBufferLevel where+ readPrec = parens (choose [("COMMAND_BUFFER_LEVEL_PRIMARY", pure COMMAND_BUFFER_LEVEL_PRIMARY)+ , ("COMMAND_BUFFER_LEVEL_SECONDARY", pure COMMAND_BUFFER_LEVEL_SECONDARY)]+ ++++ prec 10 (do+ expectP (Ident "CommandBufferLevel")+ v <- step readPrec+ pure (CommandBufferLevel v)))+
+ src/Graphics/Vulkan/Core10/Enums/CommandBufferResetFlagBits.hs view
@@ -0,0 +1,55 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.CommandBufferResetFlagBits ( CommandBufferResetFlagBits( COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT+ , ..+ )+ , CommandBufferResetFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkCommandBufferResetFlagBits - Bitmask controlling behavior of a command+-- buffer reset+--+-- = See Also+--+-- 'CommandBufferResetFlags'+newtype CommandBufferResetFlagBits = CommandBufferResetFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT' specifies that most or all+-- memory resources currently owned by the command buffer /should/ be+-- returned to the parent command pool. If this flag is not set, then the+-- command buffer /may/ hold onto memory resources and reuse them when+-- recording commands. 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is+-- moved to the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>.+pattern COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = CommandBufferResetFlagBits 0x00000001++type CommandBufferResetFlags = CommandBufferResetFlagBits++instance Show CommandBufferResetFlagBits where+ showsPrec p = \case+ COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT -> showString "COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT"+ CommandBufferResetFlagBits x -> showParen (p >= 11) (showString "CommandBufferResetFlagBits 0x" . showHex x)++instance Read CommandBufferResetFlagBits where+ readPrec = parens (choose [("COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT", pure COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT)]+ ++++ prec 10 (do+ expectP (Ident "CommandBufferResetFlagBits")+ v <- step readPrec+ pure (CommandBufferResetFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/CommandBufferResetFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.CommandBufferResetFlagBits ( CommandBufferResetFlagBits+ , CommandBufferResetFlags+ ) where++++data CommandBufferResetFlagBits++type CommandBufferResetFlags = CommandBufferResetFlagBits+
+ src/Graphics/Vulkan/Core10/Enums/CommandBufferUsageFlagBits.hs view
@@ -0,0 +1,65 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits ( CommandBufferUsageFlagBits( COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT+ , COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT+ , COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT+ , ..+ )+ , CommandBufferUsageFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkCommandBufferUsageFlagBits - Bitmask specifying usage behavior for+-- command buffer+--+-- = See Also+--+-- 'CommandBufferUsageFlags'+newtype CommandBufferUsageFlagBits = CommandBufferUsageFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT' specifies that each recording+-- of the command buffer will only be submitted once, and the command+-- buffer will be reset and recorded again between each submission.+pattern COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = CommandBufferUsageFlagBits 0x00000001+-- | 'COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT' specifies that a+-- secondary command buffer is considered to be entirely inside a render+-- pass. If this is a primary command buffer, then this bit is ignored.+pattern COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = CommandBufferUsageFlagBits 0x00000002+-- | 'COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT' specifies that a command+-- buffer /can/ be resubmitted to a queue while it is in the /pending+-- state/, and recorded into multiple primary command buffers.+pattern COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = CommandBufferUsageFlagBits 0x00000004++type CommandBufferUsageFlags = CommandBufferUsageFlagBits++instance Show CommandBufferUsageFlagBits where+ showsPrec p = \case+ COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT -> showString "COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"+ COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT -> showString "COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"+ COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT -> showString "COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"+ CommandBufferUsageFlagBits x -> showParen (p >= 11) (showString "CommandBufferUsageFlagBits 0x" . showHex x)++instance Read CommandBufferUsageFlagBits where+ readPrec = parens (choose [("COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT", pure COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT)+ , ("COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT", pure COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT)+ , ("COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT", pure COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT)]+ ++++ prec 10 (do+ expectP (Ident "CommandBufferUsageFlagBits")+ v <- step readPrec+ pure (CommandBufferUsageFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/CommandPoolCreateFlagBits.hs view
@@ -0,0 +1,73 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.CommandPoolCreateFlagBits ( CommandPoolCreateFlagBits( COMMAND_POOL_CREATE_TRANSIENT_BIT+ , COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT+ , COMMAND_POOL_CREATE_PROTECTED_BIT+ , ..+ )+ , CommandPoolCreateFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkCommandPoolCreateFlagBits - Bitmask specifying usage behavior for a+-- command pool+--+-- = See Also+--+-- 'CommandPoolCreateFlags'+newtype CommandPoolCreateFlagBits = CommandPoolCreateFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'COMMAND_POOL_CREATE_TRANSIENT_BIT' specifies that command buffers+-- allocated from the pool will be short-lived, meaning that they will be+-- reset or freed in a relatively short timeframe. This flag /may/ be used+-- by the implementation to control memory allocation behavior within the+-- pool.+pattern COMMAND_POOL_CREATE_TRANSIENT_BIT = CommandPoolCreateFlagBits 0x00000001+-- | 'COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT' allows any command buffer+-- allocated from a pool to be individually reset to the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>;+-- either by calling+-- 'Graphics.Vulkan.Core10.CommandBuffer.resetCommandBuffer', or via the+-- implicit reset when calling+-- 'Graphics.Vulkan.Core10.CommandBuffer.beginCommandBuffer'. If this flag+-- is not set on a pool, then+-- 'Graphics.Vulkan.Core10.CommandBuffer.resetCommandBuffer' /must/ not be+-- called for any command buffer allocated from that pool.+pattern COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = CommandPoolCreateFlagBits 0x00000002+-- | 'COMMAND_POOL_CREATE_PROTECTED_BIT' specifies that command buffers+-- allocated from the pool are protected command buffers.+pattern COMMAND_POOL_CREATE_PROTECTED_BIT = CommandPoolCreateFlagBits 0x00000004++type CommandPoolCreateFlags = CommandPoolCreateFlagBits++instance Show CommandPoolCreateFlagBits where+ showsPrec p = \case+ COMMAND_POOL_CREATE_TRANSIENT_BIT -> showString "COMMAND_POOL_CREATE_TRANSIENT_BIT"+ COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT -> showString "COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"+ COMMAND_POOL_CREATE_PROTECTED_BIT -> showString "COMMAND_POOL_CREATE_PROTECTED_BIT"+ CommandPoolCreateFlagBits x -> showParen (p >= 11) (showString "CommandPoolCreateFlagBits 0x" . showHex x)++instance Read CommandPoolCreateFlagBits where+ readPrec = parens (choose [("COMMAND_POOL_CREATE_TRANSIENT_BIT", pure COMMAND_POOL_CREATE_TRANSIENT_BIT)+ , ("COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT", pure COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT)+ , ("COMMAND_POOL_CREATE_PROTECTED_BIT", pure COMMAND_POOL_CREATE_PROTECTED_BIT)]+ ++++ prec 10 (do+ expectP (Ident "CommandPoolCreateFlagBits")+ v <- step readPrec+ pure (CommandPoolCreateFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/CommandPoolResetFlagBits.hs view
@@ -0,0 +1,51 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.CommandPoolResetFlagBits ( CommandPoolResetFlagBits( COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT+ , ..+ )+ , CommandPoolResetFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkCommandPoolResetFlagBits - Bitmask controlling behavior of a command+-- pool reset+--+-- = See Also+--+-- 'CommandPoolResetFlags'+newtype CommandPoolResetFlagBits = CommandPoolResetFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT' specifies that resetting a+-- command pool recycles all of the resources from the command pool back to+-- the system.+pattern COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = CommandPoolResetFlagBits 0x00000001++type CommandPoolResetFlags = CommandPoolResetFlagBits++instance Show CommandPoolResetFlagBits where+ showsPrec p = \case+ COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT -> showString "COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"+ CommandPoolResetFlagBits x -> showParen (p >= 11) (showString "CommandPoolResetFlagBits 0x" . showHex x)++instance Read CommandPoolResetFlagBits where+ readPrec = parens (choose [("COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT", pure COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT)]+ ++++ prec 10 (do+ expectP (Ident "CommandPoolResetFlagBits")+ v <- step readPrec+ pure (CommandPoolResetFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/CommandPoolResetFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.CommandPoolResetFlagBits ( CommandPoolResetFlagBits+ , CommandPoolResetFlags+ ) where++++data CommandPoolResetFlagBits++type CommandPoolResetFlags = CommandPoolResetFlagBits+
+ src/Graphics/Vulkan/Core10/Enums/CompareOp.hs view
@@ -0,0 +1,88 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.CompareOp (CompareOp( COMPARE_OP_NEVER+ , COMPARE_OP_LESS+ , COMPARE_OP_EQUAL+ , COMPARE_OP_LESS_OR_EQUAL+ , COMPARE_OP_GREATER+ , COMPARE_OP_NOT_EQUAL+ , COMPARE_OP_GREATER_OR_EQUAL+ , COMPARE_OP_ALWAYS+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkCompareOp - Stencil comparison function+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo',+-- 'Graphics.Vulkan.Core10.Sampler.SamplerCreateInfo',+-- 'Graphics.Vulkan.Core10.Pipeline.StencilOpState'+newtype CompareOp = CompareOp Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'COMPARE_OP_NEVER' specifies that the test never passes.+pattern COMPARE_OP_NEVER = CompareOp 0+-- | 'COMPARE_OP_LESS' specifies that the test passes when R \< S.+pattern COMPARE_OP_LESS = CompareOp 1+-- | 'COMPARE_OP_EQUAL' specifies that the test passes when R = S.+pattern COMPARE_OP_EQUAL = CompareOp 2+-- | 'COMPARE_OP_LESS_OR_EQUAL' specifies that the test passes when R ≤ S.+pattern COMPARE_OP_LESS_OR_EQUAL = CompareOp 3+-- | 'COMPARE_OP_GREATER' specifies that the test passes when R > S.+pattern COMPARE_OP_GREATER = CompareOp 4+-- | 'COMPARE_OP_NOT_EQUAL' specifies that the test passes when R ≠ S.+pattern COMPARE_OP_NOT_EQUAL = CompareOp 5+-- | 'COMPARE_OP_GREATER_OR_EQUAL' specifies that the test passes when R ≥ S.+pattern COMPARE_OP_GREATER_OR_EQUAL = CompareOp 6+-- | 'COMPARE_OP_ALWAYS' specifies that the test always passes.+pattern COMPARE_OP_ALWAYS = CompareOp 7+{-# complete COMPARE_OP_NEVER,+ COMPARE_OP_LESS,+ COMPARE_OP_EQUAL,+ COMPARE_OP_LESS_OR_EQUAL,+ COMPARE_OP_GREATER,+ COMPARE_OP_NOT_EQUAL,+ COMPARE_OP_GREATER_OR_EQUAL,+ COMPARE_OP_ALWAYS :: CompareOp #-}++instance Show CompareOp where+ showsPrec p = \case+ COMPARE_OP_NEVER -> showString "COMPARE_OP_NEVER"+ COMPARE_OP_LESS -> showString "COMPARE_OP_LESS"+ COMPARE_OP_EQUAL -> showString "COMPARE_OP_EQUAL"+ COMPARE_OP_LESS_OR_EQUAL -> showString "COMPARE_OP_LESS_OR_EQUAL"+ COMPARE_OP_GREATER -> showString "COMPARE_OP_GREATER"+ COMPARE_OP_NOT_EQUAL -> showString "COMPARE_OP_NOT_EQUAL"+ COMPARE_OP_GREATER_OR_EQUAL -> showString "COMPARE_OP_GREATER_OR_EQUAL"+ COMPARE_OP_ALWAYS -> showString "COMPARE_OP_ALWAYS"+ CompareOp x -> showParen (p >= 11) (showString "CompareOp " . showsPrec 11 x)++instance Read CompareOp where+ readPrec = parens (choose [("COMPARE_OP_NEVER", pure COMPARE_OP_NEVER)+ , ("COMPARE_OP_LESS", pure COMPARE_OP_LESS)+ , ("COMPARE_OP_EQUAL", pure COMPARE_OP_EQUAL)+ , ("COMPARE_OP_LESS_OR_EQUAL", pure COMPARE_OP_LESS_OR_EQUAL)+ , ("COMPARE_OP_GREATER", pure COMPARE_OP_GREATER)+ , ("COMPARE_OP_NOT_EQUAL", pure COMPARE_OP_NOT_EQUAL)+ , ("COMPARE_OP_GREATER_OR_EQUAL", pure COMPARE_OP_GREATER_OR_EQUAL)+ , ("COMPARE_OP_ALWAYS", pure COMPARE_OP_ALWAYS)]+ ++++ prec 10 (do+ expectP (Ident "CompareOp")+ v <- step readPrec+ pure (CompareOp v)))+
+ src/Graphics/Vulkan/Core10/Enums/ComponentSwizzle.hs view
@@ -0,0 +1,108 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.ComponentSwizzle (ComponentSwizzle( COMPONENT_SWIZZLE_IDENTITY+ , COMPONENT_SWIZZLE_ZERO+ , COMPONENT_SWIZZLE_ONE+ , COMPONENT_SWIZZLE_R+ , COMPONENT_SWIZZLE_G+ , COMPONENT_SWIZZLE_B+ , COMPONENT_SWIZZLE_A+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkComponentSwizzle - Specify how a component is swizzled+--+-- = Description+--+-- Setting the identity swizzle on a component is equivalent to setting the+-- identity mapping on that component. That is:+--+-- +-----------------------------------+-----------------------------------++-- | Component | Identity Mapping |+-- +===================================+===================================++-- | @components.r@ | 'COMPONENT_SWIZZLE_R' |+-- +-----------------------------------+-----------------------------------++-- | @components.g@ | 'COMPONENT_SWIZZLE_G' |+-- +-----------------------------------+-----------------------------------++-- | @components.b@ | 'COMPONENT_SWIZZLE_B' |+-- +-----------------------------------+-----------------------------------++-- | @components.a@ | 'COMPONENT_SWIZZLE_A' |+-- +-----------------------------------+-----------------------------------++--+-- Component Mappings Equivalent To 'COMPONENT_SWIZZLE_IDENTITY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.ImageView.ComponentMapping'+newtype ComponentSwizzle = ComponentSwizzle Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'COMPONENT_SWIZZLE_IDENTITY' specifies that the component is set to the+-- identity swizzle.+pattern COMPONENT_SWIZZLE_IDENTITY = ComponentSwizzle 0+-- | 'COMPONENT_SWIZZLE_ZERO' specifies that the component is set to zero.+pattern COMPONENT_SWIZZLE_ZERO = ComponentSwizzle 1+-- | 'COMPONENT_SWIZZLE_ONE' specifies that the component is set to either 1+-- or 1.0, depending on whether the type of the image view format is+-- integer or floating-point respectively, as determined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-definition Format Definition>+-- section for each 'Graphics.Vulkan.Core10.Enums.Format.Format'.+pattern COMPONENT_SWIZZLE_ONE = ComponentSwizzle 2+-- | 'COMPONENT_SWIZZLE_R' specifies that the component is set to the value+-- of the R component of the image.+pattern COMPONENT_SWIZZLE_R = ComponentSwizzle 3+-- | 'COMPONENT_SWIZZLE_G' specifies that the component is set to the value+-- of the G component of the image.+pattern COMPONENT_SWIZZLE_G = ComponentSwizzle 4+-- | 'COMPONENT_SWIZZLE_B' specifies that the component is set to the value+-- of the B component of the image.+pattern COMPONENT_SWIZZLE_B = ComponentSwizzle 5+-- | 'COMPONENT_SWIZZLE_A' specifies that the component is set to the value+-- of the A component of the image.+pattern COMPONENT_SWIZZLE_A = ComponentSwizzle 6+{-# complete COMPONENT_SWIZZLE_IDENTITY,+ COMPONENT_SWIZZLE_ZERO,+ COMPONENT_SWIZZLE_ONE,+ COMPONENT_SWIZZLE_R,+ COMPONENT_SWIZZLE_G,+ COMPONENT_SWIZZLE_B,+ COMPONENT_SWIZZLE_A :: ComponentSwizzle #-}++instance Show ComponentSwizzle where+ showsPrec p = \case+ COMPONENT_SWIZZLE_IDENTITY -> showString "COMPONENT_SWIZZLE_IDENTITY"+ COMPONENT_SWIZZLE_ZERO -> showString "COMPONENT_SWIZZLE_ZERO"+ COMPONENT_SWIZZLE_ONE -> showString "COMPONENT_SWIZZLE_ONE"+ COMPONENT_SWIZZLE_R -> showString "COMPONENT_SWIZZLE_R"+ COMPONENT_SWIZZLE_G -> showString "COMPONENT_SWIZZLE_G"+ COMPONENT_SWIZZLE_B -> showString "COMPONENT_SWIZZLE_B"+ COMPONENT_SWIZZLE_A -> showString "COMPONENT_SWIZZLE_A"+ ComponentSwizzle x -> showParen (p >= 11) (showString "ComponentSwizzle " . showsPrec 11 x)++instance Read ComponentSwizzle where+ readPrec = parens (choose [("COMPONENT_SWIZZLE_IDENTITY", pure COMPONENT_SWIZZLE_IDENTITY)+ , ("COMPONENT_SWIZZLE_ZERO", pure COMPONENT_SWIZZLE_ZERO)+ , ("COMPONENT_SWIZZLE_ONE", pure COMPONENT_SWIZZLE_ONE)+ , ("COMPONENT_SWIZZLE_R", pure COMPONENT_SWIZZLE_R)+ , ("COMPONENT_SWIZZLE_G", pure COMPONENT_SWIZZLE_G)+ , ("COMPONENT_SWIZZLE_B", pure COMPONENT_SWIZZLE_B)+ , ("COMPONENT_SWIZZLE_A", pure COMPONENT_SWIZZLE_A)]+ ++++ prec 10 (do+ expectP (Ident "ComponentSwizzle")+ v <- step readPrec+ pure (ComponentSwizzle v)))+
+ src/Graphics/Vulkan/Core10/Enums/CullModeFlagBits.hs view
@@ -0,0 +1,69 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.CullModeFlagBits ( CullModeFlagBits( CULL_MODE_NONE+ , CULL_MODE_FRONT_BIT+ , CULL_MODE_BACK_BIT+ , CULL_MODE_FRONT_AND_BACK+ , ..+ )+ , CullModeFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkCullModeFlagBits - Bitmask controlling triangle culling+--+-- = Description+--+-- Following culling, fragments are produced for any triangles which have+-- not been discarded.+--+-- = See Also+--+-- 'CullModeFlags'+newtype CullModeFlagBits = CullModeFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'CULL_MODE_NONE' specifies that no triangles are discarded+pattern CULL_MODE_NONE = CullModeFlagBits 0x00000000+-- | 'CULL_MODE_FRONT_BIT' specifies that front-facing triangles are+-- discarded+pattern CULL_MODE_FRONT_BIT = CullModeFlagBits 0x00000001+-- | 'CULL_MODE_BACK_BIT' specifies that back-facing triangles are discarded+pattern CULL_MODE_BACK_BIT = CullModeFlagBits 0x00000002+-- | 'CULL_MODE_FRONT_AND_BACK' specifies that all triangles are discarded.+pattern CULL_MODE_FRONT_AND_BACK = CullModeFlagBits 0x00000003++type CullModeFlags = CullModeFlagBits++instance Show CullModeFlagBits where+ showsPrec p = \case+ CULL_MODE_NONE -> showString "CULL_MODE_NONE"+ CULL_MODE_FRONT_BIT -> showString "CULL_MODE_FRONT_BIT"+ CULL_MODE_BACK_BIT -> showString "CULL_MODE_BACK_BIT"+ CULL_MODE_FRONT_AND_BACK -> showString "CULL_MODE_FRONT_AND_BACK"+ CullModeFlagBits x -> showParen (p >= 11) (showString "CullModeFlagBits 0x" . showHex x)++instance Read CullModeFlagBits where+ readPrec = parens (choose [("CULL_MODE_NONE", pure CULL_MODE_NONE)+ , ("CULL_MODE_FRONT_BIT", pure CULL_MODE_FRONT_BIT)+ , ("CULL_MODE_BACK_BIT", pure CULL_MODE_BACK_BIT)+ , ("CULL_MODE_FRONT_AND_BACK", pure CULL_MODE_FRONT_AND_BACK)]+ ++++ prec 10 (do+ expectP (Ident "CullModeFlagBits")+ v <- step readPrec+ pure (CullModeFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/DependencyFlagBits.hs view
@@ -0,0 +1,62 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.DependencyFlagBits ( DependencyFlagBits( DEPENDENCY_BY_REGION_BIT+ , DEPENDENCY_VIEW_LOCAL_BIT+ , DEPENDENCY_DEVICE_GROUP_BIT+ , ..+ )+ , DependencyFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkDependencyFlagBits - Bitmask specifying how execution and memory+-- dependencies are formed+--+-- = See Also+--+-- 'DependencyFlags'+newtype DependencyFlagBits = DependencyFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'DEPENDENCY_BY_REGION_BIT' specifies that dependencies will be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-local>.+pattern DEPENDENCY_BY_REGION_BIT = DependencyFlagBits 0x00000001+-- | 'DEPENDENCY_VIEW_LOCAL_BIT' specifies that a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependencies subpass has more than one view>.+pattern DEPENDENCY_VIEW_LOCAL_BIT = DependencyFlagBits 0x00000002+-- | 'DEPENDENCY_DEVICE_GROUP_BIT' specifies that dependencies are+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-device-local-dependencies non-device-local dependency>.+pattern DEPENDENCY_DEVICE_GROUP_BIT = DependencyFlagBits 0x00000004++type DependencyFlags = DependencyFlagBits++instance Show DependencyFlagBits where+ showsPrec p = \case+ DEPENDENCY_BY_REGION_BIT -> showString "DEPENDENCY_BY_REGION_BIT"+ DEPENDENCY_VIEW_LOCAL_BIT -> showString "DEPENDENCY_VIEW_LOCAL_BIT"+ DEPENDENCY_DEVICE_GROUP_BIT -> showString "DEPENDENCY_DEVICE_GROUP_BIT"+ DependencyFlagBits x -> showParen (p >= 11) (showString "DependencyFlagBits 0x" . showHex x)++instance Read DependencyFlagBits where+ readPrec = parens (choose [("DEPENDENCY_BY_REGION_BIT", pure DEPENDENCY_BY_REGION_BIT)+ , ("DEPENDENCY_VIEW_LOCAL_BIT", pure DEPENDENCY_VIEW_LOCAL_BIT)+ , ("DEPENDENCY_DEVICE_GROUP_BIT", pure DEPENDENCY_DEVICE_GROUP_BIT)]+ ++++ prec 10 (do+ expectP (Ident "DependencyFlagBits")+ v <- step readPrec+ pure (DependencyFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/DependencyFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.DependencyFlagBits ( DependencyFlagBits+ , DependencyFlags+ ) where++++data DependencyFlagBits++type DependencyFlags = DependencyFlagBits+
+ src/Graphics/Vulkan/Core10/Enums/DescriptorPoolCreateFlagBits.hs view
@@ -0,0 +1,70 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits ( DescriptorPoolCreateFlagBits( DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT+ , DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT+ , ..+ )+ , DescriptorPoolCreateFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkDescriptorPoolCreateFlagBits - Bitmask specifying certain supported+-- operations on a descriptor pool+--+-- = See Also+--+-- 'DescriptorPoolCreateFlags'+newtype DescriptorPoolCreateFlagBits = DescriptorPoolCreateFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT' specifies that+-- descriptor sets /can/ return their individual allocations to the pool,+-- i.e. all of+-- 'Graphics.Vulkan.Core10.DescriptorSet.allocateDescriptorSets',+-- 'Graphics.Vulkan.Core10.DescriptorSet.freeDescriptorSets', and+-- 'Graphics.Vulkan.Core10.DescriptorSet.resetDescriptorPool' are allowed.+-- Otherwise, descriptor sets allocated from the pool /must/ not be+-- individually freed back to the pool, i.e. only+-- 'Graphics.Vulkan.Core10.DescriptorSet.allocateDescriptorSets' and+-- 'Graphics.Vulkan.Core10.DescriptorSet.resetDescriptorPool' are allowed.+pattern DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = DescriptorPoolCreateFlagBits 0x00000001+-- | 'DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT' specifies that descriptor+-- sets allocated from this pool /can/ include bindings with the+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+-- bit set. It is valid to allocate descriptor sets that have bindings that+-- do not set the+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+-- bit from a pool that has 'DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT'+-- set.+pattern DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = DescriptorPoolCreateFlagBits 0x00000002++type DescriptorPoolCreateFlags = DescriptorPoolCreateFlagBits++instance Show DescriptorPoolCreateFlagBits where+ showsPrec p = \case+ DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT -> showString "DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"+ DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT -> showString "DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT"+ DescriptorPoolCreateFlagBits x -> showParen (p >= 11) (showString "DescriptorPoolCreateFlagBits 0x" . showHex x)++instance Read DescriptorPoolCreateFlagBits where+ readPrec = parens (choose [("DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT", pure DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT)+ , ("DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT", pure DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT)]+ ++++ prec 10 (do+ expectP (Ident "DescriptorPoolCreateFlagBits")+ v <- step readPrec+ pure (DescriptorPoolCreateFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/DescriptorPoolResetFlags.hs view
@@ -0,0 +1,45 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.DescriptorPoolResetFlags (DescriptorPoolResetFlags(..)) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkDescriptorPoolResetFlags - Reserved for future use+--+-- = Description+--+-- 'DescriptorPoolResetFlags' is a bitmask type for setting a mask, but is+-- currently reserved for future use.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DescriptorSet.resetDescriptorPool'+newtype DescriptorPoolResetFlags = DescriptorPoolResetFlags Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show DescriptorPoolResetFlags where+ showsPrec p = \case+ DescriptorPoolResetFlags x -> showParen (p >= 11) (showString "DescriptorPoolResetFlags 0x" . showHex x)++instance Read DescriptorPoolResetFlags where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "DescriptorPoolResetFlags")+ v <- step readPrec+ pure (DescriptorPoolResetFlags v)))+
+ src/Graphics/Vulkan/Core10/Enums/DescriptorPoolResetFlags.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.DescriptorPoolResetFlags (DescriptorPoolResetFlags) where++++data DescriptorPoolResetFlags+
+ src/Graphics/Vulkan/Core10/Enums/DescriptorSetLayoutCreateFlagBits.hs view
@@ -0,0 +1,66 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits ( DescriptorSetLayoutCreateFlagBits( DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR+ , DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT+ , ..+ )+ , DescriptorSetLayoutCreateFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkDescriptorSetLayoutCreateFlagBits - Bitmask specifying descriptor set+-- layout properties+--+-- = See Also+--+-- 'DescriptorSetLayoutCreateFlags'+newtype DescriptorSetLayoutCreateFlagBits = DescriptorSetLayoutCreateFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR' specifies that+-- descriptor sets /must/ not be allocated using this layout, and+-- descriptors are instead pushed by+-- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetKHR'.+pattern DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = DescriptorSetLayoutCreateFlagBits 0x00000001+-- | 'DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT' specifies that+-- descriptor sets using this layout /must/ be allocated from a descriptor+-- pool created with the+-- 'Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT'+-- bit set. Descriptor set layouts created with this bit set have alternate+-- limits for the maximum number of descriptors per-stage and per-pipeline+-- layout. The non-UpdateAfterBind limits only count descriptors in sets+-- created without this flag. The UpdateAfterBind limits count all+-- descriptors, but the limits /may/ be higher than the non-UpdateAfterBind+-- limits.+pattern DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = DescriptorSetLayoutCreateFlagBits 0x00000002++type DescriptorSetLayoutCreateFlags = DescriptorSetLayoutCreateFlagBits++instance Show DescriptorSetLayoutCreateFlagBits where+ showsPrec p = \case+ DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR -> showString "DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR"+ DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT -> showString "DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT"+ DescriptorSetLayoutCreateFlagBits x -> showParen (p >= 11) (showString "DescriptorSetLayoutCreateFlagBits 0x" . showHex x)++instance Read DescriptorSetLayoutCreateFlagBits where+ readPrec = parens (choose [("DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR", pure DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR)+ , ("DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT", pure DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT)]+ ++++ prec 10 (do+ expectP (Ident "DescriptorSetLayoutCreateFlagBits")+ v <- step readPrec+ pure (DescriptorSetLayoutCreateFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/DescriptorType.hs view
@@ -0,0 +1,213 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.DescriptorType (DescriptorType( DESCRIPTOR_TYPE_SAMPLER+ , DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER+ , DESCRIPTOR_TYPE_SAMPLED_IMAGE+ , DESCRIPTOR_TYPE_STORAGE_IMAGE+ , DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER+ , DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER+ , DESCRIPTOR_TYPE_UNIFORM_BUFFER+ , DESCRIPTOR_TYPE_STORAGE_BUFFER+ , DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC+ , DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC+ , DESCRIPTOR_TYPE_INPUT_ATTACHMENT+ , DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV+ , DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkDescriptorType - Specifies the type of a descriptor in a descriptor+-- set+--+-- = Description+--+-- - 'DESCRIPTOR_TYPE_SAMPLER' specifies a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampler sampler descriptor>.+--+-- - 'DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER' specifies a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler combined image sampler descriptor>.+--+-- - 'DESCRIPTOR_TYPE_SAMPLED_IMAGE' specifies a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled image descriptor>.+--+-- - 'DESCRIPTOR_TYPE_STORAGE_IMAGE' specifies a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image descriptor>.+--+-- - 'DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER' specifies a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer uniform texel buffer descriptor>.+--+-- - 'DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER' specifies a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffer descriptor>.+--+-- - 'DESCRIPTOR_TYPE_UNIFORM_BUFFER' specifies a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbuffer uniform buffer descriptor>.+--+-- - 'DESCRIPTOR_TYPE_STORAGE_BUFFER' specifies a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer descriptor>.+--+-- - 'DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC' specifies a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic dynamic uniform buffer descriptor>.+--+-- - 'DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC' specifies a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic dynamic storage buffer descriptor>.+--+-- - 'DESCRIPTOR_TYPE_INPUT_ATTACHMENT' specifies an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inputattachment input attachment descriptor>.+--+-- - 'DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT' specifies an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inlineuniformblock inline uniform block>.+--+-- When a descriptor set is updated via elements of+-- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet', members of+-- @pImageInfo@, @pBufferInfo@ and @pTexelBufferView@ are only accessed by+-- the implementation when they correspond to descriptor type being defined+-- - otherwise they are ignored. The members accessed are as follows for+-- each descriptor type:+--+-- - For 'DESCRIPTOR_TYPE_SAMPLER', only the+-- 'Graphics.Vulkan.Core10.Handles.Sampler' member of each element of+-- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet'::@pImageInfo@+-- is accessed.+--+-- - For 'DESCRIPTOR_TYPE_SAMPLED_IMAGE',+-- 'DESCRIPTOR_TYPE_STORAGE_IMAGE', or+-- 'DESCRIPTOR_TYPE_INPUT_ATTACHMENT', only the+-- 'Graphics.Vulkan.Core10.Handles.ImageView' and+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' members of+-- each element of+-- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet'::@pImageInfo@+-- are accessed.+--+-- - For 'DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER', all members of each+-- element of+-- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet'::@pImageInfo@+-- are accessed.+--+-- - For 'DESCRIPTOR_TYPE_UNIFORM_BUFFER',+-- 'DESCRIPTOR_TYPE_STORAGE_BUFFER',+-- 'DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC', or+-- 'DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC', all members of each+-- element of+-- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet'::@pBufferInfo@+-- are accessed.+--+-- - For 'DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER' or+-- 'DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER', each element of+-- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet'::@pTexelBufferView@+-- is accessed.+--+-- When updating descriptors with a 'DescriptorType' of+-- 'DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT', none of the @pImageInfo@,+-- @pBufferInfo@, or @pTexelBufferView@ members are accessed, instead the+-- source data of the descriptor update operation is taken from the+-- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlockEXT'+-- structure in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet'. When updating+-- descriptors with a 'DescriptorType' of+-- 'DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV', none of the @pImageInfo@,+-- @pBufferInfo@, or @pTexelBufferView@ members are accessed, instead the+-- source data of the descriptor update operation is taken from the+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV'+-- structure in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet'.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorPoolSize',+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateEntry',+-- 'Graphics.Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewHandleInfoNVX',+-- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet'+newtype DescriptorType = DescriptorType Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_SAMPLER"+pattern DESCRIPTOR_TYPE_SAMPLER = DescriptorType 0+-- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER"+pattern DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = DescriptorType 1+-- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE"+pattern DESCRIPTOR_TYPE_SAMPLED_IMAGE = DescriptorType 2+-- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE"+pattern DESCRIPTOR_TYPE_STORAGE_IMAGE = DescriptorType 3+-- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER"+pattern DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = DescriptorType 4+-- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER"+pattern DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = DescriptorType 5+-- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER"+pattern DESCRIPTOR_TYPE_UNIFORM_BUFFER = DescriptorType 6+-- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER"+pattern DESCRIPTOR_TYPE_STORAGE_BUFFER = DescriptorType 7+-- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC"+pattern DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = DescriptorType 8+-- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC"+pattern DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = DescriptorType 9+-- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT"+pattern DESCRIPTOR_TYPE_INPUT_ATTACHMENT = DescriptorType 10+-- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV"+pattern DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = DescriptorType 1000165000+-- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT"+pattern DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = DescriptorType 1000138000+{-# complete DESCRIPTOR_TYPE_SAMPLER,+ DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,+ DESCRIPTOR_TYPE_SAMPLED_IMAGE,+ DESCRIPTOR_TYPE_STORAGE_IMAGE,+ DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,+ DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,+ DESCRIPTOR_TYPE_UNIFORM_BUFFER,+ DESCRIPTOR_TYPE_STORAGE_BUFFER,+ DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,+ DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,+ DESCRIPTOR_TYPE_INPUT_ATTACHMENT,+ DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV,+ DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT :: DescriptorType #-}++instance Show DescriptorType where+ showsPrec p = \case+ DESCRIPTOR_TYPE_SAMPLER -> showString "DESCRIPTOR_TYPE_SAMPLER"+ DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER -> showString "DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER"+ DESCRIPTOR_TYPE_SAMPLED_IMAGE -> showString "DESCRIPTOR_TYPE_SAMPLED_IMAGE"+ DESCRIPTOR_TYPE_STORAGE_IMAGE -> showString "DESCRIPTOR_TYPE_STORAGE_IMAGE"+ DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER -> showString "DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER"+ DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER -> showString "DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER"+ DESCRIPTOR_TYPE_UNIFORM_BUFFER -> showString "DESCRIPTOR_TYPE_UNIFORM_BUFFER"+ DESCRIPTOR_TYPE_STORAGE_BUFFER -> showString "DESCRIPTOR_TYPE_STORAGE_BUFFER"+ DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC -> showString "DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC"+ DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC -> showString "DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC"+ DESCRIPTOR_TYPE_INPUT_ATTACHMENT -> showString "DESCRIPTOR_TYPE_INPUT_ATTACHMENT"+ DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV -> showString "DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV"+ DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT -> showString "DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT"+ DescriptorType x -> showParen (p >= 11) (showString "DescriptorType " . showsPrec 11 x)++instance Read DescriptorType where+ readPrec = parens (choose [("DESCRIPTOR_TYPE_SAMPLER", pure DESCRIPTOR_TYPE_SAMPLER)+ , ("DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER", pure DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER)+ , ("DESCRIPTOR_TYPE_SAMPLED_IMAGE", pure DESCRIPTOR_TYPE_SAMPLED_IMAGE)+ , ("DESCRIPTOR_TYPE_STORAGE_IMAGE", pure DESCRIPTOR_TYPE_STORAGE_IMAGE)+ , ("DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER", pure DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER)+ , ("DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER", pure DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER)+ , ("DESCRIPTOR_TYPE_UNIFORM_BUFFER", pure DESCRIPTOR_TYPE_UNIFORM_BUFFER)+ , ("DESCRIPTOR_TYPE_STORAGE_BUFFER", pure DESCRIPTOR_TYPE_STORAGE_BUFFER)+ , ("DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC", pure DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC)+ , ("DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC", pure DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC)+ , ("DESCRIPTOR_TYPE_INPUT_ATTACHMENT", pure DESCRIPTOR_TYPE_INPUT_ATTACHMENT)+ , ("DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV", pure DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV)+ , ("DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT", pure DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT)]+ ++++ prec 10 (do+ expectP (Ident "DescriptorType")+ v <- step readPrec+ pure (DescriptorType v)))+
+ src/Graphics/Vulkan/Core10/Enums/DeviceCreateFlags.hs view
@@ -0,0 +1,45 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.DeviceCreateFlags (DeviceCreateFlags(..)) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkDeviceCreateFlags - Reserved for future use+--+-- = Description+--+-- 'DeviceCreateFlags' is a bitmask type for setting a mask, but is+-- currently reserved for future use.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo'+newtype DeviceCreateFlags = DeviceCreateFlags Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show DeviceCreateFlags where+ showsPrec p = \case+ DeviceCreateFlags x -> showParen (p >= 11) (showString "DeviceCreateFlags 0x" . showHex x)++instance Read DeviceCreateFlags where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "DeviceCreateFlags")+ v <- step readPrec+ pure (DeviceCreateFlags v)))+
+ src/Graphics/Vulkan/Core10/Enums/DeviceQueueCreateFlagBits.hs view
@@ -0,0 +1,49 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.DeviceQueueCreateFlagBits ( DeviceQueueCreateFlagBits( DEVICE_QUEUE_CREATE_PROTECTED_BIT+ , ..+ )+ , DeviceQueueCreateFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkDeviceQueueCreateFlagBits - Bitmask specifying behavior of the queue+--+-- = See Also+--+-- 'DeviceQueueCreateFlags'+newtype DeviceQueueCreateFlagBits = DeviceQueueCreateFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'DEVICE_QUEUE_CREATE_PROTECTED_BIT' specifies that the device queue is a+-- protected-capable queue.+pattern DEVICE_QUEUE_CREATE_PROTECTED_BIT = DeviceQueueCreateFlagBits 0x00000001++type DeviceQueueCreateFlags = DeviceQueueCreateFlagBits++instance Show DeviceQueueCreateFlagBits where+ showsPrec p = \case+ DEVICE_QUEUE_CREATE_PROTECTED_BIT -> showString "DEVICE_QUEUE_CREATE_PROTECTED_BIT"+ DeviceQueueCreateFlagBits x -> showParen (p >= 11) (showString "DeviceQueueCreateFlagBits 0x" . showHex x)++instance Read DeviceQueueCreateFlagBits where+ readPrec = parens (choose [("DEVICE_QUEUE_CREATE_PROTECTED_BIT", pure DEVICE_QUEUE_CREATE_PROTECTED_BIT)]+ ++++ prec 10 (do+ expectP (Ident "DeviceQueueCreateFlagBits")+ v <- step readPrec+ pure (DeviceQueueCreateFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/DynamicState.hs view
@@ -0,0 +1,246 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.DynamicState (DynamicState( DYNAMIC_STATE_VIEWPORT+ , DYNAMIC_STATE_SCISSOR+ , DYNAMIC_STATE_LINE_WIDTH+ , DYNAMIC_STATE_DEPTH_BIAS+ , DYNAMIC_STATE_BLEND_CONSTANTS+ , DYNAMIC_STATE_DEPTH_BOUNDS+ , DYNAMIC_STATE_STENCIL_COMPARE_MASK+ , DYNAMIC_STATE_STENCIL_WRITE_MASK+ , DYNAMIC_STATE_STENCIL_REFERENCE+ , DYNAMIC_STATE_LINE_STIPPLE_EXT+ , DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV+ , DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV+ , DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV+ , DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT+ , DYNAMIC_STATE_DISCARD_RECTANGLE_EXT+ , DYNAMIC_STATE_VIEWPORT_W_SCALING_NV+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkDynamicState - Indicate which dynamic state is taken from dynamic+-- state commands+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'+newtype DynamicState = DynamicState Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'DYNAMIC_STATE_VIEWPORT' specifies that the @pViewports@ state in+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo' will+-- be ignored and /must/ be set dynamically with+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetViewport' before any+-- draw commands. The number of viewports used by a pipeline is still+-- specified by the @viewportCount@ member of+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'.+pattern DYNAMIC_STATE_VIEWPORT = DynamicState 0+-- | 'DYNAMIC_STATE_SCISSOR' specifies that the @pScissors@ state in+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo' will+-- be ignored and /must/ be set dynamically with+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetScissor' before any+-- draw commands. The number of scissor rectangles used by a pipeline is+-- still specified by the @scissorCount@ member of+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'.+pattern DYNAMIC_STATE_SCISSOR = DynamicState 1+-- | 'DYNAMIC_STATE_LINE_WIDTH' specifies that the @lineWidth@ state in+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'+-- will be ignored and /must/ be set dynamically with+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth' before+-- any draw commands that generate line primitives for the rasterizer.+pattern DYNAMIC_STATE_LINE_WIDTH = DynamicState 2+-- | 'DYNAMIC_STATE_DEPTH_BIAS' specifies that the @depthBiasConstantFactor@,+-- @depthBiasClamp@ and @depthBiasSlopeFactor@ states in+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'+-- will be ignored and /must/ be set dynamically with+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias' before+-- any draws are performed with @depthBiasEnable@ in+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'+-- set to 'Graphics.Vulkan.Core10.BaseType.TRUE'.+pattern DYNAMIC_STATE_DEPTH_BIAS = DynamicState 3+-- | 'DYNAMIC_STATE_BLEND_CONSTANTS' specifies that the @blendConstants@+-- state in+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo' will+-- be ignored and /must/ be set dynamically with+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants'+-- before any draws are performed with a pipeline state with+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'+-- member @blendEnable@ set to 'Graphics.Vulkan.Core10.BaseType.TRUE' and+-- any of the blend functions using a constant blend color.+pattern DYNAMIC_STATE_BLEND_CONSTANTS = DynamicState 4+-- | 'DYNAMIC_STATE_DEPTH_BOUNDS' specifies that the @minDepthBounds@ and+-- @maxDepthBounds@ states of+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'+-- will be ignored and /must/ be set dynamically with+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds' before+-- any draws are performed with a pipeline state with+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'+-- member @depthBoundsTestEnable@ set to+-- 'Graphics.Vulkan.Core10.BaseType.TRUE'.+pattern DYNAMIC_STATE_DEPTH_BOUNDS = DynamicState 5+-- | 'DYNAMIC_STATE_STENCIL_COMPARE_MASK' specifies that the @compareMask@+-- state in+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'+-- for both @front@ and @back@ will be ignored and /must/ be set+-- dynamically with+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask'+-- before any draws are performed with a pipeline state with+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'+-- member @stencilTestEnable@ set to 'Graphics.Vulkan.Core10.BaseType.TRUE'+pattern DYNAMIC_STATE_STENCIL_COMPARE_MASK = DynamicState 6+-- | 'DYNAMIC_STATE_STENCIL_WRITE_MASK' specifies that the @writeMask@ state+-- in 'Graphics.Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'+-- for both @front@ and @back@ will be ignored and /must/ be set+-- dynamically with+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask'+-- before any draws are performed with a pipeline state with+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'+-- member @stencilTestEnable@ set to 'Graphics.Vulkan.Core10.BaseType.TRUE'+pattern DYNAMIC_STATE_STENCIL_WRITE_MASK = DynamicState 7+-- | 'DYNAMIC_STATE_STENCIL_REFERENCE' specifies that the @reference@ state+-- in 'Graphics.Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'+-- for both @front@ and @back@ will be ignored and /must/ be set+-- dynamically with+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference'+-- before any draws are performed with a pipeline state with+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'+-- member @stencilTestEnable@ set to 'Graphics.Vulkan.Core10.BaseType.TRUE'+pattern DYNAMIC_STATE_STENCIL_REFERENCE = DynamicState 8+-- | 'DYNAMIC_STATE_LINE_STIPPLE_EXT' specifies that the @lineStippleFactor@+-- and @lineStipplePattern@ state in+-- 'Graphics.Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT'+-- will be ignored and /must/ be set dynamically with+-- 'Graphics.Vulkan.Extensions.VK_EXT_line_rasterization.cmdSetLineStippleEXT'+-- before any draws are performed with a pipeline state with+-- 'Graphics.Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT'+-- member @stippledLineEnable@ set to+-- 'Graphics.Vulkan.Core10.BaseType.TRUE'.+pattern DYNAMIC_STATE_LINE_STIPPLE_EXT = DynamicState 1000259000+-- | 'DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV' specifies that the+-- @pExclusiveScissors@ state in+-- 'Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'+-- will be ignored and /must/ be set dynamically with+-- 'Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV'+-- before any draw commands. The number of exclusive scissor rectangles+-- used by a pipeline is still specified by the @exclusiveScissorCount@+-- member of+-- 'Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'.+pattern DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = DynamicState 1000205001+-- | 'DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV' specifies that the+-- coarse sample order state in+-- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportCoarseSampleOrderStateCreateInfoNV'+-- will be ignored and /must/ be set dynamically with+-- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV'+-- before any draw commands.+pattern DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = DynamicState 1000164006+-- | 'DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV' specifies that the+-- @pShadingRatePalettes@ state in+-- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'+-- will be ignored and /must/ be set dynamically with+-- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'+-- before any draw commands.+pattern DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = DynamicState 1000164004+-- | 'DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT' specifies that the+-- @sampleLocationsInfo@ state in+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'+-- will be ignored and /must/ be set dynamically with+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT'+-- before any draw or clear commands. Enabling custom sample locations is+-- still indicated by the @sampleLocationsEnable@ member of+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'.+pattern DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = DynamicState 1000143000+-- | 'DYNAMIC_STATE_DISCARD_RECTANGLE_EXT' specifies that the+-- @pDiscardRectangles@ state in+-- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'+-- will be ignored and /must/ be set dynamically with+-- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT'+-- before any draw or clear commands. The+-- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.DiscardRectangleModeEXT'+-- and the number of active discard rectangles is still specified by the+-- @discardRectangleMode@ and @discardRectangleCount@ members of+-- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'.+pattern DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = DynamicState 1000099000+-- | 'DYNAMIC_STATE_VIEWPORT_W_SCALING_NV' specifies that the+-- @pViewportScalings@ state in+-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'+-- will be ignored and /must/ be set dynamically with+-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'+-- before any draws are performed with a pipeline state with+-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'+-- member @viewportScalingEnable@ set to+-- 'Graphics.Vulkan.Core10.BaseType.TRUE'+pattern DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = DynamicState 1000087000+{-# complete DYNAMIC_STATE_VIEWPORT,+ DYNAMIC_STATE_SCISSOR,+ DYNAMIC_STATE_LINE_WIDTH,+ DYNAMIC_STATE_DEPTH_BIAS,+ DYNAMIC_STATE_BLEND_CONSTANTS,+ DYNAMIC_STATE_DEPTH_BOUNDS,+ DYNAMIC_STATE_STENCIL_COMPARE_MASK,+ DYNAMIC_STATE_STENCIL_WRITE_MASK,+ DYNAMIC_STATE_STENCIL_REFERENCE,+ DYNAMIC_STATE_LINE_STIPPLE_EXT,+ DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV,+ DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV,+ DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV,+ DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT,+ DYNAMIC_STATE_DISCARD_RECTANGLE_EXT,+ DYNAMIC_STATE_VIEWPORT_W_SCALING_NV :: DynamicState #-}++instance Show DynamicState where+ showsPrec p = \case+ DYNAMIC_STATE_VIEWPORT -> showString "DYNAMIC_STATE_VIEWPORT"+ DYNAMIC_STATE_SCISSOR -> showString "DYNAMIC_STATE_SCISSOR"+ DYNAMIC_STATE_LINE_WIDTH -> showString "DYNAMIC_STATE_LINE_WIDTH"+ DYNAMIC_STATE_DEPTH_BIAS -> showString "DYNAMIC_STATE_DEPTH_BIAS"+ DYNAMIC_STATE_BLEND_CONSTANTS -> showString "DYNAMIC_STATE_BLEND_CONSTANTS"+ DYNAMIC_STATE_DEPTH_BOUNDS -> showString "DYNAMIC_STATE_DEPTH_BOUNDS"+ DYNAMIC_STATE_STENCIL_COMPARE_MASK -> showString "DYNAMIC_STATE_STENCIL_COMPARE_MASK"+ DYNAMIC_STATE_STENCIL_WRITE_MASK -> showString "DYNAMIC_STATE_STENCIL_WRITE_MASK"+ DYNAMIC_STATE_STENCIL_REFERENCE -> showString "DYNAMIC_STATE_STENCIL_REFERENCE"+ DYNAMIC_STATE_LINE_STIPPLE_EXT -> showString "DYNAMIC_STATE_LINE_STIPPLE_EXT"+ DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV -> showString "DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV"+ DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV -> showString "DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV"+ DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV -> showString "DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV"+ DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT -> showString "DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT"+ DYNAMIC_STATE_DISCARD_RECTANGLE_EXT -> showString "DYNAMIC_STATE_DISCARD_RECTANGLE_EXT"+ DYNAMIC_STATE_VIEWPORT_W_SCALING_NV -> showString "DYNAMIC_STATE_VIEWPORT_W_SCALING_NV"+ DynamicState x -> showParen (p >= 11) (showString "DynamicState " . showsPrec 11 x)++instance Read DynamicState where+ readPrec = parens (choose [("DYNAMIC_STATE_VIEWPORT", pure DYNAMIC_STATE_VIEWPORT)+ , ("DYNAMIC_STATE_SCISSOR", pure DYNAMIC_STATE_SCISSOR)+ , ("DYNAMIC_STATE_LINE_WIDTH", pure DYNAMIC_STATE_LINE_WIDTH)+ , ("DYNAMIC_STATE_DEPTH_BIAS", pure DYNAMIC_STATE_DEPTH_BIAS)+ , ("DYNAMIC_STATE_BLEND_CONSTANTS", pure DYNAMIC_STATE_BLEND_CONSTANTS)+ , ("DYNAMIC_STATE_DEPTH_BOUNDS", pure DYNAMIC_STATE_DEPTH_BOUNDS)+ , ("DYNAMIC_STATE_STENCIL_COMPARE_MASK", pure DYNAMIC_STATE_STENCIL_COMPARE_MASK)+ , ("DYNAMIC_STATE_STENCIL_WRITE_MASK", pure DYNAMIC_STATE_STENCIL_WRITE_MASK)+ , ("DYNAMIC_STATE_STENCIL_REFERENCE", pure DYNAMIC_STATE_STENCIL_REFERENCE)+ , ("DYNAMIC_STATE_LINE_STIPPLE_EXT", pure DYNAMIC_STATE_LINE_STIPPLE_EXT)+ , ("DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV", pure DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV)+ , ("DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV", pure DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV)+ , ("DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV", pure DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV)+ , ("DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT", pure DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT)+ , ("DYNAMIC_STATE_DISCARD_RECTANGLE_EXT", pure DYNAMIC_STATE_DISCARD_RECTANGLE_EXT)+ , ("DYNAMIC_STATE_VIEWPORT_W_SCALING_NV", pure DYNAMIC_STATE_VIEWPORT_W_SCALING_NV)]+ ++++ prec 10 (do+ expectP (Ident "DynamicState")+ v <- step readPrec+ pure (DynamicState v)))+
+ src/Graphics/Vulkan/Core10/Enums/EventCreateFlags.hs view
@@ -0,0 +1,45 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.EventCreateFlags (EventCreateFlags(..)) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkEventCreateFlags - Reserved for future use+--+-- = Description+--+-- 'EventCreateFlags' is a bitmask type for setting a mask, but is+-- currently reserved for future use.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Event.EventCreateInfo'+newtype EventCreateFlags = EventCreateFlags Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show EventCreateFlags where+ showsPrec p = \case+ EventCreateFlags x -> showParen (p >= 11) (showString "EventCreateFlags 0x" . showHex x)++instance Read EventCreateFlags where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "EventCreateFlags")+ v <- step readPrec+ pure (EventCreateFlags v)))+
+ src/Graphics/Vulkan/Core10/Enums/FenceCreateFlagBits.hs view
@@ -0,0 +1,50 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.FenceCreateFlagBits ( FenceCreateFlagBits( FENCE_CREATE_SIGNALED_BIT+ , ..+ )+ , FenceCreateFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkFenceCreateFlagBits - Bitmask specifying initial state and behavior of+-- a fence+--+-- = See Also+--+-- 'FenceCreateFlags'+newtype FenceCreateFlagBits = FenceCreateFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'FENCE_CREATE_SIGNALED_BIT' specifies that the fence object is created+-- in the signaled state. Otherwise, it is created in the unsignaled state.+pattern FENCE_CREATE_SIGNALED_BIT = FenceCreateFlagBits 0x00000001++type FenceCreateFlags = FenceCreateFlagBits++instance Show FenceCreateFlagBits where+ showsPrec p = \case+ FENCE_CREATE_SIGNALED_BIT -> showString "FENCE_CREATE_SIGNALED_BIT"+ FenceCreateFlagBits x -> showParen (p >= 11) (showString "FenceCreateFlagBits 0x" . showHex x)++instance Read FenceCreateFlagBits where+ readPrec = parens (choose [("FENCE_CREATE_SIGNALED_BIT", pure FENCE_CREATE_SIGNALED_BIT)]+ ++++ prec 10 (do+ expectP (Ident "FenceCreateFlagBits")+ v <- step readPrec+ pure (FenceCreateFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/Filter.hs view
@@ -0,0 +1,63 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.Filter (Filter( FILTER_NEAREST+ , FILTER_LINEAR+ , FILTER_CUBIC_IMG+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkFilter - Specify filters used for texture lookups+--+-- = Description+--+-- These filters are described in detail in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-filtering Texel Filtering>.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Sampler.SamplerCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBlitImage'+newtype Filter = Filter Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'FILTER_NEAREST' specifies nearest filtering.+pattern FILTER_NEAREST = Filter 0+-- | 'FILTER_LINEAR' specifies linear filtering.+pattern FILTER_LINEAR = Filter 1+-- No documentation found for Nested "VkFilter" "VK_FILTER_CUBIC_IMG"+pattern FILTER_CUBIC_IMG = Filter 1000015000+{-# complete FILTER_NEAREST,+ FILTER_LINEAR,+ FILTER_CUBIC_IMG :: Filter #-}++instance Show Filter where+ showsPrec p = \case+ FILTER_NEAREST -> showString "FILTER_NEAREST"+ FILTER_LINEAR -> showString "FILTER_LINEAR"+ FILTER_CUBIC_IMG -> showString "FILTER_CUBIC_IMG"+ Filter x -> showParen (p >= 11) (showString "Filter " . showsPrec 11 x)++instance Read Filter where+ readPrec = parens (choose [("FILTER_NEAREST", pure FILTER_NEAREST)+ , ("FILTER_LINEAR", pure FILTER_LINEAR)+ , ("FILTER_CUBIC_IMG", pure FILTER_CUBIC_IMG)]+ ++++ prec 10 (do+ expectP (Ident "Filter")+ v <- step readPrec+ pure (Filter v)))+
+ src/Graphics/Vulkan/Core10/Enums/Filter.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.Filter (Filter) where++++data Filter+
+ src/Graphics/Vulkan/Core10/Enums/Format.hs view
@@ -0,0 +1,2443 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.Format (Format( FORMAT_UNDEFINED+ , FORMAT_R4G4_UNORM_PACK8+ , FORMAT_R4G4B4A4_UNORM_PACK16+ , FORMAT_B4G4R4A4_UNORM_PACK16+ , FORMAT_R5G6B5_UNORM_PACK16+ , FORMAT_B5G6R5_UNORM_PACK16+ , FORMAT_R5G5B5A1_UNORM_PACK16+ , FORMAT_B5G5R5A1_UNORM_PACK16+ , FORMAT_A1R5G5B5_UNORM_PACK16+ , FORMAT_R8_UNORM+ , FORMAT_R8_SNORM+ , FORMAT_R8_USCALED+ , FORMAT_R8_SSCALED+ , FORMAT_R8_UINT+ , FORMAT_R8_SINT+ , FORMAT_R8_SRGB+ , FORMAT_R8G8_UNORM+ , FORMAT_R8G8_SNORM+ , FORMAT_R8G8_USCALED+ , FORMAT_R8G8_SSCALED+ , FORMAT_R8G8_UINT+ , FORMAT_R8G8_SINT+ , FORMAT_R8G8_SRGB+ , FORMAT_R8G8B8_UNORM+ , FORMAT_R8G8B8_SNORM+ , FORMAT_R8G8B8_USCALED+ , FORMAT_R8G8B8_SSCALED+ , FORMAT_R8G8B8_UINT+ , FORMAT_R8G8B8_SINT+ , FORMAT_R8G8B8_SRGB+ , FORMAT_B8G8R8_UNORM+ , FORMAT_B8G8R8_SNORM+ , FORMAT_B8G8R8_USCALED+ , FORMAT_B8G8R8_SSCALED+ , FORMAT_B8G8R8_UINT+ , FORMAT_B8G8R8_SINT+ , FORMAT_B8G8R8_SRGB+ , FORMAT_R8G8B8A8_UNORM+ , FORMAT_R8G8B8A8_SNORM+ , FORMAT_R8G8B8A8_USCALED+ , FORMAT_R8G8B8A8_SSCALED+ , FORMAT_R8G8B8A8_UINT+ , FORMAT_R8G8B8A8_SINT+ , FORMAT_R8G8B8A8_SRGB+ , FORMAT_B8G8R8A8_UNORM+ , FORMAT_B8G8R8A8_SNORM+ , FORMAT_B8G8R8A8_USCALED+ , FORMAT_B8G8R8A8_SSCALED+ , FORMAT_B8G8R8A8_UINT+ , FORMAT_B8G8R8A8_SINT+ , FORMAT_B8G8R8A8_SRGB+ , FORMAT_A8B8G8R8_UNORM_PACK32+ , FORMAT_A8B8G8R8_SNORM_PACK32+ , FORMAT_A8B8G8R8_USCALED_PACK32+ , FORMAT_A8B8G8R8_SSCALED_PACK32+ , FORMAT_A8B8G8R8_UINT_PACK32+ , FORMAT_A8B8G8R8_SINT_PACK32+ , FORMAT_A8B8G8R8_SRGB_PACK32+ , FORMAT_A2R10G10B10_UNORM_PACK32+ , FORMAT_A2R10G10B10_SNORM_PACK32+ , FORMAT_A2R10G10B10_USCALED_PACK32+ , FORMAT_A2R10G10B10_SSCALED_PACK32+ , FORMAT_A2R10G10B10_UINT_PACK32+ , FORMAT_A2R10G10B10_SINT_PACK32+ , FORMAT_A2B10G10R10_UNORM_PACK32+ , FORMAT_A2B10G10R10_SNORM_PACK32+ , FORMAT_A2B10G10R10_USCALED_PACK32+ , FORMAT_A2B10G10R10_SSCALED_PACK32+ , FORMAT_A2B10G10R10_UINT_PACK32+ , FORMAT_A2B10G10R10_SINT_PACK32+ , FORMAT_R16_UNORM+ , FORMAT_R16_SNORM+ , FORMAT_R16_USCALED+ , FORMAT_R16_SSCALED+ , FORMAT_R16_UINT+ , FORMAT_R16_SINT+ , FORMAT_R16_SFLOAT+ , FORMAT_R16G16_UNORM+ , FORMAT_R16G16_SNORM+ , FORMAT_R16G16_USCALED+ , FORMAT_R16G16_SSCALED+ , FORMAT_R16G16_UINT+ , FORMAT_R16G16_SINT+ , FORMAT_R16G16_SFLOAT+ , FORMAT_R16G16B16_UNORM+ , FORMAT_R16G16B16_SNORM+ , FORMAT_R16G16B16_USCALED+ , FORMAT_R16G16B16_SSCALED+ , FORMAT_R16G16B16_UINT+ , FORMAT_R16G16B16_SINT+ , FORMAT_R16G16B16_SFLOAT+ , FORMAT_R16G16B16A16_UNORM+ , FORMAT_R16G16B16A16_SNORM+ , FORMAT_R16G16B16A16_USCALED+ , FORMAT_R16G16B16A16_SSCALED+ , FORMAT_R16G16B16A16_UINT+ , FORMAT_R16G16B16A16_SINT+ , FORMAT_R16G16B16A16_SFLOAT+ , FORMAT_R32_UINT+ , FORMAT_R32_SINT+ , FORMAT_R32_SFLOAT+ , FORMAT_R32G32_UINT+ , FORMAT_R32G32_SINT+ , FORMAT_R32G32_SFLOAT+ , FORMAT_R32G32B32_UINT+ , FORMAT_R32G32B32_SINT+ , FORMAT_R32G32B32_SFLOAT+ , FORMAT_R32G32B32A32_UINT+ , FORMAT_R32G32B32A32_SINT+ , FORMAT_R32G32B32A32_SFLOAT+ , FORMAT_R64_UINT+ , FORMAT_R64_SINT+ , FORMAT_R64_SFLOAT+ , FORMAT_R64G64_UINT+ , FORMAT_R64G64_SINT+ , FORMAT_R64G64_SFLOAT+ , FORMAT_R64G64B64_UINT+ , FORMAT_R64G64B64_SINT+ , FORMAT_R64G64B64_SFLOAT+ , FORMAT_R64G64B64A64_UINT+ , FORMAT_R64G64B64A64_SINT+ , FORMAT_R64G64B64A64_SFLOAT+ , FORMAT_B10G11R11_UFLOAT_PACK32+ , FORMAT_E5B9G9R9_UFLOAT_PACK32+ , FORMAT_D16_UNORM+ , FORMAT_X8_D24_UNORM_PACK32+ , FORMAT_D32_SFLOAT+ , FORMAT_S8_UINT+ , FORMAT_D16_UNORM_S8_UINT+ , FORMAT_D24_UNORM_S8_UINT+ , FORMAT_D32_SFLOAT_S8_UINT+ , FORMAT_BC1_RGB_UNORM_BLOCK+ , FORMAT_BC1_RGB_SRGB_BLOCK+ , FORMAT_BC1_RGBA_UNORM_BLOCK+ , FORMAT_BC1_RGBA_SRGB_BLOCK+ , FORMAT_BC2_UNORM_BLOCK+ , FORMAT_BC2_SRGB_BLOCK+ , FORMAT_BC3_UNORM_BLOCK+ , FORMAT_BC3_SRGB_BLOCK+ , FORMAT_BC4_UNORM_BLOCK+ , FORMAT_BC4_SNORM_BLOCK+ , FORMAT_BC5_UNORM_BLOCK+ , FORMAT_BC5_SNORM_BLOCK+ , FORMAT_BC6H_UFLOAT_BLOCK+ , FORMAT_BC6H_SFLOAT_BLOCK+ , FORMAT_BC7_UNORM_BLOCK+ , FORMAT_BC7_SRGB_BLOCK+ , FORMAT_ETC2_R8G8B8_UNORM_BLOCK+ , FORMAT_ETC2_R8G8B8_SRGB_BLOCK+ , FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK+ , FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK+ , FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK+ , FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK+ , FORMAT_EAC_R11_UNORM_BLOCK+ , FORMAT_EAC_R11_SNORM_BLOCK+ , FORMAT_EAC_R11G11_UNORM_BLOCK+ , FORMAT_EAC_R11G11_SNORM_BLOCK+ , FORMAT_ASTC_4x4_UNORM_BLOCK+ , FORMAT_ASTC_4x4_SRGB_BLOCK+ , FORMAT_ASTC_5x4_UNORM_BLOCK+ , FORMAT_ASTC_5x4_SRGB_BLOCK+ , FORMAT_ASTC_5x5_UNORM_BLOCK+ , FORMAT_ASTC_5x5_SRGB_BLOCK+ , FORMAT_ASTC_6x5_UNORM_BLOCK+ , FORMAT_ASTC_6x5_SRGB_BLOCK+ , FORMAT_ASTC_6x6_UNORM_BLOCK+ , FORMAT_ASTC_6x6_SRGB_BLOCK+ , FORMAT_ASTC_8x5_UNORM_BLOCK+ , FORMAT_ASTC_8x5_SRGB_BLOCK+ , FORMAT_ASTC_8x6_UNORM_BLOCK+ , FORMAT_ASTC_8x6_SRGB_BLOCK+ , FORMAT_ASTC_8x8_UNORM_BLOCK+ , FORMAT_ASTC_8x8_SRGB_BLOCK+ , FORMAT_ASTC_10x5_UNORM_BLOCK+ , FORMAT_ASTC_10x5_SRGB_BLOCK+ , FORMAT_ASTC_10x6_UNORM_BLOCK+ , FORMAT_ASTC_10x6_SRGB_BLOCK+ , FORMAT_ASTC_10x8_UNORM_BLOCK+ , FORMAT_ASTC_10x8_SRGB_BLOCK+ , FORMAT_ASTC_10x10_UNORM_BLOCK+ , FORMAT_ASTC_10x10_SRGB_BLOCK+ , FORMAT_ASTC_12x10_UNORM_BLOCK+ , FORMAT_ASTC_12x10_SRGB_BLOCK+ , FORMAT_ASTC_12x12_UNORM_BLOCK+ , FORMAT_ASTC_12x12_SRGB_BLOCK+ , FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT+ , FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT+ , FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT+ , FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT+ , FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT+ , FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT+ , FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT+ , FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT+ , FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT+ , FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT+ , FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT+ , FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT+ , FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT+ , FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT+ , FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG+ , FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG+ , FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG+ , FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG+ , FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG+ , FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG+ , FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG+ , FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG+ , FORMAT_G16_B16_R16_3PLANE_444_UNORM+ , FORMAT_G16_B16R16_2PLANE_422_UNORM+ , FORMAT_G16_B16_R16_3PLANE_422_UNORM+ , FORMAT_G16_B16R16_2PLANE_420_UNORM+ , FORMAT_G16_B16_R16_3PLANE_420_UNORM+ , FORMAT_B16G16R16G16_422_UNORM+ , FORMAT_G16B16G16R16_422_UNORM+ , FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16+ , FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16+ , FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16+ , FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16+ , FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16+ , FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16+ , FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16+ , FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16+ , FORMAT_R12X4G12X4_UNORM_2PACK16+ , FORMAT_R12X4_UNORM_PACK16+ , FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16+ , FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16+ , FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16+ , FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16+ , FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16+ , FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16+ , FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16+ , FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16+ , FORMAT_R10X6G10X6_UNORM_2PACK16+ , FORMAT_R10X6_UNORM_PACK16+ , FORMAT_G8_B8_R8_3PLANE_444_UNORM+ , FORMAT_G8_B8R8_2PLANE_422_UNORM+ , FORMAT_G8_B8_R8_3PLANE_422_UNORM+ , FORMAT_G8_B8R8_2PLANE_420_UNORM+ , FORMAT_G8_B8_R8_3PLANE_420_UNORM+ , FORMAT_B8G8R8G8_422_UNORM+ , FORMAT_G8B8G8R8_422_UNORM+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkFormat - Available image formats+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID',+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',+-- 'Graphics.Vulkan.Core10.BufferView.BufferViewCreateInfo',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentImageInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_astc_decode_mode.ImageViewASTCDecodeModeEXT',+-- 'Graphics.Vulkan.Core10.ImageView.ImageViewCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceSparseImageFormatInfo2',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceFormatKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',+-- 'Graphics.Vulkan.Core10.Pipeline.VertexInputAttributeDescription',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.getPhysicalDeviceExternalImageFormatPropertiesNV',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2KHR',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.getPhysicalDeviceSparseImageFormatProperties'+newtype Format = Format Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'FORMAT_UNDEFINED' specifies that the format is not specified.+pattern FORMAT_UNDEFINED = Format 0+-- | 'FORMAT_R4G4_UNORM_PACK8' specifies a two-component, 8-bit packed+-- unsigned normalized format that has a 4-bit R component in bits 4..7,+-- and a 4-bit G component in bits 0..3.+pattern FORMAT_R4G4_UNORM_PACK8 = Format 1+-- | 'FORMAT_R4G4B4A4_UNORM_PACK16' specifies a four-component, 16-bit packed+-- unsigned normalized format that has a 4-bit R component in bits 12..15,+-- a 4-bit G component in bits 8..11, a 4-bit B component in bits 4..7, and+-- a 4-bit A component in bits 0..3.+pattern FORMAT_R4G4B4A4_UNORM_PACK16 = Format 2+-- | 'FORMAT_B4G4R4A4_UNORM_PACK16' specifies a four-component, 16-bit packed+-- unsigned normalized format that has a 4-bit B component in bits 12..15,+-- a 4-bit G component in bits 8..11, a 4-bit R component in bits 4..7, and+-- a 4-bit A component in bits 0..3.+pattern FORMAT_B4G4R4A4_UNORM_PACK16 = Format 3+-- | 'FORMAT_R5G6B5_UNORM_PACK16' specifies a three-component, 16-bit packed+-- unsigned normalized format that has a 5-bit R component in bits 11..15,+-- a 6-bit G component in bits 5..10, and a 5-bit B component in bits 0..4.+pattern FORMAT_R5G6B5_UNORM_PACK16 = Format 4+-- | 'FORMAT_B5G6R5_UNORM_PACK16' specifies a three-component, 16-bit packed+-- unsigned normalized format that has a 5-bit B component in bits 11..15,+-- a 6-bit G component in bits 5..10, and a 5-bit R component in bits 0..4.+pattern FORMAT_B5G6R5_UNORM_PACK16 = Format 5+-- | 'FORMAT_R5G5B5A1_UNORM_PACK16' specifies a four-component, 16-bit packed+-- unsigned normalized format that has a 5-bit R component in bits 11..15,+-- a 5-bit G component in bits 6..10, a 5-bit B component in bits 1..5, and+-- a 1-bit A component in bit 0.+pattern FORMAT_R5G5B5A1_UNORM_PACK16 = Format 6+-- | 'FORMAT_B5G5R5A1_UNORM_PACK16' specifies a four-component, 16-bit packed+-- unsigned normalized format that has a 5-bit B component in bits 11..15,+-- a 5-bit G component in bits 6..10, a 5-bit R component in bits 1..5, and+-- a 1-bit A component in bit 0.+pattern FORMAT_B5G5R5A1_UNORM_PACK16 = Format 7+-- | 'FORMAT_A1R5G5B5_UNORM_PACK16' specifies a four-component, 16-bit packed+-- unsigned normalized format that has a 1-bit A component in bit 15, a+-- 5-bit R component in bits 10..14, a 5-bit G component in bits 5..9, and+-- a 5-bit B component in bits 0..4.+pattern FORMAT_A1R5G5B5_UNORM_PACK16 = Format 8+-- | 'FORMAT_R8_UNORM' specifies a one-component, 8-bit unsigned normalized+-- format that has a single 8-bit R component.+pattern FORMAT_R8_UNORM = Format 9+-- | 'FORMAT_R8_SNORM' specifies a one-component, 8-bit signed normalized+-- format that has a single 8-bit R component.+pattern FORMAT_R8_SNORM = Format 10+-- | 'FORMAT_R8_USCALED' specifies a one-component, 8-bit unsigned scaled+-- integer format that has a single 8-bit R component.+pattern FORMAT_R8_USCALED = Format 11+-- | 'FORMAT_R8_SSCALED' specifies a one-component, 8-bit signed scaled+-- integer format that has a single 8-bit R component.+pattern FORMAT_R8_SSCALED = Format 12+-- | 'FORMAT_R8_UINT' specifies a one-component, 8-bit unsigned integer+-- format that has a single 8-bit R component.+pattern FORMAT_R8_UINT = Format 13+-- | 'FORMAT_R8_SINT' specifies a one-component, 8-bit signed integer format+-- that has a single 8-bit R component.+pattern FORMAT_R8_SINT = Format 14+-- | 'FORMAT_R8_SRGB' specifies a one-component, 8-bit unsigned normalized+-- format that has a single 8-bit R component stored with sRGB nonlinear+-- encoding.+pattern FORMAT_R8_SRGB = Format 15+-- | 'FORMAT_R8G8_UNORM' specifies a two-component, 16-bit unsigned+-- normalized format that has an 8-bit R component in byte 0, and an 8-bit+-- G component in byte 1.+pattern FORMAT_R8G8_UNORM = Format 16+-- | 'FORMAT_R8G8_SNORM' specifies a two-component, 16-bit signed normalized+-- format that has an 8-bit R component in byte 0, and an 8-bit G component+-- in byte 1.+pattern FORMAT_R8G8_SNORM = Format 17+-- | 'FORMAT_R8G8_USCALED' specifies a two-component, 16-bit unsigned scaled+-- integer format that has an 8-bit R component in byte 0, and an 8-bit G+-- component in byte 1.+pattern FORMAT_R8G8_USCALED = Format 18+-- | 'FORMAT_R8G8_SSCALED' specifies a two-component, 16-bit signed scaled+-- integer format that has an 8-bit R component in byte 0, and an 8-bit G+-- component in byte 1.+pattern FORMAT_R8G8_SSCALED = Format 19+-- | 'FORMAT_R8G8_UINT' specifies a two-component, 16-bit unsigned integer+-- format that has an 8-bit R component in byte 0, and an 8-bit G component+-- in byte 1.+pattern FORMAT_R8G8_UINT = Format 20+-- | 'FORMAT_R8G8_SINT' specifies a two-component, 16-bit signed integer+-- format that has an 8-bit R component in byte 0, and an 8-bit G component+-- in byte 1.+pattern FORMAT_R8G8_SINT = Format 21+-- | 'FORMAT_R8G8_SRGB' specifies a two-component, 16-bit unsigned normalized+-- format that has an 8-bit R component stored with sRGB nonlinear encoding+-- in byte 0, and an 8-bit G component stored with sRGB nonlinear encoding+-- in byte 1.+pattern FORMAT_R8G8_SRGB = Format 22+-- | 'FORMAT_R8G8B8_UNORM' specifies a three-component, 24-bit unsigned+-- normalized format that has an 8-bit R component in byte 0, an 8-bit G+-- component in byte 1, and an 8-bit B component in byte 2.+pattern FORMAT_R8G8B8_UNORM = Format 23+-- | 'FORMAT_R8G8B8_SNORM' specifies a three-component, 24-bit signed+-- normalized format that has an 8-bit R component in byte 0, an 8-bit G+-- component in byte 1, and an 8-bit B component in byte 2.+pattern FORMAT_R8G8B8_SNORM = Format 24+-- | 'FORMAT_R8G8B8_USCALED' specifies a three-component, 24-bit unsigned+-- scaled format that has an 8-bit R component in byte 0, an 8-bit G+-- component in byte 1, and an 8-bit B component in byte 2.+pattern FORMAT_R8G8B8_USCALED = Format 25+-- | 'FORMAT_R8G8B8_SSCALED' specifies a three-component, 24-bit signed+-- scaled format that has an 8-bit R component in byte 0, an 8-bit G+-- component in byte 1, and an 8-bit B component in byte 2.+pattern FORMAT_R8G8B8_SSCALED = Format 26+-- | 'FORMAT_R8G8B8_UINT' specifies a three-component, 24-bit unsigned+-- integer format that has an 8-bit R component in byte 0, an 8-bit G+-- component in byte 1, and an 8-bit B component in byte 2.+pattern FORMAT_R8G8B8_UINT = Format 27+-- | 'FORMAT_R8G8B8_SINT' specifies a three-component, 24-bit signed integer+-- format that has an 8-bit R component in byte 0, an 8-bit G component in+-- byte 1, and an 8-bit B component in byte 2.+pattern FORMAT_R8G8B8_SINT = Format 28+-- | 'FORMAT_R8G8B8_SRGB' specifies a three-component, 24-bit unsigned+-- normalized format that has an 8-bit R component stored with sRGB+-- nonlinear encoding in byte 0, an 8-bit G component stored with sRGB+-- nonlinear encoding in byte 1, and an 8-bit B component stored with sRGB+-- nonlinear encoding in byte 2.+pattern FORMAT_R8G8B8_SRGB = Format 29+-- | 'FORMAT_B8G8R8_UNORM' specifies a three-component, 24-bit unsigned+-- normalized format that has an 8-bit B component in byte 0, an 8-bit G+-- component in byte 1, and an 8-bit R component in byte 2.+pattern FORMAT_B8G8R8_UNORM = Format 30+-- | 'FORMAT_B8G8R8_SNORM' specifies a three-component, 24-bit signed+-- normalized format that has an 8-bit B component in byte 0, an 8-bit G+-- component in byte 1, and an 8-bit R component in byte 2.+pattern FORMAT_B8G8R8_SNORM = Format 31+-- | 'FORMAT_B8G8R8_USCALED' specifies a three-component, 24-bit unsigned+-- scaled format that has an 8-bit B component in byte 0, an 8-bit G+-- component in byte 1, and an 8-bit R component in byte 2.+pattern FORMAT_B8G8R8_USCALED = Format 32+-- | 'FORMAT_B8G8R8_SSCALED' specifies a three-component, 24-bit signed+-- scaled format that has an 8-bit B component in byte 0, an 8-bit G+-- component in byte 1, and an 8-bit R component in byte 2.+pattern FORMAT_B8G8R8_SSCALED = Format 33+-- | 'FORMAT_B8G8R8_UINT' specifies a three-component, 24-bit unsigned+-- integer format that has an 8-bit B component in byte 0, an 8-bit G+-- component in byte 1, and an 8-bit R component in byte 2.+pattern FORMAT_B8G8R8_UINT = Format 34+-- | 'FORMAT_B8G8R8_SINT' specifies a three-component, 24-bit signed integer+-- format that has an 8-bit B component in byte 0, an 8-bit G component in+-- byte 1, and an 8-bit R component in byte 2.+pattern FORMAT_B8G8R8_SINT = Format 35+-- | 'FORMAT_B8G8R8_SRGB' specifies a three-component, 24-bit unsigned+-- normalized format that has an 8-bit B component stored with sRGB+-- nonlinear encoding in byte 0, an 8-bit G component stored with sRGB+-- nonlinear encoding in byte 1, and an 8-bit R component stored with sRGB+-- nonlinear encoding in byte 2.+pattern FORMAT_B8G8R8_SRGB = Format 36+-- | 'FORMAT_R8G8B8A8_UNORM' specifies a four-component, 32-bit unsigned+-- normalized format that has an 8-bit R component in byte 0, an 8-bit G+-- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A+-- component in byte 3.+pattern FORMAT_R8G8B8A8_UNORM = Format 37+-- | 'FORMAT_R8G8B8A8_SNORM' specifies a four-component, 32-bit signed+-- normalized format that has an 8-bit R component in byte 0, an 8-bit G+-- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A+-- component in byte 3.+pattern FORMAT_R8G8B8A8_SNORM = Format 38+-- | 'FORMAT_R8G8B8A8_USCALED' specifies a four-component, 32-bit unsigned+-- scaled format that has an 8-bit R component in byte 0, an 8-bit G+-- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A+-- component in byte 3.+pattern FORMAT_R8G8B8A8_USCALED = Format 39+-- | 'FORMAT_R8G8B8A8_SSCALED' specifies a four-component, 32-bit signed+-- scaled format that has an 8-bit R component in byte 0, an 8-bit G+-- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A+-- component in byte 3.+pattern FORMAT_R8G8B8A8_SSCALED = Format 40+-- | 'FORMAT_R8G8B8A8_UINT' specifies a four-component, 32-bit unsigned+-- integer format that has an 8-bit R component in byte 0, an 8-bit G+-- component in byte 1, an 8-bit B component in byte 2, and an 8-bit A+-- component in byte 3.+pattern FORMAT_R8G8B8A8_UINT = Format 41+-- | 'FORMAT_R8G8B8A8_SINT' specifies a four-component, 32-bit signed integer+-- format that has an 8-bit R component in byte 0, an 8-bit G component in+-- byte 1, an 8-bit B component in byte 2, and an 8-bit A component in byte+-- 3.+pattern FORMAT_R8G8B8A8_SINT = Format 42+-- | 'FORMAT_R8G8B8A8_SRGB' specifies a four-component, 32-bit unsigned+-- normalized format that has an 8-bit R component stored with sRGB+-- nonlinear encoding in byte 0, an 8-bit G component stored with sRGB+-- nonlinear encoding in byte 1, an 8-bit B component stored with sRGB+-- nonlinear encoding in byte 2, and an 8-bit A component in byte 3.+pattern FORMAT_R8G8B8A8_SRGB = Format 43+-- | 'FORMAT_B8G8R8A8_UNORM' specifies a four-component, 32-bit unsigned+-- normalized format that has an 8-bit B component in byte 0, an 8-bit G+-- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A+-- component in byte 3.+pattern FORMAT_B8G8R8A8_UNORM = Format 44+-- | 'FORMAT_B8G8R8A8_SNORM' specifies a four-component, 32-bit signed+-- normalized format that has an 8-bit B component in byte 0, an 8-bit G+-- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A+-- component in byte 3.+pattern FORMAT_B8G8R8A8_SNORM = Format 45+-- | 'FORMAT_B8G8R8A8_USCALED' specifies a four-component, 32-bit unsigned+-- scaled format that has an 8-bit B component in byte 0, an 8-bit G+-- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A+-- component in byte 3.+pattern FORMAT_B8G8R8A8_USCALED = Format 46+-- | 'FORMAT_B8G8R8A8_SSCALED' specifies a four-component, 32-bit signed+-- scaled format that has an 8-bit B component in byte 0, an 8-bit G+-- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A+-- component in byte 3.+pattern FORMAT_B8G8R8A8_SSCALED = Format 47+-- | 'FORMAT_B8G8R8A8_UINT' specifies a four-component, 32-bit unsigned+-- integer format that has an 8-bit B component in byte 0, an 8-bit G+-- component in byte 1, an 8-bit R component in byte 2, and an 8-bit A+-- component in byte 3.+pattern FORMAT_B8G8R8A8_UINT = Format 48+-- | 'FORMAT_B8G8R8A8_SINT' specifies a four-component, 32-bit signed integer+-- format that has an 8-bit B component in byte 0, an 8-bit G component in+-- byte 1, an 8-bit R component in byte 2, and an 8-bit A component in byte+-- 3.+pattern FORMAT_B8G8R8A8_SINT = Format 49+-- | 'FORMAT_B8G8R8A8_SRGB' specifies a four-component, 32-bit unsigned+-- normalized format that has an 8-bit B component stored with sRGB+-- nonlinear encoding in byte 0, an 8-bit G component stored with sRGB+-- nonlinear encoding in byte 1, an 8-bit R component stored with sRGB+-- nonlinear encoding in byte 2, and an 8-bit A component in byte 3.+pattern FORMAT_B8G8R8A8_SRGB = Format 50+-- | 'FORMAT_A8B8G8R8_UNORM_PACK32' specifies a four-component, 32-bit packed+-- unsigned normalized format that has an 8-bit A component in bits 24..31,+-- an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15,+-- and an 8-bit R component in bits 0..7.+pattern FORMAT_A8B8G8R8_UNORM_PACK32 = Format 51+-- | 'FORMAT_A8B8G8R8_SNORM_PACK32' specifies a four-component, 32-bit packed+-- signed normalized format that has an 8-bit A component in bits 24..31,+-- an 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15,+-- and an 8-bit R component in bits 0..7.+pattern FORMAT_A8B8G8R8_SNORM_PACK32 = Format 52+-- | 'FORMAT_A8B8G8R8_USCALED_PACK32' specifies a four-component, 32-bit+-- packed unsigned scaled integer format that has an 8-bit A component in+-- bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component+-- in bits 8..15, and an 8-bit R component in bits 0..7.+pattern FORMAT_A8B8G8R8_USCALED_PACK32 = Format 53+-- | 'FORMAT_A8B8G8R8_SSCALED_PACK32' specifies a four-component, 32-bit+-- packed signed scaled integer format that has an 8-bit A component in+-- bits 24..31, an 8-bit B component in bits 16..23, an 8-bit G component+-- in bits 8..15, and an 8-bit R component in bits 0..7.+pattern FORMAT_A8B8G8R8_SSCALED_PACK32 = Format 54+-- | 'FORMAT_A8B8G8R8_UINT_PACK32' specifies a four-component, 32-bit packed+-- unsigned integer format that has an 8-bit A component in bits 24..31, an+-- 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15,+-- and an 8-bit R component in bits 0..7.+pattern FORMAT_A8B8G8R8_UINT_PACK32 = Format 55+-- | 'FORMAT_A8B8G8R8_SINT_PACK32' specifies a four-component, 32-bit packed+-- signed integer format that has an 8-bit A component in bits 24..31, an+-- 8-bit B component in bits 16..23, an 8-bit G component in bits 8..15,+-- and an 8-bit R component in bits 0..7.+pattern FORMAT_A8B8G8R8_SINT_PACK32 = Format 56+-- | 'FORMAT_A8B8G8R8_SRGB_PACK32' specifies a four-component, 32-bit packed+-- unsigned normalized format that has an 8-bit A component in bits 24..31,+-- an 8-bit B component stored with sRGB nonlinear encoding in bits 16..23,+-- an 8-bit G component stored with sRGB nonlinear encoding in bits 8..15,+-- and an 8-bit R component stored with sRGB nonlinear encoding in bits+-- 0..7.+pattern FORMAT_A8B8G8R8_SRGB_PACK32 = Format 57+-- | 'FORMAT_A2R10G10B10_UNORM_PACK32' specifies a four-component, 32-bit+-- packed unsigned normalized format that has a 2-bit A component in bits+-- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in+-- bits 10..19, and a 10-bit B component in bits 0..9.+pattern FORMAT_A2R10G10B10_UNORM_PACK32 = Format 58+-- | 'FORMAT_A2R10G10B10_SNORM_PACK32' specifies a four-component, 32-bit+-- packed signed normalized format that has a 2-bit A component in bits+-- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in+-- bits 10..19, and a 10-bit B component in bits 0..9.+pattern FORMAT_A2R10G10B10_SNORM_PACK32 = Format 59+-- | 'FORMAT_A2R10G10B10_USCALED_PACK32' specifies a four-component, 32-bit+-- packed unsigned scaled integer format that has a 2-bit A component in+-- bits 30..31, a 10-bit R component in bits 20..29, a 10-bit G component+-- in bits 10..19, and a 10-bit B component in bits 0..9.+pattern FORMAT_A2R10G10B10_USCALED_PACK32 = Format 60+-- | 'FORMAT_A2R10G10B10_SSCALED_PACK32' specifies a four-component, 32-bit+-- packed signed scaled integer format that has a 2-bit A component in bits+-- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in+-- bits 10..19, and a 10-bit B component in bits 0..9.+pattern FORMAT_A2R10G10B10_SSCALED_PACK32 = Format 61+-- | 'FORMAT_A2R10G10B10_UINT_PACK32' specifies a four-component, 32-bit+-- packed unsigned integer format that has a 2-bit A component in bits+-- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in+-- bits 10..19, and a 10-bit B component in bits 0..9.+pattern FORMAT_A2R10G10B10_UINT_PACK32 = Format 62+-- | 'FORMAT_A2R10G10B10_SINT_PACK32' specifies a four-component, 32-bit+-- packed signed integer format that has a 2-bit A component in bits+-- 30..31, a 10-bit R component in bits 20..29, a 10-bit G component in+-- bits 10..19, and a 10-bit B component in bits 0..9.+pattern FORMAT_A2R10G10B10_SINT_PACK32 = Format 63+-- | 'FORMAT_A2B10G10R10_UNORM_PACK32' specifies a four-component, 32-bit+-- packed unsigned normalized format that has a 2-bit A component in bits+-- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in+-- bits 10..19, and a 10-bit R component in bits 0..9.+pattern FORMAT_A2B10G10R10_UNORM_PACK32 = Format 64+-- | 'FORMAT_A2B10G10R10_SNORM_PACK32' specifies a four-component, 32-bit+-- packed signed normalized format that has a 2-bit A component in bits+-- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in+-- bits 10..19, and a 10-bit R component in bits 0..9.+pattern FORMAT_A2B10G10R10_SNORM_PACK32 = Format 65+-- | 'FORMAT_A2B10G10R10_USCALED_PACK32' specifies a four-component, 32-bit+-- packed unsigned scaled integer format that has a 2-bit A component in+-- bits 30..31, a 10-bit B component in bits 20..29, a 10-bit G component+-- in bits 10..19, and a 10-bit R component in bits 0..9.+pattern FORMAT_A2B10G10R10_USCALED_PACK32 = Format 66+-- | 'FORMAT_A2B10G10R10_SSCALED_PACK32' specifies a four-component, 32-bit+-- packed signed scaled integer format that has a 2-bit A component in bits+-- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in+-- bits 10..19, and a 10-bit R component in bits 0..9.+pattern FORMAT_A2B10G10R10_SSCALED_PACK32 = Format 67+-- | 'FORMAT_A2B10G10R10_UINT_PACK32' specifies a four-component, 32-bit+-- packed unsigned integer format that has a 2-bit A component in bits+-- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in+-- bits 10..19, and a 10-bit R component in bits 0..9.+pattern FORMAT_A2B10G10R10_UINT_PACK32 = Format 68+-- | 'FORMAT_A2B10G10R10_SINT_PACK32' specifies a four-component, 32-bit+-- packed signed integer format that has a 2-bit A component in bits+-- 30..31, a 10-bit B component in bits 20..29, a 10-bit G component in+-- bits 10..19, and a 10-bit R component in bits 0..9.+pattern FORMAT_A2B10G10R10_SINT_PACK32 = Format 69+-- | 'FORMAT_R16_UNORM' specifies a one-component, 16-bit unsigned normalized+-- format that has a single 16-bit R component.+pattern FORMAT_R16_UNORM = Format 70+-- | 'FORMAT_R16_SNORM' specifies a one-component, 16-bit signed normalized+-- format that has a single 16-bit R component.+pattern FORMAT_R16_SNORM = Format 71+-- | 'FORMAT_R16_USCALED' specifies a one-component, 16-bit unsigned scaled+-- integer format that has a single 16-bit R component.+pattern FORMAT_R16_USCALED = Format 72+-- | 'FORMAT_R16_SSCALED' specifies a one-component, 16-bit signed scaled+-- integer format that has a single 16-bit R component.+pattern FORMAT_R16_SSCALED = Format 73+-- | 'FORMAT_R16_UINT' specifies a one-component, 16-bit unsigned integer+-- format that has a single 16-bit R component.+pattern FORMAT_R16_UINT = Format 74+-- | 'FORMAT_R16_SINT' specifies a one-component, 16-bit signed integer+-- format that has a single 16-bit R component.+pattern FORMAT_R16_SINT = Format 75+-- | 'FORMAT_R16_SFLOAT' specifies a one-component, 16-bit signed+-- floating-point format that has a single 16-bit R component.+pattern FORMAT_R16_SFLOAT = Format 76+-- | 'FORMAT_R16G16_UNORM' specifies a two-component, 32-bit unsigned+-- normalized format that has a 16-bit R component in bytes 0..1, and a+-- 16-bit G component in bytes 2..3.+pattern FORMAT_R16G16_UNORM = Format 77+-- | 'FORMAT_R16G16_SNORM' specifies a two-component, 32-bit signed+-- normalized format that has a 16-bit R component in bytes 0..1, and a+-- 16-bit G component in bytes 2..3.+pattern FORMAT_R16G16_SNORM = Format 78+-- | 'FORMAT_R16G16_USCALED' specifies a two-component, 32-bit unsigned+-- scaled integer format that has a 16-bit R component in bytes 0..1, and a+-- 16-bit G component in bytes 2..3.+pattern FORMAT_R16G16_USCALED = Format 79+-- | 'FORMAT_R16G16_SSCALED' specifies a two-component, 32-bit signed scaled+-- integer format that has a 16-bit R component in bytes 0..1, and a 16-bit+-- G component in bytes 2..3.+pattern FORMAT_R16G16_SSCALED = Format 80+-- | 'FORMAT_R16G16_UINT' specifies a two-component, 32-bit unsigned integer+-- format that has a 16-bit R component in bytes 0..1, and a 16-bit G+-- component in bytes 2..3.+pattern FORMAT_R16G16_UINT = Format 81+-- | 'FORMAT_R16G16_SINT' specifies a two-component, 32-bit signed integer+-- format that has a 16-bit R component in bytes 0..1, and a 16-bit G+-- component in bytes 2..3.+pattern FORMAT_R16G16_SINT = Format 82+-- | 'FORMAT_R16G16_SFLOAT' specifies a two-component, 32-bit signed+-- floating-point format that has a 16-bit R component in bytes 0..1, and a+-- 16-bit G component in bytes 2..3.+pattern FORMAT_R16G16_SFLOAT = Format 83+-- | 'FORMAT_R16G16B16_UNORM' specifies a three-component, 48-bit unsigned+-- normalized format that has a 16-bit R component in bytes 0..1, a 16-bit+-- G component in bytes 2..3, and a 16-bit B component in bytes 4..5.+pattern FORMAT_R16G16B16_UNORM = Format 84+-- | 'FORMAT_R16G16B16_SNORM' specifies a three-component, 48-bit signed+-- normalized format that has a 16-bit R component in bytes 0..1, a 16-bit+-- G component in bytes 2..3, and a 16-bit B component in bytes 4..5.+pattern FORMAT_R16G16B16_SNORM = Format 85+-- | 'FORMAT_R16G16B16_USCALED' specifies a three-component, 48-bit unsigned+-- scaled integer format that has a 16-bit R component in bytes 0..1, a+-- 16-bit G component in bytes 2..3, and a 16-bit B component in bytes+-- 4..5.+pattern FORMAT_R16G16B16_USCALED = Format 86+-- | 'FORMAT_R16G16B16_SSCALED' specifies a three-component, 48-bit signed+-- scaled integer format that has a 16-bit R component in bytes 0..1, a+-- 16-bit G component in bytes 2..3, and a 16-bit B component in bytes+-- 4..5.+pattern FORMAT_R16G16B16_SSCALED = Format 87+-- | 'FORMAT_R16G16B16_UINT' specifies a three-component, 48-bit unsigned+-- integer format that has a 16-bit R component in bytes 0..1, a 16-bit G+-- component in bytes 2..3, and a 16-bit B component in bytes 4..5.+pattern FORMAT_R16G16B16_UINT = Format 88+-- | 'FORMAT_R16G16B16_SINT' specifies a three-component, 48-bit signed+-- integer format that has a 16-bit R component in bytes 0..1, a 16-bit G+-- component in bytes 2..3, and a 16-bit B component in bytes 4..5.+pattern FORMAT_R16G16B16_SINT = Format 89+-- | 'FORMAT_R16G16B16_SFLOAT' specifies a three-component, 48-bit signed+-- floating-point format that has a 16-bit R component in bytes 0..1, a+-- 16-bit G component in bytes 2..3, and a 16-bit B component in bytes+-- 4..5.+pattern FORMAT_R16G16B16_SFLOAT = Format 90+-- | 'FORMAT_R16G16B16A16_UNORM' specifies a four-component, 64-bit unsigned+-- normalized format that has a 16-bit R component in bytes 0..1, a 16-bit+-- G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a+-- 16-bit A component in bytes 6..7.+pattern FORMAT_R16G16B16A16_UNORM = Format 91+-- | 'FORMAT_R16G16B16A16_SNORM' specifies a four-component, 64-bit signed+-- normalized format that has a 16-bit R component in bytes 0..1, a 16-bit+-- G component in bytes 2..3, a 16-bit B component in bytes 4..5, and a+-- 16-bit A component in bytes 6..7.+pattern FORMAT_R16G16B16A16_SNORM = Format 92+-- | 'FORMAT_R16G16B16A16_USCALED' specifies a four-component, 64-bit+-- unsigned scaled integer format that has a 16-bit R component in bytes+-- 0..1, a 16-bit G component in bytes 2..3, a 16-bit B component in bytes+-- 4..5, and a 16-bit A component in bytes 6..7.+pattern FORMAT_R16G16B16A16_USCALED = Format 93+-- | 'FORMAT_R16G16B16A16_SSCALED' specifies a four-component, 64-bit signed+-- scaled integer format that has a 16-bit R component in bytes 0..1, a+-- 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5,+-- and a 16-bit A component in bytes 6..7.+pattern FORMAT_R16G16B16A16_SSCALED = Format 94+-- | 'FORMAT_R16G16B16A16_UINT' specifies a four-component, 64-bit unsigned+-- integer format that has a 16-bit R component in bytes 0..1, a 16-bit G+-- component in bytes 2..3, a 16-bit B component in bytes 4..5, and a+-- 16-bit A component in bytes 6..7.+pattern FORMAT_R16G16B16A16_UINT = Format 95+-- | 'FORMAT_R16G16B16A16_SINT' specifies a four-component, 64-bit signed+-- integer format that has a 16-bit R component in bytes 0..1, a 16-bit G+-- component in bytes 2..3, a 16-bit B component in bytes 4..5, and a+-- 16-bit A component in bytes 6..7.+pattern FORMAT_R16G16B16A16_SINT = Format 96+-- | 'FORMAT_R16G16B16A16_SFLOAT' specifies a four-component, 64-bit signed+-- floating-point format that has a 16-bit R component in bytes 0..1, a+-- 16-bit G component in bytes 2..3, a 16-bit B component in bytes 4..5,+-- and a 16-bit A component in bytes 6..7.+pattern FORMAT_R16G16B16A16_SFLOAT = Format 97+-- | 'FORMAT_R32_UINT' specifies a one-component, 32-bit unsigned integer+-- format that has a single 32-bit R component.+pattern FORMAT_R32_UINT = Format 98+-- | 'FORMAT_R32_SINT' specifies a one-component, 32-bit signed integer+-- format that has a single 32-bit R component.+pattern FORMAT_R32_SINT = Format 99+-- | 'FORMAT_R32_SFLOAT' specifies a one-component, 32-bit signed+-- floating-point format that has a single 32-bit R component.+pattern FORMAT_R32_SFLOAT = Format 100+-- | 'FORMAT_R32G32_UINT' specifies a two-component, 64-bit unsigned integer+-- format that has a 32-bit R component in bytes 0..3, and a 32-bit G+-- component in bytes 4..7.+pattern FORMAT_R32G32_UINT = Format 101+-- | 'FORMAT_R32G32_SINT' specifies a two-component, 64-bit signed integer+-- format that has a 32-bit R component in bytes 0..3, and a 32-bit G+-- component in bytes 4..7.+pattern FORMAT_R32G32_SINT = Format 102+-- | 'FORMAT_R32G32_SFLOAT' specifies a two-component, 64-bit signed+-- floating-point format that has a 32-bit R component in bytes 0..3, and a+-- 32-bit G component in bytes 4..7.+pattern FORMAT_R32G32_SFLOAT = Format 103+-- | 'FORMAT_R32G32B32_UINT' specifies a three-component, 96-bit unsigned+-- integer format that has a 32-bit R component in bytes 0..3, a 32-bit G+-- component in bytes 4..7, and a 32-bit B component in bytes 8..11.+pattern FORMAT_R32G32B32_UINT = Format 104+-- | 'FORMAT_R32G32B32_SINT' specifies a three-component, 96-bit signed+-- integer format that has a 32-bit R component in bytes 0..3, a 32-bit G+-- component in bytes 4..7, and a 32-bit B component in bytes 8..11.+pattern FORMAT_R32G32B32_SINT = Format 105+-- | 'FORMAT_R32G32B32_SFLOAT' specifies a three-component, 96-bit signed+-- floating-point format that has a 32-bit R component in bytes 0..3, a+-- 32-bit G component in bytes 4..7, and a 32-bit B component in bytes+-- 8..11.+pattern FORMAT_R32G32B32_SFLOAT = Format 106+-- | 'FORMAT_R32G32B32A32_UINT' specifies a four-component, 128-bit unsigned+-- integer format that has a 32-bit R component in bytes 0..3, a 32-bit G+-- component in bytes 4..7, a 32-bit B component in bytes 8..11, and a+-- 32-bit A component in bytes 12..15.+pattern FORMAT_R32G32B32A32_UINT = Format 107+-- | 'FORMAT_R32G32B32A32_SINT' specifies a four-component, 128-bit signed+-- integer format that has a 32-bit R component in bytes 0..3, a 32-bit G+-- component in bytes 4..7, a 32-bit B component in bytes 8..11, and a+-- 32-bit A component in bytes 12..15.+pattern FORMAT_R32G32B32A32_SINT = Format 108+-- | 'FORMAT_R32G32B32A32_SFLOAT' specifies a four-component, 128-bit signed+-- floating-point format that has a 32-bit R component in bytes 0..3, a+-- 32-bit G component in bytes 4..7, a 32-bit B component in bytes 8..11,+-- and a 32-bit A component in bytes 12..15.+pattern FORMAT_R32G32B32A32_SFLOAT = Format 109+-- | 'FORMAT_R64_UINT' specifies a one-component, 64-bit unsigned integer+-- format that has a single 64-bit R component.+pattern FORMAT_R64_UINT = Format 110+-- | 'FORMAT_R64_SINT' specifies a one-component, 64-bit signed integer+-- format that has a single 64-bit R component.+pattern FORMAT_R64_SINT = Format 111+-- | 'FORMAT_R64_SFLOAT' specifies a one-component, 64-bit signed+-- floating-point format that has a single 64-bit R component.+pattern FORMAT_R64_SFLOAT = Format 112+-- | 'FORMAT_R64G64_UINT' specifies a two-component, 128-bit unsigned integer+-- format that has a 64-bit R component in bytes 0..7, and a 64-bit G+-- component in bytes 8..15.+pattern FORMAT_R64G64_UINT = Format 113+-- | 'FORMAT_R64G64_SINT' specifies a two-component, 128-bit signed integer+-- format that has a 64-bit R component in bytes 0..7, and a 64-bit G+-- component in bytes 8..15.+pattern FORMAT_R64G64_SINT = Format 114+-- | 'FORMAT_R64G64_SFLOAT' specifies a two-component, 128-bit signed+-- floating-point format that has a 64-bit R component in bytes 0..7, and a+-- 64-bit G component in bytes 8..15.+pattern FORMAT_R64G64_SFLOAT = Format 115+-- | 'FORMAT_R64G64B64_UINT' specifies a three-component, 192-bit unsigned+-- integer format that has a 64-bit R component in bytes 0..7, a 64-bit G+-- component in bytes 8..15, and a 64-bit B component in bytes 16..23.+pattern FORMAT_R64G64B64_UINT = Format 116+-- | 'FORMAT_R64G64B64_SINT' specifies a three-component, 192-bit signed+-- integer format that has a 64-bit R component in bytes 0..7, a 64-bit G+-- component in bytes 8..15, and a 64-bit B component in bytes 16..23.+pattern FORMAT_R64G64B64_SINT = Format 117+-- | 'FORMAT_R64G64B64_SFLOAT' specifies a three-component, 192-bit signed+-- floating-point format that has a 64-bit R component in bytes 0..7, a+-- 64-bit G component in bytes 8..15, and a 64-bit B component in bytes+-- 16..23.+pattern FORMAT_R64G64B64_SFLOAT = Format 118+-- | 'FORMAT_R64G64B64A64_UINT' specifies a four-component, 256-bit unsigned+-- integer format that has a 64-bit R component in bytes 0..7, a 64-bit G+-- component in bytes 8..15, a 64-bit B component in bytes 16..23, and a+-- 64-bit A component in bytes 24..31.+pattern FORMAT_R64G64B64A64_UINT = Format 119+-- | 'FORMAT_R64G64B64A64_SINT' specifies a four-component, 256-bit signed+-- integer format that has a 64-bit R component in bytes 0..7, a 64-bit G+-- component in bytes 8..15, a 64-bit B component in bytes 16..23, and a+-- 64-bit A component in bytes 24..31.+pattern FORMAT_R64G64B64A64_SINT = Format 120+-- | 'FORMAT_R64G64B64A64_SFLOAT' specifies a four-component, 256-bit signed+-- floating-point format that has a 64-bit R component in bytes 0..7, a+-- 64-bit G component in bytes 8..15, a 64-bit B component in bytes 16..23,+-- and a 64-bit A component in bytes 24..31.+pattern FORMAT_R64G64B64A64_SFLOAT = Format 121+-- | 'FORMAT_B10G11R11_UFLOAT_PACK32' specifies a three-component, 32-bit+-- packed unsigned floating-point format that has a 10-bit B component in+-- bits 22..31, an 11-bit G component in bits 11..21, an 11-bit R component+-- in bits 0..10. See+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fp10>+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fp11>.+pattern FORMAT_B10G11R11_UFLOAT_PACK32 = Format 122+-- | 'FORMAT_E5B9G9R9_UFLOAT_PACK32' specifies a three-component, 32-bit+-- packed unsigned floating-point format that has a 5-bit shared exponent+-- in bits 27..31, a 9-bit B component mantissa in bits 18..26, a 9-bit G+-- component mantissa in bits 9..17, and a 9-bit R component mantissa in+-- bits 0..8.+pattern FORMAT_E5B9G9R9_UFLOAT_PACK32 = Format 123+-- | 'FORMAT_D16_UNORM' specifies a one-component, 16-bit unsigned normalized+-- format that has a single 16-bit depth component.+pattern FORMAT_D16_UNORM = Format 124+-- | 'FORMAT_X8_D24_UNORM_PACK32' specifies a two-component, 32-bit format+-- that has 24 unsigned normalized bits in the depth component and,+-- optionally:, 8 bits that are unused.+pattern FORMAT_X8_D24_UNORM_PACK32 = Format 125+-- | 'FORMAT_D32_SFLOAT' specifies a one-component, 32-bit signed+-- floating-point format that has 32-bits in the depth component.+pattern FORMAT_D32_SFLOAT = Format 126+-- | 'FORMAT_S8_UINT' specifies a one-component, 8-bit unsigned integer+-- format that has 8-bits in the stencil component.+pattern FORMAT_S8_UINT = Format 127+-- | 'FORMAT_D16_UNORM_S8_UINT' specifies a two-component, 24-bit format that+-- has 16 unsigned normalized bits in the depth component and 8 unsigned+-- integer bits in the stencil component.+pattern FORMAT_D16_UNORM_S8_UINT = Format 128+-- | 'FORMAT_D24_UNORM_S8_UINT' specifies a two-component, 32-bit packed+-- format that has 8 unsigned integer bits in the stencil component, and 24+-- unsigned normalized bits in the depth component.+pattern FORMAT_D24_UNORM_S8_UINT = Format 129+-- | 'FORMAT_D32_SFLOAT_S8_UINT' specifies a two-component format that has 32+-- signed float bits in the depth component and 8 unsigned integer bits in+-- the stencil component. There are optionally: 24-bits that are unused.+pattern FORMAT_D32_SFLOAT_S8_UINT = Format 130+-- | 'FORMAT_BC1_RGB_UNORM_BLOCK' specifies a three-component,+-- block-compressed format where each 64-bit compressed texel block encodes+-- a 4×4 rectangle of unsigned normalized RGB texel data. This format has+-- no alpha and is considered opaque.+pattern FORMAT_BC1_RGB_UNORM_BLOCK = Format 131+-- | 'FORMAT_BC1_RGB_SRGB_BLOCK' specifies a three-component,+-- block-compressed format where each 64-bit compressed texel block encodes+-- a 4×4 rectangle of unsigned normalized RGB texel data with sRGB+-- nonlinear encoding. This format has no alpha and is considered opaque.+pattern FORMAT_BC1_RGB_SRGB_BLOCK = Format 132+-- | 'FORMAT_BC1_RGBA_UNORM_BLOCK' specifies a four-component,+-- block-compressed format where each 64-bit compressed texel block encodes+-- a 4×4 rectangle of unsigned normalized RGB texel data, and provides 1+-- bit of alpha.+pattern FORMAT_BC1_RGBA_UNORM_BLOCK = Format 133+-- | 'FORMAT_BC1_RGBA_SRGB_BLOCK' specifies a four-component,+-- block-compressed format where each 64-bit compressed texel block encodes+-- a 4×4 rectangle of unsigned normalized RGB texel data with sRGB+-- nonlinear encoding, and provides 1 bit of alpha.+pattern FORMAT_BC1_RGBA_SRGB_BLOCK = Format 134+-- | 'FORMAT_BC2_UNORM_BLOCK' specifies a four-component, block-compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned normalized RGBA texel data with the first 64 bits encoding+-- alpha values followed by 64 bits encoding RGB values.+pattern FORMAT_BC2_UNORM_BLOCK = Format 135+-- | 'FORMAT_BC2_SRGB_BLOCK' specifies a four-component, block-compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned normalized RGBA texel data with the first 64 bits encoding+-- alpha values followed by 64 bits encoding RGB values with sRGB nonlinear+-- encoding.+pattern FORMAT_BC2_SRGB_BLOCK = Format 136+-- | 'FORMAT_BC3_UNORM_BLOCK' specifies a four-component, block-compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned normalized RGBA texel data with the first 64 bits encoding+-- alpha values followed by 64 bits encoding RGB values.+pattern FORMAT_BC3_UNORM_BLOCK = Format 137+-- | 'FORMAT_BC3_SRGB_BLOCK' specifies a four-component, block-compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned normalized RGBA texel data with the first 64 bits encoding+-- alpha values followed by 64 bits encoding RGB values with sRGB nonlinear+-- encoding.+pattern FORMAT_BC3_SRGB_BLOCK = Format 138+-- | 'FORMAT_BC4_UNORM_BLOCK' specifies a one-component, block-compressed+-- format where each 64-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned normalized red texel data.+pattern FORMAT_BC4_UNORM_BLOCK = Format 139+-- | 'FORMAT_BC4_SNORM_BLOCK' specifies a one-component, block-compressed+-- format where each 64-bit compressed texel block encodes a 4×4 rectangle+-- of signed normalized red texel data.+pattern FORMAT_BC4_SNORM_BLOCK = Format 140+-- | 'FORMAT_BC5_UNORM_BLOCK' specifies a two-component, block-compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned normalized RG texel data with the first 64 bits encoding red+-- values followed by 64 bits encoding green values.+pattern FORMAT_BC5_UNORM_BLOCK = Format 141+-- | 'FORMAT_BC5_SNORM_BLOCK' specifies a two-component, block-compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of signed normalized RG texel data with the first 64 bits encoding red+-- values followed by 64 bits encoding green values.+pattern FORMAT_BC5_SNORM_BLOCK = Format 142+-- | 'FORMAT_BC6H_UFLOAT_BLOCK' specifies a three-component, block-compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned floating-point RGB texel data.+pattern FORMAT_BC6H_UFLOAT_BLOCK = Format 143+-- | 'FORMAT_BC6H_SFLOAT_BLOCK' specifies a three-component, block-compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of signed floating-point RGB texel data.+pattern FORMAT_BC6H_SFLOAT_BLOCK = Format 144+-- | 'FORMAT_BC7_UNORM_BLOCK' specifies a four-component, block-compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned normalized RGBA texel data.+pattern FORMAT_BC7_UNORM_BLOCK = Format 145+-- | 'FORMAT_BC7_SRGB_BLOCK' specifies a four-component, block-compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned normalized RGBA texel data with sRGB nonlinear encoding+-- applied to the RGB components.+pattern FORMAT_BC7_SRGB_BLOCK = Format 146+-- | 'FORMAT_ETC2_R8G8B8_UNORM_BLOCK' specifies a three-component, ETC2+-- compressed format where each 64-bit compressed texel block encodes a 4×4+-- rectangle of unsigned normalized RGB texel data. This format has no+-- alpha and is considered opaque.+pattern FORMAT_ETC2_R8G8B8_UNORM_BLOCK = Format 147+-- | 'FORMAT_ETC2_R8G8B8_SRGB_BLOCK' specifies a three-component, ETC2+-- compressed format where each 64-bit compressed texel block encodes a 4×4+-- rectangle of unsigned normalized RGB texel data with sRGB nonlinear+-- encoding. This format has no alpha and is considered opaque.+pattern FORMAT_ETC2_R8G8B8_SRGB_BLOCK = Format 148+-- | 'FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK' specifies a four-component, ETC2+-- compressed format where each 64-bit compressed texel block encodes a 4×4+-- rectangle of unsigned normalized RGB texel data, and provides 1 bit of+-- alpha.+pattern FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = Format 149+-- | 'FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK' specifies a four-component, ETC2+-- compressed format where each 64-bit compressed texel block encodes a 4×4+-- rectangle of unsigned normalized RGB texel data with sRGB nonlinear+-- encoding, and provides 1 bit of alpha.+pattern FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = Format 150+-- | 'FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK' specifies a four-component, ETC2+-- compressed format where each 128-bit compressed texel block encodes a+-- 4×4 rectangle of unsigned normalized RGBA texel data with the first 64+-- bits encoding alpha values followed by 64 bits encoding RGB values.+pattern FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = Format 151+-- | 'FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK' specifies a four-component, ETC2+-- compressed format where each 128-bit compressed texel block encodes a+-- 4×4 rectangle of unsigned normalized RGBA texel data with the first 64+-- bits encoding alpha values followed by 64 bits encoding RGB values with+-- sRGB nonlinear encoding applied.+pattern FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = Format 152+-- | 'FORMAT_EAC_R11_UNORM_BLOCK' specifies a one-component, ETC2 compressed+-- format where each 64-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned normalized red texel data.+pattern FORMAT_EAC_R11_UNORM_BLOCK = Format 153+-- | 'FORMAT_EAC_R11_SNORM_BLOCK' specifies a one-component, ETC2 compressed+-- format where each 64-bit compressed texel block encodes a 4×4 rectangle+-- of signed normalized red texel data.+pattern FORMAT_EAC_R11_SNORM_BLOCK = Format 154+-- | 'FORMAT_EAC_R11G11_UNORM_BLOCK' specifies a two-component, ETC2+-- compressed format where each 128-bit compressed texel block encodes a+-- 4×4 rectangle of unsigned normalized RG texel data with the first 64+-- bits encoding red values followed by 64 bits encoding green values.+pattern FORMAT_EAC_R11G11_UNORM_BLOCK = Format 155+-- | 'FORMAT_EAC_R11G11_SNORM_BLOCK' specifies a two-component, ETC2+-- compressed format where each 128-bit compressed texel block encodes a+-- 4×4 rectangle of signed normalized RG texel data with the first 64 bits+-- encoding red values followed by 64 bits encoding green values.+pattern FORMAT_EAC_R11G11_SNORM_BLOCK = Format 156+-- | 'FORMAT_ASTC_4x4_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 4×4 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_4x4_UNORM_BLOCK = Format 157+-- | 'FORMAT_ASTC_4x4_SRGB_BLOCK' specifies a four-component, ASTC compressed+-- format where each 128-bit compressed texel block encodes a 4×4 rectangle+-- of unsigned normalized RGBA texel data with sRGB nonlinear encoding+-- applied to the RGB components.+pattern FORMAT_ASTC_4x4_SRGB_BLOCK = Format 158+-- | 'FORMAT_ASTC_5x4_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 5×4 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_5x4_UNORM_BLOCK = Format 159+-- | 'FORMAT_ASTC_5x4_SRGB_BLOCK' specifies a four-component, ASTC compressed+-- format where each 128-bit compressed texel block encodes a 5×4 rectangle+-- of unsigned normalized RGBA texel data with sRGB nonlinear encoding+-- applied to the RGB components.+pattern FORMAT_ASTC_5x4_SRGB_BLOCK = Format 160+-- | 'FORMAT_ASTC_5x5_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 5×5 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_5x5_UNORM_BLOCK = Format 161+-- | 'FORMAT_ASTC_5x5_SRGB_BLOCK' specifies a four-component, ASTC compressed+-- format where each 128-bit compressed texel block encodes a 5×5 rectangle+-- of unsigned normalized RGBA texel data with sRGB nonlinear encoding+-- applied to the RGB components.+pattern FORMAT_ASTC_5x5_SRGB_BLOCK = Format 162+-- | 'FORMAT_ASTC_6x5_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 6×5 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_6x5_UNORM_BLOCK = Format 163+-- | 'FORMAT_ASTC_6x5_SRGB_BLOCK' specifies a four-component, ASTC compressed+-- format where each 128-bit compressed texel block encodes a 6×5 rectangle+-- of unsigned normalized RGBA texel data with sRGB nonlinear encoding+-- applied to the RGB components.+pattern FORMAT_ASTC_6x5_SRGB_BLOCK = Format 164+-- | 'FORMAT_ASTC_6x6_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 6×6 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_6x6_UNORM_BLOCK = Format 165+-- | 'FORMAT_ASTC_6x6_SRGB_BLOCK' specifies a four-component, ASTC compressed+-- format where each 128-bit compressed texel block encodes a 6×6 rectangle+-- of unsigned normalized RGBA texel data with sRGB nonlinear encoding+-- applied to the RGB components.+pattern FORMAT_ASTC_6x6_SRGB_BLOCK = Format 166+-- | 'FORMAT_ASTC_8x5_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes an+-- 8×5 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_8x5_UNORM_BLOCK = Format 167+-- | 'FORMAT_ASTC_8x5_SRGB_BLOCK' specifies a four-component, ASTC compressed+-- format where each 128-bit compressed texel block encodes an 8×5+-- rectangle of unsigned normalized RGBA texel data with sRGB nonlinear+-- encoding applied to the RGB components.+pattern FORMAT_ASTC_8x5_SRGB_BLOCK = Format 168+-- | 'FORMAT_ASTC_8x6_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes an+-- 8×6 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_8x6_UNORM_BLOCK = Format 169+-- | 'FORMAT_ASTC_8x6_SRGB_BLOCK' specifies a four-component, ASTC compressed+-- format where each 128-bit compressed texel block encodes an 8×6+-- rectangle of unsigned normalized RGBA texel data with sRGB nonlinear+-- encoding applied to the RGB components.+pattern FORMAT_ASTC_8x6_SRGB_BLOCK = Format 170+-- | 'FORMAT_ASTC_8x8_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes an+-- 8×8 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_8x8_UNORM_BLOCK = Format 171+-- | 'FORMAT_ASTC_8x8_SRGB_BLOCK' specifies a four-component, ASTC compressed+-- format where each 128-bit compressed texel block encodes an 8×8+-- rectangle of unsigned normalized RGBA texel data with sRGB nonlinear+-- encoding applied to the RGB components.+pattern FORMAT_ASTC_8x8_SRGB_BLOCK = Format 172+-- | 'FORMAT_ASTC_10x5_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×5 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_10x5_UNORM_BLOCK = Format 173+-- | 'FORMAT_ASTC_10x5_SRGB_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×5 rectangle of unsigned normalized RGBA texel data with sRGB+-- nonlinear encoding applied to the RGB components.+pattern FORMAT_ASTC_10x5_SRGB_BLOCK = Format 174+-- | 'FORMAT_ASTC_10x6_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×6 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_10x6_UNORM_BLOCK = Format 175+-- | 'FORMAT_ASTC_10x6_SRGB_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×6 rectangle of unsigned normalized RGBA texel data with sRGB+-- nonlinear encoding applied to the RGB components.+pattern FORMAT_ASTC_10x6_SRGB_BLOCK = Format 176+-- | 'FORMAT_ASTC_10x8_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×8 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_10x8_UNORM_BLOCK = Format 177+-- | 'FORMAT_ASTC_10x8_SRGB_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×8 rectangle of unsigned normalized RGBA texel data with sRGB+-- nonlinear encoding applied to the RGB components.+pattern FORMAT_ASTC_10x8_SRGB_BLOCK = Format 178+-- | 'FORMAT_ASTC_10x10_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×10 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_10x10_UNORM_BLOCK = Format 179+-- | 'FORMAT_ASTC_10x10_SRGB_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×10 rectangle of unsigned normalized RGBA texel data with sRGB+-- nonlinear encoding applied to the RGB components.+pattern FORMAT_ASTC_10x10_SRGB_BLOCK = Format 180+-- | 'FORMAT_ASTC_12x10_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 12×10 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_12x10_UNORM_BLOCK = Format 181+-- | 'FORMAT_ASTC_12x10_SRGB_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 12×10 rectangle of unsigned normalized RGBA texel data with sRGB+-- nonlinear encoding applied to the RGB components.+pattern FORMAT_ASTC_12x10_SRGB_BLOCK = Format 182+-- | 'FORMAT_ASTC_12x12_UNORM_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 12×12 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_ASTC_12x12_UNORM_BLOCK = Format 183+-- | 'FORMAT_ASTC_12x12_SRGB_BLOCK' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 12×12 rectangle of unsigned normalized RGBA texel data with sRGB+-- nonlinear encoding applied to the RGB components.+pattern FORMAT_ASTC_12x12_SRGB_BLOCK = Format 184+-- | 'FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 12×12 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = Format 1000066013+-- | 'FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 12×10 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = Format 1000066012+-- | 'FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×10 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = Format 1000066011+-- | 'FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×8 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = Format 1000066010+-- | 'FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×6 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = Format 1000066009+-- | 'FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 10×5 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = Format 1000066008+-- | 'FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 8×8 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = Format 1000066007+-- | 'FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 8×6 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = Format 1000066006+-- | 'FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 8×5 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = Format 1000066005+-- | 'FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 6×6 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = Format 1000066004+-- | 'FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 6×5 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = Format 1000066003+-- | 'FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 5×5 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = Format 1000066002+-- | 'FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 5×4 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = Format 1000066001+-- | 'FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC+-- compressed format where each 128-bit compressed texel block encodes a+-- 4×4 rectangle of signed floating-point RGBA texel data.+pattern FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = Format 1000066000+-- | 'FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG' specifies a four-component, PVRTC+-- compressed format where each 64-bit compressed texel block encodes a 4×4+-- rectangle of unsigned normalized RGBA texel data with sRGB nonlinear+-- encoding applied to the RGB components.+pattern FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = Format 1000054007+-- | 'FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG' specifies a four-component, PVRTC+-- compressed format where each 64-bit compressed texel block encodes an+-- 8×4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear+-- encoding applied to the RGB components.+pattern FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = Format 1000054006+-- | 'FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG' specifies a four-component, PVRTC+-- compressed format where each 64-bit compressed texel block encodes a 4×4+-- rectangle of unsigned normalized RGBA texel data with sRGB nonlinear+-- encoding applied to the RGB components.+pattern FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = Format 1000054005+-- | 'FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG' specifies a four-component, PVRTC+-- compressed format where each 64-bit compressed texel block encodes an+-- 8×4 rectangle of unsigned normalized RGBA texel data with sRGB nonlinear+-- encoding applied to the RGB components.+pattern FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = Format 1000054004+-- | 'FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG' specifies a four-component, PVRTC+-- compressed format where each 64-bit compressed texel block encodes a 4×4+-- rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = Format 1000054003+-- | 'FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG' specifies a four-component, PVRTC+-- compressed format where each 64-bit compressed texel block encodes an+-- 8×4 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = Format 1000054002+-- | 'FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG' specifies a four-component, PVRTC+-- compressed format where each 64-bit compressed texel block encodes a 4×4+-- rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = Format 1000054001+-- | 'FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG' specifies a four-component, PVRTC+-- compressed format where each 64-bit compressed texel block encodes an+-- 8×4 rectangle of unsigned normalized RGBA texel data.+pattern FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = Format 1000054000+-- | 'FORMAT_G16_B16_R16_3PLANE_444_UNORM' specifies an unsigned normalized+-- /multi-planar format/ that has a 16-bit G component in each 16-bit word+-- of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a+-- 16-bit R component in each 16-bit word of plane 2. Each plane has the+-- same dimensions and each R, G and B component contributes to a single+-- texel. The location of each plane when this image is in linear layout+-- can be determined via+-- 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane,+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- for the B plane, and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+-- for the R plane.+pattern FORMAT_G16_B16_R16_3PLANE_444_UNORM = Format 1000156033+-- | 'FORMAT_G16_B16R16_2PLANE_422_UNORM' specifies an unsigned normalized+-- /multi-planar format/ that has a 16-bit G component in each 16-bit word+-- of plane 0, and a two-component, 32-bit BR plane 1 consisting of a+-- 16-bit B component in the word in bytes 0..1, and a 16-bit R component+-- in the word in bytes 2..3. The horizontal dimensions of the BR plane is+-- halved relative to the image dimensions, and each R and B value is+-- shared with the G components for which+-- \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location of each+-- plane when this image is in linear layout can be determined via+-- 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane, and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- for the BR plane. Images in this format /must/ be defined with a width+-- that is a multiple of two.+pattern FORMAT_G16_B16R16_2PLANE_422_UNORM = Format 1000156032+-- | 'FORMAT_G16_B16_R16_3PLANE_422_UNORM' specifies an unsigned normalized+-- /multi-planar format/ that has a 16-bit G component in each 16-bit word+-- of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a+-- 16-bit R component in each 16-bit word of plane 2. The horizontal+-- dimension of the R and B plane is halved relative to the image+-- dimensions, and each R and B value is shared with the G components for+-- which \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location of+-- each plane when this image is in linear layout can be determined via+-- 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane,+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- for the B plane, and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+-- for the R plane. Images in this format /must/ be defined with a width+-- that is a multiple of two.+pattern FORMAT_G16_B16_R16_3PLANE_422_UNORM = Format 1000156031+-- | 'FORMAT_G16_B16R16_2PLANE_420_UNORM' specifies an unsigned normalized+-- /multi-planar format/ that has a 16-bit G component in each 16-bit word+-- of plane 0, and a two-component, 32-bit BR plane 1 consisting of a+-- 16-bit B component in the word in bytes 0..1, and a 16-bit R component+-- in the word in bytes 2..3. The horizontal and vertical dimensions of the+-- BR plane is halved relative to the image dimensions, and each R and B+-- value is shared with the G components for which+-- \(\lfloor i_G \times 0.5 \rfloor =+-- i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B = j_R\). The+-- location of each plane when this image is in linear layout can be+-- determined via 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout',+-- using+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane, and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- for the BR plane. Images in this format /must/ be defined with a width+-- and height that is a multiple of two.+pattern FORMAT_G16_B16R16_2PLANE_420_UNORM = Format 1000156030+-- | 'FORMAT_G16_B16_R16_3PLANE_420_UNORM' specifies an unsigned normalized+-- /multi-planar format/ that has a 16-bit G component in each 16-bit word+-- of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a+-- 16-bit R component in each 16-bit word of plane 2. The horizontal and+-- vertical dimensions of the R and B planes are halved relative to the+-- image dimensions, and each R and B component is shared with the G+-- components for which \(\lfloor i_G \times 0.5+-- \rfloor = i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B+-- = j_R\). The location of each plane when this image is in linear layout+-- can be determined via+-- 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane,+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- for the B plane, and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+-- for the R plane. Images in this format /must/ be defined with a width+-- and height that is a multiple of two.+pattern FORMAT_G16_B16_R16_3PLANE_420_UNORM = Format 1000156029+-- | 'FORMAT_B16G16R16G16_422_UNORM' specifies a four-component, 64-bit+-- format containing a pair of G components, an R component, and a B+-- component, collectively encoding a 2×1 rectangle of unsigned normalized+-- RGB texel data. One G value is present at each /i/ coordinate, with the+-- B and R values shared across both G values and thus recorded at half the+-- horizontal resolution of the image. This format has a 16-bit B component+-- in the word in bytes 0..1, a 16-bit G component for the even /i/+-- coordinate in the word in bytes 2..3, a 16-bit R component in the word+-- in bytes 4..5, and a 16-bit G component for the odd /i/ coordinate in+-- the word in bytes 6..7. Images in this format /must/ be defined with a+-- width that is a multiple of two. For the purposes of the constraints on+-- copy extents, this format is treated as a compressed format with a 2×1+-- compressed texel block.+pattern FORMAT_B16G16R16G16_422_UNORM = Format 1000156028+-- | 'FORMAT_G16B16G16R16_422_UNORM' specifies a four-component, 64-bit+-- format containing a pair of G components, an R component, and a B+-- component, collectively encoding a 2×1 rectangle of unsigned normalized+-- RGB texel data. One G value is present at each /i/ coordinate, with the+-- B and R values shared across both G values and thus recorded at half the+-- horizontal resolution of the image. This format has a 16-bit G component+-- for the even /i/ coordinate in the word in bytes 0..1, a 16-bit B+-- component in the word in bytes 2..3, a 16-bit G component for the odd+-- /i/ coordinate in the word in bytes 4..5, and a 16-bit R component in+-- the word in bytes 6..7. Images in this format /must/ be defined with a+-- width that is a multiple of two. For the purposes of the constraints on+-- copy extents, this format is treated as a compressed format with a 2×1+-- compressed texel block.+pattern FORMAT_G16B16G16R16_422_UNORM = Format 1000156027+-- | 'FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16' specifies an+-- unsigned normalized /multi-planar format/ that has a 12-bit G component+-- in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component+-- in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R+-- component in the top 12 bits of each 16-bit word of plane 2, with the+-- bottom 4 bits of each word unused. Each plane has the same dimensions+-- and each R, G and B component contributes to a single texel. The+-- location of each plane when this image is in linear layout can be+-- determined via 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout',+-- using+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane,+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- for the B plane, and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+-- for the R plane.+pattern FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = Format 1000156026+-- | 'FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16' specifies an unsigned+-- normalized /multi-planar format/ that has a 12-bit G component in the+-- top 12 bits of each 16-bit word of plane 0, and a two-component, 32-bit+-- BR plane 1 consisting of a 12-bit B component in the top 12 bits of the+-- word in bytes 0..1, and a 12-bit R component in the top 12 bits of the+-- word in bytes 2..3, the bottom 4 bits of each word unused. The+-- horizontal dimensions of the BR plane is halved relative to the image+-- dimensions, and each R and B value is shared with the G components for+-- which \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location of+-- each plane when this image is in linear layout can be determined via+-- 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane, and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- for the BR plane. Images in this format /must/ be defined with a width+-- that is a multiple of two.+pattern FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = Format 1000156025+-- | 'FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16' specifies an+-- unsigned normalized /multi-planar format/ that has a 12-bit G component+-- in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component+-- in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R+-- component in the top 12 bits of each 16-bit word of plane 2, with the+-- bottom 4 bits of each word unused. The horizontal dimension of the R and+-- B plane is halved relative to the image dimensions, and each R and B+-- value is shared with the G components for which+-- \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location of each+-- plane when this image is in linear layout can be determined via+-- 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane,+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- for the B plane, and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+-- for the R plane. Images in this format /must/ be defined with a width+-- that is a multiple of two.+pattern FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = Format 1000156024+-- | 'FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16' specifies an unsigned+-- normalized /multi-planar format/ that has a 12-bit G component in the+-- top 12 bits of each 16-bit word of plane 0, and a two-component, 32-bit+-- BR plane 1 consisting of a 12-bit B component in the top 12 bits of the+-- word in bytes 0..1, and a 12-bit R component in the top 12 bits of the+-- word in bytes 2..3, the bottom 4 bits of each word unused. The+-- horizontal and vertical dimensions of the BR plane is halved relative to+-- the image dimensions, and each R and B value is shared with the G+-- components for which \(\lfloor i_G \times 0.5 \rfloor =+-- i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B = j_R\). The+-- location of each plane when this image is in linear layout can be+-- determined via 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout',+-- using+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane, and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- for the BR plane. Images in this format /must/ be defined with a width+-- and height that is a multiple of two.+pattern FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = Format 1000156023+-- | 'FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16' specifies an+-- unsigned normalized /multi-planar format/ that has a 12-bit G component+-- in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component+-- in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R+-- component in the top 12 bits of each 16-bit word of plane 2, with the+-- bottom 4 bits of each word unused. The horizontal and vertical+-- dimensions of the R and B planes are halved relative to the image+-- dimensions, and each R and B component is shared with the G components+-- for which \(\lfloor i_G \times 0.5+-- \rfloor = i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B+-- = j_R\). The location of each plane when this image is in linear layout+-- can be determined via+-- 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane,+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- for the B plane, and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+-- for the R plane. Images in this format /must/ be defined with a width+-- and height that is a multiple of two.+pattern FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = Format 1000156022+-- | 'FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16' specifies a+-- four-component, 64-bit format containing a pair of G components, an R+-- component, and a B component, collectively encoding a 2×1 rectangle of+-- unsigned normalized RGB texel data. One G value is present at each /i/+-- coordinate, with the B and R values shared across both G values and thus+-- recorded at half the horizontal resolution of the image. This format has+-- a 12-bit B component in the top 12 bits of the word in bytes 0..1, a+-- 12-bit G component for the even /i/ coordinate in the top 12 bits of the+-- word in bytes 2..3, a 12-bit R component in the top 12 bits of the word+-- in bytes 4..5, and a 12-bit G component for the odd /i/ coordinate in+-- the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of+-- each word unused. Images in this format /must/ be defined with a width+-- that is a multiple of two. For the purposes of the constraints on copy+-- extents, this format is treated as a compressed format with a 2×1+-- compressed texel block.+pattern FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = Format 1000156021+-- | 'FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16' specifies a+-- four-component, 64-bit format containing a pair of G components, an R+-- component, and a B component, collectively encoding a 2×1 rectangle of+-- unsigned normalized RGB texel data. One G value is present at each /i/+-- coordinate, with the B and R values shared across both G values and thus+-- recorded at half the horizontal resolution of the image. This format has+-- a 12-bit G component for the even /i/ coordinate in the top 12 bits of+-- the word in bytes 0..1, a 12-bit B component in the top 12 bits of the+-- word in bytes 2..3, a 12-bit G component for the odd /i/ coordinate in+-- the top 12 bits of the word in bytes 4..5, and a 12-bit R component in+-- the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of+-- each word unused. Images in this format /must/ be defined with a width+-- that is a multiple of two. For the purposes of the constraints on copy+-- extents, this format is treated as a compressed format with a 2×1+-- compressed texel block.+pattern FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = Format 1000156020+-- | 'FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16' specifies a four-component,+-- 64-bit unsigned normalized format that has a 12-bit R component in the+-- top 12 bits of the word in bytes 0..1, a 12-bit G component in the top+-- 12 bits of the word in bytes 2..3, a 12-bit B component in the top 12+-- bits of the word in bytes 4..5, and a 12-bit A component in the top 12+-- bits of the word in bytes 6..7, with the bottom 4 bits of each word+-- unused.+pattern FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = Format 1000156019+-- | 'FORMAT_R12X4G12X4_UNORM_2PACK16' specifies a two-component, 32-bit+-- unsigned normalized format that has a 12-bit R component in the top 12+-- bits of the word in bytes 0..1, and a 12-bit G component in the top 12+-- bits of the word in bytes 2..3, with the bottom 4 bits of each word+-- unused.+pattern FORMAT_R12X4G12X4_UNORM_2PACK16 = Format 1000156018+-- | 'FORMAT_R12X4_UNORM_PACK16' specifies a one-component, 16-bit unsigned+-- normalized format that has a single 12-bit R component in the top 12+-- bits of a 16-bit word, with the bottom 4 bits unused.+pattern FORMAT_R12X4_UNORM_PACK16 = Format 1000156017+-- | 'FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16' specifies an+-- unsigned normalized /multi-planar format/ that has a 10-bit G component+-- in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component+-- in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R+-- component in the top 10 bits of each 16-bit word of plane 2, with the+-- bottom 6 bits of each word unused. Each plane has the same dimensions+-- and each R, G and B component contributes to a single texel. The+-- location of each plane when this image is in linear layout can be+-- determined via 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout',+-- using+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane,+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- for the B plane, and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+-- for the R plane.+pattern FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = Format 1000156016+-- | 'FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16' specifies an unsigned+-- normalized /multi-planar format/ that has a 10-bit G component in the+-- top 10 bits of each 16-bit word of plane 0, and a two-component, 32-bit+-- BR plane 1 consisting of a 10-bit B component in the top 10 bits of the+-- word in bytes 0..1, and a 10-bit R component in the top 10 bits of the+-- word in bytes 2..3, the bottom 6 bits of each word unused. The+-- horizontal dimensions of the BR plane is halved relative to the image+-- dimensions, and each R and B value is shared with the G components for+-- which \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location of+-- each plane when this image is in linear layout can be determined via+-- 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane, and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- for the BR plane. Images in this format /must/ be defined with a width+-- that is a multiple of two.+pattern FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = Format 1000156015+-- | 'FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16' specifies an+-- unsigned normalized /multi-planar format/ that has a 10-bit G component+-- in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component+-- in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R+-- component in the top 10 bits of each 16-bit word of plane 2, with the+-- bottom 6 bits of each word unused. The horizontal dimension of the R and+-- B plane is halved relative to the image dimensions, and each R and B+-- value is shared with the G components for which+-- \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location of each+-- plane when this image is in linear layout can be determined via+-- 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane,+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- for the B plane, and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+-- for the R plane. Images in this format /must/ be defined with a width+-- that is a multiple of two.+pattern FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = Format 1000156014+-- | 'FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16' specifies an unsigned+-- normalized /multi-planar format/ that has a 10-bit G component in the+-- top 10 bits of each 16-bit word of plane 0, and a two-component, 32-bit+-- BR plane 1 consisting of a 10-bit B component in the top 10 bits of the+-- word in bytes 0..1, and a 10-bit R component in the top 10 bits of the+-- word in bytes 2..3, the bottom 6 bits of each word unused. The+-- horizontal and vertical dimensions of the BR plane is halved relative to+-- the image dimensions, and each R and B value is shared with the G+-- components for which \(\lfloor i_G \times 0.5 \rfloor =+-- i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B = j_R\). The+-- location of each plane when this image is in linear layout can be+-- determined via 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout',+-- using+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane, and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- for the BR plane. Images in this format /must/ be defined with a width+-- and height that is a multiple of two.+pattern FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = Format 1000156013+-- | 'FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16' specifies an+-- unsigned normalized /multi-planar format/ that has a 10-bit G component+-- in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component+-- in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R+-- component in the top 10 bits of each 16-bit word of plane 2, with the+-- bottom 6 bits of each word unused. The horizontal and vertical+-- dimensions of the R and B planes are halved relative to the image+-- dimensions, and each R and B component is shared with the G components+-- for which \(\lfloor i_G \times 0.5+-- \rfloor = i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B+-- = j_R\). The location of each plane when this image is in linear layout+-- can be determined via+-- 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane,+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- for the B plane, and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+-- for the R plane. Images in this format /must/ be defined with a width+-- and height that is a multiple of two.+pattern FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = Format 1000156012+-- | 'FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16' specifies a+-- four-component, 64-bit format containing a pair of G components, an R+-- component, and a B component, collectively encoding a 2×1 rectangle of+-- unsigned normalized RGB texel data. One G value is present at each /i/+-- coordinate, with the B and R values shared across both G values and thus+-- recorded at half the horizontal resolution of the image. This format has+-- a 10-bit B component in the top 10 bits of the word in bytes 0..1, a+-- 10-bit G component for the even /i/ coordinate in the top 10 bits of the+-- word in bytes 2..3, a 10-bit R component in the top 10 bits of the word+-- in bytes 4..5, and a 10-bit G component for the odd /i/ coordinate in+-- the top 10 bits of the word in bytes 6..7, with the bottom 6 bits of+-- each word unused. Images in this format /must/ be defined with a width+-- that is a multiple of two. For the purposes of the constraints on copy+-- extents, this format is treated as a compressed format with a 2×1+-- compressed texel block.+pattern FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = Format 1000156011+-- | 'FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16' specifies a+-- four-component, 64-bit format containing a pair of G components, an R+-- component, and a B component, collectively encoding a 2×1 rectangle of+-- unsigned normalized RGB texel data. One G value is present at each /i/+-- coordinate, with the B and R values shared across both G values and thus+-- recorded at half the horizontal resolution of the image. This format has+-- a 10-bit G component for the even /i/ coordinate in the top 10 bits of+-- the word in bytes 0..1, a 10-bit B component in the top 10 bits of the+-- word in bytes 2..3, a 10-bit G component for the odd /i/ coordinate in+-- the top 10 bits of the word in bytes 4..5, and a 10-bit R component in+-- the top 10 bits of the word in bytes 6..7, with the bottom 6 bits of+-- each word unused. Images in this format /must/ be defined with a width+-- that is a multiple of two. For the purposes of the constraints on copy+-- extents, this format is treated as a compressed format with a 2×1+-- compressed texel block.+pattern FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = Format 1000156010+-- | 'FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16' specifies a four-component,+-- 64-bit unsigned normalized format that has a 10-bit R component in the+-- top 10 bits of the word in bytes 0..1, a 10-bit G component in the top+-- 10 bits of the word in bytes 2..3, a 10-bit B component in the top 10+-- bits of the word in bytes 4..5, and a 10-bit A component in the top 10+-- bits of the word in bytes 6..7, with the bottom 6 bits of each word+-- unused.+pattern FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = Format 1000156009+-- | 'FORMAT_R10X6G10X6_UNORM_2PACK16' specifies a two-component, 32-bit+-- unsigned normalized format that has a 10-bit R component in the top 10+-- bits of the word in bytes 0..1, and a 10-bit G component in the top 10+-- bits of the word in bytes 2..3, with the bottom 6 bits of each word+-- unused.+pattern FORMAT_R10X6G10X6_UNORM_2PACK16 = Format 1000156008+-- | 'FORMAT_R10X6_UNORM_PACK16' specifies a one-component, 16-bit unsigned+-- normalized format that has a single 10-bit R component in the top 10+-- bits of a 16-bit word, with the bottom 6 bits unused.+pattern FORMAT_R10X6_UNORM_PACK16 = Format 1000156007+-- | 'FORMAT_G8_B8_R8_3PLANE_444_UNORM' specifies an unsigned normalized+-- /multi-planar format/ that has an 8-bit G component in plane 0, an 8-bit+-- B component in plane 1, and an 8-bit R component in plane 2. Each plane+-- has the same dimensions and each R, G and B component contributes to a+-- single texel. The location of each plane when this image is in linear+-- layout can be determined via+-- 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane,+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- for the B plane, and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+-- for the R plane.+pattern FORMAT_G8_B8_R8_3PLANE_444_UNORM = Format 1000156006+-- | 'FORMAT_G8_B8R8_2PLANE_422_UNORM' specifies an unsigned normalized+-- /multi-planar format/ that has an 8-bit G component in plane 0, and a+-- two-component, 16-bit BR plane 1 consisting of an 8-bit B component in+-- byte 0 and an 8-bit R component in byte 1. The horizontal dimensions of+-- the BR plane is halved relative to the image dimensions, and each R and+-- B value is shared with the G components for which+-- \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location of each+-- plane when this image is in linear layout can be determined via+-- 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane, and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- for the BR plane. Images in this format /must/ be defined with a width+-- that is a multiple of two.+pattern FORMAT_G8_B8R8_2PLANE_422_UNORM = Format 1000156005+-- | 'FORMAT_G8_B8_R8_3PLANE_422_UNORM' specifies an unsigned normalized+-- /multi-planar format/ that has an 8-bit G component in plane 0, an 8-bit+-- B component in plane 1, and an 8-bit R component in plane 2. The+-- horizontal dimension of the R and B plane is halved relative to the+-- image dimensions, and each R and B value is shared with the G components+-- for which \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location+-- of each plane when this image is in linear layout can be determined via+-- 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane,+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- for the B plane, and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+-- for the R plane. Images in this format /must/ be defined with a width+-- that is a multiple of two.+pattern FORMAT_G8_B8_R8_3PLANE_422_UNORM = Format 1000156004+-- | 'FORMAT_G8_B8R8_2PLANE_420_UNORM' specifies an unsigned normalized+-- /multi-planar format/ that has an 8-bit G component in plane 0, and a+-- two-component, 16-bit BR plane 1 consisting of an 8-bit B component in+-- byte 0 and an 8-bit R component in byte 1. The horizontal and vertical+-- dimensions of the BR plane is halved relative to the image dimensions,+-- and each R and B value is shared with the G components for which+-- \(\lfloor i_G \times 0.5 \rfloor =+-- i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B = j_R\). The+-- location of each plane when this image is in linear layout can be+-- determined via 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout',+-- using+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane, and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- for the BR plane. Images in this format /must/ be defined with a width+-- and height that is a multiple of two.+pattern FORMAT_G8_B8R8_2PLANE_420_UNORM = Format 1000156003+-- | 'FORMAT_G8_B8_R8_3PLANE_420_UNORM' specifies an unsigned normalized+-- /multi-planar format/ that has an 8-bit G component in plane 0, an 8-bit+-- B component in plane 1, and an 8-bit R component in plane 2. The+-- horizontal and vertical dimensions of the R and B planes are halved+-- relative to the image dimensions, and each R and B component is shared+-- with the G components for which \(\lfloor i_G \times 0.5+-- \rfloor = i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B+-- = j_R\). The location of each plane when this image is in linear layout+-- can be determined via+-- 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout', using+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- for the G plane,+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- for the B plane, and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+-- for the R plane. Images in this format /must/ be defined with a width+-- and height that is a multiple of two.+pattern FORMAT_G8_B8_R8_3PLANE_420_UNORM = Format 1000156002+-- | 'FORMAT_B8G8R8G8_422_UNORM' specifies a four-component, 32-bit format+-- containing a pair of G components, an R component, and a B component,+-- collectively encoding a 2×1 rectangle of unsigned normalized RGB texel+-- data. One G value is present at each /i/ coordinate, with the B and R+-- values shared across both G values and thus recorded at half the+-- horizontal resolution of the image. This format has an 8-bit B component+-- in byte 0, an 8-bit G component for the even /i/ coordinate in byte 1,+-- an 8-bit R component in byte 2, and an 8-bit G component for the odd /i/+-- coordinate in byte 3. Images in this format /must/ be defined with a+-- width that is a multiple of two. For the purposes of the constraints on+-- copy extents, this format is treated as a compressed format with a 2×1+-- compressed texel block.+pattern FORMAT_B8G8R8G8_422_UNORM = Format 1000156001+-- | 'FORMAT_G8B8G8R8_422_UNORM' specifies a four-component, 32-bit format+-- containing a pair of G components, an R component, and a B component,+-- collectively encoding a 2×1 rectangle of unsigned normalized RGB texel+-- data. One G value is present at each /i/ coordinate, with the B and R+-- values shared across both G values and thus recorded at half the+-- horizontal resolution of the image. This format has an 8-bit G component+-- for the even /i/ coordinate in byte 0, an 8-bit B component in byte 1,+-- an 8-bit G component for the odd /i/ coordinate in byte 2, and an 8-bit+-- R component in byte 3. Images in this format /must/ be defined with a+-- width that is a multiple of two. For the purposes of the constraints on+-- copy extents, this format is treated as a compressed format with a 2×1+-- compressed texel block.+pattern FORMAT_G8B8G8R8_422_UNORM = Format 1000156000+{-# complete FORMAT_UNDEFINED,+ FORMAT_R4G4_UNORM_PACK8,+ FORMAT_R4G4B4A4_UNORM_PACK16,+ FORMAT_B4G4R4A4_UNORM_PACK16,+ FORMAT_R5G6B5_UNORM_PACK16,+ FORMAT_B5G6R5_UNORM_PACK16,+ FORMAT_R5G5B5A1_UNORM_PACK16,+ FORMAT_B5G5R5A1_UNORM_PACK16,+ FORMAT_A1R5G5B5_UNORM_PACK16,+ FORMAT_R8_UNORM,+ FORMAT_R8_SNORM,+ FORMAT_R8_USCALED,+ FORMAT_R8_SSCALED,+ FORMAT_R8_UINT,+ FORMAT_R8_SINT,+ FORMAT_R8_SRGB,+ FORMAT_R8G8_UNORM,+ FORMAT_R8G8_SNORM,+ FORMAT_R8G8_USCALED,+ FORMAT_R8G8_SSCALED,+ FORMAT_R8G8_UINT,+ FORMAT_R8G8_SINT,+ FORMAT_R8G8_SRGB,+ FORMAT_R8G8B8_UNORM,+ FORMAT_R8G8B8_SNORM,+ FORMAT_R8G8B8_USCALED,+ FORMAT_R8G8B8_SSCALED,+ FORMAT_R8G8B8_UINT,+ FORMAT_R8G8B8_SINT,+ FORMAT_R8G8B8_SRGB,+ FORMAT_B8G8R8_UNORM,+ FORMAT_B8G8R8_SNORM,+ FORMAT_B8G8R8_USCALED,+ FORMAT_B8G8R8_SSCALED,+ FORMAT_B8G8R8_UINT,+ FORMAT_B8G8R8_SINT,+ FORMAT_B8G8R8_SRGB,+ FORMAT_R8G8B8A8_UNORM,+ FORMAT_R8G8B8A8_SNORM,+ FORMAT_R8G8B8A8_USCALED,+ FORMAT_R8G8B8A8_SSCALED,+ FORMAT_R8G8B8A8_UINT,+ FORMAT_R8G8B8A8_SINT,+ FORMAT_R8G8B8A8_SRGB,+ FORMAT_B8G8R8A8_UNORM,+ FORMAT_B8G8R8A8_SNORM,+ FORMAT_B8G8R8A8_USCALED,+ FORMAT_B8G8R8A8_SSCALED,+ FORMAT_B8G8R8A8_UINT,+ FORMAT_B8G8R8A8_SINT,+ FORMAT_B8G8R8A8_SRGB,+ FORMAT_A8B8G8R8_UNORM_PACK32,+ FORMAT_A8B8G8R8_SNORM_PACK32,+ FORMAT_A8B8G8R8_USCALED_PACK32,+ FORMAT_A8B8G8R8_SSCALED_PACK32,+ FORMAT_A8B8G8R8_UINT_PACK32,+ FORMAT_A8B8G8R8_SINT_PACK32,+ FORMAT_A8B8G8R8_SRGB_PACK32,+ FORMAT_A2R10G10B10_UNORM_PACK32,+ FORMAT_A2R10G10B10_SNORM_PACK32,+ FORMAT_A2R10G10B10_USCALED_PACK32,+ FORMAT_A2R10G10B10_SSCALED_PACK32,+ FORMAT_A2R10G10B10_UINT_PACK32,+ FORMAT_A2R10G10B10_SINT_PACK32,+ FORMAT_A2B10G10R10_UNORM_PACK32,+ FORMAT_A2B10G10R10_SNORM_PACK32,+ FORMAT_A2B10G10R10_USCALED_PACK32,+ FORMAT_A2B10G10R10_SSCALED_PACK32,+ FORMAT_A2B10G10R10_UINT_PACK32,+ FORMAT_A2B10G10R10_SINT_PACK32,+ FORMAT_R16_UNORM,+ FORMAT_R16_SNORM,+ FORMAT_R16_USCALED,+ FORMAT_R16_SSCALED,+ FORMAT_R16_UINT,+ FORMAT_R16_SINT,+ FORMAT_R16_SFLOAT,+ FORMAT_R16G16_UNORM,+ FORMAT_R16G16_SNORM,+ FORMAT_R16G16_USCALED,+ FORMAT_R16G16_SSCALED,+ FORMAT_R16G16_UINT,+ FORMAT_R16G16_SINT,+ FORMAT_R16G16_SFLOAT,+ FORMAT_R16G16B16_UNORM,+ FORMAT_R16G16B16_SNORM,+ FORMAT_R16G16B16_USCALED,+ FORMAT_R16G16B16_SSCALED,+ FORMAT_R16G16B16_UINT,+ FORMAT_R16G16B16_SINT,+ FORMAT_R16G16B16_SFLOAT,+ FORMAT_R16G16B16A16_UNORM,+ FORMAT_R16G16B16A16_SNORM,+ FORMAT_R16G16B16A16_USCALED,+ FORMAT_R16G16B16A16_SSCALED,+ FORMAT_R16G16B16A16_UINT,+ FORMAT_R16G16B16A16_SINT,+ FORMAT_R16G16B16A16_SFLOAT,+ FORMAT_R32_UINT,+ FORMAT_R32_SINT,+ FORMAT_R32_SFLOAT,+ FORMAT_R32G32_UINT,+ FORMAT_R32G32_SINT,+ FORMAT_R32G32_SFLOAT,+ FORMAT_R32G32B32_UINT,+ FORMAT_R32G32B32_SINT,+ FORMAT_R32G32B32_SFLOAT,+ FORMAT_R32G32B32A32_UINT,+ FORMAT_R32G32B32A32_SINT,+ FORMAT_R32G32B32A32_SFLOAT,+ FORMAT_R64_UINT,+ FORMAT_R64_SINT,+ FORMAT_R64_SFLOAT,+ FORMAT_R64G64_UINT,+ FORMAT_R64G64_SINT,+ FORMAT_R64G64_SFLOAT,+ FORMAT_R64G64B64_UINT,+ FORMAT_R64G64B64_SINT,+ FORMAT_R64G64B64_SFLOAT,+ FORMAT_R64G64B64A64_UINT,+ FORMAT_R64G64B64A64_SINT,+ FORMAT_R64G64B64A64_SFLOAT,+ FORMAT_B10G11R11_UFLOAT_PACK32,+ FORMAT_E5B9G9R9_UFLOAT_PACK32,+ FORMAT_D16_UNORM,+ FORMAT_X8_D24_UNORM_PACK32,+ FORMAT_D32_SFLOAT,+ FORMAT_S8_UINT,+ FORMAT_D16_UNORM_S8_UINT,+ FORMAT_D24_UNORM_S8_UINT,+ FORMAT_D32_SFLOAT_S8_UINT,+ FORMAT_BC1_RGB_UNORM_BLOCK,+ FORMAT_BC1_RGB_SRGB_BLOCK,+ FORMAT_BC1_RGBA_UNORM_BLOCK,+ FORMAT_BC1_RGBA_SRGB_BLOCK,+ FORMAT_BC2_UNORM_BLOCK,+ FORMAT_BC2_SRGB_BLOCK,+ FORMAT_BC3_UNORM_BLOCK,+ FORMAT_BC3_SRGB_BLOCK,+ FORMAT_BC4_UNORM_BLOCK,+ FORMAT_BC4_SNORM_BLOCK,+ FORMAT_BC5_UNORM_BLOCK,+ FORMAT_BC5_SNORM_BLOCK,+ FORMAT_BC6H_UFLOAT_BLOCK,+ FORMAT_BC6H_SFLOAT_BLOCK,+ FORMAT_BC7_UNORM_BLOCK,+ FORMAT_BC7_SRGB_BLOCK,+ FORMAT_ETC2_R8G8B8_UNORM_BLOCK,+ FORMAT_ETC2_R8G8B8_SRGB_BLOCK,+ FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,+ FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,+ FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,+ FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,+ FORMAT_EAC_R11_UNORM_BLOCK,+ FORMAT_EAC_R11_SNORM_BLOCK,+ FORMAT_EAC_R11G11_UNORM_BLOCK,+ FORMAT_EAC_R11G11_SNORM_BLOCK,+ FORMAT_ASTC_4x4_UNORM_BLOCK,+ FORMAT_ASTC_4x4_SRGB_BLOCK,+ FORMAT_ASTC_5x4_UNORM_BLOCK,+ FORMAT_ASTC_5x4_SRGB_BLOCK,+ FORMAT_ASTC_5x5_UNORM_BLOCK,+ FORMAT_ASTC_5x5_SRGB_BLOCK,+ FORMAT_ASTC_6x5_UNORM_BLOCK,+ FORMAT_ASTC_6x5_SRGB_BLOCK,+ FORMAT_ASTC_6x6_UNORM_BLOCK,+ FORMAT_ASTC_6x6_SRGB_BLOCK,+ FORMAT_ASTC_8x5_UNORM_BLOCK,+ FORMAT_ASTC_8x5_SRGB_BLOCK,+ FORMAT_ASTC_8x6_UNORM_BLOCK,+ FORMAT_ASTC_8x6_SRGB_BLOCK,+ FORMAT_ASTC_8x8_UNORM_BLOCK,+ FORMAT_ASTC_8x8_SRGB_BLOCK,+ FORMAT_ASTC_10x5_UNORM_BLOCK,+ FORMAT_ASTC_10x5_SRGB_BLOCK,+ FORMAT_ASTC_10x6_UNORM_BLOCK,+ FORMAT_ASTC_10x6_SRGB_BLOCK,+ FORMAT_ASTC_10x8_UNORM_BLOCK,+ FORMAT_ASTC_10x8_SRGB_BLOCK,+ FORMAT_ASTC_10x10_UNORM_BLOCK,+ FORMAT_ASTC_10x10_SRGB_BLOCK,+ FORMAT_ASTC_12x10_UNORM_BLOCK,+ FORMAT_ASTC_12x10_SRGB_BLOCK,+ FORMAT_ASTC_12x12_UNORM_BLOCK,+ FORMAT_ASTC_12x12_SRGB_BLOCK,+ FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT,+ FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT,+ FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT,+ FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT,+ FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT,+ FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT,+ FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT,+ FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT,+ FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT,+ FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT,+ FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT,+ FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT,+ FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT,+ FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT,+ FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG,+ FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,+ FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,+ FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,+ FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,+ FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,+ FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,+ FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,+ FORMAT_G16_B16_R16_3PLANE_444_UNORM,+ FORMAT_G16_B16R16_2PLANE_422_UNORM,+ FORMAT_G16_B16_R16_3PLANE_422_UNORM,+ FORMAT_G16_B16R16_2PLANE_420_UNORM,+ FORMAT_G16_B16_R16_3PLANE_420_UNORM,+ FORMAT_B16G16R16G16_422_UNORM,+ FORMAT_G16B16G16R16_422_UNORM,+ FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,+ FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,+ FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,+ FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,+ FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,+ FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,+ FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,+ FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,+ FORMAT_R12X4G12X4_UNORM_2PACK16,+ FORMAT_R12X4_UNORM_PACK16,+ FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,+ FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,+ FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,+ FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,+ FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,+ FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,+ FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,+ FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,+ FORMAT_R10X6G10X6_UNORM_2PACK16,+ FORMAT_R10X6_UNORM_PACK16,+ FORMAT_G8_B8_R8_3PLANE_444_UNORM,+ FORMAT_G8_B8R8_2PLANE_422_UNORM,+ FORMAT_G8_B8_R8_3PLANE_422_UNORM,+ FORMAT_G8_B8R8_2PLANE_420_UNORM,+ FORMAT_G8_B8_R8_3PLANE_420_UNORM,+ FORMAT_B8G8R8G8_422_UNORM,+ FORMAT_G8B8G8R8_422_UNORM :: Format #-}++instance Show Format where+ showsPrec p = \case+ FORMAT_UNDEFINED -> showString "FORMAT_UNDEFINED"+ FORMAT_R4G4_UNORM_PACK8 -> showString "FORMAT_R4G4_UNORM_PACK8"+ FORMAT_R4G4B4A4_UNORM_PACK16 -> showString "FORMAT_R4G4B4A4_UNORM_PACK16"+ FORMAT_B4G4R4A4_UNORM_PACK16 -> showString "FORMAT_B4G4R4A4_UNORM_PACK16"+ FORMAT_R5G6B5_UNORM_PACK16 -> showString "FORMAT_R5G6B5_UNORM_PACK16"+ FORMAT_B5G6R5_UNORM_PACK16 -> showString "FORMAT_B5G6R5_UNORM_PACK16"+ FORMAT_R5G5B5A1_UNORM_PACK16 -> showString "FORMAT_R5G5B5A1_UNORM_PACK16"+ FORMAT_B5G5R5A1_UNORM_PACK16 -> showString "FORMAT_B5G5R5A1_UNORM_PACK16"+ FORMAT_A1R5G5B5_UNORM_PACK16 -> showString "FORMAT_A1R5G5B5_UNORM_PACK16"+ FORMAT_R8_UNORM -> showString "FORMAT_R8_UNORM"+ FORMAT_R8_SNORM -> showString "FORMAT_R8_SNORM"+ FORMAT_R8_USCALED -> showString "FORMAT_R8_USCALED"+ FORMAT_R8_SSCALED -> showString "FORMAT_R8_SSCALED"+ FORMAT_R8_UINT -> showString "FORMAT_R8_UINT"+ FORMAT_R8_SINT -> showString "FORMAT_R8_SINT"+ FORMAT_R8_SRGB -> showString "FORMAT_R8_SRGB"+ FORMAT_R8G8_UNORM -> showString "FORMAT_R8G8_UNORM"+ FORMAT_R8G8_SNORM -> showString "FORMAT_R8G8_SNORM"+ FORMAT_R8G8_USCALED -> showString "FORMAT_R8G8_USCALED"+ FORMAT_R8G8_SSCALED -> showString "FORMAT_R8G8_SSCALED"+ FORMAT_R8G8_UINT -> showString "FORMAT_R8G8_UINT"+ FORMAT_R8G8_SINT -> showString "FORMAT_R8G8_SINT"+ FORMAT_R8G8_SRGB -> showString "FORMAT_R8G8_SRGB"+ FORMAT_R8G8B8_UNORM -> showString "FORMAT_R8G8B8_UNORM"+ FORMAT_R8G8B8_SNORM -> showString "FORMAT_R8G8B8_SNORM"+ FORMAT_R8G8B8_USCALED -> showString "FORMAT_R8G8B8_USCALED"+ FORMAT_R8G8B8_SSCALED -> showString "FORMAT_R8G8B8_SSCALED"+ FORMAT_R8G8B8_UINT -> showString "FORMAT_R8G8B8_UINT"+ FORMAT_R8G8B8_SINT -> showString "FORMAT_R8G8B8_SINT"+ FORMAT_R8G8B8_SRGB -> showString "FORMAT_R8G8B8_SRGB"+ FORMAT_B8G8R8_UNORM -> showString "FORMAT_B8G8R8_UNORM"+ FORMAT_B8G8R8_SNORM -> showString "FORMAT_B8G8R8_SNORM"+ FORMAT_B8G8R8_USCALED -> showString "FORMAT_B8G8R8_USCALED"+ FORMAT_B8G8R8_SSCALED -> showString "FORMAT_B8G8R8_SSCALED"+ FORMAT_B8G8R8_UINT -> showString "FORMAT_B8G8R8_UINT"+ FORMAT_B8G8R8_SINT -> showString "FORMAT_B8G8R8_SINT"+ FORMAT_B8G8R8_SRGB -> showString "FORMAT_B8G8R8_SRGB"+ FORMAT_R8G8B8A8_UNORM -> showString "FORMAT_R8G8B8A8_UNORM"+ FORMAT_R8G8B8A8_SNORM -> showString "FORMAT_R8G8B8A8_SNORM"+ FORMAT_R8G8B8A8_USCALED -> showString "FORMAT_R8G8B8A8_USCALED"+ FORMAT_R8G8B8A8_SSCALED -> showString "FORMAT_R8G8B8A8_SSCALED"+ FORMAT_R8G8B8A8_UINT -> showString "FORMAT_R8G8B8A8_UINT"+ FORMAT_R8G8B8A8_SINT -> showString "FORMAT_R8G8B8A8_SINT"+ FORMAT_R8G8B8A8_SRGB -> showString "FORMAT_R8G8B8A8_SRGB"+ FORMAT_B8G8R8A8_UNORM -> showString "FORMAT_B8G8R8A8_UNORM"+ FORMAT_B8G8R8A8_SNORM -> showString "FORMAT_B8G8R8A8_SNORM"+ FORMAT_B8G8R8A8_USCALED -> showString "FORMAT_B8G8R8A8_USCALED"+ FORMAT_B8G8R8A8_SSCALED -> showString "FORMAT_B8G8R8A8_SSCALED"+ FORMAT_B8G8R8A8_UINT -> showString "FORMAT_B8G8R8A8_UINT"+ FORMAT_B8G8R8A8_SINT -> showString "FORMAT_B8G8R8A8_SINT"+ FORMAT_B8G8R8A8_SRGB -> showString "FORMAT_B8G8R8A8_SRGB"+ FORMAT_A8B8G8R8_UNORM_PACK32 -> showString "FORMAT_A8B8G8R8_UNORM_PACK32"+ FORMAT_A8B8G8R8_SNORM_PACK32 -> showString "FORMAT_A8B8G8R8_SNORM_PACK32"+ FORMAT_A8B8G8R8_USCALED_PACK32 -> showString "FORMAT_A8B8G8R8_USCALED_PACK32"+ FORMAT_A8B8G8R8_SSCALED_PACK32 -> showString "FORMAT_A8B8G8R8_SSCALED_PACK32"+ FORMAT_A8B8G8R8_UINT_PACK32 -> showString "FORMAT_A8B8G8R8_UINT_PACK32"+ FORMAT_A8B8G8R8_SINT_PACK32 -> showString "FORMAT_A8B8G8R8_SINT_PACK32"+ FORMAT_A8B8G8R8_SRGB_PACK32 -> showString "FORMAT_A8B8G8R8_SRGB_PACK32"+ FORMAT_A2R10G10B10_UNORM_PACK32 -> showString "FORMAT_A2R10G10B10_UNORM_PACK32"+ FORMAT_A2R10G10B10_SNORM_PACK32 -> showString "FORMAT_A2R10G10B10_SNORM_PACK32"+ FORMAT_A2R10G10B10_USCALED_PACK32 -> showString "FORMAT_A2R10G10B10_USCALED_PACK32"+ FORMAT_A2R10G10B10_SSCALED_PACK32 -> showString "FORMAT_A2R10G10B10_SSCALED_PACK32"+ FORMAT_A2R10G10B10_UINT_PACK32 -> showString "FORMAT_A2R10G10B10_UINT_PACK32"+ FORMAT_A2R10G10B10_SINT_PACK32 -> showString "FORMAT_A2R10G10B10_SINT_PACK32"+ FORMAT_A2B10G10R10_UNORM_PACK32 -> showString "FORMAT_A2B10G10R10_UNORM_PACK32"+ FORMAT_A2B10G10R10_SNORM_PACK32 -> showString "FORMAT_A2B10G10R10_SNORM_PACK32"+ FORMAT_A2B10G10R10_USCALED_PACK32 -> showString "FORMAT_A2B10G10R10_USCALED_PACK32"+ FORMAT_A2B10G10R10_SSCALED_PACK32 -> showString "FORMAT_A2B10G10R10_SSCALED_PACK32"+ FORMAT_A2B10G10R10_UINT_PACK32 -> showString "FORMAT_A2B10G10R10_UINT_PACK32"+ FORMAT_A2B10G10R10_SINT_PACK32 -> showString "FORMAT_A2B10G10R10_SINT_PACK32"+ FORMAT_R16_UNORM -> showString "FORMAT_R16_UNORM"+ FORMAT_R16_SNORM -> showString "FORMAT_R16_SNORM"+ FORMAT_R16_USCALED -> showString "FORMAT_R16_USCALED"+ FORMAT_R16_SSCALED -> showString "FORMAT_R16_SSCALED"+ FORMAT_R16_UINT -> showString "FORMAT_R16_UINT"+ FORMAT_R16_SINT -> showString "FORMAT_R16_SINT"+ FORMAT_R16_SFLOAT -> showString "FORMAT_R16_SFLOAT"+ FORMAT_R16G16_UNORM -> showString "FORMAT_R16G16_UNORM"+ FORMAT_R16G16_SNORM -> showString "FORMAT_R16G16_SNORM"+ FORMAT_R16G16_USCALED -> showString "FORMAT_R16G16_USCALED"+ FORMAT_R16G16_SSCALED -> showString "FORMAT_R16G16_SSCALED"+ FORMAT_R16G16_UINT -> showString "FORMAT_R16G16_UINT"+ FORMAT_R16G16_SINT -> showString "FORMAT_R16G16_SINT"+ FORMAT_R16G16_SFLOAT -> showString "FORMAT_R16G16_SFLOAT"+ FORMAT_R16G16B16_UNORM -> showString "FORMAT_R16G16B16_UNORM"+ FORMAT_R16G16B16_SNORM -> showString "FORMAT_R16G16B16_SNORM"+ FORMAT_R16G16B16_USCALED -> showString "FORMAT_R16G16B16_USCALED"+ FORMAT_R16G16B16_SSCALED -> showString "FORMAT_R16G16B16_SSCALED"+ FORMAT_R16G16B16_UINT -> showString "FORMAT_R16G16B16_UINT"+ FORMAT_R16G16B16_SINT -> showString "FORMAT_R16G16B16_SINT"+ FORMAT_R16G16B16_SFLOAT -> showString "FORMAT_R16G16B16_SFLOAT"+ FORMAT_R16G16B16A16_UNORM -> showString "FORMAT_R16G16B16A16_UNORM"+ FORMAT_R16G16B16A16_SNORM -> showString "FORMAT_R16G16B16A16_SNORM"+ FORMAT_R16G16B16A16_USCALED -> showString "FORMAT_R16G16B16A16_USCALED"+ FORMAT_R16G16B16A16_SSCALED -> showString "FORMAT_R16G16B16A16_SSCALED"+ FORMAT_R16G16B16A16_UINT -> showString "FORMAT_R16G16B16A16_UINT"+ FORMAT_R16G16B16A16_SINT -> showString "FORMAT_R16G16B16A16_SINT"+ FORMAT_R16G16B16A16_SFLOAT -> showString "FORMAT_R16G16B16A16_SFLOAT"+ FORMAT_R32_UINT -> showString "FORMAT_R32_UINT"+ FORMAT_R32_SINT -> showString "FORMAT_R32_SINT"+ FORMAT_R32_SFLOAT -> showString "FORMAT_R32_SFLOAT"+ FORMAT_R32G32_UINT -> showString "FORMAT_R32G32_UINT"+ FORMAT_R32G32_SINT -> showString "FORMAT_R32G32_SINT"+ FORMAT_R32G32_SFLOAT -> showString "FORMAT_R32G32_SFLOAT"+ FORMAT_R32G32B32_UINT -> showString "FORMAT_R32G32B32_UINT"+ FORMAT_R32G32B32_SINT -> showString "FORMAT_R32G32B32_SINT"+ FORMAT_R32G32B32_SFLOAT -> showString "FORMAT_R32G32B32_SFLOAT"+ FORMAT_R32G32B32A32_UINT -> showString "FORMAT_R32G32B32A32_UINT"+ FORMAT_R32G32B32A32_SINT -> showString "FORMAT_R32G32B32A32_SINT"+ FORMAT_R32G32B32A32_SFLOAT -> showString "FORMAT_R32G32B32A32_SFLOAT"+ FORMAT_R64_UINT -> showString "FORMAT_R64_UINT"+ FORMAT_R64_SINT -> showString "FORMAT_R64_SINT"+ FORMAT_R64_SFLOAT -> showString "FORMAT_R64_SFLOAT"+ FORMAT_R64G64_UINT -> showString "FORMAT_R64G64_UINT"+ FORMAT_R64G64_SINT -> showString "FORMAT_R64G64_SINT"+ FORMAT_R64G64_SFLOAT -> showString "FORMAT_R64G64_SFLOAT"+ FORMAT_R64G64B64_UINT -> showString "FORMAT_R64G64B64_UINT"+ FORMAT_R64G64B64_SINT -> showString "FORMAT_R64G64B64_SINT"+ FORMAT_R64G64B64_SFLOAT -> showString "FORMAT_R64G64B64_SFLOAT"+ FORMAT_R64G64B64A64_UINT -> showString "FORMAT_R64G64B64A64_UINT"+ FORMAT_R64G64B64A64_SINT -> showString "FORMAT_R64G64B64A64_SINT"+ FORMAT_R64G64B64A64_SFLOAT -> showString "FORMAT_R64G64B64A64_SFLOAT"+ FORMAT_B10G11R11_UFLOAT_PACK32 -> showString "FORMAT_B10G11R11_UFLOAT_PACK32"+ FORMAT_E5B9G9R9_UFLOAT_PACK32 -> showString "FORMAT_E5B9G9R9_UFLOAT_PACK32"+ FORMAT_D16_UNORM -> showString "FORMAT_D16_UNORM"+ FORMAT_X8_D24_UNORM_PACK32 -> showString "FORMAT_X8_D24_UNORM_PACK32"+ FORMAT_D32_SFLOAT -> showString "FORMAT_D32_SFLOAT"+ FORMAT_S8_UINT -> showString "FORMAT_S8_UINT"+ FORMAT_D16_UNORM_S8_UINT -> showString "FORMAT_D16_UNORM_S8_UINT"+ FORMAT_D24_UNORM_S8_UINT -> showString "FORMAT_D24_UNORM_S8_UINT"+ FORMAT_D32_SFLOAT_S8_UINT -> showString "FORMAT_D32_SFLOAT_S8_UINT"+ FORMAT_BC1_RGB_UNORM_BLOCK -> showString "FORMAT_BC1_RGB_UNORM_BLOCK"+ FORMAT_BC1_RGB_SRGB_BLOCK -> showString "FORMAT_BC1_RGB_SRGB_BLOCK"+ FORMAT_BC1_RGBA_UNORM_BLOCK -> showString "FORMAT_BC1_RGBA_UNORM_BLOCK"+ FORMAT_BC1_RGBA_SRGB_BLOCK -> showString "FORMAT_BC1_RGBA_SRGB_BLOCK"+ FORMAT_BC2_UNORM_BLOCK -> showString "FORMAT_BC2_UNORM_BLOCK"+ FORMAT_BC2_SRGB_BLOCK -> showString "FORMAT_BC2_SRGB_BLOCK"+ FORMAT_BC3_UNORM_BLOCK -> showString "FORMAT_BC3_UNORM_BLOCK"+ FORMAT_BC3_SRGB_BLOCK -> showString "FORMAT_BC3_SRGB_BLOCK"+ FORMAT_BC4_UNORM_BLOCK -> showString "FORMAT_BC4_UNORM_BLOCK"+ FORMAT_BC4_SNORM_BLOCK -> showString "FORMAT_BC4_SNORM_BLOCK"+ FORMAT_BC5_UNORM_BLOCK -> showString "FORMAT_BC5_UNORM_BLOCK"+ FORMAT_BC5_SNORM_BLOCK -> showString "FORMAT_BC5_SNORM_BLOCK"+ FORMAT_BC6H_UFLOAT_BLOCK -> showString "FORMAT_BC6H_UFLOAT_BLOCK"+ FORMAT_BC6H_SFLOAT_BLOCK -> showString "FORMAT_BC6H_SFLOAT_BLOCK"+ FORMAT_BC7_UNORM_BLOCK -> showString "FORMAT_BC7_UNORM_BLOCK"+ FORMAT_BC7_SRGB_BLOCK -> showString "FORMAT_BC7_SRGB_BLOCK"+ FORMAT_ETC2_R8G8B8_UNORM_BLOCK -> showString "FORMAT_ETC2_R8G8B8_UNORM_BLOCK"+ FORMAT_ETC2_R8G8B8_SRGB_BLOCK -> showString "FORMAT_ETC2_R8G8B8_SRGB_BLOCK"+ FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK -> showString "FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK"+ FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK -> showString "FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK"+ FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK -> showString "FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK"+ FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK -> showString "FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK"+ FORMAT_EAC_R11_UNORM_BLOCK -> showString "FORMAT_EAC_R11_UNORM_BLOCK"+ FORMAT_EAC_R11_SNORM_BLOCK -> showString "FORMAT_EAC_R11_SNORM_BLOCK"+ FORMAT_EAC_R11G11_UNORM_BLOCK -> showString "FORMAT_EAC_R11G11_UNORM_BLOCK"+ FORMAT_EAC_R11G11_SNORM_BLOCK -> showString "FORMAT_EAC_R11G11_SNORM_BLOCK"+ FORMAT_ASTC_4x4_UNORM_BLOCK -> showString "FORMAT_ASTC_4x4_UNORM_BLOCK"+ FORMAT_ASTC_4x4_SRGB_BLOCK -> showString "FORMAT_ASTC_4x4_SRGB_BLOCK"+ FORMAT_ASTC_5x4_UNORM_BLOCK -> showString "FORMAT_ASTC_5x4_UNORM_BLOCK"+ FORMAT_ASTC_5x4_SRGB_BLOCK -> showString "FORMAT_ASTC_5x4_SRGB_BLOCK"+ FORMAT_ASTC_5x5_UNORM_BLOCK -> showString "FORMAT_ASTC_5x5_UNORM_BLOCK"+ FORMAT_ASTC_5x5_SRGB_BLOCK -> showString "FORMAT_ASTC_5x5_SRGB_BLOCK"+ FORMAT_ASTC_6x5_UNORM_BLOCK -> showString "FORMAT_ASTC_6x5_UNORM_BLOCK"+ FORMAT_ASTC_6x5_SRGB_BLOCK -> showString "FORMAT_ASTC_6x5_SRGB_BLOCK"+ FORMAT_ASTC_6x6_UNORM_BLOCK -> showString "FORMAT_ASTC_6x6_UNORM_BLOCK"+ FORMAT_ASTC_6x6_SRGB_BLOCK -> showString "FORMAT_ASTC_6x6_SRGB_BLOCK"+ FORMAT_ASTC_8x5_UNORM_BLOCK -> showString "FORMAT_ASTC_8x5_UNORM_BLOCK"+ FORMAT_ASTC_8x5_SRGB_BLOCK -> showString "FORMAT_ASTC_8x5_SRGB_BLOCK"+ FORMAT_ASTC_8x6_UNORM_BLOCK -> showString "FORMAT_ASTC_8x6_UNORM_BLOCK"+ FORMAT_ASTC_8x6_SRGB_BLOCK -> showString "FORMAT_ASTC_8x6_SRGB_BLOCK"+ FORMAT_ASTC_8x8_UNORM_BLOCK -> showString "FORMAT_ASTC_8x8_UNORM_BLOCK"+ FORMAT_ASTC_8x8_SRGB_BLOCK -> showString "FORMAT_ASTC_8x8_SRGB_BLOCK"+ FORMAT_ASTC_10x5_UNORM_BLOCK -> showString "FORMAT_ASTC_10x5_UNORM_BLOCK"+ FORMAT_ASTC_10x5_SRGB_BLOCK -> showString "FORMAT_ASTC_10x5_SRGB_BLOCK"+ FORMAT_ASTC_10x6_UNORM_BLOCK -> showString "FORMAT_ASTC_10x6_UNORM_BLOCK"+ FORMAT_ASTC_10x6_SRGB_BLOCK -> showString "FORMAT_ASTC_10x6_SRGB_BLOCK"+ FORMAT_ASTC_10x8_UNORM_BLOCK -> showString "FORMAT_ASTC_10x8_UNORM_BLOCK"+ FORMAT_ASTC_10x8_SRGB_BLOCK -> showString "FORMAT_ASTC_10x8_SRGB_BLOCK"+ FORMAT_ASTC_10x10_UNORM_BLOCK -> showString "FORMAT_ASTC_10x10_UNORM_BLOCK"+ FORMAT_ASTC_10x10_SRGB_BLOCK -> showString "FORMAT_ASTC_10x10_SRGB_BLOCK"+ FORMAT_ASTC_12x10_UNORM_BLOCK -> showString "FORMAT_ASTC_12x10_UNORM_BLOCK"+ FORMAT_ASTC_12x10_SRGB_BLOCK -> showString "FORMAT_ASTC_12x10_SRGB_BLOCK"+ FORMAT_ASTC_12x12_UNORM_BLOCK -> showString "FORMAT_ASTC_12x12_UNORM_BLOCK"+ FORMAT_ASTC_12x12_SRGB_BLOCK -> showString "FORMAT_ASTC_12x12_SRGB_BLOCK"+ FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT"+ FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT"+ FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT"+ FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT"+ FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT"+ FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT"+ FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT"+ FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT"+ FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT"+ FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT"+ FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT"+ FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT"+ FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT"+ FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT -> showString "FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT"+ FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG -> showString "FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG"+ FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG -> showString "FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG"+ FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG -> showString "FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG"+ FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG -> showString "FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG"+ FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG -> showString "FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG"+ FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG -> showString "FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG"+ FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG -> showString "FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG"+ FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG -> showString "FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG"+ FORMAT_G16_B16_R16_3PLANE_444_UNORM -> showString "FORMAT_G16_B16_R16_3PLANE_444_UNORM"+ FORMAT_G16_B16R16_2PLANE_422_UNORM -> showString "FORMAT_G16_B16R16_2PLANE_422_UNORM"+ FORMAT_G16_B16_R16_3PLANE_422_UNORM -> showString "FORMAT_G16_B16_R16_3PLANE_422_UNORM"+ FORMAT_G16_B16R16_2PLANE_420_UNORM -> showString "FORMAT_G16_B16R16_2PLANE_420_UNORM"+ FORMAT_G16_B16_R16_3PLANE_420_UNORM -> showString "FORMAT_G16_B16_R16_3PLANE_420_UNORM"+ FORMAT_B16G16R16G16_422_UNORM -> showString "FORMAT_B16G16R16G16_422_UNORM"+ FORMAT_G16B16G16R16_422_UNORM -> showString "FORMAT_G16B16G16R16_422_UNORM"+ FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 -> showString "FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16"+ FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 -> showString "FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16"+ FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 -> showString "FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16"+ FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 -> showString "FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16"+ FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 -> showString "FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16"+ FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 -> showString "FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16"+ FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 -> showString "FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16"+ FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 -> showString "FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16"+ FORMAT_R12X4G12X4_UNORM_2PACK16 -> showString "FORMAT_R12X4G12X4_UNORM_2PACK16"+ FORMAT_R12X4_UNORM_PACK16 -> showString "FORMAT_R12X4_UNORM_PACK16"+ FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 -> showString "FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16"+ FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 -> showString "FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16"+ FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 -> showString "FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16"+ FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 -> showString "FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16"+ FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 -> showString "FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16"+ FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 -> showString "FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16"+ FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 -> showString "FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16"+ FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 -> showString "FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16"+ FORMAT_R10X6G10X6_UNORM_2PACK16 -> showString "FORMAT_R10X6G10X6_UNORM_2PACK16"+ FORMAT_R10X6_UNORM_PACK16 -> showString "FORMAT_R10X6_UNORM_PACK16"+ FORMAT_G8_B8_R8_3PLANE_444_UNORM -> showString "FORMAT_G8_B8_R8_3PLANE_444_UNORM"+ FORMAT_G8_B8R8_2PLANE_422_UNORM -> showString "FORMAT_G8_B8R8_2PLANE_422_UNORM"+ FORMAT_G8_B8_R8_3PLANE_422_UNORM -> showString "FORMAT_G8_B8_R8_3PLANE_422_UNORM"+ FORMAT_G8_B8R8_2PLANE_420_UNORM -> showString "FORMAT_G8_B8R8_2PLANE_420_UNORM"+ FORMAT_G8_B8_R8_3PLANE_420_UNORM -> showString "FORMAT_G8_B8_R8_3PLANE_420_UNORM"+ FORMAT_B8G8R8G8_422_UNORM -> showString "FORMAT_B8G8R8G8_422_UNORM"+ FORMAT_G8B8G8R8_422_UNORM -> showString "FORMAT_G8B8G8R8_422_UNORM"+ Format x -> showParen (p >= 11) (showString "Format " . showsPrec 11 x)++instance Read Format where+ readPrec = parens (choose [("FORMAT_UNDEFINED", pure FORMAT_UNDEFINED)+ , ("FORMAT_R4G4_UNORM_PACK8", pure FORMAT_R4G4_UNORM_PACK8)+ , ("FORMAT_R4G4B4A4_UNORM_PACK16", pure FORMAT_R4G4B4A4_UNORM_PACK16)+ , ("FORMAT_B4G4R4A4_UNORM_PACK16", pure FORMAT_B4G4R4A4_UNORM_PACK16)+ , ("FORMAT_R5G6B5_UNORM_PACK16", pure FORMAT_R5G6B5_UNORM_PACK16)+ , ("FORMAT_B5G6R5_UNORM_PACK16", pure FORMAT_B5G6R5_UNORM_PACK16)+ , ("FORMAT_R5G5B5A1_UNORM_PACK16", pure FORMAT_R5G5B5A1_UNORM_PACK16)+ , ("FORMAT_B5G5R5A1_UNORM_PACK16", pure FORMAT_B5G5R5A1_UNORM_PACK16)+ , ("FORMAT_A1R5G5B5_UNORM_PACK16", pure FORMAT_A1R5G5B5_UNORM_PACK16)+ , ("FORMAT_R8_UNORM", pure FORMAT_R8_UNORM)+ , ("FORMAT_R8_SNORM", pure FORMAT_R8_SNORM)+ , ("FORMAT_R8_USCALED", pure FORMAT_R8_USCALED)+ , ("FORMAT_R8_SSCALED", pure FORMAT_R8_SSCALED)+ , ("FORMAT_R8_UINT", pure FORMAT_R8_UINT)+ , ("FORMAT_R8_SINT", pure FORMAT_R8_SINT)+ , ("FORMAT_R8_SRGB", pure FORMAT_R8_SRGB)+ , ("FORMAT_R8G8_UNORM", pure FORMAT_R8G8_UNORM)+ , ("FORMAT_R8G8_SNORM", pure FORMAT_R8G8_SNORM)+ , ("FORMAT_R8G8_USCALED", pure FORMAT_R8G8_USCALED)+ , ("FORMAT_R8G8_SSCALED", pure FORMAT_R8G8_SSCALED)+ , ("FORMAT_R8G8_UINT", pure FORMAT_R8G8_UINT)+ , ("FORMAT_R8G8_SINT", pure FORMAT_R8G8_SINT)+ , ("FORMAT_R8G8_SRGB", pure FORMAT_R8G8_SRGB)+ , ("FORMAT_R8G8B8_UNORM", pure FORMAT_R8G8B8_UNORM)+ , ("FORMAT_R8G8B8_SNORM", pure FORMAT_R8G8B8_SNORM)+ , ("FORMAT_R8G8B8_USCALED", pure FORMAT_R8G8B8_USCALED)+ , ("FORMAT_R8G8B8_SSCALED", pure FORMAT_R8G8B8_SSCALED)+ , ("FORMAT_R8G8B8_UINT", pure FORMAT_R8G8B8_UINT)+ , ("FORMAT_R8G8B8_SINT", pure FORMAT_R8G8B8_SINT)+ , ("FORMAT_R8G8B8_SRGB", pure FORMAT_R8G8B8_SRGB)+ , ("FORMAT_B8G8R8_UNORM", pure FORMAT_B8G8R8_UNORM)+ , ("FORMAT_B8G8R8_SNORM", pure FORMAT_B8G8R8_SNORM)+ , ("FORMAT_B8G8R8_USCALED", pure FORMAT_B8G8R8_USCALED)+ , ("FORMAT_B8G8R8_SSCALED", pure FORMAT_B8G8R8_SSCALED)+ , ("FORMAT_B8G8R8_UINT", pure FORMAT_B8G8R8_UINT)+ , ("FORMAT_B8G8R8_SINT", pure FORMAT_B8G8R8_SINT)+ , ("FORMAT_B8G8R8_SRGB", pure FORMAT_B8G8R8_SRGB)+ , ("FORMAT_R8G8B8A8_UNORM", pure FORMAT_R8G8B8A8_UNORM)+ , ("FORMAT_R8G8B8A8_SNORM", pure FORMAT_R8G8B8A8_SNORM)+ , ("FORMAT_R8G8B8A8_USCALED", pure FORMAT_R8G8B8A8_USCALED)+ , ("FORMAT_R8G8B8A8_SSCALED", pure FORMAT_R8G8B8A8_SSCALED)+ , ("FORMAT_R8G8B8A8_UINT", pure FORMAT_R8G8B8A8_UINT)+ , ("FORMAT_R8G8B8A8_SINT", pure FORMAT_R8G8B8A8_SINT)+ , ("FORMAT_R8G8B8A8_SRGB", pure FORMAT_R8G8B8A8_SRGB)+ , ("FORMAT_B8G8R8A8_UNORM", pure FORMAT_B8G8R8A8_UNORM)+ , ("FORMAT_B8G8R8A8_SNORM", pure FORMAT_B8G8R8A8_SNORM)+ , ("FORMAT_B8G8R8A8_USCALED", pure FORMAT_B8G8R8A8_USCALED)+ , ("FORMAT_B8G8R8A8_SSCALED", pure FORMAT_B8G8R8A8_SSCALED)+ , ("FORMAT_B8G8R8A8_UINT", pure FORMAT_B8G8R8A8_UINT)+ , ("FORMAT_B8G8R8A8_SINT", pure FORMAT_B8G8R8A8_SINT)+ , ("FORMAT_B8G8R8A8_SRGB", pure FORMAT_B8G8R8A8_SRGB)+ , ("FORMAT_A8B8G8R8_UNORM_PACK32", pure FORMAT_A8B8G8R8_UNORM_PACK32)+ , ("FORMAT_A8B8G8R8_SNORM_PACK32", pure FORMAT_A8B8G8R8_SNORM_PACK32)+ , ("FORMAT_A8B8G8R8_USCALED_PACK32", pure FORMAT_A8B8G8R8_USCALED_PACK32)+ , ("FORMAT_A8B8G8R8_SSCALED_PACK32", pure FORMAT_A8B8G8R8_SSCALED_PACK32)+ , ("FORMAT_A8B8G8R8_UINT_PACK32", pure FORMAT_A8B8G8R8_UINT_PACK32)+ , ("FORMAT_A8B8G8R8_SINT_PACK32", pure FORMAT_A8B8G8R8_SINT_PACK32)+ , ("FORMAT_A8B8G8R8_SRGB_PACK32", pure FORMAT_A8B8G8R8_SRGB_PACK32)+ , ("FORMAT_A2R10G10B10_UNORM_PACK32", pure FORMAT_A2R10G10B10_UNORM_PACK32)+ , ("FORMAT_A2R10G10B10_SNORM_PACK32", pure FORMAT_A2R10G10B10_SNORM_PACK32)+ , ("FORMAT_A2R10G10B10_USCALED_PACK32", pure FORMAT_A2R10G10B10_USCALED_PACK32)+ , ("FORMAT_A2R10G10B10_SSCALED_PACK32", pure FORMAT_A2R10G10B10_SSCALED_PACK32)+ , ("FORMAT_A2R10G10B10_UINT_PACK32", pure FORMAT_A2R10G10B10_UINT_PACK32)+ , ("FORMAT_A2R10G10B10_SINT_PACK32", pure FORMAT_A2R10G10B10_SINT_PACK32)+ , ("FORMAT_A2B10G10R10_UNORM_PACK32", pure FORMAT_A2B10G10R10_UNORM_PACK32)+ , ("FORMAT_A2B10G10R10_SNORM_PACK32", pure FORMAT_A2B10G10R10_SNORM_PACK32)+ , ("FORMAT_A2B10G10R10_USCALED_PACK32", pure FORMAT_A2B10G10R10_USCALED_PACK32)+ , ("FORMAT_A2B10G10R10_SSCALED_PACK32", pure FORMAT_A2B10G10R10_SSCALED_PACK32)+ , ("FORMAT_A2B10G10R10_UINT_PACK32", pure FORMAT_A2B10G10R10_UINT_PACK32)+ , ("FORMAT_A2B10G10R10_SINT_PACK32", pure FORMAT_A2B10G10R10_SINT_PACK32)+ , ("FORMAT_R16_UNORM", pure FORMAT_R16_UNORM)+ , ("FORMAT_R16_SNORM", pure FORMAT_R16_SNORM)+ , ("FORMAT_R16_USCALED", pure FORMAT_R16_USCALED)+ , ("FORMAT_R16_SSCALED", pure FORMAT_R16_SSCALED)+ , ("FORMAT_R16_UINT", pure FORMAT_R16_UINT)+ , ("FORMAT_R16_SINT", pure FORMAT_R16_SINT)+ , ("FORMAT_R16_SFLOAT", pure FORMAT_R16_SFLOAT)+ , ("FORMAT_R16G16_UNORM", pure FORMAT_R16G16_UNORM)+ , ("FORMAT_R16G16_SNORM", pure FORMAT_R16G16_SNORM)+ , ("FORMAT_R16G16_USCALED", pure FORMAT_R16G16_USCALED)+ , ("FORMAT_R16G16_SSCALED", pure FORMAT_R16G16_SSCALED)+ , ("FORMAT_R16G16_UINT", pure FORMAT_R16G16_UINT)+ , ("FORMAT_R16G16_SINT", pure FORMAT_R16G16_SINT)+ , ("FORMAT_R16G16_SFLOAT", pure FORMAT_R16G16_SFLOAT)+ , ("FORMAT_R16G16B16_UNORM", pure FORMAT_R16G16B16_UNORM)+ , ("FORMAT_R16G16B16_SNORM", pure FORMAT_R16G16B16_SNORM)+ , ("FORMAT_R16G16B16_USCALED", pure FORMAT_R16G16B16_USCALED)+ , ("FORMAT_R16G16B16_SSCALED", pure FORMAT_R16G16B16_SSCALED)+ , ("FORMAT_R16G16B16_UINT", pure FORMAT_R16G16B16_UINT)+ , ("FORMAT_R16G16B16_SINT", pure FORMAT_R16G16B16_SINT)+ , ("FORMAT_R16G16B16_SFLOAT", pure FORMAT_R16G16B16_SFLOAT)+ , ("FORMAT_R16G16B16A16_UNORM", pure FORMAT_R16G16B16A16_UNORM)+ , ("FORMAT_R16G16B16A16_SNORM", pure FORMAT_R16G16B16A16_SNORM)+ , ("FORMAT_R16G16B16A16_USCALED", pure FORMAT_R16G16B16A16_USCALED)+ , ("FORMAT_R16G16B16A16_SSCALED", pure FORMAT_R16G16B16A16_SSCALED)+ , ("FORMAT_R16G16B16A16_UINT", pure FORMAT_R16G16B16A16_UINT)+ , ("FORMAT_R16G16B16A16_SINT", pure FORMAT_R16G16B16A16_SINT)+ , ("FORMAT_R16G16B16A16_SFLOAT", pure FORMAT_R16G16B16A16_SFLOAT)+ , ("FORMAT_R32_UINT", pure FORMAT_R32_UINT)+ , ("FORMAT_R32_SINT", pure FORMAT_R32_SINT)+ , ("FORMAT_R32_SFLOAT", pure FORMAT_R32_SFLOAT)+ , ("FORMAT_R32G32_UINT", pure FORMAT_R32G32_UINT)+ , ("FORMAT_R32G32_SINT", pure FORMAT_R32G32_SINT)+ , ("FORMAT_R32G32_SFLOAT", pure FORMAT_R32G32_SFLOAT)+ , ("FORMAT_R32G32B32_UINT", pure FORMAT_R32G32B32_UINT)+ , ("FORMAT_R32G32B32_SINT", pure FORMAT_R32G32B32_SINT)+ , ("FORMAT_R32G32B32_SFLOAT", pure FORMAT_R32G32B32_SFLOAT)+ , ("FORMAT_R32G32B32A32_UINT", pure FORMAT_R32G32B32A32_UINT)+ , ("FORMAT_R32G32B32A32_SINT", pure FORMAT_R32G32B32A32_SINT)+ , ("FORMAT_R32G32B32A32_SFLOAT", pure FORMAT_R32G32B32A32_SFLOAT)+ , ("FORMAT_R64_UINT", pure FORMAT_R64_UINT)+ , ("FORMAT_R64_SINT", pure FORMAT_R64_SINT)+ , ("FORMAT_R64_SFLOAT", pure FORMAT_R64_SFLOAT)+ , ("FORMAT_R64G64_UINT", pure FORMAT_R64G64_UINT)+ , ("FORMAT_R64G64_SINT", pure FORMAT_R64G64_SINT)+ , ("FORMAT_R64G64_SFLOAT", pure FORMAT_R64G64_SFLOAT)+ , ("FORMAT_R64G64B64_UINT", pure FORMAT_R64G64B64_UINT)+ , ("FORMAT_R64G64B64_SINT", pure FORMAT_R64G64B64_SINT)+ , ("FORMAT_R64G64B64_SFLOAT", pure FORMAT_R64G64B64_SFLOAT)+ , ("FORMAT_R64G64B64A64_UINT", pure FORMAT_R64G64B64A64_UINT)+ , ("FORMAT_R64G64B64A64_SINT", pure FORMAT_R64G64B64A64_SINT)+ , ("FORMAT_R64G64B64A64_SFLOAT", pure FORMAT_R64G64B64A64_SFLOAT)+ , ("FORMAT_B10G11R11_UFLOAT_PACK32", pure FORMAT_B10G11R11_UFLOAT_PACK32)+ , ("FORMAT_E5B9G9R9_UFLOAT_PACK32", pure FORMAT_E5B9G9R9_UFLOAT_PACK32)+ , ("FORMAT_D16_UNORM", pure FORMAT_D16_UNORM)+ , ("FORMAT_X8_D24_UNORM_PACK32", pure FORMAT_X8_D24_UNORM_PACK32)+ , ("FORMAT_D32_SFLOAT", pure FORMAT_D32_SFLOAT)+ , ("FORMAT_S8_UINT", pure FORMAT_S8_UINT)+ , ("FORMAT_D16_UNORM_S8_UINT", pure FORMAT_D16_UNORM_S8_UINT)+ , ("FORMAT_D24_UNORM_S8_UINT", pure FORMAT_D24_UNORM_S8_UINT)+ , ("FORMAT_D32_SFLOAT_S8_UINT", pure FORMAT_D32_SFLOAT_S8_UINT)+ , ("FORMAT_BC1_RGB_UNORM_BLOCK", pure FORMAT_BC1_RGB_UNORM_BLOCK)+ , ("FORMAT_BC1_RGB_SRGB_BLOCK", pure FORMAT_BC1_RGB_SRGB_BLOCK)+ , ("FORMAT_BC1_RGBA_UNORM_BLOCK", pure FORMAT_BC1_RGBA_UNORM_BLOCK)+ , ("FORMAT_BC1_RGBA_SRGB_BLOCK", pure FORMAT_BC1_RGBA_SRGB_BLOCK)+ , ("FORMAT_BC2_UNORM_BLOCK", pure FORMAT_BC2_UNORM_BLOCK)+ , ("FORMAT_BC2_SRGB_BLOCK", pure FORMAT_BC2_SRGB_BLOCK)+ , ("FORMAT_BC3_UNORM_BLOCK", pure FORMAT_BC3_UNORM_BLOCK)+ , ("FORMAT_BC3_SRGB_BLOCK", pure FORMAT_BC3_SRGB_BLOCK)+ , ("FORMAT_BC4_UNORM_BLOCK", pure FORMAT_BC4_UNORM_BLOCK)+ , ("FORMAT_BC4_SNORM_BLOCK", pure FORMAT_BC4_SNORM_BLOCK)+ , ("FORMAT_BC5_UNORM_BLOCK", pure FORMAT_BC5_UNORM_BLOCK)+ , ("FORMAT_BC5_SNORM_BLOCK", pure FORMAT_BC5_SNORM_BLOCK)+ , ("FORMAT_BC6H_UFLOAT_BLOCK", pure FORMAT_BC6H_UFLOAT_BLOCK)+ , ("FORMAT_BC6H_SFLOAT_BLOCK", pure FORMAT_BC6H_SFLOAT_BLOCK)+ , ("FORMAT_BC7_UNORM_BLOCK", pure FORMAT_BC7_UNORM_BLOCK)+ , ("FORMAT_BC7_SRGB_BLOCK", pure FORMAT_BC7_SRGB_BLOCK)+ , ("FORMAT_ETC2_R8G8B8_UNORM_BLOCK", pure FORMAT_ETC2_R8G8B8_UNORM_BLOCK)+ , ("FORMAT_ETC2_R8G8B8_SRGB_BLOCK", pure FORMAT_ETC2_R8G8B8_SRGB_BLOCK)+ , ("FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK", pure FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK)+ , ("FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK", pure FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK)+ , ("FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK", pure FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK)+ , ("FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK", pure FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK)+ , ("FORMAT_EAC_R11_UNORM_BLOCK", pure FORMAT_EAC_R11_UNORM_BLOCK)+ , ("FORMAT_EAC_R11_SNORM_BLOCK", pure FORMAT_EAC_R11_SNORM_BLOCK)+ , ("FORMAT_EAC_R11G11_UNORM_BLOCK", pure FORMAT_EAC_R11G11_UNORM_BLOCK)+ , ("FORMAT_EAC_R11G11_SNORM_BLOCK", pure FORMAT_EAC_R11G11_SNORM_BLOCK)+ , ("FORMAT_ASTC_4x4_UNORM_BLOCK", pure FORMAT_ASTC_4x4_UNORM_BLOCK)+ , ("FORMAT_ASTC_4x4_SRGB_BLOCK", pure FORMAT_ASTC_4x4_SRGB_BLOCK)+ , ("FORMAT_ASTC_5x4_UNORM_BLOCK", pure FORMAT_ASTC_5x4_UNORM_BLOCK)+ , ("FORMAT_ASTC_5x4_SRGB_BLOCK", pure FORMAT_ASTC_5x4_SRGB_BLOCK)+ , ("FORMAT_ASTC_5x5_UNORM_BLOCK", pure FORMAT_ASTC_5x5_UNORM_BLOCK)+ , ("FORMAT_ASTC_5x5_SRGB_BLOCK", pure FORMAT_ASTC_5x5_SRGB_BLOCK)+ , ("FORMAT_ASTC_6x5_UNORM_BLOCK", pure FORMAT_ASTC_6x5_UNORM_BLOCK)+ , ("FORMAT_ASTC_6x5_SRGB_BLOCK", pure FORMAT_ASTC_6x5_SRGB_BLOCK)+ , ("FORMAT_ASTC_6x6_UNORM_BLOCK", pure FORMAT_ASTC_6x6_UNORM_BLOCK)+ , ("FORMAT_ASTC_6x6_SRGB_BLOCK", pure FORMAT_ASTC_6x6_SRGB_BLOCK)+ , ("FORMAT_ASTC_8x5_UNORM_BLOCK", pure FORMAT_ASTC_8x5_UNORM_BLOCK)+ , ("FORMAT_ASTC_8x5_SRGB_BLOCK", pure FORMAT_ASTC_8x5_SRGB_BLOCK)+ , ("FORMAT_ASTC_8x6_UNORM_BLOCK", pure FORMAT_ASTC_8x6_UNORM_BLOCK)+ , ("FORMAT_ASTC_8x6_SRGB_BLOCK", pure FORMAT_ASTC_8x6_SRGB_BLOCK)+ , ("FORMAT_ASTC_8x8_UNORM_BLOCK", pure FORMAT_ASTC_8x8_UNORM_BLOCK)+ , ("FORMAT_ASTC_8x8_SRGB_BLOCK", pure FORMAT_ASTC_8x8_SRGB_BLOCK)+ , ("FORMAT_ASTC_10x5_UNORM_BLOCK", pure FORMAT_ASTC_10x5_UNORM_BLOCK)+ , ("FORMAT_ASTC_10x5_SRGB_BLOCK", pure FORMAT_ASTC_10x5_SRGB_BLOCK)+ , ("FORMAT_ASTC_10x6_UNORM_BLOCK", pure FORMAT_ASTC_10x6_UNORM_BLOCK)+ , ("FORMAT_ASTC_10x6_SRGB_BLOCK", pure FORMAT_ASTC_10x6_SRGB_BLOCK)+ , ("FORMAT_ASTC_10x8_UNORM_BLOCK", pure FORMAT_ASTC_10x8_UNORM_BLOCK)+ , ("FORMAT_ASTC_10x8_SRGB_BLOCK", pure FORMAT_ASTC_10x8_SRGB_BLOCK)+ , ("FORMAT_ASTC_10x10_UNORM_BLOCK", pure FORMAT_ASTC_10x10_UNORM_BLOCK)+ , ("FORMAT_ASTC_10x10_SRGB_BLOCK", pure FORMAT_ASTC_10x10_SRGB_BLOCK)+ , ("FORMAT_ASTC_12x10_UNORM_BLOCK", pure FORMAT_ASTC_12x10_UNORM_BLOCK)+ , ("FORMAT_ASTC_12x10_SRGB_BLOCK", pure FORMAT_ASTC_12x10_SRGB_BLOCK)+ , ("FORMAT_ASTC_12x12_UNORM_BLOCK", pure FORMAT_ASTC_12x12_UNORM_BLOCK)+ , ("FORMAT_ASTC_12x12_SRGB_BLOCK", pure FORMAT_ASTC_12x12_SRGB_BLOCK)+ , ("FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT)+ , ("FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT)+ , ("FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT)+ , ("FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT)+ , ("FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT)+ , ("FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT)+ , ("FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT)+ , ("FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT)+ , ("FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT)+ , ("FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT)+ , ("FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT)+ , ("FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT)+ , ("FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT)+ , ("FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT", pure FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT)+ , ("FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG", pure FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG)+ , ("FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG", pure FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG)+ , ("FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG", pure FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG)+ , ("FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG", pure FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG)+ , ("FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG", pure FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG)+ , ("FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG", pure FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG)+ , ("FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG", pure FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG)+ , ("FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG", pure FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG)+ , ("FORMAT_G16_B16_R16_3PLANE_444_UNORM", pure FORMAT_G16_B16_R16_3PLANE_444_UNORM)+ , ("FORMAT_G16_B16R16_2PLANE_422_UNORM", pure FORMAT_G16_B16R16_2PLANE_422_UNORM)+ , ("FORMAT_G16_B16_R16_3PLANE_422_UNORM", pure FORMAT_G16_B16_R16_3PLANE_422_UNORM)+ , ("FORMAT_G16_B16R16_2PLANE_420_UNORM", pure FORMAT_G16_B16R16_2PLANE_420_UNORM)+ , ("FORMAT_G16_B16_R16_3PLANE_420_UNORM", pure FORMAT_G16_B16_R16_3PLANE_420_UNORM)+ , ("FORMAT_B16G16R16G16_422_UNORM", pure FORMAT_B16G16R16G16_422_UNORM)+ , ("FORMAT_G16B16G16R16_422_UNORM", pure FORMAT_G16B16G16R16_422_UNORM)+ , ("FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16", pure FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16)+ , ("FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16", pure FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16)+ , ("FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16", pure FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16)+ , ("FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16", pure FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16)+ , ("FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16", pure FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16)+ , ("FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16", pure FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16)+ , ("FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16", pure FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16)+ , ("FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16", pure FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16)+ , ("FORMAT_R12X4G12X4_UNORM_2PACK16", pure FORMAT_R12X4G12X4_UNORM_2PACK16)+ , ("FORMAT_R12X4_UNORM_PACK16", pure FORMAT_R12X4_UNORM_PACK16)+ , ("FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16", pure FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16)+ , ("FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16", pure FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16)+ , ("FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16", pure FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16)+ , ("FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16", pure FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16)+ , ("FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16", pure FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16)+ , ("FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16", pure FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16)+ , ("FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16", pure FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16)+ , ("FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16", pure FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16)+ , ("FORMAT_R10X6G10X6_UNORM_2PACK16", pure FORMAT_R10X6G10X6_UNORM_2PACK16)+ , ("FORMAT_R10X6_UNORM_PACK16", pure FORMAT_R10X6_UNORM_PACK16)+ , ("FORMAT_G8_B8_R8_3PLANE_444_UNORM", pure FORMAT_G8_B8_R8_3PLANE_444_UNORM)+ , ("FORMAT_G8_B8R8_2PLANE_422_UNORM", pure FORMAT_G8_B8R8_2PLANE_422_UNORM)+ , ("FORMAT_G8_B8_R8_3PLANE_422_UNORM", pure FORMAT_G8_B8_R8_3PLANE_422_UNORM)+ , ("FORMAT_G8_B8R8_2PLANE_420_UNORM", pure FORMAT_G8_B8R8_2PLANE_420_UNORM)+ , ("FORMAT_G8_B8_R8_3PLANE_420_UNORM", pure FORMAT_G8_B8_R8_3PLANE_420_UNORM)+ , ("FORMAT_B8G8R8G8_422_UNORM", pure FORMAT_B8G8R8G8_422_UNORM)+ , ("FORMAT_G8B8G8R8_422_UNORM", pure FORMAT_G8B8G8R8_422_UNORM)]+ ++++ prec 10 (do+ expectP (Ident "Format")+ v <- step readPrec+ pure (Format v)))+
+ src/Graphics/Vulkan/Core10/Enums/Format.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.Format (Format) where++++data Format+
+ src/Graphics/Vulkan/Core10/Enums/FormatFeatureFlagBits.hs view
@@ -0,0 +1,465 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits ( FormatFeatureFlagBits( FORMAT_FEATURE_SAMPLED_IMAGE_BIT+ , FORMAT_FEATURE_STORAGE_IMAGE_BIT+ , FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT+ , FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT+ , FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT+ , FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT+ , FORMAT_FEATURE_VERTEX_BUFFER_BIT+ , FORMAT_FEATURE_COLOR_ATTACHMENT_BIT+ , FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT+ , FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT+ , FORMAT_FEATURE_BLIT_SRC_BIT+ , FORMAT_FEATURE_BLIT_DST_BIT+ , FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT+ , FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT+ , FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG+ , FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT+ , FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT+ , FORMAT_FEATURE_DISJOINT_BIT+ , FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT+ , FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT+ , FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT+ , FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT+ , FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT+ , FORMAT_FEATURE_TRANSFER_DST_BIT+ , FORMAT_FEATURE_TRANSFER_SRC_BIT+ , ..+ )+ , FormatFeatureFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkFormatFeatureFlagBits - Bitmask specifying features supported by a+-- buffer+--+-- = Description+--+-- The following bits /may/ be set in @linearTilingFeatures@,+-- @optimalTilingFeatures@, and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkDrmFormatModifierPropertiesEXT drmFormatModifierTilingFeatures>,+-- specifying that the features are supported by+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImage images>+-- or+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageView image views>+-- created with the queried+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties'::'Graphics.Vulkan.Core10.Enums.Format.Format':+--+-- - 'FORMAT_FEATURE_SAMPLED_IMAGE_BIT' specifies that an image view+-- /can/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled from>.+--+-- - 'FORMAT_FEATURE_STORAGE_IMAGE_BIT' specifies that an image view+-- /can/ be used as a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage images>.+--+-- - 'FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT' specifies that an image+-- view /can/ be used as storage image that supports atomic operations.+--+-- - 'FORMAT_FEATURE_COLOR_ATTACHMENT_BIT' specifies that an image view+-- /can/ be used as a framebuffer color attachment and as an input+-- attachment.+--+-- - 'FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT' specifies that an image+-- view /can/ be used as a framebuffer color attachment that supports+-- blending and as an input attachment.+--+-- - 'FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT' specifies that an+-- image view /can/ be used as a framebuffer depth\/stencil attachment+-- and as an input attachment.+--+-- - 'FORMAT_FEATURE_BLIT_SRC_BIT' specifies that an image /can/ be used+-- as @srcImage@ for the+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' command.+--+-- - 'FORMAT_FEATURE_BLIT_DST_BIT' specifies that an image /can/ be used+-- as @dstImage@ for the+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' command.+--+-- - 'FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT' specifies that if+-- 'FORMAT_FEATURE_SAMPLED_IMAGE_BIT' is also set, an image view /can/+-- be used with a sampler that has either of @magFilter@ or @minFilter@+-- set to 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR', or+-- @mipmapMode@ set to+-- 'Graphics.Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'.+-- If 'FORMAT_FEATURE_BLIT_SRC_BIT' is also set, an image can be used+-- as the @srcImage@ to+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' with a+-- 'Graphics.Vulkan.Core10.Enums.Filter.Filter' of+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR'. This bit /must/+-- only be exposed for formats that also support the+-- 'FORMAT_FEATURE_SAMPLED_IMAGE_BIT' or 'FORMAT_FEATURE_BLIT_SRC_BIT'.+--+-- If the format being queried is a depth\/stencil format, this bit+-- only specifies that the depth aspect (not the stencil aspect) of an+-- image of this format supports linear filtering, and that linear+-- filtering of the depth aspect is supported whether depth compare is+-- enabled in the sampler or not. If this bit is not present, linear+-- filtering with depth compare disabled is unsupported and linear+-- filtering with depth compare enabled is supported, but /may/ compute+-- the filtered value in an implementation-dependent manner which+-- differs from the normal rules of linear filtering. The resulting+-- value /must/ be in the range [0,1] and /should/ be proportional to,+-- or a weighted average of, the number of comparison passes or+-- failures.+--+-- - 'FORMAT_FEATURE_TRANSFER_SRC_BIT' specifies that an image /can/ be+-- used as a source image for+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands>.+--+-- - 'FORMAT_FEATURE_TRANSFER_DST_BIT' specifies that an image /can/ be+-- used as a destination image for+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands>+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears clear commands>.+--+-- - 'FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT' specifies+-- 'Graphics.Vulkan.Core10.Handles.Image' /can/ be used as a sampled+-- image with a min or max+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SamplerReductionMode'.+-- This bit /must/ only be exposed for formats that also support the+-- 'FORMAT_FEATURE_SAMPLED_IMAGE_BIT'.+--+-- - 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+-- specifies that 'Graphics.Vulkan.Core10.Handles.Image' /can/ be used+-- with a sampler that has either of @magFilter@ or @minFilter@ set to+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT',+-- or be the source image for a blit with+-- 'Graphics.Vulkan.Core10.Enums.Filter.Filter' set to+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'.+-- This bit /must/ only be exposed for formats that also support the+-- 'FORMAT_FEATURE_SAMPLED_IMAGE_BIT'. If the format being queried is a+-- depth\/stencil format, this only specifies that the depth aspect is+-- cubic filterable.+--+-- - 'FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT' specifies that an+-- application /can/ define a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>+-- using this format as a source, and that an image of this format+-- /can/ be used with a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'+-- @xChromaOffset@ and\/or @yChromaOffset@ of+-- 'Graphics.Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_MIDPOINT'.+-- Otherwise both @xChromaOffset@ and @yChromaOffset@ /must/ be+-- 'Graphics.Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_COSITED_EVEN'.+-- If a format does not incorporate chroma downsampling (it is not a+-- “422” or “420” format) but the implementation supports sampler+-- Y′CBCR conversion for this format, the implementation /must/ set+-- 'FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT'.+--+-- - 'FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT' specifies that an+-- application /can/ define a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>+-- using this format as a source, and that an image of this format+-- /can/ be used with a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'+-- @xChromaOffset@ and\/or @yChromaOffset@ of+-- 'Graphics.Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_COSITED_EVEN'.+-- Otherwise both @xChromaOffset@ and @yChromaOffset@ /must/ be+-- 'Graphics.Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_MIDPOINT'.+-- If neither 'FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT' nor+-- 'FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT' is set, the application+-- /must/ not define a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>+-- using this format as a source.+--+-- - 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT'+-- specifies that the format can do linear sampler filtering+-- (min\/magFilter) whilst sampler Y′CBCR conversion is enabled.+--+-- - 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT'+-- specifies that the format can have different chroma, min, and mag+-- filters.+--+-- - 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT'+-- specifies that reconstruction is explicit, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstruction>.+-- If this bit is not present, reconstruction is implicit by default.+--+-- - 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT'+-- specifies that reconstruction /can/ be forcibly made explicit by+-- setting+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'::@forceExplicitReconstruction@+-- to 'Graphics.Vulkan.Core10.BaseType.TRUE'. If the format being+-- queried supports+-- 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT'+-- it /must/ also support+-- 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT'.+--+-- - 'FORMAT_FEATURE_DISJOINT_BIT' specifies that a multi-planar image+-- /can/ have the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'+-- set during image creation. An implementation /must/ not set+-- 'FORMAT_FEATURE_DISJOINT_BIT' for /single-plane formats/.+--+-- - 'FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT' specifies that an+-- image view /can/ be used as a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>.+--+-- The following bits /may/ be set in @bufferFeatures@, specifying that the+-- features are supported by+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBuffer buffers>+-- or+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkBufferView buffer views>+-- created with the queried+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceProperties'::'Graphics.Vulkan.Core10.Enums.Format.Format':+--+-- - 'FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT' specifies that the format+-- /can/ be used to create a buffer view that /can/ be bound to a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'+-- descriptor.+--+-- - 'FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT' specifies that the format+-- /can/ be used to create a buffer view that /can/ be bound to a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'+-- descriptor.+--+-- - 'FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT' specifies that+-- atomic operations are supported on+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'+-- with this format.+--+-- - 'FORMAT_FEATURE_VERTEX_BUFFER_BIT' specifies that the format /can/+-- be used as a vertex attribute format+-- ('Graphics.Vulkan.Core10.Pipeline.VertexInputAttributeDescription'::'Graphics.Vulkan.Core10.Enums.Format.Format').+--+-- = See Also+--+-- 'FormatFeatureFlags'+newtype FormatFeatureFlagBits = FormatFeatureFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'FORMAT_FEATURE_SAMPLED_IMAGE_BIT' specifies that an image view /can/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled from>.+pattern FORMAT_FEATURE_SAMPLED_IMAGE_BIT = FormatFeatureFlagBits 0x00000001+-- | 'FORMAT_FEATURE_STORAGE_IMAGE_BIT' specifies that an image view /can/ be+-- used as a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage images>.+pattern FORMAT_FEATURE_STORAGE_IMAGE_BIT = FormatFeatureFlagBits 0x00000002+-- | 'FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT' specifies that an image view+-- /can/ be used as storage image that supports atomic operations.+pattern FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = FormatFeatureFlagBits 0x00000004+-- | 'FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT' specifies that the format+-- /can/ be used to create a buffer view that /can/ be bound to a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'+-- descriptor.+pattern FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = FormatFeatureFlagBits 0x00000008+-- | 'FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT' specifies that the format+-- /can/ be used to create a buffer view that /can/ be bound to a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'+-- descriptor.+pattern FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = FormatFeatureFlagBits 0x00000010+-- | 'FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT' specifies that atomic+-- operations are supported on+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'+-- with this format.+pattern FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = FormatFeatureFlagBits 0x00000020+-- | 'FORMAT_FEATURE_VERTEX_BUFFER_BIT' specifies that the format /can/ be+-- used as a vertex attribute format+-- ('Graphics.Vulkan.Core10.Pipeline.VertexInputAttributeDescription'::'Graphics.Vulkan.Core10.Enums.Format.Format').+pattern FORMAT_FEATURE_VERTEX_BUFFER_BIT = FormatFeatureFlagBits 0x00000040+-- | 'FORMAT_FEATURE_COLOR_ATTACHMENT_BIT' specifies that an image view /can/+-- be used as a framebuffer color attachment and as an input attachment.+pattern FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = FormatFeatureFlagBits 0x00000080+-- | 'FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT' specifies that an image view+-- /can/ be used as a framebuffer color attachment that supports blending+-- and as an input attachment.+pattern FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = FormatFeatureFlagBits 0x00000100+-- | 'FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT' specifies that an image+-- view /can/ be used as a framebuffer depth\/stencil attachment and as an+-- input attachment.+pattern FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = FormatFeatureFlagBits 0x00000200+-- | 'FORMAT_FEATURE_BLIT_SRC_BIT' specifies that an image /can/ be used as+-- @srcImage@ for the+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' command.+pattern FORMAT_FEATURE_BLIT_SRC_BIT = FormatFeatureFlagBits 0x00000400+-- | 'FORMAT_FEATURE_BLIT_DST_BIT' specifies that an image /can/ be used as+-- @dstImage@ for the+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' command.+pattern FORMAT_FEATURE_BLIT_DST_BIT = FormatFeatureFlagBits 0x00000800+-- | 'FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT' specifies that if+-- 'FORMAT_FEATURE_SAMPLED_IMAGE_BIT' is also set, an image view /can/ be+-- used with a sampler that has either of @magFilter@ or @minFilter@ set to+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR', or @mipmapMode@ set+-- to+-- 'Graphics.Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'.+-- If 'FORMAT_FEATURE_BLIT_SRC_BIT' is also set, an image can be used as+-- the @srcImage@ to+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' with a+-- 'Graphics.Vulkan.Core10.Enums.Filter.Filter' of+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR'. This bit /must/+-- only be exposed for formats that also support the+-- 'FORMAT_FEATURE_SAMPLED_IMAGE_BIT' or 'FORMAT_FEATURE_BLIT_SRC_BIT'.+--+-- If the format being queried is a depth\/stencil format, this bit only+-- specifies that the depth aspect (not the stencil aspect) of an image of+-- this format supports linear filtering, and that linear filtering of the+-- depth aspect is supported whether depth compare is enabled in the+-- sampler or not. If this bit is not present, linear filtering with depth+-- compare disabled is unsupported and linear filtering with depth compare+-- enabled is supported, but /may/ compute the filtered value in an+-- implementation-dependent manner which differs from the normal rules of+-- linear filtering. The resulting value /must/ be in the range [0,1] and+-- /should/ be proportional to, or a weighted average of, the number of+-- comparison passes or failures.+pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = FormatFeatureFlagBits 0x00001000+-- | 'FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT' specifies that an image+-- view /can/ be used as a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>.+pattern FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = FormatFeatureFlagBits 0x01000000+-- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"+pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = FormatFeatureFlagBits 0x00002000+-- | 'FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT' specifies+-- 'Graphics.Vulkan.Core10.Handles.Image' /can/ be used as a sampled image+-- with a min or max+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SamplerReductionMode'.+-- This bit /must/ only be exposed for formats that also support the+-- 'FORMAT_FEATURE_SAMPLED_IMAGE_BIT'.+pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = FormatFeatureFlagBits 0x00010000+-- | 'FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT' specifies that an+-- application /can/ define a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>+-- using this format as a source, and that an image of this format /can/ be+-- used with a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'+-- @xChromaOffset@ and\/or @yChromaOffset@ of+-- 'Graphics.Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_COSITED_EVEN'.+-- Otherwise both @xChromaOffset@ and @yChromaOffset@ /must/ be+-- 'Graphics.Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_MIDPOINT'.+-- If neither 'FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT' nor+-- 'FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT' is set, the application+-- /must/ not define a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>+-- using this format as a source.+pattern FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = FormatFeatureFlagBits 0x00800000+-- | 'FORMAT_FEATURE_DISJOINT_BIT' specifies that a multi-planar image /can/+-- have the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'+-- set during image creation. An implementation /must/ not set+-- 'FORMAT_FEATURE_DISJOINT_BIT' for /single-plane formats/.+pattern FORMAT_FEATURE_DISJOINT_BIT = FormatFeatureFlagBits 0x00400000+-- | 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT'+-- specifies that reconstruction /can/ be forcibly made explicit by setting+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'::@forceExplicitReconstruction@+-- to 'Graphics.Vulkan.Core10.BaseType.TRUE'. If the format being queried+-- supports+-- 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT'+-- it /must/ also support+-- 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT'.+pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = FormatFeatureFlagBits 0x00200000+-- | 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT'+-- specifies that reconstruction is explicit, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstruction>.+-- If this bit is not present, reconstruction is implicit by default.+pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = FormatFeatureFlagBits 0x00100000+-- | 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT'+-- specifies that the format can have different chroma, min, and mag+-- filters.+pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = FormatFeatureFlagBits 0x00080000+-- | 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT'+-- specifies that the format can do linear sampler filtering+-- (min\/magFilter) whilst sampler Y′CBCR conversion is enabled.+pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = FormatFeatureFlagBits 0x00040000+-- | 'FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT' specifies that an+-- application /can/ define a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>+-- using this format as a source, and that an image of this format /can/ be+-- used with a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'+-- @xChromaOffset@ and\/or @yChromaOffset@ of+-- 'Graphics.Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_MIDPOINT'.+-- Otherwise both @xChromaOffset@ and @yChromaOffset@ /must/ be+-- 'Graphics.Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_COSITED_EVEN'.+-- If a format does not incorporate chroma downsampling (it is not a “422”+-- or “420” format) but the implementation supports sampler Y′CBCR+-- conversion for this format, the implementation /must/ set+-- 'FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT'.+pattern FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = FormatFeatureFlagBits 0x00020000+-- | 'FORMAT_FEATURE_TRANSFER_DST_BIT' specifies that an image /can/ be used+-- as a destination image for+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands>+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears clear commands>.+pattern FORMAT_FEATURE_TRANSFER_DST_BIT = FormatFeatureFlagBits 0x00008000+-- | 'FORMAT_FEATURE_TRANSFER_SRC_BIT' specifies that an image /can/ be used+-- as a source image for+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands>.+pattern FORMAT_FEATURE_TRANSFER_SRC_BIT = FormatFeatureFlagBits 0x00004000++type FormatFeatureFlags = FormatFeatureFlagBits++instance Show FormatFeatureFlagBits where+ showsPrec p = \case+ FORMAT_FEATURE_SAMPLED_IMAGE_BIT -> showString "FORMAT_FEATURE_SAMPLED_IMAGE_BIT"+ FORMAT_FEATURE_STORAGE_IMAGE_BIT -> showString "FORMAT_FEATURE_STORAGE_IMAGE_BIT"+ FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT -> showString "FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"+ FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT -> showString "FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"+ FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT -> showString "FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"+ FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT -> showString "FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"+ FORMAT_FEATURE_VERTEX_BUFFER_BIT -> showString "FORMAT_FEATURE_VERTEX_BUFFER_BIT"+ FORMAT_FEATURE_COLOR_ATTACHMENT_BIT -> showString "FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"+ FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT -> showString "FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"+ FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT -> showString "FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"+ FORMAT_FEATURE_BLIT_SRC_BIT -> showString "FORMAT_FEATURE_BLIT_SRC_BIT"+ FORMAT_FEATURE_BLIT_DST_BIT -> showString "FORMAT_FEATURE_BLIT_DST_BIT"+ FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT -> showString "FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"+ FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT -> showString "FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT"+ FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG -> showString "FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"+ FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT -> showString "FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT"+ FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT -> showString "FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT"+ FORMAT_FEATURE_DISJOINT_BIT -> showString "FORMAT_FEATURE_DISJOINT_BIT"+ FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT -> showString "FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"+ FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT -> showString "FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"+ FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT -> showString "FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"+ FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT -> showString "FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"+ FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT -> showString "FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT"+ FORMAT_FEATURE_TRANSFER_DST_BIT -> showString "FORMAT_FEATURE_TRANSFER_DST_BIT"+ FORMAT_FEATURE_TRANSFER_SRC_BIT -> showString "FORMAT_FEATURE_TRANSFER_SRC_BIT"+ FormatFeatureFlagBits x -> showParen (p >= 11) (showString "FormatFeatureFlagBits 0x" . showHex x)++instance Read FormatFeatureFlagBits where+ readPrec = parens (choose [("FORMAT_FEATURE_SAMPLED_IMAGE_BIT", pure FORMAT_FEATURE_SAMPLED_IMAGE_BIT)+ , ("FORMAT_FEATURE_STORAGE_IMAGE_BIT", pure FORMAT_FEATURE_STORAGE_IMAGE_BIT)+ , ("FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT", pure FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT)+ , ("FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT", pure FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT)+ , ("FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT", pure FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT)+ , ("FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT", pure FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT)+ , ("FORMAT_FEATURE_VERTEX_BUFFER_BIT", pure FORMAT_FEATURE_VERTEX_BUFFER_BIT)+ , ("FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", pure FORMAT_FEATURE_COLOR_ATTACHMENT_BIT)+ , ("FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT", pure FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT)+ , ("FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", pure FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT)+ , ("FORMAT_FEATURE_BLIT_SRC_BIT", pure FORMAT_FEATURE_BLIT_SRC_BIT)+ , ("FORMAT_FEATURE_BLIT_DST_BIT", pure FORMAT_FEATURE_BLIT_DST_BIT)+ , ("FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT", pure FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT)+ , ("FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT", pure FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT)+ , ("FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG", pure FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG)+ , ("FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT", pure FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT)+ , ("FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT", pure FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT)+ , ("FORMAT_FEATURE_DISJOINT_BIT", pure FORMAT_FEATURE_DISJOINT_BIT)+ , ("FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT", pure FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT)+ , ("FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT", pure FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT)+ , ("FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT", pure FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT)+ , ("FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT", pure FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT)+ , ("FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT", pure FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT)+ , ("FORMAT_FEATURE_TRANSFER_DST_BIT", pure FORMAT_FEATURE_TRANSFER_DST_BIT)+ , ("FORMAT_FEATURE_TRANSFER_SRC_BIT", pure FORMAT_FEATURE_TRANSFER_SRC_BIT)]+ ++++ prec 10 (do+ expectP (Ident "FormatFeatureFlagBits")+ v <- step readPrec+ pure (FormatFeatureFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/FramebufferCreateFlagBits.hs view
@@ -0,0 +1,52 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits ( FramebufferCreateFlagBits( FRAMEBUFFER_CREATE_IMAGELESS_BIT+ , ..+ )+ , FramebufferCreateFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkFramebufferCreateFlagBits - Bitmask specifying framebuffer properties+--+-- = See Also+--+-- 'FramebufferCreateFlags'+newtype FramebufferCreateFlagBits = FramebufferCreateFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'FRAMEBUFFER_CREATE_IMAGELESS_BIT' specifies that image views are not+-- specified, and only attachment compatibility information will be+-- provided via a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentImageInfo'+-- structure.+pattern FRAMEBUFFER_CREATE_IMAGELESS_BIT = FramebufferCreateFlagBits 0x00000001++type FramebufferCreateFlags = FramebufferCreateFlagBits++instance Show FramebufferCreateFlagBits where+ showsPrec p = \case+ FRAMEBUFFER_CREATE_IMAGELESS_BIT -> showString "FRAMEBUFFER_CREATE_IMAGELESS_BIT"+ FramebufferCreateFlagBits x -> showParen (p >= 11) (showString "FramebufferCreateFlagBits 0x" . showHex x)++instance Read FramebufferCreateFlagBits where+ readPrec = parens (choose [("FRAMEBUFFER_CREATE_IMAGELESS_BIT", pure FRAMEBUFFER_CREATE_IMAGELESS_BIT)]+ ++++ prec 10 (do+ expectP (Ident "FramebufferCreateFlagBits")+ v <- step readPrec+ pure (FramebufferCreateFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/FrontFace.hs view
@@ -0,0 +1,57 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.FrontFace (FrontFace( FRONT_FACE_COUNTER_CLOCKWISE+ , FRONT_FACE_CLOCKWISE+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkFrontFace - Interpret polygon front-facing orientation+--+-- = Description+--+-- Any triangle which is not front-facing is back-facing, including+-- zero-area triangles.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'+newtype FrontFace = FrontFace Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'FRONT_FACE_COUNTER_CLOCKWISE' specifies that a triangle with positive+-- area is considered front-facing.+pattern FRONT_FACE_COUNTER_CLOCKWISE = FrontFace 0+-- | 'FRONT_FACE_CLOCKWISE' specifies that a triangle with negative area is+-- considered front-facing.+pattern FRONT_FACE_CLOCKWISE = FrontFace 1+{-# complete FRONT_FACE_COUNTER_CLOCKWISE,+ FRONT_FACE_CLOCKWISE :: FrontFace #-}++instance Show FrontFace where+ showsPrec p = \case+ FRONT_FACE_COUNTER_CLOCKWISE -> showString "FRONT_FACE_COUNTER_CLOCKWISE"+ FRONT_FACE_CLOCKWISE -> showString "FRONT_FACE_CLOCKWISE"+ FrontFace x -> showParen (p >= 11) (showString "FrontFace " . showsPrec 11 x)++instance Read FrontFace where+ readPrec = parens (choose [("FRONT_FACE_COUNTER_CLOCKWISE", pure FRONT_FACE_COUNTER_CLOCKWISE)+ , ("FRONT_FACE_CLOCKWISE", pure FRONT_FACE_CLOCKWISE)]+ ++++ prec 10 (do+ expectP (Ident "FrontFace")+ v <- step readPrec+ pure (FrontFace v)))+
+ src/Graphics/Vulkan/Core10/Enums/ImageAspectFlagBits.hs view
@@ -0,0 +1,107 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits ( ImageAspectFlagBits( IMAGE_ASPECT_COLOR_BIT+ , IMAGE_ASPECT_DEPTH_BIT+ , IMAGE_ASPECT_STENCIL_BIT+ , IMAGE_ASPECT_METADATA_BIT+ , IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT+ , IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT+ , IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT+ , IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT+ , IMAGE_ASPECT_PLANE_2_BIT+ , IMAGE_ASPECT_PLANE_1_BIT+ , IMAGE_ASPECT_PLANE_0_BIT+ , ..+ )+ , ImageAspectFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkImageAspectFlagBits - Bitmask specifying which aspects of an image are+-- included in a view+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo',+-- 'ImageAspectFlags',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.ImagePlaneMemoryRequirementsInfo'+newtype ImageAspectFlagBits = ImageAspectFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'IMAGE_ASPECT_COLOR_BIT' specifies the color aspect.+pattern IMAGE_ASPECT_COLOR_BIT = ImageAspectFlagBits 0x00000001+-- | 'IMAGE_ASPECT_DEPTH_BIT' specifies the depth aspect.+pattern IMAGE_ASPECT_DEPTH_BIT = ImageAspectFlagBits 0x00000002+-- | 'IMAGE_ASPECT_STENCIL_BIT' specifies the stencil aspect.+pattern IMAGE_ASPECT_STENCIL_BIT = ImageAspectFlagBits 0x00000004+-- | 'IMAGE_ASPECT_METADATA_BIT' specifies the metadata aspect, used for+-- sparse+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory sparse resource>+-- operations.+pattern IMAGE_ASPECT_METADATA_BIT = ImageAspectFlagBits 0x00000008+-- | 'IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT' specifies /memory plane/ 3.+pattern IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = ImageAspectFlagBits 0x00000400+-- | 'IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT' specifies /memory plane/ 2.+pattern IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = ImageAspectFlagBits 0x00000200+-- | 'IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT' specifies /memory plane/ 1.+pattern IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = ImageAspectFlagBits 0x00000100+-- | 'IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT' specifies /memory plane/ 0.+pattern IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = ImageAspectFlagBits 0x00000080+-- | 'IMAGE_ASPECT_PLANE_2_BIT' specifies plane 2 of a /multi-planar/ image+-- format.+pattern IMAGE_ASPECT_PLANE_2_BIT = ImageAspectFlagBits 0x00000040+-- | 'IMAGE_ASPECT_PLANE_1_BIT' specifies plane 1 of a /multi-planar/ image+-- format.+pattern IMAGE_ASPECT_PLANE_1_BIT = ImageAspectFlagBits 0x00000020+-- | 'IMAGE_ASPECT_PLANE_0_BIT' specifies plane 0 of a /multi-planar/ image+-- format.+pattern IMAGE_ASPECT_PLANE_0_BIT = ImageAspectFlagBits 0x00000010++type ImageAspectFlags = ImageAspectFlagBits++instance Show ImageAspectFlagBits where+ showsPrec p = \case+ IMAGE_ASPECT_COLOR_BIT -> showString "IMAGE_ASPECT_COLOR_BIT"+ IMAGE_ASPECT_DEPTH_BIT -> showString "IMAGE_ASPECT_DEPTH_BIT"+ IMAGE_ASPECT_STENCIL_BIT -> showString "IMAGE_ASPECT_STENCIL_BIT"+ IMAGE_ASPECT_METADATA_BIT -> showString "IMAGE_ASPECT_METADATA_BIT"+ IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT -> showString "IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT"+ IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT -> showString "IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT"+ IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT -> showString "IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT"+ IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT -> showString "IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT"+ IMAGE_ASPECT_PLANE_2_BIT -> showString "IMAGE_ASPECT_PLANE_2_BIT"+ IMAGE_ASPECT_PLANE_1_BIT -> showString "IMAGE_ASPECT_PLANE_1_BIT"+ IMAGE_ASPECT_PLANE_0_BIT -> showString "IMAGE_ASPECT_PLANE_0_BIT"+ ImageAspectFlagBits x -> showParen (p >= 11) (showString "ImageAspectFlagBits 0x" . showHex x)++instance Read ImageAspectFlagBits where+ readPrec = parens (choose [("IMAGE_ASPECT_COLOR_BIT", pure IMAGE_ASPECT_COLOR_BIT)+ , ("IMAGE_ASPECT_DEPTH_BIT", pure IMAGE_ASPECT_DEPTH_BIT)+ , ("IMAGE_ASPECT_STENCIL_BIT", pure IMAGE_ASPECT_STENCIL_BIT)+ , ("IMAGE_ASPECT_METADATA_BIT", pure IMAGE_ASPECT_METADATA_BIT)+ , ("IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT", pure IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT)+ , ("IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT", pure IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT)+ , ("IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT", pure IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT)+ , ("IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT", pure IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT)+ , ("IMAGE_ASPECT_PLANE_2_BIT", pure IMAGE_ASPECT_PLANE_2_BIT)+ , ("IMAGE_ASPECT_PLANE_1_BIT", pure IMAGE_ASPECT_PLANE_1_BIT)+ , ("IMAGE_ASPECT_PLANE_0_BIT", pure IMAGE_ASPECT_PLANE_0_BIT)]+ ++++ prec 10 (do+ expectP (Ident "ImageAspectFlagBits")+ v <- step readPrec+ pure (ImageAspectFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/ImageCreateFlagBits.hs view
@@ -0,0 +1,206 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits ( ImageCreateFlagBits( IMAGE_CREATE_SPARSE_BINDING_BIT+ , IMAGE_CREATE_SPARSE_RESIDENCY_BIT+ , IMAGE_CREATE_SPARSE_ALIASED_BIT+ , IMAGE_CREATE_MUTABLE_FORMAT_BIT+ , IMAGE_CREATE_CUBE_COMPATIBLE_BIT+ , IMAGE_CREATE_SUBSAMPLED_BIT_EXT+ , IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT+ , IMAGE_CREATE_CORNER_SAMPLED_BIT_NV+ , IMAGE_CREATE_DISJOINT_BIT+ , IMAGE_CREATE_PROTECTED_BIT+ , IMAGE_CREATE_EXTENDED_USAGE_BIT+ , IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT+ , IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT+ , IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT+ , IMAGE_CREATE_ALIAS_BIT+ , ..+ )+ , ImageCreateFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkImageCreateFlagBits - Bitmask specifying additional parameters of an+-- image+--+-- = Description+--+-- See+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseresourcefeatures Sparse Resource Features>+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-physicalfeatures Sparse Physical Device Features>+-- for more details.+--+-- = See Also+--+-- 'ImageCreateFlags'+newtype ImageCreateFlagBits = ImageCreateFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'IMAGE_CREATE_SPARSE_BINDING_BIT' specifies that the image will be+-- backed using sparse memory binding.+pattern IMAGE_CREATE_SPARSE_BINDING_BIT = ImageCreateFlagBits 0x00000001+-- | 'IMAGE_CREATE_SPARSE_RESIDENCY_BIT' specifies that the image /can/ be+-- partially backed using sparse memory binding. Images created with this+-- flag /must/ also be created with the 'IMAGE_CREATE_SPARSE_BINDING_BIT'+-- flag.+pattern IMAGE_CREATE_SPARSE_RESIDENCY_BIT = ImageCreateFlagBits 0x00000002+-- | 'IMAGE_CREATE_SPARSE_ALIASED_BIT' specifies that the image will be+-- backed using sparse memory binding with memory ranges that might also+-- simultaneously be backing another image (or another portion of the same+-- image). Images created with this flag /must/ also be created with the+-- 'IMAGE_CREATE_SPARSE_BINDING_BIT' flag+pattern IMAGE_CREATE_SPARSE_ALIASED_BIT = ImageCreateFlagBits 0x00000004+-- | 'IMAGE_CREATE_MUTABLE_FORMAT_BIT' specifies that the image /can/ be used+-- to create a 'Graphics.Vulkan.Core10.Handles.ImageView' with a different+-- format from the image. For+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>+-- formats, 'IMAGE_CREATE_MUTABLE_FORMAT_BIT' specifies that a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' can be created of a /plane/+-- of the image.+pattern IMAGE_CREATE_MUTABLE_FORMAT_BIT = ImageCreateFlagBits 0x00000008+-- | 'IMAGE_CREATE_CUBE_COMPATIBLE_BIT' specifies that the image /can/ be+-- used to create a 'Graphics.Vulkan.Core10.Handles.ImageView' of type+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE' or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'.+pattern IMAGE_CREATE_CUBE_COMPATIBLE_BIT = ImageCreateFlagBits 0x00000010+-- | 'IMAGE_CREATE_SUBSAMPLED_BIT_EXT' specifies that an image /can/ be in a+-- subsampled format which /may/ be more optimal when written as an+-- attachment by a render pass that has a fragment density map attachment.+-- Accessing a subsampled image has additional considerations:+--+-- - Image data read as an image sampler is undefined if the sampler was+-- not created with 'Graphics.Vulkan.Core10.BaseType.Flags' containing+-- 'Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT'+-- or was not sampled through the use of a combined image sampler with+-- an immutable sampler in+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding'.+--+-- - Image data read with an input attachment is undefined if the+-- contents were not written as an attachment in an earlier subpass of+-- the same render pass.+--+-- - Image data read with load operations /may/ be resampled to the+-- fragment density of the render pass.+--+-- - Image contents outside of the render area become undefined if the+-- image is stored as a render pass attachment.+pattern IMAGE_CREATE_SUBSAMPLED_BIT_EXT = ImageCreateFlagBits 0x00004000+-- | 'IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT' specifies that+-- an image with a depth or depth\/stencil format /can/ be used with custom+-- sample locations when used as a depth\/stencil attachment.+pattern IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = ImageCreateFlagBits 0x00001000+-- | 'IMAGE_CREATE_CORNER_SAMPLED_BIT_NV' specifies that the image is a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-images-corner-sampled corner-sampled image>.+pattern IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = ImageCreateFlagBits 0x00002000+-- | 'IMAGE_CREATE_DISJOINT_BIT' specifies that an image with a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>+-- /must/ have each plane separately bound to memory, rather than having a+-- single memory binding for the whole image; the presence of this bit+-- distinguishes a /disjoint image/ from an image without this bit set.+pattern IMAGE_CREATE_DISJOINT_BIT = ImageCreateFlagBits 0x00000200+-- | 'IMAGE_CREATE_PROTECTED_BIT' specifies that the image is a protected+-- image.+pattern IMAGE_CREATE_PROTECTED_BIT = ImageCreateFlagBits 0x00000800+-- | 'IMAGE_CREATE_EXTENDED_USAGE_BIT' specifies that the image /can/ be+-- created with usage flags that are not supported for the format the image+-- is created with but are supported for at least one format a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' created from the image /can/+-- have.+pattern IMAGE_CREATE_EXTENDED_USAGE_BIT = ImageCreateFlagBits 0x00000100+-- | 'IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT' specifies that the image+-- having a compressed format /can/ be used to create a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' with an uncompressed format+-- where each texel in the image view corresponds to a compressed texel+-- block of the image.+pattern IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = ImageCreateFlagBits 0x00000080+-- | 'IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT' specifies that the image /can/ be+-- used to create a 'Graphics.Vulkan.Core10.Handles.ImageView' of type+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'.+pattern IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = ImageCreateFlagBits 0x00000020+-- | 'IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT' specifies that the image+-- /can/ be used with a non-zero value of the+-- @splitInstanceBindRegionCount@ member of a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo'+-- structure passed into+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.bindImageMemory2'.+-- This flag also has the effect of making the image use the standard+-- sparse image block dimensions.+pattern IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = ImageCreateFlagBits 0x00000040+-- | 'IMAGE_CREATE_ALIAS_BIT' specifies that two images created with the same+-- creation parameters and aliased to the same memory /can/ interpret the+-- contents of the memory consistently with each other, subject to the+-- rules described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>+-- section. This flag further specifies that each plane of a /disjoint/+-- image /can/ share an in-memory non-linear representation with+-- single-plane images, and that a single-plane image /can/ share an+-- in-memory non-linear representation with a plane of a multi-planar+-- disjoint image, according to the rules in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes>.+-- If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'+-- or+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.ExternalMemoryImageCreateInfoNV'+-- structure whose @handleTypes@ member is not @0@, it is as if+-- 'IMAGE_CREATE_ALIAS_BIT' is set.+pattern IMAGE_CREATE_ALIAS_BIT = ImageCreateFlagBits 0x00000400++type ImageCreateFlags = ImageCreateFlagBits++instance Show ImageCreateFlagBits where+ showsPrec p = \case+ IMAGE_CREATE_SPARSE_BINDING_BIT -> showString "IMAGE_CREATE_SPARSE_BINDING_BIT"+ IMAGE_CREATE_SPARSE_RESIDENCY_BIT -> showString "IMAGE_CREATE_SPARSE_RESIDENCY_BIT"+ IMAGE_CREATE_SPARSE_ALIASED_BIT -> showString "IMAGE_CREATE_SPARSE_ALIASED_BIT"+ IMAGE_CREATE_MUTABLE_FORMAT_BIT -> showString "IMAGE_CREATE_MUTABLE_FORMAT_BIT"+ IMAGE_CREATE_CUBE_COMPATIBLE_BIT -> showString "IMAGE_CREATE_CUBE_COMPATIBLE_BIT"+ IMAGE_CREATE_SUBSAMPLED_BIT_EXT -> showString "IMAGE_CREATE_SUBSAMPLED_BIT_EXT"+ IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT -> showString "IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"+ IMAGE_CREATE_CORNER_SAMPLED_BIT_NV -> showString "IMAGE_CREATE_CORNER_SAMPLED_BIT_NV"+ IMAGE_CREATE_DISJOINT_BIT -> showString "IMAGE_CREATE_DISJOINT_BIT"+ IMAGE_CREATE_PROTECTED_BIT -> showString "IMAGE_CREATE_PROTECTED_BIT"+ IMAGE_CREATE_EXTENDED_USAGE_BIT -> showString "IMAGE_CREATE_EXTENDED_USAGE_BIT"+ IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT -> showString "IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"+ IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT -> showString "IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT"+ IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT -> showString "IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"+ IMAGE_CREATE_ALIAS_BIT -> showString "IMAGE_CREATE_ALIAS_BIT"+ ImageCreateFlagBits x -> showParen (p >= 11) (showString "ImageCreateFlagBits 0x" . showHex x)++instance Read ImageCreateFlagBits where+ readPrec = parens (choose [("IMAGE_CREATE_SPARSE_BINDING_BIT", pure IMAGE_CREATE_SPARSE_BINDING_BIT)+ , ("IMAGE_CREATE_SPARSE_RESIDENCY_BIT", pure IMAGE_CREATE_SPARSE_RESIDENCY_BIT)+ , ("IMAGE_CREATE_SPARSE_ALIASED_BIT", pure IMAGE_CREATE_SPARSE_ALIASED_BIT)+ , ("IMAGE_CREATE_MUTABLE_FORMAT_BIT", pure IMAGE_CREATE_MUTABLE_FORMAT_BIT)+ , ("IMAGE_CREATE_CUBE_COMPATIBLE_BIT", pure IMAGE_CREATE_CUBE_COMPATIBLE_BIT)+ , ("IMAGE_CREATE_SUBSAMPLED_BIT_EXT", pure IMAGE_CREATE_SUBSAMPLED_BIT_EXT)+ , ("IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT", pure IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT)+ , ("IMAGE_CREATE_CORNER_SAMPLED_BIT_NV", pure IMAGE_CREATE_CORNER_SAMPLED_BIT_NV)+ , ("IMAGE_CREATE_DISJOINT_BIT", pure IMAGE_CREATE_DISJOINT_BIT)+ , ("IMAGE_CREATE_PROTECTED_BIT", pure IMAGE_CREATE_PROTECTED_BIT)+ , ("IMAGE_CREATE_EXTENDED_USAGE_BIT", pure IMAGE_CREATE_EXTENDED_USAGE_BIT)+ , ("IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT", pure IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT)+ , ("IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT", pure IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT)+ , ("IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT", pure IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT)+ , ("IMAGE_CREATE_ALIAS_BIT", pure IMAGE_CREATE_ALIAS_BIT)]+ ++++ prec 10 (do+ expectP (Ident "ImageCreateFlagBits")+ v <- step readPrec+ pure (ImageCreateFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/ImageCreateFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits ( ImageCreateFlagBits+ , ImageCreateFlags+ ) where++++data ImageCreateFlagBits++type ImageCreateFlags = ImageCreateFlagBits+
+ src/Graphics/Vulkan/Core10/Enums/ImageLayout.hs view
@@ -0,0 +1,273 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout( IMAGE_LAYOUT_UNDEFINED+ , IMAGE_LAYOUT_GENERAL+ , IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL+ , IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL+ , IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL+ , IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL+ , IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL+ , IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL+ , IMAGE_LAYOUT_PREINITIALIZED+ , IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT+ , IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV+ , IMAGE_LAYOUT_SHARED_PRESENT_KHR+ , IMAGE_LAYOUT_PRESENT_SRC_KHR+ , IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL+ , IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL+ , IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL+ , IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL+ , IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL+ , IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkImageLayout - Layout of image and image subresources+--+-- = Description+--+-- The type(s) of device access supported by each layout are:+--+-- The layout of each image subresource is not a state of the image+-- subresource itself, but is rather a property of how the data in memory+-- is organized, and thus for each mechanism of accessing an image in the+-- API the application /must/ specify a parameter or structure member that+-- indicates which image layout the image subresource(s) are considered to+-- be in when the image will be accessed. For transfer commands, this is a+-- parameter to the command (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears>+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies>).+-- For use as a framebuffer attachment, this is a member in the+-- substructures of the 'Graphics.Vulkan.Core10.Pass.RenderPassCreateInfo'+-- (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass Render Pass>).+-- For use in a descriptor set, this is a member in the+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorImageInfo' structure+-- (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates>).+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout',+-- 'Graphics.Vulkan.Core10.Pass.AttachmentReference',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentReference2',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentReferenceStencilLayout',+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorImageInfo',+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo',+-- 'Graphics.Vulkan.Core10.OtherTypes.ImageMemoryBarrier',+-- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.cmdBindShadingRateImageNV',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBlitImage',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdClearColorImage',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdClearDepthStencilImage',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyImage',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdResolveImage'+newtype ImageLayout = ImageLayout Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'IMAGE_LAYOUT_UNDEFINED' does not support device access. This layout+-- /must/ only be used as the @initialLayout@ member of+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' or+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription', or as the+-- @oldLayout@ in an image transition. When transitioning out of this+-- layout, the contents of the memory are not guaranteed to be preserved.+pattern IMAGE_LAYOUT_UNDEFINED = ImageLayout 0+-- | 'IMAGE_LAYOUT_GENERAL' supports all types of device access.+pattern IMAGE_LAYOUT_GENERAL = ImageLayout 1+-- | 'IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL' /must/ only be used as a color+-- or resolve attachment in a 'Graphics.Vulkan.Core10.Handles.Framebuffer'.+-- This layout is valid only for image subresources of images created with+-- the+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'+-- usage bit enabled.+pattern IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = ImageLayout 2+-- | 'IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL' specifies a layout for+-- both the depth and stencil aspects of a depth\/stencil format image+-- allowing read and write access as a depth\/stencil attachment. It is+-- equivalent to 'IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL' and+-- 'IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'.+pattern IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = ImageLayout 3+-- | 'IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL' specifies a layout for+-- both the depth and stencil aspects of a depth\/stencil format image+-- allowing read only access as a depth\/stencil attachment or in shaders.+-- It is equivalent to 'IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL' and+-- 'IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'.+pattern IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = ImageLayout 4+-- | 'IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL' /must/ only be used as a+-- read-only image in a shader (which /can/ be read as a sampled image,+-- combined image\/sampler and\/or input attachment). This layout is valid+-- only for image subresources of images created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'+-- usage bit enabled.+pattern IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = ImageLayout 5+-- | 'IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL' /must/ only be used as a source+-- image of a transfer command (see the definition of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-transfer >).+-- This layout is valid only for image subresources of images created with+-- the+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'+-- usage bit enabled.+pattern IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = ImageLayout 6+-- | 'IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL' /must/ only be used as a destination+-- image of a transfer command. This layout is valid only for image+-- subresources of images created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+-- usage bit enabled.+pattern IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = ImageLayout 7+-- | 'IMAGE_LAYOUT_PREINITIALIZED' does not support device access. This+-- layout /must/ only be used as the @initialLayout@ member of+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' or+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription', or as the+-- @oldLayout@ in an image transition. When transitioning out of this+-- layout, the contents of the memory are preserved. This layout is+-- intended to be used as the initial layout for an image whose contents+-- are written by the host, and hence the data /can/ be written to memory+-- immediately, without first executing a layout transition. Currently,+-- 'IMAGE_LAYOUT_PREINITIALIZED' is only useful with+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource linear>+-- images because there is not a standard layout defined for+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL' images.+pattern IMAGE_LAYOUT_PREINITIALIZED = ImageLayout 8+-- | 'IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT' /must/ only be used as a+-- fragment density map attachment in a+-- 'Graphics.Vulkan.Core10.Handles.RenderPass'. This layout is valid only+-- for image subresources of images created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT'+-- usage bit enabled.+pattern IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = ImageLayout 1000218000+-- | 'IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV' /must/ only be used as a+-- read-only+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-image shading-rate-image>.+-- This layout is valid only for image subresources of images created with+-- the+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV'+-- usage bit enabled.+pattern IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = ImageLayout 1000164003+-- | 'IMAGE_LAYOUT_SHARED_PRESENT_KHR' is valid only for shared presentable+-- images, and /must/ be used for any usage the image supports.+pattern IMAGE_LAYOUT_SHARED_PRESENT_KHR = ImageLayout 1000111000+-- | 'IMAGE_LAYOUT_PRESENT_SRC_KHR' /must/ only be used for presenting a+-- presentable image for display. A swapchain’s image /must/ be+-- transitioned to this layout before calling+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR', and+-- /must/ be transitioned away from this layout after calling+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.acquireNextImageKHR'.+pattern IMAGE_LAYOUT_PRESENT_SRC_KHR = ImageLayout 1000001002+-- | 'IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL' specifies a layout for the+-- stencil aspect of a depth\/stencil format image allowing read-only+-- access as a stencil attachment or in shaders.+pattern IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = ImageLayout 1000241003+-- | 'IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL' specifies a layout for the+-- stencil aspect of a depth\/stencil format image allowing read and write+-- access as a stencil attachment.+pattern IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = ImageLayout 1000241002+-- | 'IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL' specifies a layout for the depth+-- aspect of a depth\/stencil format image allowing read-only access as a+-- depth attachment or in shaders.+pattern IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = ImageLayout 1000241001+-- | 'IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL' specifies a layout for the depth+-- aspect of a depth\/stencil format image allowing read and write access+-- as a depth attachment.+pattern IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = ImageLayout 1000241000+-- | 'IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL' specifies a+-- layout for depth\/stencil format images allowing read and write access+-- to the depth aspect as a depth attachment, and read only access to the+-- stencil aspect as a stencil attachment or in shaders. It is equivalent+-- to 'IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL' and+-- 'IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'.+pattern IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = ImageLayout 1000117001+-- | 'IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL' specifies a+-- layout for depth\/stencil format images allowing read and write access+-- to the stencil aspect as a stencil attachment, and read only access to+-- the depth aspect as a depth attachment or in shaders. It is equivalent+-- to 'IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL' and+-- 'IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'.+pattern IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = ImageLayout 1000117000+{-# complete IMAGE_LAYOUT_UNDEFINED,+ IMAGE_LAYOUT_GENERAL,+ IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,+ IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,+ IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,+ IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,+ IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,+ IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,+ IMAGE_LAYOUT_PREINITIALIZED,+ IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT,+ IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV,+ IMAGE_LAYOUT_SHARED_PRESENT_KHR,+ IMAGE_LAYOUT_PRESENT_SRC_KHR,+ IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,+ IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL,+ IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,+ IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,+ IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,+ IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL :: ImageLayout #-}++instance Show ImageLayout where+ showsPrec p = \case+ IMAGE_LAYOUT_UNDEFINED -> showString "IMAGE_LAYOUT_UNDEFINED"+ IMAGE_LAYOUT_GENERAL -> showString "IMAGE_LAYOUT_GENERAL"+ IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL -> showString "IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL"+ IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL -> showString "IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL"+ IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL -> showString "IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL"+ IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL -> showString "IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL"+ IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL -> showString "IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL"+ IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL -> showString "IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL"+ IMAGE_LAYOUT_PREINITIALIZED -> showString "IMAGE_LAYOUT_PREINITIALIZED"+ IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT -> showString "IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT"+ IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV -> showString "IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV"+ IMAGE_LAYOUT_SHARED_PRESENT_KHR -> showString "IMAGE_LAYOUT_SHARED_PRESENT_KHR"+ IMAGE_LAYOUT_PRESENT_SRC_KHR -> showString "IMAGE_LAYOUT_PRESENT_SRC_KHR"+ IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL -> showString "IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL"+ IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL -> showString "IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL"+ IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL -> showString "IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL"+ IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL -> showString "IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL"+ IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL -> showString "IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL"+ IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL -> showString "IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL"+ ImageLayout x -> showParen (p >= 11) (showString "ImageLayout " . showsPrec 11 x)++instance Read ImageLayout where+ readPrec = parens (choose [("IMAGE_LAYOUT_UNDEFINED", pure IMAGE_LAYOUT_UNDEFINED)+ , ("IMAGE_LAYOUT_GENERAL", pure IMAGE_LAYOUT_GENERAL)+ , ("IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL", pure IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL)+ , ("IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL", pure IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL)+ , ("IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL", pure IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL)+ , ("IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL", pure IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL)+ , ("IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL", pure IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL)+ , ("IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL", pure IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL)+ , ("IMAGE_LAYOUT_PREINITIALIZED", pure IMAGE_LAYOUT_PREINITIALIZED)+ , ("IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT", pure IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT)+ , ("IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV", pure IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV)+ , ("IMAGE_LAYOUT_SHARED_PRESENT_KHR", pure IMAGE_LAYOUT_SHARED_PRESENT_KHR)+ , ("IMAGE_LAYOUT_PRESENT_SRC_KHR", pure IMAGE_LAYOUT_PRESENT_SRC_KHR)+ , ("IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL", pure IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL)+ , ("IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL", pure IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL)+ , ("IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL", pure IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL)+ , ("IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL", pure IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL)+ , ("IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL", pure IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL)+ , ("IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL", pure IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL)]+ ++++ prec 10 (do+ expectP (Ident "ImageLayout")+ v <- step readPrec+ pure (ImageLayout v)))+
+ src/Graphics/Vulkan/Core10/Enums/ImageLayout.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout) where++++data ImageLayout+
+ src/Graphics/Vulkan/Core10/Enums/ImageTiling.hs view
@@ -0,0 +1,72 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.ImageTiling (ImageTiling( IMAGE_TILING_OPTIMAL+ , IMAGE_TILING_LINEAR+ , IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkImageTiling - Specifies the tiling arrangement of data in an image+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceSparseImageFormatInfo2',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.getPhysicalDeviceExternalImageFormatPropertiesNV',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.getPhysicalDeviceSparseImageFormatProperties'+newtype ImageTiling = ImageTiling Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'IMAGE_TILING_OPTIMAL' specifies optimal tiling (texels are laid out in+-- an implementation-dependent arrangement, for more optimal memory+-- access).+pattern IMAGE_TILING_OPTIMAL = ImageTiling 0+-- | 'IMAGE_TILING_LINEAR' specifies linear tiling (texels are laid out in+-- memory in row-major order, possibly with some padding on each row).+pattern IMAGE_TILING_LINEAR = ImageTiling 1+-- | 'IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT' indicates that the image’s tiling+-- is defined by a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifier Linux DRM format modifier>.+-- The modifier is specified at image creation with+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierListCreateInfoEXT'+-- or+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierExplicitCreateInfoEXT',+-- and /can/ be queried with+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.getImageDrmFormatModifierPropertiesEXT'.+pattern IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = ImageTiling 1000158000+{-# complete IMAGE_TILING_OPTIMAL,+ IMAGE_TILING_LINEAR,+ IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT :: ImageTiling #-}++instance Show ImageTiling where+ showsPrec p = \case+ IMAGE_TILING_OPTIMAL -> showString "IMAGE_TILING_OPTIMAL"+ IMAGE_TILING_LINEAR -> showString "IMAGE_TILING_LINEAR"+ IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT -> showString "IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT"+ ImageTiling x -> showParen (p >= 11) (showString "ImageTiling " . showsPrec 11 x)++instance Read ImageTiling where+ readPrec = parens (choose [("IMAGE_TILING_OPTIMAL", pure IMAGE_TILING_OPTIMAL)+ , ("IMAGE_TILING_LINEAR", pure IMAGE_TILING_LINEAR)+ , ("IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT", pure IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT)]+ ++++ prec 10 (do+ expectP (Ident "ImageTiling")+ v <- step readPrec+ pure (ImageTiling v)))+
+ src/Graphics/Vulkan/Core10/Enums/ImageTiling.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.ImageTiling (ImageTiling) where++++data ImageTiling+
+ src/Graphics/Vulkan/Core10/Enums/ImageType.hs view
@@ -0,0 +1,61 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.ImageType (ImageType( IMAGE_TYPE_1D+ , IMAGE_TYPE_2D+ , IMAGE_TYPE_3D+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkImageType - Specifies the type of an image object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceSparseImageFormatInfo2',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.getPhysicalDeviceExternalImageFormatPropertiesNV',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.getPhysicalDeviceSparseImageFormatProperties'+newtype ImageType = ImageType Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'IMAGE_TYPE_1D' specifies a one-dimensional image.+pattern IMAGE_TYPE_1D = ImageType 0+-- | 'IMAGE_TYPE_2D' specifies a two-dimensional image.+pattern IMAGE_TYPE_2D = ImageType 1+-- | 'IMAGE_TYPE_3D' specifies a three-dimensional image.+pattern IMAGE_TYPE_3D = ImageType 2+{-# complete IMAGE_TYPE_1D,+ IMAGE_TYPE_2D,+ IMAGE_TYPE_3D :: ImageType #-}++instance Show ImageType where+ showsPrec p = \case+ IMAGE_TYPE_1D -> showString "IMAGE_TYPE_1D"+ IMAGE_TYPE_2D -> showString "IMAGE_TYPE_2D"+ IMAGE_TYPE_3D -> showString "IMAGE_TYPE_3D"+ ImageType x -> showParen (p >= 11) (showString "ImageType " . showsPrec 11 x)++instance Read ImageType where+ readPrec = parens (choose [("IMAGE_TYPE_1D", pure IMAGE_TYPE_1D)+ , ("IMAGE_TYPE_2D", pure IMAGE_TYPE_2D)+ , ("IMAGE_TYPE_3D", pure IMAGE_TYPE_3D)]+ ++++ prec 10 (do+ expectP (Ident "ImageType")+ v <- step readPrec+ pure (ImageType v)))+
+ src/Graphics/Vulkan/Core10/Enums/ImageType.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.ImageType (ImageType) where++++data ImageType+
+ src/Graphics/Vulkan/Core10/Enums/ImageUsageFlagBits.hs view
@@ -0,0 +1,129 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits ( ImageUsageFlagBits( IMAGE_USAGE_TRANSFER_SRC_BIT+ , IMAGE_USAGE_TRANSFER_DST_BIT+ , IMAGE_USAGE_SAMPLED_BIT+ , IMAGE_USAGE_STORAGE_BIT+ , IMAGE_USAGE_COLOR_ATTACHMENT_BIT+ , IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT+ , IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT+ , IMAGE_USAGE_INPUT_ATTACHMENT_BIT+ , IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT+ , IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV+ , ..+ )+ , ImageUsageFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkImageUsageFlagBits - Bitmask specifying intended usage of an image+--+-- = See Also+--+-- 'ImageUsageFlags'+newtype ImageUsageFlagBits = ImageUsageFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'IMAGE_USAGE_TRANSFER_SRC_BIT' specifies that the image /can/ be used as+-- the source of a transfer command.+pattern IMAGE_USAGE_TRANSFER_SRC_BIT = ImageUsageFlagBits 0x00000001+-- | 'IMAGE_USAGE_TRANSFER_DST_BIT' specifies that the image /can/ be used as+-- the destination of a transfer command.+pattern IMAGE_USAGE_TRANSFER_DST_BIT = ImageUsageFlagBits 0x00000002+-- | 'IMAGE_USAGE_SAMPLED_BIT' specifies that the image /can/ be used to+-- create a 'Graphics.Vulkan.Core10.Handles.ImageView' suitable for+-- occupying a 'Graphics.Vulkan.Core10.Handles.DescriptorSet' slot either+-- of type+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+-- and be sampled by a shader.+pattern IMAGE_USAGE_SAMPLED_BIT = ImageUsageFlagBits 0x00000004+-- | 'IMAGE_USAGE_STORAGE_BIT' specifies that the image /can/ be used to+-- create a 'Graphics.Vulkan.Core10.Handles.ImageView' suitable for+-- occupying a 'Graphics.Vulkan.Core10.Handles.DescriptorSet' slot of type+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'.+pattern IMAGE_USAGE_STORAGE_BIT = ImageUsageFlagBits 0x00000008+-- | 'IMAGE_USAGE_COLOR_ATTACHMENT_BIT' specifies that the image /can/ be+-- used to create a 'Graphics.Vulkan.Core10.Handles.ImageView' suitable for+-- use as a color or resolve attachment in a+-- 'Graphics.Vulkan.Core10.Handles.Framebuffer'.+pattern IMAGE_USAGE_COLOR_ATTACHMENT_BIT = ImageUsageFlagBits 0x00000010+-- | 'IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT' specifies that the image+-- /can/ be used to create a 'Graphics.Vulkan.Core10.Handles.ImageView'+-- suitable for use as a depth\/stencil or depth\/stencil resolve+-- attachment in a 'Graphics.Vulkan.Core10.Handles.Framebuffer'.+pattern IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = ImageUsageFlagBits 0x00000020+-- | 'IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT' specifies that the memory bound+-- to this image will have been allocated with the+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT'+-- (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory>+-- for more detail). This bit /can/ be set for any image that /can/ be used+-- to create a 'Graphics.Vulkan.Core10.Handles.ImageView' suitable for use+-- as a color, resolve, depth\/stencil, or input attachment.+pattern IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = ImageUsageFlagBits 0x00000040+-- | 'IMAGE_USAGE_INPUT_ATTACHMENT_BIT' specifies that the image /can/ be+-- used to create a 'Graphics.Vulkan.Core10.Handles.ImageView' suitable for+-- occupying 'Graphics.Vulkan.Core10.Handles.DescriptorSet' slot of type+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT';+-- be read from a shader as an input attachment; and be used as an input+-- attachment in a framebuffer.+pattern IMAGE_USAGE_INPUT_ATTACHMENT_BIT = ImageUsageFlagBits 0x00000080+-- | 'IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT' specifies that the image+-- /can/ be used to create a 'Graphics.Vulkan.Core10.Handles.ImageView'+-- suitable for use as a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops fragment density map image>.+pattern IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = ImageUsageFlagBits 0x00000200+-- | 'IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV' specifies that the image /can/+-- be used to create a 'Graphics.Vulkan.Core10.Handles.ImageView' suitable+-- for use as a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image>.+pattern IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = ImageUsageFlagBits 0x00000100++type ImageUsageFlags = ImageUsageFlagBits++instance Show ImageUsageFlagBits where+ showsPrec p = \case+ IMAGE_USAGE_TRANSFER_SRC_BIT -> showString "IMAGE_USAGE_TRANSFER_SRC_BIT"+ IMAGE_USAGE_TRANSFER_DST_BIT -> showString "IMAGE_USAGE_TRANSFER_DST_BIT"+ IMAGE_USAGE_SAMPLED_BIT -> showString "IMAGE_USAGE_SAMPLED_BIT"+ IMAGE_USAGE_STORAGE_BIT -> showString "IMAGE_USAGE_STORAGE_BIT"+ IMAGE_USAGE_COLOR_ATTACHMENT_BIT -> showString "IMAGE_USAGE_COLOR_ATTACHMENT_BIT"+ IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT -> showString "IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"+ IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT -> showString "IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"+ IMAGE_USAGE_INPUT_ATTACHMENT_BIT -> showString "IMAGE_USAGE_INPUT_ATTACHMENT_BIT"+ IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT -> showString "IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT"+ IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV -> showString "IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV"+ ImageUsageFlagBits x -> showParen (p >= 11) (showString "ImageUsageFlagBits 0x" . showHex x)++instance Read ImageUsageFlagBits where+ readPrec = parens (choose [("IMAGE_USAGE_TRANSFER_SRC_BIT", pure IMAGE_USAGE_TRANSFER_SRC_BIT)+ , ("IMAGE_USAGE_TRANSFER_DST_BIT", pure IMAGE_USAGE_TRANSFER_DST_BIT)+ , ("IMAGE_USAGE_SAMPLED_BIT", pure IMAGE_USAGE_SAMPLED_BIT)+ , ("IMAGE_USAGE_STORAGE_BIT", pure IMAGE_USAGE_STORAGE_BIT)+ , ("IMAGE_USAGE_COLOR_ATTACHMENT_BIT", pure IMAGE_USAGE_COLOR_ATTACHMENT_BIT)+ , ("IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT", pure IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT)+ , ("IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT", pure IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT)+ , ("IMAGE_USAGE_INPUT_ATTACHMENT_BIT", pure IMAGE_USAGE_INPUT_ATTACHMENT_BIT)+ , ("IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT", pure IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT)+ , ("IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV", pure IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV)]+ ++++ prec 10 (do+ expectP (Ident "ImageUsageFlagBits")+ v <- step readPrec+ pure (ImageUsageFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/ImageUsageFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits ( ImageUsageFlagBits+ , ImageUsageFlags+ ) where++++data ImageUsageFlagBits++type ImageUsageFlags = ImageUsageFlagBits+
+ src/Graphics/Vulkan/Core10/Enums/ImageViewCreateFlagBits.hs view
@@ -0,0 +1,52 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.ImageViewCreateFlagBits ( ImageViewCreateFlagBits( IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT+ , ..+ )+ , ImageViewCreateFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkImageViewCreateFlagBits - Bitmask specifying additional parameters of+-- an image view+--+-- = See Also+--+-- 'ImageViewCreateFlags'+newtype ImageViewCreateFlagBits = ImageViewCreateFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT' prohibits the+-- implementation from accessing the fragment density map by the host+-- during 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBeginRenderPass'+-- as the contents are expected to change after recording+pattern IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = ImageViewCreateFlagBits 0x00000001++type ImageViewCreateFlags = ImageViewCreateFlagBits++instance Show ImageViewCreateFlagBits where+ showsPrec p = \case+ IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT -> showString "IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT"+ ImageViewCreateFlagBits x -> showParen (p >= 11) (showString "ImageViewCreateFlagBits 0x" . showHex x)++instance Read ImageViewCreateFlagBits where+ readPrec = parens (choose [("IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT", pure IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT)]+ ++++ prec 10 (do+ expectP (Ident "ImageViewCreateFlagBits")+ v <- step readPrec+ pure (ImageViewCreateFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/ImageViewType.hs view
@@ -0,0 +1,91 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.ImageViewType (ImageViewType( IMAGE_VIEW_TYPE_1D+ , IMAGE_VIEW_TYPE_2D+ , IMAGE_VIEW_TYPE_3D+ , IMAGE_VIEW_TYPE_CUBE+ , IMAGE_VIEW_TYPE_1D_ARRAY+ , IMAGE_VIEW_TYPE_2D_ARRAY+ , IMAGE_VIEW_TYPE_CUBE_ARRAY+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | 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 'Graphics.Vulkan.Core10.ImageView.createImageView'. This table also+-- shows which SPIR-V @OpTypeImage@ @Dim@ and @Arrayed@ parameters+-- correspond to each image view type.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.ImageView.ImageViewCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.PhysicalDeviceImageViewImageFormatInfoEXT'+newtype ImageViewType = ImageViewType Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- No documentation found for Nested "VkImageViewType" "VK_IMAGE_VIEW_TYPE_1D"+pattern IMAGE_VIEW_TYPE_1D = ImageViewType 0+-- No documentation found for Nested "VkImageViewType" "VK_IMAGE_VIEW_TYPE_2D"+pattern IMAGE_VIEW_TYPE_2D = ImageViewType 1+-- No documentation found for Nested "VkImageViewType" "VK_IMAGE_VIEW_TYPE_3D"+pattern IMAGE_VIEW_TYPE_3D = ImageViewType 2+-- No documentation found for Nested "VkImageViewType" "VK_IMAGE_VIEW_TYPE_CUBE"+pattern IMAGE_VIEW_TYPE_CUBE = ImageViewType 3+-- No documentation found for Nested "VkImageViewType" "VK_IMAGE_VIEW_TYPE_1D_ARRAY"+pattern IMAGE_VIEW_TYPE_1D_ARRAY = ImageViewType 4+-- No documentation found for Nested "VkImageViewType" "VK_IMAGE_VIEW_TYPE_2D_ARRAY"+pattern IMAGE_VIEW_TYPE_2D_ARRAY = ImageViewType 5+-- No documentation found for Nested "VkImageViewType" "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY"+pattern IMAGE_VIEW_TYPE_CUBE_ARRAY = ImageViewType 6+{-# complete IMAGE_VIEW_TYPE_1D,+ IMAGE_VIEW_TYPE_2D,+ IMAGE_VIEW_TYPE_3D,+ IMAGE_VIEW_TYPE_CUBE,+ IMAGE_VIEW_TYPE_1D_ARRAY,+ IMAGE_VIEW_TYPE_2D_ARRAY,+ IMAGE_VIEW_TYPE_CUBE_ARRAY :: ImageViewType #-}++instance Show ImageViewType where+ showsPrec p = \case+ IMAGE_VIEW_TYPE_1D -> showString "IMAGE_VIEW_TYPE_1D"+ IMAGE_VIEW_TYPE_2D -> showString "IMAGE_VIEW_TYPE_2D"+ IMAGE_VIEW_TYPE_3D -> showString "IMAGE_VIEW_TYPE_3D"+ IMAGE_VIEW_TYPE_CUBE -> showString "IMAGE_VIEW_TYPE_CUBE"+ IMAGE_VIEW_TYPE_1D_ARRAY -> showString "IMAGE_VIEW_TYPE_1D_ARRAY"+ IMAGE_VIEW_TYPE_2D_ARRAY -> showString "IMAGE_VIEW_TYPE_2D_ARRAY"+ IMAGE_VIEW_TYPE_CUBE_ARRAY -> showString "IMAGE_VIEW_TYPE_CUBE_ARRAY"+ ImageViewType x -> showParen (p >= 11) (showString "ImageViewType " . showsPrec 11 x)++instance Read ImageViewType where+ readPrec = parens (choose [("IMAGE_VIEW_TYPE_1D", pure IMAGE_VIEW_TYPE_1D)+ , ("IMAGE_VIEW_TYPE_2D", pure IMAGE_VIEW_TYPE_2D)+ , ("IMAGE_VIEW_TYPE_3D", pure IMAGE_VIEW_TYPE_3D)+ , ("IMAGE_VIEW_TYPE_CUBE", pure IMAGE_VIEW_TYPE_CUBE)+ , ("IMAGE_VIEW_TYPE_1D_ARRAY", pure IMAGE_VIEW_TYPE_1D_ARRAY)+ , ("IMAGE_VIEW_TYPE_2D_ARRAY", pure IMAGE_VIEW_TYPE_2D_ARRAY)+ , ("IMAGE_VIEW_TYPE_CUBE_ARRAY", pure IMAGE_VIEW_TYPE_CUBE_ARRAY)]+ ++++ prec 10 (do+ expectP (Ident "ImageViewType")+ v <- step readPrec+ pure (ImageViewType v)))+
+ src/Graphics/Vulkan/Core10/Enums/IndexType.hs view
@@ -0,0 +1,67 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.IndexType (IndexType( INDEX_TYPE_UINT16+ , INDEX_TYPE_UINT32+ , INDEX_TYPE_UINT8_EXT+ , INDEX_TYPE_NONE_NV+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkIndexType - Type of index buffer indices+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.ObjectTableIndexBufferEntryNVX',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'+newtype IndexType = IndexType Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'INDEX_TYPE_UINT16' specifies that indices are 16-bit unsigned integer+-- values.+pattern INDEX_TYPE_UINT16 = IndexType 0+-- | 'INDEX_TYPE_UINT32' specifies that indices are 32-bit unsigned integer+-- values.+pattern INDEX_TYPE_UINT32 = IndexType 1+-- | 'INDEX_TYPE_UINT8_EXT' specifies that indices are 8-bit unsigned integer+-- values.+pattern INDEX_TYPE_UINT8_EXT = IndexType 1000265000+-- | 'INDEX_TYPE_NONE_NV' specifies that no indices are provided.+pattern INDEX_TYPE_NONE_NV = IndexType 1000165000+{-# complete INDEX_TYPE_UINT16,+ INDEX_TYPE_UINT32,+ INDEX_TYPE_UINT8_EXT,+ INDEX_TYPE_NONE_NV :: IndexType #-}++instance Show IndexType where+ showsPrec p = \case+ INDEX_TYPE_UINT16 -> showString "INDEX_TYPE_UINT16"+ INDEX_TYPE_UINT32 -> showString "INDEX_TYPE_UINT32"+ INDEX_TYPE_UINT8_EXT -> showString "INDEX_TYPE_UINT8_EXT"+ INDEX_TYPE_NONE_NV -> showString "INDEX_TYPE_NONE_NV"+ IndexType x -> showParen (p >= 11) (showString "IndexType " . showsPrec 11 x)++instance Read IndexType where+ readPrec = parens (choose [("INDEX_TYPE_UINT16", pure INDEX_TYPE_UINT16)+ , ("INDEX_TYPE_UINT32", pure INDEX_TYPE_UINT32)+ , ("INDEX_TYPE_UINT8_EXT", pure INDEX_TYPE_UINT8_EXT)+ , ("INDEX_TYPE_NONE_NV", pure INDEX_TYPE_NONE_NV)]+ ++++ prec 10 (do+ expectP (Ident "IndexType")+ v <- step readPrec+ pure (IndexType v)))+
+ src/Graphics/Vulkan/Core10/Enums/IndexType.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.IndexType (IndexType) where++++data IndexType+
+ src/Graphics/Vulkan/Core10/Enums/InstanceCreateFlags.hs view
@@ -0,0 +1,45 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.InstanceCreateFlags (InstanceCreateFlags(..)) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkInstanceCreateFlags - Reserved for future use+--+-- = Description+--+-- 'InstanceCreateFlags' is a bitmask type for setting a mask, but is+-- currently reserved for future use.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.InstanceCreateInfo'+newtype InstanceCreateFlags = InstanceCreateFlags Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show InstanceCreateFlags where+ showsPrec p = \case+ InstanceCreateFlags x -> showParen (p >= 11) (showString "InstanceCreateFlags 0x" . showHex x)++instance Read InstanceCreateFlags where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "InstanceCreateFlags")+ v <- step readPrec+ pure (InstanceCreateFlags v)))+
+ src/Graphics/Vulkan/Core10/Enums/InternalAllocationType.hs view
@@ -0,0 +1,46 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.InternalAllocationType (InternalAllocationType( INTERNAL_ALLOCATION_TYPE_EXECUTABLE+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkInternalAllocationType - Allocation type+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkInternalAllocationNotification',+-- 'Graphics.Vulkan.Core10.FuncPointers.PFN_vkInternalFreeNotification'+newtype InternalAllocationType = InternalAllocationType Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'INTERNAL_ALLOCATION_TYPE_EXECUTABLE' specifies that the allocation is+-- intended for execution by the host.+pattern INTERNAL_ALLOCATION_TYPE_EXECUTABLE = InternalAllocationType 0+{-# complete INTERNAL_ALLOCATION_TYPE_EXECUTABLE :: InternalAllocationType #-}++instance Show InternalAllocationType where+ showsPrec p = \case+ INTERNAL_ALLOCATION_TYPE_EXECUTABLE -> showString "INTERNAL_ALLOCATION_TYPE_EXECUTABLE"+ InternalAllocationType x -> showParen (p >= 11) (showString "InternalAllocationType " . showsPrec 11 x)++instance Read InternalAllocationType where+ readPrec = parens (choose [("INTERNAL_ALLOCATION_TYPE_EXECUTABLE", pure INTERNAL_ALLOCATION_TYPE_EXECUTABLE)]+ ++++ prec 10 (do+ expectP (Ident "InternalAllocationType")+ v <- step readPrec+ pure (InternalAllocationType v)))+
+ src/Graphics/Vulkan/Core10/Enums/LogicOp.hs view
@@ -0,0 +1,195 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.LogicOp (LogicOp( LOGIC_OP_CLEAR+ , LOGIC_OP_AND+ , LOGIC_OP_AND_REVERSE+ , LOGIC_OP_COPY+ , LOGIC_OP_AND_INVERTED+ , LOGIC_OP_NO_OP+ , LOGIC_OP_XOR+ , LOGIC_OP_OR+ , LOGIC_OP_NOR+ , LOGIC_OP_EQUIVALENT+ , LOGIC_OP_INVERT+ , LOGIC_OP_OR_REVERSE+ , LOGIC_OP_COPY_INVERTED+ , LOGIC_OP_OR_INVERTED+ , LOGIC_OP_NAND+ , LOGIC_OP_SET+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkLogicOp - Framebuffer logical operations+--+-- = Description+--+-- The logical operations supported by Vulkan are summarized in the+-- following table in which+--+-- - ¬ is bitwise invert,+--+-- - ∧ is bitwise and,+--+-- - ∨ is bitwise or,+--+-- - ⊕ is bitwise exclusive or,+--+-- - s is the fragment’s Rs0, Gs0, Bs0 or As0 component value for the+-- fragment output corresponding to the color attachment being updated,+-- and+--+-- - d is the color attachment’s R, G, B or A component value:+--+-- +-----------------------------------+-----------------------------------++-- | Mode | Operation |+-- +===================================+===================================++-- | 'LOGIC_OP_CLEAR' | 0 |+-- +-----------------------------------+-----------------------------------++-- | 'LOGIC_OP_AND' | s ∧ d |+-- +-----------------------------------+-----------------------------------++-- | 'LOGIC_OP_AND_REVERSE' | s ∧ ¬ d |+-- +-----------------------------------+-----------------------------------++-- | 'LOGIC_OP_COPY' | s |+-- +-----------------------------------+-----------------------------------++-- | 'LOGIC_OP_AND_INVERTED' | ¬ s ∧ d |+-- +-----------------------------------+-----------------------------------++-- | 'LOGIC_OP_NO_OP' | d |+-- +-----------------------------------+-----------------------------------++-- | 'LOGIC_OP_XOR' | s ⊕ d |+-- +-----------------------------------+-----------------------------------++-- | 'LOGIC_OP_OR' | s ∨ d |+-- +-----------------------------------+-----------------------------------++-- | 'LOGIC_OP_NOR' | ¬ (s ∨ d) |+-- +-----------------------------------+-----------------------------------++-- | 'LOGIC_OP_EQUIVALENT' | ¬ (s ⊕ d) |+-- +-----------------------------------+-----------------------------------++-- | 'LOGIC_OP_INVERT' | ¬ d |+-- +-----------------------------------+-----------------------------------++-- | 'LOGIC_OP_OR_REVERSE' | s ∨ ¬ d |+-- +-----------------------------------+-----------------------------------++-- | 'LOGIC_OP_COPY_INVERTED' | ¬ s |+-- +-----------------------------------+-----------------------------------++-- | 'LOGIC_OP_OR_INVERTED' | ¬ s ∨ d |+-- +-----------------------------------+-----------------------------------++-- | 'LOGIC_OP_NAND' | ¬ (s ∧ d) |+-- +-----------------------------------+-----------------------------------++-- | 'LOGIC_OP_SET' | all 1s |+-- +-----------------------------------+-----------------------------------++--+-- Logical Operations+--+-- The result of the logical operation is then written to the color+-- attachment as controlled by the component write mask, described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blendoperations Blend Operations>.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'+newtype LogicOp = LogicOp Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_CLEAR"+pattern LOGIC_OP_CLEAR = LogicOp 0+-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_AND"+pattern LOGIC_OP_AND = LogicOp 1+-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_AND_REVERSE"+pattern LOGIC_OP_AND_REVERSE = LogicOp 2+-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_COPY"+pattern LOGIC_OP_COPY = LogicOp 3+-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_AND_INVERTED"+pattern LOGIC_OP_AND_INVERTED = LogicOp 4+-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_NO_OP"+pattern LOGIC_OP_NO_OP = LogicOp 5+-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_XOR"+pattern LOGIC_OP_XOR = LogicOp 6+-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_OR"+pattern LOGIC_OP_OR = LogicOp 7+-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_NOR"+pattern LOGIC_OP_NOR = LogicOp 8+-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_EQUIVALENT"+pattern LOGIC_OP_EQUIVALENT = LogicOp 9+-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_INVERT"+pattern LOGIC_OP_INVERT = LogicOp 10+-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_OR_REVERSE"+pattern LOGIC_OP_OR_REVERSE = LogicOp 11+-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_COPY_INVERTED"+pattern LOGIC_OP_COPY_INVERTED = LogicOp 12+-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_OR_INVERTED"+pattern LOGIC_OP_OR_INVERTED = LogicOp 13+-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_NAND"+pattern LOGIC_OP_NAND = LogicOp 14+-- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_SET"+pattern LOGIC_OP_SET = LogicOp 15+{-# complete LOGIC_OP_CLEAR,+ LOGIC_OP_AND,+ LOGIC_OP_AND_REVERSE,+ LOGIC_OP_COPY,+ LOGIC_OP_AND_INVERTED,+ LOGIC_OP_NO_OP,+ LOGIC_OP_XOR,+ LOGIC_OP_OR,+ LOGIC_OP_NOR,+ LOGIC_OP_EQUIVALENT,+ LOGIC_OP_INVERT,+ LOGIC_OP_OR_REVERSE,+ LOGIC_OP_COPY_INVERTED,+ LOGIC_OP_OR_INVERTED,+ LOGIC_OP_NAND,+ LOGIC_OP_SET :: LogicOp #-}++instance Show LogicOp where+ showsPrec p = \case+ LOGIC_OP_CLEAR -> showString "LOGIC_OP_CLEAR"+ LOGIC_OP_AND -> showString "LOGIC_OP_AND"+ LOGIC_OP_AND_REVERSE -> showString "LOGIC_OP_AND_REVERSE"+ LOGIC_OP_COPY -> showString "LOGIC_OP_COPY"+ LOGIC_OP_AND_INVERTED -> showString "LOGIC_OP_AND_INVERTED"+ LOGIC_OP_NO_OP -> showString "LOGIC_OP_NO_OP"+ LOGIC_OP_XOR -> showString "LOGIC_OP_XOR"+ LOGIC_OP_OR -> showString "LOGIC_OP_OR"+ LOGIC_OP_NOR -> showString "LOGIC_OP_NOR"+ LOGIC_OP_EQUIVALENT -> showString "LOGIC_OP_EQUIVALENT"+ LOGIC_OP_INVERT -> showString "LOGIC_OP_INVERT"+ LOGIC_OP_OR_REVERSE -> showString "LOGIC_OP_OR_REVERSE"+ LOGIC_OP_COPY_INVERTED -> showString "LOGIC_OP_COPY_INVERTED"+ LOGIC_OP_OR_INVERTED -> showString "LOGIC_OP_OR_INVERTED"+ LOGIC_OP_NAND -> showString "LOGIC_OP_NAND"+ LOGIC_OP_SET -> showString "LOGIC_OP_SET"+ LogicOp x -> showParen (p >= 11) (showString "LogicOp " . showsPrec 11 x)++instance Read LogicOp where+ readPrec = parens (choose [("LOGIC_OP_CLEAR", pure LOGIC_OP_CLEAR)+ , ("LOGIC_OP_AND", pure LOGIC_OP_AND)+ , ("LOGIC_OP_AND_REVERSE", pure LOGIC_OP_AND_REVERSE)+ , ("LOGIC_OP_COPY", pure LOGIC_OP_COPY)+ , ("LOGIC_OP_AND_INVERTED", pure LOGIC_OP_AND_INVERTED)+ , ("LOGIC_OP_NO_OP", pure LOGIC_OP_NO_OP)+ , ("LOGIC_OP_XOR", pure LOGIC_OP_XOR)+ , ("LOGIC_OP_OR", pure LOGIC_OP_OR)+ , ("LOGIC_OP_NOR", pure LOGIC_OP_NOR)+ , ("LOGIC_OP_EQUIVALENT", pure LOGIC_OP_EQUIVALENT)+ , ("LOGIC_OP_INVERT", pure LOGIC_OP_INVERT)+ , ("LOGIC_OP_OR_REVERSE", pure LOGIC_OP_OR_REVERSE)+ , ("LOGIC_OP_COPY_INVERTED", pure LOGIC_OP_COPY_INVERTED)+ , ("LOGIC_OP_OR_INVERTED", pure LOGIC_OP_OR_INVERTED)+ , ("LOGIC_OP_NAND", pure LOGIC_OP_NAND)+ , ("LOGIC_OP_SET", pure LOGIC_OP_SET)]+ ++++ prec 10 (do+ expectP (Ident "LogicOp")+ v <- step readPrec+ pure (LogicOp v)))+
+ src/Graphics/Vulkan/Core10/Enums/MemoryHeapFlagBits.hs view
@@ -0,0 +1,60 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.MemoryHeapFlagBits ( MemoryHeapFlagBits( MEMORY_HEAP_DEVICE_LOCAL_BIT+ , MEMORY_HEAP_MULTI_INSTANCE_BIT+ , ..+ )+ , MemoryHeapFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkMemoryHeapFlagBits - Bitmask specifying attribute flags for a heap+--+-- = See Also+--+-- 'MemoryHeapFlags'+newtype MemoryHeapFlagBits = MemoryHeapFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'MEMORY_HEAP_DEVICE_LOCAL_BIT' specifies that the heap corresponds to+-- device local memory. Device local memory /may/ have different+-- performance characteristics than host local memory, and /may/ support+-- different memory property flags.+pattern MEMORY_HEAP_DEVICE_LOCAL_BIT = MemoryHeapFlagBits 0x00000001+-- | 'MEMORY_HEAP_MULTI_INSTANCE_BIT' specifies that in a logical device+-- representing more than one physical device, there is a per-physical+-- device instance of the heap memory. By default, an allocation from such+-- a heap will be replicated to each physical device’s instance of the+-- heap.+pattern MEMORY_HEAP_MULTI_INSTANCE_BIT = MemoryHeapFlagBits 0x00000002++type MemoryHeapFlags = MemoryHeapFlagBits++instance Show MemoryHeapFlagBits where+ showsPrec p = \case+ MEMORY_HEAP_DEVICE_LOCAL_BIT -> showString "MEMORY_HEAP_DEVICE_LOCAL_BIT"+ MEMORY_HEAP_MULTI_INSTANCE_BIT -> showString "MEMORY_HEAP_MULTI_INSTANCE_BIT"+ MemoryHeapFlagBits x -> showParen (p >= 11) (showString "MemoryHeapFlagBits 0x" . showHex x)++instance Read MemoryHeapFlagBits where+ readPrec = parens (choose [("MEMORY_HEAP_DEVICE_LOCAL_BIT", pure MEMORY_HEAP_DEVICE_LOCAL_BIT)+ , ("MEMORY_HEAP_MULTI_INSTANCE_BIT", pure MEMORY_HEAP_MULTI_INSTANCE_BIT)]+ ++++ prec 10 (do+ expectP (Ident "MemoryHeapFlagBits")+ v <- step readPrec+ pure (MemoryHeapFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/MemoryMapFlags.hs view
@@ -0,0 +1,45 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.MemoryMapFlags (MemoryMapFlags(..)) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkMemoryMapFlags - Reserved for future use+--+-- = Description+--+-- 'MemoryMapFlags' is a bitmask type for setting a mask, but is currently+-- reserved for future use.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Memory.mapMemory'+newtype MemoryMapFlags = MemoryMapFlags Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show MemoryMapFlags where+ showsPrec p = \case+ MemoryMapFlags x -> showParen (p >= 11) (showString "MemoryMapFlags 0x" . showHex x)++instance Read MemoryMapFlags where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "MemoryMapFlags")+ v <- step readPrec+ pure (MemoryMapFlags v)))+
+ src/Graphics/Vulkan/Core10/Enums/MemoryMapFlags.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.MemoryMapFlags (MemoryMapFlags) where++++data MemoryMapFlags+
+ src/Graphics/Vulkan/Core10/Enums/MemoryPropertyFlagBits.hs view
@@ -0,0 +1,136 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits ( MemoryPropertyFlagBits( MEMORY_PROPERTY_DEVICE_LOCAL_BIT+ , MEMORY_PROPERTY_HOST_VISIBLE_BIT+ , MEMORY_PROPERTY_HOST_COHERENT_BIT+ , MEMORY_PROPERTY_HOST_CACHED_BIT+ , MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT+ , MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD+ , MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD+ , MEMORY_PROPERTY_PROTECTED_BIT+ , ..+ )+ , MemoryPropertyFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkMemoryPropertyFlagBits - Bitmask specifying properties for a memory+-- type+--+-- = Description+--+-- For any memory allocated with both the+-- 'MEMORY_PROPERTY_HOST_COHERENT_BIT' and the+-- 'MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD', host or device accesses also+-- perform automatic memory domain transfer operations, such that writes+-- are always automatically available and visible to both host and device+-- memory domains.+--+-- Note+--+-- Device coherence is a useful property for certain debugging use cases+-- (e.g. crash analysis, where performing separate coherence actions could+-- mean values are not reported correctly). However, device coherent+-- accesses may be slower than equivalent accesses without device+-- coherence, particularly if they are also device uncached. For device+-- uncached memory in particular, repeated accesses to the same or+-- neighbouring memory locations over a short time period (e.g. within a+-- frame) may be slower than it would be for the equivalent cached memory+-- type. As such, it’s generally inadvisable to use device coherent or+-- device uncached memory except when really needed.+--+-- = See Also+--+-- 'MemoryPropertyFlags'+newtype MemoryPropertyFlagBits = MemoryPropertyFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'MEMORY_PROPERTY_DEVICE_LOCAL_BIT' bit specifies that memory allocated+-- with this type is the most efficient for device access. This property+-- will be set if and only if the memory type belongs to a heap with the+-- 'Graphics.Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_DEVICE_LOCAL_BIT'+-- set.+pattern MEMORY_PROPERTY_DEVICE_LOCAL_BIT = MemoryPropertyFlagBits 0x00000001+-- | 'MEMORY_PROPERTY_HOST_VISIBLE_BIT' bit specifies that memory allocated+-- with this type /can/ be mapped for host access using+-- 'Graphics.Vulkan.Core10.Memory.mapMemory'.+pattern MEMORY_PROPERTY_HOST_VISIBLE_BIT = MemoryPropertyFlagBits 0x00000002+-- | 'MEMORY_PROPERTY_HOST_COHERENT_BIT' bit specifies that the host cache+-- management commands+-- 'Graphics.Vulkan.Core10.Memory.flushMappedMemoryRanges' and+-- 'Graphics.Vulkan.Core10.Memory.invalidateMappedMemoryRanges' are not+-- needed to flush host writes to the device or make device writes visible+-- to the host, respectively.+pattern MEMORY_PROPERTY_HOST_COHERENT_BIT = MemoryPropertyFlagBits 0x00000004+-- | 'MEMORY_PROPERTY_HOST_CACHED_BIT' bit specifies that memory allocated+-- with this type is cached on the host. Host memory accesses to uncached+-- memory are slower than to cached memory, however uncached memory is+-- always host coherent.+pattern MEMORY_PROPERTY_HOST_CACHED_BIT = MemoryPropertyFlagBits 0x00000008+-- | 'MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT' bit specifies that the memory+-- type only allows device access to the memory. Memory types /must/ not+-- have both 'MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT' and+-- 'MEMORY_PROPERTY_HOST_VISIBLE_BIT' set. Additionally, the object’s+-- backing memory /may/ be provided by the implementation lazily as+-- 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_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.+pattern MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = MemoryPropertyFlagBits 0x00000080+-- | 'MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD' bit specifies that device+-- accesses to allocations of this memory type are automatically made+-- available and visible.+pattern MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = MemoryPropertyFlagBits 0x00000040+-- | 'MEMORY_PROPERTY_PROTECTED_BIT' bit specifies that the memory type only+-- allows device access to the memory, and allows protected queue+-- operations to access the memory. Memory types /must/ not have+-- 'MEMORY_PROPERTY_PROTECTED_BIT' set and any of+-- 'MEMORY_PROPERTY_HOST_VISIBLE_BIT' set, or+-- 'MEMORY_PROPERTY_HOST_COHERENT_BIT' set, or+-- 'MEMORY_PROPERTY_HOST_CACHED_BIT' set.+pattern MEMORY_PROPERTY_PROTECTED_BIT = MemoryPropertyFlagBits 0x00000020++type MemoryPropertyFlags = MemoryPropertyFlagBits++instance Show MemoryPropertyFlagBits where+ showsPrec p = \case+ MEMORY_PROPERTY_DEVICE_LOCAL_BIT -> showString "MEMORY_PROPERTY_DEVICE_LOCAL_BIT"+ MEMORY_PROPERTY_HOST_VISIBLE_BIT -> showString "MEMORY_PROPERTY_HOST_VISIBLE_BIT"+ MEMORY_PROPERTY_HOST_COHERENT_BIT -> showString "MEMORY_PROPERTY_HOST_COHERENT_BIT"+ MEMORY_PROPERTY_HOST_CACHED_BIT -> showString "MEMORY_PROPERTY_HOST_CACHED_BIT"+ MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT -> showString "MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"+ MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD -> showString "MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD"+ MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD -> showString "MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD"+ MEMORY_PROPERTY_PROTECTED_BIT -> showString "MEMORY_PROPERTY_PROTECTED_BIT"+ MemoryPropertyFlagBits x -> showParen (p >= 11) (showString "MemoryPropertyFlagBits 0x" . showHex x)++instance Read MemoryPropertyFlagBits where+ readPrec = parens (choose [("MEMORY_PROPERTY_DEVICE_LOCAL_BIT", pure MEMORY_PROPERTY_DEVICE_LOCAL_BIT)+ , ("MEMORY_PROPERTY_HOST_VISIBLE_BIT", pure MEMORY_PROPERTY_HOST_VISIBLE_BIT)+ , ("MEMORY_PROPERTY_HOST_COHERENT_BIT", pure MEMORY_PROPERTY_HOST_COHERENT_BIT)+ , ("MEMORY_PROPERTY_HOST_CACHED_BIT", pure MEMORY_PROPERTY_HOST_CACHED_BIT)+ , ("MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT", pure MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT)+ , ("MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD", pure MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD)+ , ("MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD", pure MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD)+ , ("MEMORY_PROPERTY_PROTECTED_BIT", pure MEMORY_PROPERTY_PROTECTED_BIT)]+ ++++ prec 10 (do+ expectP (Ident "MemoryPropertyFlagBits")+ v <- step readPrec+ pure (MemoryPropertyFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/ObjectType.hs view
@@ -0,0 +1,361 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.ObjectType (ObjectType( OBJECT_TYPE_UNKNOWN+ , OBJECT_TYPE_INSTANCE+ , OBJECT_TYPE_PHYSICAL_DEVICE+ , OBJECT_TYPE_DEVICE+ , OBJECT_TYPE_QUEUE+ , OBJECT_TYPE_SEMAPHORE+ , OBJECT_TYPE_COMMAND_BUFFER+ , OBJECT_TYPE_FENCE+ , OBJECT_TYPE_DEVICE_MEMORY+ , OBJECT_TYPE_BUFFER+ , OBJECT_TYPE_IMAGE+ , OBJECT_TYPE_EVENT+ , OBJECT_TYPE_QUERY_POOL+ , OBJECT_TYPE_BUFFER_VIEW+ , OBJECT_TYPE_IMAGE_VIEW+ , OBJECT_TYPE_SHADER_MODULE+ , OBJECT_TYPE_PIPELINE_CACHE+ , OBJECT_TYPE_PIPELINE_LAYOUT+ , OBJECT_TYPE_RENDER_PASS+ , OBJECT_TYPE_PIPELINE+ , OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT+ , OBJECT_TYPE_SAMPLER+ , OBJECT_TYPE_DESCRIPTOR_POOL+ , OBJECT_TYPE_DESCRIPTOR_SET+ , OBJECT_TYPE_FRAMEBUFFER+ , OBJECT_TYPE_COMMAND_POOL+ , OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL+ , OBJECT_TYPE_ACCELERATION_STRUCTURE_NV+ , OBJECT_TYPE_VALIDATION_CACHE_EXT+ , OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT+ , OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX+ , OBJECT_TYPE_OBJECT_TABLE_NVX+ , OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT+ , OBJECT_TYPE_DISPLAY_MODE_KHR+ , OBJECT_TYPE_DISPLAY_KHR+ , OBJECT_TYPE_SWAPCHAIN_KHR+ , OBJECT_TYPE_SURFACE_KHR+ , OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE+ , OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkObjectType - Specify an enumeration to track object handle types+--+-- = Description+--+-- \'+--+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'ObjectType' | Vulkan Handle Type |+-- +===============================================+====================================================================++-- | 'OBJECT_TYPE_UNKNOWN' | Unknown\/Undefined Handle |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_INSTANCE' | 'Graphics.Vulkan.Core10.Handles.Instance' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_PHYSICAL_DEVICE' | 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_DEVICE' | 'Graphics.Vulkan.Core10.Handles.Device' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_QUEUE' | 'Graphics.Vulkan.Core10.Handles.Queue' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_SEMAPHORE' | 'Graphics.Vulkan.Core10.Handles.Semaphore' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_COMMAND_BUFFER' | 'Graphics.Vulkan.Core10.Handles.CommandBuffer' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_FENCE' | 'Graphics.Vulkan.Core10.Handles.Fence' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_DEVICE_MEMORY' | 'Graphics.Vulkan.Core10.Handles.DeviceMemory' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_BUFFER' | 'Graphics.Vulkan.Core10.Handles.Buffer' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_IMAGE' | 'Graphics.Vulkan.Core10.Handles.Image' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_EVENT' | 'Graphics.Vulkan.Core10.Handles.Event' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_QUERY_POOL' | 'Graphics.Vulkan.Core10.Handles.QueryPool' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_BUFFER_VIEW' | 'Graphics.Vulkan.Core10.Handles.BufferView' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_IMAGE_VIEW' | 'Graphics.Vulkan.Core10.Handles.ImageView' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_SHADER_MODULE' | 'Graphics.Vulkan.Core10.Handles.ShaderModule' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_PIPELINE_CACHE' | 'Graphics.Vulkan.Core10.Handles.PipelineCache' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_PIPELINE_LAYOUT' | 'Graphics.Vulkan.Core10.Handles.PipelineLayout' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_RENDER_PASS' | 'Graphics.Vulkan.Core10.Handles.RenderPass' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_PIPELINE' | 'Graphics.Vulkan.Core10.Handles.Pipeline' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT' | 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_SAMPLER' | 'Graphics.Vulkan.Core10.Handles.Sampler' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_DESCRIPTOR_POOL' | 'Graphics.Vulkan.Core10.Handles.DescriptorPool' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_DESCRIPTOR_SET' | 'Graphics.Vulkan.Core10.Handles.DescriptorSet' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_FRAMEBUFFER' | 'Graphics.Vulkan.Core10.Handles.Framebuffer' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_COMMAND_POOL' | 'Graphics.Vulkan.Core10.Handles.CommandPool' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION' | 'Graphics.Vulkan.Core11.Handles.SamplerYcbcrConversion' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE' | 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_SURFACE_KHR' | 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_SWAPCHAIN_KHR' | 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_DISPLAY_KHR' | 'Graphics.Vulkan.Extensions.Handles.DisplayKHR' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_DISPLAY_MODE_KHR' | 'Graphics.Vulkan.Extensions.Handles.DisplayModeKHR' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT' | 'Graphics.Vulkan.Extensions.Handles.DebugReportCallbackEXT' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_OBJECT_TABLE_NVX' | 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX' | 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT' | 'Graphics.Vulkan.Extensions.Handles.DebugUtilsMessengerEXT' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_VALIDATION_CACHE_EXT' | 'Graphics.Vulkan.Extensions.Handles.ValidationCacheEXT' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_ACCELERATION_STRUCTURE_NV' | 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' |+-- +-----------------------------------------------+--------------------------------------------------------------------++-- | 'OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL' | 'Graphics.Vulkan.Extensions.Handles.PerformanceConfigurationINTEL' |+-- +-----------------------------------------------+--------------------------------------------------------------------++--+-- VkObjectType and Vulkan Handle Relationship+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectNameInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectTagInfoEXT'+newtype ObjectType = ObjectType Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_UNKNOWN"+pattern OBJECT_TYPE_UNKNOWN = ObjectType 0+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_INSTANCE"+pattern OBJECT_TYPE_INSTANCE = ObjectType 1+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_PHYSICAL_DEVICE"+pattern OBJECT_TYPE_PHYSICAL_DEVICE = ObjectType 2+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DEVICE"+pattern OBJECT_TYPE_DEVICE = ObjectType 3+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_QUEUE"+pattern OBJECT_TYPE_QUEUE = ObjectType 4+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SEMAPHORE"+pattern OBJECT_TYPE_SEMAPHORE = ObjectType 5+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_COMMAND_BUFFER"+pattern OBJECT_TYPE_COMMAND_BUFFER = ObjectType 6+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_FENCE"+pattern OBJECT_TYPE_FENCE = ObjectType 7+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DEVICE_MEMORY"+pattern OBJECT_TYPE_DEVICE_MEMORY = ObjectType 8+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_BUFFER"+pattern OBJECT_TYPE_BUFFER = ObjectType 9+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_IMAGE"+pattern OBJECT_TYPE_IMAGE = ObjectType 10+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_EVENT"+pattern OBJECT_TYPE_EVENT = ObjectType 11+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_QUERY_POOL"+pattern OBJECT_TYPE_QUERY_POOL = ObjectType 12+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_BUFFER_VIEW"+pattern OBJECT_TYPE_BUFFER_VIEW = ObjectType 13+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_IMAGE_VIEW"+pattern OBJECT_TYPE_IMAGE_VIEW = ObjectType 14+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SHADER_MODULE"+pattern OBJECT_TYPE_SHADER_MODULE = ObjectType 15+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_PIPELINE_CACHE"+pattern OBJECT_TYPE_PIPELINE_CACHE = ObjectType 16+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_PIPELINE_LAYOUT"+pattern OBJECT_TYPE_PIPELINE_LAYOUT = ObjectType 17+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_RENDER_PASS"+pattern OBJECT_TYPE_RENDER_PASS = ObjectType 18+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_PIPELINE"+pattern OBJECT_TYPE_PIPELINE = ObjectType 19+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT"+pattern OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = ObjectType 20+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SAMPLER"+pattern OBJECT_TYPE_SAMPLER = ObjectType 21+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DESCRIPTOR_POOL"+pattern OBJECT_TYPE_DESCRIPTOR_POOL = ObjectType 22+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DESCRIPTOR_SET"+pattern OBJECT_TYPE_DESCRIPTOR_SET = ObjectType 23+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_FRAMEBUFFER"+pattern OBJECT_TYPE_FRAMEBUFFER = ObjectType 24+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_COMMAND_POOL"+pattern OBJECT_TYPE_COMMAND_POOL = ObjectType 25+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL"+pattern OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = ObjectType 1000210000+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV"+pattern OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = ObjectType 1000165000+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_VALIDATION_CACHE_EXT"+pattern OBJECT_TYPE_VALIDATION_CACHE_EXT = ObjectType 1000160000+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT"+pattern OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = ObjectType 1000128000+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX"+pattern OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX = ObjectType 1000086001+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_OBJECT_TABLE_NVX"+pattern OBJECT_TYPE_OBJECT_TABLE_NVX = ObjectType 1000086000+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT"+pattern OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = ObjectType 1000011000+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DISPLAY_MODE_KHR"+pattern OBJECT_TYPE_DISPLAY_MODE_KHR = ObjectType 1000002001+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DISPLAY_KHR"+pattern OBJECT_TYPE_DISPLAY_KHR = ObjectType 1000002000+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SWAPCHAIN_KHR"+pattern OBJECT_TYPE_SWAPCHAIN_KHR = ObjectType 1000001000+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SURFACE_KHR"+pattern OBJECT_TYPE_SURFACE_KHR = ObjectType 1000000000+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"+pattern OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = ObjectType 1000085000+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION"+pattern OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = ObjectType 1000156000+{-# complete OBJECT_TYPE_UNKNOWN,+ OBJECT_TYPE_INSTANCE,+ OBJECT_TYPE_PHYSICAL_DEVICE,+ OBJECT_TYPE_DEVICE,+ OBJECT_TYPE_QUEUE,+ OBJECT_TYPE_SEMAPHORE,+ OBJECT_TYPE_COMMAND_BUFFER,+ OBJECT_TYPE_FENCE,+ OBJECT_TYPE_DEVICE_MEMORY,+ OBJECT_TYPE_BUFFER,+ OBJECT_TYPE_IMAGE,+ OBJECT_TYPE_EVENT,+ OBJECT_TYPE_QUERY_POOL,+ OBJECT_TYPE_BUFFER_VIEW,+ OBJECT_TYPE_IMAGE_VIEW,+ OBJECT_TYPE_SHADER_MODULE,+ OBJECT_TYPE_PIPELINE_CACHE,+ OBJECT_TYPE_PIPELINE_LAYOUT,+ OBJECT_TYPE_RENDER_PASS,+ OBJECT_TYPE_PIPELINE,+ OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT,+ OBJECT_TYPE_SAMPLER,+ OBJECT_TYPE_DESCRIPTOR_POOL,+ OBJECT_TYPE_DESCRIPTOR_SET,+ OBJECT_TYPE_FRAMEBUFFER,+ OBJECT_TYPE_COMMAND_POOL,+ OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL,+ OBJECT_TYPE_ACCELERATION_STRUCTURE_NV,+ OBJECT_TYPE_VALIDATION_CACHE_EXT,+ OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT,+ OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX,+ OBJECT_TYPE_OBJECT_TABLE_NVX,+ OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT,+ OBJECT_TYPE_DISPLAY_MODE_KHR,+ OBJECT_TYPE_DISPLAY_KHR,+ OBJECT_TYPE_SWAPCHAIN_KHR,+ OBJECT_TYPE_SURFACE_KHR,+ OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,+ OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION :: ObjectType #-}++instance Show ObjectType where+ showsPrec p = \case+ OBJECT_TYPE_UNKNOWN -> showString "OBJECT_TYPE_UNKNOWN"+ OBJECT_TYPE_INSTANCE -> showString "OBJECT_TYPE_INSTANCE"+ OBJECT_TYPE_PHYSICAL_DEVICE -> showString "OBJECT_TYPE_PHYSICAL_DEVICE"+ OBJECT_TYPE_DEVICE -> showString "OBJECT_TYPE_DEVICE"+ OBJECT_TYPE_QUEUE -> showString "OBJECT_TYPE_QUEUE"+ OBJECT_TYPE_SEMAPHORE -> showString "OBJECT_TYPE_SEMAPHORE"+ OBJECT_TYPE_COMMAND_BUFFER -> showString "OBJECT_TYPE_COMMAND_BUFFER"+ OBJECT_TYPE_FENCE -> showString "OBJECT_TYPE_FENCE"+ OBJECT_TYPE_DEVICE_MEMORY -> showString "OBJECT_TYPE_DEVICE_MEMORY"+ OBJECT_TYPE_BUFFER -> showString "OBJECT_TYPE_BUFFER"+ OBJECT_TYPE_IMAGE -> showString "OBJECT_TYPE_IMAGE"+ OBJECT_TYPE_EVENT -> showString "OBJECT_TYPE_EVENT"+ OBJECT_TYPE_QUERY_POOL -> showString "OBJECT_TYPE_QUERY_POOL"+ OBJECT_TYPE_BUFFER_VIEW -> showString "OBJECT_TYPE_BUFFER_VIEW"+ OBJECT_TYPE_IMAGE_VIEW -> showString "OBJECT_TYPE_IMAGE_VIEW"+ OBJECT_TYPE_SHADER_MODULE -> showString "OBJECT_TYPE_SHADER_MODULE"+ OBJECT_TYPE_PIPELINE_CACHE -> showString "OBJECT_TYPE_PIPELINE_CACHE"+ OBJECT_TYPE_PIPELINE_LAYOUT -> showString "OBJECT_TYPE_PIPELINE_LAYOUT"+ OBJECT_TYPE_RENDER_PASS -> showString "OBJECT_TYPE_RENDER_PASS"+ OBJECT_TYPE_PIPELINE -> showString "OBJECT_TYPE_PIPELINE"+ OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT -> showString "OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT"+ OBJECT_TYPE_SAMPLER -> showString "OBJECT_TYPE_SAMPLER"+ OBJECT_TYPE_DESCRIPTOR_POOL -> showString "OBJECT_TYPE_DESCRIPTOR_POOL"+ OBJECT_TYPE_DESCRIPTOR_SET -> showString "OBJECT_TYPE_DESCRIPTOR_SET"+ OBJECT_TYPE_FRAMEBUFFER -> showString "OBJECT_TYPE_FRAMEBUFFER"+ OBJECT_TYPE_COMMAND_POOL -> showString "OBJECT_TYPE_COMMAND_POOL"+ OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL -> showString "OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL"+ OBJECT_TYPE_ACCELERATION_STRUCTURE_NV -> showString "OBJECT_TYPE_ACCELERATION_STRUCTURE_NV"+ OBJECT_TYPE_VALIDATION_CACHE_EXT -> showString "OBJECT_TYPE_VALIDATION_CACHE_EXT"+ OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT -> showString "OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT"+ OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX -> showString "OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX"+ OBJECT_TYPE_OBJECT_TABLE_NVX -> showString "OBJECT_TYPE_OBJECT_TABLE_NVX"+ OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT -> showString "OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT"+ OBJECT_TYPE_DISPLAY_MODE_KHR -> showString "OBJECT_TYPE_DISPLAY_MODE_KHR"+ OBJECT_TYPE_DISPLAY_KHR -> showString "OBJECT_TYPE_DISPLAY_KHR"+ OBJECT_TYPE_SWAPCHAIN_KHR -> showString "OBJECT_TYPE_SWAPCHAIN_KHR"+ OBJECT_TYPE_SURFACE_KHR -> showString "OBJECT_TYPE_SURFACE_KHR"+ OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE -> showString "OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"+ OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION -> showString "OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION"+ ObjectType x -> showParen (p >= 11) (showString "ObjectType " . showsPrec 11 x)++instance Read ObjectType where+ readPrec = parens (choose [("OBJECT_TYPE_UNKNOWN", pure OBJECT_TYPE_UNKNOWN)+ , ("OBJECT_TYPE_INSTANCE", pure OBJECT_TYPE_INSTANCE)+ , ("OBJECT_TYPE_PHYSICAL_DEVICE", pure OBJECT_TYPE_PHYSICAL_DEVICE)+ , ("OBJECT_TYPE_DEVICE", pure OBJECT_TYPE_DEVICE)+ , ("OBJECT_TYPE_QUEUE", pure OBJECT_TYPE_QUEUE)+ , ("OBJECT_TYPE_SEMAPHORE", pure OBJECT_TYPE_SEMAPHORE)+ , ("OBJECT_TYPE_COMMAND_BUFFER", pure OBJECT_TYPE_COMMAND_BUFFER)+ , ("OBJECT_TYPE_FENCE", pure OBJECT_TYPE_FENCE)+ , ("OBJECT_TYPE_DEVICE_MEMORY", pure OBJECT_TYPE_DEVICE_MEMORY)+ , ("OBJECT_TYPE_BUFFER", pure OBJECT_TYPE_BUFFER)+ , ("OBJECT_TYPE_IMAGE", pure OBJECT_TYPE_IMAGE)+ , ("OBJECT_TYPE_EVENT", pure OBJECT_TYPE_EVENT)+ , ("OBJECT_TYPE_QUERY_POOL", pure OBJECT_TYPE_QUERY_POOL)+ , ("OBJECT_TYPE_BUFFER_VIEW", pure OBJECT_TYPE_BUFFER_VIEW)+ , ("OBJECT_TYPE_IMAGE_VIEW", pure OBJECT_TYPE_IMAGE_VIEW)+ , ("OBJECT_TYPE_SHADER_MODULE", pure OBJECT_TYPE_SHADER_MODULE)+ , ("OBJECT_TYPE_PIPELINE_CACHE", pure OBJECT_TYPE_PIPELINE_CACHE)+ , ("OBJECT_TYPE_PIPELINE_LAYOUT", pure OBJECT_TYPE_PIPELINE_LAYOUT)+ , ("OBJECT_TYPE_RENDER_PASS", pure OBJECT_TYPE_RENDER_PASS)+ , ("OBJECT_TYPE_PIPELINE", pure OBJECT_TYPE_PIPELINE)+ , ("OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT", pure OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT)+ , ("OBJECT_TYPE_SAMPLER", pure OBJECT_TYPE_SAMPLER)+ , ("OBJECT_TYPE_DESCRIPTOR_POOL", pure OBJECT_TYPE_DESCRIPTOR_POOL)+ , ("OBJECT_TYPE_DESCRIPTOR_SET", pure OBJECT_TYPE_DESCRIPTOR_SET)+ , ("OBJECT_TYPE_FRAMEBUFFER", pure OBJECT_TYPE_FRAMEBUFFER)+ , ("OBJECT_TYPE_COMMAND_POOL", pure OBJECT_TYPE_COMMAND_POOL)+ , ("OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL", pure OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL)+ , ("OBJECT_TYPE_ACCELERATION_STRUCTURE_NV", pure OBJECT_TYPE_ACCELERATION_STRUCTURE_NV)+ , ("OBJECT_TYPE_VALIDATION_CACHE_EXT", pure OBJECT_TYPE_VALIDATION_CACHE_EXT)+ , ("OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT", pure OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT)+ , ("OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX", pure OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX)+ , ("OBJECT_TYPE_OBJECT_TABLE_NVX", pure OBJECT_TYPE_OBJECT_TABLE_NVX)+ , ("OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT", pure OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT)+ , ("OBJECT_TYPE_DISPLAY_MODE_KHR", pure OBJECT_TYPE_DISPLAY_MODE_KHR)+ , ("OBJECT_TYPE_DISPLAY_KHR", pure OBJECT_TYPE_DISPLAY_KHR)+ , ("OBJECT_TYPE_SWAPCHAIN_KHR", pure OBJECT_TYPE_SWAPCHAIN_KHR)+ , ("OBJECT_TYPE_SURFACE_KHR", pure OBJECT_TYPE_SURFACE_KHR)+ , ("OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE", pure OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE)+ , ("OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION", pure OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION)]+ ++++ prec 10 (do+ expectP (Ident "ObjectType")+ v <- step readPrec+ pure (ObjectType v)))+
+ src/Graphics/Vulkan/Core10/Enums/PhysicalDeviceType.hs view
@@ -0,0 +1,80 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PhysicalDeviceType (PhysicalDeviceType( PHYSICAL_DEVICE_TYPE_OTHER+ , PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU+ , PHYSICAL_DEVICE_TYPE_DISCRETE_GPU+ , PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU+ , PHYSICAL_DEVICE_TYPE_CPU+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkPhysicalDeviceType - Supported physical device types+--+-- = Description+--+-- The physical device type is advertised for informational purposes only,+-- and does not directly affect the operation of the system. However, the+-- device type /may/ correlate with other advertised properties or+-- capabilities of the system, such as how many memory heaps there are.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'+newtype PhysicalDeviceType = PhysicalDeviceType Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'PHYSICAL_DEVICE_TYPE_OTHER' - the device does not match any other+-- available types.+pattern PHYSICAL_DEVICE_TYPE_OTHER = PhysicalDeviceType 0+-- | 'PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU' - the device is typically one+-- embedded in or tightly coupled with the host.+pattern PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = PhysicalDeviceType 1+-- | 'PHYSICAL_DEVICE_TYPE_DISCRETE_GPU' - the device is typically a separate+-- processor connected to the host via an interlink.+pattern PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = PhysicalDeviceType 2+-- | 'PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU' - the device is typically a virtual+-- node in a virtualization environment.+pattern PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = PhysicalDeviceType 3+-- | 'PHYSICAL_DEVICE_TYPE_CPU' - the device is typically running on the same+-- processors as the host.+pattern PHYSICAL_DEVICE_TYPE_CPU = PhysicalDeviceType 4+{-# complete PHYSICAL_DEVICE_TYPE_OTHER,+ PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,+ PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,+ PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,+ PHYSICAL_DEVICE_TYPE_CPU :: PhysicalDeviceType #-}++instance Show PhysicalDeviceType where+ showsPrec p = \case+ PHYSICAL_DEVICE_TYPE_OTHER -> showString "PHYSICAL_DEVICE_TYPE_OTHER"+ PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU -> showString "PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU"+ PHYSICAL_DEVICE_TYPE_DISCRETE_GPU -> showString "PHYSICAL_DEVICE_TYPE_DISCRETE_GPU"+ PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU -> showString "PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU"+ PHYSICAL_DEVICE_TYPE_CPU -> showString "PHYSICAL_DEVICE_TYPE_CPU"+ PhysicalDeviceType x -> showParen (p >= 11) (showString "PhysicalDeviceType " . showsPrec 11 x)++instance Read PhysicalDeviceType where+ readPrec = parens (choose [("PHYSICAL_DEVICE_TYPE_OTHER", pure PHYSICAL_DEVICE_TYPE_OTHER)+ , ("PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU", pure PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU)+ , ("PHYSICAL_DEVICE_TYPE_DISCRETE_GPU", pure PHYSICAL_DEVICE_TYPE_DISCRETE_GPU)+ , ("PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU", pure PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU)+ , ("PHYSICAL_DEVICE_TYPE_CPU", pure PHYSICAL_DEVICE_TYPE_CPU)]+ ++++ prec 10 (do+ expectP (Ident "PhysicalDeviceType")+ v <- step readPrec+ pure (PhysicalDeviceType v)))+
+ src/Graphics/Vulkan/Core10/Enums/PipelineBindPoint.hs view
@@ -0,0 +1,64 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint( PIPELINE_BIND_POINT_GRAPHICS+ , PIPELINE_BIND_POINT_COMPUTE+ , PIPELINE_BIND_POINT_RAY_TRACING_NV+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkPipelineBindPoint - Specify the bind point of a pipeline object to a+-- command buffer+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.IndirectCommandsLayoutCreateInfoNVX',+-- 'Graphics.Vulkan.Core10.Pass.SubpassDescription',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindPipeline',+-- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetKHR'+newtype PipelineBindPoint = PipelineBindPoint Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'PIPELINE_BIND_POINT_GRAPHICS' specifies binding as a graphics pipeline.+pattern PIPELINE_BIND_POINT_GRAPHICS = PipelineBindPoint 0+-- | 'PIPELINE_BIND_POINT_COMPUTE' specifies binding as a compute pipeline.+pattern PIPELINE_BIND_POINT_COMPUTE = PipelineBindPoint 1+-- | 'PIPELINE_BIND_POINT_RAY_TRACING_NV' specifies binding as a ray tracing+-- pipeline.+pattern PIPELINE_BIND_POINT_RAY_TRACING_NV = PipelineBindPoint 1000165000+{-# complete PIPELINE_BIND_POINT_GRAPHICS,+ PIPELINE_BIND_POINT_COMPUTE,+ PIPELINE_BIND_POINT_RAY_TRACING_NV :: PipelineBindPoint #-}++instance Show PipelineBindPoint where+ showsPrec p = \case+ PIPELINE_BIND_POINT_GRAPHICS -> showString "PIPELINE_BIND_POINT_GRAPHICS"+ PIPELINE_BIND_POINT_COMPUTE -> showString "PIPELINE_BIND_POINT_COMPUTE"+ PIPELINE_BIND_POINT_RAY_TRACING_NV -> showString "PIPELINE_BIND_POINT_RAY_TRACING_NV"+ PipelineBindPoint x -> showParen (p >= 11) (showString "PipelineBindPoint " . showsPrec 11 x)++instance Read PipelineBindPoint where+ readPrec = parens (choose [("PIPELINE_BIND_POINT_GRAPHICS", pure PIPELINE_BIND_POINT_GRAPHICS)+ , ("PIPELINE_BIND_POINT_COMPUTE", pure PIPELINE_BIND_POINT_COMPUTE)+ , ("PIPELINE_BIND_POINT_RAY_TRACING_NV", pure PIPELINE_BIND_POINT_RAY_TRACING_NV)]+ ++++ prec 10 (do+ expectP (Ident "PipelineBindPoint")+ v <- step readPrec+ pure (PipelineBindPoint v)))+
+ src/Graphics/Vulkan/Core10/Enums/PipelineBindPoint.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint) where++++data PipelineBindPoint+
+ src/Graphics/Vulkan/Core10/Enums/PipelineCacheCreateFlags.hs view
@@ -0,0 +1,45 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlags (PipelineCacheCreateFlags(..)) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkPipelineCacheCreateFlags - Reserved for future use+--+-- = Description+--+-- 'PipelineCacheCreateFlags' is a bitmask type for setting a mask, but is+-- currently reserved for future use.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.PipelineCache.PipelineCacheCreateInfo'+newtype PipelineCacheCreateFlags = PipelineCacheCreateFlags Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show PipelineCacheCreateFlags where+ showsPrec p = \case+ PipelineCacheCreateFlags x -> showParen (p >= 11) (showString "PipelineCacheCreateFlags 0x" . showHex x)++instance Read PipelineCacheCreateFlags where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "PipelineCacheCreateFlags")+ v <- step readPrec+ pure (PipelineCacheCreateFlags v)))+
+ src/Graphics/Vulkan/Core10/Enums/PipelineCacheHeaderVersion.hs view
@@ -0,0 +1,47 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PipelineCacheHeaderVersion (PipelineCacheHeaderVersion( PIPELINE_CACHE_HEADER_VERSION_ONE+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkPipelineCacheHeaderVersion - Encode pipeline cache version+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.PipelineCache.createPipelineCache',+-- 'Graphics.Vulkan.Core10.PipelineCache.getPipelineCacheData'+newtype PipelineCacheHeaderVersion = PipelineCacheHeaderVersion Int32+ deriving newtype (Eq, Ord, Storable, Zero)+-- Note that the zero instance does not produce a valid value, passing 'zero' to Vulkan will result in an error++-- | 'PIPELINE_CACHE_HEADER_VERSION_ONE' specifies version one of the+-- pipeline cache.+pattern PIPELINE_CACHE_HEADER_VERSION_ONE = PipelineCacheHeaderVersion 1+{-# complete PIPELINE_CACHE_HEADER_VERSION_ONE :: PipelineCacheHeaderVersion #-}++instance Show PipelineCacheHeaderVersion where+ showsPrec p = \case+ PIPELINE_CACHE_HEADER_VERSION_ONE -> showString "PIPELINE_CACHE_HEADER_VERSION_ONE"+ PipelineCacheHeaderVersion x -> showParen (p >= 11) (showString "PipelineCacheHeaderVersion " . showsPrec 11 x)++instance Read PipelineCacheHeaderVersion where+ readPrec = parens (choose [("PIPELINE_CACHE_HEADER_VERSION_ONE", pure PIPELINE_CACHE_HEADER_VERSION_ONE)]+ ++++ prec 10 (do+ expectP (Ident "PipelineCacheHeaderVersion")+ v <- step readPrec+ pure (PipelineCacheHeaderVersion v)))+
+ src/Graphics/Vulkan/Core10/Enums/PipelineColorBlendStateCreateFlags.hs view
@@ -0,0 +1,45 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlags (PipelineColorBlendStateCreateFlags(..)) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkPipelineColorBlendStateCreateFlags - Reserved for future use+--+-- = Description+--+-- 'PipelineColorBlendStateCreateFlags' is a bitmask type for setting a+-- mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'+newtype PipelineColorBlendStateCreateFlags = PipelineColorBlendStateCreateFlags Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show PipelineColorBlendStateCreateFlags where+ showsPrec p = \case+ PipelineColorBlendStateCreateFlags x -> showParen (p >= 11) (showString "PipelineColorBlendStateCreateFlags 0x" . showHex x)++instance Read PipelineColorBlendStateCreateFlags where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "PipelineColorBlendStateCreateFlags")+ v <- step readPrec+ pure (PipelineColorBlendStateCreateFlags v)))+
+ src/Graphics/Vulkan/Core10/Enums/PipelineCreateFlagBits.hs view
@@ -0,0 +1,117 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits ( PipelineCreateFlagBits( PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT+ , PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT+ , PIPELINE_CREATE_DERIVATIVE_BIT+ , PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR+ , PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR+ , PIPELINE_CREATE_DEFER_COMPILE_BIT_NV+ , PIPELINE_CREATE_DISPATCH_BASE_BIT+ , PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT+ , ..+ )+ , PipelineCreateFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkPipelineCreateFlagBits - Bitmask controlling how a pipeline is created+--+-- = Description+--+-- It is valid to set both 'PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT' and+-- 'PIPELINE_CREATE_DERIVATIVE_BIT'. This allows a pipeline to be both a+-- parent and possibly a child in a pipeline hierarchy. See+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>+-- for more information.+--+-- = See Also+--+-- 'PipelineCreateFlags'+newtype PipelineCreateFlagBits = PipelineCreateFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT' specifies that the created+-- pipeline will not be optimized. Using this flag /may/ reduce the time+-- taken to create the pipeline.+pattern PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = PipelineCreateFlagBits 0x00000001+-- | 'PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT' specifies that the pipeline to+-- be created is allowed to be the parent of a pipeline that will be+-- created in a subsequent call to+-- 'Graphics.Vulkan.Core10.Pipeline.createGraphicsPipelines' or+-- 'Graphics.Vulkan.Core10.Pipeline.createComputePipelines'.+pattern PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = PipelineCreateFlagBits 0x00000002+-- | 'PIPELINE_CREATE_DERIVATIVE_BIT' specifies that the pipeline to be+-- created will be a child of a previously created parent pipeline.+pattern PIPELINE_CREATE_DERIVATIVE_BIT = PipelineCreateFlagBits 0x00000004+-- | 'PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR' specifies+-- that the shader compiler should capture the internal representations of+-- executables produced by the compile process which /can/ later be+-- retrieved by calling+-- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutableInternalRepresentationsKHR'.+-- Enabling this flag /must/ not affect the final compiled pipeline but+-- /may/ disable pipeline caching or otherwise affect pipeline creation+-- time.+pattern PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = PipelineCreateFlagBits 0x00000080+-- | 'PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR' specifies that the shader+-- compiler should capture statistics for the executables produced by the+-- compile process which /can/ later be retrieved by calling+-- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutableStatisticsKHR'.+-- Enabling this flag /must/ not affect the final compiled pipeline but+-- /may/ disable pipeline caching or otherwise affect pipeline creation+-- time.+pattern PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = PipelineCreateFlagBits 0x00000040+-- | 'PIPELINE_CREATE_DEFER_COMPILE_BIT_NV' specifies that a pipeline is+-- created with all shaders in the deferred state. Before using the+-- pipeline the application /must/ call+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.compileDeferredNV' exactly+-- once on each shader in the pipeline before using the pipeline.+pattern PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = PipelineCreateFlagBits 0x00000020+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DISPATCH_BASE_BIT"+pattern PIPELINE_CREATE_DISPATCH_BASE_BIT = PipelineCreateFlagBits 0x00000010+-- | 'PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT' specifies that any+-- shader input variables decorated as @ViewIndex@ will be assigned values+-- as if they were decorated as @DeviceIndex@.+pattern PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = PipelineCreateFlagBits 0x00000008++type PipelineCreateFlags = PipelineCreateFlagBits++instance Show PipelineCreateFlagBits where+ showsPrec p = \case+ PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT -> showString "PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"+ PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT -> showString "PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"+ PIPELINE_CREATE_DERIVATIVE_BIT -> showString "PIPELINE_CREATE_DERIVATIVE_BIT"+ PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR -> showString "PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR"+ PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR -> showString "PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR"+ PIPELINE_CREATE_DEFER_COMPILE_BIT_NV -> showString "PIPELINE_CREATE_DEFER_COMPILE_BIT_NV"+ PIPELINE_CREATE_DISPATCH_BASE_BIT -> showString "PIPELINE_CREATE_DISPATCH_BASE_BIT"+ PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT -> showString "PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"+ PipelineCreateFlagBits x -> showParen (p >= 11) (showString "PipelineCreateFlagBits 0x" . showHex x)++instance Read PipelineCreateFlagBits where+ readPrec = parens (choose [("PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT", pure PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT)+ , ("PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT", pure PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT)+ , ("PIPELINE_CREATE_DERIVATIVE_BIT", pure PIPELINE_CREATE_DERIVATIVE_BIT)+ , ("PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR", pure PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR)+ , ("PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR", pure PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR)+ , ("PIPELINE_CREATE_DEFER_COMPILE_BIT_NV", pure PIPELINE_CREATE_DEFER_COMPILE_BIT_NV)+ , ("PIPELINE_CREATE_DISPATCH_BASE_BIT", pure PIPELINE_CREATE_DISPATCH_BASE_BIT)+ , ("PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT", pure PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT)]+ ++++ prec 10 (do+ expectP (Ident "PipelineCreateFlagBits")+ v <- step readPrec+ pure (PipelineCreateFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/PipelineDepthStencilStateCreateFlags.hs view
@@ -0,0 +1,45 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlags (PipelineDepthStencilStateCreateFlags(..)) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkPipelineDepthStencilStateCreateFlags - Reserved for future use+--+-- = Description+--+-- 'PipelineDepthStencilStateCreateFlags' is a bitmask type for setting a+-- mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'+newtype PipelineDepthStencilStateCreateFlags = PipelineDepthStencilStateCreateFlags Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show PipelineDepthStencilStateCreateFlags where+ showsPrec p = \case+ PipelineDepthStencilStateCreateFlags x -> showParen (p >= 11) (showString "PipelineDepthStencilStateCreateFlags 0x" . showHex x)++instance Read PipelineDepthStencilStateCreateFlags where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "PipelineDepthStencilStateCreateFlags")+ v <- step readPrec+ pure (PipelineDepthStencilStateCreateFlags v)))+
+ src/Graphics/Vulkan/Core10/Enums/PipelineDynamicStateCreateFlags.hs view
@@ -0,0 +1,45 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags (PipelineDynamicStateCreateFlags(..)) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkPipelineDynamicStateCreateFlags - Reserved for future use+--+-- = Description+--+-- 'PipelineDynamicStateCreateFlags' is a bitmask type for setting a mask,+-- but is currently reserved for future use.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'+newtype PipelineDynamicStateCreateFlags = PipelineDynamicStateCreateFlags Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show PipelineDynamicStateCreateFlags where+ showsPrec p = \case+ PipelineDynamicStateCreateFlags x -> showParen (p >= 11) (showString "PipelineDynamicStateCreateFlags 0x" . showHex x)++instance Read PipelineDynamicStateCreateFlags where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "PipelineDynamicStateCreateFlags")+ v <- step readPrec+ pure (PipelineDynamicStateCreateFlags v)))+
+ src/Graphics/Vulkan/Core10/Enums/PipelineInputAssemblyStateCreateFlags.hs view
@@ -0,0 +1,45 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags (PipelineInputAssemblyStateCreateFlags(..)) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkPipelineInputAssemblyStateCreateFlags - Reserved for future use+--+-- = Description+--+-- 'PipelineInputAssemblyStateCreateFlags' is a bitmask type for setting a+-- mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'+newtype PipelineInputAssemblyStateCreateFlags = PipelineInputAssemblyStateCreateFlags Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show PipelineInputAssemblyStateCreateFlags where+ showsPrec p = \case+ PipelineInputAssemblyStateCreateFlags x -> showParen (p >= 11) (showString "PipelineInputAssemblyStateCreateFlags 0x" . showHex x)++instance Read PipelineInputAssemblyStateCreateFlags where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "PipelineInputAssemblyStateCreateFlags")+ v <- step readPrec+ pure (PipelineInputAssemblyStateCreateFlags v)))+
+ src/Graphics/Vulkan/Core10/Enums/PipelineLayoutCreateFlags.hs view
@@ -0,0 +1,45 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PipelineLayoutCreateFlags (PipelineLayoutCreateFlags(..)) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkPipelineLayoutCreateFlags - Reserved for future use+--+-- = Description+--+-- 'PipelineLayoutCreateFlags' is a bitmask type for setting a mask, but is+-- currently reserved for future use.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'+newtype PipelineLayoutCreateFlags = PipelineLayoutCreateFlags Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show PipelineLayoutCreateFlags where+ showsPrec p = \case+ PipelineLayoutCreateFlags x -> showParen (p >= 11) (showString "PipelineLayoutCreateFlags 0x" . showHex x)++instance Read PipelineLayoutCreateFlags where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "PipelineLayoutCreateFlags")+ v <- step readPrec+ pure (PipelineLayoutCreateFlags v)))+
+ src/Graphics/Vulkan/Core10/Enums/PipelineMultisampleStateCreateFlags.hs view
@@ -0,0 +1,45 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags (PipelineMultisampleStateCreateFlags(..)) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkPipelineMultisampleStateCreateFlags - Reserved for future use+--+-- = Description+--+-- 'PipelineMultisampleStateCreateFlags' is a bitmask type for setting a+-- mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'+newtype PipelineMultisampleStateCreateFlags = PipelineMultisampleStateCreateFlags Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show PipelineMultisampleStateCreateFlags where+ showsPrec p = \case+ PipelineMultisampleStateCreateFlags x -> showParen (p >= 11) (showString "PipelineMultisampleStateCreateFlags 0x" . showHex x)++instance Read PipelineMultisampleStateCreateFlags where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "PipelineMultisampleStateCreateFlags")+ v <- step readPrec+ pure (PipelineMultisampleStateCreateFlags v)))+
+ src/Graphics/Vulkan/Core10/Enums/PipelineRasterizationStateCreateFlags.hs view
@@ -0,0 +1,45 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags (PipelineRasterizationStateCreateFlags(..)) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkPipelineRasterizationStateCreateFlags - Reserved for future use+--+-- = Description+--+-- 'PipelineRasterizationStateCreateFlags' is a bitmask type for setting a+-- mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'+newtype PipelineRasterizationStateCreateFlags = PipelineRasterizationStateCreateFlags Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show PipelineRasterizationStateCreateFlags where+ showsPrec p = \case+ PipelineRasterizationStateCreateFlags x -> showParen (p >= 11) (showString "PipelineRasterizationStateCreateFlags 0x" . showHex x)++instance Read PipelineRasterizationStateCreateFlags where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "PipelineRasterizationStateCreateFlags")+ v <- step readPrec+ pure (PipelineRasterizationStateCreateFlags v)))+
+ src/Graphics/Vulkan/Core10/Enums/PipelineShaderStageCreateFlagBits.hs view
@@ -0,0 +1,77 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits ( PipelineShaderStageCreateFlagBits( PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT+ , PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT+ , ..+ )+ , PipelineShaderStageCreateFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkPipelineShaderStageCreateFlagBits - Bitmask controlling how a pipeline+-- shader stage is created+--+-- = Description+--+-- Note+--+-- If 'PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT'+-- and 'PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT' are+-- specified and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroup-size minSubgroupSize>+-- does not equal+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroup-size maxSubgroupSize>+-- and no+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-required-subgroup-size required subgroup size>+-- is specified, then the only way to guarantee that the \'X\' dimension of+-- the local workgroup size is a multiple of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize>+-- is to make it a multiple of @maxSubgroupSize@. Under these conditions,+-- you are guaranteed full subgroups but not any particular subgroup size.+--+-- = See Also+--+-- 'PipelineShaderStageCreateFlags'+newtype PipelineShaderStageCreateFlagBits = PipelineShaderStageCreateFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT' specifies+-- that the subgroup sizes /must/ be launched with all invocations active+-- in the compute stage.+pattern PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = PipelineShaderStageCreateFlagBits 0x00000002+-- | 'PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT'+-- specifies that the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize>+-- /may/ vary in the shader stage.+pattern PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = PipelineShaderStageCreateFlagBits 0x00000001++type PipelineShaderStageCreateFlags = PipelineShaderStageCreateFlagBits++instance Show PipelineShaderStageCreateFlagBits where+ showsPrec p = \case+ PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT -> showString "PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT"+ PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT -> showString "PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT"+ PipelineShaderStageCreateFlagBits x -> showParen (p >= 11) (showString "PipelineShaderStageCreateFlagBits 0x" . showHex x)++instance Read PipelineShaderStageCreateFlagBits where+ readPrec = parens (choose [("PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT", pure PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT)+ , ("PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT", pure PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT)]+ ++++ prec 10 (do+ expectP (Ident "PipelineShaderStageCreateFlagBits")+ v <- step readPrec+ pure (PipelineShaderStageCreateFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/PipelineStageFlagBits.hs view
@@ -0,0 +1,295 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits ( PipelineStageFlagBits( PIPELINE_STAGE_TOP_OF_PIPE_BIT+ , PIPELINE_STAGE_DRAW_INDIRECT_BIT+ , PIPELINE_STAGE_VERTEX_INPUT_BIT+ , PIPELINE_STAGE_VERTEX_SHADER_BIT+ , PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT+ , PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT+ , PIPELINE_STAGE_GEOMETRY_SHADER_BIT+ , PIPELINE_STAGE_FRAGMENT_SHADER_BIT+ , PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT+ , PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT+ , PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT+ , PIPELINE_STAGE_COMPUTE_SHADER_BIT+ , PIPELINE_STAGE_TRANSFER_BIT+ , PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT+ , PIPELINE_STAGE_HOST_BIT+ , PIPELINE_STAGE_ALL_GRAPHICS_BIT+ , PIPELINE_STAGE_ALL_COMMANDS_BIT+ , PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT+ , PIPELINE_STAGE_MESH_SHADER_BIT_NV+ , PIPELINE_STAGE_TASK_SHADER_BIT_NV+ , PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV+ , PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV+ , PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV+ , PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX+ , PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT+ , PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT+ , ..+ )+ , PipelineStageFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkPipelineStageFlagBits - Bitmask specifying pipeline stages+--+-- = Description+--+-- Note+--+-- An execution dependency with only 'PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT' in+-- the destination stage mask will only prevent that stage from executing+-- in subsequently submitted commands. As this stage does not perform any+-- actual execution, this is not observable - in effect, it does not delay+-- processing of subsequent commands. Similarly an execution dependency+-- with only 'PIPELINE_STAGE_TOP_OF_PIPE_BIT' in the source stage mask will+-- effectively not wait for any prior commands to complete.+--+-- When defining a memory dependency, using only+-- 'PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT' or 'PIPELINE_STAGE_TOP_OF_PIPE_BIT'+-- would never make any accesses available and\/or visible because these+-- stages do not access memory.+--+-- 'PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT' and 'PIPELINE_STAGE_TOP_OF_PIPE_BIT'+-- are useful for accomplishing layout transitions and queue ownership+-- operations when the required execution dependency is satisfied by other+-- means - for example, semaphore operations between queues.+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.CheckpointDataNV',+-- 'PipelineStageFlags',+-- 'Graphics.Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp'+newtype PipelineStageFlagBits = PipelineStageFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'PIPELINE_STAGE_TOP_OF_PIPE_BIT' specifies the stage of the pipeline+-- where any commands are initially received by the queue.+pattern PIPELINE_STAGE_TOP_OF_PIPE_BIT = PipelineStageFlagBits 0x00000001+-- | 'PIPELINE_STAGE_DRAW_INDIRECT_BIT' specifies the stage of the pipeline+-- where Draw\/DispatchIndirect data structures are consumed. This stage+-- also includes reading commands written by+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.cmdProcessCommandsNVX'.+pattern PIPELINE_STAGE_DRAW_INDIRECT_BIT = PipelineStageFlagBits 0x00000002+-- | 'PIPELINE_STAGE_VERTEX_INPUT_BIT' specifies the stage of the pipeline+-- where vertex and index buffers are consumed.+pattern PIPELINE_STAGE_VERTEX_INPUT_BIT = PipelineStageFlagBits 0x00000004+-- | 'PIPELINE_STAGE_VERTEX_SHADER_BIT' specifies the vertex shader stage.+pattern PIPELINE_STAGE_VERTEX_SHADER_BIT = PipelineStageFlagBits 0x00000008+-- | 'PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT' specifies the+-- tessellation control shader stage.+pattern PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = PipelineStageFlagBits 0x00000010+-- | 'PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT' specifies the+-- tessellation evaluation shader stage.+pattern PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = PipelineStageFlagBits 0x00000020+-- | 'PIPELINE_STAGE_GEOMETRY_SHADER_BIT' specifies the geometry shader+-- stage.+pattern PIPELINE_STAGE_GEOMETRY_SHADER_BIT = PipelineStageFlagBits 0x00000040+-- | 'PIPELINE_STAGE_FRAGMENT_SHADER_BIT' specifies the fragment shader+-- stage.+pattern PIPELINE_STAGE_FRAGMENT_SHADER_BIT = PipelineStageFlagBits 0x00000080+-- | 'PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT' specifies the stage of the+-- pipeline where early fragment tests (depth and stencil tests before+-- fragment shading) are performed. This stage also includes+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load operations>+-- for framebuffer attachments with a depth\/stencil format.+pattern PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = PipelineStageFlagBits 0x00000100+-- | 'PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT' specifies the stage of the+-- pipeline where late fragment tests (depth and stencil tests after+-- fragment shading) are performed. This stage also includes+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass store operations>+-- for framebuffer attachments with a depth\/stencil format.+pattern PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = PipelineStageFlagBits 0x00000200+-- | 'PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT' specifies the stage of the+-- pipeline after blending where the final color values are output from the+-- pipeline. This stage also includes+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load and store operations>+-- and multisample resolve operations for framebuffer attachments with a+-- color or depth\/stencil format.+pattern PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = PipelineStageFlagBits 0x00000400+-- | 'PIPELINE_STAGE_COMPUTE_SHADER_BIT' specifies the execution of a compute+-- shader.+pattern PIPELINE_STAGE_COMPUTE_SHADER_BIT = PipelineStageFlagBits 0x00000800+-- | 'PIPELINE_STAGE_TRANSFER_BIT' specifies the following commands:+--+-- - All+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands>,+-- including+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults'+--+-- - 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBlitImage'+--+-- - 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdResolveImage'+--+-- - All+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears clear commands>,+-- with the exception of+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments'+pattern PIPELINE_STAGE_TRANSFER_BIT = PipelineStageFlagBits 0x00001000+-- | 'PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT' specifies the final stage in the+-- pipeline where operations generated by all commands complete execution.+pattern PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = PipelineStageFlagBits 0x00002000+-- | 'PIPELINE_STAGE_HOST_BIT' specifies a pseudo-stage indicating execution+-- on the host of reads\/writes of device memory. This stage is not invoked+-- by any commands recorded in a command buffer.+pattern PIPELINE_STAGE_HOST_BIT = PipelineStageFlagBits 0x00004000+-- | 'PIPELINE_STAGE_ALL_GRAPHICS_BIT' specifies the execution of all+-- graphics pipeline stages, and is equivalent to the logical OR of:+--+-- - 'PIPELINE_STAGE_TOP_OF_PIPE_BIT'+--+-- - 'PIPELINE_STAGE_DRAW_INDIRECT_BIT'+--+-- - 'PIPELINE_STAGE_TASK_SHADER_BIT_NV'+--+-- - 'PIPELINE_STAGE_MESH_SHADER_BIT_NV'+--+-- - 'PIPELINE_STAGE_VERTEX_INPUT_BIT'+--+-- - 'PIPELINE_STAGE_VERTEX_SHADER_BIT'+--+-- - 'PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'+--+-- - 'PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'+--+-- - 'PIPELINE_STAGE_GEOMETRY_SHADER_BIT'+--+-- - 'PIPELINE_STAGE_FRAGMENT_SHADER_BIT'+--+-- - 'PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT'+--+-- - 'PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'+--+-- - 'PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'+--+-- - 'PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT'+--+-- - 'PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'+--+-- - 'PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'+--+-- - 'PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'+--+-- - 'PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'+pattern PIPELINE_STAGE_ALL_GRAPHICS_BIT = PipelineStageFlagBits 0x00008000+-- | 'PIPELINE_STAGE_ALL_COMMANDS_BIT' is equivalent to the logical OR of+-- every other pipeline stage flag that is supported on the queue it is+-- used with.+pattern PIPELINE_STAGE_ALL_COMMANDS_BIT = PipelineStageFlagBits 0x00010000+-- | 'PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT' specifies the stage of+-- the pipeline where the fragment density map is read to+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops generate the fragment areas>.+pattern PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = PipelineStageFlagBits 0x00800000+-- | 'PIPELINE_STAGE_MESH_SHADER_BIT_NV' specifies the mesh shader stage.+pattern PIPELINE_STAGE_MESH_SHADER_BIT_NV = PipelineStageFlagBits 0x00100000+-- | 'PIPELINE_STAGE_TASK_SHADER_BIT_NV' specifies the task shader stage.+pattern PIPELINE_STAGE_TASK_SHADER_BIT_NV = PipelineStageFlagBits 0x00080000+-- | 'PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV' specifies the+-- execution of+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV',+-- and+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV'.+pattern PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = PipelineStageFlagBits 0x02000000+-- | 'PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV' specifies the execution of+-- the ray tracing shader stages.+pattern PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = PipelineStageFlagBits 0x00200000+-- | 'PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV' specifies the stage of the+-- pipeline where the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image>+-- is read to determine the shading rate for portions of a rasterized+-- primitive.+pattern PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = PipelineStageFlagBits 0x00400000+-- | 'PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX' specifies the stage of the+-- pipeline where device-side generation of commands via+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.cmdProcessCommandsNVX'+-- is handled.+pattern PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = PipelineStageFlagBits 0x00020000+-- | 'PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT' specifies the stage of+-- the pipeline where the predicate of conditional rendering is consumed.+pattern PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = PipelineStageFlagBits 0x00040000+-- | 'PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT' specifies the stage of the+-- pipeline where vertex attribute output values are written to the+-- transform feedback buffers.+pattern PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = PipelineStageFlagBits 0x01000000++type PipelineStageFlags = PipelineStageFlagBits++instance Show PipelineStageFlagBits where+ showsPrec p = \case+ PIPELINE_STAGE_TOP_OF_PIPE_BIT -> showString "PIPELINE_STAGE_TOP_OF_PIPE_BIT"+ PIPELINE_STAGE_DRAW_INDIRECT_BIT -> showString "PIPELINE_STAGE_DRAW_INDIRECT_BIT"+ PIPELINE_STAGE_VERTEX_INPUT_BIT -> showString "PIPELINE_STAGE_VERTEX_INPUT_BIT"+ PIPELINE_STAGE_VERTEX_SHADER_BIT -> showString "PIPELINE_STAGE_VERTEX_SHADER_BIT"+ PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT -> showString "PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"+ PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT -> showString "PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"+ PIPELINE_STAGE_GEOMETRY_SHADER_BIT -> showString "PIPELINE_STAGE_GEOMETRY_SHADER_BIT"+ PIPELINE_STAGE_FRAGMENT_SHADER_BIT -> showString "PIPELINE_STAGE_FRAGMENT_SHADER_BIT"+ PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT -> showString "PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"+ PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT -> showString "PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"+ PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT -> showString "PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"+ PIPELINE_STAGE_COMPUTE_SHADER_BIT -> showString "PIPELINE_STAGE_COMPUTE_SHADER_BIT"+ PIPELINE_STAGE_TRANSFER_BIT -> showString "PIPELINE_STAGE_TRANSFER_BIT"+ PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT -> showString "PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT"+ PIPELINE_STAGE_HOST_BIT -> showString "PIPELINE_STAGE_HOST_BIT"+ PIPELINE_STAGE_ALL_GRAPHICS_BIT -> showString "PIPELINE_STAGE_ALL_GRAPHICS_BIT"+ PIPELINE_STAGE_ALL_COMMANDS_BIT -> showString "PIPELINE_STAGE_ALL_COMMANDS_BIT"+ PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT -> showString "PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT"+ PIPELINE_STAGE_MESH_SHADER_BIT_NV -> showString "PIPELINE_STAGE_MESH_SHADER_BIT_NV"+ PIPELINE_STAGE_TASK_SHADER_BIT_NV -> showString "PIPELINE_STAGE_TASK_SHADER_BIT_NV"+ PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV -> showString "PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV"+ PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV -> showString "PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV"+ PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV -> showString "PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV"+ PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX -> showString "PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX"+ PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT -> showString "PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT"+ PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT -> showString "PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT"+ PipelineStageFlagBits x -> showParen (p >= 11) (showString "PipelineStageFlagBits 0x" . showHex x)++instance Read PipelineStageFlagBits where+ readPrec = parens (choose [("PIPELINE_STAGE_TOP_OF_PIPE_BIT", pure PIPELINE_STAGE_TOP_OF_PIPE_BIT)+ , ("PIPELINE_STAGE_DRAW_INDIRECT_BIT", pure PIPELINE_STAGE_DRAW_INDIRECT_BIT)+ , ("PIPELINE_STAGE_VERTEX_INPUT_BIT", pure PIPELINE_STAGE_VERTEX_INPUT_BIT)+ , ("PIPELINE_STAGE_VERTEX_SHADER_BIT", pure PIPELINE_STAGE_VERTEX_SHADER_BIT)+ , ("PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT", pure PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT)+ , ("PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT", pure PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT)+ , ("PIPELINE_STAGE_GEOMETRY_SHADER_BIT", pure PIPELINE_STAGE_GEOMETRY_SHADER_BIT)+ , ("PIPELINE_STAGE_FRAGMENT_SHADER_BIT", pure PIPELINE_STAGE_FRAGMENT_SHADER_BIT)+ , ("PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT", pure PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT)+ , ("PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT", pure PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT)+ , ("PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT", pure PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT)+ , ("PIPELINE_STAGE_COMPUTE_SHADER_BIT", pure PIPELINE_STAGE_COMPUTE_SHADER_BIT)+ , ("PIPELINE_STAGE_TRANSFER_BIT", pure PIPELINE_STAGE_TRANSFER_BIT)+ , ("PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT", pure PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT)+ , ("PIPELINE_STAGE_HOST_BIT", pure PIPELINE_STAGE_HOST_BIT)+ , ("PIPELINE_STAGE_ALL_GRAPHICS_BIT", pure PIPELINE_STAGE_ALL_GRAPHICS_BIT)+ , ("PIPELINE_STAGE_ALL_COMMANDS_BIT", pure PIPELINE_STAGE_ALL_COMMANDS_BIT)+ , ("PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT", pure PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT)+ , ("PIPELINE_STAGE_MESH_SHADER_BIT_NV", pure PIPELINE_STAGE_MESH_SHADER_BIT_NV)+ , ("PIPELINE_STAGE_TASK_SHADER_BIT_NV", pure PIPELINE_STAGE_TASK_SHADER_BIT_NV)+ , ("PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV", pure PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV)+ , ("PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV", pure PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV)+ , ("PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV", pure PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV)+ , ("PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX", pure PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX)+ , ("PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT", pure PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT)+ , ("PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT", pure PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT)]+ ++++ prec 10 (do+ expectP (Ident "PipelineStageFlagBits")+ v <- step readPrec+ pure (PipelineStageFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/PipelineStageFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits ( PipelineStageFlagBits+ , PipelineStageFlags+ ) where++++data PipelineStageFlagBits++type PipelineStageFlags = PipelineStageFlagBits+
+ src/Graphics/Vulkan/Core10/Enums/PipelineTessellationStateCreateFlags.hs view
@@ -0,0 +1,45 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags (PipelineTessellationStateCreateFlags(..)) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkPipelineTessellationStateCreateFlags - Reserved for future use+--+-- = Description+--+-- 'PipelineTessellationStateCreateFlags' is a bitmask type for setting a+-- mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo'+newtype PipelineTessellationStateCreateFlags = PipelineTessellationStateCreateFlags Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show PipelineTessellationStateCreateFlags where+ showsPrec p = \case+ PipelineTessellationStateCreateFlags x -> showParen (p >= 11) (showString "PipelineTessellationStateCreateFlags 0x" . showHex x)++instance Read PipelineTessellationStateCreateFlags where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "PipelineTessellationStateCreateFlags")+ v <- step readPrec+ pure (PipelineTessellationStateCreateFlags v)))+
+ src/Graphics/Vulkan/Core10/Enums/PipelineVertexInputStateCreateFlags.hs view
@@ -0,0 +1,45 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags (PipelineVertexInputStateCreateFlags(..)) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkPipelineVertexInputStateCreateFlags - Reserved for future use+--+-- = Description+--+-- 'PipelineVertexInputStateCreateFlags' is a bitmask type for setting a+-- mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo'+newtype PipelineVertexInputStateCreateFlags = PipelineVertexInputStateCreateFlags Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show PipelineVertexInputStateCreateFlags where+ showsPrec p = \case+ PipelineVertexInputStateCreateFlags x -> showParen (p >= 11) (showString "PipelineVertexInputStateCreateFlags 0x" . showHex x)++instance Read PipelineVertexInputStateCreateFlags where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "PipelineVertexInputStateCreateFlags")+ v <- step readPrec+ pure (PipelineVertexInputStateCreateFlags v)))+
+ src/Graphics/Vulkan/Core10/Enums/PipelineViewportStateCreateFlags.hs view
@@ -0,0 +1,45 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PipelineViewportStateCreateFlags (PipelineViewportStateCreateFlags(..)) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkPipelineViewportStateCreateFlags - Reserved for future use+--+-- = Description+--+-- 'PipelineViewportStateCreateFlags' is a bitmask type for setting a mask,+-- but is currently reserved for future use.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'+newtype PipelineViewportStateCreateFlags = PipelineViewportStateCreateFlags Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show PipelineViewportStateCreateFlags where+ showsPrec p = \case+ PipelineViewportStateCreateFlags x -> showParen (p >= 11) (showString "PipelineViewportStateCreateFlags 0x" . showHex x)++instance Read PipelineViewportStateCreateFlags where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "PipelineViewportStateCreateFlags")+ v <- step readPrec+ pure (PipelineViewportStateCreateFlags v)))+
+ src/Graphics/Vulkan/Core10/Enums/PolygonMode.hs view
@@ -0,0 +1,88 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PolygonMode (PolygonMode( POLYGON_MODE_FILL+ , POLYGON_MODE_LINE+ , POLYGON_MODE_POINT+ , POLYGON_MODE_FILL_RECTANGLE_NV+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkPolygonMode - Control polygon rasterization mode+--+-- = Description+--+-- These modes affect only the final rasterization of polygons: in+-- particular, a polygon’s vertices are shaded and the polygon is clipped+-- and possibly culled before these modes are applied.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'+newtype PolygonMode = PolygonMode Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'POLYGON_MODE_FILL' specifies that polygons are rendered using the+-- polygon rasterization rules in this section.+pattern POLYGON_MODE_FILL = PolygonMode 0+-- | 'POLYGON_MODE_LINE' specifies that polygon edges are drawn as line+-- segments.+pattern POLYGON_MODE_LINE = PolygonMode 1+-- | 'POLYGON_MODE_POINT' specifies that polygon vertices are drawn as+-- points.+pattern POLYGON_MODE_POINT = PolygonMode 2+-- | 'POLYGON_MODE_FILL_RECTANGLE_NV' specifies that polygons are rendered+-- using polygon rasterization rules, modified to consider a sample within+-- the primitive if the sample location is inside the axis-aligned bounding+-- box of the triangle after projection. Note that the barycentric weights+-- used in attribute interpolation /can/ extend outside the range [0,1]+-- when these primitives are shaded. Special treatment is given to a sample+-- position on the boundary edge of the bounding box. In such a case, if+-- two rectangles lie on either side of a common edge (with identical+-- endpoints) on which a sample position lies, then exactly one of the+-- triangles /must/ produce a fragment that covers that sample during+-- rasterization.+--+-- Polygons rendered in 'POLYGON_MODE_FILL_RECTANGLE_NV' mode /may/ be+-- clipped by the frustum or by user clip planes. If clipping is applied,+-- the triangle is culled rather than clipped.+--+-- Area calculation and facingness are determined for+-- 'POLYGON_MODE_FILL_RECTANGLE_NV' mode using the triangle’s vertices.+pattern POLYGON_MODE_FILL_RECTANGLE_NV = PolygonMode 1000153000+{-# complete POLYGON_MODE_FILL,+ POLYGON_MODE_LINE,+ POLYGON_MODE_POINT,+ POLYGON_MODE_FILL_RECTANGLE_NV :: PolygonMode #-}++instance Show PolygonMode where+ showsPrec p = \case+ POLYGON_MODE_FILL -> showString "POLYGON_MODE_FILL"+ POLYGON_MODE_LINE -> showString "POLYGON_MODE_LINE"+ POLYGON_MODE_POINT -> showString "POLYGON_MODE_POINT"+ POLYGON_MODE_FILL_RECTANGLE_NV -> showString "POLYGON_MODE_FILL_RECTANGLE_NV"+ PolygonMode x -> showParen (p >= 11) (showString "PolygonMode " . showsPrec 11 x)++instance Read PolygonMode where+ readPrec = parens (choose [("POLYGON_MODE_FILL", pure POLYGON_MODE_FILL)+ , ("POLYGON_MODE_LINE", pure POLYGON_MODE_LINE)+ , ("POLYGON_MODE_POINT", pure POLYGON_MODE_POINT)+ , ("POLYGON_MODE_FILL_RECTANGLE_NV", pure POLYGON_MODE_FILL_RECTANGLE_NV)]+ ++++ prec 10 (do+ expectP (Ident "PolygonMode")+ v <- step readPrec+ pure (PolygonMode v)))+
+ src/Graphics/Vulkan/Core10/Enums/PrimitiveTopology.hs view
@@ -0,0 +1,152 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.PrimitiveTopology (PrimitiveTopology( PRIMITIVE_TOPOLOGY_POINT_LIST+ , PRIMITIVE_TOPOLOGY_LINE_LIST+ , PRIMITIVE_TOPOLOGY_LINE_STRIP+ , PRIMITIVE_TOPOLOGY_TRIANGLE_LIST+ , PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP+ , PRIMITIVE_TOPOLOGY_TRIANGLE_FAN+ , PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY+ , PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY+ , PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY+ , PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY+ , PRIMITIVE_TOPOLOGY_PATCH_LIST+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkPrimitiveTopology - Supported primitive topologies+--+-- = Description+--+-- Each primitive topology, and its construction from a list of vertices,+-- is described in detail below with a supporting diagram, according to the+-- following key:+--+-- +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------++-- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iOC45ODE3ODY3IgogICBoZWlnaHQ9IjguOTgxNzg2NyIKICAgdmlld0JveD0iMCAwIDguOTgxNzg2OCA4Ljk4MTc4NyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV92ZXJ0ZXguc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzODY0NyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi44Mjg0MjcxIgogICAgIGlua3NjYXBlOmN4PSIxMDAuMjYxNiIKICAgICBpbmtzY2FwZTpjeT0iLTEwNC40NTE0NyIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0icHgiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIHNob3dncmlkPSJ0cnVlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTkyMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxMDAxIgogICAgIGlua3NjYXBlOndpbmRvdy14PSItOSIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iLTkiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMSIKICAgICBmaXQtbWFyZ2luLXRvcD0iMSIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjEiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMSIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMSIKICAgICBpbmtzY2FwZTpzbmFwLWdyaWRzPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtdGV4dC1iYXNlbGluZT0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLW9iamVjdC1taWRwb2ludHM9InRydWUiCiAgICAgdW5pdHM9InB4IgogICAgIGJvcmRlcmxheWVyPSJmYWxzZSI+CiAgICA8aW5rc2NhcGU6Z3JpZAogICAgICAgdHlwZT0ieHlncmlkIgogICAgICAgaWQ9ImdyaWQ5NjI2IgogICAgICAgb3JpZ2lueD0iLTkwLjUwOTExIgogICAgICAgb3JpZ2lueT0iLTY0NS41MDkyMiIgLz4KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NjUwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZSAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTAzLjA0MzUsMjMyLjUyNikiPgogICAgPGZsb3dSb290CiAgICAgICB4bWw6c3BhY2U9InByZXNlcnZlIgogICAgICAgaWQ9ImZsb3dSb290NDcwMSIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zaXplOjQwcHg7bGluZS1oZWlnaHQ6MS4yNTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuMzk2ODc1LDAsMCwwLjM5Njg3NSwzLjk0MzI5NTgsLTQ1LjY3NTc1KSI+PGZsb3dSZWdpb24KICAgICAgICAgaWQ9ImZsb3dSZWdpb240NzAzIj48cmVjdAogICAgICAgICAgIGlkPSJyZWN0NDcwNSIKICAgICAgICAgICB3aWR0aD0iMjQwIgogICAgICAgICAgIGhlaWdodD0iMTQwIgogICAgICAgICAgIHg9IjM2LjExNDQ5MSIKICAgICAgICAgICB5PSItOC4yOTk0Mzc1IiAvPjwvZmxvd1JlZ2lvbj48Zmxvd1BhcmEKICAgICAgICAgaWQ9ImZsb3dQYXJhNDcwNyIgLz48L2Zsb3dSb290PiAgICA8Y2lyY2xlCiAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICBpZD0icGF0aDQ1MTctMC04LTUtMi0zIgogICAgICAgY3g9IjEwNy41MzQzOSIKICAgICAgIGN5PSItMjI4LjAzNTExIgogICAgICAgcj0iMy40OTA4OTMxIiAvPgogIDwvZz4KPC9zdmc+Cg== primitive topology key vertex>> | Vertex | A point in 3-dimensional space. Positions chosen within the diagrams are arbitrary and for illustration only. |+-- +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------++-- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iOS41NzgxMjUiCiAgIGhlaWdodD0iMTMuODc1IgogICB2aWV3Qm94PSIwIDAgOS41NzgxMjUxIDEzLjg3NSIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV92ZXJ0ZXhfbnVtYmVyLnN2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczg2NDciIC8+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJiYXNlIgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnpvb209IjIuODI4NDI3MSIKICAgICBpbmtzY2FwZTpjeD0iNzguNTg2NDQiCiAgICAgaW5rc2NhcGU6Y3k9Ii02OS41NjgzODgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBzaG93Z3JpZD0idHJ1ZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTAwMSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iLTkiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgZml0LW1hcmdpbi10b3A9IjEiCiAgICAgZml0LW1hcmdpbi1sZWZ0PSIxIgogICAgIGZpdC1tYXJnaW4tcmlnaHQ9IjEiCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjEiCiAgICAgaW5rc2NhcGU6c25hcC1ncmlkcz0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLXRleHQtYmFzZWxpbmU9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC1vYmplY3QtbWlkcG9pbnRzPSJ0cnVlIgogICAgIHVuaXRzPSJweCIKICAgICBib3JkZXJsYXllcj0iZmFsc2UiPgogICAgPGlua3NjYXBlOmdyaWQKICAgICAgIHR5cGU9Inh5Z3JpZCIKICAgICAgIGlkPSJncmlkOTYyNiIKICAgICAgIG9yaWdpbng9Ii05MC4zNjcxOTEiCiAgICAgICBvcmlnaW55PSItNjE4Ljc1Nzg0IiAvPgogIDwvc29kaXBvZGk6bmFtZWR2aWV3PgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTg2NTAiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlPjwvZGM6dGl0bGU+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMDIuOTAxNTgsMjEwLjY2Nzg2KSI+CiAgICA8Zmxvd1Jvb3QKICAgICAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgICAgICBpZD0iZmxvd1Jvb3Q0NzAxIgogICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXNpemU6NDBweDtsaW5lLWhlaWdodDoxLjI1O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6MHB4O3dvcmQtc3BhY2luZzowcHg7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIgogICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC4zOTY4NzUsMCwwLDAuMzk2ODc1LDMuOTQzMjk1OCwtNDUuNjc1NzUpIj48Zmxvd1JlZ2lvbgogICAgICAgICBpZD0iZmxvd1JlZ2lvbjQ3MDMiPjxyZWN0CiAgICAgICAgICAgaWQ9InJlY3Q0NzA1IgogICAgICAgICAgIHdpZHRoPSIyNDAiCiAgICAgICAgICAgaGVpZ2h0PSIxNDAiCiAgICAgICAgICAgeD0iMzYuMTE0NDkxIgogICAgICAgICAgIHk9Ii04LjI5OTQzNzUiIC8+PC9mbG93UmVnaW9uPjxmbG93UGFyYQogICAgICAgICBpZD0iZmxvd1BhcmE0NzA3IiAvPjwvZmxvd1Jvb3Q+ICAgIDx0ZXh0CiAgICAgICB4bWw6c3BhY2U9InByZXNlcnZlIgogICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MS4yNTtmb250LWZhbWlseTpzYW5zLXNlcmlmOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J3NhbnMtc2VyaWYsIE5vcm1hbCc7Zm9udC12YXJpYW50LWxpZ2F0dXJlczpub3JtYWw7Zm9udC12YXJpYW50LWNhcHM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbDtmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO3RleHQtYWxpZ246Y2VudGVyO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O3dyaXRpbmctbW9kZTpsci10Yjt0ZXh0LWFuY2hvcjptaWRkbGU7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxLjE2NDI3Mzk4IgogICAgICAgeD0iMTA3LjUzNDM5IgogICAgICAgeT0iLTE5OC4wMzUwNSIKICAgICAgIGlkPSJ0ZXh0NTA3MC0yLTItOS05LTQxLTkiPjx0c3BhbgogICAgICAgICBzb2RpcG9kaTpyb2xlPSJsaW5lIgogICAgICAgICBpZD0idHNwYW41MDY4LTAtMy0zNi05LTEtNSIKICAgICAgICAgeD0iMTA3LjUzNDM5IgogICAgICAgICB5PSItMTk4LjAzNTA1IgogICAgICAgICBzdHlsZT0iZm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHJldGNoOm5vcm1hbDtmb250LXNpemU6MTZweDtmb250LWZhbWlseTpzYW5zLXNlcmlmOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J3NhbnMtc2VyaWYsIE5vcm1hbCc7Zm9udC12YXJpYW50LWxpZ2F0dXJlczpub3JtYWw7Zm9udC12YXJpYW50LWNhcHM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbDtmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO3RleHQtYWxpZ246Y2VudGVyO3dyaXRpbmctbW9kZTpsci10Yjt0ZXh0LWFuY2hvcjptaWRkbGU7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZS13aWR0aDoxLjE2NDI3Mzk4Ij41PC90c3Bhbj48L3RleHQ+CiAgPC9nPgo8L3N2Zz4K primitive topology key vertex number>> | Vertex | Sequence position of a vertex within the provided vertex data. |+-- | | Number | |+-- +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------++-- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iNTcuNDYxNTcxIgogICBoZWlnaHQ9IjguOTgxNzg2NyIKICAgdmlld0JveD0iMCAwIDU3LjQ2MTU3MSA4Ljk4MTc4NyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV92ZXJ0ZXguc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzODY0NyI+CiAgICA8bWFya2VyCiAgICAgICBpbmtzY2FwZTpzdG9ja2lkPSJBcnJvdzFNc3RhcnQiCiAgICAgICBvcmllbnQ9ImF1dG8iCiAgICAgICByZWZZPSIwIgogICAgICAgcmVmWD0iMCIKICAgICAgIGlkPSJtYXJrZXI2NzQ0LTgtMi0yIgogICAgICAgc3R5bGU9Im92ZXJmbG93OnZpc2libGUiCiAgICAgICBpbmtzY2FwZTppc3N0b2NrPSJ0cnVlIj4KICAgICAgPHBhdGgKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGg2NzQyLTktNjctNSIKICAgICAgICAgZD0iTSAwLDAgNSwtNSAtMTIuNSwwIDUsNSBaIgogICAgICAgICBzdHlsZT0iZmlsbDojZmIwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojZmIwMDAwO3N0cm9rZS13aWR0aDoxLjAwMDAwMDAzcHQ7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC40LDAsMCwwLjQsNCwwKSIgLz4KICAgIDwvbWFya2VyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi44Mjg0MjcxIgogICAgIGlua3NjYXBlOmN4PSI2NS40Njg2NDgiCiAgICAgaW5rc2NhcGU6Y3k9Ii01NS44NjU2MjgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBzaG93Z3JpZD0idHJ1ZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTAwMSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iLTkiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgZml0LW1hcmdpbi10b3A9IjEiCiAgICAgZml0LW1hcmdpbi1sZWZ0PSIxIgogICAgIGZpdC1tYXJnaW4tcmlnaHQ9IjEiCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjEiCiAgICAgaW5rc2NhcGU6c25hcC1ncmlkcz0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLXRleHQtYmFzZWxpbmU9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC1vYmplY3QtbWlkcG9pbnRzPSJ0cnVlIgogICAgIHVuaXRzPSJweCIKICAgICBib3JkZXJsYXllcj0iZmFsc2UiPgogICAgPGlua3NjYXBlOmdyaWQKICAgICAgIHR5cGU9Inh5Z3JpZCIKICAgICAgIGlkPSJncmlkOTYyNiIKICAgICAgIG9yaWdpbng9Ii05MC41MDkxMSIKICAgICAgIG9yaWdpbnk9Ii01OTUuNTA5MTYiIC8+CiAgPC9zb2RpcG9kaTpuYW1lZHZpZXc+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhODY1MCI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGU+PC9kYzp0aXRsZT4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEwMy4wNDM1LDE4Mi41MjU5NSkiPgogICAgPGZsb3dSb290CiAgICAgICB4bWw6c3BhY2U9InByZXNlcnZlIgogICAgICAgaWQ9ImZsb3dSb290NDcwMSIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zaXplOjQwcHg7bGluZS1oZWlnaHQ6MS4yNTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuMzk2ODc1LDAsMCwwLjM5Njg3NSwzLjk0MzI5NTgsLTQ1LjY3NTc1KSI+PGZsb3dSZWdpb24KICAgICAgICAgaWQ9ImZsb3dSZWdpb240NzAzIj48cmVjdAogICAgICAgICAgIGlkPSJyZWN0NDcwNSIKICAgICAgICAgICB3aWR0aD0iMjQwIgogICAgICAgICAgIGhlaWdodD0iMTQwIgogICAgICAgICAgIHg9IjM2LjExNDQ5MSIKICAgICAgICAgICB5PSItOC4yOTk0Mzc1IiAvPjwvZmxvd1JlZ2lvbj48Zmxvd1BhcmEKICAgICAgICAgaWQ9ImZsb3dQYXJhNDcwNyIgLz48L2Zsb3dSb290PiAgICA8ZwogICAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEzMCwzNS4wMDAwNTcpIgogICAgICAgaWQ9ImcxMTkxMy0wIj4KICAgICAgPHBhdGgKICAgICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjYyIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxODcyLTItMy0xLTEtNSIKICAgICAgICAgZD0ibSAyODcuNTM0MzksLTIxMy4wMzUxMSBoIC01MCIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I2ZiMDAwMDtzdHJva2Utd2lkdGg6MXB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjE7bWFya2VyLXN0YXJ0OnVybCgjbWFya2VyNjc0NC04LTItMikiIC8+CiAgICAgIDxjaXJjbGUKICAgICAgICAgcj0iMy40OTA4OTMxIgogICAgICAgICBjeT0iLTIxMy4wMzUxMSIKICAgICAgICAgY3g9IjIzNy41MzQzOSIKICAgICAgICAgaWQ9InBhdGg0NTE3LTAtOC01LTkxLTAtMy04IgogICAgICAgICBzdHlsZT0iZmlsbDojZmYwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoxO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K primitive topology key provoking vertex>> | Provoking | Provoking vertex within the main primitive. The arrow points along an edge of the relevant primitive, following winding order. |+-- | | Vertex | Used in |+-- | | | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-flatshading flat shading>. |+-- +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------++-- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iODIiCiAgIGhlaWdodD0iMyIKICAgdmlld0JveD0iMCAwIDgyLjAwMDAwMSAzLjAwMDAwMDEiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2Zzg2NTMiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTIuNCAoNWRhNjg5YzMxMywgMjAxOS0wMS0xNCkiCiAgIHNvZGlwb2RpOmRvY25hbWU9InByaW1pdGl2ZV90b3BvbG9neV9rZXlfZWRnZS5zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnM4NjQ3IiAvPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0iYmFzZSIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp6b29tPSIyLjgyODQyNzEiCiAgICAgaW5rc2NhcGU6Y3g9Ii05My41NTQwOTgiCiAgICAgaW5rc2NhcGU6Y3k9Ii03NS4yNjg5MjYiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBzaG93Z3JpZD0idHJ1ZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTAwMSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iLTkiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgZml0LW1hcmdpbi10b3A9IjEiCiAgICAgZml0LW1hcmdpbi1sZWZ0PSIxIgogICAgIGZpdC1tYXJnaW4tcmlnaHQ9IjEiCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjEiCiAgICAgaW5rc2NhcGU6c25hcC1ncmlkcz0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLXRleHQtYmFzZWxpbmU9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC1vYmplY3QtbWlkcG9pbnRzPSJ0cnVlIgogICAgIHVuaXRzPSJweCIKICAgICBib3JkZXJsYXllcj0iZmFsc2UiPgogICAgPGlua3NjYXBlOmdyaWQKICAgICAgIHR5cGU9Inh5Z3JpZCIKICAgICAgIGlkPSJncmlkOTYyNiIKICAgICAgIG9yaWdpbng9Ii0zMDkiCiAgICAgICBvcmlnaW55PSItNjQ4LjUwMDAzIiAvPgogIDwvc29kaXBvZGk6bmFtZWR2aWV3PgogIDxtZXRhZGF0YQogICAgIGlkPSJtZXRhZGF0YTg2NTAiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlIC8+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zMjEuNTM0MzksMjI5LjUzNTAzKSI+CiAgICA8Zmxvd1Jvb3QKICAgICAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgICAgICBpZD0iZmxvd1Jvb3Q0NzAxIgogICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXNpemU6NDBweDtsaW5lLWhlaWdodDoxLjI1O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6MHB4O3dvcmQtc3BhY2luZzowcHg7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIgogICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC4zOTY4NzUsMCwwLDAuMzk2ODc1LDMuOTQzMjk1OCwtNDUuNjc1NzUpIj48Zmxvd1JlZ2lvbgogICAgICAgICBpZD0iZmxvd1JlZ2lvbjQ3MDMiPjxyZWN0CiAgICAgICAgICAgaWQ9InJlY3Q0NzA1IgogICAgICAgICAgIHdpZHRoPSIyNDAiCiAgICAgICAgICAgaGVpZ2h0PSIxNDAiCiAgICAgICAgICAgeD0iMzYuMTE0NDkxIgogICAgICAgICAgIHk9Ii04LjI5OTQzNzUiIC8+PC9mbG93UmVnaW9uPjxmbG93UGFyYQogICAgICAgICBpZD0iZmxvd1BhcmE0NzA3IiAvPjwvZmxvd1Jvb3Q+ICAgIDxwYXRoCiAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgIGQ9Im0gMzIyLjUzNDM5LC0yMjguMDM1MDMgaCA4MCIKICAgICAgIGlkPSJwYXRoMjAzMy0xIgogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICA8L2c+Cjwvc3ZnPgo= primitive topology key edge>> | Primitive | An edge connecting the points of a main primitive. |+-- | | Edge | |+-- +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------++-- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iODIiCiAgIGhlaWdodD0iMyIKICAgdmlld0JveD0iMCAwIDgyLjAwMDAwMSAzLjAwMDAwMDEiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2Zzg2NTMiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTIuNCAoNWRhNjg5YzMxMywgMjAxOS0wMS0xNCkiCiAgIHNvZGlwb2RpOmRvY25hbWU9InByaW1pdGl2ZV90b3BvbG9neV9rZXlfYWRqYWNlbmN5X2VkZ2Uuc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzODY0NyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi44Mjg0MjcxIgogICAgIGlua3NjYXBlOmN4PSItNDcuNTkyMTU3IgogICAgIGlua3NjYXBlOmN5PSItNzAuNzc1MDIzIgogICAgIGlua3NjYXBlOmRvY3VtZW50LXVuaXRzPSJweCIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJsYXllcjEiCiAgICAgc2hvd2dyaWQ9InRydWUiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMDEiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy15PSItOSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIgogICAgIGZpdC1tYXJnaW4tdG9wPSIxIgogICAgIGZpdC1tYXJnaW4tbGVmdD0iMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIxIgogICAgIGZpdC1tYXJnaW4tYm90dG9tPSIxIgogICAgIGlua3NjYXBlOnNuYXAtZ3JpZHM9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC10ZXh0LWJhc2VsaW5lPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtb2JqZWN0LW1pZHBvaW50cz0idHJ1ZSIKICAgICB1bml0cz0icHgiCiAgICAgYm9yZGVybGF5ZXI9ImZhbHNlIj4KICAgIDxpbmtzY2FwZTpncmlkCiAgICAgICB0eXBlPSJ4eWdyaWQiCiAgICAgICBpZD0iZ3JpZDk2MjYiCiAgICAgICBvcmlnaW54PSItMzA5IgogICAgICAgb3JpZ2lueT0iLTYyMy41MDAwMyIgLz4KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NjUwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZSAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzIxLjUzNDM5LDIwNC41MzUwMykiPgogICAgPGZsb3dSb290CiAgICAgICB4bWw6c3BhY2U9InByZXNlcnZlIgogICAgICAgaWQ9ImZsb3dSb290NDcwMSIKICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zaXplOjQwcHg7bGluZS1oZWlnaHQ6MS4yNTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O2ZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuMzk2ODc1LDAsMCwwLjM5Njg3NSwzLjk0MzI5NTgsLTQ1LjY3NTc1KSI+PGZsb3dSZWdpb24KICAgICAgICAgaWQ9ImZsb3dSZWdpb240NzAzIj48cmVjdAogICAgICAgICAgIGlkPSJyZWN0NDcwNSIKICAgICAgICAgICB3aWR0aD0iMjQwIgogICAgICAgICAgIGhlaWdodD0iMTQwIgogICAgICAgICAgIHg9IjM2LjExNDQ5MSIKICAgICAgICAgICB5PSItOC4yOTk0Mzc1IiAvPjwvZmxvd1JlZ2lvbj48Zmxvd1BhcmEKICAgICAgICAgaWQ9ImZsb3dQYXJhNDcwNyIgLz48L2Zsb3dSb290PiAgICA8cGF0aAogICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6NCwgNDtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICBkPSJtIDMyMi41MzQzOSwtMjAzLjAzNTAzIGggODAiCiAgICAgICBpZD0icGF0aDIwMzMiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogIDwvZz4KPC9zdmc+Cg== primitive topology key adjacency edge>> | Adjacency | Points connected by these lines do not contribute to a main primitive, and are only accessible in a |+-- | | Edge | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry geometry shader>. |+-- +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------++-- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iNTUuMDYzODE2IgogICBoZWlnaHQ9IjQ2LjE3ODgyOSIKICAgdmlld0JveD0iMCAwIDU1LjA2MzgxNyA0Ni4xNzg4MyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV93aW5kaW5nX29yZGVyLnN2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczg2NDciPgogICAgPG1hcmtlcgogICAgICAgaW5rc2NhcGU6aXNzdG9jaz0idHJ1ZSIKICAgICAgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlIgogICAgICAgaWQ9Im1hcmtlcjMwMzktMSIKICAgICAgIHJlZlg9IjAiCiAgICAgICByZWZZPSIwIgogICAgICAgb3JpZW50PSJhdXRvIgogICAgICAgaW5rc2NhcGU6c3RvY2tpZD0iQXJyb3cxTWVuZCI+CiAgICAgIDxwYXRoCiAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KC0wLjQsMCwwLC0wLjQsLTQsMCkiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuMDAwMDAwMDNwdDtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJNIDAsMCA1LC01IC0xMi41LDAgNSw1IFoiCiAgICAgICAgIGlkPSJwYXRoMzAzNy0wIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgPC9tYXJrZXI+CiAgICA8bWFya2VyCiAgICAgICBpbmtzY2FwZTppc3N0b2NrPSJ0cnVlIgogICAgICAgc3R5bGU9Im92ZXJmbG93OnZpc2libGUiCiAgICAgICBpZD0ibWFya2VyMjg5MS02IgogICAgICAgcmVmWD0iMCIKICAgICAgIHJlZlk9IjAiCiAgICAgICBvcmllbnQ9ImF1dG8iCiAgICAgICBpbmtzY2FwZTpzdG9ja2lkPSJBcnJvdzFNZW5kIj4KICAgICAgPHBhdGgKICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoLTAuNCwwLDAsLTAuNCwtNCwwKSIKICAgICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS4wMDAwMDAwM3B0O3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Ik0gMCwwIDUsLTUgLTEyLjUsMCA1LDUgWiIKICAgICAgICAgaWQ9InBhdGgyODg5LTYiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICA8L21hcmtlcj4KICAgIDxtYXJrZXIKICAgICAgIGlua3NjYXBlOnN0b2NraWQ9IkFycm93MU1lbmQiCiAgICAgICBvcmllbnQ9ImF1dG8iCiAgICAgICByZWZZPSIwIgogICAgICAgcmVmWD0iMCIKICAgICAgIGlkPSJBcnJvdzFNZW5kLTgwIgogICAgICAgc3R5bGU9Im92ZXJmbG93OnZpc2libGUiCiAgICAgICBpbmtzY2FwZTppc3N0b2NrPSJ0cnVlIgogICAgICAgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIj4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGg4OTAtMCIKICAgICAgICAgZD0iTSAwLDAgNSwtNSAtMTIuNSwwIDUsNSBaIgogICAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjAwMDAwMDAzcHQ7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoLTAuNCwwLDAsLTAuNCwtNCwwKSIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICAgIDwvbWFya2VyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi44Mjg0MjcxIgogICAgIGlua3NjYXBlOmN4PSItMTQwLjU1MDU2IgogICAgIGlua3NjYXBlOmN5PSItOC40MzI2NjQ2IgogICAgIGlua3NjYXBlOmRvY3VtZW50LXVuaXRzPSJweCIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJsYXllcjEiCiAgICAgc2hvd2dyaWQ9InRydWUiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMDEiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy15PSItOSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIgogICAgIGZpdC1tYXJnaW4tdG9wPSIxIgogICAgIGZpdC1tYXJnaW4tbGVmdD0iMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIxIgogICAgIGZpdC1tYXJnaW4tYm90dG9tPSIxIgogICAgIGlua3NjYXBlOnNuYXAtZ3JpZHM9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC10ZXh0LWJhc2VsaW5lPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtb2JqZWN0LW1pZHBvaW50cz0idHJ1ZSIKICAgICB1bml0cz0icHgiCiAgICAgYm9yZGVybGF5ZXI9ImZhbHNlIj4KICAgIDxpbmtzY2FwZTpncmlkCiAgICAgICB0eXBlPSJ4eWdyaWQiCiAgICAgICBpZD0iZ3JpZDk2MjYiCiAgICAgICBvcmlnaW54PSItMzA3LjAyOTMzIgogICAgICAgb3JpZ2lueT0iLTU2Ni40NjA5NyIgLz4KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NjUwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZT48L2RjOnRpdGxlPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzE5LjU2MzcxLDE5MC42NzQ4KSI+CiAgICA8Zmxvd1Jvb3QKICAgICAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgICAgICBpZD0iZmxvd1Jvb3Q0NzAxIgogICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXNpemU6NDBweDtsaW5lLWhlaWdodDoxLjI1O2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6MHB4O3dvcmQtc3BhY2luZzowcHg7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIgogICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC4zOTY4NzUsMCwwLDAuMzk2ODc1LDMuOTQzMjk1OCwtNDUuNjc1NzUpIj48Zmxvd1JlZ2lvbgogICAgICAgICBpZD0iZmxvd1JlZ2lvbjQ3MDMiPjxyZWN0CiAgICAgICAgICAgaWQ9InJlY3Q0NzA1IgogICAgICAgICAgIHdpZHRoPSIyNDAiCiAgICAgICAgICAgaGVpZ2h0PSIxNDAiCiAgICAgICAgICAgeD0iMzYuMTE0NDkxIgogICAgICAgICAgIHk9Ii04LjI5OTQzNzUiIC8+PC9mbG93UmVnaW9uPjxmbG93UGFyYQogICAgICAgICBpZD0iZmxvd1BhcmE0NzA3IiAvPjwvZmxvd1Jvb3Q+ICAgIDxnCiAgICAgICBpZD0iZzQzODktODkiCiAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNTUsLTQ0Ljk5OTk5NSkiPgogICAgICA8cGF0aAogICAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDE4NjgtNzkiCiAgICAgICAgIGQ9Im0gNjcuNTM0MzkzLC0xMTMuMDM1MSAyMCwtMzAiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjFweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxO21hcmtlci1lbmQ6dXJsKCNtYXJrZXIzMDM5LTEpIiAvPgogICAgICA8cGF0aAogICAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDE4NzAtMyIKICAgICAgICAgZD0ibSA5Ny41MzQzOTMsLTE0My4wMzUxIDE5Ljk5OTk5NywzMCIKICAgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MXB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjE7bWFya2VyLWVuZDp1cmwoI21hcmtlcjI4OTEtNikiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIHNvZGlwb2RpOm5vZGV0eXBlcz0iY2MiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgIGlkPSJwYXRoMTg3Mi05IgogICAgICAgICBkPSJNIDExNy41MzQzOSwtMTAzLjAzNTEgSCA2Ny41MzQzOTMiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjFweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxO21hcmtlci1lbmQ6dXJsKCNBcnJvdzFNZW5kLTgwKSIgLz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo= primitive topology key winding order>> | Winding | The relative order in which vertices are defined within a primitive, used in the |+-- | | Order | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-polygons-basic facing determination>. |+-- | | | This ordering has no specific start or end point. |+-- +-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------++--+-- The diagrams are supported with mathematical definitions where the+-- vertices (v) and primitives (p) are numbered starting from 0; v0 is the+-- first vertex in the provided data and p0 is the first primitive in the+-- set of primitives defined by the vertices and topology.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'+newtype PrimitiveTopology = PrimitiveTopology Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'PRIMITIVE_TOPOLOGY_POINT_LIST' specifies a series of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-point-lists separate point primitives>.+pattern PRIMITIVE_TOPOLOGY_POINT_LIST = PrimitiveTopology 0+-- | 'PRIMITIVE_TOPOLOGY_LINE_LIST' specifies a series of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-line-lists separate line primitives>.+pattern PRIMITIVE_TOPOLOGY_LINE_LIST = PrimitiveTopology 1+-- | 'PRIMITIVE_TOPOLOGY_LINE_STRIP' specifies a series of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-line-strips connected line primitives>+-- with consecutive lines sharing a vertex.+pattern PRIMITIVE_TOPOLOGY_LINE_STRIP = PrimitiveTopology 2+-- | 'PRIMITIVE_TOPOLOGY_TRIANGLE_LIST' specifies a series of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-lists separate triangle primitives>.+pattern PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = PrimitiveTopology 3+-- | 'PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP' specifies a series of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-strips connected triangle primitives>+-- with consecutive triangles sharing an edge.+pattern PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = PrimitiveTopology 4+-- | 'PRIMITIVE_TOPOLOGY_TRIANGLE_FAN' specifies a series of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-fans connected triangle primitives>+-- with all triangles sharing a common vertex.+pattern PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = PrimitiveTopology 5+-- | 'PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY' specifies a series of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-line-lists-with-adjacency separate line primitives with adjacency>.+pattern PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = PrimitiveTopology 6+-- | 'PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY' specifies a series of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-line-strips-with-adjacency connected line primitives with adjacency>,+-- with consecutive primitives sharing three vertices.+pattern PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = PrimitiveTopology 7+-- | 'PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY' specifies a series of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-lists-with-adjacency separate triangle primitives with adjacency>.+pattern PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = PrimitiveTopology 8+-- | 'PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY' specifies+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-strips-with-adjacency connected triangle primitives with adjacency>,+-- with consecutive triangles sharing an edge.+pattern PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = PrimitiveTopology 9+-- | 'PRIMITIVE_TOPOLOGY_PATCH_LIST' specifies+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-patch-lists separate patch primitives>.+pattern PRIMITIVE_TOPOLOGY_PATCH_LIST = PrimitiveTopology 10+{-# complete PRIMITIVE_TOPOLOGY_POINT_LIST,+ PRIMITIVE_TOPOLOGY_LINE_LIST,+ PRIMITIVE_TOPOLOGY_LINE_STRIP,+ PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,+ PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,+ PRIMITIVE_TOPOLOGY_TRIANGLE_FAN,+ PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,+ PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY,+ PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,+ PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY,+ PRIMITIVE_TOPOLOGY_PATCH_LIST :: PrimitiveTopology #-}++instance Show PrimitiveTopology where+ showsPrec p = \case+ PRIMITIVE_TOPOLOGY_POINT_LIST -> showString "PRIMITIVE_TOPOLOGY_POINT_LIST"+ PRIMITIVE_TOPOLOGY_LINE_LIST -> showString "PRIMITIVE_TOPOLOGY_LINE_LIST"+ PRIMITIVE_TOPOLOGY_LINE_STRIP -> showString "PRIMITIVE_TOPOLOGY_LINE_STRIP"+ PRIMITIVE_TOPOLOGY_TRIANGLE_LIST -> showString "PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"+ PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP -> showString "PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"+ PRIMITIVE_TOPOLOGY_TRIANGLE_FAN -> showString "PRIMITIVE_TOPOLOGY_TRIANGLE_FAN"+ PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY -> showString "PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY"+ PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY -> showString "PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY"+ PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY -> showString "PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY"+ PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY -> showString "PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY"+ PRIMITIVE_TOPOLOGY_PATCH_LIST -> showString "PRIMITIVE_TOPOLOGY_PATCH_LIST"+ PrimitiveTopology x -> showParen (p >= 11) (showString "PrimitiveTopology " . showsPrec 11 x)++instance Read PrimitiveTopology where+ readPrec = parens (choose [("PRIMITIVE_TOPOLOGY_POINT_LIST", pure PRIMITIVE_TOPOLOGY_POINT_LIST)+ , ("PRIMITIVE_TOPOLOGY_LINE_LIST", pure PRIMITIVE_TOPOLOGY_LINE_LIST)+ , ("PRIMITIVE_TOPOLOGY_LINE_STRIP", pure PRIMITIVE_TOPOLOGY_LINE_STRIP)+ , ("PRIMITIVE_TOPOLOGY_TRIANGLE_LIST", pure PRIMITIVE_TOPOLOGY_TRIANGLE_LIST)+ , ("PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP", pure PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP)+ , ("PRIMITIVE_TOPOLOGY_TRIANGLE_FAN", pure PRIMITIVE_TOPOLOGY_TRIANGLE_FAN)+ , ("PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY", pure PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY)+ , ("PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY", pure PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY)+ , ("PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY", pure PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY)+ , ("PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY", pure PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY)+ , ("PRIMITIVE_TOPOLOGY_PATCH_LIST", pure PRIMITIVE_TOPOLOGY_PATCH_LIST)]+ ++++ prec 10 (do+ expectP (Ident "PrimitiveTopology")+ v <- step readPrec+ pure (PrimitiveTopology v)))+
+ src/Graphics/Vulkan/Core10/Enums/QueryControlFlagBits.hs view
@@ -0,0 +1,49 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.QueryControlFlagBits ( QueryControlFlagBits( QUERY_CONTROL_PRECISE_BIT+ , ..+ )+ , QueryControlFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkQueryControlFlagBits - Bitmask specifying constraints on a query+--+-- = See Also+--+-- 'QueryControlFlags'+newtype QueryControlFlagBits = QueryControlFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'QUERY_CONTROL_PRECISE_BIT' specifies the precision of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-occlusion occlusion queries>.+pattern QUERY_CONTROL_PRECISE_BIT = QueryControlFlagBits 0x00000001++type QueryControlFlags = QueryControlFlagBits++instance Show QueryControlFlagBits where+ showsPrec p = \case+ QUERY_CONTROL_PRECISE_BIT -> showString "QUERY_CONTROL_PRECISE_BIT"+ QueryControlFlagBits x -> showParen (p >= 11) (showString "QueryControlFlagBits 0x" . showHex x)++instance Read QueryControlFlagBits where+ readPrec = parens (choose [("QUERY_CONTROL_PRECISE_BIT", pure QUERY_CONTROL_PRECISE_BIT)]+ ++++ prec 10 (do+ expectP (Ident "QueryControlFlagBits")+ v <- step readPrec+ pure (QueryControlFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/QueryControlFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.QueryControlFlagBits ( QueryControlFlagBits+ , QueryControlFlags+ ) where++++data QueryControlFlagBits++type QueryControlFlags = QueryControlFlagBits+
+ src/Graphics/Vulkan/Core10/Enums/QueryPipelineStatisticFlagBits.hs view
@@ -0,0 +1,190 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits ( QueryPipelineStatisticFlagBits( QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT+ , QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT+ , QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT+ , QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT+ , QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT+ , QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT+ , QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT+ , QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT+ , QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT+ , QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT+ , QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT+ , ..+ )+ , QueryPipelineStatisticFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkQueryPipelineStatisticFlagBits - Bitmask specifying queried pipeline+-- statistics+--+-- = Description+--+-- These values are intended to measure relative statistics on one+-- implementation. Various device architectures will count these values+-- differently. Any or all counters /may/ be affected by the issues+-- described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-undefined Query Operation>.+--+-- Note+--+-- For example, tile-based rendering devices /may/ need to replay the scene+-- multiple times, affecting some of the counts.+--+-- If a pipeline has @rasterizerDiscardEnable@ enabled, implementations+-- /may/ discard primitives after the final vertex processing stage. As a+-- result, if @rasterizerDiscardEnable@ is enabled, the clipping input and+-- output primitives counters /may/ not be incremented.+--+-- When a pipeline statistics query finishes, the result for that query is+-- marked as available. The application /can/ copy the result to a buffer+-- (via+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults'),+-- or request it be put into host memory (via+-- 'Graphics.Vulkan.Core10.Query.getQueryPoolResults').+--+-- = See Also+--+-- 'QueryPipelineStatisticFlags'+newtype QueryPipelineStatisticFlagBits = QueryPipelineStatisticFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT' specifies that+-- queries managed by the pool will count the number of vertices processed+-- by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing input assembly>+-- stage. Vertices corresponding to incomplete primitives /may/ contribute+-- to the count.+pattern QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = QueryPipelineStatisticFlagBits 0x00000001+-- | 'QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT' specifies that+-- queries managed by the pool will count the number of primitives+-- processed by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing input assembly>+-- stage. If primitive restart is enabled, restarting the primitive+-- topology has no effect on the count. Incomplete primitives /may/ be+-- counted.+pattern QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = QueryPipelineStatisticFlagBits 0x00000002+-- | 'QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT' specifies that+-- queries managed by the pool will count the number of vertex shader+-- invocations. This counter’s value is incremented each time a vertex+-- shader is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-vertex-execution invoked>.+pattern QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = QueryPipelineStatisticFlagBits 0x00000004+-- | 'QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT' specifies+-- that queries managed by the pool will count the number of geometry+-- shader invocations. This counter’s value is incremented each time a+-- geometry shader is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-geometry-execution invoked>.+-- In the case of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry-invocations instanced geometry shaders>,+-- the geometry shader invocations count is incremented for each separate+-- instanced invocation.+pattern QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = QueryPipelineStatisticFlagBits 0x00000008+-- | 'QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT' specifies that+-- queries managed by the pool will count the number of primitives+-- generated by geometry shader invocations. The counter’s value is+-- incremented each time the geometry shader emits a primitive. Restarting+-- primitive topology using the SPIR-V instructions @OpEndPrimitive@ or+-- @OpEndStreamPrimitive@ has no effect on the geometry shader output+-- primitives count.+pattern QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = QueryPipelineStatisticFlagBits 0x00000010+-- | 'QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT' specifies that+-- queries managed by the pool will count the number of primitives+-- processed by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>+-- stage of the pipeline. The counter’s value is incremented each time a+-- primitive reaches the primitive clipping stage.+pattern QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = QueryPipelineStatisticFlagBits 0x00000020+-- | 'QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT' specifies that+-- queries managed by the pool will count the number of primitives output+-- by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>+-- stage of the pipeline. The counter’s value is incremented each time a+-- primitive passes the primitive clipping stage. The actual number of+-- primitives output by the primitive clipping stage for a particular input+-- primitive is implementation-dependent but /must/ satisfy the following+-- conditions:+--+-- - If at least one vertex of the input primitive lies inside the+-- clipping volume, the counter is incremented by one or more.+--+-- - Otherwise, the counter is incremented by zero or more.+pattern QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = QueryPipelineStatisticFlagBits 0x00000040+-- | 'QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT' specifies+-- that queries managed by the pool will count the number of fragment+-- shader invocations. The counter’s value is incremented each time the+-- fragment shader is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-execution invoked>.+pattern QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = QueryPipelineStatisticFlagBits 0x00000080+-- | 'QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT'+-- specifies that queries managed by the pool will count the number of+-- patches processed by the tessellation control shader. The counter’s+-- value is incremented once for each patch for which a tessellation+-- control shader is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-tessellation-control-execution invoked>.+pattern QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = QueryPipelineStatisticFlagBits 0x00000100+-- | 'QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT'+-- specifies that queries managed by the pool will count the number of+-- invocations of the tessellation evaluation shader. The counter’s value+-- is incremented each time the tessellation evaluation shader is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-tessellation-evaluation-execution invoked>.+pattern QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = QueryPipelineStatisticFlagBits 0x00000200+-- | 'QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT' specifies that+-- queries managed by the pool will count the number of compute shader+-- invocations. The counter’s value is incremented every time the compute+-- shader is invoked. Implementations /may/ skip the execution of certain+-- compute shader invocations or execute additional compute shader+-- invocations for implementation-dependent reasons as long as the results+-- of rendering otherwise remain unchanged.+pattern QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = QueryPipelineStatisticFlagBits 0x00000400++type QueryPipelineStatisticFlags = QueryPipelineStatisticFlagBits++instance Show QueryPipelineStatisticFlagBits where+ showsPrec p = \case+ QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT -> showString "QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT"+ QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT -> showString "QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT"+ QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT -> showString "QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT"+ QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT -> showString "QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT"+ QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT -> showString "QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT"+ QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT -> showString "QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT"+ QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT -> showString "QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT"+ QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT -> showString "QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT"+ QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT -> showString "QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT"+ QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT -> showString "QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT"+ QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT -> showString "QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT"+ QueryPipelineStatisticFlagBits x -> showParen (p >= 11) (showString "QueryPipelineStatisticFlagBits 0x" . showHex x)++instance Read QueryPipelineStatisticFlagBits where+ readPrec = parens (choose [("QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT", pure QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT)+ , ("QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT", pure QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT)+ , ("QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT", pure QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT)+ , ("QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT", pure QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT)+ , ("QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT", pure QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT)+ , ("QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT", pure QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT)+ , ("QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT", pure QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT)+ , ("QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT", pure QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT)+ , ("QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT", pure QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT)+ , ("QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT", pure QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT)+ , ("QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT", pure QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT)]+ ++++ prec 10 (do+ expectP (Ident "QueryPipelineStatisticFlagBits")+ v <- step readPrec+ pure (QueryPipelineStatisticFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/QueryPoolCreateFlags.hs view
@@ -0,0 +1,45 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.QueryPoolCreateFlags (QueryPoolCreateFlags(..)) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkQueryPoolCreateFlags - Reserved for future use+--+-- = Description+--+-- 'QueryPoolCreateFlags' is a bitmask type for setting a mask, but is+-- currently reserved for future use.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Query.QueryPoolCreateInfo'+newtype QueryPoolCreateFlags = QueryPoolCreateFlags Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show QueryPoolCreateFlags where+ showsPrec p = \case+ QueryPoolCreateFlags x -> showParen (p >= 11) (showString "QueryPoolCreateFlags 0x" . showHex x)++instance Read QueryPoolCreateFlags where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "QueryPoolCreateFlags")+ v <- step readPrec+ pure (QueryPoolCreateFlags v)))+
+ src/Graphics/Vulkan/Core10/Enums/QueryResultFlagBits.hs view
@@ -0,0 +1,69 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.QueryResultFlagBits ( QueryResultFlagBits( QUERY_RESULT_64_BIT+ , QUERY_RESULT_WAIT_BIT+ , QUERY_RESULT_WITH_AVAILABILITY_BIT+ , QUERY_RESULT_PARTIAL_BIT+ , ..+ )+ , QueryResultFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkQueryResultFlagBits - Bitmask specifying how and when query results+-- are returned+--+-- = See Also+--+-- 'QueryResultFlags'+newtype QueryResultFlagBits = QueryResultFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'QUERY_RESULT_64_BIT' specifies the results will be written as an array+-- of 64-bit unsigned integer values. If this bit is not set, the results+-- will be written as an array of 32-bit unsigned integer values.+pattern QUERY_RESULT_64_BIT = QueryResultFlagBits 0x00000001+-- | 'QUERY_RESULT_WAIT_BIT' specifies that Vulkan will wait for each query’s+-- status to become available before retrieving its results.+pattern QUERY_RESULT_WAIT_BIT = QueryResultFlagBits 0x00000002+-- | 'QUERY_RESULT_WITH_AVAILABILITY_BIT' specifies that the availability+-- status accompanies the results.+pattern QUERY_RESULT_WITH_AVAILABILITY_BIT = QueryResultFlagBits 0x00000004+-- | 'QUERY_RESULT_PARTIAL_BIT' specifies that returning partial results is+-- acceptable.+pattern QUERY_RESULT_PARTIAL_BIT = QueryResultFlagBits 0x00000008++type QueryResultFlags = QueryResultFlagBits++instance Show QueryResultFlagBits where+ showsPrec p = \case+ QUERY_RESULT_64_BIT -> showString "QUERY_RESULT_64_BIT"+ QUERY_RESULT_WAIT_BIT -> showString "QUERY_RESULT_WAIT_BIT"+ QUERY_RESULT_WITH_AVAILABILITY_BIT -> showString "QUERY_RESULT_WITH_AVAILABILITY_BIT"+ QUERY_RESULT_PARTIAL_BIT -> showString "QUERY_RESULT_PARTIAL_BIT"+ QueryResultFlagBits x -> showParen (p >= 11) (showString "QueryResultFlagBits 0x" . showHex x)++instance Read QueryResultFlagBits where+ readPrec = parens (choose [("QUERY_RESULT_64_BIT", pure QUERY_RESULT_64_BIT)+ , ("QUERY_RESULT_WAIT_BIT", pure QUERY_RESULT_WAIT_BIT)+ , ("QUERY_RESULT_WITH_AVAILABILITY_BIT", pure QUERY_RESULT_WITH_AVAILABILITY_BIT)+ , ("QUERY_RESULT_PARTIAL_BIT", pure QUERY_RESULT_PARTIAL_BIT)]+ ++++ prec 10 (do+ expectP (Ident "QueryResultFlagBits")+ v <- step readPrec+ pure (QueryResultFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/QueryResultFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.QueryResultFlagBits ( QueryResultFlagBits+ , QueryResultFlags+ ) where++++data QueryResultFlagBits++type QueryResultFlags = QueryResultFlagBits+
+ src/Graphics/Vulkan/Core10/Enums/QueryType.hs view
@@ -0,0 +1,88 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.QueryType (QueryType( QUERY_TYPE_OCCLUSION+ , QUERY_TYPE_PIPELINE_STATISTICS+ , QUERY_TYPE_TIMESTAMP+ , QUERY_TYPE_PERFORMANCE_QUERY_INTEL+ , QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV+ , QUERY_TYPE_PERFORMANCE_QUERY_KHR+ , QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkQueryType - Specify the type of queries managed by a query pool+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Query.QueryPoolCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV'+newtype QueryType = QueryType Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'QUERY_TYPE_OCCLUSION' specifies an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-occlusion occlusion query>.+pattern QUERY_TYPE_OCCLUSION = QueryType 0+-- | 'QUERY_TYPE_PIPELINE_STATISTICS' specifies a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats pipeline statistics query>.+pattern QUERY_TYPE_PIPELINE_STATISTICS = QueryType 1+-- | 'QUERY_TYPE_TIMESTAMP' specifies a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-timestamps timestamp query>.+pattern QUERY_TYPE_TIMESTAMP = QueryType 2+-- | 'QUERY_TYPE_PERFORMANCE_QUERY_INTEL' specifies a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-performance-intel Intel performance query>.+pattern QUERY_TYPE_PERFORMANCE_QUERY_INTEL = QueryType 1000210000+-- | 'QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV' specifies a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-copying ray tracing acceleration structure size query>.+pattern QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = QueryType 1000165000+-- | 'QUERY_TYPE_PERFORMANCE_QUERY_KHR' specifies a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-performance performance query>.+pattern QUERY_TYPE_PERFORMANCE_QUERY_KHR = QueryType 1000116000+-- | 'QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT' specifies a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedback transform feedback query>.+pattern QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = QueryType 1000028004+{-# complete QUERY_TYPE_OCCLUSION,+ QUERY_TYPE_PIPELINE_STATISTICS,+ QUERY_TYPE_TIMESTAMP,+ QUERY_TYPE_PERFORMANCE_QUERY_INTEL,+ QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV,+ QUERY_TYPE_PERFORMANCE_QUERY_KHR,+ QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT :: QueryType #-}++instance Show QueryType where+ showsPrec p = \case+ QUERY_TYPE_OCCLUSION -> showString "QUERY_TYPE_OCCLUSION"+ QUERY_TYPE_PIPELINE_STATISTICS -> showString "QUERY_TYPE_PIPELINE_STATISTICS"+ QUERY_TYPE_TIMESTAMP -> showString "QUERY_TYPE_TIMESTAMP"+ QUERY_TYPE_PERFORMANCE_QUERY_INTEL -> showString "QUERY_TYPE_PERFORMANCE_QUERY_INTEL"+ QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV -> showString "QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV"+ QUERY_TYPE_PERFORMANCE_QUERY_KHR -> showString "QUERY_TYPE_PERFORMANCE_QUERY_KHR"+ QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT -> showString "QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT"+ QueryType x -> showParen (p >= 11) (showString "QueryType " . showsPrec 11 x)++instance Read QueryType where+ readPrec = parens (choose [("QUERY_TYPE_OCCLUSION", pure QUERY_TYPE_OCCLUSION)+ , ("QUERY_TYPE_PIPELINE_STATISTICS", pure QUERY_TYPE_PIPELINE_STATISTICS)+ , ("QUERY_TYPE_TIMESTAMP", pure QUERY_TYPE_TIMESTAMP)+ , ("QUERY_TYPE_PERFORMANCE_QUERY_INTEL", pure QUERY_TYPE_PERFORMANCE_QUERY_INTEL)+ , ("QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV", pure QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV)+ , ("QUERY_TYPE_PERFORMANCE_QUERY_KHR", pure QUERY_TYPE_PERFORMANCE_QUERY_KHR)+ , ("QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT", pure QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT)]+ ++++ prec 10 (do+ expectP (Ident "QueryType")+ v <- step readPrec+ pure (QueryType v)))+
+ src/Graphics/Vulkan/Core10/Enums/QueryType.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.QueryType (QueryType) where++++data QueryType+
+ src/Graphics/Vulkan/Core10/Enums/QueueFlagBits.hs view
@@ -0,0 +1,117 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.QueueFlagBits ( QueueFlagBits( QUEUE_GRAPHICS_BIT+ , QUEUE_COMPUTE_BIT+ , QUEUE_TRANSFER_BIT+ , QUEUE_SPARSE_BINDING_BIT+ , QUEUE_PROTECTED_BIT+ , ..+ )+ , QueueFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkQueueFlagBits - Bitmask specifying capabilities of queues in a queue+-- family+--+-- = Description+--+-- - 'QUEUE_GRAPHICS_BIT' specifies that queues in this queue family+-- support graphics operations.+--+-- - 'QUEUE_COMPUTE_BIT' specifies that queues in this queue family+-- support compute operations.+--+-- - 'QUEUE_TRANSFER_BIT' specifies that queues in this queue family+-- support transfer operations.+--+-- - 'QUEUE_SPARSE_BINDING_BIT' specifies that queues in this queue+-- family support sparse memory management operations (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory Sparse Resources>).+-- If any of the sparse resource features are enabled, then at least+-- one queue family /must/ support this bit.+--+-- - if 'QUEUE_PROTECTED_BIT' is set, then the queues in this queue+-- family support the+-- 'Graphics.Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_PROTECTED_BIT'+-- bit. (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-protected-memory Protected Memory>).+-- If the protected memory physical device feature is supported, then+-- at least one queue family of at least one physical device exposed by+-- the implementation /must/ support this bit.+--+-- If an implementation exposes any queue family that supports graphics+-- operations, at least one queue family of at least one physical device+-- exposed by the implementation /must/ support both graphics and compute+-- operations.+--+-- Furthermore, if the protected memory physical device feature is+-- supported, then at least one queue family of at least one physical+-- device exposed by the implementation /must/ support graphics operations,+-- compute operations, and protected memory operations.+--+-- Note+--+-- All commands that are allowed on a queue that supports transfer+-- operations are also allowed on a queue that supports either graphics or+-- compute operations. Thus, if the capabilities of a queue family include+-- 'QUEUE_GRAPHICS_BIT' or 'QUEUE_COMPUTE_BIT', then reporting the+-- 'QUEUE_TRANSFER_BIT' capability separately for that queue family is+-- /optional/.+--+-- For further details see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-queues Queues>.+--+-- = See Also+--+-- 'QueueFlags'+newtype QueueFlagBits = QueueFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_GRAPHICS_BIT"+pattern QUEUE_GRAPHICS_BIT = QueueFlagBits 0x00000001+-- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_COMPUTE_BIT"+pattern QUEUE_COMPUTE_BIT = QueueFlagBits 0x00000002+-- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_TRANSFER_BIT"+pattern QUEUE_TRANSFER_BIT = QueueFlagBits 0x00000004+-- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_SPARSE_BINDING_BIT"+pattern QUEUE_SPARSE_BINDING_BIT = QueueFlagBits 0x00000008+-- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_PROTECTED_BIT"+pattern QUEUE_PROTECTED_BIT = QueueFlagBits 0x00000010++type QueueFlags = QueueFlagBits++instance Show QueueFlagBits where+ showsPrec p = \case+ QUEUE_GRAPHICS_BIT -> showString "QUEUE_GRAPHICS_BIT"+ QUEUE_COMPUTE_BIT -> showString "QUEUE_COMPUTE_BIT"+ QUEUE_TRANSFER_BIT -> showString "QUEUE_TRANSFER_BIT"+ QUEUE_SPARSE_BINDING_BIT -> showString "QUEUE_SPARSE_BINDING_BIT"+ QUEUE_PROTECTED_BIT -> showString "QUEUE_PROTECTED_BIT"+ QueueFlagBits x -> showParen (p >= 11) (showString "QueueFlagBits 0x" . showHex x)++instance Read QueueFlagBits where+ readPrec = parens (choose [("QUEUE_GRAPHICS_BIT", pure QUEUE_GRAPHICS_BIT)+ , ("QUEUE_COMPUTE_BIT", pure QUEUE_COMPUTE_BIT)+ , ("QUEUE_TRANSFER_BIT", pure QUEUE_TRANSFER_BIT)+ , ("QUEUE_SPARSE_BINDING_BIT", pure QUEUE_SPARSE_BINDING_BIT)+ , ("QUEUE_PROTECTED_BIT", pure QUEUE_PROTECTED_BIT)]+ ++++ prec 10 (do+ expectP (Ident "QueueFlagBits")+ v <- step readPrec+ pure (QueueFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/RenderPassCreateFlagBits.hs view
@@ -0,0 +1,51 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.RenderPassCreateFlagBits ( RenderPassCreateFlagBits( RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM+ , ..+ )+ , RenderPassCreateFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkRenderPassCreateFlagBits - Bitmask specifying additional properties of+-- a renderpass+--+-- = See Also+--+-- 'RenderPassCreateFlags'+newtype RenderPassCreateFlagBits = RenderPassCreateFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM' specifies that the created+-- renderpass is compatible with+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>.+pattern RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = RenderPassCreateFlagBits 0x00000002++type RenderPassCreateFlags = RenderPassCreateFlagBits++instance Show RenderPassCreateFlagBits where+ showsPrec p = \case+ RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM -> showString "RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM"+ RenderPassCreateFlagBits x -> showParen (p >= 11) (showString "RenderPassCreateFlagBits 0x" . showHex x)++instance Read RenderPassCreateFlagBits where+ readPrec = parens (choose [("RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM", pure RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM)]+ ++++ prec 10 (do+ expectP (Ident "RenderPassCreateFlagBits")+ v <- step readPrec+ pure (RenderPassCreateFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/Result.hs view
@@ -0,0 +1,307 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.Result (Result( SUCCESS+ , NOT_READY+ , TIMEOUT+ , EVENT_SET+ , EVENT_RESET+ , INCOMPLETE+ , ERROR_OUT_OF_HOST_MEMORY+ , ERROR_OUT_OF_DEVICE_MEMORY+ , ERROR_INITIALIZATION_FAILED+ , ERROR_DEVICE_LOST+ , ERROR_MEMORY_MAP_FAILED+ , ERROR_LAYER_NOT_PRESENT+ , ERROR_EXTENSION_NOT_PRESENT+ , ERROR_FEATURE_NOT_PRESENT+ , ERROR_INCOMPATIBLE_DRIVER+ , ERROR_TOO_MANY_OBJECTS+ , ERROR_FORMAT_NOT_SUPPORTED+ , ERROR_FRAGMENTED_POOL+ , ERROR_UNKNOWN+ , ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT+ , ERROR_NOT_PERMITTED_EXT+ , ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT+ , ERROR_INVALID_SHADER_NV+ , ERROR_VALIDATION_FAILED_EXT+ , ERROR_INCOMPATIBLE_DISPLAY_KHR+ , ERROR_OUT_OF_DATE_KHR+ , SUBOPTIMAL_KHR+ , ERROR_NATIVE_WINDOW_IN_USE_KHR+ , ERROR_SURFACE_LOST_KHR+ , ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS+ , ERROR_FRAGMENTATION+ , ERROR_INVALID_EXTERNAL_HANDLE+ , ERROR_OUT_OF_POOL_MEMORY+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkResult - Vulkan command return codes+--+-- = Description+--+-- If a command returns a run time error, unless otherwise specified any+-- output parameters will have undefined contents, except that if the+-- output parameter is a structure with @sType@ and @pNext@ fields, those+-- fields will be unmodified. Any structures chained from @pNext@ will also+-- have undefined contents, except that @sType@ and @pNext@ will be+-- unmodified.+--+-- Out of memory errors do not damage any currently existing Vulkan+-- objects. Objects that have already been successfully created /can/ still+-- be used by the application.+--+-- 'ERROR_UNKNOWN' will be returned by an implementation when an unexpected+-- error occurs that cannot be attributed to valid behavior of the+-- application and implementation.+--+-- Note+--+-- If 'ERROR_UNKNOWN' is received, the application should be checked+-- against the latest validation layers to verify correct behavior as much+-- as possible. If no issues are identified it could be an implementation+-- issue, and the implementor should be contacted for support.+--+-- This error should not be expected from any command if application+-- behavior is valid, and if the implementation is bug-free, but it can be+-- returned by /any/ error returning command when that is not the case.+--+-- Performance-critical commands generally do not have return codes. If a+-- run time error occurs in such commands, the implementation will defer+-- reporting the error until a specified point. For commands that record+-- into command buffers (@vkCmd*@) run time errors are reported by+-- 'Graphics.Vulkan.Core10.CommandBuffer.endCommandBuffer'.+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'+newtype Result = Result Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'SUCCESS' Command successfully completed+pattern SUCCESS = Result 0+-- | 'NOT_READY' A fence or query has not yet completed+pattern NOT_READY = Result 1+-- | 'TIMEOUT' A wait operation has not completed in the specified time+pattern TIMEOUT = Result 2+-- | 'EVENT_SET' An event is signaled+pattern EVENT_SET = Result 3+-- | 'EVENT_RESET' An event is unsignaled+pattern EVENT_RESET = Result 4+-- | 'INCOMPLETE' A return array was too small for the result+pattern INCOMPLETE = Result 5+-- | 'ERROR_OUT_OF_HOST_MEMORY' A host memory allocation has failed.+pattern ERROR_OUT_OF_HOST_MEMORY = Result (-1)+-- | 'ERROR_OUT_OF_DEVICE_MEMORY' A device memory allocation has failed.+pattern ERROR_OUT_OF_DEVICE_MEMORY = Result (-2)+-- | 'ERROR_INITIALIZATION_FAILED' Initialization of an object could not be+-- completed for implementation-specific reasons.+pattern ERROR_INITIALIZATION_FAILED = Result (-3)+-- | 'ERROR_DEVICE_LOST' The logical or physical device has been lost. See+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>+pattern ERROR_DEVICE_LOST = Result (-4)+-- | 'ERROR_MEMORY_MAP_FAILED' Mapping of a memory object has failed.+pattern ERROR_MEMORY_MAP_FAILED = Result (-5)+-- | 'ERROR_LAYER_NOT_PRESENT' A requested layer is not present or could not+-- be loaded.+pattern ERROR_LAYER_NOT_PRESENT = Result (-6)+-- | 'ERROR_EXTENSION_NOT_PRESENT' A requested extension is not supported.+pattern ERROR_EXTENSION_NOT_PRESENT = Result (-7)+-- | 'ERROR_FEATURE_NOT_PRESENT' A requested feature is not supported.+pattern ERROR_FEATURE_NOT_PRESENT = Result (-8)+-- | 'ERROR_INCOMPATIBLE_DRIVER' The requested version of Vulkan is not+-- supported by the driver or is otherwise incompatible for+-- implementation-specific reasons.+pattern ERROR_INCOMPATIBLE_DRIVER = Result (-9)+-- | 'ERROR_TOO_MANY_OBJECTS' Too many objects of the type have already been+-- created.+pattern ERROR_TOO_MANY_OBJECTS = Result (-10)+-- | 'ERROR_FORMAT_NOT_SUPPORTED' A requested format is not supported on this+-- device.+pattern ERROR_FORMAT_NOT_SUPPORTED = Result (-11)+-- | 'ERROR_FRAGMENTED_POOL' A pool allocation has failed due to+-- fragmentation of the pool’s memory. This /must/ only be returned if no+-- attempt to allocate host or device memory was made to accommodate the+-- new allocation. This /should/ be returned in preference to+-- 'ERROR_OUT_OF_POOL_MEMORY', but only if the implementation is certain+-- that the pool allocation failure was due to fragmentation.+pattern ERROR_FRAGMENTED_POOL = Result (-12)+-- | 'ERROR_UNKNOWN' An unknown error has occurred; either the application+-- has provided invalid input, or an implementation failure has occurred.+pattern ERROR_UNKNOWN = Result (-13)+-- | 'ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT' An operation on a swapchain+-- created with+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT'+-- failed as it did not have exlusive full-screen access. This /may/ occur+-- due to implementation-dependent reasons, outside of the application’s+-- control.+pattern ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = Result (-1000255000)+-- No documentation found for Nested "VkResult" "VK_ERROR_NOT_PERMITTED_EXT"+pattern ERROR_NOT_PERMITTED_EXT = Result (-1000174001)+-- No documentation found for Nested "VkResult" "VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT"+pattern ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = Result (-1000158000)+-- | 'ERROR_INVALID_SHADER_NV' One or more shaders failed to compile or link.+-- More details are reported back to the application via+-- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_debug_report@+-- if enabled.+pattern ERROR_INVALID_SHADER_NV = Result (-1000012000)+-- No documentation found for Nested "VkResult" "VK_ERROR_VALIDATION_FAILED_EXT"+pattern ERROR_VALIDATION_FAILED_EXT = Result (-1000011001)+-- | 'ERROR_INCOMPATIBLE_DISPLAY_KHR' The display used by a swapchain does+-- not use the same presentable image layout, or is incompatible in a way+-- that prevents sharing an image.+pattern ERROR_INCOMPATIBLE_DISPLAY_KHR = Result (-1000003001)+-- | 'ERROR_OUT_OF_DATE_KHR' A surface has changed in such a way that it is+-- no longer compatible with the swapchain, and further presentation+-- requests using the swapchain will fail. Applications /must/ query the+-- new surface properties and recreate their swapchain if they wish to+-- continue presenting to the surface.+pattern ERROR_OUT_OF_DATE_KHR = Result (-1000001004)+-- | 'SUBOPTIMAL_KHR' A swapchain no longer matches the surface properties+-- exactly, but /can/ still be used to present to the surface successfully.+pattern SUBOPTIMAL_KHR = Result 1000001003+-- | 'ERROR_NATIVE_WINDOW_IN_USE_KHR' The requested window is already in use+-- by Vulkan or another API in a manner which prevents it from being used+-- again.+pattern ERROR_NATIVE_WINDOW_IN_USE_KHR = Result (-1000000001)+-- | 'ERROR_SURFACE_LOST_KHR' A surface is no longer available.+pattern ERROR_SURFACE_LOST_KHR = Result (-1000000000)+-- | 'ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS' A buffer creation or memory+-- allocation failed because the requested address is not available.+pattern ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = Result (-1000257000)+-- | 'ERROR_FRAGMENTATION' A descriptor pool creation has failed due to+-- fragmentation.+pattern ERROR_FRAGMENTATION = Result (-1000161000)+-- | 'ERROR_INVALID_EXTERNAL_HANDLE' An external handle is not a valid handle+-- of the specified type.+pattern ERROR_INVALID_EXTERNAL_HANDLE = Result (-1000072003)+-- | 'ERROR_OUT_OF_POOL_MEMORY' A pool memory allocation has failed. This+-- /must/ only be returned if no attempt to allocate host or device memory+-- was made to accommodate the new allocation. If the failure was+-- definitely due to fragmentation of the pool, 'ERROR_FRAGMENTED_POOL'+-- /should/ be returned instead.+pattern ERROR_OUT_OF_POOL_MEMORY = Result (-1000069000)+{-# complete SUCCESS,+ NOT_READY,+ TIMEOUT,+ EVENT_SET,+ EVENT_RESET,+ INCOMPLETE,+ ERROR_OUT_OF_HOST_MEMORY,+ ERROR_OUT_OF_DEVICE_MEMORY,+ ERROR_INITIALIZATION_FAILED,+ ERROR_DEVICE_LOST,+ ERROR_MEMORY_MAP_FAILED,+ ERROR_LAYER_NOT_PRESENT,+ ERROR_EXTENSION_NOT_PRESENT,+ ERROR_FEATURE_NOT_PRESENT,+ ERROR_INCOMPATIBLE_DRIVER,+ ERROR_TOO_MANY_OBJECTS,+ ERROR_FORMAT_NOT_SUPPORTED,+ ERROR_FRAGMENTED_POOL,+ ERROR_UNKNOWN,+ ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT,+ ERROR_NOT_PERMITTED_EXT,+ ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT,+ ERROR_INVALID_SHADER_NV,+ ERROR_VALIDATION_FAILED_EXT,+ ERROR_INCOMPATIBLE_DISPLAY_KHR,+ ERROR_OUT_OF_DATE_KHR,+ SUBOPTIMAL_KHR,+ ERROR_NATIVE_WINDOW_IN_USE_KHR,+ ERROR_SURFACE_LOST_KHR,+ ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,+ ERROR_FRAGMENTATION,+ ERROR_INVALID_EXTERNAL_HANDLE,+ ERROR_OUT_OF_POOL_MEMORY :: Result #-}++instance Show Result where+ showsPrec p = \case+ SUCCESS -> showString "SUCCESS"+ NOT_READY -> showString "NOT_READY"+ TIMEOUT -> showString "TIMEOUT"+ EVENT_SET -> showString "EVENT_SET"+ EVENT_RESET -> showString "EVENT_RESET"+ INCOMPLETE -> showString "INCOMPLETE"+ ERROR_OUT_OF_HOST_MEMORY -> showString "ERROR_OUT_OF_HOST_MEMORY"+ ERROR_OUT_OF_DEVICE_MEMORY -> showString "ERROR_OUT_OF_DEVICE_MEMORY"+ ERROR_INITIALIZATION_FAILED -> showString "ERROR_INITIALIZATION_FAILED"+ ERROR_DEVICE_LOST -> showString "ERROR_DEVICE_LOST"+ ERROR_MEMORY_MAP_FAILED -> showString "ERROR_MEMORY_MAP_FAILED"+ ERROR_LAYER_NOT_PRESENT -> showString "ERROR_LAYER_NOT_PRESENT"+ ERROR_EXTENSION_NOT_PRESENT -> showString "ERROR_EXTENSION_NOT_PRESENT"+ ERROR_FEATURE_NOT_PRESENT -> showString "ERROR_FEATURE_NOT_PRESENT"+ ERROR_INCOMPATIBLE_DRIVER -> showString "ERROR_INCOMPATIBLE_DRIVER"+ ERROR_TOO_MANY_OBJECTS -> showString "ERROR_TOO_MANY_OBJECTS"+ ERROR_FORMAT_NOT_SUPPORTED -> showString "ERROR_FORMAT_NOT_SUPPORTED"+ ERROR_FRAGMENTED_POOL -> showString "ERROR_FRAGMENTED_POOL"+ ERROR_UNKNOWN -> showString "ERROR_UNKNOWN"+ ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT -> showString "ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT"+ ERROR_NOT_PERMITTED_EXT -> showString "ERROR_NOT_PERMITTED_EXT"+ ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT -> showString "ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT"+ ERROR_INVALID_SHADER_NV -> showString "ERROR_INVALID_SHADER_NV"+ ERROR_VALIDATION_FAILED_EXT -> showString "ERROR_VALIDATION_FAILED_EXT"+ ERROR_INCOMPATIBLE_DISPLAY_KHR -> showString "ERROR_INCOMPATIBLE_DISPLAY_KHR"+ ERROR_OUT_OF_DATE_KHR -> showString "ERROR_OUT_OF_DATE_KHR"+ SUBOPTIMAL_KHR -> showString "SUBOPTIMAL_KHR"+ ERROR_NATIVE_WINDOW_IN_USE_KHR -> showString "ERROR_NATIVE_WINDOW_IN_USE_KHR"+ ERROR_SURFACE_LOST_KHR -> showString "ERROR_SURFACE_LOST_KHR"+ ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS -> showString "ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS"+ ERROR_FRAGMENTATION -> showString "ERROR_FRAGMENTATION"+ ERROR_INVALID_EXTERNAL_HANDLE -> showString "ERROR_INVALID_EXTERNAL_HANDLE"+ ERROR_OUT_OF_POOL_MEMORY -> showString "ERROR_OUT_OF_POOL_MEMORY"+ Result x -> showParen (p >= 11) (showString "Result " . showsPrec 11 x)++instance Read Result where+ readPrec = parens (choose [("SUCCESS", pure SUCCESS)+ , ("NOT_READY", pure NOT_READY)+ , ("TIMEOUT", pure TIMEOUT)+ , ("EVENT_SET", pure EVENT_SET)+ , ("EVENT_RESET", pure EVENT_RESET)+ , ("INCOMPLETE", pure INCOMPLETE)+ , ("ERROR_OUT_OF_HOST_MEMORY", pure ERROR_OUT_OF_HOST_MEMORY)+ , ("ERROR_OUT_OF_DEVICE_MEMORY", pure ERROR_OUT_OF_DEVICE_MEMORY)+ , ("ERROR_INITIALIZATION_FAILED", pure ERROR_INITIALIZATION_FAILED)+ , ("ERROR_DEVICE_LOST", pure ERROR_DEVICE_LOST)+ , ("ERROR_MEMORY_MAP_FAILED", pure ERROR_MEMORY_MAP_FAILED)+ , ("ERROR_LAYER_NOT_PRESENT", pure ERROR_LAYER_NOT_PRESENT)+ , ("ERROR_EXTENSION_NOT_PRESENT", pure ERROR_EXTENSION_NOT_PRESENT)+ , ("ERROR_FEATURE_NOT_PRESENT", pure ERROR_FEATURE_NOT_PRESENT)+ , ("ERROR_INCOMPATIBLE_DRIVER", pure ERROR_INCOMPATIBLE_DRIVER)+ , ("ERROR_TOO_MANY_OBJECTS", pure ERROR_TOO_MANY_OBJECTS)+ , ("ERROR_FORMAT_NOT_SUPPORTED", pure ERROR_FORMAT_NOT_SUPPORTED)+ , ("ERROR_FRAGMENTED_POOL", pure ERROR_FRAGMENTED_POOL)+ , ("ERROR_UNKNOWN", pure ERROR_UNKNOWN)+ , ("ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT", pure ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT)+ , ("ERROR_NOT_PERMITTED_EXT", pure ERROR_NOT_PERMITTED_EXT)+ , ("ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT", pure ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT)+ , ("ERROR_INVALID_SHADER_NV", pure ERROR_INVALID_SHADER_NV)+ , ("ERROR_VALIDATION_FAILED_EXT", pure ERROR_VALIDATION_FAILED_EXT)+ , ("ERROR_INCOMPATIBLE_DISPLAY_KHR", pure ERROR_INCOMPATIBLE_DISPLAY_KHR)+ , ("ERROR_OUT_OF_DATE_KHR", pure ERROR_OUT_OF_DATE_KHR)+ , ("SUBOPTIMAL_KHR", pure SUBOPTIMAL_KHR)+ , ("ERROR_NATIVE_WINDOW_IN_USE_KHR", pure ERROR_NATIVE_WINDOW_IN_USE_KHR)+ , ("ERROR_SURFACE_LOST_KHR", pure ERROR_SURFACE_LOST_KHR)+ , ("ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS", pure ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS)+ , ("ERROR_FRAGMENTATION", pure ERROR_FRAGMENTATION)+ , ("ERROR_INVALID_EXTERNAL_HANDLE", pure ERROR_INVALID_EXTERNAL_HANDLE)+ , ("ERROR_OUT_OF_POOL_MEMORY", pure ERROR_OUT_OF_POOL_MEMORY)]+ ++++ prec 10 (do+ expectP (Ident "Result")+ v <- step readPrec+ pure (Result v)))+
+ src/Graphics/Vulkan/Core10/Enums/Result.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.Result (Result) where++++data Result+
+ src/Graphics/Vulkan/Core10/Enums/SampleCountFlagBits.hs view
@@ -0,0 +1,88 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.SampleCountFlagBits ( SampleCountFlagBits( SAMPLE_COUNT_1_BIT+ , SAMPLE_COUNT_2_BIT+ , SAMPLE_COUNT_4_BIT+ , SAMPLE_COUNT_8_BIT+ , SAMPLE_COUNT_16_BIT+ , SAMPLE_COUNT_32_BIT+ , SAMPLE_COUNT_64_BIT+ , ..+ )+ , SampleCountFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkSampleCountFlagBits - Bitmask specifying sample counts supported for+-- an image used for storage operations+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',+-- 'Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode.FramebufferMixedSamplesCombinationNV',+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceSparseImageFormatInfo2',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo',+-- 'SampleCountFlags',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.getPhysicalDeviceSparseImageFormatProperties'+newtype SampleCountFlagBits = SampleCountFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'SAMPLE_COUNT_1_BIT' specifies an image with one sample per pixel.+pattern SAMPLE_COUNT_1_BIT = SampleCountFlagBits 0x00000001+-- | 'SAMPLE_COUNT_2_BIT' specifies an image with 2 samples per pixel.+pattern SAMPLE_COUNT_2_BIT = SampleCountFlagBits 0x00000002+-- | 'SAMPLE_COUNT_4_BIT' specifies an image with 4 samples per pixel.+pattern SAMPLE_COUNT_4_BIT = SampleCountFlagBits 0x00000004+-- | 'SAMPLE_COUNT_8_BIT' specifies an image with 8 samples per pixel.+pattern SAMPLE_COUNT_8_BIT = SampleCountFlagBits 0x00000008+-- | 'SAMPLE_COUNT_16_BIT' specifies an image with 16 samples per pixel.+pattern SAMPLE_COUNT_16_BIT = SampleCountFlagBits 0x00000010+-- | 'SAMPLE_COUNT_32_BIT' specifies an image with 32 samples per pixel.+pattern SAMPLE_COUNT_32_BIT = SampleCountFlagBits 0x00000020+-- | 'SAMPLE_COUNT_64_BIT' specifies an image with 64 samples per pixel.+pattern SAMPLE_COUNT_64_BIT = SampleCountFlagBits 0x00000040++type SampleCountFlags = SampleCountFlagBits++instance Show SampleCountFlagBits where+ showsPrec p = \case+ SAMPLE_COUNT_1_BIT -> showString "SAMPLE_COUNT_1_BIT"+ SAMPLE_COUNT_2_BIT -> showString "SAMPLE_COUNT_2_BIT"+ SAMPLE_COUNT_4_BIT -> showString "SAMPLE_COUNT_4_BIT"+ SAMPLE_COUNT_8_BIT -> showString "SAMPLE_COUNT_8_BIT"+ SAMPLE_COUNT_16_BIT -> showString "SAMPLE_COUNT_16_BIT"+ SAMPLE_COUNT_32_BIT -> showString "SAMPLE_COUNT_32_BIT"+ SAMPLE_COUNT_64_BIT -> showString "SAMPLE_COUNT_64_BIT"+ SampleCountFlagBits x -> showParen (p >= 11) (showString "SampleCountFlagBits 0x" . showHex x)++instance Read SampleCountFlagBits where+ readPrec = parens (choose [("SAMPLE_COUNT_1_BIT", pure SAMPLE_COUNT_1_BIT)+ , ("SAMPLE_COUNT_2_BIT", pure SAMPLE_COUNT_2_BIT)+ , ("SAMPLE_COUNT_4_BIT", pure SAMPLE_COUNT_4_BIT)+ , ("SAMPLE_COUNT_8_BIT", pure SAMPLE_COUNT_8_BIT)+ , ("SAMPLE_COUNT_16_BIT", pure SAMPLE_COUNT_16_BIT)+ , ("SAMPLE_COUNT_32_BIT", pure SAMPLE_COUNT_32_BIT)+ , ("SAMPLE_COUNT_64_BIT", pure SAMPLE_COUNT_64_BIT)]+ ++++ prec 10 (do+ expectP (Ident "SampleCountFlagBits")+ v <- step readPrec+ pure (SampleCountFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/SampleCountFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.SampleCountFlagBits ( SampleCountFlagBits+ , SampleCountFlags+ ) where++++data SampleCountFlagBits++type SampleCountFlags = SampleCountFlagBits+
+ src/Graphics/Vulkan/Core10/Enums/SamplerAddressMode.hs view
@@ -0,0 +1,78 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.SamplerAddressMode (SamplerAddressMode( SAMPLER_ADDRESS_MODE_REPEAT+ , SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT+ , SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE+ , SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER+ , SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkSamplerAddressMode - Specify behavior of sampling with texture+-- coordinates outside an image+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Sampler.SamplerCreateInfo'+newtype SamplerAddressMode = SamplerAddressMode Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'SAMPLER_ADDRESS_MODE_REPEAT' specifies that the repeat wrap mode will+-- be used.+pattern SAMPLER_ADDRESS_MODE_REPEAT = SamplerAddressMode 0+-- | 'SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT' specifies that the mirrored+-- repeat wrap mode will be used.+pattern SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = SamplerAddressMode 1+-- | 'SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE' specifies that the clamp to edge+-- wrap mode will be used.+pattern SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = SamplerAddressMode 2+-- | 'SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER' specifies that the clamp to+-- border wrap mode will be used.+pattern SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = SamplerAddressMode 3+-- | 'SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE' specifies that the mirror+-- clamp to edge wrap mode will be used. This is only valid if+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-samplerMirrorClampToEdge samplerMirrorClampToEdge>+-- is enabled, or if the+-- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_KHR_sampler_mirror_clamp_to_edge@+-- extension is enabled.+pattern SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = SamplerAddressMode 4+{-# complete SAMPLER_ADDRESS_MODE_REPEAT,+ SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,+ SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,+ SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,+ SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE :: SamplerAddressMode #-}++instance Show SamplerAddressMode where+ showsPrec p = \case+ SAMPLER_ADDRESS_MODE_REPEAT -> showString "SAMPLER_ADDRESS_MODE_REPEAT"+ SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT -> showString "SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT"+ SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE -> showString "SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE"+ SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER -> showString "SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER"+ SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE -> showString "SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE"+ SamplerAddressMode x -> showParen (p >= 11) (showString "SamplerAddressMode " . showsPrec 11 x)++instance Read SamplerAddressMode where+ readPrec = parens (choose [("SAMPLER_ADDRESS_MODE_REPEAT", pure SAMPLER_ADDRESS_MODE_REPEAT)+ , ("SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT", pure SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT)+ , ("SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE", pure SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE)+ , ("SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER", pure SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER)+ , ("SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE", pure SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE)]+ ++++ prec 10 (do+ expectP (Ident "SamplerAddressMode")+ v <- step readPrec+ pure (SamplerAddressMode v)))+
+ src/Graphics/Vulkan/Core10/Enums/SamplerCreateFlagBits.hs view
@@ -0,0 +1,70 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits ( SamplerCreateFlagBits( SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT+ , SAMPLER_CREATE_SUBSAMPLED_BIT_EXT+ , ..+ )+ , SamplerCreateFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkSamplerCreateFlagBits - Bitmask specifying additional parameters of+-- sampler+--+-- = Description+--+-- Note+--+-- The approximations used when+-- 'SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT' is specified+-- are implementation defined. Some implementations /may/ interpolate+-- between fragment density levels in a subsampled image. In that case,+-- this bit /may/ be used to decide whether the interpolation factors are+-- calculated per fragment or at a coarser granularity.+--+-- = See Also+--+-- 'SamplerCreateFlags'+newtype SamplerCreateFlagBits = SamplerCreateFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT' specifies that+-- the implementation /may/ use approximations when reconstructing a full+-- color value for texture access from a subsampled image.+pattern SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = SamplerCreateFlagBits 0x00000002+-- | 'SAMPLER_CREATE_SUBSAMPLED_BIT_EXT' specifies that the sampler will read+-- from an image created with 'Graphics.Vulkan.Core10.BaseType.Flags'+-- containing+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'.+pattern SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = SamplerCreateFlagBits 0x00000001++type SamplerCreateFlags = SamplerCreateFlagBits++instance Show SamplerCreateFlagBits where+ showsPrec p = \case+ SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT -> showString "SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT"+ SAMPLER_CREATE_SUBSAMPLED_BIT_EXT -> showString "SAMPLER_CREATE_SUBSAMPLED_BIT_EXT"+ SamplerCreateFlagBits x -> showParen (p >= 11) (showString "SamplerCreateFlagBits 0x" . showHex x)++instance Read SamplerCreateFlagBits where+ readPrec = parens (choose [("SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT", pure SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT)+ , ("SAMPLER_CREATE_SUBSAMPLED_BIT_EXT", pure SAMPLER_CREATE_SUBSAMPLED_BIT_EXT)]+ ++++ prec 10 (do+ expectP (Ident "SamplerCreateFlagBits")+ v <- step readPrec+ pure (SamplerCreateFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/SamplerMipmapMode.hs view
@@ -0,0 +1,55 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.SamplerMipmapMode (SamplerMipmapMode( SAMPLER_MIPMAP_MODE_NEAREST+ , SAMPLER_MIPMAP_MODE_LINEAR+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkSamplerMipmapMode - Specify mipmap mode used for texture lookups+--+-- = Description+--+-- These modes are described in detail in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-filtering Texel Filtering>.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Sampler.SamplerCreateInfo'+newtype SamplerMipmapMode = SamplerMipmapMode Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'SAMPLER_MIPMAP_MODE_NEAREST' specifies nearest filtering.+pattern SAMPLER_MIPMAP_MODE_NEAREST = SamplerMipmapMode 0+-- | 'SAMPLER_MIPMAP_MODE_LINEAR' specifies linear filtering.+pattern SAMPLER_MIPMAP_MODE_LINEAR = SamplerMipmapMode 1+{-# complete SAMPLER_MIPMAP_MODE_NEAREST,+ SAMPLER_MIPMAP_MODE_LINEAR :: SamplerMipmapMode #-}++instance Show SamplerMipmapMode where+ showsPrec p = \case+ SAMPLER_MIPMAP_MODE_NEAREST -> showString "SAMPLER_MIPMAP_MODE_NEAREST"+ SAMPLER_MIPMAP_MODE_LINEAR -> showString "SAMPLER_MIPMAP_MODE_LINEAR"+ SamplerMipmapMode x -> showParen (p >= 11) (showString "SamplerMipmapMode " . showsPrec 11 x)++instance Read SamplerMipmapMode where+ readPrec = parens (choose [("SAMPLER_MIPMAP_MODE_NEAREST", pure SAMPLER_MIPMAP_MODE_NEAREST)+ , ("SAMPLER_MIPMAP_MODE_LINEAR", pure SAMPLER_MIPMAP_MODE_LINEAR)]+ ++++ prec 10 (do+ expectP (Ident "SamplerMipmapMode")+ v <- step readPrec+ pure (SamplerMipmapMode v)))+
+ src/Graphics/Vulkan/Core10/Enums/SemaphoreCreateFlags.hs view
@@ -0,0 +1,45 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.SemaphoreCreateFlags (SemaphoreCreateFlags(..)) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkSemaphoreCreateFlags - Reserved for future use+--+-- = Description+--+-- 'SemaphoreCreateFlags' is a bitmask type for setting a mask, but is+-- currently reserved for future use.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo'+newtype SemaphoreCreateFlags = SemaphoreCreateFlags Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show SemaphoreCreateFlags where+ showsPrec p = \case+ SemaphoreCreateFlags x -> showParen (p >= 11) (showString "SemaphoreCreateFlags 0x" . showHex x)++instance Read SemaphoreCreateFlags where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "SemaphoreCreateFlags")+ v <- step readPrec+ pure (SemaphoreCreateFlags v)))+
+ src/Graphics/Vulkan/Core10/Enums/ShaderModuleCreateFlagBits.hs view
@@ -0,0 +1,40 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.ShaderModuleCreateFlagBits ( ShaderModuleCreateFlagBits(..)+ , ShaderModuleCreateFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- No documentation found for TopLevel "VkShaderModuleCreateFlagBits"+newtype ShaderModuleCreateFlagBits = ShaderModuleCreateFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++type ShaderModuleCreateFlags = ShaderModuleCreateFlagBits++instance Show ShaderModuleCreateFlagBits where+ showsPrec p = \case+ ShaderModuleCreateFlagBits x -> showParen (p >= 11) (showString "ShaderModuleCreateFlagBits 0x" . showHex x)++instance Read ShaderModuleCreateFlagBits where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "ShaderModuleCreateFlagBits")+ v <- step readPrec+ pure (ShaderModuleCreateFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/ShaderStageFlagBits.hs view
@@ -0,0 +1,139 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits ( ShaderStageFlagBits( SHADER_STAGE_VERTEX_BIT+ , SHADER_STAGE_TESSELLATION_CONTROL_BIT+ , SHADER_STAGE_TESSELLATION_EVALUATION_BIT+ , SHADER_STAGE_GEOMETRY_BIT+ , SHADER_STAGE_FRAGMENT_BIT+ , SHADER_STAGE_COMPUTE_BIT+ , SHADER_STAGE_ALL_GRAPHICS+ , SHADER_STAGE_ALL+ , SHADER_STAGE_MESH_BIT_NV+ , SHADER_STAGE_TASK_BIT_NV+ , SHADER_STAGE_CALLABLE_BIT_NV+ , SHADER_STAGE_INTERSECTION_BIT_NV+ , SHADER_STAGE_MISS_BIT_NV+ , SHADER_STAGE_CLOSEST_HIT_BIT_NV+ , SHADER_STAGE_ANY_HIT_BIT_NV+ , SHADER_STAGE_RAYGEN_BIT_NV+ , ..+ )+ , ShaderStageFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkShaderStageFlagBits - Bitmask specifying a pipeline stage+--+-- = Description+--+-- Note+--+-- 'SHADER_STAGE_ALL_GRAPHICS' only includes the original five graphics+-- stages included in Vulkan 1.0, and not any stages added by extensions.+-- Thus, it may not have the desired effect in all cases.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',+-- 'ShaderStageFlags',+-- 'Graphics.Vulkan.Extensions.VK_AMD_shader_info.getShaderInfoAMD'+newtype ShaderStageFlagBits = ShaderStageFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'SHADER_STAGE_VERTEX_BIT' specifies the vertex stage.+pattern SHADER_STAGE_VERTEX_BIT = ShaderStageFlagBits 0x00000001+-- | 'SHADER_STAGE_TESSELLATION_CONTROL_BIT' specifies the tessellation+-- control stage.+pattern SHADER_STAGE_TESSELLATION_CONTROL_BIT = ShaderStageFlagBits 0x00000002+-- | 'SHADER_STAGE_TESSELLATION_EVALUATION_BIT' specifies the tessellation+-- evaluation stage.+pattern SHADER_STAGE_TESSELLATION_EVALUATION_BIT = ShaderStageFlagBits 0x00000004+-- | 'SHADER_STAGE_GEOMETRY_BIT' specifies the geometry stage.+pattern SHADER_STAGE_GEOMETRY_BIT = ShaderStageFlagBits 0x00000008+-- | 'SHADER_STAGE_FRAGMENT_BIT' specifies the fragment stage.+pattern SHADER_STAGE_FRAGMENT_BIT = ShaderStageFlagBits 0x00000010+-- | 'SHADER_STAGE_COMPUTE_BIT' specifies the compute stage.+pattern SHADER_STAGE_COMPUTE_BIT = ShaderStageFlagBits 0x00000020+-- | 'SHADER_STAGE_ALL_GRAPHICS' is a combination of bits used as shorthand+-- to specify all graphics stages defined above (excluding the compute+-- stage).+pattern SHADER_STAGE_ALL_GRAPHICS = ShaderStageFlagBits 0x0000001f+-- | 'SHADER_STAGE_ALL' is a combination of bits used as shorthand to specify+-- all shader stages supported by the device, including all additional+-- stages which are introduced by extensions.+pattern SHADER_STAGE_ALL = ShaderStageFlagBits 0x7fffffff+-- | 'SHADER_STAGE_MESH_BIT_NV' specifies the mesh stage.+pattern SHADER_STAGE_MESH_BIT_NV = ShaderStageFlagBits 0x00000080+-- | 'SHADER_STAGE_TASK_BIT_NV' specifies the task stage.+pattern SHADER_STAGE_TASK_BIT_NV = ShaderStageFlagBits 0x00000040+-- | 'SHADER_STAGE_CALLABLE_BIT_NV' specifies the callable stage.+pattern SHADER_STAGE_CALLABLE_BIT_NV = ShaderStageFlagBits 0x00002000+-- | 'SHADER_STAGE_INTERSECTION_BIT_NV' specifies the intersection stage.+pattern SHADER_STAGE_INTERSECTION_BIT_NV = ShaderStageFlagBits 0x00001000+-- | 'SHADER_STAGE_MISS_BIT_NV' specifies the miss stage.+pattern SHADER_STAGE_MISS_BIT_NV = ShaderStageFlagBits 0x00000800+-- | 'SHADER_STAGE_CLOSEST_HIT_BIT_NV' specifies the closest hit stage.+pattern SHADER_STAGE_CLOSEST_HIT_BIT_NV = ShaderStageFlagBits 0x00000400+-- | 'SHADER_STAGE_ANY_HIT_BIT_NV' specifies the any-hit stage.+pattern SHADER_STAGE_ANY_HIT_BIT_NV = ShaderStageFlagBits 0x00000200+-- | 'SHADER_STAGE_RAYGEN_BIT_NV' specifies the ray generation stage.+pattern SHADER_STAGE_RAYGEN_BIT_NV = ShaderStageFlagBits 0x00000100++type ShaderStageFlags = ShaderStageFlagBits++instance Show ShaderStageFlagBits where+ showsPrec p = \case+ SHADER_STAGE_VERTEX_BIT -> showString "SHADER_STAGE_VERTEX_BIT"+ SHADER_STAGE_TESSELLATION_CONTROL_BIT -> showString "SHADER_STAGE_TESSELLATION_CONTROL_BIT"+ SHADER_STAGE_TESSELLATION_EVALUATION_BIT -> showString "SHADER_STAGE_TESSELLATION_EVALUATION_BIT"+ SHADER_STAGE_GEOMETRY_BIT -> showString "SHADER_STAGE_GEOMETRY_BIT"+ SHADER_STAGE_FRAGMENT_BIT -> showString "SHADER_STAGE_FRAGMENT_BIT"+ SHADER_STAGE_COMPUTE_BIT -> showString "SHADER_STAGE_COMPUTE_BIT"+ SHADER_STAGE_ALL_GRAPHICS -> showString "SHADER_STAGE_ALL_GRAPHICS"+ SHADER_STAGE_ALL -> showString "SHADER_STAGE_ALL"+ SHADER_STAGE_MESH_BIT_NV -> showString "SHADER_STAGE_MESH_BIT_NV"+ SHADER_STAGE_TASK_BIT_NV -> showString "SHADER_STAGE_TASK_BIT_NV"+ SHADER_STAGE_CALLABLE_BIT_NV -> showString "SHADER_STAGE_CALLABLE_BIT_NV"+ SHADER_STAGE_INTERSECTION_BIT_NV -> showString "SHADER_STAGE_INTERSECTION_BIT_NV"+ SHADER_STAGE_MISS_BIT_NV -> showString "SHADER_STAGE_MISS_BIT_NV"+ SHADER_STAGE_CLOSEST_HIT_BIT_NV -> showString "SHADER_STAGE_CLOSEST_HIT_BIT_NV"+ SHADER_STAGE_ANY_HIT_BIT_NV -> showString "SHADER_STAGE_ANY_HIT_BIT_NV"+ SHADER_STAGE_RAYGEN_BIT_NV -> showString "SHADER_STAGE_RAYGEN_BIT_NV"+ ShaderStageFlagBits x -> showParen (p >= 11) (showString "ShaderStageFlagBits 0x" . showHex x)++instance Read ShaderStageFlagBits where+ readPrec = parens (choose [("SHADER_STAGE_VERTEX_BIT", pure SHADER_STAGE_VERTEX_BIT)+ , ("SHADER_STAGE_TESSELLATION_CONTROL_BIT", pure SHADER_STAGE_TESSELLATION_CONTROL_BIT)+ , ("SHADER_STAGE_TESSELLATION_EVALUATION_BIT", pure SHADER_STAGE_TESSELLATION_EVALUATION_BIT)+ , ("SHADER_STAGE_GEOMETRY_BIT", pure SHADER_STAGE_GEOMETRY_BIT)+ , ("SHADER_STAGE_FRAGMENT_BIT", pure SHADER_STAGE_FRAGMENT_BIT)+ , ("SHADER_STAGE_COMPUTE_BIT", pure SHADER_STAGE_COMPUTE_BIT)+ , ("SHADER_STAGE_ALL_GRAPHICS", pure SHADER_STAGE_ALL_GRAPHICS)+ , ("SHADER_STAGE_ALL", pure SHADER_STAGE_ALL)+ , ("SHADER_STAGE_MESH_BIT_NV", pure SHADER_STAGE_MESH_BIT_NV)+ , ("SHADER_STAGE_TASK_BIT_NV", pure SHADER_STAGE_TASK_BIT_NV)+ , ("SHADER_STAGE_CALLABLE_BIT_NV", pure SHADER_STAGE_CALLABLE_BIT_NV)+ , ("SHADER_STAGE_INTERSECTION_BIT_NV", pure SHADER_STAGE_INTERSECTION_BIT_NV)+ , ("SHADER_STAGE_MISS_BIT_NV", pure SHADER_STAGE_MISS_BIT_NV)+ , ("SHADER_STAGE_CLOSEST_HIT_BIT_NV", pure SHADER_STAGE_CLOSEST_HIT_BIT_NV)+ , ("SHADER_STAGE_ANY_HIT_BIT_NV", pure SHADER_STAGE_ANY_HIT_BIT_NV)+ , ("SHADER_STAGE_RAYGEN_BIT_NV", pure SHADER_STAGE_RAYGEN_BIT_NV)]+ ++++ prec 10 (do+ expectP (Ident "ShaderStageFlagBits")+ v <- step readPrec+ pure (ShaderStageFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/ShaderStageFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits ( ShaderStageFlagBits+ , ShaderStageFlags+ ) where++++data ShaderStageFlagBits++type ShaderStageFlags = ShaderStageFlagBits+
+ src/Graphics/Vulkan/Core10/Enums/SharingMode.hs view
@@ -0,0 +1,96 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.SharingMode (SharingMode( SHARING_MODE_EXCLUSIVE+ , SHARING_MODE_CONCURRENT+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkSharingMode - Buffer and image sharing modes+--+-- = Description+--+-- Note+--+-- 'SHARING_MODE_CONCURRENT' /may/ result in lower performance access to+-- the buffer or image than 'SHARING_MODE_EXCLUSIVE'.+--+-- Ranges of buffers and image subresources of image objects created using+-- 'SHARING_MODE_EXCLUSIVE' /must/ only be accessed by queues in the queue+-- family that has /ownership/ of the resource. Upon creation, such+-- resources are not owned by any queue family; ownership is implicitly+-- acquired upon first use within a queue. Once a resource using+-- 'SHARING_MODE_EXCLUSIVE' is owned by some queue family, the application+-- /must/ perform a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>+-- to make the memory contents of a range or image subresource accessible+-- to a different queue family.+--+-- Note+--+-- Images still require a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-layouts layout transition>+-- from 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'+-- before being used on the first queue.+--+-- A queue family /can/ take ownership of an image subresource or buffer+-- range of a resource created with 'SHARING_MODE_EXCLUSIVE', without an+-- ownership transfer, in the same way as for a resource that was just+-- created; however, taking ownership in this way has the effect that the+-- contents of the image subresource or buffer range are undefined.+--+-- Ranges of buffers and image subresources of image objects created using+-- 'SHARING_MODE_CONCURRENT' /must/ only be accessed by queues from the+-- queue families specified through the @queueFamilyIndexCount@ and+-- @pQueueFamilyIndices@ members of the corresponding create info+-- structures.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Buffer.BufferCreateInfo',+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.PhysicalDeviceImageDrmFormatModifierInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'+newtype SharingMode = SharingMode Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'SHARING_MODE_EXCLUSIVE' specifies that access to any range or image+-- subresource of the object will be exclusive to a single queue family at+-- a time.+pattern SHARING_MODE_EXCLUSIVE = SharingMode 0+-- | 'SHARING_MODE_CONCURRENT' specifies that concurrent access to any range+-- or image subresource of the object from multiple queue families is+-- supported.+pattern SHARING_MODE_CONCURRENT = SharingMode 1+{-# complete SHARING_MODE_EXCLUSIVE,+ SHARING_MODE_CONCURRENT :: SharingMode #-}++instance Show SharingMode where+ showsPrec p = \case+ SHARING_MODE_EXCLUSIVE -> showString "SHARING_MODE_EXCLUSIVE"+ SHARING_MODE_CONCURRENT -> showString "SHARING_MODE_CONCURRENT"+ SharingMode x -> showParen (p >= 11) (showString "SharingMode " . showsPrec 11 x)++instance Read SharingMode where+ readPrec = parens (choose [("SHARING_MODE_EXCLUSIVE", pure SHARING_MODE_EXCLUSIVE)+ , ("SHARING_MODE_CONCURRENT", pure SHARING_MODE_CONCURRENT)]+ ++++ prec 10 (do+ expectP (Ident "SharingMode")+ v <- step readPrec+ pure (SharingMode v)))+
+ src/Graphics/Vulkan/Core10/Enums/SparseImageFormatFlagBits.hs view
@@ -0,0 +1,65 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.SparseImageFormatFlagBits ( SparseImageFormatFlagBits( SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT+ , SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT+ , SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT+ , ..+ )+ , SparseImageFormatFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkSparseImageFormatFlagBits - Bitmask specifying additional information+-- about a sparse image resource+--+-- = See Also+--+-- 'SparseImageFormatFlags'+newtype SparseImageFormatFlagBits = SparseImageFormatFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT' specifies that the image uses a+-- single mip tail region for all array layers.+pattern SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = SparseImageFormatFlagBits 0x00000001+-- | 'SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT' specifies that the first mip+-- level whose dimensions are not integer multiples of the corresponding+-- dimensions of the sparse image block begins the mip tail region.+pattern SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = SparseImageFormatFlagBits 0x00000002+-- | 'SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT' specifies that the+-- image uses non-standard sparse image block dimensions, and the+-- @imageGranularity@ values do not match the standard sparse image block+-- dimensions for the given format.+pattern SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = SparseImageFormatFlagBits 0x00000004++type SparseImageFormatFlags = SparseImageFormatFlagBits++instance Show SparseImageFormatFlagBits where+ showsPrec p = \case+ SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT -> showString "SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT"+ SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT -> showString "SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT"+ SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT -> showString "SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT"+ SparseImageFormatFlagBits x -> showParen (p >= 11) (showString "SparseImageFormatFlagBits 0x" . showHex x)++instance Read SparseImageFormatFlagBits where+ readPrec = parens (choose [("SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT", pure SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT)+ , ("SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT", pure SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT)+ , ("SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT", pure SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT)]+ ++++ prec 10 (do+ expectP (Ident "SparseImageFormatFlagBits")+ v <- step readPrec+ pure (SparseImageFormatFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/SparseMemoryBindFlagBits.hs view
@@ -0,0 +1,50 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.SparseMemoryBindFlagBits ( SparseMemoryBindFlagBits( SPARSE_MEMORY_BIND_METADATA_BIT+ , ..+ )+ , SparseMemoryBindFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkSparseMemoryBindFlagBits - Bitmask specifying usage of a sparse memory+-- binding operation+--+-- = See Also+--+-- 'SparseMemoryBindFlags'+newtype SparseMemoryBindFlagBits = SparseMemoryBindFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'SPARSE_MEMORY_BIND_METADATA_BIT' specifies that the memory being bound+-- is only for the metadata aspect.+pattern SPARSE_MEMORY_BIND_METADATA_BIT = SparseMemoryBindFlagBits 0x00000001++type SparseMemoryBindFlags = SparseMemoryBindFlagBits++instance Show SparseMemoryBindFlagBits where+ showsPrec p = \case+ SPARSE_MEMORY_BIND_METADATA_BIT -> showString "SPARSE_MEMORY_BIND_METADATA_BIT"+ SparseMemoryBindFlagBits x -> showParen (p >= 11) (showString "SparseMemoryBindFlagBits 0x" . showHex x)++instance Read SparseMemoryBindFlagBits where+ readPrec = parens (choose [("SPARSE_MEMORY_BIND_METADATA_BIT", pure SPARSE_MEMORY_BIND_METADATA_BIT)]+ ++++ prec 10 (do+ expectP (Ident "SparseMemoryBindFlagBits")+ v <- step readPrec+ pure (SparseMemoryBindFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/StencilFaceFlagBits.hs view
@@ -0,0 +1,63 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.StencilFaceFlagBits ( StencilFaceFlagBits( STENCIL_FACE_FRONT_BIT+ , STENCIL_FACE_BACK_BIT+ , STENCIL_FACE_FRONT_AND_BACK+ , ..+ )+ , StencilFaceFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkStencilFaceFlagBits - Bitmask specifying sets of stencil state for+-- which to update the compare mask+--+-- = See Also+--+-- 'StencilFaceFlags'+newtype StencilFaceFlagBits = StencilFaceFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'STENCIL_FACE_FRONT_BIT' specifies that only the front set of stencil+-- state is updated.+pattern STENCIL_FACE_FRONT_BIT = StencilFaceFlagBits 0x00000001+-- | 'STENCIL_FACE_BACK_BIT' specifies that only the back set of stencil+-- state is updated.+pattern STENCIL_FACE_BACK_BIT = StencilFaceFlagBits 0x00000002+-- | 'STENCIL_FACE_FRONT_AND_BACK' is the combination of+-- 'STENCIL_FACE_FRONT_BIT' and 'STENCIL_FACE_BACK_BIT', and specifies that+-- both sets of stencil state are updated.+pattern STENCIL_FACE_FRONT_AND_BACK = StencilFaceFlagBits 0x00000003++type StencilFaceFlags = StencilFaceFlagBits++instance Show StencilFaceFlagBits where+ showsPrec p = \case+ STENCIL_FACE_FRONT_BIT -> showString "STENCIL_FACE_FRONT_BIT"+ STENCIL_FACE_BACK_BIT -> showString "STENCIL_FACE_BACK_BIT"+ STENCIL_FACE_FRONT_AND_BACK -> showString "STENCIL_FACE_FRONT_AND_BACK"+ StencilFaceFlagBits x -> showParen (p >= 11) (showString "StencilFaceFlagBits 0x" . showHex x)++instance Read StencilFaceFlagBits where+ readPrec = parens (choose [("STENCIL_FACE_FRONT_BIT", pure STENCIL_FACE_FRONT_BIT)+ , ("STENCIL_FACE_BACK_BIT", pure STENCIL_FACE_BACK_BIT)+ , ("STENCIL_FACE_FRONT_AND_BACK", pure STENCIL_FACE_FRONT_AND_BACK)]+ ++++ prec 10 (do+ expectP (Ident "StencilFaceFlagBits")+ v <- step readPrec+ pure (StencilFaceFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/StencilFaceFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.StencilFaceFlagBits ( StencilFaceFlagBits+ , StencilFaceFlags+ ) where++++data StencilFaceFlagBits++type StencilFaceFlags = StencilFaceFlagBits+
+ src/Graphics/Vulkan/Core10/Enums/StencilOp.hs view
@@ -0,0 +1,115 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.StencilOp (StencilOp( STENCIL_OP_KEEP+ , STENCIL_OP_ZERO+ , STENCIL_OP_REPLACE+ , STENCIL_OP_INCREMENT_AND_CLAMP+ , STENCIL_OP_DECREMENT_AND_CLAMP+ , STENCIL_OP_INVERT+ , STENCIL_OP_INCREMENT_AND_WRAP+ , STENCIL_OP_DECREMENT_AND_WRAP+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkStencilOp - Stencil comparison function+--+-- = Description+--+-- For purposes of increment and decrement, the stencil bits are considered+-- as an unsigned integer.+--+-- If the stencil test fails, the sample’s coverage bit is cleared in the+-- fragment. If there is no stencil framebuffer attachment, stencil+-- modification /cannot/ occur, and it is as if the stencil tests always+-- pass.+--+-- If the stencil test passes, the @writeMask@ member of the+-- 'Graphics.Vulkan.Core10.Pipeline.StencilOpState' structures controls how+-- the updated stencil value is written to the stencil framebuffer+-- attachment.+--+-- The least significant s bits of @writeMask@, where s is the number of+-- bits in the stencil framebuffer attachment, specify an integer mask.+-- Where a 1 appears in this mask, the corresponding bit in the stencil+-- value in the depth\/stencil attachment is written; where a 0 appears,+-- the bit is not written. The @writeMask@ value uses either the+-- front-facing or back-facing state based on the facingness of the+-- fragment. Fragments generated by front-facing primitives use the front+-- mask and fragments generated by back-facing primitives use the back+-- mask.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.StencilOpState'+newtype StencilOp = StencilOp Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'STENCIL_OP_KEEP' keeps the current value.+pattern STENCIL_OP_KEEP = StencilOp 0+-- | 'STENCIL_OP_ZERO' sets the value to 0.+pattern STENCIL_OP_ZERO = StencilOp 1+-- | 'STENCIL_OP_REPLACE' sets the value to @reference@.+pattern STENCIL_OP_REPLACE = StencilOp 2+-- | 'STENCIL_OP_INCREMENT_AND_CLAMP' increments the current value and clamps+-- to the maximum representable unsigned value.+pattern STENCIL_OP_INCREMENT_AND_CLAMP = StencilOp 3+-- | 'STENCIL_OP_DECREMENT_AND_CLAMP' decrements the current value and clamps+-- to 0.+pattern STENCIL_OP_DECREMENT_AND_CLAMP = StencilOp 4+-- | 'STENCIL_OP_INVERT' bitwise-inverts the current value.+pattern STENCIL_OP_INVERT = StencilOp 5+-- | 'STENCIL_OP_INCREMENT_AND_WRAP' increments the current value and wraps+-- to 0 when the maximum value would have been exceeded.+pattern STENCIL_OP_INCREMENT_AND_WRAP = StencilOp 6+-- | 'STENCIL_OP_DECREMENT_AND_WRAP' decrements the current value and wraps+-- to the maximum possible value when the value would go below 0.+pattern STENCIL_OP_DECREMENT_AND_WRAP = StencilOp 7+{-# complete STENCIL_OP_KEEP,+ STENCIL_OP_ZERO,+ STENCIL_OP_REPLACE,+ STENCIL_OP_INCREMENT_AND_CLAMP,+ STENCIL_OP_DECREMENT_AND_CLAMP,+ STENCIL_OP_INVERT,+ STENCIL_OP_INCREMENT_AND_WRAP,+ STENCIL_OP_DECREMENT_AND_WRAP :: StencilOp #-}++instance Show StencilOp where+ showsPrec p = \case+ STENCIL_OP_KEEP -> showString "STENCIL_OP_KEEP"+ STENCIL_OP_ZERO -> showString "STENCIL_OP_ZERO"+ STENCIL_OP_REPLACE -> showString "STENCIL_OP_REPLACE"+ STENCIL_OP_INCREMENT_AND_CLAMP -> showString "STENCIL_OP_INCREMENT_AND_CLAMP"+ STENCIL_OP_DECREMENT_AND_CLAMP -> showString "STENCIL_OP_DECREMENT_AND_CLAMP"+ STENCIL_OP_INVERT -> showString "STENCIL_OP_INVERT"+ STENCIL_OP_INCREMENT_AND_WRAP -> showString "STENCIL_OP_INCREMENT_AND_WRAP"+ STENCIL_OP_DECREMENT_AND_WRAP -> showString "STENCIL_OP_DECREMENT_AND_WRAP"+ StencilOp x -> showParen (p >= 11) (showString "StencilOp " . showsPrec 11 x)++instance Read StencilOp where+ readPrec = parens (choose [("STENCIL_OP_KEEP", pure STENCIL_OP_KEEP)+ , ("STENCIL_OP_ZERO", pure STENCIL_OP_ZERO)+ , ("STENCIL_OP_REPLACE", pure STENCIL_OP_REPLACE)+ , ("STENCIL_OP_INCREMENT_AND_CLAMP", pure STENCIL_OP_INCREMENT_AND_CLAMP)+ , ("STENCIL_OP_DECREMENT_AND_CLAMP", pure STENCIL_OP_DECREMENT_AND_CLAMP)+ , ("STENCIL_OP_INVERT", pure STENCIL_OP_INVERT)+ , ("STENCIL_OP_INCREMENT_AND_WRAP", pure STENCIL_OP_INCREMENT_AND_WRAP)+ , ("STENCIL_OP_DECREMENT_AND_WRAP", pure STENCIL_OP_DECREMENT_AND_WRAP)]+ ++++ prec 10 (do+ expectP (Ident "StencilOp")+ v <- step readPrec+ pure (StencilOp v)))+
+ src/Graphics/Vulkan/Core10/Enums/StructureType.hs view
@@ -0,0 +1,2867 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.StructureType (StructureType( STRUCTURE_TYPE_APPLICATION_INFO+ , STRUCTURE_TYPE_INSTANCE_CREATE_INFO+ , STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO+ , STRUCTURE_TYPE_DEVICE_CREATE_INFO+ , STRUCTURE_TYPE_SUBMIT_INFO+ , STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO+ , STRUCTURE_TYPE_MAPPED_MEMORY_RANGE+ , STRUCTURE_TYPE_BIND_SPARSE_INFO+ , STRUCTURE_TYPE_FENCE_CREATE_INFO+ , STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO+ , STRUCTURE_TYPE_EVENT_CREATE_INFO+ , STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO+ , STRUCTURE_TYPE_BUFFER_CREATE_INFO+ , STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO+ , STRUCTURE_TYPE_IMAGE_CREATE_INFO+ , STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO+ , STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO+ , STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO+ , STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO+ , STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO+ , STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO+ , STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO+ , STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO+ , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO+ , STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO+ , STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO+ , STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO+ , STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO+ , STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO+ , STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO+ , STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO+ , STRUCTURE_TYPE_SAMPLER_CREATE_INFO+ , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO+ , STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO+ , STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO+ , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET+ , STRUCTURE_TYPE_COPY_DESCRIPTOR_SET+ , STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO+ , STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO+ , STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO+ , STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO+ , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO+ , STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO+ , STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO+ , STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER+ , STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER+ , STRUCTURE_TYPE_MEMORY_BARRIER+ , STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO+ , STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO+ , STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM+ , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT+ , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR+ , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR+ , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR+ , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR+ , STRUCTURE_TYPE_PIPELINE_INFO_KHR+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT+ , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT+ , STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT+ , STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT+ , STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT+ , STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT+ , STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV+ , STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV+ , STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV+ , STRUCTURE_TYPE_VALIDATION_FEATURES_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT+ , STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV+ , STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR+ , STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT+ , STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT+ , STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT+ , STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT+ , STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA+ , STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD+ , STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT+ , STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL+ , STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL+ , STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL+ , STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL+ , STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL+ , STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL+ , STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV+ , STRUCTURE_TYPE_CHECKPOINT_DATA_NV+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV+ , STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV+ , STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT+ , STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT+ , STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT+ , STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD+ , STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT+ , STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT+ , STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT+ , STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT+ , STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT+ , STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT+ , STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV+ , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV+ , STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV+ , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV+ , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV+ , STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV+ , STRUCTURE_TYPE_GEOMETRY_AABB_NV+ , STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV+ , STRUCTURE_TYPE_GEOMETRY_NV+ , STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV+ , STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV+ , STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV+ , STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV+ , STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT+ , STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT+ , STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT+ , STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT+ , STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT+ , STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT+ , STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV+ , STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV+ , STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV+ , STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT+ , STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT+ , STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT+ , STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT+ , STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT+ , STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT+ , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT+ , STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID+ , STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID+ , STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID+ , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID+ , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID+ , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID+ , STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT+ , STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT+ , STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT+ , STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT+ , STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT+ , STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK+ , STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK+ , STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR+ , STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR+ , STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR+ , STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR+ , STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR+ , STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR+ , STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR+ , STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR+ , STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR+ , STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR+ , STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR+ , STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR+ , STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR+ , STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR+ , STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR+ , STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR+ , STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR+ , STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR+ , STRUCTURE_TYPE_HDR_METADATA_EXT+ , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT+ , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT+ , STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT+ , STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX+ , STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE+ , STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT+ , STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT+ , STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT+ , STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT+ , STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT+ , STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV+ , STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX+ , STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX+ , STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX+ , STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX+ , STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX+ , STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX+ , STRUCTURE_TYPE_PRESENT_REGIONS_KHR+ , STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT+ , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR+ , STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR+ , STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR+ , STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR+ , STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR+ , STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR+ , STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR+ , STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR+ , STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR+ , STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR+ , STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR+ , STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR+ , STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR+ , STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR+ , STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT+ , STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT+ , STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN+ , STRUCTURE_TYPE_VALIDATION_FLAGS_EXT+ , STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR+ , STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR+ , STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR+ , STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR+ , STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR+ , STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR+ , STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV+ , STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV+ , STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV+ , STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV+ , STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV+ , STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP+ , STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD+ , STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX+ , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT+ , STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV+ , STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV+ , STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV+ , STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT+ , STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT+ , STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT+ , STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD+ , STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT+ , STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR+ , STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR+ , STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR+ , STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR+ , STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR+ , STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR+ , STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR+ , STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR+ , STRUCTURE_TYPE_PRESENT_INFO_KHR+ , STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR+ , STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO+ , STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO+ , STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO+ , STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES+ , STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO+ , STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO+ , STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO+ , STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES+ , STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT+ , STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES+ , STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO+ , STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO+ , STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES+ , STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES+ , STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES+ , STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES+ , STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT+ , STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES+ , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES+ , STRUCTURE_TYPE_SUBPASS_END_INFO+ , STRUCTURE_TYPE_SUBPASS_BEGIN_INFO+ , STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2+ , STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2+ , STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2+ , STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2+ , STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2+ , STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES+ , STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES+ , STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO+ , STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO+ , STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO+ , STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO+ , STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO+ , STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO+ , STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES+ , STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO+ , STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO+ , STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO+ , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES+ , STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO+ , STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO+ , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO+ , STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO+ , STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES+ , STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES+ , STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO+ , STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO+ , STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO+ , STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2+ , STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2+ , STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2+ , STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2+ , STRUCTURE_TYPE_FORMAT_PROPERTIES_2+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2+ , STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2+ , STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2+ , STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2+ , STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2+ , STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2+ , STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES+ , STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO+ , STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO+ , STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO+ , STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO+ , STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO+ , STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO+ , STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO+ , STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO+ , STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES+ , STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO+ , STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO+ , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkStructureType - Vulkan structure types (@stype@)+--+-- = Description+--+-- Each value corresponds to a particular structure with a @sType@ member+-- with a matching name. As a general rule, the name of each+-- 'StructureType' value is obtained by taking the name of the structure,+-- stripping the leading @Vk@, prefixing each capital letter with @_@,+-- converting the entire resulting string to upper case, and prefixing it+-- with @VK_STRUCTURE_TYPE_@. For example, structures of type+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' correspond to a+-- 'StructureType' of 'STRUCTURE_TYPE_IMAGE_CREATE_INFO', and thus its+-- @sType@ member /must/ equal that when it is passed to the API.+--+-- The values 'STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO' and+-- 'STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO' are reserved for internal use+-- by the loader, and do not have corresponding Vulkan structures in this+-- Specification.+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.AcquireNextImageInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.AcquireProfilingLockInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID',+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferPropertiesANDROID',+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferUsageANDROID',+-- 'Graphics.Vulkan.Extensions.VK_KHR_android_surface.AndroidSurfaceCreateInfoKHR',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.ApplicationInfo',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentReference2',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentReferenceStencilLayout',+-- 'Graphics.Vulkan.CStruct.Extends.BaseInStructure',+-- 'Graphics.Vulkan.CStruct.Extends.BaseOutStructure',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindBufferMemoryDeviceGroupInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.BindImageMemorySwapchainInfoKHR',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.BindSparseInfo',+-- 'Graphics.Vulkan.Core10.Buffer.BufferCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferDeviceAddressInfo',+-- 'Graphics.Vulkan.Core10.OtherTypes.BufferMemoryBarrier',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.BufferMemoryRequirementsInfo2',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferOpaqueCaptureAddressCreateInfo',+-- 'Graphics.Vulkan.Core10.BufferView.BufferViewCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_calibrated_timestamps.CalibratedTimestampInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.CheckpointDataNV',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdProcessCommandsInfoNVX',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdReserveSpaceForCommandsInfoNVX',+-- 'Graphics.Vulkan.Core10.CommandBuffer.CommandBufferAllocateInfo',+-- 'Graphics.Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT',+-- 'Graphics.Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',+-- 'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM',+-- 'Graphics.Vulkan.Core10.CommandPool.CommandPoolCreateInfo',+-- 'Graphics.Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix.CooperativeMatrixPropertiesNV',+-- 'Graphics.Vulkan.Core10.DescriptorSet.CopyDescriptorSet',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.D3D12FenceSubmitInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.DebugMarkerMarkerInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.DebugMarkerObjectNameInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.DebugMarkerObjectTagInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.DebugReportCallbackCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsLabelEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCallbackDataEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsMessengerCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectNameInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectTagInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationImageCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV',+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.DescriptorPoolInlineUniformBlockCreateInfoEXT',+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetLayoutBindingFlagsCreateInfo',+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.DescriptorSetLayoutSupport',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetVariableDescriptorCountAllocateInfo',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetVariableDescriptorCountLayoutSupport',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateCreateInfo',+-- 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.DeviceEventInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.DeviceGeneratedCommandsFeaturesNVX',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.DeviceGeneratedCommandsLimitsNVX',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupBindSparseInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupCommandBufferBeginInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.DeviceGroupDeviceCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupPresentCapabilitiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupPresentInfoKHR',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupSubmitInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupSwapchainCreateInfoKHR',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.DeviceMemoryOpaqueCaptureAddressInfo',+-- 'Graphics.Vulkan.Extensions.VK_AMD_memory_overallocation_behavior.DeviceMemoryOverallocationCreateInfoAMD',+-- 'Graphics.Vulkan.Core10.Device.DeviceQueueCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_global_priority.DeviceQueueGlobalPriorityCreateInfoEXT',+-- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.DeviceQueueInfo2',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.DisplayEventInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplayModeCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayModeProperties2KHR',+-- 'Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr.DisplayNativeHdrSurfaceCapabilitiesAMD',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayPlaneCapabilities2KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayPlaneInfo2KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayPlaneProperties2KHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.DisplayPowerInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.DisplayPresentInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayProperties2KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplaySurfaceCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesListEXT',+-- 'Graphics.Vulkan.Core10.Event.EventCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence.ExportFenceCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.ExportFenceWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.ExportMemoryAllocateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.ExportMemoryWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.ExportMemoryWin32HandleInfoNV',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore.ExportSemaphoreCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.ExportSemaphoreWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.ExternalFenceProperties',+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.ExternalMemoryImageCreateInfoNV',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.ExternalSemaphoreProperties',+-- 'Graphics.Vulkan.Core10.Fence.FenceCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.FenceGetFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.FenceGetWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentImageInfo',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo',+-- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode.FramebufferMixedSamplesCombinationNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata.HdrMetadataEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_headless_surface.HeadlessSurfaceCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_MVK_ios_surface.IOSSurfaceCreateInfoMVK',+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierExplicitCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierListCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierPropertiesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2',+-- 'Graphics.Vulkan.Core10.OtherTypes.ImageMemoryBarrier',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.ImageMemoryRequirementsInfo2',+-- 'Graphics.Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface.ImagePipeSurfaceCreateInfoFUCHSIA',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.ImagePlaneMemoryRequirementsInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.ImageSparseMemoryRequirementsInfo2',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_astc_decode_mode.ImageViewASTCDecodeModeEXT',+-- 'Graphics.Vulkan.Core10.ImageView.ImageViewCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewHandleInfoNVX',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.ImageViewUsageCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.ImportFenceFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.ImportFenceWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.ImportMemoryFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.ImportMemoryHostPointerInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.ImportMemoryWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.ImportMemoryWin32HandleInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.ImportSemaphoreFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.ImportSemaphoreWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.IndirectCommandsLayoutCreateInfoNVX',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.InitializePerformanceApiInfoINTEL',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.InstanceCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_MVK_macos_surface.MacOSSurfaceCreateInfoMVK',+-- 'Graphics.Vulkan.Core10.Memory.MappedMemoryRange',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.MemoryAllocateFlagsInfo',+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo',+-- 'Graphics.Vulkan.Core10.OtherTypes.MemoryBarrier',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryFdPropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.MemoryGetAndroidHardwareBufferInfoANDROID',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryGetFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryGetWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.MemoryHostPointerPropertiesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.MemoryOpaqueCaptureAddressAllocateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_memory_priority.MemoryPriorityAllocateInfoEXT',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryWin32HandlePropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_metal_surface.MetalSurfaceCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.ObjectTableCreateInfoNVX',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.PerformanceConfigurationAcquireInfoINTEL',+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterDescriptionKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterKHR',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.PerformanceMarkerInfoINTEL',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.PerformanceOverrideInfoINTEL',+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PerformanceQuerySubmitInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.PerformanceStreamMarkerInfoINTEL',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage.PhysicalDevice16BitStorageFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage.PhysicalDevice8BitStorageFeatures',+-- 'Graphics.Vulkan.Extensions.VK_EXT_astc_decode_mode.PhysicalDeviceASTCDecodeFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures',+-- 'Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_AMD_device_coherent_memory.PhysicalDeviceCoherentMemoryFeaturesAMD',+-- 'Graphics.Vulkan.Extensions.VK_NV_compute_shader_derivatives.PhysicalDeviceComputeShaderDerivativesFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering.PhysicalDeviceConditionalRenderingFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization.PhysicalDeviceConservativeRasterizationPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixPropertiesNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_corner_sampled_image.PhysicalDeviceCornerSampledImageFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode.PhysicalDeviceCoverageReductionModeFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing.PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable.PhysicalDeviceDepthClipEnableFeaturesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',+-- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.PhysicalDeviceDriverProperties',+-- 'Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalBufferInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.PhysicalDeviceExternalFenceInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.PhysicalDeviceExternalSemaphoreInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls.PhysicalDeviceFloatControlsProperties',+-- 'Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_fragment_shader_barycentric.PhysicalDeviceFragmentShaderBarycentricFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_fragment_shader_interlock.PhysicalDeviceFragmentShaderInterlockFeaturesEXT',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.PhysicalDeviceGroupProperties',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.PhysicalDeviceHostQueryResetFeatures',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties',+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.PhysicalDeviceImageDrmFormatModifierInfoEXT',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2',+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.PhysicalDeviceImageViewImageFormatInfoEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.PhysicalDeviceImagelessFramebufferFeatures',+-- 'Graphics.Vulkan.Extensions.VK_EXT_index_type_uint8.PhysicalDeviceIndexTypeUint8FeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationPropertiesEXT',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',+-- 'Graphics.Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_memory_priority.PhysicalDeviceMemoryPriorityFeaturesEXT',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceMemoryProperties2',+-- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderPropertiesNV',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewFeatures',+-- 'Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties',+-- 'Graphics.Vulkan.Extensions.VK_EXT_pci_bus_info.PhysicalDevicePCIBusInfoPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryFeaturesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryPropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PhysicalDevicePipelineExecutablePropertiesFeaturesKHR',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PhysicalDevicePointClippingProperties',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures',+-- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.PhysicalDevicePushDescriptorPropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test.PhysicalDeviceRepresentativeFragmentTestFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.PhysicalDeviceSamplerFilterMinmaxProperties',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.PhysicalDeviceSamplerYcbcrConversionFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout.PhysicalDeviceScalarBlockLayoutFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.PhysicalDeviceSeparateDepthStencilLayoutsFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64.PhysicalDeviceShaderAtomicInt64Features',+-- 'Graphics.Vulkan.Extensions.VK_KHR_shader_clock.PhysicalDeviceShaderClockFeaturesKHR',+-- 'Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties2.PhysicalDeviceShaderCoreProperties2AMD',+-- 'Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties.PhysicalDeviceShaderCorePropertiesAMD',+-- 'Graphics.Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation.PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters.PhysicalDeviceShaderDrawParametersFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8.PhysicalDeviceShaderFloat16Int8Features',+-- 'Graphics.Vulkan.Extensions.VK_NV_shader_image_footprint.PhysicalDeviceShaderImageFootprintFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_shader_integer_functions2.PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL',+-- 'Graphics.Vulkan.Extensions.VK_NV_shader_sm_builtins.PhysicalDeviceShaderSMBuiltinsFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_shader_sm_builtins.PhysicalDeviceShaderSMBuiltinsPropertiesNV',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types.PhysicalDeviceShaderSubgroupExtendedTypesFeatures',+-- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImageFeaturesNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImagePropertiesNV',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceSparseImageFormatInfo2',+-- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties',+-- 'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr.PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreFeatures',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreProperties',+-- 'Graphics.Vulkan.Extensions.VK_EXT_tooling_info.PhysicalDeviceToolPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout.PhysicalDeviceUniformBufferStandardLayoutFeatures',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers.PhysicalDeviceVariablePointersFeatures',+-- 'Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesEXT',+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan11Features',+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan11Properties',+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan12Features',+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan12Properties',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model.PhysicalDeviceVulkanMemoryModelFeatures',+-- 'Graphics.Vulkan.Extensions.VK_EXT_ycbcr_image_arrays.PhysicalDeviceYcbcrImageArraysFeaturesEXT',+-- 'Graphics.Vulkan.Core10.PipelineCache.PipelineCacheCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD',+-- 'Graphics.Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableInternalRepresentationKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutablePropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableStatisticKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineInfoKHR',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo',+-- 'Graphics.Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_AMD_rasterization_order.PipelineRasterizationStateRasterizationOrderAMD',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PipelineTessellationDomainOriginStateCreateInfo',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfoEXT',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportCoarseSampleOrderStateCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_GGP_frame_token.PresentFrameTokenGGP',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_incremental_present.PresentRegionsKHR',+-- 'Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing.PresentTimesInfoGOOGLE',+-- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.ProtectedSubmitInfo',+-- 'Graphics.Vulkan.Core10.Query.QueryPoolCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.QueryPoolCreateInfoINTEL',+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.QueryPoolPerformanceCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.QueueFamilyCheckpointPropertiesNV',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingShaderGroupCreateInfoNV',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo',+-- 'Graphics.Vulkan.Core10.Pass.RenderPassCreateInfo',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.RenderPassCreateInfo2',+-- 'Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.RenderPassInputAttachmentAspectCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.RenderPassSampleLocationsBeginInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT',+-- 'Graphics.Vulkan.Core10.Sampler.SamplerCreateInfo',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionImageFormatProperties',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo',+-- 'Graphics.Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.SemaphoreGetFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.SemaphoreGetWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreSignalInfo',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo',+-- 'Graphics.Vulkan.Core10.Shader.ShaderModuleCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.ShaderModuleValidationCacheCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.SharedPresentSurfaceCapabilitiesKHR',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.SparseImageFormatProperties2',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.SparseImageMemoryRequirements2',+-- 'Graphics.Vulkan.Extensions.VK_GGP_stream_descriptor_surface.StreamDescriptorSurfaceCreateInfoGGP',+-- 'Graphics.Vulkan.Core10.Queue.SubmitInfo',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassBeginInfo',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDependency2',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassEndInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCapabilities2EXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceCapabilitiesFullScreenExclusiveEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceFormat2KHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveWin32InfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface_protected_capabilities.SurfaceProtectedCapabilitiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.SwapchainCounterCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr.SwapchainDisplayNativeHdrCreateInfoAMD',+-- 'Graphics.Vulkan.Extensions.VK_AMD_texture_gather_bias_lod.TextureLODGatherFormatPropertiesAMD',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.ValidationCacheCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_features.ValidationFeaturesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_flags.ValidationFlagsEXT',+-- 'Graphics.Vulkan.Extensions.VK_NN_vi_surface.ViSurfaceCreateInfoNN',+-- 'Graphics.Vulkan.Extensions.VK_KHR_wayland_surface.WaylandSurfaceCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_win32_surface.Win32SurfaceCreateInfoKHR',+-- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlockEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_xcb_surface.XcbSurfaceCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_xlib_surface.XlibSurfaceCreateInfoKHR'+newtype StructureType = StructureType Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_APPLICATION_INFO"+pattern STRUCTURE_TYPE_APPLICATION_INFO = StructureType 0+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO"+pattern STRUCTURE_TYPE_INSTANCE_CREATE_INFO = StructureType 1+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO"+pattern STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = StructureType 2+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO"+pattern STRUCTURE_TYPE_DEVICE_CREATE_INFO = StructureType 3+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBMIT_INFO"+pattern STRUCTURE_TYPE_SUBMIT_INFO = StructureType 4+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO"+pattern STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = StructureType 5+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE"+pattern STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = StructureType 6+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO"+pattern STRUCTURE_TYPE_BIND_SPARSE_INFO = StructureType 7+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO"+pattern STRUCTURE_TYPE_FENCE_CREATE_INFO = StructureType 8+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO"+pattern STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = StructureType 9+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO"+pattern STRUCTURE_TYPE_EVENT_CREATE_INFO = StructureType 10+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO"+pattern STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = StructureType 11+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO"+pattern STRUCTURE_TYPE_BUFFER_CREATE_INFO = StructureType 12+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"+pattern STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = StructureType 13+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO"+pattern STRUCTURE_TYPE_IMAGE_CREATE_INFO = StructureType 14+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO"+pattern STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = StructureType 15+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"+pattern STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = StructureType 16+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = StructureType 17+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = StructureType 18+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = StructureType 19+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = StructureType 20+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = StructureType 21+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = StructureType 22+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = StructureType 23+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = StructureType 24+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = StructureType 25+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = StructureType 26+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = StructureType 27+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO"+pattern STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = StructureType 28+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO"+pattern STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = StructureType 29+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = StructureType 30+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO"+pattern STRUCTURE_TYPE_SAMPLER_CREATE_INFO = StructureType 31+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = StructureType 32+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO"+pattern STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = StructureType 33+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO"+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = StructureType 34+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET"+pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = StructureType 35+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET"+pattern STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = StructureType 36+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"+pattern STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = StructureType 37+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"+pattern STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = StructureType 38+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"+pattern STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = StructureType 39+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"+pattern STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = StructureType 40+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"+pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = StructureType 41+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"+pattern STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = StructureType 42+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"+pattern STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = StructureType 43+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"+pattern STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = StructureType 44+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER"+pattern STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = StructureType 45+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_BARRIER"+pattern STRUCTURE_TYPE_MEMORY_BARRIER = StructureType 46+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO"+pattern STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = StructureType 47+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO"+pattern STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = StructureType 48+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM"+pattern STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = StructureType 1000282001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM"+pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = StructureType 1000282000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = StructureType 1000281001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = StructureType 1000281000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = StructureType 1000276000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR"+pattern STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = StructureType 1000269005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR"+pattern STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = StructureType 1000269004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR"+pattern STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = StructureType 1000269003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = StructureType 1000269002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR"+pattern STRUCTURE_TYPE_PIPELINE_INFO_KHR = StructureType 1000269001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = StructureType 1000269000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = StructureType 1000265000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = StructureType 1000259002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = StructureType 1000259001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = StructureType 1000259000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = StructureType 1000256000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT"+pattern STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = StructureType 1000255001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT"+pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = StructureType 1000255002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT"+pattern STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = StructureType 1000255000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = StructureType 1000252000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = StructureType 1000251000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV"+pattern STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = StructureType 1000250002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = StructureType 1000250001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = StructureType 1000250000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = StructureType 1000249002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV"+pattern STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = StructureType 1000249001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = StructureType 1000249000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT"+pattern STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = StructureType 1000247000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = StructureType 1000245000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = StructureType 1000244002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = StructureType 1000244000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = StructureType 1000240000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR"+pattern STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = StructureType 1000239000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT"+pattern STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = StructureType 1000238001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = StructureType 1000238000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = StructureType 1000237000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = StructureType 1000229000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = StructureType 1000227000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = StructureType 1000225002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = StructureType 1000225001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = StructureType 1000225000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = StructureType 1000218002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = StructureType 1000218001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = StructureType 1000218000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = StructureType 1000217000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA"+pattern STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = StructureType 1000214000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD"+pattern STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = StructureType 1000213001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD"+pattern STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = StructureType 1000213000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = StructureType 1000212000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL"+pattern STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = StructureType 1000210005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL"+pattern STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = StructureType 1000210004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL"+pattern STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = StructureType 1000210003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL"+pattern STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = StructureType 1000210002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL"+pattern STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = StructureType 1000210001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL"+pattern STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = StructureType 1000210000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = StructureType 1000209000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV"+pattern STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = StructureType 1000206001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV"+pattern STRUCTURE_TYPE_CHECKPOINT_DATA_NV = StructureType 1000206000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = StructureType 1000205002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = StructureType 1000205000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = StructureType 1000204000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = StructureType 1000203000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = StructureType 1000202001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = StructureType 1000202000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = StructureType 1000201000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = StructureType 1000192000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP"+pattern STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = StructureType 1000191000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = StructureType 1000190002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = StructureType 1000190001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = StructureType 1000190000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD"+pattern STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = StructureType 1000189000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = StructureType 1000185000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT"+pattern STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = StructureType 1000184000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD"+pattern STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = StructureType 1000183000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = StructureType 1000181000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = StructureType 1000178002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = StructureType 1000178001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT"+pattern STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = StructureType 1000178000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = StructureType 1000174000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = StructureType 1000170001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = StructureType 1000170000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = StructureType 1000166001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = StructureType 1000166000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = StructureType 1000165012+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = StructureType 1000165011+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = StructureType 1000165009+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = StructureType 1000165008+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV"+pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = StructureType 1000165007+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV"+pattern STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = StructureType 1000165006+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV"+pattern STRUCTURE_TYPE_GEOMETRY_AABB_NV = StructureType 1000165005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV"+pattern STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = StructureType 1000165004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_GEOMETRY_NV"+pattern STRUCTURE_TYPE_GEOMETRY_NV = StructureType 1000165003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = StructureType 1000165001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = StructureType 1000165000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = StructureType 1000164005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = StructureType 1000164002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = StructureType 1000164001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = StructureType 1000164000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = StructureType 1000160001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = StructureType 1000160000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = StructureType 1000158005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = StructureType 1000158004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = StructureType 1000158003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = StructureType 1000158002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = StructureType 1000158001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT"+pattern STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = StructureType 1000158000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = StructureType 1000154001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = StructureType 1000154000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = StructureType 1000152000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = StructureType 1000149000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = StructureType 1000148002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = StructureType 1000148001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = StructureType 1000148000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = StructureType 1000143004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = StructureType 1000143003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = StructureType 1000143002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"+pattern STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = StructureType 1000143001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"+pattern STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = StructureType 1000143000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = StructureType 1000138003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT"+pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = StructureType 1000138002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = StructureType 1000138001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = StructureType 1000138000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID"+pattern STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = StructureType 1000129005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"+pattern STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = StructureType 1000129004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"+pattern STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = StructureType 1000129003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"+pattern STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = StructureType 1000129002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"+pattern STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = StructureType 1000129001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"+pattern STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = StructureType 1000129000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = StructureType 1000128004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"+pattern STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = StructureType 1000128003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT"+pattern STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = StructureType 1000128002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT"+pattern STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = StructureType 1000128001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT"+pattern STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = StructureType 1000128000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK"+pattern STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = StructureType 1000123000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK"+pattern STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = StructureType 1000122000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR"+pattern STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = StructureType 1000121004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR"+pattern STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = StructureType 1000121003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR"+pattern STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = StructureType 1000121002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR"+pattern STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = StructureType 1000121001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR"+pattern STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = StructureType 1000121000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR"+pattern STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = StructureType 1000119002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR"+pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = StructureType 1000119001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = StructureType 1000119000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR"+pattern STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = StructureType 1000116006+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR"+pattern STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = StructureType 1000116005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR"+pattern STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = StructureType 1000116004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR"+pattern STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = StructureType 1000116003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = StructureType 1000116002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = StructureType 1000116001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = StructureType 1000116000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR"+pattern STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = StructureType 1000115001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR"+pattern STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = StructureType 1000115000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR"+pattern STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = StructureType 1000114002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR"+pattern STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = StructureType 1000114001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR"+pattern STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = StructureType 1000114000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"+pattern STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = StructureType 1000111000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_HDR_METADATA_EXT"+pattern STRUCTURE_TYPE_HDR_METADATA_EXT = StructureType 1000105000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = StructureType 1000102001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = StructureType 1000102000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = StructureType 1000101001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = StructureType 1000101000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = StructureType 1000099001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = StructureType 1000099000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = StructureType 1000098000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = StructureType 1000097000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE"+pattern STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = StructureType 1000092000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = StructureType 1000091003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT"+pattern STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = StructureType 1000091002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT"+pattern STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = StructureType 1000091001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"+pattern STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = StructureType 1000091000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT"+pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = StructureType 1000090000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = StructureType 1000087000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX"+pattern STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = StructureType 1000086005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX"+pattern STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = StructureType 1000086004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX"+pattern STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = StructureType 1000086003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX"+pattern STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = StructureType 1000086002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX"+pattern STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = StructureType 1000086001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX"+pattern STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = StructureType 1000086000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR"+pattern STRUCTURE_TYPE_PRESENT_REGIONS_KHR = StructureType 1000084000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT"+pattern STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = StructureType 1000081002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = StructureType 1000081001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT"+pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = StructureType 1000081000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = StructureType 1000080000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR"+pattern STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = StructureType 1000079001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR"+pattern STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = StructureType 1000079000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR"+pattern STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = StructureType 1000078003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR"+pattern STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = StructureType 1000078002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"+pattern STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = StructureType 1000078001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"+pattern STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = StructureType 1000078000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"+pattern STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = StructureType 1000075000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR"+pattern STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = StructureType 1000074002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = StructureType 1000074001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR"+pattern STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = StructureType 1000074000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR"+pattern STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = StructureType 1000073003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = StructureType 1000073002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR"+pattern STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = StructureType 1000073001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR"+pattern STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = StructureType 1000073000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = StructureType 1000067001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT"+pattern STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = StructureType 1000067000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = StructureType 1000066000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN"+pattern STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = StructureType 1000062000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT"+pattern STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = StructureType 1000061000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = StructureType 1000060012+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"+pattern STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = StructureType 1000060011+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"+pattern STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = StructureType 1000060010+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"+pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = StructureType 1000060009+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = StructureType 1000060008+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"+pattern STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = StructureType 1000060007+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"+pattern STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = StructureType 1000058000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV"+pattern STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = StructureType 1000057001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV"+pattern STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = StructureType 1000057000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV"+pattern STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = StructureType 1000056001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = StructureType 1000056000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = StructureType 1000050000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP"+pattern STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = StructureType 1000049000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD"+pattern STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = StructureType 1000041000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX"+pattern STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = StructureType 1000030000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = StructureType 1000028002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = StructureType 1000028001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = StructureType 1000028000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"+pattern STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = StructureType 1000026002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = StructureType 1000026001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"+pattern STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = StructureType 1000026000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT"+pattern STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = StructureType 1000022002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT"+pattern STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = StructureType 1000022001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT"+pattern STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = StructureType 1000022000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"+pattern STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = StructureType 1000018000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = StructureType 1000011000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = StructureType 1000009000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = StructureType 1000008000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = StructureType 1000006000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = StructureType 1000005000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = StructureType 1000004000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"+pattern STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = StructureType 1000003000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = StructureType 1000002001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = StructureType 1000002000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR"+pattern STRUCTURE_TYPE_PRESENT_INFO_KHR = StructureType 1000001001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = StructureType 1000001000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO"+pattern STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = StructureType 1000257004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO"+pattern STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = StructureType 1000257003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO"+pattern STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = StructureType 1000257002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO"+pattern STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = StructureType 1000244001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = StructureType 1000257000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO"+pattern STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = StructureType 1000207005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO"+pattern STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = StructureType 1000207004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO"+pattern STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = StructureType 1000207003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO"+pattern STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = StructureType 1000207002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = StructureType 1000207001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = StructureType 1000207000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = StructureType 1000261000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT"+pattern STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = StructureType 1000241002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT"+pattern STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = StructureType 1000241001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = StructureType 1000241000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = StructureType 1000175000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = StructureType 1000253000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO"+pattern STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = StructureType 1000108003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO"+pattern STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = StructureType 1000108002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO"+pattern STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = StructureType 1000108001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = StructureType 1000108000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = StructureType 1000211000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO"+pattern STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = StructureType 1000130001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = StructureType 1000130000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO"+pattern STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = StructureType 1000246000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = StructureType 1000221000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE"+pattern STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = StructureType 1000199001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = StructureType 1000199000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT"+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = StructureType 1000161004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO"+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = StructureType 1000161003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = StructureType 1000161002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = StructureType 1000161001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO"+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = StructureType 1000161000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = StructureType 1000197000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = StructureType 1000082000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = StructureType 1000180000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = StructureType 1000196000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = StructureType 1000177000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_END_INFO"+pattern STRUCTURE_TYPE_SUBPASS_END_INFO = StructureType 1000109006+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO"+pattern STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = StructureType 1000109005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2"+pattern STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = StructureType 1000109004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2"+pattern STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = StructureType 1000109003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2"+pattern STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = StructureType 1000109002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2"+pattern STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = StructureType 1000109001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2"+pattern STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = StructureType 1000109000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO"+pattern STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = StructureType 1000147000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = StructureType 52+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = StructureType 51+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = StructureType 50+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = StructureType 49+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = StructureType 1000063000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT"+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = StructureType 1000168001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = StructureType 1000168000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES"+pattern STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = StructureType 1000076001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = StructureType 1000076000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO"+pattern STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = StructureType 1000077000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"+pattern STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = StructureType 1000113000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES"+pattern STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = StructureType 1000112001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = StructureType 1000112000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO"+pattern STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = StructureType 1000072002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO"+pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = StructureType 1000072001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO"+pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = StructureType 1000072000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = StructureType 1000071004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES"+pattern STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = StructureType 1000071003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = StructureType 1000071002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES"+pattern STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = StructureType 1000071001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = StructureType 1000071000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"+pattern STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = StructureType 1000085000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"+pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = StructureType 1000156005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = StructureType 1000156004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"+pattern STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = StructureType 1000156003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"+pattern STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = StructureType 1000156002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"+pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = StructureType 1000156001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"+pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = StructureType 1000156000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2"+pattern STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = StructureType 1000145003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = StructureType 1000145002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = StructureType 1000145001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO"+pattern STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = StructureType 1000145000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = StructureType 1000120000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = StructureType 1000053002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = StructureType 1000053001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO"+pattern STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = StructureType 1000053000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"+pattern STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = StructureType 1000117003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO"+pattern STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = StructureType 1000117002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"+pattern STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = StructureType 1000117001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = StructureType 1000117000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = StructureType 1000059008+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2"+pattern STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = StructureType 1000059007+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = StructureType 1000059006+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2"+pattern STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = StructureType 1000059005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = StructureType 1000059004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2"+pattern STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = StructureType 1000059003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2"+pattern STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = StructureType 1000059002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = StructureType 1000059001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = StructureType 1000059000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"+pattern STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = StructureType 1000146004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2"+pattern STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = StructureType 1000146003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"+pattern STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = StructureType 1000146002+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2"+pattern STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = StructureType 1000146001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2"+pattern STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = StructureType 1000146000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"+pattern STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = StructureType 1000070001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = StructureType 1000070000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"+pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = StructureType 1000060014+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"+pattern STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = StructureType 1000060013+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"+pattern STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = StructureType 1000060006+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"+pattern STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = StructureType 1000060005+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"+pattern STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = StructureType 1000060004+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"+pattern STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = StructureType 1000060003+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"+pattern STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = StructureType 1000060000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO"+pattern STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = StructureType 1000127001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS"+pattern STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = StructureType 1000127000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = StructureType 1000083000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO"+pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = StructureType 1000157001+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO"+pattern STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = StructureType 1000157000+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = StructureType 1000094000+{-# complete STRUCTURE_TYPE_APPLICATION_INFO,+ STRUCTURE_TYPE_INSTANCE_CREATE_INFO,+ STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,+ STRUCTURE_TYPE_DEVICE_CREATE_INFO,+ STRUCTURE_TYPE_SUBMIT_INFO,+ STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,+ STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,+ STRUCTURE_TYPE_BIND_SPARSE_INFO,+ STRUCTURE_TYPE_FENCE_CREATE_INFO,+ STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,+ STRUCTURE_TYPE_EVENT_CREATE_INFO,+ STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,+ STRUCTURE_TYPE_BUFFER_CREATE_INFO,+ STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO,+ STRUCTURE_TYPE_IMAGE_CREATE_INFO,+ STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,+ STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,+ STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO,+ STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,+ STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,+ STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,+ STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,+ STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,+ STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,+ STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,+ STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,+ STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,+ STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,+ STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,+ STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,+ STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO,+ STRUCTURE_TYPE_SAMPLER_CREATE_INFO,+ STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,+ STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,+ STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,+ STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,+ STRUCTURE_TYPE_COPY_DESCRIPTOR_SET,+ STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,+ STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,+ STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,+ STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,+ STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,+ STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,+ STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,+ STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,+ STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,+ STRUCTURE_TYPE_MEMORY_BARRIER,+ STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,+ STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,+ STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM,+ STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT,+ STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR,+ STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR,+ STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR,+ STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR,+ STRUCTURE_TYPE_PIPELINE_INFO_KHR,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT,+ STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT,+ STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT,+ STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT,+ STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT,+ STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT,+ STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV,+ STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV,+ STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV,+ STRUCTURE_TYPE_VALIDATION_FEATURES_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT,+ STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV,+ STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR,+ STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT,+ STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT,+ STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT,+ STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT,+ STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA,+ STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD,+ STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT,+ STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL,+ STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL,+ STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL,+ STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL,+ STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL,+ STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL,+ STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV,+ STRUCTURE_TYPE_CHECKPOINT_DATA_NV,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV,+ STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV,+ STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT,+ STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT,+ STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT,+ STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD,+ STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT,+ STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT,+ STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT,+ STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT,+ STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT,+ STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT,+ STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV,+ STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV,+ STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV,+ STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV,+ STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV,+ STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV,+ STRUCTURE_TYPE_GEOMETRY_AABB_NV,+ STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV,+ STRUCTURE_TYPE_GEOMETRY_NV,+ STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV,+ STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV,+ STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV,+ STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV,+ STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT,+ STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT,+ STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT,+ STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT,+ STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT,+ STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT,+ STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV,+ STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,+ STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,+ STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,+ STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT,+ STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,+ STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,+ STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT,+ STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT,+ STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT,+ STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID,+ STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,+ STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,+ STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID,+ STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID,+ STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID,+ STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT,+ STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT,+ STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT,+ STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT,+ STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT,+ STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK,+ STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,+ STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR,+ STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR,+ STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR,+ STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR,+ STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR,+ STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR,+ STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,+ STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR,+ STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR,+ STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR,+ STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR,+ STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR,+ STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR,+ STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR,+ STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR,+ STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,+ STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,+ STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,+ STRUCTURE_TYPE_HDR_METADATA_EXT,+ STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT,+ STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT,+ STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,+ STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,+ STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE,+ STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT,+ STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT,+ STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT,+ STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,+ STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,+ STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,+ STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX,+ STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX,+ STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX,+ STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX,+ STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX,+ STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX,+ STRUCTURE_TYPE_PRESENT_REGIONS_KHR,+ STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT,+ STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,+ STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR,+ STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR,+ STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,+ STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR,+ STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,+ STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,+ STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,+ STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR,+ STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR,+ STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR,+ STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR,+ STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR,+ STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,+ STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT,+ STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT,+ STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN,+ STRUCTURE_TYPE_VALIDATION_FLAGS_EXT,+ STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,+ STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR,+ STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR,+ STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR,+ STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR,+ STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR,+ STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,+ STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,+ STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,+ STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV,+ STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV,+ STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP,+ STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,+ STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX,+ STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT,+ STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,+ STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,+ STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,+ STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT,+ STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT,+ STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT,+ STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,+ STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,+ STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR,+ STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,+ STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR,+ STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR,+ STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR,+ STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR,+ STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR,+ STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR,+ STRUCTURE_TYPE_PRESENT_INFO_KHR,+ STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,+ STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,+ STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,+ STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,+ STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,+ STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO,+ STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,+ STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,+ STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,+ STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,+ STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,+ STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO,+ STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,+ STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,+ STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,+ STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,+ STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,+ STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,+ STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,+ STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,+ STRUCTURE_TYPE_SUBPASS_END_INFO,+ STRUCTURE_TYPE_SUBPASS_BEGIN_INFO,+ STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,+ STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,+ STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,+ STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,+ STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,+ STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,+ STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,+ STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,+ STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,+ STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,+ STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,+ STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,+ STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,+ STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES,+ STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,+ STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,+ STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,+ STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,+ STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,+ STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,+ STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,+ STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,+ STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES,+ STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,+ STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,+ STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,+ STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,+ STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,+ STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,+ STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,+ STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,+ STRUCTURE_TYPE_FORMAT_PROPERTIES_2,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,+ STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,+ STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,+ STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,+ STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,+ STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,+ STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES,+ STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,+ STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,+ STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,+ STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,+ STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,+ STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,+ STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,+ STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,+ STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,+ STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,+ STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES :: StructureType #-}++instance Show StructureType where+ showsPrec p = \case+ STRUCTURE_TYPE_APPLICATION_INFO -> showString "STRUCTURE_TYPE_APPLICATION_INFO"+ STRUCTURE_TYPE_INSTANCE_CREATE_INFO -> showString "STRUCTURE_TYPE_INSTANCE_CREATE_INFO"+ STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO -> showString "STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO"+ STRUCTURE_TYPE_DEVICE_CREATE_INFO -> showString "STRUCTURE_TYPE_DEVICE_CREATE_INFO"+ STRUCTURE_TYPE_SUBMIT_INFO -> showString "STRUCTURE_TYPE_SUBMIT_INFO"+ STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO -> showString "STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO"+ STRUCTURE_TYPE_MAPPED_MEMORY_RANGE -> showString "STRUCTURE_TYPE_MAPPED_MEMORY_RANGE"+ STRUCTURE_TYPE_BIND_SPARSE_INFO -> showString "STRUCTURE_TYPE_BIND_SPARSE_INFO"+ STRUCTURE_TYPE_FENCE_CREATE_INFO -> showString "STRUCTURE_TYPE_FENCE_CREATE_INFO"+ STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO -> showString "STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO"+ STRUCTURE_TYPE_EVENT_CREATE_INFO -> showString "STRUCTURE_TYPE_EVENT_CREATE_INFO"+ STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO -> showString "STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO"+ STRUCTURE_TYPE_BUFFER_CREATE_INFO -> showString "STRUCTURE_TYPE_BUFFER_CREATE_INFO"+ STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO -> showString "STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"+ STRUCTURE_TYPE_IMAGE_CREATE_INFO -> showString "STRUCTURE_TYPE_IMAGE_CREATE_INFO"+ STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO -> showString "STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO"+ STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO -> showString "STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"+ STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO"+ STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO"+ STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"+ STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"+ STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO"+ STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO"+ STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO"+ STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"+ STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"+ STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"+ STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO"+ STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO -> showString "STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO"+ STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO -> showString "STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO"+ STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"+ STRUCTURE_TYPE_SAMPLER_CREATE_INFO -> showString "STRUCTURE_TYPE_SAMPLER_CREATE_INFO"+ STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO -> showString "STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"+ STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO -> showString "STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO"+ STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO -> showString "STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO"+ STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET -> showString "STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET"+ STRUCTURE_TYPE_COPY_DESCRIPTOR_SET -> showString "STRUCTURE_TYPE_COPY_DESCRIPTOR_SET"+ STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO -> showString "STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"+ STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO -> showString "STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"+ STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO -> showString "STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"+ STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO -> showString "STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"+ STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO -> showString "STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"+ STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO -> showString "STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"+ STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO -> showString "STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"+ STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER -> showString "STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"+ STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER -> showString "STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER"+ STRUCTURE_TYPE_MEMORY_BARRIER -> showString "STRUCTURE_TYPE_MEMORY_BARRIER"+ STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO -> showString "STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO"+ STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO -> showString "STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO"+ STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM -> showString "STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM"+ STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM -> showString "STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT"+ STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR -> showString "STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR"+ STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR -> showString "STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR"+ STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR -> showString "STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR"+ STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR -> showString "STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR"+ STRUCTURE_TYPE_PIPELINE_INFO_KHR -> showString "STRUCTURE_TYPE_PIPELINE_INFO_KHR"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT"+ STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT"+ STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT"+ STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT -> showString "STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT"+ STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT -> showString "STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT"+ STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT -> showString "STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT"+ STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV -> showString "STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV"+ STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV"+ STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV -> showString "STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV"+ STRUCTURE_TYPE_VALIDATION_FEATURES_EXT -> showString "STRUCTURE_TYPE_VALIDATION_FEATURES_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT"+ STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV"+ STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR -> showString "STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR"+ STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT -> showString "STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT"+ STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT"+ STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT"+ STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT"+ STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA -> showString "STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA"+ STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD -> showString "STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD"+ STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD -> showString "STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT"+ STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL -> showString "STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL"+ STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL -> showString "STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL"+ STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL -> showString "STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL"+ STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL -> showString "STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL"+ STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL -> showString "STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL"+ STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL -> showString "STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL"+ STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV -> showString "STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV"+ STRUCTURE_TYPE_CHECKPOINT_DATA_NV -> showString "STRUCTURE_TYPE_CHECKPOINT_DATA_NV"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV"+ STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV"+ STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT"+ STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP -> showString "STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT"+ STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT"+ STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD -> showString "STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"+ STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT -> showString "STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT"+ STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD -> showString "STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT"+ STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT"+ STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT -> showString "STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT"+ STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT"+ STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT"+ STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV"+ STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV"+ STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV"+ STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV"+ STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV -> showString "STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV"+ STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV -> showString "STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV"+ STRUCTURE_TYPE_GEOMETRY_AABB_NV -> showString "STRUCTURE_TYPE_GEOMETRY_AABB_NV"+ STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV -> showString "STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV"+ STRUCTURE_TYPE_GEOMETRY_NV -> showString "STRUCTURE_TYPE_GEOMETRY_NV"+ STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV"+ STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV"+ STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV"+ STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV"+ STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"+ STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT"+ STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT"+ STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT"+ STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT"+ STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT"+ STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT -> showString "STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV"+ STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"+ STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"+ STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"+ STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"+ STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"+ STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT -> showString "STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"+ STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT -> showString "STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"+ STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT"+ STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT -> showString "STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT"+ STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID -> showString "STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID"+ STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID -> showString "STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"+ STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID -> showString "STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"+ STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID -> showString "STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"+ STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID -> showString "STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"+ STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID -> showString "STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"+ STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"+ STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT -> showString "STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"+ STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT -> showString "STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT"+ STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT -> showString "STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT"+ STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT -> showString "STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT"+ STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK -> showString "STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK"+ STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK -> showString "STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK"+ STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR -> showString "STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR"+ STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR -> showString "STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR"+ STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR -> showString "STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR"+ STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR -> showString "STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR"+ STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR -> showString "STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR"+ STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR -> showString "STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR"+ STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR -> showString "STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"+ STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR -> showString "STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR"+ STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR -> showString "STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR"+ STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR -> showString "STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR"+ STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR -> showString "STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR"+ STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR"+ STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR -> showString "STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR"+ STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR -> showString "STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR"+ STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR -> showString "STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR"+ STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR -> showString "STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR"+ STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR -> showString "STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR"+ STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR -> showString "STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"+ STRUCTURE_TYPE_HDR_METADATA_EXT -> showString "STRUCTURE_TYPE_HDR_METADATA_EXT"+ STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT"+ STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"+ STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"+ STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"+ STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE -> showString "STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE"+ STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT"+ STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT -> showString "STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT"+ STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT -> showString "STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT"+ STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT -> showString "STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"+ STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT -> showString "STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT"+ STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"+ STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX -> showString "STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX"+ STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX -> showString "STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX"+ STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX -> showString "STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX"+ STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX -> showString "STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX"+ STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX -> showString "STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX"+ STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX -> showString "STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX"+ STRUCTURE_TYPE_PRESENT_REGIONS_KHR -> showString "STRUCTURE_TYPE_PRESENT_REGIONS_KHR"+ STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT -> showString "STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT"+ STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT -> showString "STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR"+ STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR -> showString "STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR"+ STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR -> showString "STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR"+ STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR -> showString "STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR"+ STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR -> showString "STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR"+ STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR -> showString "STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"+ STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR -> showString "STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"+ STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR -> showString "STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"+ STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR -> showString "STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR"+ STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR -> showString "STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR"+ STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR -> showString "STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR"+ STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR -> showString "STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR"+ STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR -> showString "STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR"+ STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR -> showString "STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR"+ STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR -> showString "STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT"+ STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT -> showString "STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT"+ STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN -> showString "STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN"+ STRUCTURE_TYPE_VALIDATION_FLAGS_EXT -> showString "STRUCTURE_TYPE_VALIDATION_FLAGS_EXT"+ STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"+ STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR -> showString "STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"+ STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR -> showString "STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"+ STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR -> showString "STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"+ STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"+ STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR -> showString "STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"+ STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV -> showString "STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"+ STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV -> showString "STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV"+ STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV -> showString "STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV"+ STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV -> showString "STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV"+ STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV"+ STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP -> showString "STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP"+ STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD -> showString "STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD"+ STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX -> showString "STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX"+ STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT"+ STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV -> showString "STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"+ STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"+ STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV -> showString "STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"+ STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT -> showString "STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT"+ STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT -> showString "STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT"+ STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT -> showString "STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT"+ STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD -> showString "STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"+ STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT -> showString "STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"+ STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR"+ STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR"+ STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR"+ STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR"+ STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR"+ STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR -> showString "STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"+ STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"+ STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"+ STRUCTURE_TYPE_PRESENT_INFO_KHR -> showString "STRUCTURE_TYPE_PRESENT_INFO_KHR"+ STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR -> showString "STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR"+ STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO -> showString "STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO"+ STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO -> showString "STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO"+ STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO -> showString "STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO"+ STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO -> showString "STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES"+ STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO -> showString "STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO"+ STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO -> showString "STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO"+ STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO -> showString "STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO"+ STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO -> showString "STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES"+ STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT -> showString "STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT"+ STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT -> showString "STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES"+ STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO -> showString "STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO"+ STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO -> showString "STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO"+ STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO -> showString "STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES"+ STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO -> showString "STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES"+ STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO -> showString "STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES"+ STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE -> showString "STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES"+ STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT -> showString "STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT"+ STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO -> showString "STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES"+ STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO -> showString "STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES"+ STRUCTURE_TYPE_SUBPASS_END_INFO -> showString "STRUCTURE_TYPE_SUBPASS_END_INFO"+ STRUCTURE_TYPE_SUBPASS_BEGIN_INFO -> showString "STRUCTURE_TYPE_SUBPASS_BEGIN_INFO"+ STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 -> showString "STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2"+ STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 -> showString "STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2"+ STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 -> showString "STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2"+ STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 -> showString "STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2"+ STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 -> showString "STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2"+ STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO -> showString "STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES"+ STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT -> showString "STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"+ STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES -> showString "STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"+ STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO -> showString "STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO"+ STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO -> showString "STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"+ STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES -> showString "STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"+ STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO -> showString "STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO"+ STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO -> showString "STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO"+ STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO -> showString "STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"+ STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES -> showString "STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"+ STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES -> showString "STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"+ STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO -> showString "STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"+ STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES -> showString "STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"+ STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO -> showString "STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"+ STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO -> showString "STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"+ STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO -> showString "STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"+ STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO -> showString "STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"+ STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 -> showString "STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"+ STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO -> showString "STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"+ STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO -> showString "STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO"+ STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO -> showString "STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"+ STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO -> showString "STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO"+ STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO -> showString "STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"+ STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 -> showString "STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"+ STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 -> showString "STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"+ STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 -> showString "STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2"+ STRUCTURE_TYPE_FORMAT_PROPERTIES_2 -> showString "STRUCTURE_TYPE_FORMAT_PROPERTIES_2"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2"+ STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 -> showString "STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"+ STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 -> showString "STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2"+ STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 -> showString "STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"+ STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 -> showString "STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2"+ STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 -> showString "STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2"+ STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO -> showString "STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES"+ STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO -> showString "STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"+ STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO -> showString "STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"+ STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO -> showString "STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"+ STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO -> showString "STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"+ STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO -> showString "STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"+ STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO -> showString "STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"+ STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO -> showString "STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"+ STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO -> showString "STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO"+ STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS -> showString "STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"+ STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO -> showString "STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO"+ STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO -> showString "STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO"+ STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES -> showString "STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"+ StructureType x -> showParen (p >= 11) (showString "StructureType " . showsPrec 11 x)++instance Read StructureType where+ readPrec = parens (choose [("STRUCTURE_TYPE_APPLICATION_INFO", pure STRUCTURE_TYPE_APPLICATION_INFO)+ , ("STRUCTURE_TYPE_INSTANCE_CREATE_INFO", pure STRUCTURE_TYPE_INSTANCE_CREATE_INFO)+ , ("STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO", pure STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO)+ , ("STRUCTURE_TYPE_DEVICE_CREATE_INFO", pure STRUCTURE_TYPE_DEVICE_CREATE_INFO)+ , ("STRUCTURE_TYPE_SUBMIT_INFO", pure STRUCTURE_TYPE_SUBMIT_INFO)+ , ("STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO", pure STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO)+ , ("STRUCTURE_TYPE_MAPPED_MEMORY_RANGE", pure STRUCTURE_TYPE_MAPPED_MEMORY_RANGE)+ , ("STRUCTURE_TYPE_BIND_SPARSE_INFO", pure STRUCTURE_TYPE_BIND_SPARSE_INFO)+ , ("STRUCTURE_TYPE_FENCE_CREATE_INFO", pure STRUCTURE_TYPE_FENCE_CREATE_INFO)+ , ("STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO", pure STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO)+ , ("STRUCTURE_TYPE_EVENT_CREATE_INFO", pure STRUCTURE_TYPE_EVENT_CREATE_INFO)+ , ("STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO", pure STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO)+ , ("STRUCTURE_TYPE_BUFFER_CREATE_INFO", pure STRUCTURE_TYPE_BUFFER_CREATE_INFO)+ , ("STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO", pure STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO)+ , ("STRUCTURE_TYPE_IMAGE_CREATE_INFO", pure STRUCTURE_TYPE_IMAGE_CREATE_INFO)+ , ("STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO", pure STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO)+ , ("STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO", pure STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO)+ , ("STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO)+ , ("STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO)+ , ("STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO)+ , ("STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO)+ , ("STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO)+ , ("STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO)+ , ("STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO)+ , ("STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO)+ , ("STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO)+ , ("STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO)+ , ("STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO)+ , ("STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO", pure STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO)+ , ("STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO", pure STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO)+ , ("STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO)+ , ("STRUCTURE_TYPE_SAMPLER_CREATE_INFO", pure STRUCTURE_TYPE_SAMPLER_CREATE_INFO)+ , ("STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO", pure STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO)+ , ("STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO", pure STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO)+ , ("STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO", pure STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO)+ , ("STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET", pure STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET)+ , ("STRUCTURE_TYPE_COPY_DESCRIPTOR_SET", pure STRUCTURE_TYPE_COPY_DESCRIPTOR_SET)+ , ("STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO", pure STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO)+ , ("STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO", pure STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO)+ , ("STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO", pure STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO)+ , ("STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO", pure STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO)+ , ("STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO", pure STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO)+ , ("STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO", pure STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO)+ , ("STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO", pure STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO)+ , ("STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER", pure STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER)+ , ("STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER", pure STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER)+ , ("STRUCTURE_TYPE_MEMORY_BARRIER", pure STRUCTURE_TYPE_MEMORY_BARRIER)+ , ("STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO", pure STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO)+ , ("STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO", pure STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO)+ , ("STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM", pure STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM)+ , ("STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM", pure STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT)+ , ("STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR", pure STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR)+ , ("STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR", pure STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR)+ , ("STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR", pure STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR)+ , ("STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR", pure STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR)+ , ("STRUCTURE_TYPE_PIPELINE_INFO_KHR", pure STRUCTURE_TYPE_PIPELINE_INFO_KHR)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT)+ , ("STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT)+ , ("STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT", pure STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT)+ , ("STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT", pure STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT)+ , ("STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT", pure STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT)+ , ("STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV", pure STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV)+ , ("STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV)+ , ("STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV", pure STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV)+ , ("STRUCTURE_TYPE_VALIDATION_FEATURES_EXT", pure STRUCTURE_TYPE_VALIDATION_FEATURES_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT)+ , ("STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT", pure STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV)+ , ("STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR", pure STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR)+ , ("STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT", pure STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT)+ , ("STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT)+ , ("STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT", pure STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT)+ , ("STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA", pure STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA)+ , ("STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD", pure STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD)+ , ("STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD", pure STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT)+ , ("STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL", pure STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL)+ , ("STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL", pure STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL)+ , ("STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL", pure STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL)+ , ("STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL", pure STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL)+ , ("STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL", pure STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL)+ , ("STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL", pure STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL)+ , ("STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV", pure STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV)+ , ("STRUCTURE_TYPE_CHECKPOINT_DATA_NV", pure STRUCTURE_TYPE_CHECKPOINT_DATA_NV)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV)+ , ("STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV)+ , ("STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP", pure STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT)+ , ("STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT)+ , ("STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD", pure STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD)+ , ("STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT", pure STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT)+ , ("STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD", pure STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT)+ , ("STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT", pure STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT)+ , ("STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT", pure STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT)+ , ("STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT", pure STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT", pure STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT)+ , ("STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV)+ , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV)+ , ("STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV", pure STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV)+ , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV)+ , ("STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV", pure STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV)+ , ("STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV", pure STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV)+ , ("STRUCTURE_TYPE_GEOMETRY_AABB_NV", pure STRUCTURE_TYPE_GEOMETRY_AABB_NV)+ , ("STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV", pure STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV)+ , ("STRUCTURE_TYPE_GEOMETRY_NV", pure STRUCTURE_TYPE_GEOMETRY_NV)+ , ("STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV", pure STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV)+ , ("STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV", pure STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV)+ , ("STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV)+ , ("STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV)+ , ("STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT", pure STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT)+ , ("STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT", pure STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT", pure STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT)+ , ("STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT", pure STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT)+ , ("STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT", pure STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV)+ , ("STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV)+ , ("STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV)+ , ("STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT)+ , ("STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT", pure STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT)+ , ("STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT", pure STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT)+ , ("STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT", pure STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT)+ , ("STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT", pure STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT", pure STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT)+ , ("STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID", pure STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID)+ , ("STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID", pure STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID)+ , ("STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID", pure STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID)+ , ("STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID", pure STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID)+ , ("STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID", pure STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID)+ , ("STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID", pure STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID)+ , ("STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT", pure STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT", pure STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT)+ , ("STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT", pure STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT)+ , ("STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT", pure STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT)+ , ("STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT", pure STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT)+ , ("STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK", pure STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK)+ , ("STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK", pure STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK)+ , ("STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR", pure STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR)+ , ("STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR", pure STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR)+ , ("STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR", pure STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR)+ , ("STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR", pure STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR)+ , ("STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR", pure STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR)+ , ("STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR", pure STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR)+ , ("STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR", pure STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR)+ , ("STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR", pure STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR)+ , ("STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR", pure STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR)+ , ("STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR", pure STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR)+ , ("STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR", pure STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR)+ , ("STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR)+ , ("STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR", pure STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR)+ , ("STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR", pure STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR)+ , ("STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR", pure STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR)+ , ("STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR", pure STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR)+ , ("STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR", pure STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR)+ , ("STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR", pure STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR)+ , ("STRUCTURE_TYPE_HDR_METADATA_EXT", pure STRUCTURE_TYPE_HDR_METADATA_EXT)+ , ("STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT)+ , ("STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT)+ , ("STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT)+ , ("STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX)+ , ("STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE", pure STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE)+ , ("STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT", pure STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT", pure STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT)+ , ("STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT", pure STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT)+ , ("STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT", pure STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT)+ , ("STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT", pure STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT)+ , ("STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV", pure STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV)+ , ("STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX", pure STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX)+ , ("STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX", pure STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX)+ , ("STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX", pure STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX)+ , ("STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX", pure STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX)+ , ("STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX", pure STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX)+ , ("STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX", pure STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX)+ , ("STRUCTURE_TYPE_PRESENT_REGIONS_KHR", pure STRUCTURE_TYPE_PRESENT_REGIONS_KHR)+ , ("STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT", pure STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT)+ , ("STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT", pure STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR)+ , ("STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR", pure STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR)+ , ("STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR", pure STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR)+ , ("STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR", pure STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR)+ , ("STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR", pure STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR)+ , ("STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR", pure STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR)+ , ("STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR", pure STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR)+ , ("STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR", pure STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR)+ , ("STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR", pure STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR)+ , ("STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR", pure STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR)+ , ("STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR", pure STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR)+ , ("STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR", pure STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR)+ , ("STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR", pure STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR)+ , ("STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR", pure STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR)+ , ("STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR", pure STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT)+ , ("STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT", pure STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT)+ , ("STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN", pure STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN)+ , ("STRUCTURE_TYPE_VALIDATION_FLAGS_EXT", pure STRUCTURE_TYPE_VALIDATION_FLAGS_EXT)+ , ("STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR", pure STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR)+ , ("STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR", pure STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR)+ , ("STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR", pure STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR)+ , ("STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR", pure STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR)+ , ("STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR", pure STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR)+ , ("STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR", pure STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR)+ , ("STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV", pure STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV)+ , ("STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV", pure STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV)+ , ("STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV", pure STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV)+ , ("STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV", pure STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV)+ , ("STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV", pure STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV)+ , ("STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP", pure STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP)+ , ("STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD", pure STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD)+ , ("STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX", pure STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX)+ , ("STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT", pure STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT)+ , ("STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV", pure STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV)+ , ("STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV", pure STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV)+ , ("STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV", pure STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV)+ , ("STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT", pure STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT)+ , ("STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT", pure STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT)+ , ("STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT", pure STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT)+ , ("STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD", pure STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD)+ , ("STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT", pure STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT)+ , ("STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR)+ , ("STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR)+ , ("STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR)+ , ("STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR)+ , ("STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR)+ , ("STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR", pure STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR)+ , ("STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR)+ , ("STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR", pure STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR)+ , ("STRUCTURE_TYPE_PRESENT_INFO_KHR", pure STRUCTURE_TYPE_PRESENT_INFO_KHR)+ , ("STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR", pure STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR)+ , ("STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO", pure STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO)+ , ("STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO", pure STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO)+ , ("STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO", pure STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO)+ , ("STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO", pure STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES)+ , ("STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO", pure STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO)+ , ("STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO", pure STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO)+ , ("STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO", pure STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO)+ , ("STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO", pure STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES)+ , ("STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT", pure STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT)+ , ("STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT", pure STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES)+ , ("STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO", pure STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO)+ , ("STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO", pure STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO)+ , ("STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO", pure STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES)+ , ("STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO", pure STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES)+ , ("STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO", pure STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES)+ , ("STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE", pure STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES)+ , ("STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT", pure STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT)+ , ("STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO", pure STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES)+ , ("STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO", pure STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES)+ , ("STRUCTURE_TYPE_SUBPASS_END_INFO", pure STRUCTURE_TYPE_SUBPASS_END_INFO)+ , ("STRUCTURE_TYPE_SUBPASS_BEGIN_INFO", pure STRUCTURE_TYPE_SUBPASS_BEGIN_INFO)+ , ("STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2", pure STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2)+ , ("STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2", pure STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2)+ , ("STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2", pure STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2)+ , ("STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2", pure STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2)+ , ("STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2", pure STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2)+ , ("STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO", pure STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES)+ , ("STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT", pure STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES)+ , ("STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES", pure STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO)+ , ("STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO", pure STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO)+ , ("STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO", pure STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO)+ , ("STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES", pure STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO)+ , ("STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO", pure STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO)+ , ("STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO", pure STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO)+ , ("STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO", pure STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES)+ , ("STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES", pure STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO)+ , ("STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES", pure STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO)+ , ("STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO", pure STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO)+ , ("STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES", pure STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES)+ , ("STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO", pure STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO)+ , ("STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO", pure STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO)+ , ("STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO", pure STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO)+ , ("STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO", pure STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO)+ , ("STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2", pure STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES)+ , ("STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO", pure STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES)+ , ("STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO", pure STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO)+ , ("STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO", pure STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO)+ , ("STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO", pure STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO)+ , ("STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO", pure STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2)+ , ("STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2", pure STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2)+ , ("STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2", pure STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2)+ , ("STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2", pure STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2)+ , ("STRUCTURE_TYPE_FORMAT_PROPERTIES_2", pure STRUCTURE_TYPE_FORMAT_PROPERTIES_2)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2)+ , ("STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2", pure STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2)+ , ("STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2", pure STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2)+ , ("STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2", pure STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2)+ , ("STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2", pure STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2)+ , ("STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2", pure STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2)+ , ("STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO", pure STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES)+ , ("STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO", pure STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO)+ , ("STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO", pure STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO)+ , ("STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO", pure STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO)+ , ("STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO", pure STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO)+ , ("STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO", pure STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO)+ , ("STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO", pure STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO)+ , ("STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO", pure STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO)+ , ("STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO", pure STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO)+ , ("STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS", pure STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES)+ , ("STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO", pure STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO)+ , ("STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO", pure STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO)+ , ("STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES", pure STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES)]+ ++++ prec 10 (do+ expectP (Ident "StructureType")+ v <- step readPrec+ pure (StructureType v)))+
+ src/Graphics/Vulkan/Core10/Enums/SubpassContents.hs view
@@ -0,0 +1,61 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.SubpassContents (SubpassContents( SUBPASS_CONTENTS_INLINE+ , SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkSubpassContents - Specify how commands in the first subpass of a+-- render pass are provided+--+-- = See Also+--+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassBeginInfo',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBeginRenderPass',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdNextSubpass'+newtype SubpassContents = SubpassContents Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'SUBPASS_CONTENTS_INLINE' specifies that the contents of the subpass+-- will be recorded inline in the primary command buffer, and secondary+-- command buffers /must/ not be executed within the subpass.+pattern SUBPASS_CONTENTS_INLINE = SubpassContents 0+-- | 'SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS' specifies that the contents+-- are recorded in secondary command buffers that will be called from the+-- primary command buffer, and+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands' is the+-- only valid command on the command buffer until+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdNextSubpass' or+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdEndRenderPass'.+pattern SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = SubpassContents 1+{-# complete SUBPASS_CONTENTS_INLINE,+ SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS :: SubpassContents #-}++instance Show SubpassContents where+ showsPrec p = \case+ SUBPASS_CONTENTS_INLINE -> showString "SUBPASS_CONTENTS_INLINE"+ SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS -> showString "SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS"+ SubpassContents x -> showParen (p >= 11) (showString "SubpassContents " . showsPrec 11 x)++instance Read SubpassContents where+ readPrec = parens (choose [("SUBPASS_CONTENTS_INLINE", pure SUBPASS_CONTENTS_INLINE)+ , ("SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS", pure SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS)]+ ++++ prec 10 (do+ expectP (Ident "SubpassContents")+ v <- step readPrec+ pure (SubpassContents v)))+
+ src/Graphics/Vulkan/Core10/Enums/SubpassContents.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.SubpassContents (SubpassContents) where++++data SubpassContents+
+ src/Graphics/Vulkan/Core10/Enums/SubpassDescriptionFlagBits.hs view
@@ -0,0 +1,61 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits ( SubpassDescriptionFlagBits( SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX+ , SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX+ , ..+ )+ , SubpassDescriptionFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkSubpassDescriptionFlagBits - Bitmask specifying usage of a subpass+--+-- = See Also+--+-- 'SubpassDescriptionFlags'+newtype SubpassDescriptionFlagBits = SubpassDescriptionFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX' specifies that+-- shaders compiled for this subpass use per-view positions which only+-- differ in value in the x component. Per-view viewport mask /can/ also be+-- used.+pattern SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = SubpassDescriptionFlagBits 0x00000002+-- | 'SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX' specifies that shaders+-- compiled for this subpass write the attributes for all views in a single+-- invocation of each vertex processing stage. All pipelines compiled+-- against a subpass that includes this bit /must/ write per-view+-- attributes to the @*PerViewNV[]@ shader outputs, in addition to the+-- non-per-view (e.g. @Position@) outputs.+pattern SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = SubpassDescriptionFlagBits 0x00000001++type SubpassDescriptionFlags = SubpassDescriptionFlagBits++instance Show SubpassDescriptionFlagBits where+ showsPrec p = \case+ SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX -> showString "SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX"+ SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX -> showString "SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX"+ SubpassDescriptionFlagBits x -> showParen (p >= 11) (showString "SubpassDescriptionFlagBits 0x" . showHex x)++instance Read SubpassDescriptionFlagBits where+ readPrec = parens (choose [("SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX", pure SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX)+ , ("SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX", pure SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX)]+ ++++ prec 10 (do+ expectP (Ident "SubpassDescriptionFlagBits")+ v <- step readPrec+ pure (SubpassDescriptionFlagBits v)))+
+ src/Graphics/Vulkan/Core10/Enums/SystemAllocationScope.hs view
@@ -0,0 +1,134 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.SystemAllocationScope (SystemAllocationScope( SYSTEM_ALLOCATION_SCOPE_COMMAND+ , SYSTEM_ALLOCATION_SCOPE_OBJECT+ , SYSTEM_ALLOCATION_SCOPE_CACHE+ , SYSTEM_ALLOCATION_SCOPE_DEVICE+ , SYSTEM_ALLOCATION_SCOPE_INSTANCE+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkSystemAllocationScope - Allocation scope+--+-- = Description+--+-- - 'SYSTEM_ALLOCATION_SCOPE_COMMAND' specifies that the allocation is+-- scoped to the duration of the Vulkan command.+--+-- - 'SYSTEM_ALLOCATION_SCOPE_OBJECT' specifies that the allocation is+-- scoped to the lifetime of the Vulkan object that is being created or+-- used.+--+-- - 'SYSTEM_ALLOCATION_SCOPE_CACHE' specifies that the allocation is+-- scoped to the lifetime of a+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache' or+-- 'Graphics.Vulkan.Extensions.Handles.ValidationCacheEXT' object.+--+-- - 'SYSTEM_ALLOCATION_SCOPE_DEVICE' specifies that the allocation is+-- scoped to the lifetime of the Vulkan device.+--+-- - 'SYSTEM_ALLOCATION_SCOPE_INSTANCE' specifies that the allocation is+-- scoped to the lifetime of the Vulkan instance.+--+-- Most Vulkan commands operate on a single object, or there is a sole+-- object that is being created or manipulated. When an allocation uses an+-- allocation scope of 'SYSTEM_ALLOCATION_SCOPE_OBJECT' or+-- 'SYSTEM_ALLOCATION_SCOPE_CACHE', the allocation is scoped to the object+-- being created or manipulated.+--+-- When an implementation requires host memory, it will make callbacks to+-- the application using the most specific allocator and allocation scope+-- available:+--+-- - If an allocation is scoped to the duration of a command, the+-- allocator will use the 'SYSTEM_ALLOCATION_SCOPE_COMMAND' allocation+-- scope. The most specific allocator available is used: if the object+-- being created or manipulated has an allocator, that object’s+-- allocator will be used, else if the parent+-- 'Graphics.Vulkan.Core10.Handles.Device' has an allocator it will be+-- used, else if the parent 'Graphics.Vulkan.Core10.Handles.Instance'+-- has an allocator it will be used. Else,+--+-- - If an allocation is associated with a+-- 'Graphics.Vulkan.Extensions.Handles.ValidationCacheEXT' or+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache' object, the allocator+-- will use the 'SYSTEM_ALLOCATION_SCOPE_CACHE' allocation scope. The+-- most specific allocator available is used (cache, else device, else+-- instance). Else,+--+-- - If an allocation is scoped to the lifetime of an object, that object+-- is being created or manipulated by the command, and that object’s+-- type is not 'Graphics.Vulkan.Core10.Handles.Device' or+-- 'Graphics.Vulkan.Core10.Handles.Instance', the allocator will use an+-- allocation scope of 'SYSTEM_ALLOCATION_SCOPE_OBJECT'. The most+-- specific allocator available is used (object, else device, else+-- instance). Else,+--+-- - If an allocation is scoped to the lifetime of a device, the+-- allocator will use an allocation scope of+-- 'SYSTEM_ALLOCATION_SCOPE_DEVICE'. The most specific allocator+-- available is used (device, else instance). Else,+--+-- - If the allocation is scoped to the lifetime of an instance and the+-- instance has an allocator, its allocator will be used with an+-- allocation scope of 'SYSTEM_ALLOCATION_SCOPE_INSTANCE'.+--+-- - Otherwise an implementation will allocate memory through an+-- alternative mechanism that is unspecified.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+newtype SystemAllocationScope = SystemAllocationScope Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND"+pattern SYSTEM_ALLOCATION_SCOPE_COMMAND = SystemAllocationScope 0+-- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT"+pattern SYSTEM_ALLOCATION_SCOPE_OBJECT = SystemAllocationScope 1+-- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_CACHE"+pattern SYSTEM_ALLOCATION_SCOPE_CACHE = SystemAllocationScope 2+-- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE"+pattern SYSTEM_ALLOCATION_SCOPE_DEVICE = SystemAllocationScope 3+-- No documentation found for Nested "VkSystemAllocationScope" "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE"+pattern SYSTEM_ALLOCATION_SCOPE_INSTANCE = SystemAllocationScope 4+{-# complete SYSTEM_ALLOCATION_SCOPE_COMMAND,+ SYSTEM_ALLOCATION_SCOPE_OBJECT,+ SYSTEM_ALLOCATION_SCOPE_CACHE,+ SYSTEM_ALLOCATION_SCOPE_DEVICE,+ SYSTEM_ALLOCATION_SCOPE_INSTANCE :: SystemAllocationScope #-}++instance Show SystemAllocationScope where+ showsPrec p = \case+ SYSTEM_ALLOCATION_SCOPE_COMMAND -> showString "SYSTEM_ALLOCATION_SCOPE_COMMAND"+ SYSTEM_ALLOCATION_SCOPE_OBJECT -> showString "SYSTEM_ALLOCATION_SCOPE_OBJECT"+ SYSTEM_ALLOCATION_SCOPE_CACHE -> showString "SYSTEM_ALLOCATION_SCOPE_CACHE"+ SYSTEM_ALLOCATION_SCOPE_DEVICE -> showString "SYSTEM_ALLOCATION_SCOPE_DEVICE"+ SYSTEM_ALLOCATION_SCOPE_INSTANCE -> showString "SYSTEM_ALLOCATION_SCOPE_INSTANCE"+ SystemAllocationScope x -> showParen (p >= 11) (showString "SystemAllocationScope " . showsPrec 11 x)++instance Read SystemAllocationScope where+ readPrec = parens (choose [("SYSTEM_ALLOCATION_SCOPE_COMMAND", pure SYSTEM_ALLOCATION_SCOPE_COMMAND)+ , ("SYSTEM_ALLOCATION_SCOPE_OBJECT", pure SYSTEM_ALLOCATION_SCOPE_OBJECT)+ , ("SYSTEM_ALLOCATION_SCOPE_CACHE", pure SYSTEM_ALLOCATION_SCOPE_CACHE)+ , ("SYSTEM_ALLOCATION_SCOPE_DEVICE", pure SYSTEM_ALLOCATION_SCOPE_DEVICE)+ , ("SYSTEM_ALLOCATION_SCOPE_INSTANCE", pure SYSTEM_ALLOCATION_SCOPE_INSTANCE)]+ ++++ prec 10 (do+ expectP (Ident "SystemAllocationScope")+ v <- step readPrec+ pure (SystemAllocationScope v)))+
+ src/Graphics/Vulkan/Core10/Enums/VendorId.hs view
@@ -0,0 +1,76 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.VendorId (VendorId( VENDOR_ID_VIV+ , VENDOR_ID_VSI+ , VENDOR_ID_KAZAN+ , VENDOR_ID_CODEPLAY+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkVendorId - Khronos vendor IDs+--+-- = Description+--+-- Note+--+-- Khronos vendor IDs may be allocated by vendors at any time. Only the+-- latest canonical versions of this Specification, of the corresponding+-- @vk.xml@ API Registry, and of the corresponding @vulkan_core.h@ header+-- file /must/ contain all reserved Khronos vendor IDs.+--+-- Only Khronos vendor IDs are given symbolic names at present. PCI vendor+-- IDs returned by the implementation can be looked up in the PCI-SIG+-- database.+--+-- = See Also+--+-- No cross-references are available+newtype VendorId = VendorId Int32+ deriving newtype (Eq, Ord, Storable, Zero)+-- Note that the zero instance does not produce a valid value, passing 'zero' to Vulkan will result in an error++-- No documentation found for Nested "VkVendorId" "VK_VENDOR_ID_VIV"+pattern VENDOR_ID_VIV = VendorId 65537+-- No documentation found for Nested "VkVendorId" "VK_VENDOR_ID_VSI"+pattern VENDOR_ID_VSI = VendorId 65538+-- No documentation found for Nested "VkVendorId" "VK_VENDOR_ID_KAZAN"+pattern VENDOR_ID_KAZAN = VendorId 65539+-- No documentation found for Nested "VkVendorId" "VK_VENDOR_ID_CODEPLAY"+pattern VENDOR_ID_CODEPLAY = VendorId 65540+{-# complete VENDOR_ID_VIV,+ VENDOR_ID_VSI,+ VENDOR_ID_KAZAN,+ VENDOR_ID_CODEPLAY :: VendorId #-}++instance Show VendorId where+ showsPrec p = \case+ VENDOR_ID_VIV -> showString "VENDOR_ID_VIV"+ VENDOR_ID_VSI -> showString "VENDOR_ID_VSI"+ VENDOR_ID_KAZAN -> showString "VENDOR_ID_KAZAN"+ VENDOR_ID_CODEPLAY -> showString "VENDOR_ID_CODEPLAY"+ VendorId x -> showParen (p >= 11) (showString "VendorId " . showsPrec 11 x)++instance Read VendorId where+ readPrec = parens (choose [("VENDOR_ID_VIV", pure VENDOR_ID_VIV)+ , ("VENDOR_ID_VSI", pure VENDOR_ID_VSI)+ , ("VENDOR_ID_KAZAN", pure VENDOR_ID_KAZAN)+ , ("VENDOR_ID_CODEPLAY", pure VENDOR_ID_CODEPLAY)]+ ++++ prec 10 (do+ expectP (Ident "VendorId")+ v <- step readPrec+ pure (VendorId v)))+
+ src/Graphics/Vulkan/Core10/Enums/VertexInputRate.hs view
@@ -0,0 +1,53 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Enums.VertexInputRate (VertexInputRate( VERTEX_INPUT_RATE_VERTEX+ , VERTEX_INPUT_RATE_INSTANCE+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkVertexInputRate - Specify rate at which vertex attributes are pulled+-- from buffers+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.VertexInputBindingDescription'+newtype VertexInputRate = VertexInputRate Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'VERTEX_INPUT_RATE_VERTEX' specifies that vertex attribute addressing is+-- a function of the vertex index.+pattern VERTEX_INPUT_RATE_VERTEX = VertexInputRate 0+-- | 'VERTEX_INPUT_RATE_INSTANCE' specifies that vertex attribute addressing+-- is a function of the instance index.+pattern VERTEX_INPUT_RATE_INSTANCE = VertexInputRate 1+{-# complete VERTEX_INPUT_RATE_VERTEX,+ VERTEX_INPUT_RATE_INSTANCE :: VertexInputRate #-}++instance Show VertexInputRate where+ showsPrec p = \case+ VERTEX_INPUT_RATE_VERTEX -> showString "VERTEX_INPUT_RATE_VERTEX"+ VERTEX_INPUT_RATE_INSTANCE -> showString "VERTEX_INPUT_RATE_INSTANCE"+ VertexInputRate x -> showParen (p >= 11) (showString "VertexInputRate " . showsPrec 11 x)++instance Read VertexInputRate where+ readPrec = parens (choose [("VERTEX_INPUT_RATE_VERTEX", pure VERTEX_INPUT_RATE_VERTEX)+ , ("VERTEX_INPUT_RATE_INSTANCE", pure VERTEX_INPUT_RATE_INSTANCE)]+ ++++ prec 10 (do+ expectP (Ident "VertexInputRate")+ v <- step readPrec+ pure (VertexInputRate v)))+
src/Graphics/Vulkan/Core10/Event.hs view
@@ -1,125 +1,79 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.Event- ( VkEventCreateFlags(..)- , VkEvent- , vkCreateEvent- , vkDestroyEvent- , vkGetEventStatus- , vkSetEvent- , vkResetEvent- , VkEventCreateInfo(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- )----- ** VkEventCreateFlags---- | VkEventCreateFlags - Reserved for future use------ = Description------ @VkEventCreateFlags@ is a bitmask type for setting a mask, but is--- currently reserved for future use.------ = See Also------ 'VkEventCreateInfo'-newtype VkEventCreateFlags = VkEventCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkEventCreateFlags where- - showsPrec p (VkEventCreateFlags x) = showParen (p >= 11) (showString "VkEventCreateFlags " . showsPrec 11 x)--instance Read VkEventCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkEventCreateFlags")- v <- step readPrec- pure (VkEventCreateFlags v)- )- )+module Graphics.Vulkan.Core10.Event ( createEvent+ , withEvent+ , destroyEvent+ , getEventStatus+ , setEvent+ , resetEvent+ , EventCreateInfo(..)+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateEvent))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyEvent))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetEventStatus))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkResetEvent))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkSetEvent))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.Core10.Handles (Event)+import Graphics.Vulkan.Core10.Handles (Event(..))+import Graphics.Vulkan.Core10.Enums.EventCreateFlags (EventCreateFlags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EVENT_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateEvent+ :: FunPtr (Ptr Device_T -> Ptr EventCreateInfo -> Ptr AllocationCallbacks -> Ptr Event -> IO Result) -> Ptr Device_T -> Ptr EventCreateInfo -> Ptr AllocationCallbacks -> Ptr Event -> IO Result --- | Dummy data to tag the 'Ptr' with-data VkEvent_T--- | VkEvent - Opaque handle to a event object------ = See Also------ 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdResetEvent',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetEvent',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdWaitEvents',--- 'vkCreateEvent', 'vkDestroyEvent', 'vkGetEventStatus', 'vkResetEvent',--- 'vkSetEvent'-type VkEvent = Ptr VkEvent_T -- | vkCreateEvent - Create a new event object -- -- = Parameters ----- - @device@ is the logical device that creates the event.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the event. ----- - @pCreateInfo@ is a pointer to an instance of the @VkEventCreateInfo@--- structure which contains information about how the event is to be--- created.+-- - @pCreateInfo@ is a pointer to a 'EventCreateInfo' structure+-- containing information about how the event is to be created. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. ----- - @pEvent@ points to a handle in which the resulting event object is--- returned.+-- - @pEvent@ is a pointer to a handle in which the resulting event+-- object is returned. -- -- = Description --@@ -127,285 +81,388 @@ -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkEventCreateInfo@ structure+-- - @pCreateInfo@ /must/ be a valid pointer to a valid 'EventCreateInfo'+-- structure -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - @pEvent@ /must/ be a valid pointer to a @VkEvent@ handle+-- - @pEvent@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.Event' handle -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkEvent',--- 'VkEventCreateInfo'+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Event', 'EventCreateInfo'+createEvent :: Device -> EventCreateInfo -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (Event)+createEvent device createInfo allocator = evalContT $ do+ let vkCreateEvent' = mkVkCreateEvent (pVkCreateEvent (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPEvent <- ContT $ bracket (callocBytes @Event 8) free+ r <- lift $ vkCreateEvent' (deviceHandle (device)) pCreateInfo pAllocator (pPEvent)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pEvent <- lift $ peek @Event pPEvent+ pure $ (pEvent)++-- | A safe wrapper for 'createEvent' and 'destroyEvent' using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withEvent :: Device -> EventCreateInfo -> Maybe AllocationCallbacks -> (Event -> IO r) -> IO r+withEvent device eventCreateInfo allocationCallbacks =+ bracket+ (createEvent device eventCreateInfo allocationCallbacks)+ (\o -> destroyEvent device o allocationCallbacks)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkCreateEvent" vkCreateEvent :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkEventCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pEvent" ::: Ptr VkEvent) -> IO VkResult+ "dynamic" mkVkDestroyEvent+ :: FunPtr (Ptr Device_T -> Event -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> Event -> Ptr AllocationCallbacks -> IO ()+ -- | vkDestroyEvent - Destroy an event object -- -- = Parameters ----- - @device@ is the logical device that destroys the event.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the event. ----- - @event@ is the handle of the event to destroy.+-- - 'Graphics.Vulkan.Core10.Handles.Event' is the handle of the event to+-- destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. -- -- == Valid Usage ----- - All submitted commands that refer to @event@ /must/ have completed+-- - All submitted commands that refer to+-- 'Graphics.Vulkan.Core10.Handles.Event' /must/ have completed -- execution ----- - If @VkAllocationCallbacks@ were provided when @event@ was created, a--- compatible set of callbacks /must/ be provided here+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.Event' was+-- created, a compatible set of callbacks /must/ be provided here ----- - If no @VkAllocationCallbacks@ were provided when @event@ was+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.Event' was -- created, @pAllocator@ /must/ be @NULL@ -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - If @event@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @event@ /must/ be a valid @VkEvent@ handle+-- - If 'Graphics.Vulkan.Core10.Handles.Event' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Event' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Event' handle -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - If @event@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@+-- - If 'Graphics.Vulkan.Core10.Handles.Event' is a valid handle, it+-- /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization ----- - Host access to @event@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Event' /must/ be+-- externally synchronized -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkEvent'+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Event'+destroyEvent :: Device -> Event -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyEvent device event allocator = evalContT $ do+ let vkDestroyEvent' = mkVkDestroyEvent (pVkDestroyEvent (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyEvent' (deviceHandle (device)) (event) pAllocator+ pure $ ()++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkDestroyEvent" vkDestroyEvent :: ("device" ::: VkDevice) -> ("event" ::: VkEvent) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()+ "dynamic" mkVkGetEventStatus+ :: FunPtr (Ptr Device_T -> Event -> IO Result) -> Ptr Device_T -> Event -> IO Result+ -- | vkGetEventStatus - Retrieve the status of an event object -- -- = Parameters ----- - @device@ is the logical device that owns the event.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the event. ----- - @event@ is the handle of the event to query.+-- - 'Graphics.Vulkan.Core10.Handles.Event' is the handle of the event to+-- query. -- -- = Description ----- Upon success, @vkGetEventStatus@ returns the state of the event object+-- Upon success, 'getEventStatus' returns the state of the event object -- with the following return codes: ----- +-----------------------------------+-----------------------------------+--- | Status | Meaning |--- +===================================+===================================+--- | @VK_EVENT_SET@ | The event specified by @event@ is |--- | | signaled. |--- +-----------------------------------+-----------------------------------+--- | @VK_EVENT_RESET@ | The event specified by @event@ is |--- | | unsignaled. |--- +-----------------------------------+-----------------------------------++-- +---------------------------------------------------+----------------------------------------++-- | Status | Meaning |+-- +===================================================+========================================++-- | 'Graphics.Vulkan.Core10.Enums.Result.EVENT_SET' | The event specified by |+-- | | 'Graphics.Vulkan.Core10.Handles.Event' |+-- | | is signaled. |+-- +---------------------------------------------------+----------------------------------------++-- | 'Graphics.Vulkan.Core10.Enums.Result.EVENT_RESET' | The event specified by |+-- | | 'Graphics.Vulkan.Core10.Handles.Event' |+-- | | is unsignaled. |+-- +---------------------------------------------------+----------------------------------------+ -- -- Event Object Status Codes ----- If a @vkCmdSetEvent@ or @vkCmdResetEvent@ command is in a command buffer--- that is in the [pending--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle),+-- If a 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetEvent' or+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdResetEvent' command is+-- in a command buffer that is in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>, -- then the value returned by this command /may/ immediately be out of -- date. -- -- The state of an event /can/ be updated by the host. The state of the--- event is immediately changed, and subsequent calls to @vkGetEventStatus@+-- event is immediately changed, and subsequent calls to 'getEventStatus' -- will return the new state. If an event is already in the requested -- state, then updating it to the same state has no effect. ----- == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @event@ /must/ be a valid @VkEvent@ handle+-- == Return Codes ----- - @event@ /must/ have been created, allocated, or retrieved from--- @device@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- == Return Codes+-- - 'Graphics.Vulkan.Core10.Enums.Result.EVENT_SET' ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_EVENT_SET@+-- - 'Graphics.Vulkan.Core10.Enums.Result.EVENT_RESET' ----- - @VK_EVENT_RESET@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY' ----- - @VK_ERROR_DEVICE_LOST@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkEvent'+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Event'+getEventStatus :: Device -> Event -> IO (Result)+getEventStatus device event = do+ let vkGetEventStatus' = mkVkGetEventStatus (pVkGetEventStatus (deviceCmds (device :: Device)))+ r <- vkGetEventStatus' (deviceHandle (device)) (event)+ when (r < SUCCESS) (throwIO (VulkanException r))+ pure $ (r)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkGetEventStatus" vkGetEventStatus :: ("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult+ "dynamic" mkVkSetEvent+ :: FunPtr (Ptr Device_T -> Event -> IO Result) -> Ptr Device_T -> Event -> IO Result+ -- | vkSetEvent - Set an event to signaled state -- -- = Parameters ----- - @device@ is the logical device that owns the event.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the event. ----- - @event@ is the event to set.+-- - 'Graphics.Vulkan.Core10.Handles.Event' is the event to set. -- -- = Description ----- When 'vkSetEvent' is executed on the host, it defines an /event signal+-- When 'setEvent' is executed on the host, it defines an /event signal -- operation/ which sets the event to the signaled state. ----- If @event@ is already in the signaled state when 'vkSetEvent' is--- executed, then 'vkSetEvent' has no effect, and no event signal operation--- occurs.+-- If 'Graphics.Vulkan.Core10.Handles.Event' is already in the signaled+-- state when 'setEvent' is executed, then 'setEvent' has no effect, and no+-- event signal operation occurs. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - @event@ /must/ be a valid @VkEvent@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Event' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Event' handle ----- - @event@ /must/ have been created, allocated, or retrieved from--- @device@+-- - 'Graphics.Vulkan.Core10.Handles.Event' /must/ have been created,+-- allocated, or retrieved from 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization ----- - Host access to @event@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Event' /must/ be+-- externally synchronized -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkEvent'+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Event'+setEvent :: Device -> Event -> IO ()+setEvent device event = do+ let vkSetEvent' = mkVkSetEvent (pVkSetEvent (deviceCmds (device :: Device)))+ r <- vkSetEvent' (deviceHandle (device)) (event)+ when (r < SUCCESS) (throwIO (VulkanException r))++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkSetEvent" vkSetEvent :: ("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult+ "dynamic" mkVkResetEvent+ :: FunPtr (Ptr Device_T -> Event -> IO Result) -> Ptr Device_T -> Event -> IO Result+ -- | vkResetEvent - Reset an event to non-signaled state -- -- = Parameters ----- - @device@ is the logical device that owns the event.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the event. ----- - @event@ is the event to reset.+-- - 'Graphics.Vulkan.Core10.Handles.Event' is the event to reset. -- -- = Description ----- When 'vkResetEvent' is executed on the host, it defines an /event--- unsignal operation/ which resets the event to the unsignaled state.+-- When 'resetEvent' is executed on the host, it defines an /event unsignal+-- operation/ which resets the event to the unsignaled state. ----- If @event@ is already in the unsignaled state when 'vkResetEvent' is--- executed, then 'vkResetEvent' has no effect, and no event unsignal--- operation occurs.+-- If 'Graphics.Vulkan.Core10.Handles.Event' is already in the unsignaled+-- state when 'resetEvent' is executed, then 'resetEvent' has no effect,+-- and no event unsignal operation occurs. -- -- == Valid Usage ----- - @event@ /must/ not be waited on by a @vkCmdWaitEvents@ command that--- is currently executing+-- - 'Graphics.Vulkan.Core10.Handles.Event' /must/ not be waited on by a+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents' command+-- that is currently executing -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - @event@ /must/ be a valid @VkEvent@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Event' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Event' handle ----- - @event@ /must/ have been created, allocated, or retrieved from--- @device@+-- - 'Graphics.Vulkan.Core10.Handles.Event' /must/ have been created,+-- allocated, or retrieved from 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization ----- - Host access to @event@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Event' /must/ be+-- externally synchronized -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkEvent'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkResetEvent" vkResetEvent :: ("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Event'+resetEvent :: Device -> Event -> IO ()+resetEvent device event = do+ let vkResetEvent' = mkVkResetEvent (pVkResetEvent (deviceCmds (device :: Device)))+ r <- vkResetEvent' (deviceHandle (device)) (event)+ when (r < SUCCESS) (throwIO (VulkanException r))++ -- | VkEventCreateInfo - Structure specifying parameters of a newly created -- event -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_EVENT_CREATE_INFO@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@--- -- = See Also ----- 'VkEventCreateFlags', 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkCreateEvent'-data VkEventCreateInfo = VkEventCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkEventCreateFlags- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Core10.Enums.EventCreateFlags.EventCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createEvent'+data EventCreateInfo = EventCreateInfo+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+ flags :: EventCreateFlags }+ deriving (Typeable)+deriving instance Show EventCreateInfo -instance Storable VkEventCreateInfo where+instance ToCStruct EventCreateInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p EventCreateInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EVENT_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr EventCreateFlags)) (flags)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EVENT_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct EventCreateInfo where+ peekCStruct p = do+ flags <- peek @EventCreateFlags ((p `plusPtr` 16 :: Ptr EventCreateFlags))+ pure $ EventCreateInfo+ flags++instance Storable EventCreateInfo where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkEventCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkEventCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkEventCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkEventCreateInfo))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero EventCreateInfo where+ zero = EventCreateInfo+ zero+
+ src/Graphics/Vulkan/Core10/Event.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Event (EventCreateInfo) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data EventCreateInfo++instance ToCStruct EventCreateInfo+instance Show EventCreateInfo++instance FromCStruct EventCreateInfo+
src/Graphics/Vulkan/Core10/ExtensionDiscovery.hs view
@@ -1,53 +1,65 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.ExtensionDiscovery- ( VK_MAX_EXTENSION_NAME_SIZE- , pattern VK_MAX_EXTENSION_NAME_SIZE- , vkEnumerateInstanceExtensionProperties- , vkEnumerateDeviceExtensionProperties- , VkExtensionProperties(..)- ) where--import Data.Vector.Storable.Sized- ( Vector- )-import Data.Word- ( Word32- )-import Foreign.C.Types- ( CChar(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkPhysicalDevice- )+module Graphics.Vulkan.Core10.ExtensionDiscovery ( enumerateInstanceExtensionProperties+ , enumerateDeviceExtensionProperties+ , ExtensionProperties(..)+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (castFunPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.ByteString (packCString)+import Data.ByteString (useAsCString)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.C.Types (CChar(..))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Ptr (Ptr(Ptr))+import Data.Word (Word32)+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import qualified Data.Vector.Storable.Sized (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Dynamic (getInstanceProcAddr')+import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)+import Graphics.Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkEnumerateDeviceExtensionProperties))+import Graphics.Vulkan.Core10.APIConstants (MAX_EXTENSION_NAME_SIZE)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkEnumerateInstanceExtensionProperties+ :: FunPtr (Ptr CChar -> Ptr Word32 -> Ptr ExtensionProperties -> IO Result) -> Ptr CChar -> Ptr Word32 -> Ptr ExtensionProperties -> IO Result --- No documentation found for TopLevel "VK_MAX_EXTENSION_NAME_SIZE"-type VK_MAX_EXTENSION_NAME_SIZE = 256--- No documentation found for Nested "Integral a => a" "VK_MAX_EXTENSION_NAME_SIZE"-pattern VK_MAX_EXTENSION_NAME_SIZE :: Integral a => a-pattern VK_MAX_EXTENSION_NAME_SIZE = 256 -- | vkEnumerateInstanceExtensionProperties - Returns up to requested number -- of global extension properties --@@ -60,7 +72,7 @@ -- extension properties available or queried, as described below. -- -- - @pProperties@ is either @NULL@ or a pointer to an array of--- 'VkExtensionProperties' structures.+-- 'ExtensionProperties' structures. -- -- = Description --@@ -77,16 +89,21 @@ -- @pPropertyCount@ is less than the number of extension properties -- available, at most @pPropertyCount@ structures will be written. If -- @pPropertyCount@ is smaller than the number of extensions available,--- @VK_INCOMPLETE@ will be returned instead of @VK_SUCCESS@, to indicate+-- 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned+-- instead of 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS', to indicate -- that not all the available properties were returned. -- -- Because the list of available layers may change externally between calls--- to @vkEnumerateInstanceExtensionProperties@, two calls may retrieve+-- to 'enumerateInstanceExtensionProperties', two calls may retrieve -- different results if a @pLayerName@ is available in one call but not in -- another. The extensions supported by a layer may also change between two -- calls, e.g. if the layer implementation is replaced by a different -- version between those calls. --+-- Implementations /must/ not advertise any pair of extensions that cannot+-- be enabled together due to behavioral differences, or any extension that+-- cannot be enabled against the advertised version.+-- -- == Valid Usage (Implicit) -- -- - If @pLayerName@ is not @NULL@, @pLayerName@ /must/ be a@@ -96,36 +113,60 @@ -- -- - If the value referenced by @pPropertyCount@ is not @0@, and -- @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer--- to an array of @pPropertyCount@ @VkExtensionProperties@ structures+-- to an array of @pPropertyCount@ 'ExtensionProperties' structures -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- - @VK_INCOMPLETE@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- - @VK_ERROR_LAYER_NOT_PRESENT@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_LAYER_NOT_PRESENT'+-- -- = See Also ----- 'VkExtensionProperties'+-- 'ExtensionProperties'+enumerateInstanceExtensionProperties :: ("layerName" ::: Maybe ByteString) -> IO (Result, ("properties" ::: Vector ExtensionProperties))+enumerateInstanceExtensionProperties layerName = evalContT $ do+ vkEnumerateInstanceExtensionProperties' <- lift $ mkVkEnumerateInstanceExtensionProperties . castFunPtr @_ @(("pLayerName" ::: Ptr CChar) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr ExtensionProperties) -> IO Result) <$> getInstanceProcAddr' nullPtr (Ptr "vkEnumerateInstanceExtensionProperties"#)+ pLayerName <- case (layerName) of+ Nothing -> pure nullPtr+ Just j -> ContT $ useAsCString (j)+ pPPropertyCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkEnumerateInstanceExtensionProperties' pLayerName (pPPropertyCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pPropertyCount <- lift $ peek @Word32 pPPropertyCount+ pPProperties <- ContT $ bracket (callocBytes @ExtensionProperties ((fromIntegral (pPropertyCount)) * 260)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPProperties `advancePtrBytes` (i * 260) :: Ptr ExtensionProperties) . ($ ())) [0..(fromIntegral (pPropertyCount)) - 1]+ r' <- lift $ vkEnumerateInstanceExtensionProperties' pLayerName (pPPropertyCount) ((pPProperties))+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pPropertyCount' <- lift $ peek @Word32 pPPropertyCount+ pProperties' <- lift $ generateM (fromIntegral (pPropertyCount')) (\i -> peekCStruct @ExtensionProperties (((pPProperties) `advancePtrBytes` (260 * (i)) :: Ptr ExtensionProperties)))+ pure $ ((r'), pProperties')++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkEnumerateInstanceExtensionProperties" vkEnumerateInstanceExtensionProperties :: ("pLayerName" ::: Ptr CChar) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkExtensionProperties) -> IO VkResult+ "dynamic" mkVkEnumerateDeviceExtensionProperties+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr CChar -> Ptr Word32 -> Ptr ExtensionProperties -> IO Result) -> Ptr PhysicalDevice_T -> Ptr CChar -> Ptr Word32 -> Ptr ExtensionProperties -> IO Result+ -- | vkEnumerateDeviceExtensionProperties - Returns properties of available -- physical device extensions -- -- = Parameters ----- - @physicalDevice@ is the physical device that will be queried.+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device that will be queried. -- -- - @pLayerName@ is either @NULL@ or a pointer to a null-terminated -- UTF-8 string naming the layer to retrieve extensions from.@@ -133,11 +174,10 @@ -- - @pPropertyCount@ is a pointer to an integer related to the number of -- extension properties available or queried, and is treated in the -- same fashion as the--- 'vkEnumerateInstanceExtensionProperties'::@pPropertyCount@--- parameter.+-- 'enumerateInstanceExtensionProperties'::@pPropertyCount@ parameter. -- -- - @pProperties@ is either @NULL@ or a pointer to an array of--- 'VkExtensionProperties' structures.+-- 'ExtensionProperties' structures. -- -- = Description --@@ -146,9 +186,14 @@ -- @pLayerName@ is the name of a layer, the device extensions provided by -- that layer are returned. --+-- Implementations /must/ not advertise any pair of extensions that cannot+-- be enabled together due to behavioral differences, or any extension that+-- cannot be enabled against the advertised version.+-- -- == Valid Usage (Implicit) ----- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle -- -- - If @pLayerName@ is not @NULL@, @pLayerName@ /must/ be a -- null-terminated UTF-8 string@@ -157,51 +202,94 @@ -- -- - If the value referenced by @pPropertyCount@ is not @0@, and -- @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer--- to an array of @pPropertyCount@ @VkExtensionProperties@ structures+-- to an array of @pPropertyCount@ 'ExtensionProperties' structures -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- - @VK_INCOMPLETE@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- - @VK_ERROR_LAYER_NOT_PRESENT@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_LAYER_NOT_PRESENT'+-- -- = See Also ----- 'VkExtensionProperties',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkEnumerateDeviceExtensionProperties" vkEnumerateDeviceExtensionProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pLayerName" ::: Ptr CChar) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkExtensionProperties) -> IO VkResult--- | VkExtensionProperties - Structure specifying a extension properties+-- 'ExtensionProperties', 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+enumerateDeviceExtensionProperties :: PhysicalDevice -> ("layerName" ::: Maybe ByteString) -> IO (Result, ("properties" ::: Vector ExtensionProperties))+enumerateDeviceExtensionProperties physicalDevice layerName = evalContT $ do+ let vkEnumerateDeviceExtensionProperties' = mkVkEnumerateDeviceExtensionProperties (pVkEnumerateDeviceExtensionProperties (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pLayerName <- case (layerName) of+ Nothing -> pure nullPtr+ Just j -> ContT $ useAsCString (j)+ pPPropertyCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkEnumerateDeviceExtensionProperties' physicalDevice' pLayerName (pPPropertyCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pPropertyCount <- lift $ peek @Word32 pPPropertyCount+ pPProperties <- ContT $ bracket (callocBytes @ExtensionProperties ((fromIntegral (pPropertyCount)) * 260)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPProperties `advancePtrBytes` (i * 260) :: Ptr ExtensionProperties) . ($ ())) [0..(fromIntegral (pPropertyCount)) - 1]+ r' <- lift $ vkEnumerateDeviceExtensionProperties' physicalDevice' pLayerName (pPPropertyCount) ((pPProperties))+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pPropertyCount' <- lift $ peek @Word32 pPPropertyCount+ pProperties' <- lift $ generateM (fromIntegral (pPropertyCount')) (\i -> peekCStruct @ExtensionProperties (((pPProperties) `advancePtrBytes` (260 * (i)) :: Ptr ExtensionProperties)))+ pure $ ((r'), pProperties')+++-- | VkExtensionProperties - Structure specifying an extension properties -- -- = See Also ----- 'vkEnumerateDeviceExtensionProperties',--- 'vkEnumerateInstanceExtensionProperties'-data VkExtensionProperties = VkExtensionProperties- { -- | @extensionName@ is a null-terminated string specifying the name of the- -- extension.- vkExtensionName :: Vector VK_MAX_EXTENSION_NAME_SIZE CChar+-- 'enumerateDeviceExtensionProperties',+-- 'enumerateInstanceExtensionProperties'+data ExtensionProperties = ExtensionProperties+ { -- | @extensionName@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.MAX_EXTENSION_NAME_SIZE' @char@+ -- containing a null-terminated UTF-8 string which is the name of the+ -- extension.+ extensionName :: ByteString , -- | @specVersion@ is the version of this extension. It is an integer,- -- incremented with backward compatible changes.- vkSpecVersion :: Word32+ -- incremented with backward compatible changes.+ specVersion :: Word32 }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show ExtensionProperties -instance Storable VkExtensionProperties where+instance ToCStruct ExtensionProperties where+ withCStruct x f = allocaBytesAligned 260 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ExtensionProperties{..} f = do+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 0 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))) (extensionName)+ poke ((p `plusPtr` 256 :: Ptr Word32)) (specVersion)+ f+ cStructSize = 260+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 0 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))) (mempty)+ poke ((p `plusPtr` 256 :: Ptr Word32)) (zero)+ f++instance FromCStruct ExtensionProperties where+ peekCStruct p = do+ extensionName <- packCString (lowerArrayPtr ((p `plusPtr` 0 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))))+ specVersion <- peek @Word32 ((p `plusPtr` 256 :: Ptr Word32))+ pure $ ExtensionProperties+ extensionName specVersion++instance Storable ExtensionProperties where sizeOf ~_ = 260 alignment ~_ = 4- peek ptr = VkExtensionProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 256)- poke ptr poked = poke (ptr `plusPtr` 0) (vkExtensionName (poked :: VkExtensionProperties))- *> poke (ptr `plusPtr` 256) (vkSpecVersion (poked :: VkExtensionProperties))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ExtensionProperties where+ zero = ExtensionProperties+ mempty+ zero+
+ src/Graphics/Vulkan/Core10/ExtensionDiscovery.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.ExtensionDiscovery (ExtensionProperties) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ExtensionProperties++instance ToCStruct ExtensionProperties+instance Show ExtensionProperties++instance FromCStruct ExtensionProperties+
src/Graphics/Vulkan/Core10/Fence.hs view
@@ -1,212 +1,243 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.Fence- ( VkFenceCreateFlagBits(..)- , pattern VK_FENCE_CREATE_SIGNALED_BIT- , vkCreateFence- , vkDestroyFence- , vkResetFences- , vkGetFenceStatus- , vkWaitForFences- , VkFenceCreateInfo(..)- , VkFenceCreateFlags- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Word- ( Word32- , Word64- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- )-import Graphics.Vulkan.Core10.Queue- ( VkFence- )----- ** VkFenceCreateFlagBits---- | VkFenceCreateFlagBits - Bitmask specifying initial state and behavior of--- a fence------ = See Also------ 'VkFenceCreateFlags'-newtype VkFenceCreateFlagBits = VkFenceCreateFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkFenceCreateFlagBits where- showsPrec _ VK_FENCE_CREATE_SIGNALED_BIT = showString "VK_FENCE_CREATE_SIGNALED_BIT"- showsPrec p (VkFenceCreateFlagBits x) = showParen (p >= 11) (showString "VkFenceCreateFlagBits " . showsPrec 11 x)+module Graphics.Vulkan.Core10.Fence ( createFence+ , withFence+ , destroyFence+ , resetFences+ , getFenceStatus+ , waitForFences+ , FenceCreateInfo(..)+ ) where -instance Read VkFenceCreateFlagBits where- readPrec = parens ( choose [ ("VK_FENCE_CREATE_SIGNALED_BIT", pure VK_FENCE_CREATE_SIGNALED_BIT)- ] +++- prec 10 (do- expectP (Ident "VkFenceCreateFlagBits")- v <- step readPrec- pure (VkFenceCreateFlagBits v)- )- )+import Control.Exception.Base (bracket)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Word (Word64)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.BaseType (Bool32(..))+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateFence))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyFence))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetFenceStatus))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkResetFences))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkWaitForFences))+import Graphics.Vulkan.Core10.Handles (Device_T)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence (ExportFenceCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32 (ExportFenceWin32HandleInfoKHR)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.Core10.Handles (Fence)+import Graphics.Vulkan.Core10.Handles (Fence(..))+import Graphics.Vulkan.Core10.Enums.FenceCreateFlagBits (FenceCreateFlags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FENCE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateFence+ :: FunPtr (Ptr Device_T -> Ptr (FenceCreateInfo a) -> Ptr AllocationCallbacks -> Ptr Fence -> IO Result) -> Ptr Device_T -> Ptr (FenceCreateInfo a) -> Ptr AllocationCallbacks -> Ptr Fence -> IO Result --- | @VK_FENCE_CREATE_SIGNALED_BIT@ specifies that the fence object is--- created in the signaled state. Otherwise, it is created in the--- unsignaled state.-pattern VK_FENCE_CREATE_SIGNALED_BIT :: VkFenceCreateFlagBits-pattern VK_FENCE_CREATE_SIGNALED_BIT = VkFenceCreateFlagBits 0x00000001 -- | vkCreateFence - Create a new fence object -- -- = Parameters ----- - @device@ is the logical device that creates the fence.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the fence. ----- - @pCreateInfo@ is a pointer to an instance of the @VkFenceCreateInfo@--- structure which contains information about how the fence is to be--- created.+-- - @pCreateInfo@ is a pointer to a 'FenceCreateInfo' structure+-- containing information about how the fence is to be created. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. ----- - @pFence@ points to a handle in which the resulting fence object is--- returned.+-- - @pFence@ is a pointer to a handle in which the resulting fence+-- object is returned. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkFenceCreateInfo@ structure+-- - @pCreateInfo@ /must/ be a valid pointer to a valid 'FenceCreateInfo'+-- structure -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - @pFence@ /must/ be a valid pointer to a @VkFence@ handle+-- - @pFence@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.Fence' handle -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.Queue.VkFence', 'VkFenceCreateInfo'+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Fence', 'FenceCreateInfo'+createFence :: PokeChain a => Device -> FenceCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (Fence)+createFence device createInfo allocator = evalContT $ do+ let vkCreateFence' = mkVkCreateFence (pVkCreateFence (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPFence <- ContT $ bracket (callocBytes @Fence 8) free+ r <- lift $ vkCreateFence' (deviceHandle (device)) pCreateInfo pAllocator (pPFence)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pFence <- lift $ peek @Fence pPFence+ pure $ (pFence)++-- | A safe wrapper for 'createFence' and 'destroyFence' using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withFence :: PokeChain a => Device -> FenceCreateInfo a -> Maybe AllocationCallbacks -> (Fence -> IO r) -> IO r+withFence device fenceCreateInfo allocationCallbacks =+ bracket+ (createFence device fenceCreateInfo allocationCallbacks)+ (\o -> destroyFence device o allocationCallbacks)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkCreateFence" vkCreateFence :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFenceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult+ "dynamic" mkVkDestroyFence+ :: FunPtr (Ptr Device_T -> Fence -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> Fence -> Ptr AllocationCallbacks -> IO ()+ -- | vkDestroyFence - Destroy a fence object -- -- = Parameters ----- - @device@ is the logical device that destroys the fence.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the fence. ----- - @fence@ is the handle of the fence to destroy.+-- - 'Graphics.Vulkan.Core10.Handles.Fence' is the handle of the fence to+-- destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. -- -- == Valid Usage ----- - All [queue--- submission](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-submission)--- commands that refer to @fence@ /must/ have completed execution+-- - All+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submission queue submission>+-- commands that refer to 'Graphics.Vulkan.Core10.Handles.Fence' /must/+-- have completed execution ----- - If @VkAllocationCallbacks@ were provided when @fence@ was created, a--- compatible set of callbacks /must/ be provided here+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.Fence' was+-- created, a compatible set of callbacks /must/ be provided here ----- - If no @VkAllocationCallbacks@ were provided when @fence@ was+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.Fence' was -- created, @pAllocator@ /must/ be @NULL@ -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - If @fence@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @fence@ /must/ be a valid @VkFence@ handle+-- - If 'Graphics.Vulkan.Core10.Handles.Fence' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Fence' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Fence' handle -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - If @fence@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@+-- - If 'Graphics.Vulkan.Core10.Handles.Fence' is a valid handle, it+-- /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization ----- - Host access to @fence@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Fence' /must/ be+-- externally synchronized -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.Queue.VkFence'+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Fence'+destroyFence :: Device -> Fence -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyFence device fence allocator = evalContT $ do+ let vkDestroyFence' = mkVkDestroyFence (pVkDestroyFence (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyFence' (deviceHandle (device)) (fence) pAllocator+ pure $ ()++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkDestroyFence" vkDestroyFence :: ("device" ::: VkDevice) -> ("fence" ::: VkFence) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()+ "dynamic" mkVkResetFences+ :: FunPtr (Ptr Device_T -> Word32 -> Ptr Fence -> IO Result) -> Ptr Device_T -> Word32 -> Ptr Fence -> IO Result+ -- | vkResetFences - Resets one or more fence objects -- -- = Parameters ----- - @device@ is the logical device that owns the fences.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the fences. -- -- - @fenceCount@ is the number of fences to reset. --@@ -214,18 +245,18 @@ -- -- = Description ----- If any member of @pFences@ currently has its [payload--- imported](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences-importing)+-- If any member of @pFences@ currently has its+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importing payload imported> -- with temporary permanence, that fence’s prior permanent payload is first -- restored. The remaining operations described therefore operate on the -- restored payload. ----- When 'vkResetFences' is executed on the host, it defines a /fence--- unsignal operation/ for each fence, which resets the fence to the--- unsignaled state.+-- When 'resetFences' is executed on the host, it defines a /fence unsignal+-- operation/ for each fence, which resets the fence to the unsignaled+-- state. -- -- If any member of @pFences@ is already in the unsignaled state when--- 'vkResetFences' is executed, then 'vkResetFences' has no effect on that+-- 'resetFences' is executed, then 'resetFences' has no effect on that -- fence. -- -- == Valid Usage@@ -235,15 +266,16 @@ -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle -- -- - @pFences@ /must/ be a valid pointer to an array of @fenceCount@--- valid @VkFence@ handles+-- valid 'Graphics.Vulkan.Core10.Handles.Fence' handles -- -- - @fenceCount@ /must/ be greater than @0@ -- -- - Each element of @pFences@ /must/ have been created, allocated, or--- retrieved from @device@+-- retrieved from 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization --@@ -252,106 +284,127 @@ -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.Queue.VkFence'+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Fence'+resetFences :: Device -> ("fences" ::: Vector Fence) -> IO ()+resetFences device fences = evalContT $ do+ let vkResetFences' = mkVkResetFences (pVkResetFences (deviceCmds (device :: Device)))+ pPFences <- ContT $ allocaBytesAligned @Fence ((Data.Vector.length (fences)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPFences `plusPtr` (8 * (i)) :: Ptr Fence) (e)) (fences)+ r <- lift $ vkResetFences' (deviceHandle (device)) ((fromIntegral (Data.Vector.length $ (fences)) :: Word32)) (pPFences)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkResetFences" vkResetFences :: ("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> IO VkResult+ "dynamic" mkVkGetFenceStatus+ :: FunPtr (Ptr Device_T -> Fence -> IO Result) -> Ptr Device_T -> Fence -> IO Result+ -- | vkGetFenceStatus - Return the status of a fence -- -- = Parameters ----- - @device@ is the logical device that owns the fence.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the fence. ----- - @fence@ is the handle of the fence to query.+-- - 'Graphics.Vulkan.Core10.Handles.Fence' is the handle of the fence to+-- query. -- -- = Description ----- Upon success, @vkGetFenceStatus@ returns the status of the fence object,+-- Upon success, 'getFenceStatus' returns the status of the fence object, -- with the following return codes: ----- +-----------------------------------+-------------------------------------------------------------------------------------------------------------------+--- | Status | Meaning |--- +===================================+===================================================================================================================+--- | @VK_SUCCESS@ | The fence specified by @fence@ is signaled. |--- +-----------------------------------+-------------------------------------------------------------------------------------------------------------------+--- | @VK_NOT_READY@ | The fence specified by @fence@ is unsignaled. |--- +-----------------------------------+-------------------------------------------------------------------------------------------------------------------+--- | @VK_ERROR_DEVICE_LOST@ | The device has been lost. See [Lost |--- | | Device](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-lost-device). |--- +-----------------------------------+-------------------------------------------------------------------------------------------------------------------++-- +---------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------++-- | Status | Meaning |+-- +=========================================================+========================================================================================================================++-- | 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' | The fence specified by 'Graphics.Vulkan.Core10.Handles.Fence' is signaled. |+-- +---------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------++-- | 'Graphics.Vulkan.Core10.Enums.Result.NOT_READY' | The fence specified by 'Graphics.Vulkan.Core10.Handles.Fence' is unsignaled. |+-- +---------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------++-- | 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' | The device has been lost. See |+-- | | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>. |+-- +---------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+ -- -- Fence Object Status Codes ----- If a [queue--- submission](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-submission)+-- If a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submission queue submission> -- command is pending execution, then the value returned by this command -- /may/ immediately be out of date. ----- If the device has been lost (see [Lost--- Device](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-lost-device)),--- @vkGetFenceStatus@ /may/ return any of the above status codes. If the--- device has been lost and @vkGetFenceStatus@ is called repeatedly, it--- will eventually return either @VK_SUCCESS@ or @VK_ERROR_DEVICE_LOST@.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle+-- If the device has been lost (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>),+-- 'getFenceStatus' /may/ return any of the above status codes. If the+-- device has been lost and 'getFenceStatus' is called repeatedly, it will+-- eventually return either 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+-- or 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'. ----- - @fence@ /must/ be a valid @VkFence@ handle+-- == Return Codes ----- - @fence@ /must/ have been created, allocated, or retrieved from--- @device@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- == Return Codes+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- - 'Graphics.Vulkan.Core10.Enums.Result.NOT_READY' ----- - @VK_NOT_READY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY' ----- - @VK_ERROR_DEVICE_LOST@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.Queue.VkFence'+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Fence'+getFenceStatus :: Device -> Fence -> IO (Result)+getFenceStatus device fence = do+ let vkGetFenceStatus' = mkVkGetFenceStatus (pVkGetFenceStatus (deviceCmds (device :: Device)))+ r <- vkGetFenceStatus' (deviceHandle (device)) (fence)+ when (r < SUCCESS) (throwIO (VulkanException r))+ pure $ (r)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkGetFenceStatus" vkGetFenceStatus :: ("device" ::: VkDevice) -> ("fence" ::: VkFence) -> IO VkResult+ "dynamic" mkVkWaitForFences+ :: FunPtr (Ptr Device_T -> Word32 -> Ptr Fence -> Bool32 -> Word64 -> IO Result) -> Ptr Device_T -> Word32 -> Ptr Fence -> Bool32 -> Word64 -> IO Result+ -- | vkWaitForFences - Wait for one or more fences to become signaled -- -- = Parameters ----- - @device@ is the logical device that owns the fences.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the fences. -- -- - @fenceCount@ is the number of fences to wait on. -- -- - @pFences@ is a pointer to an array of @fenceCount@ fence handles. -- -- - @waitAll@ is the condition that /must/ be satisfied to successfully--- unblock the wait. If @waitAll@ is @VK_TRUE@, then the condition is--- that all fences in @pFences@ are signaled. Otherwise, the condition--- is that at least one fence in @pFences@ is signaled.+-- unblock the wait. If @waitAll@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', then the condition is that+-- all fences in @pFences@ are signaled. Otherwise, the condition is+-- that at least one fence in @pFences@ is signaled. -- -- - @timeout@ is the timeout period in units of nanoseconds. @timeout@ -- is adjusted to the closest value allowed by the@@ -361,121 +414,157 @@ -- -- = Description ----- If the condition is satisfied when @vkWaitForFences@ is called, then--- @vkWaitForFences@ returns immediately. If the condition is not satisfied--- at the time @vkWaitForFences@ is called, then @vkWaitForFences@ will--- block and wait up to @timeout@ nanoseconds for the condition to become+-- If the condition is satisfied when 'waitForFences' is called, then+-- 'waitForFences' returns immediately. If the condition is not satisfied+-- at the time 'waitForFences' is called, then 'waitForFences' will block+-- and wait up to @timeout@ nanoseconds for the condition to become -- satisfied. ----- If @timeout@ is zero, then @vkWaitForFences@ does not wait, but simply--- returns the current state of the fences. @VK_TIMEOUT@ will be returned--- in this case if the condition is not satisfied, even though no actual--- wait was performed.+-- If @timeout@ is zero, then 'waitForFences' does not wait, but simply+-- returns the current state of the fences.+-- 'Graphics.Vulkan.Core10.Enums.Result.TIMEOUT' will be returned in this+-- case if the condition is not satisfied, even though no actual wait was+-- performed. -- -- If the specified timeout period expires before the condition is--- satisfied, @vkWaitForFences@ returns @VK_TIMEOUT@. If the condition is--- satisfied before @timeout@ nanoseconds has expired, @vkWaitForFences@--- returns @VK_SUCCESS@.+-- satisfied, 'waitForFences' returns+-- 'Graphics.Vulkan.Core10.Enums.Result.TIMEOUT'. If the condition is+-- satisfied before @timeout@ nanoseconds has expired, 'waitForFences'+-- returns 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'. ----- If device loss occurs (see [Lost--- Device](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-lost-device))--- before the timeout has expired, @vkWaitForFences@ /must/ return in--- finite time with either @VK_SUCCESS@ or @VK_ERROR_DEVICE_LOST@.+-- If device loss occurs (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>)+-- before the timeout has expired, 'waitForFences' /must/ return in finite+-- time with either 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' or+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'. ----- __Note__+-- Note ----- While we guarantee that @vkWaitForFences@ /must/ return in finite time,--- no guarantees are made that it returns immediately upon device loss.+-- While we guarantee that 'waitForFences' /must/ return in finite time, no+-- guarantees are made that it returns immediately upon device loss. -- However, the client can reasonably expect that the delay will be on the--- order of seconds and that calling @vkWaitForFences@ will not result in a+-- order of seconds and that calling 'waitForFences' will not result in a -- permanently (or seemingly permanently) dead process. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle -- -- - @pFences@ /must/ be a valid pointer to an array of @fenceCount@--- valid @VkFence@ handles+-- valid 'Graphics.Vulkan.Core10.Handles.Fence' handles -- -- - @fenceCount@ /must/ be greater than @0@ -- -- - Each element of @pFences@ /must/ have been created, allocated, or--- retrieved from @device@+-- retrieved from 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- - @VK_TIMEOUT@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.TIMEOUT' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- - @VK_ERROR_DEVICE_LOST@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'+-- -- = See Also ----- @VkBool32@, 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.Queue.VkFence'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkWaitForFences" vkWaitForFences :: ("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> ("waitAll" ::: VkBool32) -> ("timeout" ::: Word64) -> IO VkResult+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Fence'+waitForFences :: Device -> ("fences" ::: Vector Fence) -> ("waitAll" ::: Bool) -> ("timeout" ::: Word64) -> IO (Result)+waitForFences device fences waitAll timeout = evalContT $ do+ let vkWaitForFences' = mkVkWaitForFences (pVkWaitForFences (deviceCmds (device :: Device)))+ pPFences <- ContT $ allocaBytesAligned @Fence ((Data.Vector.length (fences)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPFences `plusPtr` (8 * (i)) :: Ptr Fence) (e)) (fences)+ r <- lift $ vkWaitForFences' (deviceHandle (device)) ((fromIntegral (Data.Vector.length $ (fences)) :: Word32)) (pPFences) (boolToBool32 (waitAll)) (timeout)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pure $ (r)++ -- | VkFenceCreateInfo - Structure specifying parameters of a newly created -- fence -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_FENCE_CREATE_INFO@+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FENCE_CREATE_INFO' -- -- - Each @pNext@ member of any structure (including this one) in the -- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid -- instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence.VkExportFenceCreateInfo'+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence.ExportFenceCreateInfo' -- or--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.VkExportFenceWin32HandleInfoKHR'+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.ExportFenceWin32HandleInfoKHR' ----- - Each @sType@ member in the @pNext@ chain /must/ be unique+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique ----- - @flags@ /must/ be a valid combination of 'VkFenceCreateFlagBits'+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.FenceCreateFlagBits.FenceCreateFlagBits' -- values -- -- = See Also ----- 'VkFenceCreateFlags', 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkCreateFence'-data VkFenceCreateInfo = VkFenceCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is a bitmask of 'VkFenceCreateFlagBits' specifying the initial- -- state and behavior of the fence.- vkFlags :: VkFenceCreateFlags+-- 'Graphics.Vulkan.Core10.Enums.FenceCreateFlagBits.FenceCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createFence'+data FenceCreateInfo (es :: [Type]) = FenceCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.FenceCreateFlagBits.FenceCreateFlagBits'+ -- specifying the initial state and behavior of the fence.+ flags :: FenceCreateFlags }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show (Chain es) => Show (FenceCreateInfo es) -instance Storable VkFenceCreateInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkFenceCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkFenceCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkFenceCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkFenceCreateInfo))--- | VkFenceCreateFlags - Bitmask of VkFenceCreateFlagBits------ = Description------ @VkFenceCreateFlags@ is a bitmask type for setting a mask of zero or--- more 'VkFenceCreateFlagBits'.------ = See Also------ 'VkFenceCreateFlagBits', 'VkFenceCreateInfo'-type VkFenceCreateFlags = VkFenceCreateFlagBits+instance Extensible FenceCreateInfo where+ extensibleType = STRUCTURE_TYPE_FENCE_CREATE_INFO+ setNext x next = x{next = next}+ getNext FenceCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends FenceCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @ExportFenceWin32HandleInfoKHR = Just f+ | Just Refl <- eqT @e @ExportFenceCreateInfo = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (FenceCreateInfo es) where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p FenceCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FENCE_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr FenceCreateFlags)) (flags)+ lift $ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FENCE_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ f++instance PeekChain es => FromCStruct (FenceCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @FenceCreateFlags ((p `plusPtr` 16 :: Ptr FenceCreateFlags))+ pure $ FenceCreateInfo+ next flags++instance es ~ '[] => Zero (FenceCreateInfo es) where+ zero = FenceCreateInfo+ ()+ zero+
+ src/Graphics/Vulkan/Core10/Fence.hs-boot view
@@ -0,0 +1,17 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Fence (FenceCreateInfo) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+type role FenceCreateInfo nominal+data FenceCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (FenceCreateInfo es)+instance Show (Chain es) => Show (FenceCreateInfo es)++instance PeekChain es => FromCStruct (FenceCreateInfo es)+
+ src/Graphics/Vulkan/Core10/FuncPointers.hs view
@@ -0,0 +1,235 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.FuncPointers ( PFN_vkInternalAllocationNotification+ , FN_vkInternalAllocationNotification+ , PFN_vkInternalFreeNotification+ , FN_vkInternalFreeNotification+ , PFN_vkReallocationFunction+ , FN_vkReallocationFunction+ , PFN_vkAllocationFunction+ , FN_vkAllocationFunction+ , PFN_vkFreeFunction+ , FN_vkFreeFunction+ , PFN_vkVoidFunction+ , FN_vkVoidFunction+ ) where++import Foreign.C.Types (CSize)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Enums.InternalAllocationType (InternalAllocationType)+import Graphics.Vulkan.Core10.Enums.SystemAllocationScope (SystemAllocationScope)+type FN_vkInternalAllocationNotification = ("pUserData" ::: Ptr ()) -> CSize -> InternalAllocationType -> SystemAllocationScope -> IO ()+-- | PFN_vkInternalAllocationNotification - Application-defined memory+-- allocation notification function+--+-- = Parameters+--+-- - @pUserData@ is the value specified for+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'::@pUserData@+-- in the allocator specified by the application.+--+-- - @size@ is the requested size of an allocation.+--+-- - @allocationType@ is a+-- 'Graphics.Vulkan.Core10.Enums.InternalAllocationType.InternalAllocationType'+-- value specifying the requested type of an allocation.+--+-- - @allocationScope@ is a+-- 'Graphics.Vulkan.Core10.Enums.SystemAllocationScope.SystemAllocationScope'+-- value specifying the allocation scope of the lifetime of the+-- allocation, as described+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-host-allocation-scope here>.+--+-- = Description+--+-- This is a purely informational callback.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+type PFN_vkInternalAllocationNotification = FunPtr FN_vkInternalAllocationNotification+++type FN_vkInternalFreeNotification = ("pUserData" ::: Ptr ()) -> CSize -> InternalAllocationType -> SystemAllocationScope -> IO ()+-- | PFN_vkInternalFreeNotification - Application-defined memory free+-- notification function+--+-- = Parameters+--+-- - @pUserData@ is the value specified for+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'::@pUserData@+-- in the allocator specified by the application.+--+-- - @size@ is the requested size of an allocation.+--+-- - @allocationType@ is a+-- 'Graphics.Vulkan.Core10.Enums.InternalAllocationType.InternalAllocationType'+-- value specifying the requested type of an allocation.+--+-- - @allocationScope@ is a+-- 'Graphics.Vulkan.Core10.Enums.SystemAllocationScope.SystemAllocationScope'+-- value specifying the allocation scope of the lifetime of the+-- allocation, as described+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-host-allocation-scope here>.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+type PFN_vkInternalFreeNotification = FunPtr FN_vkInternalFreeNotification+++type FN_vkReallocationFunction = ("pUserData" ::: Ptr ()) -> ("pOriginal" ::: Ptr ()) -> CSize -> ("alignment" ::: CSize) -> SystemAllocationScope -> IO (Ptr ())+-- | PFN_vkReallocationFunction - Application-defined memory reallocation+-- function+--+-- = Parameters+--+-- - @pUserData@ is the value specified for+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'::@pUserData@+-- in the allocator specified by the application.+--+-- - @pOriginal@ /must/ be either @NULL@ or a pointer previously returned+-- by @pfnReallocation@ or @pfnAllocation@ of a compatible allocator.+--+-- - @size@ is the size in bytes of the requested allocation.+--+-- - @alignment@ is the requested alignment of the allocation in bytes+-- and /must/ be a power of two.+--+-- - @allocationScope@ is a+-- 'Graphics.Vulkan.Core10.Enums.SystemAllocationScope.SystemAllocationScope'+-- value specifying the allocation scope of the lifetime of the+-- allocation, as described+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-host-allocation-scope here>.+--+-- = Description+--+-- @pfnReallocation@ /must/ return an allocation with enough space for+-- @size@ bytes, and the contents of the original allocation from bytes+-- zero to min(original size, new size) - 1 /must/ be preserved in the+-- returned allocation. If @size@ is larger than the old size, the contents+-- of the additional space are undefined. If satisfying these requirements+-- involves creating a new allocation, then the old allocation /should/ be+-- freed.+--+-- If @pOriginal@ is @NULL@, then @pfnReallocation@ /must/ behave+-- equivalently to a call to 'PFN_vkAllocationFunction' with the same+-- parameter values (without @pOriginal@).+--+-- If @size@ is zero, then @pfnReallocation@ /must/ behave equivalently to+-- a call to 'PFN_vkFreeFunction' with the same @pUserData@ parameter+-- value, and @pMemory@ equal to @pOriginal@.+--+-- If @pOriginal@ is non-@NULL@, the implementation /must/ ensure that+-- @alignment@ is equal to the @alignment@ used to originally allocate+-- @pOriginal@.+--+-- If this function fails and @pOriginal@ is non-@NULL@ the application+-- /must/ not free the old allocation.+--+-- @pfnReallocation@ /must/ follow the same+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkAllocationFunction_return_rules rules for return values as >.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+type PFN_vkReallocationFunction = FunPtr FN_vkReallocationFunction+++type FN_vkAllocationFunction = ("pUserData" ::: Ptr ()) -> CSize -> ("alignment" ::: CSize) -> SystemAllocationScope -> IO (Ptr ())+-- | PFN_vkAllocationFunction - Application-defined memory allocation+-- function+--+-- = Parameters+--+-- - @pUserData@ is the value specified for+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'::@pUserData@+-- in the allocator specified by the application.+--+-- - @size@ is the size in bytes of the requested allocation.+--+-- - @alignment@ is the requested alignment of the allocation in bytes+-- and /must/ be a power of two.+--+-- - @allocationScope@ is a+-- 'Graphics.Vulkan.Core10.Enums.SystemAllocationScope.SystemAllocationScope'+-- value specifying the allocation scope of the lifetime of the+-- allocation, as described+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-host-allocation-scope here>.+--+-- = Description+--+-- If @pfnAllocation@ is unable to allocate the requested memory, it /must/+-- return @NULL@. If the allocation was successful, it /must/ return a+-- valid pointer to memory allocation containing at least @size@ bytes, and+-- with the pointer value being a multiple of @alignment@.+--+-- Note+--+-- Correct Vulkan operation /cannot/ be assumed if the application does not+-- follow these rules.+--+-- For example, @pfnAllocation@ (or @pfnReallocation@) could cause+-- termination of running Vulkan instance(s) on a failed allocation for+-- debugging purposes, either directly or indirectly. In these+-- circumstances, it /cannot/ be assumed that any part of any affected+-- 'Graphics.Vulkan.Core10.Handles.Instance' objects are going to operate+-- correctly (even+-- 'Graphics.Vulkan.Core10.DeviceInitialization.destroyInstance'), and the+-- application /must/ ensure it cleans up properly via other means (e.g.+-- process termination).+--+-- If @pfnAllocation@ returns @NULL@, and if the implementation is unable+-- to continue correct processing of the current command without the+-- requested allocation, it /must/ treat this as a run-time error, and+-- generate 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+-- at the appropriate time for the command in which the condition was+-- detected, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Return Codes>.+--+-- If the implementation is able to continue correct processing of the+-- current command without the requested allocation, then it /may/ do so,+-- and /must/ not generate+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' as a+-- result of this failed allocation.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+type PFN_vkAllocationFunction = FunPtr FN_vkAllocationFunction+++type FN_vkFreeFunction = ("pUserData" ::: Ptr ()) -> ("pMemory" ::: Ptr ()) -> IO ()+-- | PFN_vkFreeFunction - Application-defined memory free function+--+-- = Parameters+--+-- - @pUserData@ is the value specified for+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'::@pUserData@+-- in the allocator specified by the application.+--+-- - @pMemory@ is the allocation to be freed.+--+-- = Description+--+-- @pMemory@ /may/ be @NULL@, which the callback /must/ handle safely. If+-- @pMemory@ is non-@NULL@, it /must/ be a pointer previously allocated by+-- @pfnAllocation@ or @pfnReallocation@. The application /should/ free this+-- memory.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+type PFN_vkFreeFunction = FunPtr FN_vkFreeFunction+++type FN_vkVoidFunction = () -> IO ()+-- | PFN_vkVoidFunction - Dummy function pointer type returned by queries+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getDeviceProcAddr',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getInstanceProcAddr'+type PFN_vkVoidFunction = FunPtr FN_vkVoidFunction+
+ src/Graphics/Vulkan/Core10/FuncPointers.hs-boot view
@@ -0,0 +1,16 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.FuncPointers ( PFN_vkVoidFunction+ , FN_vkVoidFunction+ ) where++import Foreign.Ptr (FunPtr)++type FN_vkVoidFunction = () -> IO ()+-- | PFN_vkVoidFunction - Dummy function pointer type returned by queries+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getDeviceProcAddr',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getInstanceProcAddr'+type PFN_vkVoidFunction = FunPtr FN_vkVoidFunction+
+ src/Graphics/Vulkan/Core10/Handles.hs view
@@ -0,0 +1,970 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Handles ( Instance(..)+ , Instance_T+ , PhysicalDevice(..)+ , PhysicalDevice_T+ , Device(..)+ , Device_T+ , Queue(..)+ , Queue_T+ , CommandBuffer(..)+ , CommandBuffer_T+ , DeviceMemory(..)+ , CommandPool(..)+ , Buffer(..)+ , BufferView(..)+ , Image(..)+ , ImageView(..)+ , ShaderModule(..)+ , Pipeline(..)+ , PipelineLayout(..)+ , Sampler(..)+ , DescriptorSet(..)+ , DescriptorSetLayout(..)+ , DescriptorPool(..)+ , Fence(..)+ , Semaphore(..)+ , Event(..)+ , QueryPool(..)+ , Framebuffer(..)+ , RenderPass(..)+ , PipelineCache(..)+ ) where++import GHC.Show (showParen)+import Numeric (showHex)+import Foreign.Storable (Storable)+import Foreign.Ptr (Ptr)+import Data.Word (Word64)+import Graphics.Vulkan.Dynamic (DeviceCmds)+import Graphics.Vulkan.Dynamic (InstanceCmds)+import Graphics.Vulkan.Core10.APIConstants (IsHandle)+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+-- | An opaque type for representing pointers to VkInstance handles+data Instance_T+-- | VkInstance - Opaque handle to an instance object+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_android_surface.createAndroidSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.createDebugReportCallbackEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.createDebugUtilsMessengerEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.createDisplayPlaneSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_headless_surface.createHeadlessSurfaceEXT',+-- 'Graphics.Vulkan.Extensions.VK_MVK_ios_surface.createIOSSurfaceMVK',+-- 'Graphics.Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface.createImagePipeSurfaceFUCHSIA',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.createInstance',+-- 'Graphics.Vulkan.Extensions.VK_MVK_macos_surface.createMacOSSurfaceMVK',+-- 'Graphics.Vulkan.Extensions.VK_EXT_metal_surface.createMetalSurfaceEXT',+-- 'Graphics.Vulkan.Extensions.VK_GGP_stream_descriptor_surface.createStreamDescriptorSurfaceGGP',+-- 'Graphics.Vulkan.Extensions.VK_NN_vi_surface.createViSurfaceNN',+-- 'Graphics.Vulkan.Extensions.VK_KHR_wayland_surface.createWaylandSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_win32_surface.createWin32SurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_xcb_surface.createXcbSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_xlib_surface.createXlibSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.debugReportMessageEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.destroyDebugReportCallbackEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.destroyDebugUtilsMessengerEXT',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.destroyInstance',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.destroySurfaceKHR',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.enumeratePhysicalDeviceGroups',+-- 'Graphics.Vulkan.Extensions.VK_KHR_device_group_creation.enumeratePhysicalDeviceGroupsKHR',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.enumeratePhysicalDevices',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getInstanceProcAddr',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.submitDebugUtilsMessageEXT'+data Instance = Instance+ { instanceHandle :: Ptr Instance_T+ , instanceCmds :: InstanceCmds+ }+ deriving stock (Eq, Show)+ deriving anyclass (IsHandle)+instance Zero Instance where+ zero = Instance zero zero+++-- | An opaque type for representing pointers to VkPhysicalDevice handles+data PhysicalDevice_T+-- | VkPhysicalDevice - Opaque handle to a physical device object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.DeviceGroupDeviceCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.PhysicalDeviceGroupProperties',+-- 'Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display.acquireXlibDisplayEXT',+-- 'Graphics.Vulkan.Core10.Device.createDevice',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.createDisplayModeKHR',+-- 'Graphics.Vulkan.Core10.ExtensionDiscovery.enumerateDeviceExtensionProperties',+-- 'Graphics.Vulkan.Core10.LayerDiscovery.enumerateDeviceLayerProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.enumeratePhysicalDevices',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2.getDisplayModeProperties2KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.getDisplayModePropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2.getDisplayPlaneCapabilities2KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.getDisplayPlaneCapabilitiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.getDisplayPlaneSupportedDisplaysKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_calibrated_timestamps.getPhysicalDeviceCalibrateableTimeDomainsEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix.getPhysicalDeviceCooperativeMatrixPropertiesNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2.getPhysicalDeviceDisplayPlaneProperties2KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.getPhysicalDeviceDisplayPlanePropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2.getPhysicalDeviceDisplayProperties2KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.getPhysicalDeviceDisplayPropertiesKHR',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.getPhysicalDeviceExternalBufferProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities.getPhysicalDeviceExternalBufferPropertiesKHR',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.getPhysicalDeviceExternalFenceProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_capabilities.getPhysicalDeviceExternalFencePropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.getPhysicalDeviceExternalImageFormatPropertiesNV',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.getPhysicalDeviceExternalSemaphoreProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_capabilities.getPhysicalDeviceExternalSemaphorePropertiesKHR',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFeatures',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2KHR',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2KHR',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.getPhysicalDeviceGeneratedCommandsPropertiesNVX',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2KHR',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceMemoryProperties',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceMemoryProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceMemoryProperties2KHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.getPhysicalDevicePresentRectanglesKHR',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceProperties',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceQueueFamilyProperties',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2KHR',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.getPhysicalDeviceSparseImageFormatProperties',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceSparseImageFormatProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceSparseImageFormatProperties2KHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.getPhysicalDeviceSurfaceCapabilities2EXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceFormats2KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceFormatsKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.getPhysicalDeviceSurfacePresentModes2EXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfacePresentModesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_tooling_info.getPhysicalDeviceToolPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_wayland_surface.getPhysicalDeviceWaylandPresentationSupportKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_win32_surface.getPhysicalDeviceWin32PresentationSupportKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_xcb_surface.getPhysicalDeviceXcbPresentationSupportKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_xlib_surface.getPhysicalDeviceXlibPresentationSupportKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display.getRandROutputDisplayEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_direct_mode_display.releaseDisplayEXT'+data PhysicalDevice = PhysicalDevice+ { physicalDeviceHandle :: Ptr PhysicalDevice_T+ , instanceCmds :: InstanceCmds+ }+ deriving stock (Eq, Show)+ deriving anyclass (IsHandle)+instance Zero PhysicalDevice where+ zero = PhysicalDevice zero zero+++-- | An opaque type for representing pointers to VkDevice handles+data Device_T+-- | VkDevice - Opaque handle to a device object+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.acquireFullScreenExclusiveModeEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.acquireNextImage2KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.acquireNextImageKHR',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.acquirePerformanceConfigurationINTEL',+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.acquireProfilingLockKHR',+-- 'Graphics.Vulkan.Core10.CommandBuffer.allocateCommandBuffers',+-- 'Graphics.Vulkan.Core10.DescriptorSet.allocateDescriptorSets',+-- 'Graphics.Vulkan.Core10.Memory.allocateMemory',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.bindAccelerationStructureMemoryNV',+-- 'Graphics.Vulkan.Core10.MemoryManagement.bindBufferMemory',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.bindBufferMemory2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_bind_memory2.bindBufferMemory2KHR',+-- 'Graphics.Vulkan.Core10.MemoryManagement.bindImageMemory',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.bindImageMemory2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_bind_memory2.bindImageMemory2KHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.compileDeferredNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.createAccelerationStructureNV',+-- 'Graphics.Vulkan.Core10.Buffer.createBuffer',+-- 'Graphics.Vulkan.Core10.BufferView.createBufferView',+-- 'Graphics.Vulkan.Core10.CommandPool.createCommandPool',+-- 'Graphics.Vulkan.Core10.Pipeline.createComputePipelines',+-- 'Graphics.Vulkan.Core10.DescriptorSet.createDescriptorPool',+-- 'Graphics.Vulkan.Core10.DescriptorSet.createDescriptorSetLayout',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.createDescriptorUpdateTemplate',+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.createDescriptorUpdateTemplateKHR',+-- 'Graphics.Vulkan.Core10.Device.createDevice',+-- 'Graphics.Vulkan.Core10.Event.createEvent',+-- 'Graphics.Vulkan.Core10.Fence.createFence',+-- 'Graphics.Vulkan.Core10.Pass.createFramebuffer',+-- 'Graphics.Vulkan.Core10.Pipeline.createGraphicsPipelines',+-- 'Graphics.Vulkan.Core10.Image.createImage',+-- 'Graphics.Vulkan.Core10.ImageView.createImageView',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.createIndirectCommandsLayoutNVX',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.createObjectTableNVX',+-- 'Graphics.Vulkan.Core10.PipelineCache.createPipelineCache',+-- 'Graphics.Vulkan.Core10.PipelineLayout.createPipelineLayout',+-- 'Graphics.Vulkan.Core10.Query.createQueryPool',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV',+-- 'Graphics.Vulkan.Core10.Pass.createRenderPass',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.createRenderPass2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_create_renderpass2.createRenderPass2KHR',+-- 'Graphics.Vulkan.Core10.Sampler.createSampler',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.createSamplerYcbcrConversion',+-- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.createSamplerYcbcrConversionKHR',+-- 'Graphics.Vulkan.Core10.QueueSemaphore.createSemaphore',+-- 'Graphics.Vulkan.Core10.Shader.createShaderModule',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.createSharedSwapchainsKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.createValidationCacheEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.debugMarkerSetObjectNameEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.debugMarkerSetObjectTagEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.destroyAccelerationStructureNV',+-- 'Graphics.Vulkan.Core10.Buffer.destroyBuffer',+-- 'Graphics.Vulkan.Core10.BufferView.destroyBufferView',+-- 'Graphics.Vulkan.Core10.CommandPool.destroyCommandPool',+-- 'Graphics.Vulkan.Core10.DescriptorSet.destroyDescriptorPool',+-- 'Graphics.Vulkan.Core10.DescriptorSet.destroyDescriptorSetLayout',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.destroyDescriptorUpdateTemplate',+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.destroyDescriptorUpdateTemplateKHR',+-- 'Graphics.Vulkan.Core10.Device.destroyDevice',+-- 'Graphics.Vulkan.Core10.Event.destroyEvent',+-- 'Graphics.Vulkan.Core10.Fence.destroyFence',+-- 'Graphics.Vulkan.Core10.Pass.destroyFramebuffer',+-- 'Graphics.Vulkan.Core10.Image.destroyImage',+-- 'Graphics.Vulkan.Core10.ImageView.destroyImageView',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.destroyIndirectCommandsLayoutNVX',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.destroyObjectTableNVX',+-- 'Graphics.Vulkan.Core10.Pipeline.destroyPipeline',+-- 'Graphics.Vulkan.Core10.PipelineCache.destroyPipelineCache',+-- 'Graphics.Vulkan.Core10.PipelineLayout.destroyPipelineLayout',+-- 'Graphics.Vulkan.Core10.Query.destroyQueryPool',+-- 'Graphics.Vulkan.Core10.Pass.destroyRenderPass',+-- 'Graphics.Vulkan.Core10.Sampler.destroySampler',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.destroySamplerYcbcrConversion',+-- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.destroySamplerYcbcrConversionKHR',+-- 'Graphics.Vulkan.Core10.QueueSemaphore.destroySemaphore',+-- 'Graphics.Vulkan.Core10.Shader.destroyShaderModule',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.destroySwapchainKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.destroyValidationCacheEXT',+-- 'Graphics.Vulkan.Core10.Queue.deviceWaitIdle',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.displayPowerControlEXT',+-- 'Graphics.Vulkan.Core10.Memory.flushMappedMemoryRanges',+-- 'Graphics.Vulkan.Core10.CommandBuffer.freeCommandBuffers',+-- 'Graphics.Vulkan.Core10.DescriptorSet.freeDescriptorSets',+-- 'Graphics.Vulkan.Core10.Memory.freeMemory',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureMemoryRequirementsNV',+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.getAndroidHardwareBufferPropertiesANDROID',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress',+-- 'Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address.getBufferDeviceAddressEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address.getBufferDeviceAddressKHR',+-- 'Graphics.Vulkan.Core10.MemoryManagement.getBufferMemoryRequirements',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2KHR',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferOpaqueCaptureAddress',+-- 'Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address.getBufferOpaqueCaptureAddressKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_calibrated_timestamps.getCalibratedTimestampsEXT',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.getDescriptorSetLayoutSupport',+-- 'Graphics.Vulkan.Extensions.VK_KHR_maintenance3.getDescriptorSetLayoutSupportKHR',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.getDeviceGroupPeerMemoryFeatures',+-- 'Graphics.Vulkan.Extensions.VK_KHR_device_group.getDeviceGroupPeerMemoryFeaturesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.getDeviceGroupPresentCapabilitiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.getDeviceGroupSurfacePresentModes2EXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.getDeviceGroupSurfacePresentModesKHR',+-- 'Graphics.Vulkan.Core10.Memory.getDeviceMemoryCommitment',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getDeviceMemoryOpaqueCaptureAddress',+-- 'Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address.getDeviceMemoryOpaqueCaptureAddressKHR',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getDeviceProcAddr',+-- 'Graphics.Vulkan.Core10.Queue.getDeviceQueue',+-- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.getDeviceQueue2',+-- 'Graphics.Vulkan.Core10.Event.getEventStatus',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.getFenceFdKHR',+-- 'Graphics.Vulkan.Core10.Fence.getFenceStatus',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.getFenceWin32HandleKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.getImageDrmFormatModifierPropertiesEXT',+-- 'Graphics.Vulkan.Core10.MemoryManagement.getImageMemoryRequirements',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.getImageMemoryRequirements2KHR',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.getImageSparseMemoryRequirements',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageSparseMemoryRequirements2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.getImageSparseMemoryRequirements2KHR',+-- 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout',+-- 'Graphics.Vulkan.Extensions.VK_NVX_image_view_handle.getImageViewHandleNVX',+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.getMemoryAndroidHardwareBufferANDROID',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdPropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.getMemoryHostPointerPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.getMemoryWin32HandleKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.getMemoryWin32HandleNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.getMemoryWin32HandlePropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing.getPastPresentationTimingGOOGLE',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.getPerformanceParameterINTEL',+-- 'Graphics.Vulkan.Core10.PipelineCache.getPipelineCacheData',+-- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutableInternalRepresentationsKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutablePropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutableStatisticsKHR',+-- 'Graphics.Vulkan.Core10.Query.getQueryPoolResults',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.getRayTracingShaderGroupHandlesNV',+-- 'Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing.getRefreshCycleDurationGOOGLE',+-- 'Graphics.Vulkan.Core10.Pass.getRenderAreaGranularity',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.getSemaphoreCounterValue',+-- 'Graphics.Vulkan.Extensions.VK_KHR_timeline_semaphore.getSemaphoreCounterValueKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.getSemaphoreFdKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.getSemaphoreWin32HandleKHR',+-- 'Graphics.Vulkan.Extensions.VK_AMD_shader_info.getShaderInfoAMD',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.getSwapchainCounterEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.getSwapchainImagesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.getSwapchainStatusKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.getValidationCacheDataEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.importFenceFdKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.importFenceWin32HandleKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.importSemaphoreFdKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.importSemaphoreWin32HandleKHR',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.initializePerformanceApiINTEL',+-- 'Graphics.Vulkan.Core10.Memory.invalidateMappedMemoryRanges',+-- 'Graphics.Vulkan.Core10.Memory.mapMemory',+-- 'Graphics.Vulkan.Core10.PipelineCache.mergePipelineCaches',+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.mergeValidationCachesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.registerDeviceEventEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.registerDisplayEventEXT',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.registerObjectsNVX',+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.releaseFullScreenExclusiveModeEXT',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.releasePerformanceConfigurationINTEL',+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.releaseProfilingLockKHR',+-- 'Graphics.Vulkan.Core10.CommandPool.resetCommandPool',+-- 'Graphics.Vulkan.Core10.DescriptorSet.resetDescriptorPool',+-- 'Graphics.Vulkan.Core10.Event.resetEvent',+-- 'Graphics.Vulkan.Core10.Fence.resetFences',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.resetQueryPool',+-- 'Graphics.Vulkan.Extensions.VK_EXT_host_query_reset.resetQueryPoolEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.setDebugUtilsObjectNameEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.setDebugUtilsObjectTagEXT',+-- 'Graphics.Vulkan.Core10.Event.setEvent',+-- 'Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata.setHdrMetadataEXT',+-- 'Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr.setLocalDimmingAMD',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.signalSemaphore',+-- 'Graphics.Vulkan.Extensions.VK_KHR_timeline_semaphore.signalSemaphoreKHR',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance1.trimCommandPool',+-- 'Graphics.Vulkan.Extensions.VK_KHR_maintenance1.trimCommandPoolKHR',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.uninitializePerformanceApiINTEL',+-- 'Graphics.Vulkan.Core10.Memory.unmapMemory',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.unregisterObjectsNVX',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplate',+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplateKHR',+-- 'Graphics.Vulkan.Core10.DescriptorSet.updateDescriptorSets',+-- 'Graphics.Vulkan.Core10.Fence.waitForFences',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.waitSemaphores',+-- 'Graphics.Vulkan.Extensions.VK_KHR_timeline_semaphore.waitSemaphoresKHR'+data Device = Device+ { deviceHandle :: Ptr Device_T+ , deviceCmds :: DeviceCmds+ }+ deriving stock (Eq, Show)+ deriving anyclass (IsHandle)+instance Zero Device where+ zero = Device zero zero+++-- | An opaque type for representing pointers to VkQueue handles+data Queue_T+-- | VkQueue - Opaque handle to a queue object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Queue.getDeviceQueue',+-- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.getDeviceQueue2',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.getQueueCheckpointDataNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.queueBeginDebugUtilsLabelEXT',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.queueBindSparse',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.queueEndDebugUtilsLabelEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.queueInsertDebugUtilsLabelEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.queueSetPerformanceConfigurationINTEL',+-- 'Graphics.Vulkan.Core10.Queue.queueSubmit',+-- 'Graphics.Vulkan.Core10.Queue.queueWaitIdle'+data Queue = Queue+ { queueHandle :: Ptr Queue_T+ , deviceCmds :: DeviceCmds+ }+ deriving stock (Eq, Show)+ deriving anyclass (IsHandle)+instance Zero Queue where+ zero = Queue zero zero+++-- | An opaque type for representing pointers to VkCommandBuffer handles+data CommandBuffer_T+-- | VkCommandBuffer - Opaque handle to a command buffer object+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdProcessCommandsInfoNVX',+-- 'Graphics.Vulkan.Core10.Queue.SubmitInfo',+-- 'Graphics.Vulkan.Core10.CommandBuffer.allocateCommandBuffers',+-- 'Graphics.Vulkan.Core10.CommandBuffer.beginCommandBuffer',+-- 'Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering.cmdBeginConditionalRenderingEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.cmdBeginDebugUtilsLabelEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginQueryIndexedEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBeginRenderPass',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdBeginRenderPass2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_create_renderpass2.cmdBeginRenderPass2KHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindPipeline',+-- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.cmdBindShadingRateImageNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBlitImage',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdClearColorImage',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdClearDepthStencilImage',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyBuffer',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyImage',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerBeginEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerEndEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.cmdDebugMarkerInsertEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDispatch',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.cmdDispatchBase',+-- 'Graphics.Vulkan.Extensions.VK_KHR_device_group.cmdDispatchBaseKHR',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDraw',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexed',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount',+-- 'Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndexedIndirectCountAMD',+-- 'Graphics.Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCountKHR',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdDrawIndirectByteCountEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount',+-- 'Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndirectCountAMD',+-- 'Graphics.Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndirectCountKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering.cmdEndConditionalRenderingEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.cmdEndDebugUtilsLabelEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdEndQuery',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndQueryIndexedEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdEndRenderPass',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdEndRenderPass2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_create_renderpass2.cmdEndRenderPass2KHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdFillBuffer',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.cmdInsertDebugUtilsLabelEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdNextSubpass',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdNextSubpass2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_create_renderpass2.cmdNextSubpass2KHR',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdPipelineBarrier',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.cmdProcessCommandsNVX',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdPushConstants',+-- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetWithTemplateKHR',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.cmdReserveSpaceForCommandsNVX',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdResetEvent',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdResetQueryPool',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdResolveImage',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants',+-- 'Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.cmdSetCheckpointNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.cmdSetDeviceMask',+-- 'Graphics.Vulkan.Extensions.VK_KHR_device_group.cmdSetDeviceMaskKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetEvent',+-- 'Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_line_rasterization.cmdSetLineStippleEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.cmdSetPerformanceMarkerINTEL',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.cmdSetPerformanceOverrideINTEL',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.cmdSetPerformanceStreamMarkerINTEL',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetScissor',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetViewport',+-- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV',+-- 'Graphics.Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp',+-- 'Graphics.Vulkan.Core10.CommandBuffer.endCommandBuffer',+-- 'Graphics.Vulkan.Core10.CommandBuffer.freeCommandBuffers',+-- 'Graphics.Vulkan.Core10.CommandBuffer.resetCommandBuffer'+data CommandBuffer = CommandBuffer+ { commandBufferHandle :: Ptr CommandBuffer_T+ , deviceCmds :: DeviceCmds+ }+ deriving stock (Eq, Show)+ deriving anyclass (IsHandle)+instance Zero CommandBuffer where+ zero = CommandBuffer zero zero+++-- | VkDeviceMemory - Opaque handle to a device memory object+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.DeviceMemoryOpaqueCaptureAddressInfo',+-- 'Graphics.Vulkan.Core10.Memory.MappedMemoryRange',+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.MemoryGetAndroidHardwareBufferInfoANDROID',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryGetFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryGetWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseMemoryBind',+-- 'Graphics.Vulkan.Extensions.VK_KHR_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoNV',+-- 'Graphics.Vulkan.Core10.Memory.allocateMemory',+-- 'Graphics.Vulkan.Core10.MemoryManagement.bindBufferMemory',+-- 'Graphics.Vulkan.Core10.MemoryManagement.bindImageMemory',+-- 'Graphics.Vulkan.Core10.Memory.freeMemory',+-- 'Graphics.Vulkan.Core10.Memory.getDeviceMemoryCommitment',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.getMemoryWin32HandleNV',+-- 'Graphics.Vulkan.Core10.Memory.mapMemory',+-- 'Graphics.Vulkan.Core10.Memory.unmapMemory'+newtype DeviceMemory = DeviceMemory Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show DeviceMemory where+ showsPrec p (DeviceMemory x) = showParen (p >= 11) (showString "DeviceMemory 0x" . showHex x)+++-- | VkCommandPool - Opaque handle to a command pool object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.CommandBuffer.CommandBufferAllocateInfo',+-- 'Graphics.Vulkan.Core10.CommandPool.createCommandPool',+-- 'Graphics.Vulkan.Core10.CommandPool.destroyCommandPool',+-- 'Graphics.Vulkan.Core10.CommandBuffer.freeCommandBuffers',+-- 'Graphics.Vulkan.Core10.CommandPool.resetCommandPool',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance1.trimCommandPool',+-- 'Graphics.Vulkan.Extensions.VK_KHR_maintenance1.trimCommandPoolKHR'+newtype CommandPool = CommandPool Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show CommandPool where+ showsPrec p (CommandPool x) = showParen (p >= 11) (showString "CommandPool 0x" . showHex x)+++-- | VkBuffer - Opaque handle to a buffer object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferDeviceAddressInfo',+-- 'Graphics.Vulkan.Core10.OtherTypes.BufferMemoryBarrier',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.BufferMemoryRequirementsInfo2',+-- 'Graphics.Vulkan.Core10.BufferView.BufferViewCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdProcessCommandsInfoNVX',+-- 'Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV',+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorBufferInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryAABBNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.IndirectCommandsTokenNVX',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.ObjectTableIndexBufferEntryNVX',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.ObjectTableVertexBufferEntryNVX',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseBufferMemoryBindInfo',+-- 'Graphics.Vulkan.Core10.MemoryManagement.bindBufferMemory',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyBuffer',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount',+-- 'Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndexedIndirectCountAMD',+-- 'Graphics.Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCountKHR',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdDrawIndirectByteCountEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount',+-- 'Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count.cmdDrawIndirectCountAMD',+-- 'Graphics.Vulkan.Extensions.VK_KHR_draw_indirect_count.cmdDrawIndirectCountKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectCountNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.cmdDrawMeshTasksIndirectNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdFillBuffer',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer',+-- 'Graphics.Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',+-- 'Graphics.Vulkan.Core10.Buffer.createBuffer',+-- 'Graphics.Vulkan.Core10.Buffer.destroyBuffer',+-- 'Graphics.Vulkan.Core10.MemoryManagement.getBufferMemoryRequirements'+newtype Buffer = Buffer Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show Buffer where+ showsPrec p (Buffer x) = showParen (p >= 11) (showString "Buffer 0x" . showHex x)+++-- | VkBufferView - Opaque handle to a buffer view object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet',+-- 'Graphics.Vulkan.Core10.BufferView.createBufferView',+-- 'Graphics.Vulkan.Core10.BufferView.destroyBufferView'+newtype BufferView = BufferView Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show BufferView where+ showsPrec p (BufferView x) = showParen (p >= 11) (showString "BufferView 0x" . showHex x)+++-- | VkImage - Opaque handle to an image object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV',+-- 'Graphics.Vulkan.Core10.OtherTypes.ImageMemoryBarrier',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.ImageMemoryRequirementsInfo2',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.ImageSparseMemoryRequirementsInfo2',+-- 'Graphics.Vulkan.Core10.ImageView.ImageViewCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBindInfo',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageOpaqueMemoryBindInfo',+-- 'Graphics.Vulkan.Core10.MemoryManagement.bindImageMemory',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBlitImage',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdClearColorImage',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdClearDepthStencilImage',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyImage',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdResolveImage',+-- 'Graphics.Vulkan.Core10.Image.createImage',+-- 'Graphics.Vulkan.Core10.Image.destroyImage',+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.getImageDrmFormatModifierPropertiesEXT',+-- 'Graphics.Vulkan.Core10.MemoryManagement.getImageMemoryRequirements',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.getImageSparseMemoryRequirements',+-- 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.getSwapchainImagesKHR'+newtype Image = Image Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show Image where+ showsPrec p (Image x) = showParen (p >= 11) (showString "Image 0x" . showHex x)+++-- | VkImageView - Opaque handle to an image view object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorImageInfo',+-- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewHandleInfoNVX',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.cmdBindShadingRateImageNV',+-- 'Graphics.Vulkan.Core10.ImageView.createImageView',+-- 'Graphics.Vulkan.Core10.ImageView.destroyImageView'+newtype ImageView = ImageView Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show ImageView where+ showsPrec p (ImageView x) = showParen (p >= 11) (showString "ImageView 0x" . showHex x)+++-- | VkShaderModule - Opaque handle to a shader module object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',+-- 'Graphics.Vulkan.Core10.Shader.createShaderModule',+-- 'Graphics.Vulkan.Core10.Shader.destroyShaderModule'+newtype ShaderModule = ShaderModule Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show ShaderModule where+ showsPrec p (ShaderModule x) = showParen (p >= 11) (showString "ShaderModule 0x" . showHex x)+++-- | VkPipeline - Opaque handle to a pipeline object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.ObjectTablePipelineEntryNVX',+-- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineExecutableInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PipelineInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindPipeline',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.compileDeferredNV',+-- 'Graphics.Vulkan.Core10.Pipeline.createComputePipelines',+-- 'Graphics.Vulkan.Core10.Pipeline.createGraphicsPipelines',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV',+-- 'Graphics.Vulkan.Core10.Pipeline.destroyPipeline',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.getRayTracingShaderGroupHandlesNV',+-- 'Graphics.Vulkan.Extensions.VK_AMD_shader_info.getShaderInfoAMD'+newtype Pipeline = Pipeline Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show Pipeline where+ showsPrec p (Pipeline x) = showParen (p >= 11) (showString "Pipeline 0x" . showHex x)+++-- | VkPipelineLayout - Opaque handle to a pipeline layout object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateCreateInfo',+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.ObjectTableDescriptorSetEntryNVX',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.ObjectTablePushConstantEntryNVX',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdPushConstants',+-- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetWithTemplateKHR',+-- 'Graphics.Vulkan.Core10.PipelineLayout.createPipelineLayout',+-- 'Graphics.Vulkan.Core10.PipelineLayout.destroyPipelineLayout'+newtype PipelineLayout = PipelineLayout Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show PipelineLayout where+ showsPrec p (PipelineLayout x) = showParen (p >= 11) (showString "PipelineLayout 0x" . showHex x)+++-- | VkSampler - Opaque handle to a sampler object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorImageInfo',+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding',+-- 'Graphics.Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewHandleInfoNVX',+-- 'Graphics.Vulkan.Core10.Sampler.createSampler',+-- 'Graphics.Vulkan.Core10.Sampler.destroySampler'+newtype Sampler = Sampler Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show Sampler where+ showsPrec p (Sampler x) = showParen (p >= 11) (showString "Sampler 0x" . showHex x)+++-- | VkDescriptorSet - Opaque handle to a descriptor set object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DescriptorSet.CopyDescriptorSet',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.ObjectTableDescriptorSetEntryNVX',+-- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet',+-- 'Graphics.Vulkan.Core10.DescriptorSet.allocateDescriptorSets',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',+-- 'Graphics.Vulkan.Core10.DescriptorSet.freeDescriptorSets',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplate',+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplateKHR'+newtype DescriptorSet = DescriptorSet Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show DescriptorSet where+ showsPrec p (DescriptorSet x) = showParen (p >= 11) (showString "DescriptorSet 0x" . showHex x)+++-- | VkDescriptorSetLayout - Opaque handle to a descriptor set layout object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateCreateInfo',+-- 'Graphics.Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo',+-- 'Graphics.Vulkan.Core10.DescriptorSet.createDescriptorSetLayout',+-- 'Graphics.Vulkan.Core10.DescriptorSet.destroyDescriptorSetLayout'+newtype DescriptorSetLayout = DescriptorSetLayout Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show DescriptorSetLayout where+ showsPrec p (DescriptorSetLayout x) = showParen (p >= 11) (showString "DescriptorSetLayout 0x" . showHex x)+++-- | VkDescriptorPool - Opaque handle to a descriptor pool object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo',+-- 'Graphics.Vulkan.Core10.DescriptorSet.createDescriptorPool',+-- 'Graphics.Vulkan.Core10.DescriptorSet.destroyDescriptorPool',+-- 'Graphics.Vulkan.Core10.DescriptorSet.freeDescriptorSets',+-- 'Graphics.Vulkan.Core10.DescriptorSet.resetDescriptorPool'+newtype DescriptorPool = DescriptorPool Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show DescriptorPool where+ showsPrec p (DescriptorPool x) = showParen (p >= 11) (showString "DescriptorPool 0x" . showHex x)+++-- | VkFence - Opaque handle to a fence object+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.AcquireNextImageInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.FenceGetFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.FenceGetWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.ImportFenceFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.ImportFenceWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.acquireNextImageKHR',+-- 'Graphics.Vulkan.Core10.Fence.createFence',+-- 'Graphics.Vulkan.Core10.Fence.destroyFence',+-- 'Graphics.Vulkan.Core10.Fence.getFenceStatus',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.queueBindSparse',+-- 'Graphics.Vulkan.Core10.Queue.queueSubmit',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.registerDeviceEventEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.registerDisplayEventEXT',+-- 'Graphics.Vulkan.Core10.Fence.resetFences',+-- 'Graphics.Vulkan.Core10.Fence.waitForFences'+newtype Fence = Fence Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show Fence where+ showsPrec p (Fence x) = showParen (p >= 11) (showString "Fence 0x" . showHex x)+++-- | VkSemaphore - Opaque handle to a semaphore object+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.AcquireNextImageInfoKHR',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.BindSparseInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.ImportSemaphoreFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.ImportSemaphoreWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.SemaphoreGetFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.SemaphoreGetWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreSignalInfo',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo',+-- 'Graphics.Vulkan.Core10.Queue.SubmitInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.acquireNextImageKHR',+-- 'Graphics.Vulkan.Core10.QueueSemaphore.createSemaphore',+-- 'Graphics.Vulkan.Core10.QueueSemaphore.destroySemaphore',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.getSemaphoreCounterValue',+-- 'Graphics.Vulkan.Extensions.VK_KHR_timeline_semaphore.getSemaphoreCounterValueKHR'+newtype Semaphore = Semaphore Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show Semaphore where+ showsPrec p (Semaphore x) = showParen (p >= 11) (showString "Semaphore 0x" . showHex x)+++-- | VkEvent - Opaque handle to an event object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdResetEvent',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetEvent',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents',+-- 'Graphics.Vulkan.Core10.Event.createEvent',+-- 'Graphics.Vulkan.Core10.Event.destroyEvent',+-- 'Graphics.Vulkan.Core10.Event.getEventStatus',+-- 'Graphics.Vulkan.Core10.Event.resetEvent',+-- 'Graphics.Vulkan.Core10.Event.setEvent'+newtype Event = Event Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show Event where+ showsPrec p (Event x) = showParen (p >= 11) (showString "Event 0x" . showHex x)+++-- | VkQueryPool - Opaque handle to a query pool object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginQueryIndexedEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdEndQuery',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndQueryIndexedEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdResetQueryPool',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp',+-- 'Graphics.Vulkan.Core10.Query.createQueryPool',+-- 'Graphics.Vulkan.Core10.Query.destroyQueryPool',+-- 'Graphics.Vulkan.Core10.Query.getQueryPoolResults',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.resetQueryPool',+-- 'Graphics.Vulkan.Extensions.VK_EXT_host_query_reset.resetQueryPoolEXT'+newtype QueryPool = QueryPool Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show QueryPool where+ showsPrec p (QueryPool x) = showParen (p >= 11) (showString "QueryPool 0x" . showHex x)+++-- | VkFramebuffer - Opaque handle to a framebuffer object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo',+-- 'Graphics.Vulkan.Core10.Pass.createFramebuffer',+-- 'Graphics.Vulkan.Core10.Pass.destroyFramebuffer'+newtype Framebuffer = Framebuffer Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show Framebuffer where+ showsPrec p (Framebuffer x) = showParen (p >= 11) (showString "Framebuffer 0x" . showHex x)+++-- | VkRenderPass - Opaque handle to a render pass object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',+-- 'Graphics.Vulkan.Core10.Pass.FramebufferCreateInfo',+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo',+-- 'Graphics.Vulkan.Core10.Pass.createRenderPass',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.createRenderPass2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_create_renderpass2.createRenderPass2KHR',+-- 'Graphics.Vulkan.Core10.Pass.destroyRenderPass',+-- 'Graphics.Vulkan.Core10.Pass.getRenderAreaGranularity'+newtype RenderPass = RenderPass Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show RenderPass where+ showsPrec p (RenderPass x) = showParen (p >= 11) (showString "RenderPass 0x" . showHex x)+++-- | VkPipelineCache - Opaque handle to a pipeline cache object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.createComputePipelines',+-- 'Graphics.Vulkan.Core10.Pipeline.createGraphicsPipelines',+-- 'Graphics.Vulkan.Core10.PipelineCache.createPipelineCache',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV',+-- 'Graphics.Vulkan.Core10.PipelineCache.destroyPipelineCache',+-- 'Graphics.Vulkan.Core10.PipelineCache.getPipelineCacheData',+-- 'Graphics.Vulkan.Core10.PipelineCache.mergePipelineCaches'+newtype PipelineCache = PipelineCache Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show PipelineCache where+ showsPrec p (PipelineCache x) = showParen (p >= 11) (showString "PipelineCache 0x" . showHex x)+
+ src/Graphics/Vulkan/Core10/Handles.hs-boot view
@@ -0,0 +1,119 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Handles ( Buffer+ , BufferView+ , CommandBuffer+ , CommandBuffer_T+ , CommandPool+ , DescriptorPool+ , DescriptorSet+ , DescriptorSetLayout+ , DeviceMemory+ , Device+ , Device_T+ , Event+ , Fence+ , Framebuffer+ , Image+ , ImageView+ , Instance+ , Instance_T+ , PhysicalDevice+ , PhysicalDevice_T+ , Pipeline+ , PipelineCache+ , PipelineLayout+ , QueryPool+ , Queue+ , Queue_T+ , RenderPass+ , Sampler+ , Semaphore+ , ShaderModule+ ) where++++data Buffer+++data BufferView+++data CommandBuffer++data CommandBuffer_T+++data CommandPool+++data DescriptorPool+++data DescriptorSet+++data DescriptorSetLayout+++data DeviceMemory+++data Device++data Device_T+++data Event+++data Fence+++data Framebuffer+++data Image+++data ImageView+++data Instance++data Instance_T+++data PhysicalDevice++data PhysicalDevice_T+++data Pipeline+++data PipelineCache+++data PipelineLayout+++data QueryPool+++data Queue++data Queue_T+++data RenderPass+++data Sampler+++data Semaphore+++data ShaderModule+
src/Graphics/Vulkan/Core10/Image.hs view
@@ -1,1220 +1,1718 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.Image- ( VkImageLayout(..)- , pattern VK_IMAGE_LAYOUT_UNDEFINED- , pattern VK_IMAGE_LAYOUT_GENERAL- , pattern VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL- , pattern VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL- , pattern VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL- , pattern VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL- , pattern VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL- , pattern VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL- , pattern VK_IMAGE_LAYOUT_PREINITIALIZED- , vkCreateImage- , vkDestroyImage- , vkGetImageSubresourceLayout- , VkImageCreateInfo(..)- , VkSubresourceLayout(..)- ) where--import Data.Int- ( Int32- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Buffer- ( VkSharingMode(..)- )-import Graphics.Vulkan.Core10.Core- ( VkFormat(..)- , VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkExtent3D(..)- , VkImageTiling(..)- , VkImageType(..)- , VkSampleCountFlagBits(..)- , VkDevice- , VkDeviceSize- , VkImageCreateFlags- , VkImageUsageFlags- )-import Graphics.Vulkan.Core10.MemoryManagement- ( VkImage- )-import Graphics.Vulkan.Core10.SparseResourceMemoryManagement- ( VkImageSubresource(..)- )----- ** VkImageLayout---- | VkImageLayout - Layout of image and image subresources------ = Description------ The type(s) of device access supported by each layout are:------ - @VK_IMAGE_LAYOUT_UNDEFINED@ does not support device access. This--- layout /must/ only be used as the @initialLayout@ member of--- @VkImageCreateInfo@ or @VkAttachmentDescription@, or as the--- @oldLayout@ in an image transition. When transitioning out of this--- layout, the contents of the memory are not guaranteed to be--- preserved.------ - @VK_IMAGE_LAYOUT_PREINITIALIZED@ does not support device access.--- This layout /must/ only be used as the @initialLayout@ member of--- @VkImageCreateInfo@ or @VkAttachmentDescription@, or as the--- @oldLayout@ in an image transition. When transitioning out of this--- layout, the contents of the memory are preserved. This layout is--- intended to be used as the initial layout for an image whose--- contents are written by the host, and hence the data /can/ be--- written to memory immediately, without first executing a layout--- transition. Currently, @VK_IMAGE_LAYOUT_PREINITIALIZED@ is only--- useful with @VK_IMAGE_TILING_LINEAR@ images because there is not a--- standard layout defined for @VK_IMAGE_TILING_OPTIMAL@ images.------ - @VK_IMAGE_LAYOUT_GENERAL@ supports all types of device access.------ - @VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL@ /must/ only be used as a--- color or resolve attachment in a @VkFramebuffer@. This layout is--- valid only for image subresources of images created with the--- @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@ usage bit enabled.------ - @VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL@ /must/ only be--- used as a depth\/stencil attachment in a @VkFramebuffer@. This--- layout is valid only for image subresources of images created with--- the @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@ usage bit enabled.------ - @VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL@ /must/ only be--- used as a read-only depth\/stencil attachment in a @VkFramebuffer@--- and\/or as a read-only image in a shader (which /can/ be read as a--- sampled image, combined image\/sampler and\/or input attachment).--- This layout is valid only for image subresources of images created--- with the @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@ usage bit--- enabled. Only image subresources of images created with--- @VK_IMAGE_USAGE_SAMPLED_BIT@ /can/ be used as a sampled image or--- combined image\/sampler in a shader. Similarly, only image--- subresources of images created with--- @VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT@ /can/ be used as input--- attachments.------ - @VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL@: /must/--- only be used as a depth\/stencil attachment in a @VkFramebuffer@,--- where the depth aspect is read-only, and\/or as a read-only image in--- a shader (which /can/ be read as a sampled image, combined--- image\/sampler and\/or input attachment) where only the depth aspect--- is accessed. This layout is valid only for image subresources of--- images created with the--- @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@ usage bit enabled.--- Only image subresources of images created with--- @VK_IMAGE_USAGE_SAMPLED_BIT@ /can/ be used as a sampled image or--- combined image\/sampler in a shader. Similarly, only image--- subresources of images created with--- @VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT@ /can/ be used as input--- attachments.------ - @VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL@: /must/--- only be used as a depth\/stencil attachment in a @VkFramebuffer@,--- where the stencil aspect is read-only, and\/or as a read-only image--- in a shader (which /can/ be read as a sampled image, combined--- image\/sampler and\/or input attachment) where only the stencil--- aspect is accessed. This layout is valid only for image subresources--- of images created with the--- @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@ usage bit enabled.--- Only image subresources of images created with--- @VK_IMAGE_USAGE_SAMPLED_BIT@ /can/ be used as a sampled image or--- combined image\/sampler in a shader. Similarly, only image--- subresources of images created with--- @VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT@ /can/ be used as input--- attachments.------ - @VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL@ /must/ only be used as a--- read-only image in a shader (which /can/ be read as a sampled image,--- combined image\/sampler and\/or input attachment). This layout is--- valid only for image subresources of images created with the--- @VK_IMAGE_USAGE_SAMPLED_BIT@ or--- @VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT@ usage bit enabled.------ - @VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL@ /must/ only be used as a--- source image of a transfer command (see the definition of--- [@VK_PIPELINE_STAGE_TRANSFER_BIT@](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-transfer)).--- This layout is valid only for image subresources of images created--- with the @VK_IMAGE_USAGE_TRANSFER_SRC_BIT@ usage bit enabled.------ - @VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL@ /must/ only be used as a--- destination image of a transfer command. This layout is valid only--- for image subresources of images created with the--- @VK_IMAGE_USAGE_TRANSFER_DST_BIT@ usage bit enabled.------ - @VK_IMAGE_LAYOUT_PRESENT_SRC_KHR@ /must/ only be used for presenting--- a presentable image for display. A swapchain’s image /must/ be--- transitioned to this layout before calling--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkQueuePresentKHR', and--- /must/ be transitioned away from this layout after calling--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkAcquireNextImageKHR'.------ - @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@ is valid only for shared--- presentable images, and /must/ be used for any usage the image--- supports.------ The layout of each image subresource is not a state of the image--- subresource itself, but is rather a property of how the data in memory--- is organized, and thus for each mechanism of accessing an image in the--- API the application /must/ specify a parameter or structure member that--- indicates which image layout the image subresource(s) are considered to--- be in when the image will be accessed. For transfer commands, this is a--- parameter to the command (see--- [{html_spec_relative}#clears](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#clears)--- and--- [{html_spec_relative}#copies](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#copies)).--- For use as a framebuffer attachment, this is a member in the--- substructures of the @VkRenderPassCreateInfo@ (see [Render--- Pass](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass)).--- For use in a descriptor set, this is a member in the--- @VkDescriptorImageInfo@ structure (see--- [{html_spec_relative}#descriptorsets-updates](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-updates)).--- At the time that any command buffer command accessing an image executes--- on any queue, the layouts of the image subresources that are accessed--- /must/ all match the layout specified via the API controlling those--- accesses.------ When performing a layout transition on an image subresource, the old--- layout value /must/ either equal the current layout of the image--- subresource (at the time the transition executes), or else be--- @VK_IMAGE_LAYOUT_UNDEFINED@ (implying that the contents of the image--- subresource need not be preserved). The new layout used in a transition--- /must/ not be @VK_IMAGE_LAYOUT_UNDEFINED@ or--- @VK_IMAGE_LAYOUT_PREINITIALIZED@.------ The image layout of each image subresource of a depth\/stencil image--- created with @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@--- is dependent on the last sample locations used to render to the image--- subresource as a depth\/stencil attachment, thus applications /must/--- provide the same sample locations that were last used to render to the--- given image subresource whenever a layout transition of the image--- subresource happens, otherwise the contents of the depth aspect of the--- image subresource become undefined.------ In addition, depth reads from a depth\/stencil attachment referring to--- an image subresource range of a depth\/stencil image created with--- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ using--- different sample locations than what have been last used to perform--- depth writes to the image subresources of the same image subresource--- range produce undefined results.------ Similarly, depth writes to a depth\/stencil attachment referring to an--- image subresource range of a depth\/stencil image created with--- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ using--- different sample locations than what have been last used to perform--- depth writes to the image subresources of the same image subresource--- range make the contents of the depth aspect of those image subresources--- undefined.------ = See Also------ 'Graphics.Vulkan.Core10.Pass.VkAttachmentDescription',--- 'Graphics.Vulkan.Core10.Pass.VkAttachmentReference',--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorImageInfo',--- 'VkImageCreateInfo',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkImageMemoryBarrier',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBlitImage',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdClearColorImage',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdClearDepthStencilImage',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyBufferToImage',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyImage',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyImageToBuffer',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdResolveImage'-newtype VkImageLayout = VkImageLayout Int32- deriving (Eq, Ord, Storable)--instance Show VkImageLayout where- showsPrec _ VK_IMAGE_LAYOUT_UNDEFINED = showString "VK_IMAGE_LAYOUT_UNDEFINED"- showsPrec _ VK_IMAGE_LAYOUT_GENERAL = showString "VK_IMAGE_LAYOUT_GENERAL"- showsPrec _ VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = showString "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL"- showsPrec _ VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = showString "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL"- showsPrec _ VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = showString "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL"- showsPrec _ VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = showString "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL"- showsPrec _ VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = showString "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL"- showsPrec _ VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = showString "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL"- showsPrec _ VK_IMAGE_LAYOUT_PREINITIALIZED = showString "VK_IMAGE_LAYOUT_PREINITIALIZED"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkImageLayout 1000117000) = showString "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL"- showsPrec _ (VkImageLayout 1000117001) = showString "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL"- showsPrec _ (VkImageLayout 1000001002) = showString "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR"- showsPrec _ (VkImageLayout 1000111000) = showString "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR"- showsPrec p (VkImageLayout x) = showParen (p >= 11) (showString "VkImageLayout " . showsPrec 11 x)--instance Read VkImageLayout where- readPrec = parens ( choose [ ("VK_IMAGE_LAYOUT_UNDEFINED", pure VK_IMAGE_LAYOUT_UNDEFINED)- , ("VK_IMAGE_LAYOUT_GENERAL", pure VK_IMAGE_LAYOUT_GENERAL)- , ("VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL", pure VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL)- , ("VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL", pure VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL)- , ("VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL", pure VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL)- , ("VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL", pure VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL)- , ("VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL", pure VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL)- , ("VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL", pure VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL)- , ("VK_IMAGE_LAYOUT_PREINITIALIZED", pure VK_IMAGE_LAYOUT_PREINITIALIZED)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL", pure (VkImageLayout 1000117000))- , ("VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL", pure (VkImageLayout 1000117001))- , ("VK_IMAGE_LAYOUT_PRESENT_SRC_KHR", pure (VkImageLayout 1000001002))- , ("VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR", pure (VkImageLayout 1000111000))- ] +++- prec 10 (do- expectP (Ident "VkImageLayout")- v <- step readPrec- pure (VkImageLayout v)- )- )---- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_UNDEFINED"-pattern VK_IMAGE_LAYOUT_UNDEFINED :: VkImageLayout-pattern VK_IMAGE_LAYOUT_UNDEFINED = VkImageLayout 0---- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_GENERAL"-pattern VK_IMAGE_LAYOUT_GENERAL :: VkImageLayout-pattern VK_IMAGE_LAYOUT_GENERAL = VkImageLayout 1---- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL"-pattern VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL :: VkImageLayout-pattern VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = VkImageLayout 2---- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL"-pattern VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL :: VkImageLayout-pattern VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = VkImageLayout 3---- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL"-pattern VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL :: VkImageLayout-pattern VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = VkImageLayout 4---- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL"-pattern VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL :: VkImageLayout-pattern VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = VkImageLayout 5---- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL"-pattern VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL :: VkImageLayout-pattern VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = VkImageLayout 6---- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL"-pattern VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL :: VkImageLayout-pattern VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = VkImageLayout 7---- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_PREINITIALIZED"-pattern VK_IMAGE_LAYOUT_PREINITIALIZED :: VkImageLayout-pattern VK_IMAGE_LAYOUT_PREINITIALIZED = VkImageLayout 8--- | vkCreateImage - Create a new image object------ = Parameters------ - @device@ is the logical device that creates the image.------ - @pCreateInfo@ is a pointer to an instance of the @VkImageCreateInfo@--- structure containing parameters to be used to create the image.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ - @pImage@ points to a @VkImage@ handle in which the resulting image--- object is returned.------ == Valid Usage------ - If the @flags@ member of @pCreateInfo@ includes--- @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@, creating this @VkImage@ /must/--- not cause the total required sparse memory for all currently valid--- sparse resources on the device to exceed--- @VkPhysicalDeviceLimits@::@sparseAddressSpaceSize@------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkImageCreateInfo@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pImage@ /must/ be a valid pointer to a @VkImage@ handle------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage', 'VkImageCreateInfo'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateImage" vkCreateImage :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pImage" ::: Ptr VkImage) -> IO VkResult--- | vkDestroyImage - Destroy an image object------ = Parameters------ - @device@ is the logical device that destroys the image.------ - @image@ is the image to destroy.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ == Valid Usage------ - All submitted commands that refer to @image@, either directly or via--- a @VkImageView@, /must/ have completed execution------ - If @VkAllocationCallbacks@ were provided when @image@ was created, a--- compatible set of callbacks /must/ be provided here------ - If no @VkAllocationCallbacks@ were provided when @image@ was--- created, @pAllocator@ /must/ be @NULL@------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - If @image@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @image@ /must/ be a valid @VkImage@ handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - If @image@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@------ == Host Synchronization------ - Host access to @image@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroyImage" vkDestroyImage :: ("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | vkGetImageSubresourceLayout - Retrieve information about an image--- subresource------ = Parameters------ - @device@ is the logical device that owns the image.------ - @image@ is the image whose layout is being queried.------ - @pSubresource@ is a pointer to a--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageSubresource'--- structure selecting a specific image for the image subresource.------ - @pLayout@ points to a 'VkSubresourceLayout' structure in which the--- layout is returned.------ = Description------ If the 'Graphics.Vulkan.Core10.Core.VkFormat' of @image@ is a--- [multi-planar--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),--- @vkGetImageSubresourceLayout@ describes one plane of the image.------ 'vkGetImageSubresourceLayout' is invariant for the lifetime of a single--- image. However, the subresource layout of images in Android hardware--- buffer external memory isn’t known until the image has been bound to--- memory, so calling @vkGetImageSubresourceLayout@ for such an image--- before it has been bound will result in undefined behavior.------ == Valid Usage------ - @image@ /must/ have been created with @tiling@ equal to--- @VK_IMAGE_TILING_LINEAR@------ - The @aspectMask@ member of @pSubresource@ /must/ only have a single--- bit set------ - The @mipLevel@ member of @pSubresource@ /must/ be less than the--- @mipLevels@ specified in 'VkImageCreateInfo' when @image@ was--- created------ - The @arrayLayer@ member of @pSubresource@ /must/ be less than the--- @arrayLayers@ specified in 'VkImageCreateInfo' when @image@ was--- created------ - If the @format@ of @image@ is a [multi-planar--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)--- with two planes, the @aspectMask@ member of @pSubresource@ /must/ be--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ or @VK_IMAGE_ASPECT_PLANE_1_BIT@------ - If the @format@ of @image@ is a [multi-planar--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)--- with three planes, the @aspectMask@ member of @pSubresource@ /must/--- be @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@ or--- @VK_IMAGE_ASPECT_PLANE_2_BIT@------ - If @image@ was created with the--- VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID--- external memory handle type, then @image@ /must/ be bound to memory.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @image@ /must/ be a valid @VkImage@ handle------ - @pSubresource@ /must/ be a valid pointer to a valid--- @VkImageSubresource@ structure------ - @pLayout@ /must/ be a valid pointer to a @VkSubresourceLayout@--- structure------ - @image@ /must/ have been created, allocated, or retrieved from--- @device@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageSubresource',--- 'VkSubresourceLayout'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetImageSubresourceLayout" vkGetImageSubresourceLayout :: ("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSubresource" ::: Ptr VkImageSubresource) -> ("pLayout" ::: Ptr VkSubresourceLayout) -> IO ()--- | VkImageCreateInfo - Structure specifying the parameters of a newly--- created image object------ = Description------ Images created with @tiling@ equal to @VK_IMAGE_TILING_LINEAR@ have--- further restrictions on their limits and capabilities compared to images--- created with @tiling@ equal to @VK_IMAGE_TILING_OPTIMAL@. Creation of--- images with tiling @VK_IMAGE_TILING_LINEAR@ /may/ not be supported--- unless other parameters meet all of the constraints:------ - @imageType@ is @VK_IMAGE_TYPE_2D@------ - @format@ is not a depth\/stencil format------ - @mipLevels@ is 1------ - @arrayLayers@ is 1------ - @samples@ is @VK_SAMPLE_COUNT_1_BIT@------ - @usage@ only includes @VK_IMAGE_USAGE_TRANSFER_SRC_BIT@ and\/or--- @VK_IMAGE_USAGE_TRANSFER_DST_BIT@------ Implementations /may/ support additional limits and capabilities beyond--- those listed above.------ To query an implementation’s specific capabilities for a given--- combination of @format@, @imageType@, @tiling@, @usage@,--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryImageCreateInfo'::@handleTypes@--- and @flags@, call--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2'.--- The return value specifies whether that combination of image settings is--- supported. On success, the @VkImageFormatProperties@ output parameter--- specifies the set of valid @samples@ bits and the limits for @extent@,--- @mipLevels@, @arrayLayers@, and @maxResourceSize@. Even if--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2'.--- returns success and the parameters to vkCreateImage are all within the--- returned limits, @vkCreateImage@ /must/ fail and return--- @VK_ERROR_OUT_OF_DEVICE_MEMORY@ if the resulting size of the image would--- be larger than @maxResourceSize@.------ To determine the set of valid @usage@ bits for a given format, call--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceFormatProperties'.------ __Note__------ For images created without @VK_IMAGE_CREATE_EXTENDED_USAGE_BIT@ a--- @usage@ bit is valid if it is supported for the format the image is--- created with.------ For images created with @VK_IMAGE_CREATE_EXTENDED_USAGE_BIT@ a @usage@--- bit is valid if it is supported for at least one of the formats a--- @VkImageView@ created from the image /can/ have (see [Image--- Views](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-image-views)--- for more detail).------ == Valid Usage------ - If the @pNext@ chain doesn’t contain an instance of--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkExternalFormatANDROID',--- or if @format@ is not VK_FORMAT_UNDEFINED, the combination of--- @format@, @imageType@, @tiling@, @usage@, and @flags@ /must/ be--- supported, as indicated by a @VK_SUCCESS@ return value from--- @vkGetPhysicalDeviceImageFormatProperties@ invoked with the same--- values passed to the corresponding parameters.------ - If @sharingMode@ is @VK_SHARING_MODE_CONCURRENT@,--- @pQueueFamilyIndices@ /must/ be a valid pointer to an array of--- @queueFamilyIndexCount@ @uint32_t@ values------ - If @sharingMode@ is @VK_SHARING_MODE_CONCURRENT@,--- @queueFamilyIndexCount@ /must/ be greater than @1@------ - If @sharingMode@ is @VK_SHARING_MODE_CONCURRENT@, each element of--- @pQueueFamilyIndices@ /must/ be unique and /must/ be less than--- @pQueueFamilyPropertyCount@ returned by either--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceQueueFamilyProperties'--- or--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceQueueFamilyProperties2'--- for the @physicalDevice@ that was used to create @device@------ - @format@ /must/ not be @VK_FORMAT_UNDEFINED@------ - @extent@::@width@ /must/ be greater than @0@.------ - @extent@::@height@ /must/ be greater than @0@.------ - @extent@::@depth@ /must/ be greater than @0@.------ - @mipLevels@ /must/ be greater than @0@------ - @arrayLayers@ /must/ be greater than @0@------ - If @flags@ contains @VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT@,--- @imageType@ /must/ be @VK_IMAGE_TYPE_2D@------ - If @flags@ contains @VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT@,--- @imageType@ /must/ be @VK_IMAGE_TYPE_3D@------ - If @imageType@ is @VK_IMAGE_TYPE_1D@, @extent.width@ /must/ be less--- than or equal to @VkPhysicalDeviceLimits@::@maxImageDimension1D@, or--- @VkImageFormatProperties@::@maxExtent.width@ (as returned by--- @vkGetPhysicalDeviceImageFormatProperties@ with @format@,--- @imageType@, @tiling@, @usage@, and @flags@ equal to those in this--- structure) - whichever is higher------ - If @imageType@ is @VK_IMAGE_TYPE_2D@ and @flags@ does not contain--- @VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT@, @extent.width@ and--- @extent.height@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxImageDimension2D@, or--- @VkImageFormatProperties@::@maxExtent.width@\/@height@ (as returned--- by @vkGetPhysicalDeviceImageFormatProperties@ with @format@,--- @imageType@, @tiling@, @usage@, and @flags@ equal to those in this--- structure) - whichever is higher------ - If @imageType@ is @VK_IMAGE_TYPE_2D@ and @flags@ contains--- @VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT@, @extent.width@ and--- @extent.height@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxImageDimensionCube@, or--- @VkImageFormatProperties@::@maxExtent.width@\/@height@ (as returned--- by @vkGetPhysicalDeviceImageFormatProperties@ with @format@,--- @imageType@, @tiling@, @usage@, and @flags@ equal to those in this--- structure) - whichever is higher------ - If @imageType@ is @VK_IMAGE_TYPE_2D@ and @flags@ contains--- @VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT@, @extent.width@ and--- @extent.height@ /must/ be equal and @arrayLayers@ /must/ be greater--- than or equal to 6------ - If @imageType@ is @VK_IMAGE_TYPE_3D@, @extent.width@,--- @extent.height@ and @extent.depth@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxImageDimension3D@, or--- @VkImageFormatProperties@::@maxExtent.width@\/@height@\/@depth@ (as--- returned by @vkGetPhysicalDeviceImageFormatProperties@ with--- @format@, @imageType@, @tiling@, @usage@, and @flags@ equal to those--- in this structure) - whichever is higher------ - If @imageType@ is @VK_IMAGE_TYPE_1D@, both @extent.height@ and--- @extent.depth@ /must/ be @1@------ - If @imageType@ is @VK_IMAGE_TYPE_2D@, @extent.depth@ /must/ be @1@------ - @mipLevels@ /must/ be less than or equal to--- ⌊log2(max(@extent.width@, @extent.height@, @extent.depth@))⌋ + 1.------ - @mipLevels@ /must/ be less than or equal to--- @VkImageFormatProperties@::@maxMipLevels@ (as returned by--- @vkGetPhysicalDeviceImageFormatProperties@ with @format@,--- @imageType@, @tiling@, @usage@, and @flags@ equal to those in this--- structure)------ - @arrayLayers@ /must/ be less than or equal to--- @VkImageFormatProperties@::@maxArrayLayers@ (as returned by--- @vkGetPhysicalDeviceImageFormatProperties@ with @format@,--- @imageType@, @tiling@, @usage@, and @flags@ equal to those in this--- structure)------ - If @imageType@ is @VK_IMAGE_TYPE_3D@, @arrayLayers@ /must/ be @1@.------ - If @samples@ is not @VK_SAMPLE_COUNT_1_BIT@, @imageType@ /must/ be--- @VK_IMAGE_TYPE_2D@, @flags@ /must/ not contain--- @VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT@, @tiling@ /must/ be--- @VK_IMAGE_TILING_OPTIMAL@, and @mipLevels@ /must/ be equal to @1@------ - If @usage@ includes @VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT@, then--- bits other than @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@,--- @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@, and--- @VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT@ /must/ not be set------ - If @usage@ includes @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@,--- @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@,--- @VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT@, or--- @VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT@, @extent.width@ /must/ be less--- than or equal to @VkPhysicalDeviceLimits@::@maxFramebufferWidth@------ - If @usage@ includes @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@,--- @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@,--- @VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT@, or--- @VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT@, @extent.height@ /must/ be--- less than or equal to--- @VkPhysicalDeviceLimits@::@maxFramebufferHeight@------ - If @usage@ includes @VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT@,--- @usage@ /must/ also contain at least one of--- @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@,--- @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@, or--- @VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT@.------ - @samples@ /must/ be a bit value that is set in--- @VkImageFormatProperties@::@sampleCounts@ returned by--- @vkGetPhysicalDeviceImageFormatProperties@ with @format@,--- @imageType@, @tiling@, @usage@, and @flags@ equal to those in this--- structure------ - If the [multisampled storage--- images](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-shaderStorageImageMultisample)--- feature is not enabled, and @usage@ contains--- @VK_IMAGE_USAGE_STORAGE_BIT@, @samples@ /must/ be--- @VK_SAMPLE_COUNT_1_BIT@------ - If the [sparse--- bindings](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseBinding)--- feature is not enabled, @flags@ /must/ not contain--- @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@------ - If the [sparse aliased--- residency](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseResidencyAliased)--- feature is not enabled, @flags@ /must/ not contain--- @VK_IMAGE_CREATE_SPARSE_ALIASED_BIT@------ - If @imageType@ is @VK_IMAGE_TYPE_1D@, @flags@ /must/ not contain--- @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@------ - If the [sparse residency for 2D--- images](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseResidencyImage2D)--- feature is not enabled, and @imageType@ is @VK_IMAGE_TYPE_2D@,--- @flags@ /must/ not contain @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@------ - If the [sparse residency for 3D--- images](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseResidencyImage3D)--- feature is not enabled, and @imageType@ is @VK_IMAGE_TYPE_3D@,--- @flags@ /must/ not contain @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@------ - If the [sparse residency for images with 2--- samples](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseResidency2Samples)--- feature is not enabled, @imageType@ is @VK_IMAGE_TYPE_2D@, and--- @samples@ is @VK_SAMPLE_COUNT_2_BIT@, @flags@ /must/ not contain--- @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@------ - If the [sparse residency for images with 4--- samples](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseResidency4Samples)--- feature is not enabled, @imageType@ is @VK_IMAGE_TYPE_2D@, and--- @samples@ is @VK_SAMPLE_COUNT_4_BIT@, @flags@ /must/ not contain--- @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@------ - If the [sparse residency for images with 8--- samples](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseResidency8Samples)--- feature is not enabled, @imageType@ is @VK_IMAGE_TYPE_2D@, and--- @samples@ is @VK_SAMPLE_COUNT_8_BIT@, @flags@ /must/ not contain--- @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@------ - If the [sparse residency for images with 16--- samples](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseResidency16Samples)--- feature is not enabled, @imageType@ is @VK_IMAGE_TYPE_2D@, and--- @samples@ is @VK_SAMPLE_COUNT_16_BIT@, @flags@ /must/ not contain--- @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@------ - If @tiling@ is @VK_IMAGE_TILING_LINEAR@, @format@ /must/ be a format--- that has at least one supported feature bit present in the value of--- @VkFormatProperties@::@linearTilingFeatures@ returned by--- @vkGetPhysicalDeviceFormatProperties@ with the same value of--- @format@------ - If @tiling@ is @VK_IMAGE_TILING_LINEAR@, and--- @VkFormatProperties@::@linearTilingFeatures@ (as returned by--- @vkGetPhysicalDeviceFormatProperties@ with the same value of--- @format@) does not include @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@,--- @usage@ /must/ not contain @VK_IMAGE_USAGE_SAMPLED_BIT@------ - If @tiling@ is @VK_IMAGE_TILING_LINEAR@, and--- @VkFormatProperties@::@linearTilingFeatures@ (as returned by--- @vkGetPhysicalDeviceFormatProperties@ with the same value of--- @format@) does not include @VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT@,--- @usage@ /must/ not contain @VK_IMAGE_USAGE_STORAGE_BIT@------ - If @tiling@ is @VK_IMAGE_TILING_LINEAR@, and--- @VkFormatProperties@::@linearTilingFeatures@ (as returned by--- @vkGetPhysicalDeviceFormatProperties@ with the same value of--- @format@) does not include @VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT@,--- @usage@ /must/ not contain @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@------ - If @tiling@ is @VK_IMAGE_TILING_LINEAR@, and--- @VkFormatProperties@::@linearTilingFeatures@ (as returned by--- @vkGetPhysicalDeviceFormatProperties@ with the same value of--- @format@) does not include--- @VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT@, @usage@ /must/ not--- contain @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@------ - If @tiling@ is @VK_IMAGE_TILING_OPTIMAL@, @format@ /must/ be a--- format that has at least one supported feature bit present in the--- value of @VkFormatProperties@::@optimalTilingFeatures@ returned by--- @vkGetPhysicalDeviceFormatProperties@ with the same value of--- @format@------ - If @tiling@ is @VK_IMAGE_TILING_OPTIMAL@, and--- @VkFormatProperties@::@optimalTilingFeatures@ (as returned by--- @vkGetPhysicalDeviceFormatProperties@ with the same value of--- @format@) does not include @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@,--- @usage@ /must/ not contain @VK_IMAGE_USAGE_SAMPLED_BIT@------ - If @tiling@ is @VK_IMAGE_TILING_OPTIMAL@, and--- @VkFormatProperties@::@optimalTilingFeatures@ (as returned by--- @vkGetPhysicalDeviceFormatProperties@ with the same value of--- @format@) does not include @VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT@,--- @usage@ /must/ not contain @VK_IMAGE_USAGE_STORAGE_BIT@------ - If @tiling@ is @VK_IMAGE_TILING_OPTIMAL@, and--- @VkFormatProperties@::@optimalTilingFeatures@ (as returned by--- @vkGetPhysicalDeviceFormatProperties@ with the same value of--- @format@) does not include @VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT@,--- @usage@ /must/ not contain @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@------ - If @tiling@ is @VK_IMAGE_TILING_OPTIMAL@, and--- @VkFormatProperties@::@optimalTilingFeatures@ (as returned by--- @vkGetPhysicalDeviceFormatProperties@ with the same value of--- @format@) does not include--- @VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT@, @usage@ /must/ not--- contain @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@------ - If @flags@ contains @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@ or--- @VK_IMAGE_CREATE_SPARSE_ALIASED_BIT@, it /must/ also contain--- @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@------ - If any of the bits @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@,--- @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@, or--- @VK_IMAGE_CREATE_SPARSE_ALIASED_BIT@ are set,--- @VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT@ /must/ not also be set------ - If the @pNext@ chain contains an instance of--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.VkExternalMemoryImageCreateInfoNV',--- it /must/ not contain an instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryImageCreateInfo'.------ - If the @pNext@ chain contains an instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryImageCreateInfo',--- its @handleTypes@ member /must/ only contain bits that are also in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalImageFormatProperties'::@externalMemoryProperties@::@compatibleHandleTypes@,--- as returned by--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2'--- with @format@, @imageType@, @tiling@, @usage@, and @flags@ equal to--- those in this structure, and with an instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkPhysicalDeviceExternalImageFormatInfo'--- in the @pNext@ chain, with a @handleType@ equal to any one of the--- handle types specified in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryImageCreateInfo'::@handleTypes@------ - If the @pNext@ chain contains an instance of--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.VkExternalMemoryImageCreateInfoNV',--- its @handleTypes@ member /must/ only contain bits that are also in--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalImageFormatPropertiesNV'::@externalMemoryProperties@::@compatibleHandleTypes@,--- as returned by--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.vkGetPhysicalDeviceExternalImageFormatPropertiesNV'--- with @format@, @imageType@, @tiling@, @usage@, and @flags@ equal to--- those in this structure, and with @externalHandleType@ equal to any--- one of the handle types specified in--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.VkExternalMemoryImageCreateInfoNV'::@handleTypes@------ - If the logical device was created with--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation.VkDeviceGroupDeviceCreateInfo'::@physicalDeviceCount@--- equal to 1, @flags@ /must/ not contain--- @VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT@------ - If @flags@ contains--- @VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT@, then @mipLevels@--- /must/ be one, @arrayLayers@ /must/ be one, @imageType@ /must/ be--- @VK_IMAGE_TYPE_2D@, and @tiling@ /must/ be @VK_IMAGE_TILING_OPTIMAL@------ - If @flags@ contains--- @VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT@, then @format@--- /must/ be a [block-compressed image--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#appendix-compressedtex-bc),--- an [ETC compressed image--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#appendix-compressedtex-etc2),--- or an [ASTC compressed image--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#appendix-compressedtex-astc).------ - If @flags@ contains--- @VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT@, then @flags@--- /must/ also contain @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@.------ - @initialLayout@ /must/ be @VK_IMAGE_LAYOUT_UNDEFINED@ or--- @VK_IMAGE_LAYOUT_PREINITIALIZED@.------ - If the @pNext@ chain includes a--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryImageCreateInfo'--- or--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.VkExternalMemoryImageCreateInfoNV'--- structure whose @handleTypes@ member is not @0@, @initialLayout@--- /must/ be @VK_IMAGE_LAYOUT_UNDEFINED@------ - If the image @format@ is one of those listed in--- [{html_spec_relative}#features-formats-requiring-sampler-ycbcr-conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion):------ - @mipLevels@ /must/ be 1------ - @samples@ must be @VK_SAMPLE_COUNT_1_BIT@------ - @imageType@ /must/ be @VK_IMAGE_TYPE_2D@------ - @arrayLayers@ /must/ be 1------ - If @tiling@ is @VK_IMAGE_TILING_OPTIMAL@, @format@ is a--- /multi-planar/ format, and--- @VkFormatProperties@::@optimalTilingFeatures@ (as returned by--- @vkGetPhysicalDeviceFormatProperties@ with the same value of--- @format@) does not include @VK_FORMAT_FEATURE_DISJOINT_BIT@, @flags@--- /must/ not contain @VK_IMAGE_CREATE_DISJOINT_BIT@------ - If @tiling@ is @VK_IMAGE_TILING_LINEAR@, @format@ is a--- /multi-planar/ format, and--- @VkFormatProperties@::@linearTilingFeatures@ (as returned by--- @vkGetPhysicalDeviceFormatProperties@ with the same value of--- @format@) does not include @VK_FORMAT_FEATURE_DISJOINT_BIT@, @flags@--- /must/ not contain @VK_IMAGE_CREATE_DISJOINT_BIT@------ - If @format@ is not a /multi-planar/ format, and @flags@ does not--- include @VK_IMAGE_CREATE_ALIAS_BIT@, @flags@ /must/ not contain--- @VK_IMAGE_CREATE_DISJOINT_BIT@------ - If @flags@ contains--- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ @format@--- /must/ be a depth or depth\/stencil format------ - If the @pNext@ chain includes a--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryImageCreateInfo'--- structure whose @handleTypes@ member includes--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID@:------ - @imageType@ /must/ be @VK_IMAGE_TYPE_2D@------ - @mipLevels@ /must/ either be @1@ or equal to--- ⌊log2(max(@extent.width@, @extent.height@, @extent.depth@))⌋ +--- 1.------ - If @format@ is not @VK_FORMAT_UNDEFINED@, then @format@,--- @imageType@, @tiling@, @usage@, @flags@, @mipLevels@, and--- @samples@ /must/ be supported with--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID@--- external memory handle types according to--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2'------ - If @format@ is @VK_FORMAT_UNDEFINED@, then the @pNext@ chain--- /must/ include a--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkExternalFormatANDROID'--- structure whose @externalFormat@ member is not @0@------ - If the @pNext@ chain includes a--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkExternalFormatANDROID'--- structure whose @externalFormat@ member is not @0@:------ - @format@ /must/ be @VK_FORMAT_UNDEFINED@------ - @flags@ /must/ not include VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT------ - @usage@ /must/ not include any usages except--- @VK_IMAGE_USAGE_SAMPLED_BIT@------ - @tiling@ /must/ be @VK_IMAGE_TILING_OPTIMAL@------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of--- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationImageCreateInfoNV',--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkExternalFormatANDROID',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryImageCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.VkExternalMemoryImageCreateInfoNV',--- 'Graphics.Vulkan.Extensions.VK_KHR_image_format_list.VkImageFormatListCreateInfoKHR',--- or--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkImageSwapchainCreateInfoKHR'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ - @flags@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageCreateFlagBits'--- values------ - @imageType@ /must/ be a valid--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType' value------ - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'--- value------ - @samples@ /must/ be a valid--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'--- value------ - @tiling@ /must/ be a valid--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageTiling' value------ - @usage@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits'--- values------ - @usage@ /must/ not be @0@------ - @sharingMode@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Buffer.VkSharingMode' value------ - @initialLayout@ /must/ be a valid 'VkImageLayout' value------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkExtent3D',--- 'Graphics.Vulkan.Core10.Core.VkFormat',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageCreateFlags',--- 'VkImageLayout',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageTiling',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlags',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits',--- 'Graphics.Vulkan.Core10.Buffer.VkSharingMode',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateImage'-data VkImageCreateInfo = VkImageCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is a bitmask of- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageCreateFlagBits'- -- describing additional parameters of the image.- vkFlags :: VkImageCreateFlags- , -- | @imageType@ is a- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType' value- -- specifying the basic dimensionality of the image. Layers in array- -- textures do not count as a dimension for the purposes of the image type.- vkImageType :: VkImageType- , -- | @format@ is a 'Graphics.Vulkan.Core10.Core.VkFormat' describing the- -- format and type of the data elements that will be contained in the- -- image.- vkFormat :: VkFormat- , -- | @extent@ is a 'Graphics.Vulkan.Core10.DeviceInitialization.VkExtent3D'- -- describing the number of data elements in each dimension of the base- -- level.- vkExtent :: VkExtent3D- , -- | @mipLevels@ describes the number of levels of detail available for- -- minified sampling of the image.- vkMipLevels :: Word32- , -- | @arrayLayers@ is the number of layers in the image.- vkArrayLayers :: Word32- , -- | @samples@ is the number of sub-data element samples in the image as- -- defined in- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'. See- -- [Multisampling](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#primsrast-multisampling).- vkSamples :: VkSampleCountFlagBits- , -- | @tiling@ is a- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageTiling' value- -- specifying the tiling arrangement of the data elements in memory.- vkTiling :: VkImageTiling- , -- | @usage@ is a bitmask of- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits'- -- describing the intended usage of the image.- vkUsage :: VkImageUsageFlags- , -- | @sharingMode@ is a 'Graphics.Vulkan.Core10.Buffer.VkSharingMode' value- -- specifying the sharing mode of the image when it will be accessed by- -- multiple queue families.- vkSharingMode :: VkSharingMode- , -- | @queueFamilyIndexCount@ is the number of entries in the- -- @pQueueFamilyIndices@ array.- vkQueueFamilyIndexCount :: Word32- , -- | @pQueueFamilyIndices@ is a list of queue families that will access this- -- image (ignored if @sharingMode@ is not @VK_SHARING_MODE_CONCURRENT@).- vkPQueueFamilyIndices :: Ptr Word32- , -- | @initialLayout@ is a 'VkImageLayout' value specifying the initial- -- 'VkImageLayout' of all image subresources of the image. See [Image- -- Layouts](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-image-layouts).- vkInitialLayout :: VkImageLayout- }- deriving (Eq, Show)--instance Storable VkImageCreateInfo where- sizeOf ~_ = 88- alignment ~_ = 8- peek ptr = VkImageCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 52)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 60)- <*> peek (ptr `plusPtr` 64)- <*> peek (ptr `plusPtr` 72)- <*> peek (ptr `plusPtr` 80)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkImageCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImageCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkImageCreateInfo))- *> poke (ptr `plusPtr` 20) (vkImageType (poked :: VkImageCreateInfo))- *> poke (ptr `plusPtr` 24) (vkFormat (poked :: VkImageCreateInfo))- *> poke (ptr `plusPtr` 28) (vkExtent (poked :: VkImageCreateInfo))- *> poke (ptr `plusPtr` 40) (vkMipLevels (poked :: VkImageCreateInfo))- *> poke (ptr `plusPtr` 44) (vkArrayLayers (poked :: VkImageCreateInfo))- *> poke (ptr `plusPtr` 48) (vkSamples (poked :: VkImageCreateInfo))- *> poke (ptr `plusPtr` 52) (vkTiling (poked :: VkImageCreateInfo))- *> poke (ptr `plusPtr` 56) (vkUsage (poked :: VkImageCreateInfo))- *> poke (ptr `plusPtr` 60) (vkSharingMode (poked :: VkImageCreateInfo))- *> poke (ptr `plusPtr` 64) (vkQueueFamilyIndexCount (poked :: VkImageCreateInfo))- *> poke (ptr `plusPtr` 72) (vkPQueueFamilyIndices (poked :: VkImageCreateInfo))- *> poke (ptr `plusPtr` 80) (vkInitialLayout (poked :: VkImageCreateInfo))--- | VkSubresourceLayout - Structure specifying subresource layout------ = Description------ For images created with linear tiling, @rowPitch@, @arrayPitch@ and--- @depthPitch@ describe the layout of the image subresource in linear--- memory. For uncompressed formats, @rowPitch@ is the number of bytes--- between texels with the same x coordinate in adjacent rows (y--- coordinates differ by one). @arrayPitch@ is the number of bytes between--- texels with the same x and y coordinate in adjacent array layers of the--- image (array layer values differ by one). @depthPitch@ is the number of--- bytes between texels with the same x and y coordinate in adjacent slices--- of a 3D image (z coordinates differ by one). Expressed as an addressing--- formula, the starting byte of a texel in the image subresource has--- address:------ > // (x,y,z,layer) are in texel coordinates--- > address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*elementSize + offset------ For compressed formats, the @rowPitch@ is the number of bytes between--- compressed texel blocks in adjacent rows. @arrayPitch@ is the number of--- bytes between compressed texel blocks in adjacent array layers.--- @depthPitch@ is the number of bytes between compressed texel blocks in--- adjacent slices of a 3D image.------ > // (x,y,z,layer) are in compressed texel block coordinates--- > address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*compressedTexelBlockByteSize + offset;------ @arrayPitch@ is undefined for images that were not created as arrays.--- @depthPitch@ is defined only for 3D images.------ For /single-plane/ color formats, the @aspectMask@ member of--- @VkImageSubresource@ /must/ be @VK_IMAGE_ASPECT_COLOR_BIT@. For--- depth\/stencil formats, @aspectMask@ /must/ be either--- @VK_IMAGE_ASPECT_DEPTH_BIT@ or @VK_IMAGE_ASPECT_STENCIL_BIT@. On--- implementations that store depth and stencil aspects separately,--- querying each of these image subresource layouts will return a different--- @offset@ and @size@ representing the region of memory used for that--- aspect. On implementations that store depth and stencil aspects--- interleaved, the same @offset@ and @size@ are returned and represent the--- interleaved memory allocation.------ For [multi-planar--- formats](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),--- the @aspectMask@ member of @VkImageSubresource@ /must/ be--- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or (for--- 3-plane formats only) @VK_IMAGE_ASPECT_PLANE_2_BIT@. Querying each of--- these image subresource layouts will return a different @offset@ and--- @size@ representing the region of memory used for that plane.------ = See Also------ @VkDeviceSize@, 'vkGetImageSubresourceLayout'-data VkSubresourceLayout = VkSubresourceLayout- { -- | @offset@ is the byte offset from the start of the image where the image- -- subresource begins.- vkOffset :: VkDeviceSize- , -- | @size@ is the size in bytes of the image subresource. @size@ includes- -- any extra memory that is required based on @rowPitch@.- vkSize :: VkDeviceSize- , -- | @rowPitch@ describes the number of bytes between each row of texels in- -- an image.- vkRowPitch :: VkDeviceSize- , -- | @arrayPitch@ describes the number of bytes between each array layer of- -- an image.- vkArrayPitch :: VkDeviceSize- , -- | @depthPitch@ describes the number of bytes between each slice of 3D- -- image.- vkDepthPitch :: VkDeviceSize- }- deriving (Eq, Show)--instance Storable VkSubresourceLayout where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkSubresourceLayout <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkOffset (poked :: VkSubresourceLayout))- *> poke (ptr `plusPtr` 8) (vkSize (poked :: VkSubresourceLayout))- *> poke (ptr `plusPtr` 16) (vkRowPitch (poked :: VkSubresourceLayout))- *> poke (ptr `plusPtr` 24) (vkArrayPitch (poked :: VkSubresourceLayout))- *> poke (ptr `plusPtr` 32) (vkDepthPitch (poked :: VkSubresourceLayout))+{-# language CPP #-}+module Graphics.Vulkan.Core10.Image ( createImage+ , withImage+ , destroyImage+ , getImageSubresourceLayout+ , ImageSubresource(..)+ , ImageCreateInfo(..)+ , SubresourceLayout(..)+ ) where++import Control.Exception.Base (bracket)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.CStruct.Extends (Chain)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationImageCreateInfoNV)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateImage))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyImage))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetImageSubresourceLayout))+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.Core10.SharedTypes (Extent3D)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (ExternalFormatANDROID)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory (ExternalMemoryImageCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_external_memory (ExternalMemoryImageCreateInfoNV)+import Graphics.Vulkan.Core10.Enums.Format (Format)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Image)+import Graphics.Vulkan.Core10.Handles (Image(..))+import Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlags)+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier (ImageDrmFormatModifierExplicitCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier (ImageDrmFormatModifierListCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list (ImageFormatListCreateInfo)+import Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage (ImageStencilUsageCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (ImageSwapchainCreateInfoKHR)+import Graphics.Vulkan.Core10.Enums.ImageTiling (ImageTiling)+import Graphics.Vulkan.Core10.Enums.ImageType (ImageType)+import Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)+import Graphics.Vulkan.Core10.Enums.SharingMode (SharingMode)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateImage+ :: FunPtr (Ptr Device_T -> Ptr (ImageCreateInfo a) -> Ptr AllocationCallbacks -> Ptr Image -> IO Result) -> Ptr Device_T -> Ptr (ImageCreateInfo a) -> Ptr AllocationCallbacks -> Ptr Image -> IO Result++-- | vkCreateImage - Create a new image object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the image.+--+-- - @pCreateInfo@ is a pointer to a 'ImageCreateInfo' structure+-- containing parameters to be used to create the image.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pImage@ is a pointer to a 'Graphics.Vulkan.Core10.Handles.Image'+-- handle in which the resulting image object is returned.+--+-- == Valid Usage+--+-- - If the 'Graphics.Vulkan.Core10.BaseType.Flags' member of+-- @pCreateInfo@ includes+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT',+-- creating this 'Graphics.Vulkan.Core10.Handles.Image' /must/ not+-- cause the total required sparse memory for all currently valid+-- sparse resources on the device to exceed+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@sparseAddressSpaceSize@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid 'ImageCreateInfo'+-- structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pImage@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.Image' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Image', 'ImageCreateInfo'+createImage :: PokeChain a => Device -> ImageCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (Image)+createImage device createInfo allocator = evalContT $ do+ let vkCreateImage' = mkVkCreateImage (pVkCreateImage (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPImage <- ContT $ bracket (callocBytes @Image 8) free+ r <- lift $ vkCreateImage' (deviceHandle (device)) pCreateInfo pAllocator (pPImage)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pImage <- lift $ peek @Image pPImage+ pure $ (pImage)++-- | A safe wrapper for 'createImage' and 'destroyImage' using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withImage :: PokeChain a => Device -> ImageCreateInfo a -> Maybe AllocationCallbacks -> (Image -> IO r) -> IO r+withImage device imageCreateInfo allocationCallbacks =+ bracket+ (createImage device imageCreateInfo allocationCallbacks)+ (\o -> destroyImage device o allocationCallbacks)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDestroyImage+ :: FunPtr (Ptr Device_T -> Image -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> Image -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyImage - Destroy an image object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the image.+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' is the image to destroy.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- == Valid Usage+--+-- - All submitted commands that refer to+-- 'Graphics.Vulkan.Core10.Handles.Image', either directly or via a+-- 'Graphics.Vulkan.Core10.Handles.ImageView', /must/ have completed+-- execution+--+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.Image' was+-- created, a compatible set of callbacks /must/ be provided here+--+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.Image' was+-- created, @pAllocator@ /must/ be @NULL@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Image' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Image' handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' is a valid handle, it+-- /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Image' /must/ be+-- externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Image'+destroyImage :: Device -> Image -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyImage device image allocator = evalContT $ do+ let vkDestroyImage' = mkVkDestroyImage (pVkDestroyImage (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyImage' (deviceHandle (device)) (image) pAllocator+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetImageSubresourceLayout+ :: FunPtr (Ptr Device_T -> Image -> Ptr ImageSubresource -> Ptr SubresourceLayout -> IO ()) -> Ptr Device_T -> Image -> Ptr ImageSubresource -> Ptr SubresourceLayout -> IO ()++-- | vkGetImageSubresourceLayout - Retrieve information about an image+-- subresource+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the image.+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' is the image whose layout is+-- being queried.+--+-- - @pSubresource@ is a pointer to a 'ImageSubresource' structure+-- selecting a specific image for the image subresource.+--+-- - @pLayout@ is a pointer to a 'SubresourceLayout' structure in which+-- the layout is returned.+--+-- = Description+--+-- If the image is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource linear>,+-- then the returned layout is valid for+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-hostaccess host access>.+--+-- If the image’s tiling is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' and its+-- format is a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,+-- then 'getImageSubresourceLayout' describes one /format plane/ of the+-- image. If the image’s tiling is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',+-- then 'getImageSubresourceLayout' describes one /memory plane/ of the+-- image. If the image’s tiling is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'+-- and the image is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource non-linear>,+-- then the returned layout has an implementation-dependent meaning; the+-- vendor of the image’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifier DRM format modifier>+-- /may/ provide documentation that explains how to interpret the returned+-- layout.+--+-- 'getImageSubresourceLayout' is invariant for the lifetime of a single+-- image. However, the subresource layout of images in Android hardware+-- buffer external memory is not known until the image has been bound to+-- memory, so applications /must/ not call 'getImageSubresourceLayout' for+-- such an image before it has been bound.+--+-- == Valid Usage+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ have been created with+-- @tiling@ equal to+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' or+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'+--+-- - The @aspectMask@ member of @pSubresource@ /must/ only have a single+-- bit set+--+-- - The @mipLevel@ member of @pSubresource@ /must/ be less than the+-- @mipLevels@ specified in 'ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- - The @arrayLayer@ member of @pSubresource@ /must/ be less than the+-- @arrayLayers@ specified in 'ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- - If the @tiling@ of the 'Graphics.Vulkan.Core10.Handles.Image' is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' and+-- its 'Graphics.Vulkan.Core10.Enums.Format.Format' is a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>+-- with two planes, the @aspectMask@ member of @pSubresource@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+--+-- - If the @tiling@ of the 'Graphics.Vulkan.Core10.Handles.Image' is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' and+-- its 'Graphics.Vulkan.Core10.Enums.Format.Format' is a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>+-- with three planes, the @aspectMask@ member of @pSubresource@ /must/+-- be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with the+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'+-- external memory handle type, then+-- 'Graphics.Vulkan.Core10.Handles.Image' /must/ be bound to memory.+--+-- - If the @tiling@ of the 'Graphics.Vulkan.Core10.Handles.Image' is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',+-- then the @aspectMask@ member of @pSubresource@ /must/ be+-- @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ and the index @i@ /must/ be+-- less than the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkDrmFormatModifierPropertiesEXT drmFormatModifierPlaneCount>+-- associated with the image’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageCreateInfo >+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageDrmFormatModifierPropertiesEXT drmFormatModifier>.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Image' handle+--+-- - @pSubresource@ /must/ be a valid pointer to a valid+-- 'ImageSubresource' structure+--+-- - @pLayout@ /must/ be a valid pointer to a 'SubresourceLayout'+-- structure+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ have been created,+-- allocated, or retrieved from 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Image', 'ImageSubresource',+-- 'SubresourceLayout'+getImageSubresourceLayout :: Device -> Image -> ImageSubresource -> IO (SubresourceLayout)+getImageSubresourceLayout device image subresource = evalContT $ do+ let vkGetImageSubresourceLayout' = mkVkGetImageSubresourceLayout (pVkGetImageSubresourceLayout (deviceCmds (device :: Device)))+ pSubresource <- ContT $ withCStruct (subresource)+ pPLayout <- ContT (withZeroCStruct @SubresourceLayout)+ lift $ vkGetImageSubresourceLayout' (deviceHandle (device)) (image) pSubresource (pPLayout)+ pLayout <- lift $ peekCStruct @SubresourceLayout pPLayout+ pure $ (pLayout)+++-- | VkImageSubresource - Structure specifying an image subresource+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind',+-- 'getImageSubresourceLayout'+data ImageSubresource = ImageSubresource+ { -- | @aspectMask@ /must/ not be @0@+ aspectMask :: ImageAspectFlags+ , -- | @mipLevel@ selects the mipmap level.+ mipLevel :: Word32+ , -- | @arrayLayer@ selects the array layer.+ arrayLayer :: Word32+ }+ deriving (Typeable)+deriving instance Show ImageSubresource++instance ToCStruct ImageSubresource where+ withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageSubresource{..} f = do+ poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (aspectMask)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (mipLevel)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (arrayLayer)+ f+ cStructSize = 12+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+ f++instance FromCStruct ImageSubresource where+ peekCStruct p = do+ aspectMask <- peek @ImageAspectFlags ((p `plusPtr` 0 :: Ptr ImageAspectFlags))+ mipLevel <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ arrayLayer <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ pure $ ImageSubresource+ aspectMask mipLevel arrayLayer++instance Storable ImageSubresource where+ sizeOf ~_ = 12+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImageSubresource where+ zero = ImageSubresource+ zero+ zero+ zero+++-- | VkImageCreateInfo - Structure specifying the parameters of a newly+-- created image object+--+-- = Description+--+-- Images created with @tiling@ equal to+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' have+-- further restrictions on their limits and capabilities compared to images+-- created with @tiling@ equal to+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'.+-- Creation of images with tiling+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' /may/ not+-- be supported unless other parameters meet all of the constraints:+--+-- - 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' is+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'+--+-- - 'Graphics.Vulkan.Core10.Enums.Format.Format' is not a depth\/stencil+-- format+--+-- - @mipLevels@ is 1+--+-- - @arrayLayers@ is 1+--+-- - @samples@ is+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- - @usage@ only includes+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'+-- and\/or+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+--+-- Images created with a 'Graphics.Vulkan.Core10.Enums.Format.Format' from+-- one of those listed in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion>+-- have further restrictions on their limits and capabilities compared to+-- images created with other formats. Creation of images with a format+-- requiring+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion Y′CBCR conversion>+-- /may/ not be supported unless other parameters meet all of the+-- constraints:+--+-- - 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' is+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'+--+-- - @mipLevels@ is 1+--+-- - @arrayLayers@ is 1+--+-- - @samples@ is+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- Implementations /may/ support additional limits and capabilities beyond+-- those listed above.+--+-- To determine the set of valid @usage@ bits for a given format, call+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties'.+--+-- If the size of the resultant image would exceed @maxResourceSize@, then+-- 'createImage' /must/ fail and return+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'. This+-- failure /may/ occur even when all image creation parameters satisfy+-- their valid usage requirements.+--+-- Note+--+-- For images created without+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_EXTENDED_USAGE_BIT'+-- a @usage@ bit is valid if it is supported for the format the image is+-- created with.+--+-- For images created with+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_EXTENDED_USAGE_BIT'+-- a @usage@ bit is valid if it is supported for at least one of the+-- formats a 'Graphics.Vulkan.Core10.Handles.ImageView' created from the+-- image /can/ have (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views Image Views>+-- for more detail).+--+-- Valid values for some image creation parameters are limited by a+-- numerical upper bound or by inclusion in a bitset. For example,+-- 'ImageCreateInfo'::@arrayLayers@ is limited by+-- @imageCreateMaxArrayLayers@, defined below; and+-- 'ImageCreateInfo'::@samples@ is limited by @imageCreateSampleCounts@,+-- also defined below.+--+-- Several limiting values are defined below, as well as assisting values+-- from which the limiting values are derived. The limiting values are+-- referenced by the relevant valid usage statements of 'ImageCreateInfo'.+--+-- - Let @uint64_t imageCreateDrmFormatModifiers[]@ be the set of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifier Linux DRM format modifiers>+-- that the resultant image /may/ have.+--+-- - If @tiling@ is not+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',+-- then @imageCreateDrmFormatModifiers@ is empty.+--+-- - If 'ImageCreateInfo'::@pNext@ contains+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierExplicitCreateInfoEXT',+-- then @imageCreateDrmFormatModifiers@ contains exactly one+-- modifier,+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierExplicitCreateInfoEXT'::@drmFormatModifier@.+--+-- - If 'ImageCreateInfo'::@pNext@ contains+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierListCreateInfoEXT',+-- then @imageCreateDrmFormatModifiers@ contains the exactly the+-- modifiers in+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierListCreateInfoEXT'::@pDrmFormatModifiers@.+--+-- - Let @VkBool32 imageCreateMaybeLinear@ indicate if the resultant+-- image may be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource linear>.+--+-- - If @tiling@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR',+-- then @imageCreateMaybeLinear@ is @true@.+--+-- - If @tiling@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL',+-- then @imageCreateMaybeLinear@ is @false@.+--+-- - If @tiling@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',+-- then @imageCreateMaybeLinear_@ is @true@ if and only if+-- @imageCreateDrmFormatModifiers@ contains+-- @DRM_FORMAT_MOD_LINEAR@.+--+-- - Let @VkFormatFeatureFlags imageCreateFormatFeatures@ be the set of+-- format features available during image creation.+--+-- - If @tiling@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR',+-- then @imageCreateFormatFeatures@ is the value of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties'::@linearTilingFeatures@+-- found by calling+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties'+-- with parameter 'Graphics.Vulkan.Core10.Enums.Format.Format'+-- equal to+-- 'ImageCreateInfo'::'Graphics.Vulkan.Core10.Enums.Format.Format'.+--+-- - If @tiling@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL',+-- and if the @pNext@ chain includes no+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'+-- structure with non-zero @externalFormat@, then+-- @imageCreateFormatFeatures@ is value of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties'::@optimalTilingFeatures@+-- found by calling+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties'+-- with parameter 'Graphics.Vulkan.Core10.Enums.Format.Format'+-- equal to+-- 'ImageCreateInfo'::'Graphics.Vulkan.Core10.Enums.Format.Format'.+--+-- - If @tiling@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL',+-- and if the @pNext@ chain includes a+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'+-- structure with non-zero @externalFormat@, then+-- @imageCreateFormatFeatures@ is the value of+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID'::@formatFeatures@+-- obtained by+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.getAndroidHardwareBufferPropertiesANDROID'+-- with a matching @externalFormat@ value.+--+-- - If @tiling@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',+-- then the value of @imageCreateFormatFeatures@ is found by+-- calling+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2'+-- with+-- 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties'::'Graphics.Vulkan.Core10.Enums.Format.Format'+-- equal to+-- 'ImageCreateInfo'::'Graphics.Vulkan.Core10.Enums.Format.Format'+-- and with+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesListEXT'+-- chained into+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2';+-- by collecting all members of the returned array+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesListEXT'::@pDrmFormatModifierProperties@+-- whose @drmFormatModifier@ belongs to+-- @imageCreateDrmFormatModifiers@; and by taking the bitwise+-- intersection, over the collected array members, of+-- @drmFormatModifierTilingFeatures@. (The resultant+-- @imageCreateFormatFeatures@ /may/ be empty).+--+-- - Let+-- @VkImageFormatProperties2 imageCreateImageFormatPropertiesList[]@ be+-- defined as follows.+--+-- - If 'ImageCreateInfo'::@pNext@ contains no+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'+-- structure with non-zero @externalFormat@, then+-- @imageCreateImageFormatPropertiesList@ is the list of structures+-- obtained by calling+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2',+-- possibly multiple times, as follows:+--+-- - The parameters+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'::'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType',+-- @tiling@, @usage@, and+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be equal to+-- those in 'ImageCreateInfo'.+--+-- - If 'ImageCreateInfo'::@pNext@ contains a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'+-- structure whose @handleTypes@ is not @0@, then+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'::@pNext@+-- /must/ contain a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo'+-- structure whose @handleType@ is not @0@; and+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+-- /must/ be called for each handle type in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@,+-- successively setting+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo'::@handleType@+-- on each call.+--+-- - If 'ImageCreateInfo'::@pNext@ contains no+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'+-- structure, or contains a structure whose @handleTypes@ is+-- @0@, then+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'::@pNext@+-- /must/ either contain no+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo'+-- structure, or contain a structure whose @handleType@ is @0@.+--+-- - If @tiling@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',+-- then+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'::@pNext@+-- /must/ contain a+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.PhysicalDeviceImageDrmFormatModifierInfoEXT'+-- structure where+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' is+-- equal to+-- 'ImageCreateInfo'::'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode';+-- and, if+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' is+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',+-- then @queueFamilyIndexCount@ and @pQueueFamilyIndices@+-- /must/ be equal to those in 'ImageCreateInfo'; and, if+-- 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT',+-- then the+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'+-- structure included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'+-- /must/ be equivalent to the one included in the @pNext@+-- chain of 'ImageCreateInfo'; and+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+-- /must/ be called for each modifier in+-- @imageCreateDrmFormatModifiers@, successively setting+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.PhysicalDeviceImageDrmFormatModifierInfoEXT'::@drmFormatModifier@+-- on each call.+--+-- - If @tiling@ is not+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',+-- then+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'::@pNext@+-- /must/ contain no+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.PhysicalDeviceImageDrmFormatModifierInfoEXT'+-- structure.+--+-- - If any call to+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+-- returns an error, then+-- @imageCreateImageFormatPropertiesList@ is defined to be the+-- empty list.+--+-- - If 'ImageCreateInfo'::@pNext@ contains a+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'+-- structure with non-zero @externalFormat@, then+-- @imageCreateImageFormatPropertiesList@ contains a single element+-- where:+--+-- - 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties'::@maxMipLevels@+-- is ⌊log2(max(@extent.width@, @extent.height@,+-- @extent.depth@))⌋ + 1.+--+-- - 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties'::@maxArrayLayers@+-- is+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::maxImageArrayLayers.+--+-- - Each component of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties'::@maxExtent@+-- is+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::maxImageDimension2D.+--+-- - 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties'::@sampleCounts@+-- contains exactly+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'.+--+-- - Let @uint32_t imageCreateMaxMipLevels@ be the minimum value of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties'::@maxMipLevels@+-- in @imageCreateImageFormatPropertiesList@. The value is undefined if+-- @imageCreateImageFormatPropertiesList@ is empty.+--+-- - Let @uint32_t imageCreateMaxArrayLayers@ be the minimum value of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties'::@maxArrayLayers@+-- in @imageCreateImageFormatPropertiesList@. The value is undefined if+-- @imageCreateImageFormatPropertiesList@ is empty.+--+-- - Let @VkExtent3D imageCreateMaxExtent@ be the component-wise minimum+-- over all+-- 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties'::@maxExtent@+-- values in @imageCreateImageFormatPropertiesList@. The value is+-- undefined if @imageCreateImageFormatPropertiesList@ is empty.+--+-- - Let @VkSampleCountFlags imageCreateSampleCounts@ be the intersection+-- of each+-- 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties'::@sampleCounts@+-- in @imageCreateImageFormatPropertiesList@. The value is undefined if+-- @imageCreateImageFormatPropertiesList@ is empty.+--+-- = Valid Usage+--+-- - Each of the following values (as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)+-- /must/ not be undefined @imageCreateMaxMipLevels@,+-- @imageCreateMaxArrayLayers@, @imageCreateMaxExtent@, and+-- @imageCreateSampleCounts@.+--+-- - If 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' is+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',+-- @pQueueFamilyIndices@ /must/ be a valid pointer to an array of+-- @queueFamilyIndexCount@ @uint32_t@ values+--+-- - If 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' is+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',+-- @queueFamilyIndexCount@ /must/ be greater than @1@+--+-- - If 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' is+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',+-- each element of @pQueueFamilyIndices@ /must/ be unique and /must/ be+-- less than @pQueueFamilyPropertyCount@ returned by either+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceQueueFamilyProperties'+-- or+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2'+-- for the 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' that was+-- used to create 'Graphics.Vulkan.Core10.Handles.Device'+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'+-- structure, and its @externalFormat@ member is non-zero the+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'.+--+-- - If the @pNext@ chain does not include a+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'+-- structure, or does and its @externalFormat@ member is @0@, the+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'.+--+-- - @extent.width@ /must/ be greater than @0@.+--+-- - @extent.height@ /must/ be greater than @0@.+--+-- - @extent.depth@ /must/ be greater than @0@.+--+-- - @mipLevels@ /must/ be greater than @0@+--+-- - @arrayLayers@ /must/ be greater than @0@+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CUBE_COMPATIBLE_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT',+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D'+--+-- - @extent.width@ /must/ be less than or equal to+-- @imageCreateMaxExtent.width@ (as defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>).+--+-- - @extent.height@ /must/ be less than or equal to+-- @imageCreateMaxExtent.height@ (as defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>).+--+-- - @extent.depth@ /must/ be less than or equal to+-- @imageCreateMaxExtent.depth@ (as defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>).+--+-- - If 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' is+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and+-- 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CUBE_COMPATIBLE_BIT',+-- @extent.width@ and @extent.height@ /must/ be equal and @arrayLayers@+-- /must/ be greater than or equal to 6+--+-- - If 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' is+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', both+-- @extent.height@ and @extent.depth@ /must/ be @1@+--+-- - If 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' is+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D',+-- @extent.depth@ /must/ be @1@+--+-- - @mipLevels@ /must/ be less than or equal to the number of levels in+-- the complete mipmap chain based on @extent.width@, @extent.height@,+-- and @extent.depth@.+--+-- - @mipLevels@ /must/ be less than or equal to+-- @imageCreateMaxMipLevels@ (as defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>).+--+-- - @arrayLayers@ /must/ be less than or equal to+-- @imageCreateMaxArrayLayers@ (as defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>).+--+-- - If 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' is+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D',+-- @arrayLayers@ /must/ be @1@.+--+-- - If @samples@ is not+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT',+-- then 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D',+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CUBE_COMPATIBLE_BIT',+-- @mipLevels@ /must/ be equal to @1@, and @imageCreateMaybeLinear@ (as+-- defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)+-- /must/ be @false@,+--+-- - If @samples@ is not+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT',+-- @usage@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT'+--+-- - If @usage@ includes+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT',+-- then bits other than+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',+-- and+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'+-- /must/ not be set+--+-- - If @usage@ includes+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT',+-- @extent.width@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxFramebufferWidth@+--+-- - If @usage@ includes+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT',+-- @extent.height@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxFramebufferHeight@+--+-- - If @usage@ includes+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT',+-- @extent.width@ /must/ be less than or equal to+-- \(\lceil{\frac{maxFramebufferWidth}{minFragmentDensityTexelSize_{width}}}\rceil\)+--+-- - If @usage@ includes+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT',+-- @extent.height@ /must/ be less than or equal to+-- \(\lceil{\frac{maxFramebufferHeight}{minFragmentDensityTexelSize_{height}}}\rceil\)+--+-- - If @usage@ includes+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT',+-- @usage@ /must/ also contain at least one of+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'.+--+-- - @samples@ /must/ be a bit value that is set in+-- @imageCreateSampleCounts@ (as defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>).+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderStorageImageMultisample multisampled storage images>+-- feature is not enabled, and @usage@ contains+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT',+-- @samples@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseBinding sparse bindings>+-- feature is not enabled, 'Graphics.Vulkan.Core10.BaseType.Flags'+-- /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyAliased sparse aliased residency>+-- feature is not enabled, 'Graphics.Vulkan.Core10.BaseType.Flags'+-- /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_ALIASED_BIT'+--+-- - If 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' is+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D',+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyImage2D sparse residency for 2D images>+-- feature is not enabled, and+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' is+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D',+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyImage3D sparse residency for 3D images>+-- feature is not enabled, and+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' is+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D',+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidency2Samples sparse residency for images with 2 samples>+-- feature is not enabled,+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' is+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and+-- @samples@ is+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_2_BIT',+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidency4Samples sparse residency for images with 4 samples>+-- feature is not enabled,+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' is+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and+-- @samples@ is+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_4_BIT',+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidency8Samples sparse residency for images with 8 samples>+-- feature is not enabled,+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' is+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and+-- @samples@ is+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_8_BIT',+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidency16Samples sparse residency for images with 16 samples>+-- feature is not enabled,+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' is+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and+-- @samples@ is+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_16_BIT',+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_ALIASED_BIT',+-- it /must/ also contain+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT'+--+-- - If any of the bits+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_ALIASED_BIT'+-- are set,+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT'+-- /must/ not also be set+--+-- - If the protected memory feature is not enabled,+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_PROTECTED_BIT'.+--+-- - If any of the bits+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_ALIASED_BIT'+-- are set,+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_PROTECTED_BIT'+-- /must/ not also be set.+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.ExternalMemoryImageCreateInfoNV'+-- structure, it /must/ not contain a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'+-- structure.+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'+-- structure, its @handleTypes@ member /must/ only contain bits that+-- are also in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties'::@externalMemoryProperties.compatibleHandleTypes@,+-- as returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+-- with 'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType', @tiling@,+-- @usage@, and 'Graphics.Vulkan.Core10.BaseType.Flags' equal to those+-- in this structure, and with a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo'+-- structure included in the @pNext@ chain, with a @handleType@ equal+-- to any one of the handle types specified in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.ExternalMemoryImageCreateInfoNV'+-- structure, its @handleTypes@ member /must/ only contain bits that+-- are also in+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.ExternalImageFormatPropertiesNV'::@externalMemoryProperties.compatibleHandleTypes@,+-- as returned by+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.getPhysicalDeviceExternalImageFormatPropertiesNV'+-- with 'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType', @tiling@,+-- @usage@, and 'Graphics.Vulkan.Core10.BaseType.Flags' equal to those+-- in this structure, and with @externalHandleType@ equal to any one of+-- the handle types specified in+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.ExternalMemoryImageCreateInfoNV'::@handleTypes@+--+-- - If the logical device was created with+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.DeviceGroupDeviceCreateInfo'::@physicalDeviceCount@+-- equal to 1, 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not+-- contain+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT',+-- then @mipLevels@ /must/ be one, @arrayLayers@ /must/ be one,+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'. and+-- @imageCreateMaybeLinear@ (as defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)+-- /must/ be @false@.+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT',+-- then 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-bc block-compressed image format>,+-- an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-etc2 ETC compressed image format>,+-- or an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-astc ASTC compressed image format>.+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT',+-- then 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ also contain+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'.+--+-- - @initialLayout@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'.+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'+-- or+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.ExternalMemoryImageCreateInfoNV'+-- structure whose @handleTypes@ member is not @0@, @initialLayout@+-- /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED'+--+-- - If the image 'Graphics.Vulkan.Core10.Enums.Format.Format' is one of+-- those listed in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion>,+-- then @mipLevels@ /must/ be 1+--+-- - If the image 'Graphics.Vulkan.Core10.Enums.Format.Format' is one of+-- those listed in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion>,+-- @samples@ must be+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- - If the image 'Graphics.Vulkan.Core10.Enums.Format.Format' is one of+-- those listed in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion>,+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'+--+-- - If the image 'Graphics.Vulkan.Core10.Enums.Format.Format' is one of+-- those listed in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion>,+-- and the @ycbcrImageArrays@ feature is not enabled, @arrayLayers@+-- /must/ be 1+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a /multi-planar/+-- format, and if @imageCreateFormatFeatures@ (as defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)+-- does not contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DISJOINT_BIT',+-- then 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is not a+-- /multi-planar/ format, and 'Graphics.Vulkan.Core10.BaseType.Flags'+-- does not include+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_ALIAS_BIT',+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'+--+-- - If @tiling@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',+-- then the @pNext@ chain /must/ include exactly one of+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierListCreateInfoEXT'+-- or+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierExplicitCreateInfoEXT'+-- structures+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierListCreateInfoEXT'+-- or+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierExplicitCreateInfoEXT'+-- structure, then @tiling@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'+--+-- - If @tiling@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'+-- and 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT',+-- then the @pNext@ chain /must/ include a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'+-- structure with non-zero @viewFormatCount@.+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be a depth or+-- depth\/stencil format+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'+-- structure whose @handleTypes@ member includes+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID',+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'.+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'+-- structure whose @handleTypes@ member includes+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID',+-- @mipLevels@ /must/ either be @1@ or equal to the number of levels in+-- the complete mipmap chain based on @extent.width@, @extent.height@,+-- and @extent.depth@.+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'+-- structure whose @externalFormat@ member is not @0@,+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not include+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'.+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'+-- structure whose @externalFormat@ member is not @0@, @usage@ /must/+-- not include any usages except+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'.+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'+-- structure whose @externalFormat@ member is not @0@, @tiling@ /must/+-- be 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'.+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth-stencil+-- format, @usage@ includes+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',+-- and the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'+-- structure, then its+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'::@stencilUsage@+-- member /must/ also include+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth-stencil+-- format, @usage@ does not include+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',+-- and the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'+-- structure, then its+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'::@stencilUsage@+-- member /must/ also not include+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth-stencil+-- format, @usage@ includes+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT',+-- and the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'+-- structure, then its+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'::@stencilUsage@+-- member /must/ also include+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth-stencil+-- format, @usage@ does not include+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT',+-- and the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'+-- structure, then its+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'::@stencilUsage@+-- member /must/ also not include+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth-stencil+-- format and the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'+-- structure with its @stencilUsage@ member including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT',+-- @extent.width@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxFramebufferWidth@+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth-stencil+-- format and the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'+-- structure with its @stencilUsage@ member including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT',+-- @extent.height@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxFramebufferHeight@+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderStorageImageMultisample multisampled storage images>+-- feature is not enabled, 'Graphics.Vulkan.Core10.Enums.Format.Format'+-- is a depth-stencil format and the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'+-- structure with its @stencilUsage@ including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT',+-- @samples@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV',+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' or+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV',+-- it /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CUBE_COMPATIBLE_BIT'+-- and the 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ not be a+-- depth\/stencil format+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+-- and 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' is+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D',+-- @extent.width@ and @extent.height@ /must/ be greater than @1@+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+-- and 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' is+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D',+-- @extent.width@, @extent.height@, and @extent.depth@ /must/ be+-- greater than @1@+--+-- - If @usage@ includes+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV',+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'.+--+-- - If @usage@ includes+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV',+-- @samples@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'.+--+-- - If @usage@ includes+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV',+-- @tiling@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'.+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT',+-- @tiling@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT',+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT',+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CUBE_COMPATIBLE_BIT'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT',+-- @mipLevels@ /must/ be @1@+--+-- = Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_CREATE_INFO'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationImageCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.ExternalMemoryImageCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierExplicitCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierListCreateInfoEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo',+-- or+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits'+-- values+--+-- - 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' value+--+-- - 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' value+--+-- - @samples@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+-- value+--+-- - @tiling@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.ImageTiling' value+--+-- - @usage@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits'+-- values+--+-- - @usage@ /must/ not be @0@+--+-- - 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' /must/ be a+-- valid 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' value+--+-- - @initialLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- \<\/section>+-- = See Also+--+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent3D',+-- 'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout',+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.ImageTiling',+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createImage'+data ImageCreateInfo (es :: [Type]) = ImageCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits'+ -- describing additional parameters of the image.+ flags :: ImageCreateFlags+ , -- | 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' is a+ -- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' value specifying the+ -- basic dimensionality of the image. Layers in array textures do not count+ -- as a dimension for the purposes of the image type.+ imageType :: ImageType+ , -- | 'Graphics.Vulkan.Core10.Enums.Format.Format' is a+ -- 'Graphics.Vulkan.Core10.Enums.Format.Format' describing the format and+ -- type of the texel blocks that will be contained in the image.+ format :: Format+ , -- | @extent@ is a 'Graphics.Vulkan.Core10.SharedTypes.Extent3D' describing+ -- the number of data elements in each dimension of the base level.+ extent :: Extent3D+ , -- | @mipLevels@ describes the number of levels of detail available for+ -- minified sampling of the image.+ mipLevels :: Word32+ , -- | @arrayLayers@ is the number of layers in the image.+ arrayLayers :: Word32+ , -- | @samples@ is a+ -- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+ -- specifying the number of+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling samples per texel>.+ samples :: SampleCountFlagBits+ , -- | @tiling@ is a 'Graphics.Vulkan.Core10.Enums.ImageTiling.ImageTiling'+ -- value specifying the tiling arrangement of the texel blocks in memory.+ tiling :: ImageTiling+ , -- | @usage@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits'+ -- describing the intended usage of the image.+ usage :: ImageUsageFlags+ , -- | 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' is a+ -- 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' value specifying+ -- the sharing mode of the image when it will be accessed by multiple queue+ -- families.+ sharingMode :: SharingMode+ , -- | @pQueueFamilyIndices@ is a list of queue families that will access this+ -- image (ignored if 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode'+ -- is not+ -- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT').+ queueFamilyIndices :: Vector Word32+ , -- | @initialLayout@ is a+ -- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value specifying+ -- the initial 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' of+ -- all image subresources of the image. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-layouts Image Layouts>.+ initialLayout :: ImageLayout+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (ImageCreateInfo es)++instance Extensible ImageCreateInfo where+ extensibleType = STRUCTURE_TYPE_IMAGE_CREATE_INFO+ setNext x next = x{next = next}+ getNext ImageCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends ImageCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @ImageStencilUsageCreateInfo = Just f+ | Just Refl <- eqT @e @ImageDrmFormatModifierExplicitCreateInfoEXT = Just f+ | Just Refl <- eqT @e @ImageDrmFormatModifierListCreateInfoEXT = Just f+ | Just Refl <- eqT @e @ExternalFormatANDROID = Just f+ | Just Refl <- eqT @e @ImageFormatListCreateInfo = Just f+ | Just Refl <- eqT @e @ImageSwapchainCreateInfoKHR = Just f+ | Just Refl <- eqT @e @ExternalMemoryImageCreateInfo = Just f+ | Just Refl <- eqT @e @ExternalMemoryImageCreateInfoNV = Just f+ | Just Refl <- eqT @e @DedicatedAllocationImageCreateInfoNV = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (ImageCreateInfo es) where+ withCStruct x f = allocaBytesAligned 88 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr ImageCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr ImageType)) (imageType)+ lift $ poke ((p `plusPtr` 24 :: Ptr Format)) (format)+ ContT $ pokeCStruct ((p `plusPtr` 28 :: Ptr Extent3D)) (extent) . ($ ())+ lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (mipLevels)+ lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) (arrayLayers)+ lift $ poke ((p `plusPtr` 48 :: Ptr SampleCountFlagBits)) (samples)+ lift $ poke ((p `plusPtr` 52 :: Ptr ImageTiling)) (tiling)+ lift $ poke ((p `plusPtr` 56 :: Ptr ImageUsageFlags)) (usage)+ lift $ poke ((p `plusPtr` 60 :: Ptr SharingMode)) (sharingMode)+ lift $ poke ((p `plusPtr` 64 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (queueFamilyIndices)) :: Word32))+ pPQueueFamilyIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (queueFamilyIndices)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPQueueFamilyIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (queueFamilyIndices)+ lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr Word32))) (pPQueueFamilyIndices')+ lift $ poke ((p `plusPtr` 80 :: Ptr ImageLayout)) (initialLayout)+ lift $ f+ cStructSize = 88+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 20 :: Ptr ImageType)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr Format)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 28 :: Ptr Extent3D)) (zero) . ($ ())+ lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 48 :: Ptr SampleCountFlagBits)) (zero)+ lift $ poke ((p `plusPtr` 52 :: Ptr ImageTiling)) (zero)+ lift $ poke ((p `plusPtr` 56 :: Ptr ImageUsageFlags)) (zero)+ lift $ poke ((p `plusPtr` 60 :: Ptr SharingMode)) (zero)+ pPQueueFamilyIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPQueueFamilyIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr Word32))) (pPQueueFamilyIndices')+ lift $ poke ((p `plusPtr` 80 :: Ptr ImageLayout)) (zero)+ lift $ f++instance PeekChain es => FromCStruct (ImageCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @ImageCreateFlags ((p `plusPtr` 16 :: Ptr ImageCreateFlags))+ imageType <- peek @ImageType ((p `plusPtr` 20 :: Ptr ImageType))+ format <- peek @Format ((p `plusPtr` 24 :: Ptr Format))+ extent <- peekCStruct @Extent3D ((p `plusPtr` 28 :: Ptr Extent3D))+ mipLevels <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))+ arrayLayers <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))+ samples <- peek @SampleCountFlagBits ((p `plusPtr` 48 :: Ptr SampleCountFlagBits))+ tiling <- peek @ImageTiling ((p `plusPtr` 52 :: Ptr ImageTiling))+ usage <- peek @ImageUsageFlags ((p `plusPtr` 56 :: Ptr ImageUsageFlags))+ sharingMode <- peek @SharingMode ((p `plusPtr` 60 :: Ptr SharingMode))+ queueFamilyIndexCount <- peek @Word32 ((p `plusPtr` 64 :: Ptr Word32))+ pQueueFamilyIndices <- peek @(Ptr Word32) ((p `plusPtr` 72 :: Ptr (Ptr Word32)))+ pQueueFamilyIndices' <- generateM (fromIntegral queueFamilyIndexCount) (\i -> peek @Word32 ((pQueueFamilyIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ initialLayout <- peek @ImageLayout ((p `plusPtr` 80 :: Ptr ImageLayout))+ pure $ ImageCreateInfo+ next flags imageType format extent mipLevels arrayLayers samples tiling usage sharingMode pQueueFamilyIndices' initialLayout++instance es ~ '[] => Zero (ImageCreateInfo es) where+ zero = ImageCreateInfo+ ()+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ mempty+ zero+++-- | VkSubresourceLayout - Structure specifying subresource layout+--+-- = Description+--+-- If the image is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource linear>,+-- then @rowPitch@, @arrayPitch@ and @depthPitch@ describe the layout of+-- the image subresource in linear memory. For uncompressed formats,+-- @rowPitch@ is the number of bytes between texels with the same x+-- coordinate in adjacent rows (y coordinates differ by one). @arrayPitch@+-- is the number of bytes between texels with the same x and y coordinate+-- in adjacent array layers of the image (array layer values differ by+-- one). @depthPitch@ is the number of bytes between texels with the same x+-- and y coordinate in adjacent slices of a 3D image (z coordinates differ+-- by one). Expressed as an addressing formula, the starting byte of a+-- texel in the image subresource has address:+--+-- > // (x,y,z,layer) are in texel coordinates+-- > address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*elementSize + offset+--+-- For compressed formats, the @rowPitch@ is the number of bytes between+-- compressed texel blocks in adjacent rows. @arrayPitch@ is the number of+-- bytes between compressed texel blocks in adjacent array layers.+-- @depthPitch@ is the number of bytes between compressed texel blocks in+-- adjacent slices of a 3D image.+--+-- > // (x,y,z,layer) are in compressed texel block coordinates+-- > address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*compressedTexelBlockByteSize + offset;+--+-- The value of @arrayPitch@ is undefined for images that were not created+-- as arrays. @depthPitch@ is defined only for 3D images.+--+-- If the image has a /single-plane/ color format and its tiling is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' , then+-- the @aspectMask@ member of 'ImageSubresource' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'.+--+-- If the image has a depth\/stencil format and its tiling is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' , then+-- @aspectMask@ /must/ be either+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'.+-- On implementations that store depth and stencil aspects separately,+-- querying each of these image subresource layouts will return a different+-- @offset@ and @size@ representing the region of memory used for that+-- aspect. On implementations that store depth and stencil aspects+-- interleaved, the same @offset@ and @size@ are returned and represent the+-- interleaved memory allocation.+--+-- If the image has a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>+-- and its tiling is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' , then+-- the @aspectMask@ member of 'ImageSubresource' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',+-- or (for 3-plane formats only)+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'.+-- Querying each of these image subresource layouts will return a different+-- @offset@ and @size@ representing the region of memory used for that+-- plane. If the image is /disjoint/, then the @offset@ is relative to the+-- base address of the plane. If the image is /non-disjoint/, then the+-- @offset@ is relative to the base address of the image.+--+-- If the image’s tiling is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',+-- then the @aspectMask@ member of 'ImageSubresource' /must/ be one of+-- @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@, where the maximum allowed+-- plane index @i@ is defined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkDrmFormatModifierPropertiesEXT drmFormatModifierPlaneCount>+-- associated with the image’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageCreateInfo >+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifier modifier>.+-- The memory range used by the subresource is described by @offset@ and+-- @size@. If the image is /disjoint/, then the @offset@ is relative to the+-- base address of the /memory plane/. If the image is /non-disjoint/, then+-- the @offset@ is relative to the base address of the image. If the image+-- is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource non-linear>,+-- then @rowPitch@, @arrayPitch@, and @depthPitch@ have an+-- implementation-dependent meaning.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierExplicitCreateInfoEXT',+-- 'getImageSubresourceLayout'+data SubresourceLayout = SubresourceLayout+ { -- | @offset@ is the byte offset from the start of the image or the plane+ -- where the image subresource begins.+ offset :: DeviceSize+ , -- | @size@ is the size in bytes of the image subresource. @size@ includes+ -- any extra memory that is required based on @rowPitch@.+ size :: DeviceSize+ , -- | @rowPitch@ describes the number of bytes between each row of texels in+ -- an image.+ rowPitch :: DeviceSize+ , -- | @arrayPitch@ describes the number of bytes between each array layer of+ -- an image.+ arrayPitch :: DeviceSize+ , -- | @depthPitch@ describes the number of bytes between each slice of 3D+ -- image.+ depthPitch :: DeviceSize+ }+ deriving (Typeable)+deriving instance Show SubresourceLayout++instance ToCStruct SubresourceLayout where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SubresourceLayout{..} f = do+ poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (offset)+ poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (size)+ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (rowPitch)+ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (arrayPitch)+ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (depthPitch)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)+ f++instance FromCStruct SubresourceLayout where+ peekCStruct p = do+ offset <- peek @DeviceSize ((p `plusPtr` 0 :: Ptr DeviceSize))+ size <- peek @DeviceSize ((p `plusPtr` 8 :: Ptr DeviceSize))+ rowPitch <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))+ arrayPitch <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))+ depthPitch <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))+ pure $ SubresourceLayout+ offset size rowPitch arrayPitch depthPitch++instance Storable SubresourceLayout where+ sizeOf ~_ = 40+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SubresourceLayout where+ zero = SubresourceLayout+ zero+ zero+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core10/Image.hs-boot view
@@ -0,0 +1,36 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Image ( ImageCreateInfo+ , ImageSubresource+ , SubresourceLayout+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+type role ImageCreateInfo nominal+data ImageCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (ImageCreateInfo es)+instance Show (Chain es) => Show (ImageCreateInfo es)++instance PeekChain es => FromCStruct (ImageCreateInfo es)+++data ImageSubresource++instance ToCStruct ImageSubresource+instance Show ImageSubresource++instance FromCStruct ImageSubresource+++data SubresourceLayout++instance ToCStruct SubresourceLayout+instance Show SubresourceLayout++instance FromCStruct SubresourceLayout+
src/Graphics/Vulkan/Core10/ImageView.hs view
@@ -1,1093 +1,993 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.ImageView- ( VkComponentSwizzle(..)- , pattern VK_COMPONENT_SWIZZLE_IDENTITY- , pattern VK_COMPONENT_SWIZZLE_ZERO- , pattern VK_COMPONENT_SWIZZLE_ONE- , pattern VK_COMPONENT_SWIZZLE_R- , pattern VK_COMPONENT_SWIZZLE_G- , pattern VK_COMPONENT_SWIZZLE_B- , pattern VK_COMPONENT_SWIZZLE_A- , VkImageViewType(..)- , pattern VK_IMAGE_VIEW_TYPE_1D- , pattern VK_IMAGE_VIEW_TYPE_2D- , pattern VK_IMAGE_VIEW_TYPE_3D- , pattern VK_IMAGE_VIEW_TYPE_CUBE- , pattern VK_IMAGE_VIEW_TYPE_1D_ARRAY- , pattern VK_IMAGE_VIEW_TYPE_2D_ARRAY- , pattern VK_IMAGE_VIEW_TYPE_CUBE_ARRAY- , VkImageViewCreateFlags(..)- , VkImageView- , vkCreateImageView- , vkDestroyImageView- , VkComponentMapping(..)- , VkImageSubresourceRange(..)- , VkImageViewCreateInfo(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Int- ( Int32- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkFormat(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- )-import Graphics.Vulkan.Core10.MemoryManagement- ( VkImage- )-import Graphics.Vulkan.Core10.SparseResourceMemoryManagement- ( VkImageAspectFlags- )----- ** VkComponentSwizzle---- | VkComponentSwizzle - Specify how a component is swizzled------ = Description------ - @VK_COMPONENT_SWIZZLE_IDENTITY@ specifies that the component is set--- to the identity swizzle.------ - @VK_COMPONENT_SWIZZLE_ZERO@ specifies that the component is set to--- zero.------ - @VK_COMPONENT_SWIZZLE_ONE@ specifies that the component is set to--- either 1 or 1.0, depending on whether the type of the image view--- format is integer or floating-point respectively, as determined by--- the [Format--- Definition](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-definition)--- section for each 'Graphics.Vulkan.Core10.Core.VkFormat'.------ - @VK_COMPONENT_SWIZZLE_R@ specifies that the component is set to the--- value of the R component of the image.------ - @VK_COMPONENT_SWIZZLE_G@ specifies that the component is set to the--- value of the G component of the image.------ - @VK_COMPONENT_SWIZZLE_B@ specifies that the component is set to the--- value of the B component of the image.------ - @VK_COMPONENT_SWIZZLE_A@ specifies that the component is set to the--- value of the A component of the image.------ Setting the identity swizzle on a component is equivalent to setting the--- identity mapping on that component. That is:------ +-----------------------------------+-----------------------------------+--- | Component | Identity Mapping |--- +===================================+===================================+--- | @components.r@ | @VK_COMPONENT_SWIZZLE_R@ |--- +-----------------------------------+-----------------------------------+--- | @components.g@ | @VK_COMPONENT_SWIZZLE_G@ |--- +-----------------------------------+-----------------------------------+--- | @components.b@ | @VK_COMPONENT_SWIZZLE_B@ |--- +-----------------------------------+-----------------------------------+--- | @components.a@ | @VK_COMPONENT_SWIZZLE_A@ |--- +-----------------------------------+-----------------------------------+------ Component Mappings Equivalent To @VK_COMPONENT_SWIZZLE_IDENTITY@------ = See Also------ 'VkComponentMapping'-newtype VkComponentSwizzle = VkComponentSwizzle Int32- deriving (Eq, Ord, Storable)--instance Show VkComponentSwizzle where- showsPrec _ VK_COMPONENT_SWIZZLE_IDENTITY = showString "VK_COMPONENT_SWIZZLE_IDENTITY"- showsPrec _ VK_COMPONENT_SWIZZLE_ZERO = showString "VK_COMPONENT_SWIZZLE_ZERO"- showsPrec _ VK_COMPONENT_SWIZZLE_ONE = showString "VK_COMPONENT_SWIZZLE_ONE"- showsPrec _ VK_COMPONENT_SWIZZLE_R = showString "VK_COMPONENT_SWIZZLE_R"- showsPrec _ VK_COMPONENT_SWIZZLE_G = showString "VK_COMPONENT_SWIZZLE_G"- showsPrec _ VK_COMPONENT_SWIZZLE_B = showString "VK_COMPONENT_SWIZZLE_B"- showsPrec _ VK_COMPONENT_SWIZZLE_A = showString "VK_COMPONENT_SWIZZLE_A"- showsPrec p (VkComponentSwizzle x) = showParen (p >= 11) (showString "VkComponentSwizzle " . showsPrec 11 x)--instance Read VkComponentSwizzle where- readPrec = parens ( choose [ ("VK_COMPONENT_SWIZZLE_IDENTITY", pure VK_COMPONENT_SWIZZLE_IDENTITY)- , ("VK_COMPONENT_SWIZZLE_ZERO", pure VK_COMPONENT_SWIZZLE_ZERO)- , ("VK_COMPONENT_SWIZZLE_ONE", pure VK_COMPONENT_SWIZZLE_ONE)- , ("VK_COMPONENT_SWIZZLE_R", pure VK_COMPONENT_SWIZZLE_R)- , ("VK_COMPONENT_SWIZZLE_G", pure VK_COMPONENT_SWIZZLE_G)- , ("VK_COMPONENT_SWIZZLE_B", pure VK_COMPONENT_SWIZZLE_B)- , ("VK_COMPONENT_SWIZZLE_A", pure VK_COMPONENT_SWIZZLE_A)- ] +++- prec 10 (do- expectP (Ident "VkComponentSwizzle")- v <- step readPrec- pure (VkComponentSwizzle v)- )- )---- No documentation found for Nested "VkComponentSwizzle" "VK_COMPONENT_SWIZZLE_IDENTITY"-pattern VK_COMPONENT_SWIZZLE_IDENTITY :: VkComponentSwizzle-pattern VK_COMPONENT_SWIZZLE_IDENTITY = VkComponentSwizzle 0---- No documentation found for Nested "VkComponentSwizzle" "VK_COMPONENT_SWIZZLE_ZERO"-pattern VK_COMPONENT_SWIZZLE_ZERO :: VkComponentSwizzle-pattern VK_COMPONENT_SWIZZLE_ZERO = VkComponentSwizzle 1---- No documentation found for Nested "VkComponentSwizzle" "VK_COMPONENT_SWIZZLE_ONE"-pattern VK_COMPONENT_SWIZZLE_ONE :: VkComponentSwizzle-pattern VK_COMPONENT_SWIZZLE_ONE = VkComponentSwizzle 2---- No documentation found for Nested "VkComponentSwizzle" "VK_COMPONENT_SWIZZLE_R"-pattern VK_COMPONENT_SWIZZLE_R :: VkComponentSwizzle-pattern VK_COMPONENT_SWIZZLE_R = VkComponentSwizzle 3---- No documentation found for Nested "VkComponentSwizzle" "VK_COMPONENT_SWIZZLE_G"-pattern VK_COMPONENT_SWIZZLE_G :: VkComponentSwizzle-pattern VK_COMPONENT_SWIZZLE_G = VkComponentSwizzle 4---- No documentation found for Nested "VkComponentSwizzle" "VK_COMPONENT_SWIZZLE_B"-pattern VK_COMPONENT_SWIZZLE_B :: VkComponentSwizzle-pattern VK_COMPONENT_SWIZZLE_B = VkComponentSwizzle 5---- No documentation found for Nested "VkComponentSwizzle" "VK_COMPONENT_SWIZZLE_A"-pattern VK_COMPONENT_SWIZZLE_A :: VkComponentSwizzle-pattern VK_COMPONENT_SWIZZLE_A = VkComponentSwizzle 6--- ** VkImageViewType---- | 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 [image view compatibility--- table](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-image-views-compatibility)--- for 'vkCreateImageView'. This table also shows which SPIR-V--- @OpTypeImage@ @Dim@ and @Arrayed@ parameters correspond to each image--- view type.------ = See Also------ 'VkImageViewCreateInfo'-newtype VkImageViewType = VkImageViewType Int32- deriving (Eq, Ord, Storable)--instance Show VkImageViewType where- showsPrec _ VK_IMAGE_VIEW_TYPE_1D = showString "VK_IMAGE_VIEW_TYPE_1D"- showsPrec _ VK_IMAGE_VIEW_TYPE_2D = showString "VK_IMAGE_VIEW_TYPE_2D"- showsPrec _ VK_IMAGE_VIEW_TYPE_3D = showString "VK_IMAGE_VIEW_TYPE_3D"- showsPrec _ VK_IMAGE_VIEW_TYPE_CUBE = showString "VK_IMAGE_VIEW_TYPE_CUBE"- showsPrec _ VK_IMAGE_VIEW_TYPE_1D_ARRAY = showString "VK_IMAGE_VIEW_TYPE_1D_ARRAY"- showsPrec _ VK_IMAGE_VIEW_TYPE_2D_ARRAY = showString "VK_IMAGE_VIEW_TYPE_2D_ARRAY"- showsPrec _ VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = showString "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY"- showsPrec p (VkImageViewType x) = showParen (p >= 11) (showString "VkImageViewType " . showsPrec 11 x)--instance Read VkImageViewType where- readPrec = parens ( choose [ ("VK_IMAGE_VIEW_TYPE_1D", pure VK_IMAGE_VIEW_TYPE_1D)- , ("VK_IMAGE_VIEW_TYPE_2D", pure VK_IMAGE_VIEW_TYPE_2D)- , ("VK_IMAGE_VIEW_TYPE_3D", pure VK_IMAGE_VIEW_TYPE_3D)- , ("VK_IMAGE_VIEW_TYPE_CUBE", pure VK_IMAGE_VIEW_TYPE_CUBE)- , ("VK_IMAGE_VIEW_TYPE_1D_ARRAY", pure VK_IMAGE_VIEW_TYPE_1D_ARRAY)- , ("VK_IMAGE_VIEW_TYPE_2D_ARRAY", pure VK_IMAGE_VIEW_TYPE_2D_ARRAY)- , ("VK_IMAGE_VIEW_TYPE_CUBE_ARRAY", pure VK_IMAGE_VIEW_TYPE_CUBE_ARRAY)- ] +++- prec 10 (do- expectP (Ident "VkImageViewType")- v <- step readPrec- pure (VkImageViewType v)- )- )---- No documentation found for Nested "VkImageViewType" "VK_IMAGE_VIEW_TYPE_1D"-pattern VK_IMAGE_VIEW_TYPE_1D :: VkImageViewType-pattern VK_IMAGE_VIEW_TYPE_1D = VkImageViewType 0---- No documentation found for Nested "VkImageViewType" "VK_IMAGE_VIEW_TYPE_2D"-pattern VK_IMAGE_VIEW_TYPE_2D :: VkImageViewType-pattern VK_IMAGE_VIEW_TYPE_2D = VkImageViewType 1---- No documentation found for Nested "VkImageViewType" "VK_IMAGE_VIEW_TYPE_3D"-pattern VK_IMAGE_VIEW_TYPE_3D :: VkImageViewType-pattern VK_IMAGE_VIEW_TYPE_3D = VkImageViewType 2---- No documentation found for Nested "VkImageViewType" "VK_IMAGE_VIEW_TYPE_CUBE"-pattern VK_IMAGE_VIEW_TYPE_CUBE :: VkImageViewType-pattern VK_IMAGE_VIEW_TYPE_CUBE = VkImageViewType 3---- No documentation found for Nested "VkImageViewType" "VK_IMAGE_VIEW_TYPE_1D_ARRAY"-pattern VK_IMAGE_VIEW_TYPE_1D_ARRAY :: VkImageViewType-pattern VK_IMAGE_VIEW_TYPE_1D_ARRAY = VkImageViewType 4---- No documentation found for Nested "VkImageViewType" "VK_IMAGE_VIEW_TYPE_2D_ARRAY"-pattern VK_IMAGE_VIEW_TYPE_2D_ARRAY :: VkImageViewType-pattern VK_IMAGE_VIEW_TYPE_2D_ARRAY = VkImageViewType 5---- No documentation found for Nested "VkImageViewType" "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY"-pattern VK_IMAGE_VIEW_TYPE_CUBE_ARRAY :: VkImageViewType-pattern VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = VkImageViewType 6--- ** VkImageViewCreateFlags---- | VkImageViewCreateFlags - Reserved for future use------ = Description------ @VkImageViewCreateFlags@ is a bitmask type for setting a mask, but is--- currently reserved for future use.------ = See Also------ 'VkImageViewCreateInfo'-newtype VkImageViewCreateFlags = VkImageViewCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkImageViewCreateFlags where- - showsPrec p (VkImageViewCreateFlags x) = showParen (p >= 11) (showString "VkImageViewCreateFlags " . showsPrec 11 x)--instance Read VkImageViewCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkImageViewCreateFlags")- v <- step readPrec- pure (VkImageViewCreateFlags v)- )- )----- | Dummy data to tag the 'Ptr' with-data VkImageView_T--- | VkImageView - Opaque handle to a image view object------ = See Also------ 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorImageInfo',--- 'Graphics.Vulkan.Core10.Pass.VkFramebufferCreateInfo',--- 'vkCreateImageView', 'vkDestroyImageView'-type VkImageView = Ptr VkImageView_T--- | vkCreateImageView - Create an image view from an existing image------ = Parameters------ - @device@ is the logical device that creates the image view.------ - @pCreateInfo@ is a pointer to an instance of the--- @VkImageViewCreateInfo@ structure containing parameters to be used--- to create the image view.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ - @pView@ points to a @VkImageView@ handle in which the resulting--- image view object is returned.------ = Description------ Some of the image creation parameters are inherited by the view. In--- particular, image view creation inherits the implicit parameter @usage@--- specifying the allowed usages of the image view that, by default, takes--- the value of the corresponding @usage@ parameter specified in--- @VkImageCreateInfo@ at image creation time. This implicit parameter--- /can/ be overriden by chaining a--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkImageViewUsageCreateInfo'--- structure through the @pNext@ member to @VkImageViewCreateInfo@ as--- described later in this section.------ The remaining parameters are contained in the @pCreateInfo@.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkImageViewCreateInfo@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pView@ /must/ be a valid pointer to a @VkImageView@ handle------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkImageView',--- 'VkImageViewCreateInfo'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateImageView" vkCreateImageView :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkImageView) -> IO VkResult--- | vkDestroyImageView - Destroy an image view object------ = Parameters------ - @device@ is the logical device that destroys the image view.------ - @imageView@ is the image view to destroy.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ == Valid Usage------ - All submitted commands that refer to @imageView@ /must/ have--- completed execution------ - If @VkAllocationCallbacks@ were provided when @imageView@ was--- created, a compatible set of callbacks /must/ be provided here------ - If no @VkAllocationCallbacks@ were provided when @imageView@ was--- created, @pAllocator@ /must/ be @NULL@------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - If @imageView@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @imageView@--- /must/ be a valid @VkImageView@ handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - If @imageView@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@------ == Host Synchronization------ - Host access to @imageView@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkImageView'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroyImageView" vkDestroyImageView :: ("device" ::: VkDevice) -> ("imageView" ::: VkImageView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | VkComponentMapping - Structure specifying a color component mapping------ == Valid Usage (Implicit)------ - @r@ /must/ be a valid 'VkComponentSwizzle' value------ - @g@ /must/ be a valid 'VkComponentSwizzle' value------ - @b@ /must/ be a valid 'VkComponentSwizzle' value------ - @a@ /must/ be a valid 'VkComponentSwizzle' value------ = See Also------ 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferFormatPropertiesANDROID',--- 'VkComponentSwizzle', 'VkImageViewCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionCreateInfo'-data VkComponentMapping = VkComponentMapping- { -- | @r@ is a 'VkComponentSwizzle' specifying the component value placed in- -- the R component of the output vector.- vkR :: VkComponentSwizzle- , -- | @g@ is a 'VkComponentSwizzle' specifying the component value placed in- -- the G component of the output vector.- vkG :: VkComponentSwizzle- , -- | @b@ is a 'VkComponentSwizzle' specifying the component value placed in- -- the B component of the output vector.- vkB :: VkComponentSwizzle- , -- | @a@ is a 'VkComponentSwizzle' specifying the component value placed in- -- the A component of the output vector.- vkA :: VkComponentSwizzle- }- deriving (Eq, Show)--instance Storable VkComponentMapping where- sizeOf ~_ = 16- alignment ~_ = 4- peek ptr = VkComponentMapping <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- poke ptr poked = poke (ptr `plusPtr` 0) (vkR (poked :: VkComponentMapping))- *> poke (ptr `plusPtr` 4) (vkG (poked :: VkComponentMapping))- *> poke (ptr `plusPtr` 8) (vkB (poked :: VkComponentMapping))- *> poke (ptr `plusPtr` 12) (vkA (poked :: VkComponentMapping))--- | VkImageSubresourceRange - Structure specifying a image subresource range------ = Description------ The number of mipmap levels and array layers /must/ be a subset of the--- image subresources in the image. If an application wants to use all mip--- levels or layers in an image after the @baseMipLevel@ or--- @baseArrayLayer@, it /can/ set @levelCount@ and @layerCount@ to the--- special values @VK_REMAINING_MIP_LEVELS@ and @VK_REMAINING_ARRAY_LAYERS@--- without knowing the exact number of mip levels or layers.------ For cube and cube array image views, the layers of the image view--- starting at @baseArrayLayer@ correspond to faces in the order +X, -X,--- +Y, -Y, +Z, -Z. For cube arrays, each set of six sequential layers is a--- single cube, so the number of cube maps in a cube map array view is--- /@layerCount@ \/ 6/, and image array layer (@baseArrayLayer@ + i) is--- face index (i mod 6) of cube /i \/ 6/. If the number of layers in the--- view, whether set explicitly in @layerCount@ or implied by--- @VK_REMAINING_ARRAY_LAYERS@, is not a multiple of 6, behavior when--- indexing the last cube is undefined.------ @aspectMask@ /must/ be only @VK_IMAGE_ASPECT_COLOR_BIT@,--- @VK_IMAGE_ASPECT_DEPTH_BIT@ or @VK_IMAGE_ASPECT_STENCIL_BIT@ if @format@--- is a color, depth-only or stencil-only format, respectively, except if--- @format@ is a [multi-planar--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion).--- If using a depth\/stencil format with both depth and stencil components,--- @aspectMask@ /must/ include at least one of @VK_IMAGE_ASPECT_DEPTH_BIT@--- and @VK_IMAGE_ASPECT_STENCIL_BIT@, and /can/ include both.------ When the @VkImageSubresourceRange@ structure is used to select a subset--- of the slices of a 3D image’s mip level in order to create a 2D or 2D--- array image view of a 3D image created with--- @VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT@, @baseArrayLayer@ and--- @layerCount@ specify the first slice index and the number of slices to--- include in the created image view. Such an image view /can/ be used as a--- framebuffer attachment that refers only to the specified range of slices--- of the selected mip level. However, any layout transitions performed on--- such an attachment view during a render pass instance still apply to the--- entire subresource referenced which includes all the slices of the--- selected mip level.------ When using an imageView of a depth\/stencil image to populate a--- descriptor set (e.g. for sampling in the shader, or for use as an input--- attachment), the @aspectMask@ /must/ only include one bit and selects--- whether the imageView is used for depth reads (i.e. using a--- floating-point sampler or input attachment in the shader) or stencil--- reads (i.e. using an unsigned integer sampler or input attachment in the--- shader). When an imageView of a depth\/stencil image is used as a--- depth\/stencil framebuffer attachment, the @aspectMask@ is ignored and--- both depth and stencil image subresources are used.------ The @components@ member is of type 'VkComponentMapping', and describes a--- remapping from components of the image to components of the vector--- returned by shader image instructions. This remapping /must/ be identity--- for storage image descriptors, input attachment descriptors, framebuffer--- attachments, and any @VkImageView@ used with a combined image sampler--- that enables [sampler Y’CBCR--- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion).------ When creating a @VkImageView@, if [sampler Y’CBCR--- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion)--- is enabled in the sampler, the @aspectMask@ of a @subresourceRange@ used--- by the @VkImageView@ /must/ be @VK_IMAGE_ASPECT_COLOR_BIT@.------ When creating a @VkImageView@, if sampler Y’CBCR conversion is not--- enabled in the sampler and the image @format@ is--- [multi-planar](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),--- the image /must/ have been created with--- @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@, and the @aspectMask@ of the--- @VkImageView@’s @subresourceRange@ /must/ be--- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@ or--- @VK_IMAGE_ASPECT_PLANE_2_BIT@.------ == Valid Usage------ - If @levelCount@ is not @VK_REMAINING_MIP_LEVELS@, it /must/ be--- greater than @0@------ - If @layerCount@ is not @VK_REMAINING_ARRAY_LAYERS@, it /must/ be--- greater than @0@------ - If @aspectMask@ includes @VK_IMAGE_ASPECT_COLOR_BIT@, then it /must/--- not include any of @VK_IMAGE_ASPECT_PLANE_0_BIT@,--- @VK_IMAGE_ASPECT_PLANE_1_BIT@, or @VK_IMAGE_ASPECT_PLANE_2_BIT@------ == Valid Usage (Implicit)------ - @aspectMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlagBits'--- values------ - @aspectMask@ /must/ not be @0@------ = See Also------ 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlags',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkImageMemoryBarrier',--- 'VkImageViewCreateInfo',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdClearColorImage',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdClearDepthStencilImage'-data VkImageSubresourceRange = VkImageSubresourceRange- { -- | @aspectMask@ is a bitmask of- -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlagBits'- -- specifying which aspect(s) of the image are included in the view.- vkAspectMask :: VkImageAspectFlags- , -- | @baseMipLevel@ is the first mipmap level accessible to the view.- vkBaseMipLevel :: Word32- , -- | @levelCount@ is the number of mipmap levels (starting from- -- @baseMipLevel@) accessible to the view.- vkLevelCount :: Word32- , -- | @baseArrayLayer@ is the first array layer accessible to the view.- vkBaseArrayLayer :: Word32- , -- | @layerCount@ is the number of array layers (starting from- -- @baseArrayLayer@) accessible to the view.- vkLayerCount :: Word32- }- deriving (Eq, Show)--instance Storable VkImageSubresourceRange where- sizeOf ~_ = 20- alignment ~_ = 4- peek ptr = VkImageSubresourceRange <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkAspectMask (poked :: VkImageSubresourceRange))- *> poke (ptr `plusPtr` 4) (vkBaseMipLevel (poked :: VkImageSubresourceRange))- *> poke (ptr `plusPtr` 8) (vkLevelCount (poked :: VkImageSubresourceRange))- *> poke (ptr `plusPtr` 12) (vkBaseArrayLayer (poked :: VkImageSubresourceRange))- *> poke (ptr `plusPtr` 16) (vkLayerCount (poked :: VkImageSubresourceRange))--- | VkImageViewCreateInfo - Structure specifying parameters of a newly--- created image view------ = Description------ If @image@ was created with the @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@--- flag, and if the @format@ of the image is not--- [multi-planar](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion),--- @format@ /can/ be different from the image’s format, but if @image@ was--- created without the @VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT@--- flag and they are not equal they /must/ be /compatible/. Image format--- compatibility is defined in the [Format Compatibility--- Classes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatibility-classes)--- section. Views of compatible formats will have the same mapping between--- texel coordinates and memory locations irrespective of the @format@,--- with only the interpretation of the bit pattern changing.------ __Note__------ Values intended to be used with one view format /may/ not be exactly--- preserved when written or read through a different format. For example,--- an integer value that happens to have the bit pattern of a floating--- point denorm or NaN /may/ be flushed or canonicalized when written or--- read through a view with a floating point format. Similarly, a value--- written through a signed normalized format that has a bit pattern--- exactly equal to -2b /may/ be changed to -2b + 1 as described in--- [Conversion from Normalized Fixed-Point to--- Floating-Point](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-fixedfpconv).------ If @image@ was created with the--- @VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT@ flag, @format@ /must/--- be /compatible/ with the image’s format as described above, or /must/ be--- an uncompressed format in which case it /must/ be /size-compatible/ with--- the image’s format, as defined for [copying data between--- images](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#copies-images-format-size-compatibility)--- In this case the resulting image view’s texel dimensions equal the--- dimensions of the selected mip level divided by the compressed texel--- block size and rounded up.------ If the image view is to be used with a sampler which supports [sampler--- Y’CBCR--- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion),--- an /identically defined object/ of type--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversion'--- to that used to create the sampler /must/ be passed to--- 'vkCreateImageView' in a--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionInfo'--- added to the @pNext@ chain of 'VkImageViewCreateInfo'.------ If the image has a--- [multi-planar](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)--- @format@ and @subresourceRange.aspectMask@ is--- @VK_IMAGE_ASPECT_COLOR_BIT@, @format@ /must/ be identical to the image--- @format@, and the sampler to be used with the image view /must/ enable--- [sampler Y’CBCR--- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion).------ If @image@ was created with the @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@ and--- the image has a--- [multi-planar](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)--- @format@, and if @subresourceRange.aspectMask@ is--- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or--- @VK_IMAGE_ASPECT_PLANE_2_BIT@, @format@ /must/ be--- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatible-planes)--- with the corresponding plane of the image, and the sampler to be used--- with the image view /must/ not enable [sampler Y’CBCR--- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion).--- The @width@ and @height@ of the single-plane image view /must/ be--- derived from the multi-planar image’s dimensions in the manner listed--- for [plane--- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatible-planes)--- for the plane.------ Any view of an image plane will have the same mapping between texel--- coordinates and memory locations as used by the channels of the color--- aspect, subject to the formulae relating texel coordinates to--- lower-resolution planes as described in [Chroma--- Reconstruction](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-chroma-reconstruction).--- That is, if an R or B plane has a reduced resolution relative to the G--- plane of the multi-planar image, the image view operates using the--- (/uplane/, /vplane/) unnormalized coordinates of the reduced-resolution--- plane, and these coordinates access the same memory locations as the--- (/ucolor/, /vcolor/) unnormalized coordinates of the color aspect for--- which chroma reconstruction operations operate on the same (/uplane/,--- /vplane/) or (/iplane/, /jplane/) coordinates.------ +----------+--------------------------------------------------+-----------------------------------+--- | Dim, | Image parameters | View parameters |--- | Arrayed, | | |--- | MS | | |--- +==========+==================================================+===================================+--- | | @imageType@ = ci.@imageType@ | @baseArrayLayer@, @layerCount@, |--- | | @width@ = ci.@extent.width@ | and @levelCount@ are members of |--- | | @height@ = ci.@extent.height@ | the @subresourceRange@ member. |--- | | @depth@ = ci.@extent.depth@ | |--- | | @arrayLayers@ = ci.@arrayLayers@ | |--- | | @samples@ = ci.@samples@ | |--- | | @flags@ = ci.@flags@ | |--- | | where ci is the | |--- | | 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' | |--- | | used to create @image@. | |--- +----------+--------------------------------------------------+-----------------------------------+--- | __1D, 0, | @imageType@ = @VK_IMAGE_TYPE_1D@ | @viewType@ = |--- | 0__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_1D@ |--- | | @height@ = 1 | @baseArrayLayer@ ≥ 0 |--- | | @depth@ = 1 | @layerCount@ = 1 |--- | | @arrayLayers@ ≥ 1 | |--- | | @samples@ = 1 | |--- +----------+--------------------------------------------------+-----------------------------------+--- | __1D, 1, | @imageType@ = @VK_IMAGE_TYPE_1D@ | @viewType@ = |--- | 0__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_1D_ARRAY@ |--- | | @height@ = 1 | @baseArrayLayer@ ≥ 0 |--- | | @depth@ = 1 | @layerCount@ ≥ 1 |--- | | @arrayLayers@ ≥ 1 | |--- | | @samples@ = 1 | |--- +----------+--------------------------------------------------+-----------------------------------+--- | __2D, 0, | @imageType@ = @VK_IMAGE_TYPE_2D@ | @viewType@ = |--- | 0__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_2D@ |--- | | @height@ ≥ 1 | @baseArrayLayer@ ≥ 0 |--- | | @depth@ = 1 | @layerCount@ = 1 |--- | | @arrayLayers@ ≥ 1 | |--- | | @samples@ = 1 | |--- +----------+--------------------------------------------------+-----------------------------------+--- | __2D, 1, | @imageType@ = @VK_IMAGE_TYPE_2D@ | @viewType@ = |--- | 0__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ |--- | | @height@ ≥ 1 | @baseArrayLayer@ ≥ 0 |--- | | @depth@ = 1 | @layerCount@ ≥ 1 |--- | | @arrayLayers@ ≥ 1 | |--- | | @samples@ = 1 | |--- +----------+--------------------------------------------------+-----------------------------------+--- | __2D, 0, | @imageType@ = @VK_IMAGE_TYPE_2D@ | @viewType@ = |--- | 1__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_2D@ |--- | | @height@ ≥ 1 | @baseArrayLayer@ ≥ 0 |--- | | @depth@ = 1 | @layerCount@ = 1 |--- | | @arrayLayers@ ≥ 1 | |--- | | @samples@ > 1 | |--- +----------+--------------------------------------------------+-----------------------------------+--- | __2D, 1, | @imageType@ = @VK_IMAGE_TYPE_2D@ | @viewType@ = |--- | 1__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ |--- | | @height@ ≥ 1 | @baseArrayLayer@ ≥ 0 |--- | | @depth@ = 1 | @layerCount@ ≥ 1 |--- | | @arrayLayers@ ≥ 1 | |--- | | @samples@ > 1 | |--- +----------+--------------------------------------------------+-----------------------------------+--- | __CUBE, | @imageType@ = @VK_IMAGE_TYPE_2D@ | @viewType@ = |--- | 0, 0__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_CUBE@ |--- | | @height@ = @width@ | @baseArrayLayer@ ≥ 0 |--- | | @depth@ = 1 | @layerCount@ = 6 |--- | | @arrayLayers@ ≥ 6 | |--- | | @samples@ = 1 | |--- | | @flags@ includes | |--- | | @VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT@ | |--- +----------+--------------------------------------------------+-----------------------------------+--- | __CUBE, | @imageType@ = @VK_IMAGE_TYPE_2D@ | @viewType@ = |--- | 1, 0__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@ |--- | | @height@ = width | @baseArrayLayer@ ≥ 0 |--- | | @depth@ = 1 | @layerCount@ = 6 × /N/, /N/ ≥ 1 |--- | | /N/ ≥ 1 | |--- | | @arrayLayers@ ≥ 6 × /N/ | |--- | | @samples@ = 1 | |--- | | @flags@ includes | |--- | | @VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT@ | |--- +----------+--------------------------------------------------+-----------------------------------+--- | __3D, 0, | @imageType@ = @VK_IMAGE_TYPE_3D@ | @viewType@ = |--- | 0__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_3D@ |--- | | @height@ ≥ 1 | @baseArrayLayer@ = 0 |--- | | @depth@ ≥ 1 | @layerCount@ = 1 |--- | | @arrayLayers@ = 1 | |--- | | @samples@ = 1 | |--- +----------+--------------------------------------------------+-----------------------------------+--- | __3D, 0, | @imageType@ = @VK_IMAGE_TYPE_3D@ | @viewType@ = |--- | 0__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_2D@ |--- | | @height@ ≥ 1 | @levelCount@ = 1 |--- | | @depth@ ≥ 1 | @baseArrayLayer@ ≥ 0 |--- | | @arrayLayers@ = 1 | @layerCount@ = 1 |--- | | @samples@ = 1 | |--- | | @flags@ includes | |--- | | @VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT@ | |--- | | @flags@ does not include | |--- | | @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@, | |--- | | @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@, and | |--- | | @VK_IMAGE_CREATE_SPARSE_ALIASED_BIT@ | |--- +----------+--------------------------------------------------+-----------------------------------+--- | __3D, 0, | @imageType@ = @VK_IMAGE_TYPE_3D@ | @viewType@ = |--- | 0__ | @width@ ≥ 1 | @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ |--- | | @height@ ≥ 1 | @levelCount@ = 1 |--- | | @depth@ ≥ 1 | @baseArrayLayer@ ≥ 0 |--- | | @arrayLayers@ = 1 | @layerCount@ ≥ 1 |--- | | @samples@ = 1 | |--- | | @flags@ includes | |--- | | @VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT@ | |--- | | @flags@ does not include | |--- | | @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@, | |--- | | @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@, and | |--- | | @VK_IMAGE_CREATE_SPARSE_ALIASED_BIT@ | |--- +----------+--------------------------------------------------+-----------------------------------+------ Image and image view parameter compatibility requirements------ == Valid Usage------ - If @image@ was not created with--- @VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT@ then @viewType@ /must/ not be--- @VK_IMAGE_VIEW_TYPE_CUBE@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@------ - If the [image cubemap--- arrays](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-imageCubeArray)--- feature is not enabled, @viewType@ /must/ not be--- @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@------ - If @image@ was created with @VK_IMAGE_TYPE_3D@ but without--- @VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT@ set then @viewType@ /must/--- not be @VK_IMAGE_VIEW_TYPE_2D@ or @VK_IMAGE_VIEW_TYPE_2D_ARRAY@------ - If @image@ was created with @VK_IMAGE_TILING_LINEAR@, @format@--- /must/ be format that has at least one supported feature bit present--- in the value of @VkFormatProperties@::@linearTilingFeatures@--- returned by @vkGetPhysicalDeviceFormatProperties@ with the same--- value of @format@------ - @image@ /must/ have been created with a @usage@ value containing at--- least one of @VK_IMAGE_USAGE_SAMPLED_BIT@,--- @VK_IMAGE_USAGE_STORAGE_BIT@, @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@,--- @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@, or--- @VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT@------ - If @image@ was created with @VK_IMAGE_TILING_LINEAR@ and @usage@--- contains @VK_IMAGE_USAGE_SAMPLED_BIT@, @format@ /must/ be supported--- for sampled images, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ returned by--- @vkGetPhysicalDeviceFormatProperties@ with the same value of--- @format@------ - If @image@ was created with @VK_IMAGE_TILING_LINEAR@ and @usage@--- contains @VK_IMAGE_USAGE_STORAGE_BIT@, @format@ /must/ be supported--- for storage images, as specified by the--- @VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ returned by--- @vkGetPhysicalDeviceFormatProperties@ with the same value of--- @format@------ - If @image@ was created with @VK_IMAGE_TILING_LINEAR@ and @usage@--- contains @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@, @format@ /must/ be--- supported for color attachments, as specified by the--- @VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ returned by--- @vkGetPhysicalDeviceFormatProperties@ with the same value of--- @format@------ - If @image@ was created with @VK_IMAGE_TILING_LINEAR@ and @usage@--- contains @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@, @format@--- /must/ be supported for depth\/stencil attachments, as specified by--- the @VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ returned by--- @vkGetPhysicalDeviceFormatProperties@ with the same value of--- @format@------ - If @image@ was created with @VK_IMAGE_TILING_OPTIMAL@, @format@--- /must/ be format that has at least one supported feature bit present--- in the value of @VkFormatProperties@::@optimalTilingFeatures@--- returned by @vkGetPhysicalDeviceFormatProperties@ with the same--- value of @format@------ - If @image@ was created with @VK_IMAGE_TILING_OPTIMAL@ and @usage@--- contains @VK_IMAGE_USAGE_SAMPLED_BIT@, @format@ /must/ be supported--- for sampled images, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@ flag in--- @VkFormatProperties@::@optimalTilingFeatures@ returned by--- @vkGetPhysicalDeviceFormatProperties@ with the same value of--- @format@------ - If @image@ was created with @VK_IMAGE_TILING_OPTIMAL@ and @usage@--- contains @VK_IMAGE_USAGE_STORAGE_BIT@, @format@ /must/ be supported--- for storage images, as specified by the--- @VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT@ flag in--- @VkFormatProperties@::@optimalTilingFeatures@ returned by--- @vkGetPhysicalDeviceFormatProperties@ with the same value of--- @format@------ - If @image@ was created with @VK_IMAGE_TILING_OPTIMAL@ and @usage@--- contains @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@, @format@ /must/ be--- supported for color attachments, as specified by the--- @VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT@ flag in--- @VkFormatProperties@::@optimalTilingFeatures@ returned by--- @vkGetPhysicalDeviceFormatProperties@ with the same value of--- @format@------ - If @image@ was created with @VK_IMAGE_TILING_OPTIMAL@ and @usage@--- contains @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@, @format@--- /must/ be supported for depth\/stencil attachments, as specified by--- the @VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT@ flag in--- @VkFormatProperties@::@optimalTilingFeatures@ returned by--- @vkGetPhysicalDeviceFormatProperties@ with the same value of--- @format@------ - @subresourceRange.baseMipLevel@ /must/ be less than the @mipLevels@--- specified in 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when--- @image@ was created------ - If @subresourceRange.levelCount@ is not @VK_REMAINING_MIP_LEVELS@,--- @subresourceRange.baseMipLevel@ + @subresourceRange.levelCount@--- /must/ be less than or equal to the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - If @image@ is not a 3D image created with--- @VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT@ set, or @viewType@ is not--- @VK_IMAGE_VIEW_TYPE_2D@ or @VK_IMAGE_VIEW_TYPE_2D_ARRAY@,--- @subresourceRange@::@baseArrayLayer@ /must/ be less than the--- @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - If @subresourceRange@::@layerCount@ is not--- @VK_REMAINING_ARRAY_LAYERS@, @image@ is not a 3D image created with--- @VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT@ set, or @viewType@ is not--- @VK_IMAGE_VIEW_TYPE_2D@ or @VK_IMAGE_VIEW_TYPE_2D_ARRAY@,--- @subresourceRange@::@layerCount@ /must/ be non-zero and--- @subresourceRange@::@baseArrayLayer@ +--- @subresourceRange@::@layerCount@ /must/ be less than or equal to the--- @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - If @image@ is a 3D image created with--- @VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT@ set, and @viewType@ is--- @VK_IMAGE_VIEW_TYPE_2D@ or @VK_IMAGE_VIEW_TYPE_2D_ARRAY@,--- @subresourceRange@::@baseArrayLayer@ /must/ be less than the--- @extent.depth@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - If @subresourceRange@::@layerCount@ is not--- @VK_REMAINING_ARRAY_LAYERS@, @image@ is a 3D image created with--- @VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT@ set, and @viewType@ is--- @VK_IMAGE_VIEW_TYPE_2D@ or @VK_IMAGE_VIEW_TYPE_2D_ARRAY@,--- @subresourceRange@::@layerCount@ /must/ be non-zero and--- @subresourceRange@::@baseArrayLayer@ +--- @subresourceRange@::@layerCount@ /must/ be less than or equal to the--- @extent.depth@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - If @image@ was created with the @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@--- flag, @format@ /must/ be compatible with the @format@ used to create--- @image@, as defined in [Format Compatibility--- Classes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatibility-classes)------ - If @image@ was created with the @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@--- flag, but without the--- @VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT@ flag, and if the--- @format@ of the @image@ is not a--- [multi-planar](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)--- format, @format@ /must/ be compatible with the @format@ used to--- create @image@, as defined in [Format Compatibility--- Classes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatibility-classes)------ - If @image@ was created with the--- @VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT@ flag, @format@--- /must/ be compatible with, or /must/ be an uncompressed format that--- is size-compatible with, the @format@ used to create @image@.------ - If @image@ was created with the--- @VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT@ flag, the--- @levelCount@ and @layerCount@ members of @subresourceRange@ /must/--- both be @1@.------ - If a @VkImageFormatListCreateInfoKHR@ structure was included in the--- @pNext@ chain of the @VkImageCreateInfo@ struct used when creating--- @image@ and the @viewFormatCount@ field of--- @VkImageFormatListCreateInfoKHR@ is not zero then @format@ /must/ be--- one of the formats in--- @VkImageFormatListCreateInfoKHR@::@pViewFormats@.------ - If @image@ was created with the @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@--- flag, if the @format@ of the @image@ is a--- [multi-planar](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)--- format, and if @subresourceRange.aspectMask@ is one of--- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or--- @VK_IMAGE_ASPECT_PLANE_2_BIT@, then @format@ /must/ be compatible--- with the 'Graphics.Vulkan.Core10.Core.VkFormat' for the plane of the--- @image@ @format@ indicated by @subresourceRange.aspectMask@, as--- defined in--- [{html_spec_relative}#features-formats-compatible-planes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-compatible-planes)------ - If @image@ was not created with the--- @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@ flag, or if the @format@ of the--- @image@ is a--- [multi-planar](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-formats-requiring-sampler-ycbcr-conversion)--- format and if @subresourceRange.aspectMask@ is--- @VK_IMAGE_ASPECT_COLOR_BIT@, @format@ /must/ be identical to the--- @format@ used to create @image@------ - If @image@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @subresourceRange@ and @viewType@ /must/ be compatible with the--- image, as described in the [compatibility--- table](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-image-views-compatibility)------ - If @image@ has an [external--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats):------ - @format@ must be @VK_FORMAT_UNDEFINED@------ - The @pNext@ chain must contain an instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionInfo'--- with a @conversion@ object created with the same external format--- as @image@------ - All members of @components@ must be--- @VK_COMPONENT_SWIZZLE_IDENTITY@------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkImageViewUsageCreateInfo'--- or--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionInfo'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ - @flags@ /must/ be @0@------ - @image@ /must/ be a valid @VkImage@ handle------ - @viewType@ /must/ be a valid 'VkImageViewType' value------ - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'--- value------ - @components@ /must/ be a valid @VkComponentMapping@ structure------ - @subresourceRange@ /must/ be a valid @VkImageSubresourceRange@--- structure------ = See Also------ 'VkComponentMapping', 'Graphics.Vulkan.Core10.Core.VkFormat',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'VkImageSubresourceRange', 'VkImageViewCreateFlags', 'VkImageViewType',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateImageView'-data VkImageViewCreateInfo = VkImageViewCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkImageViewCreateFlags- , -- | @image@ is a @VkImage@ on which the view will be created.- vkImage :: VkImage- , -- | @viewType@ is an 'VkImageViewType' value specifying the type of the- -- image view.- vkViewType :: VkImageViewType- , -- | @format@ is a 'Graphics.Vulkan.Core10.Core.VkFormat' describing the- -- format and type used to interpret data elements in the image.- vkFormat :: VkFormat- , -- | @components@ is a 'VkComponentMapping' specifies a remapping of color- -- components (or of depth or stencil components after they have been- -- converted into color components).- vkComponents :: VkComponentMapping- , -- | @subresourceRange@ is a 'VkImageSubresourceRange' selecting the set of- -- mipmap levels and array layers to be accessible to the view.- vkSubresourceRange :: VkImageSubresourceRange- }- deriving (Eq, Show)--instance Storable VkImageViewCreateInfo where- sizeOf ~_ = 80- alignment ~_ = 8- peek ptr = VkImageViewCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkImageViewCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImageViewCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkImageViewCreateInfo))- *> poke (ptr `plusPtr` 24) (vkImage (poked :: VkImageViewCreateInfo))- *> poke (ptr `plusPtr` 32) (vkViewType (poked :: VkImageViewCreateInfo))- *> poke (ptr `plusPtr` 36) (vkFormat (poked :: VkImageViewCreateInfo))- *> poke (ptr `plusPtr` 40) (vkComponents (poked :: VkImageViewCreateInfo))- *> poke (ptr `plusPtr` 56) (vkSubresourceRange (poked :: VkImageViewCreateInfo))+{-# language CPP #-}+module Graphics.Vulkan.Core10.ImageView ( createImageView+ , withImageView+ , destroyImageView+ , ComponentMapping(..)+ , ImageViewCreateInfo(..)+ ) where++import Control.Exception.Base (bracket)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.Enums.ComponentSwizzle (ComponentSwizzle)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateImageView))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyImageView))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.Core10.Enums.Format (Format)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Image)+import Graphics.Vulkan.Core10.SharedTypes (ImageSubresourceRange)+import Graphics.Vulkan.Core10.Handles (ImageView)+import Graphics.Vulkan.Core10.Handles (ImageView(..))+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_astc_decode_mode (ImageViewASTCDecodeModeEXT)+import Graphics.Vulkan.Core10.Enums.ImageViewCreateFlagBits (ImageViewCreateFlags)+import Graphics.Vulkan.Core10.Enums.ImageViewType (ImageViewType)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (ImageViewUsageCreateInfo)+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionInfo)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateImageView+ :: FunPtr (Ptr Device_T -> Ptr (ImageViewCreateInfo a) -> Ptr AllocationCallbacks -> Ptr ImageView -> IO Result) -> Ptr Device_T -> Ptr (ImageViewCreateInfo a) -> Ptr AllocationCallbacks -> Ptr ImageView -> IO Result++-- | vkCreateImageView - Create an image view from an existing image+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the image view.+--+-- - @pCreateInfo@ is a pointer to a 'ImageViewCreateInfo' structure+-- containing parameters to be used to create the image view.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pView@ is a pointer to a 'Graphics.Vulkan.Core10.Handles.ImageView'+-- handle in which the resulting image view object is returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'ImageViewCreateInfo' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pView@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.ImageView', 'ImageViewCreateInfo'+createImageView :: PokeChain a => Device -> ImageViewCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (ImageView)+createImageView device createInfo allocator = evalContT $ do+ let vkCreateImageView' = mkVkCreateImageView (pVkCreateImageView (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPView <- ContT $ bracket (callocBytes @ImageView 8) free+ r <- lift $ vkCreateImageView' (deviceHandle (device)) pCreateInfo pAllocator (pPView)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pView <- lift $ peek @ImageView pPView+ pure $ (pView)++-- | A safe wrapper for 'createImageView' and 'destroyImageView' using+-- 'bracket'+--+-- The allocated value must not be returned from the provided computation+withImageView :: PokeChain a => Device -> ImageViewCreateInfo a -> Maybe AllocationCallbacks -> (ImageView -> IO r) -> IO r+withImageView device imageViewCreateInfo allocationCallbacks =+ bracket+ (createImageView device imageViewCreateInfo allocationCallbacks)+ (\o -> destroyImageView device o allocationCallbacks)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDestroyImageView+ :: FunPtr (Ptr Device_T -> ImageView -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> ImageView -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyImageView - Destroy an image view object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the image view.+--+-- - 'Graphics.Vulkan.Core10.Handles.ImageView' is the image view to+-- destroy.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- == Valid Usage+--+-- - All submitted commands that refer to+-- 'Graphics.Vulkan.Core10.Handles.ImageView' /must/ have completed+-- execution+--+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.ImageView' was+-- created, a compatible set of callbacks /must/ be provided here+--+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.ImageView' was+-- created, @pAllocator@ /must/ be @NULL@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - If 'Graphics.Vulkan.Core10.Handles.ImageView' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.ImageView' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.ImageView' handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - If 'Graphics.Vulkan.Core10.Handles.ImageView' is a valid handle, it+-- /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.ImageView' /must/ be+-- externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.ImageView'+destroyImageView :: Device -> ImageView -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyImageView device imageView allocator = evalContT $ do+ let vkDestroyImageView' = mkVkDestroyImageView (pVkDestroyImageView (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyImageView' (deviceHandle (device)) (imageView) pAllocator+ pure $ ()+++-- | VkComponentMapping - Structure specifying a color component mapping+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID',+-- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.ComponentSwizzle',+-- 'ImageViewCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'+data ComponentMapping = ComponentMapping+ { -- | @r@ /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.ComponentSwizzle' value+ r :: ComponentSwizzle+ , -- | @g@ /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.ComponentSwizzle' value+ g :: ComponentSwizzle+ , -- | @b@ /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.ComponentSwizzle' value+ b :: ComponentSwizzle+ , -- | @a@ /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.ComponentSwizzle' value+ a :: ComponentSwizzle+ }+ deriving (Typeable)+deriving instance Show ComponentMapping++instance ToCStruct ComponentMapping where+ withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ComponentMapping{..} f = do+ poke ((p `plusPtr` 0 :: Ptr ComponentSwizzle)) (r)+ poke ((p `plusPtr` 4 :: Ptr ComponentSwizzle)) (g)+ poke ((p `plusPtr` 8 :: Ptr ComponentSwizzle)) (b)+ poke ((p `plusPtr` 12 :: Ptr ComponentSwizzle)) (a)+ f+ cStructSize = 16+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr ComponentSwizzle)) (zero)+ poke ((p `plusPtr` 4 :: Ptr ComponentSwizzle)) (zero)+ poke ((p `plusPtr` 8 :: Ptr ComponentSwizzle)) (zero)+ poke ((p `plusPtr` 12 :: Ptr ComponentSwizzle)) (zero)+ f++instance FromCStruct ComponentMapping where+ peekCStruct p = do+ r <- peek @ComponentSwizzle ((p `plusPtr` 0 :: Ptr ComponentSwizzle))+ g <- peek @ComponentSwizzle ((p `plusPtr` 4 :: Ptr ComponentSwizzle))+ b <- peek @ComponentSwizzle ((p `plusPtr` 8 :: Ptr ComponentSwizzle))+ a <- peek @ComponentSwizzle ((p `plusPtr` 12 :: Ptr ComponentSwizzle))+ pure $ ComponentMapping+ r g b a++instance Storable ComponentMapping where+ sizeOf ~_ = 16+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ComponentMapping where+ zero = ComponentMapping+ zero+ zero+ zero+ zero+++-- | VkImageViewCreateInfo - Structure specifying parameters of a newly+-- created image view+--+-- = Description+--+-- Some of the 'Graphics.Vulkan.Core10.Handles.Image' creation parameters+-- are inherited by the view. In particular, image view creation inherits+-- the implicit parameter @usage@ specifying the allowed usages of the+-- image view that, by default, takes the value of the corresponding+-- @usage@ parameter specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' at image creation time.+-- If the image was has a depth-stencil format and was created with a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'+-- structure included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo', the usage is calculated+-- based on the @subresource.aspectMask@ provided:+--+-- - If @aspectMask@ includes only+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',+-- the implicit @usage@ is equal to+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'::@stencilUsage@.+--+-- - If @aspectMask@ includes only+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',+-- the implicit @usage@ is equal to+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@usage@.+--+-- - If both aspects are included in @aspectMask@, the implicit @usage@+-- is equal to the intersection of+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@usage@ and+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'::@stencilUsage@.+-- The implicit @usage@ /can/ be overriden by adding a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.ImageViewUsageCreateInfo'+-- structure to the @pNext@ chain.+--+-- If 'Graphics.Vulkan.Core10.Handles.Image' was created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'+-- flag, and if the 'Graphics.Vulkan.Core10.Enums.Format.Format' of the+-- image is not+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>,+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' /can/ be different from the+-- image’s format, but if 'Graphics.Vulkan.Core10.Handles.Image' was+-- created without the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT'+-- flag and they are not equal they /must/ be /compatible/. Image format+-- compatibility is defined in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes Format Compatibility Classes>+-- section. Views of compatible formats will have the same mapping between+-- texel coordinates and memory locations irrespective of the+-- 'Graphics.Vulkan.Core10.Enums.Format.Format', with only the+-- interpretation of the bit pattern changing.+--+-- Note+--+-- Values intended to be used with one view format /may/ not be exactly+-- preserved when written or read through a different format. For example,+-- an integer value that happens to have the bit pattern of a floating+-- point denorm or NaN /may/ be flushed or canonicalized when written or+-- read through a view with a floating point format. Similarly, a value+-- written through a signed normalized format that has a bit pattern+-- exactly equal to -2b /may/ be changed to -2b + 1 as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fixedfpconv Conversion from Normalized Fixed-Point to Floating-Point>.+--+-- If 'Graphics.Vulkan.Core10.Handles.Image' was created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT'+-- flag, 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be+-- /compatible/ with the image’s format as described above, or /must/ be an+-- uncompressed format in which case it /must/ be /size-compatible/ with+-- the image’s format, as defined for+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-images-format-size-compatibility copying data between images>+-- In this case the resulting image view’s texel dimensions equal the+-- dimensions of the selected mip level divided by the compressed texel+-- block size and rounded up.+--+-- If the image view is to be used with a sampler which supports+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,+-- an /identically defined object/ of type+-- 'Graphics.Vulkan.Core11.Handles.SamplerYcbcrConversion' to that used to+-- create the sampler /must/ be passed to 'createImageView' in a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'+-- included in the @pNext@ chain of 'ImageViewCreateInfo'. Conversely, if a+-- 'Graphics.Vulkan.Core11.Handles.SamplerYcbcrConversion' object is passed+-- to 'createImageView', an identically defined+-- 'Graphics.Vulkan.Core11.Handles.SamplerYcbcrConversion' object /must/ be+-- used when sampling the image.+--+-- If the image has a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' and+-- @subresourceRange.aspectMask@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be identical to the+-- image 'Graphics.Vulkan.Core10.Enums.Format.Format', and the sampler to+-- be used with the image view /must/ enable+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>.+--+-- If 'Graphics.Vulkan.Core10.Handles.Image' was created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'+-- and the image has a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>+-- 'Graphics.Vulkan.Core10.Enums.Format.Format', and if+-- @subresourceRange.aspectMask@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT',+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes compatible>+-- with the corresponding plane of the image, and the sampler to be used+-- with the image view /must/ not enable+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>.+-- The @width@ and @height@ of the single-plane image view /must/ be+-- derived from the multi-planar image’s dimensions in the manner listed+-- for+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes plane compatibility>+-- for the plane.+--+-- Any view of an image plane will have the same mapping between texel+-- coordinates and memory locations as used by the channels of the color+-- aspect, subject to the formulae relating texel coordinates to+-- lower-resolution planes as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstruction Chroma Reconstruction>.+-- That is, if an R or B plane has a reduced resolution relative to the G+-- plane of the multi-planar image, the image view operates using the+-- (/uplane/, /vplane/) unnormalized coordinates of the reduced-resolution+-- plane, and these coordinates access the same memory locations as the+-- (/ucolor/, /vcolor/) unnormalized coordinates of the color aspect for+-- which chroma reconstruction operations operate on the same (/uplane/,+-- /vplane/) or (/iplane/, /jplane/) coordinates.+--+-- +----------+-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------++-- | Dim, | Image parameters | View parameters |+-- | Arrayed, | | |+-- | MS | | |+-- +==========+=========================================================================================+=========================================================================++-- | | 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' = | @baseArrayLayer@, @layerCount@, and @levelCount@ are members of the |+-- | | ci.'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' | @subresourceRange@ member. |+-- | | @width@ = ci.@extent.width@ | |+-- | | @height@ = ci.@extent.height@ | |+-- | | @depth@ = ci.@extent.depth@ | |+-- | | @arrayLayers@ = ci.@arrayLayers@ | |+-- | | @samples@ = ci.@samples@ | |+-- | | 'Graphics.Vulkan.Core10.BaseType.Flags' = ci.'Graphics.Vulkan.Core10.BaseType.Flags' | |+-- | | where ci is the 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' used to create | |+-- | | 'Graphics.Vulkan.Core10.Handles.Image'. | |+-- +----------+-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------++-- | __1D, 0, | 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' = | @viewType@ = |+-- | 0__ | 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' | 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' |+-- | | @width@ ≥ 1 | @baseArrayLayer@ ≥ 0 |+-- | | @height@ = 1 | @layerCount@ = 1 |+-- | | @depth@ = 1 | |+-- | | @arrayLayers@ ≥ 1 | |+-- | | @samples@ = 1 | |+-- +----------+-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------++-- | __1D, 1, | 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' = | @viewType@ = |+-- | 0__ | 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' | 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY' |+-- | | @width@ ≥ 1 | @baseArrayLayer@ ≥ 0 |+-- | | @height@ = 1 | @layerCount@ ≥ 1 |+-- | | @depth@ = 1 | |+-- | | @arrayLayers@ ≥ 1 | |+-- | | @samples@ = 1 | |+-- +----------+-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------++-- | __2D, 0, | 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' = | @viewType@ = |+-- | 0__ | 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' | 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' |+-- | | @width@ ≥ 1 | @baseArrayLayer@ ≥ 0 |+-- | | @height@ ≥ 1 | @layerCount@ = 1 |+-- | | @depth@ = 1 | |+-- | | @arrayLayers@ ≥ 1 | |+-- | | @samples@ = 1 | |+-- +----------+-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------++-- | __2D, 1, | 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' = | @viewType@ = |+-- | 0__ | 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' | 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' |+-- | | @width@ ≥ 1 | @baseArrayLayer@ ≥ 0 |+-- | | @height@ ≥ 1 | @layerCount@ ≥ 1 |+-- | | @depth@ = 1 | |+-- | | @arrayLayers@ ≥ 1 | |+-- | | @samples@ = 1 | |+-- +----------+-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------++-- | __2D, 0, | 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' = | @viewType@ = |+-- | 1__ | 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' | 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' |+-- | | @width@ ≥ 1 | @baseArrayLayer@ ≥ 0 |+-- | | @height@ ≥ 1 | @layerCount@ = 1 |+-- | | @depth@ = 1 | |+-- | | @arrayLayers@ ≥ 1 | |+-- | | @samples@ > 1 | |+-- +----------+-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------++-- | __2D, 1, | 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' = | @viewType@ = |+-- | 1__ | 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' | 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' |+-- | | @width@ ≥ 1 | @baseArrayLayer@ ≥ 0 |+-- | | @height@ ≥ 1 | @layerCount@ ≥ 1 |+-- | | @depth@ = 1 | |+-- | | @arrayLayers@ ≥ 1 | |+-- | | @samples@ > 1 | |+-- +----------+-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------++-- | __CUBE, | 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' = | @viewType@ = |+-- | 0, 0__ | 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' | 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE' |+-- | | @width@ ≥ 1 | @baseArrayLayer@ ≥ 0 |+-- | | @height@ = @width@ | @layerCount@ = 6 |+-- | | @depth@ = 1 | |+-- | | @arrayLayers@ ≥ 6 | |+-- | | @samples@ = 1 | |+-- | | 'Graphics.Vulkan.Core10.BaseType.Flags' includes | |+-- | | 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CUBE_COMPATIBLE_BIT' | |+-- +----------+-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------++-- | __CUBE, | 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' = | @viewType@ = |+-- | 1, 0__ | 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' | 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY' |+-- | | @width@ ≥ 1 | @baseArrayLayer@ ≥ 0 |+-- | | @height@ = width | @layerCount@ = 6 × /N/, /N/ ≥ 1 |+-- | | @depth@ = 1 | |+-- | | /N/ ≥ 1 | |+-- | | @arrayLayers@ ≥ 6 × /N/ | |+-- | | @samples@ = 1 | |+-- | | 'Graphics.Vulkan.Core10.BaseType.Flags' includes | |+-- | | 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CUBE_COMPATIBLE_BIT' | |+-- +----------+-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------++-- | __3D, 0, | 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' = | @viewType@ = |+-- | 0__ | 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D' | 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D' |+-- | | @width@ ≥ 1 | @baseArrayLayer@ = 0 |+-- | | @height@ ≥ 1 | @layerCount@ = 1 |+-- | | @depth@ ≥ 1 | |+-- | | @arrayLayers@ = 1 | |+-- | | @samples@ = 1 | |+-- +----------+-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------++-- | __3D, 0, | 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' = | @viewType@ = |+-- | 0__ | 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D' | 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' |+-- | | @width@ ≥ 1 | @levelCount@ = 1 |+-- | | @height@ ≥ 1 | @baseArrayLayer@ ≥ 0 |+-- | | @depth@ ≥ 1 | @layerCount@ = 1 |+-- | | @arrayLayers@ = 1 | |+-- | | @samples@ = 1 | |+-- | | 'Graphics.Vulkan.Core10.BaseType.Flags' includes | |+-- | | 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT' | |+-- | | 'Graphics.Vulkan.Core10.BaseType.Flags' does not include | |+-- | | 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT', | |+-- | | 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT', | |+-- | | and 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_ALIASED_BIT' | |+-- +----------+-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------++-- | __3D, 0, | 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' = | @viewType@ = |+-- | 0__ | 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D' | 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' |+-- | | @width@ ≥ 1 | @levelCount@ = 1 |+-- | | @height@ ≥ 1 | @baseArrayLayer@ ≥ 0 |+-- | | @depth@ ≥ 1 | @layerCount@ ≥ 1 |+-- | | @arrayLayers@ = 1 | |+-- | | @samples@ = 1 | |+-- | | 'Graphics.Vulkan.Core10.BaseType.Flags' includes | |+-- | | 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT' | |+-- | | 'Graphics.Vulkan.Core10.BaseType.Flags' does not include | |+-- | | 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT', | |+-- | | 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT', | |+-- | | and 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_ALIASED_BIT' | |+-- +----------+-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------++--+-- Image and image view parameter compatibility requirements+--+-- == Valid Usage+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was not created with+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CUBE_COMPATIBLE_BIT'+-- then @viewType@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE' or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-imageCubeArray image cubemap arrays>+-- feature is not enabled, @viewType@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with+-- 'Graphics.Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D' but without+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT'+-- set then @viewType@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ have been created with+-- a @usage@ value containing at least one of+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT'+--+-- - The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- of the resultant image view /must/ contain at least one bit.+--+-- - If @usage@ contains+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT',+-- then the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- of the resultant image view /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_BIT'.+--+-- - If @usage@ contains+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT',+-- then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_BIT'.+--+-- - If @usage@ contains+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT',+-- then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'.+--+-- - If @usage@ contains+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',+-- then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'.+--+-- - If @usage@ contains+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT',+-- then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain at least one of+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'.+--+-- - @subresourceRange.baseMipLevel@ /must/ be less than the @mipLevels@+-- specified in 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- - If @subresourceRange.levelCount@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS',+-- @subresourceRange.baseMipLevel@ + @subresourceRange.levelCount@+-- /must/ be less than or equal to the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with @usage@+-- containing+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT',+-- @subresourceRange.levelCount@ /must/ be @1@+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' is not a 3D image created+-- with+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT'+-- set, or @viewType@ is not+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY',+-- @subresourceRange.baseArrayLayer@ /must/ be less than the+-- @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- - If @subresourceRange.layerCount@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',+-- 'Graphics.Vulkan.Core10.Handles.Image' is not a 3D image created+-- with+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT'+-- set, or @viewType@ is not+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY',+-- @subresourceRange.layerCount@ /must/ be non-zero and+-- @subresourceRange.baseArrayLayer@ + @subresourceRange.layerCount@+-- /must/ be less than or equal to the @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' is a 3D image created with+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT'+-- set, and @viewType@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY',+-- @subresourceRange.baseArrayLayer@ /must/ be less than the depth+-- computed from @baseMipLevel@ and @extent.depth@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created, according to the+-- formula defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing>.+--+-- - If @subresourceRange.layerCount@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',+-- 'Graphics.Vulkan.Core10.Handles.Image' is a 3D image created with+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT'+-- set, and @viewType@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY',+-- @subresourceRange.layerCount@ /must/ be non-zero and+-- @subresourceRange.baseArrayLayer@ + @subresourceRange.layerCount@+-- /must/ be less than or equal to the depth computed from+-- @baseMipLevel@ and @extent.depth@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created, according to the+-- formula defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing>.+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'+-- flag, 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be+-- compatible with the 'Graphics.Vulkan.Core10.Enums.Format.Format'+-- used to create 'Graphics.Vulkan.Core10.Handles.Image', as defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes Format Compatibility Classes>+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'+-- flag, but without the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT'+-- flag, and if the 'Graphics.Vulkan.Core10.Enums.Format.Format' of the+-- 'Graphics.Vulkan.Core10.Handles.Image' is not a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>+-- format, 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be+-- compatible with the 'Graphics.Vulkan.Core10.Enums.Format.Format'+-- used to create 'Graphics.Vulkan.Core10.Handles.Image', as defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes Format Compatibility Classes>+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT'+-- flag, 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be+-- compatible with, or /must/ be an uncompressed format that is+-- size-compatible with, the+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' used to create+-- 'Graphics.Vulkan.Core10.Handles.Image'.+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT'+-- flag, the @levelCount@ and @layerCount@ members of+-- @subresourceRange@ /must/ both be @1@.+--+-- - If a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'+-- structure was included in the @pNext@ chain of the+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' structure used when+-- creating 'Graphics.Vulkan.Core10.Handles.Image' and the+-- @viewFormatCount@ field of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'+-- is not zero then 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/+-- be one of the formats in+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@pViewFormats@.+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'+-- flag, if the 'Graphics.Vulkan.Core10.Enums.Format.Format' of the+-- 'Graphics.Vulkan.Core10.Handles.Image' is a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>+-- format, and if @subresourceRange.aspectMask@ is one of+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT',+-- then 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be+-- compatible with the 'Graphics.Vulkan.Core10.Enums.Format.Format' for+-- the plane of the 'Graphics.Vulkan.Core10.Handles.Image'+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' indicated by+-- @subresourceRange.aspectMask@, as defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes>+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was not created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'+-- flag, or if the 'Graphics.Vulkan.Core10.Enums.Format.Format' of the+-- 'Graphics.Vulkan.Core10.Handles.Image' is a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>+-- format and if @subresourceRange.aspectMask@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be identical to+-- the 'Graphics.Vulkan.Core10.Enums.Format.Format' used to create+-- 'Graphics.Vulkan.Core10.Handles.Image'+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'+-- structure with a @conversion@ value other than+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', all members of+-- @components@ /must/ have the value+-- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_IDENTITY'.+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' is non-sparse then it+-- /must/ be bound completely and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - @subresourceRange@ and @viewType@ /must/ be compatible with the+-- image, as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-compatibility compatibility table>+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' has an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external format>,+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'.+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' has an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external format>,+-- the @pNext@ chain /must/ include a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'+-- structure with a @conversion@ object created with the same external+-- format as 'Graphics.Vulkan.Core10.Handles.Image'.+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' has an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external format>,+-- all members of @components@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_IDENTITY'.+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with @usage@+-- containing+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV',+-- @viewType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with @usage@+-- containing+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV',+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R8_UINT'+--+-- - If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentdensitymapdynamic dynamic fragment density map>+-- feature is not enabled, 'Graphics.Vulkan.Core10.BaseType.Flags'+-- /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.ImageViewCreateFlagBits.IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT'+--+-- - If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentdensitymapdynamic dynamic fragment density map>+-- feature is not enabled and 'Graphics.Vulkan.Core10.Handles.Image'+-- was created with @usage@ containing+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT',+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not contain any of+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_PROTECTED_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_ALIASED_BIT'+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.ImageViewUsageCreateInfo'+-- structure, and 'Graphics.Vulkan.Core10.Handles.Image' was not+-- created with a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'+-- structure included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo', its @usage@ member+-- /must/ not include any bits that were not set in the @usage@ member+-- of the 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' structure used+-- to create 'Graphics.Vulkan.Core10.Handles.Image'+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.ImageViewUsageCreateInfo'+-- structure, 'Graphics.Vulkan.Core10.Handles.Image' was created with a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'+-- structure included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo', and+-- @subResourceRange.aspectMask@ includes+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',+-- the @usage@ member of the+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.ImageViewUsageCreateInfo'+-- instance /must/ not include any bits that were not set in the+-- @usage@ member of the+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'+-- structure used to create 'Graphics.Vulkan.Core10.Handles.Image'+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.ImageViewUsageCreateInfo'+-- structure, 'Graphics.Vulkan.Core10.Handles.Image' was created with a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'+-- structure included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo', and+-- @subResourceRange.aspectMask@ includes bits other than+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',+-- the @usage@ member of the+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.ImageViewUsageCreateInfo'+-- structure /must/ not include any bits that were not set in the+-- @usage@ member of the 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'+-- structure used to create 'Graphics.Vulkan.Core10.Handles.Image'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_astc_decode_mode.ImageViewASTCDecodeModeEXT',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.ImageViewUsageCreateInfo',+-- or+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.ImageViewCreateFlagBits.ImageViewCreateFlagBits'+-- values+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Image' handle+--+-- - @viewType@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' value+--+-- - 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' value+--+-- - @components@ /must/ be a valid 'ComponentMapping' structure+--+-- - @subresourceRange@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange' structure+--+-- = See Also+--+-- 'ComponentMapping', 'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'Graphics.Vulkan.Core10.Handles.Image',+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewCreateFlagBits.ImageViewCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createImageView'+data ImageViewCreateInfo (es :: [Type]) = ImageViewCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.ImageViewCreateFlagBits.ImageViewCreateFlagBits'+ -- describing additional parameters of the image view.+ flags :: ImageViewCreateFlags+ , -- | 'Graphics.Vulkan.Core10.Handles.Image' is a+ -- 'Graphics.Vulkan.Core10.Handles.Image' on which the view will be+ -- created.+ image :: Image+ , -- | @viewType@ is a+ -- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' value+ -- specifying the type of the image view.+ viewType :: ImageViewType+ , -- | 'Graphics.Vulkan.Core10.Enums.Format.Format' is a+ -- 'Graphics.Vulkan.Core10.Enums.Format.Format' describing the format and+ -- type used to interpret texel blocks in the image.+ format :: Format+ , -- | @components@ is a 'ComponentMapping' specifies a remapping of color+ -- components (or of depth or stencil components after they have been+ -- converted into color components).+ components :: ComponentMapping+ , -- | @subresourceRange@ is a+ -- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange' selecting the+ -- set of mipmap levels and array layers to be accessible to the view.+ subresourceRange :: ImageSubresourceRange+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (ImageViewCreateInfo es)++instance Extensible ImageViewCreateInfo where+ extensibleType = STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO+ setNext x next = x{next = next}+ getNext ImageViewCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends ImageViewCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @ImageViewASTCDecodeModeEXT = Just f+ | Just Refl <- eqT @e @SamplerYcbcrConversionInfo = Just f+ | Just Refl <- eqT @e @ImageViewUsageCreateInfo = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (ImageViewCreateInfo es) where+ withCStruct x f = allocaBytesAligned 80 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageViewCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr ImageViewCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 24 :: Ptr Image)) (image)+ lift $ poke ((p `plusPtr` 32 :: Ptr ImageViewType)) (viewType)+ lift $ poke ((p `plusPtr` 36 :: Ptr Format)) (format)+ ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr ComponentMapping)) (components) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr ImageSubresourceRange)) (subresourceRange) . ($ ())+ lift $ f+ cStructSize = 80+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 24 :: Ptr Image)) (zero)+ lift $ poke ((p `plusPtr` 32 :: Ptr ImageViewType)) (zero)+ lift $ poke ((p `plusPtr` 36 :: Ptr Format)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr ComponentMapping)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 56 :: Ptr ImageSubresourceRange)) (zero) . ($ ())+ lift $ f++instance PeekChain es => FromCStruct (ImageViewCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @ImageViewCreateFlags ((p `plusPtr` 16 :: Ptr ImageViewCreateFlags))+ image <- peek @Image ((p `plusPtr` 24 :: Ptr Image))+ viewType <- peek @ImageViewType ((p `plusPtr` 32 :: Ptr ImageViewType))+ format <- peek @Format ((p `plusPtr` 36 :: Ptr Format))+ components <- peekCStruct @ComponentMapping ((p `plusPtr` 40 :: Ptr ComponentMapping))+ subresourceRange <- peekCStruct @ImageSubresourceRange ((p `plusPtr` 56 :: Ptr ImageSubresourceRange))+ pure $ ImageViewCreateInfo+ next flags image viewType format components subresourceRange++instance es ~ '[] => Zero (ImageViewCreateInfo es) where+ zero = ImageViewCreateInfo+ ()+ zero+ zero+ zero+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core10/ImageView.hs-boot view
@@ -0,0 +1,27 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.ImageView ( ComponentMapping+ , ImageViewCreateInfo+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+data ComponentMapping++instance ToCStruct ComponentMapping+instance Show ComponentMapping++instance FromCStruct ComponentMapping+++type role ImageViewCreateInfo nominal+data ImageViewCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (ImageViewCreateInfo es)+instance Show (Chain es) => Show (ImageViewCreateInfo es)++instance PeekChain es => FromCStruct (ImageViewCreateInfo es)+
src/Graphics/Vulkan/Core10/LayerDiscovery.hs view
@@ -1,56 +1,64 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.LayerDiscovery- ( VK_MAX_DESCRIPTION_SIZE- , pattern VK_MAX_DESCRIPTION_SIZE- , vkEnumerateInstanceLayerProperties- , vkEnumerateDeviceLayerProperties- , VkLayerProperties(..)- ) where--import Data.Vector.Storable.Sized- ( Vector- )-import Data.Word- ( Word32- )-import Foreign.C.Types- ( CChar(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkPhysicalDevice- )-import Graphics.Vulkan.Core10.ExtensionDiscovery- ( VK_MAX_EXTENSION_NAME_SIZE- )+module Graphics.Vulkan.Core10.LayerDiscovery ( enumerateInstanceLayerProperties+ , enumerateDeviceLayerProperties+ , LayerProperties(..)+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (castFunPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.ByteString (packCString)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Ptr (Ptr(Ptr))+import Data.Word (Word32)+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import qualified Data.Vector.Storable.Sized (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Dynamic (getInstanceProcAddr')+import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)+import Graphics.Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkEnumerateDeviceLayerProperties))+import Graphics.Vulkan.Core10.APIConstants (MAX_DESCRIPTION_SIZE)+import Graphics.Vulkan.Core10.APIConstants (MAX_EXTENSION_NAME_SIZE)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkEnumerateInstanceLayerProperties+ :: FunPtr (Ptr Word32 -> Ptr LayerProperties -> IO Result) -> Ptr Word32 -> Ptr LayerProperties -> IO Result --- No documentation found for TopLevel "VK_MAX_DESCRIPTION_SIZE"-type VK_MAX_DESCRIPTION_SIZE = 256--- No documentation found for Nested "Integral a => a" "VK_MAX_DESCRIPTION_SIZE"-pattern VK_MAX_DESCRIPTION_SIZE :: Integral a => a-pattern VK_MAX_DESCRIPTION_SIZE = 256 -- | vkEnumerateInstanceLayerProperties - Returns up to requested number of -- global layer properties --@@ -60,7 +68,7 @@ -- layer properties available or queried, as described below. -- -- - @pProperties@ is either @NULL@ or a pointer to an array of--- 'VkLayerProperties' structures.+-- 'LayerProperties' structures. -- -- = Description --@@ -71,15 +79,16 @@ -- the number of structures actually written to @pProperties@. If -- @pPropertyCount@ is less than the number of layer properties available, -- at most @pPropertyCount@ structures will be written. If @pPropertyCount@--- is smaller than the number of layers available, @VK_INCOMPLETE@ will be--- returned instead of @VK_SUCCESS@, to indicate that not all the available--- layer properties were returned.+-- is smaller than the number of layers available,+-- 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned+-- instead of 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS', to indicate+-- that not all the available layer properties were returned. -- -- The list of available layers may change at any time due to actions -- outside of the Vulkan implementation, so two calls to--- @vkEnumerateInstanceLayerProperties@ with the same parameters /may/--- return different results, or retrieve different @pPropertyCount@ values--- or @pProperties@ contents. Once an instance has been created, the layers+-- 'enumerateInstanceLayerProperties' with the same parameters /may/ return+-- different results, or retrieve different @pPropertyCount@ values or+-- @pProperties@ contents. Once an instance has been created, the layers -- enabled for that instance will continue to be enabled and valid for the -- lifetime of that instance, even if some of them become unavailable for -- future instances.@@ -90,28 +99,48 @@ -- -- - If the value referenced by @pPropertyCount@ is not @0@, and -- @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer--- to an array of @pPropertyCount@ @VkLayerProperties@ structures+-- to an array of @pPropertyCount@ 'LayerProperties' structures -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- - @VK_INCOMPLETE@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'VkLayerProperties'+-- 'LayerProperties'+enumerateInstanceLayerProperties :: IO (Result, ("properties" ::: Vector LayerProperties))+enumerateInstanceLayerProperties = evalContT $ do+ vkEnumerateInstanceLayerProperties' <- lift $ mkVkEnumerateInstanceLayerProperties . castFunPtr @_ @(("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr LayerProperties) -> IO Result) <$> getInstanceProcAddr' nullPtr (Ptr "vkEnumerateInstanceLayerProperties"#)+ pPPropertyCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkEnumerateInstanceLayerProperties' (pPPropertyCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pPropertyCount <- lift $ peek @Word32 pPPropertyCount+ pPProperties <- ContT $ bracket (callocBytes @LayerProperties ((fromIntegral (pPropertyCount)) * 520)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPProperties `advancePtrBytes` (i * 520) :: Ptr LayerProperties) . ($ ())) [0..(fromIntegral (pPropertyCount)) - 1]+ r' <- lift $ vkEnumerateInstanceLayerProperties' (pPPropertyCount) ((pPProperties))+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pPropertyCount' <- lift $ peek @Word32 pPPropertyCount+ pProperties' <- lift $ generateM (fromIntegral (pPropertyCount')) (\i -> peekCStruct @LayerProperties (((pPProperties) `advancePtrBytes` (520 * (i)) :: Ptr LayerProperties)))+ pure $ ((r'), pProperties')++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkEnumerateInstanceLayerProperties" vkEnumerateInstanceLayerProperties :: ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkLayerProperties) -> IO VkResult+ "dynamic" mkVkEnumerateDeviceLayerProperties+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr LayerProperties -> IO Result) -> Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr LayerProperties -> IO Result+ -- | vkEnumerateDeviceLayerProperties - Returns properties of available -- physical device layers --@@ -121,7 +150,7 @@ -- layer properties available or queried. -- -- - @pProperties@ is either @NULL@ or a pointer to an array of--- 'VkLayerProperties' structures.+-- 'LayerProperties' structures. -- -- = Description --@@ -132,80 +161,127 @@ -- the number of structures actually written to @pProperties@. If -- @pPropertyCount@ is less than the number of layer properties available, -- at most @pPropertyCount@ structures will be written. If @pPropertyCount@--- is smaller than the number of layers available, @VK_INCOMPLETE@ will be--- returned instead of @VK_SUCCESS@, to indicate that not all the available--- layer properties were returned.+-- is smaller than the number of layers available,+-- 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned+-- instead of 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS', to indicate+-- that not all the available layer properties were returned. ----- The list of layers enumerated by @vkEnumerateDeviceLayerProperties@--- /must/ be exactly the sequence of layers enabled for the instance. The--- members of @VkLayerProperties@ for each enumerated layer /must/ be the--- same as the properties when the layer was enumerated by--- @vkEnumerateInstanceLayerProperties@.+-- The list of layers enumerated by 'enumerateDeviceLayerProperties' /must/+-- be exactly the sequence of layers enabled for the instance. The members+-- of 'LayerProperties' for each enumerated layer /must/ be the same as the+-- properties when the layer was enumerated by+-- 'enumerateInstanceLayerProperties'. -- -- == Valid Usage (Implicit) ----- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle -- -- - @pPropertyCount@ /must/ be a valid pointer to a @uint32_t@ value -- -- - If the value referenced by @pPropertyCount@ is not @0@, and -- @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer--- to an array of @pPropertyCount@ @VkLayerProperties@ structures+-- to an array of @pPropertyCount@ 'LayerProperties' structures -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- - @VK_INCOMPLETE@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'VkLayerProperties',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkEnumerateDeviceLayerProperties" vkEnumerateDeviceLayerProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkLayerProperties) -> IO VkResult+-- 'LayerProperties', 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+enumerateDeviceLayerProperties :: PhysicalDevice -> IO (Result, ("properties" ::: Vector LayerProperties))+enumerateDeviceLayerProperties physicalDevice = evalContT $ do+ let vkEnumerateDeviceLayerProperties' = mkVkEnumerateDeviceLayerProperties (pVkEnumerateDeviceLayerProperties (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pPPropertyCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkEnumerateDeviceLayerProperties' physicalDevice' (pPPropertyCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pPropertyCount <- lift $ peek @Word32 pPPropertyCount+ pPProperties <- ContT $ bracket (callocBytes @LayerProperties ((fromIntegral (pPropertyCount)) * 520)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPProperties `advancePtrBytes` (i * 520) :: Ptr LayerProperties) . ($ ())) [0..(fromIntegral (pPropertyCount)) - 1]+ r' <- lift $ vkEnumerateDeviceLayerProperties' physicalDevice' (pPPropertyCount) ((pPProperties))+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pPropertyCount' <- lift $ peek @Word32 pPPropertyCount+ pProperties' <- lift $ generateM (fromIntegral (pPropertyCount')) (\i -> peekCStruct @LayerProperties (((pPProperties) `advancePtrBytes` (520 * (i)) :: Ptr LayerProperties)))+ pure $ ((r'), pProperties')++ -- | VkLayerProperties - Structure specifying layer properties -- -- = See Also ----- 'vkEnumerateDeviceLayerProperties', 'vkEnumerateInstanceLayerProperties'-data VkLayerProperties = VkLayerProperties- { -- | @layerName@ is a null-terminated UTF-8 string specifying the name of the- -- layer. Use this name in the @ppEnabledLayerNames@ array passed in the- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstanceCreateInfo'- -- structure to enable this layer for an instance.- vkLayerName :: Vector VK_MAX_EXTENSION_NAME_SIZE CChar+-- 'enumerateDeviceLayerProperties', 'enumerateInstanceLayerProperties'+data LayerProperties = LayerProperties+ { -- | @layerName@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.MAX_EXTENSION_NAME_SIZE' @char@+ -- containing a null-terminated UTF-8 string which is the name of the+ -- layer. Use this name in the @ppEnabledLayerNames@ array passed in the+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.InstanceCreateInfo'+ -- structure to enable this layer for an instance.+ layerName :: ByteString , -- | @specVersion@ is the Vulkan version the layer was written to, encoded as- -- described in the [API Version Numbers and- -- Semantics](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-versionnum)- -- section.- vkSpecVersion :: Word32+ -- described in+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-coreversions-versionnumbers>.+ specVersion :: Word32 , -- | @implementationVersion@ is the version of this layer. It is an integer,- -- increasing with backward compatible changes.- vkImplementationVersion :: Word32- , -- | @description@ is a null-terminated UTF-8 string providing additional- -- details that /can/ be used by the application to identify the layer.- vkDescription :: Vector VK_MAX_DESCRIPTION_SIZE CChar+ -- increasing with backward compatible changes.+ implementationVersion :: Word32+ , -- | @description@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.MAX_DESCRIPTION_SIZE' @char@+ -- containing a null-terminated UTF-8 string which provides additional+ -- details that /can/ be used by the application to identify the layer.+ description :: ByteString }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show LayerProperties -instance Storable VkLayerProperties where+instance ToCStruct LayerProperties where+ withCStruct x f = allocaBytesAligned 520 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p LayerProperties{..} f = do+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 0 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))) (layerName)+ poke ((p `plusPtr` 256 :: Ptr Word32)) (specVersion)+ poke ((p `plusPtr` 260 :: Ptr Word32)) (implementationVersion)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 264 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (description)+ f+ cStructSize = 520+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 0 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))) (mempty)+ poke ((p `plusPtr` 256 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 260 :: Ptr Word32)) (zero)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 264 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)+ f++instance FromCStruct LayerProperties where+ peekCStruct p = do+ layerName <- packCString (lowerArrayPtr ((p `plusPtr` 0 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))))+ specVersion <- peek @Word32 ((p `plusPtr` 256 :: Ptr Word32))+ implementationVersion <- peek @Word32 ((p `plusPtr` 260 :: Ptr Word32))+ description <- packCString (lowerArrayPtr ((p `plusPtr` 264 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))+ pure $ LayerProperties+ layerName specVersion implementationVersion description++instance Storable LayerProperties where sizeOf ~_ = 520 alignment ~_ = 4- peek ptr = VkLayerProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 256)- <*> peek (ptr `plusPtr` 260)- <*> peek (ptr `plusPtr` 264)- poke ptr poked = poke (ptr `plusPtr` 0) (vkLayerName (poked :: VkLayerProperties))- *> poke (ptr `plusPtr` 256) (vkSpecVersion (poked :: VkLayerProperties))- *> poke (ptr `plusPtr` 260) (vkImplementationVersion (poked :: VkLayerProperties))- *> poke (ptr `plusPtr` 264) (vkDescription (poked :: VkLayerProperties))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero LayerProperties where+ zero = LayerProperties+ mempty+ zero+ zero+ mempty+
+ src/Graphics/Vulkan/Core10/LayerDiscovery.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.LayerDiscovery (LayerProperties) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data LayerProperties++instance ToCStruct LayerProperties+instance Show LayerProperties++instance FromCStruct LayerProperties+
src/Graphics/Vulkan/Core10/Memory.hs view
@@ -1,952 +1,1242 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.Memory- ( VkMemoryMapFlags(..)- , VkDeviceMemory- , vkAllocateMemory- , vkFreeMemory- , vkMapMemory- , vkUnmapMemory- , vkFlushMappedMemoryRanges- , vkInvalidateMappedMemoryRanges- , vkGetDeviceMemoryCommitment- , VkMemoryAllocateInfo(..)- , VkMappedMemoryRange(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- , VkDeviceSize- )----- ** VkMemoryMapFlags---- | VkMemoryMapFlags - Reserved for future use------ = Description------ @VkMemoryMapFlags@ is a bitmask type for setting a mask, but is--- currently reserved for future use.------ = See Also------ 'vkMapMemory'-newtype VkMemoryMapFlags = VkMemoryMapFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkMemoryMapFlags where- - showsPrec p (VkMemoryMapFlags x) = showParen (p >= 11) (showString "VkMemoryMapFlags " . showsPrec 11 x)--instance Read VkMemoryMapFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkMemoryMapFlags")- v <- step readPrec- pure (VkMemoryMapFlags v)- )- )----- | Dummy data to tag the 'Ptr' with-data VkDeviceMemory_T--- | VkDeviceMemory - Opaque handle to a device memory object------ = See Also------ 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.VkBindBufferMemoryInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.VkBindImageMemoryInfo',--- 'VkMappedMemoryRange',--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkMemoryGetAndroidHardwareBufferInfoANDROID',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.VkMemoryGetFdInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.VkMemoryGetWin32HandleInfoKHR',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseImageMemoryBind',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseMemoryBind',--- 'Graphics.Vulkan.Extensions.VK_KHR_win32_keyed_mutex.VkWin32KeyedMutexAcquireReleaseInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex.VkWin32KeyedMutexAcquireReleaseInfoNV',--- 'vkAllocateMemory',--- 'Graphics.Vulkan.Core10.MemoryManagement.vkBindBufferMemory',--- 'Graphics.Vulkan.Core10.MemoryManagement.vkBindImageMemory',--- 'vkFreeMemory', 'vkGetDeviceMemoryCommitment',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.vkGetMemoryWin32HandleNV',--- 'vkMapMemory', 'vkUnmapMemory'-type VkDeviceMemory = Ptr VkDeviceMemory_T--- | vkAllocateMemory - Allocate device memory------ = Parameters------ - @device@ is the logical device that owns the memory.------ - @pAllocateInfo@ is a pointer to an instance of the--- 'VkMemoryAllocateInfo' structure describing parameters of the--- allocation. A successful returned allocation /must/ use the--- requested parameters — no substitution is permitted by the--- implementation.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ - @pMemory@ is a pointer to a @VkDeviceMemory@ handle in which--- information about the allocated memory is returned.------ = Description------ Allocations returned by @vkAllocateMemory@ are guaranteed to meet any--- alignment requirement of the implementation. For example, if an--- implementation requires 128 byte alignment for images and 64 byte--- alignment for buffers, the device memory returned through this mechanism--- would be 128-byte aligned. This ensures that applications /can/--- correctly suballocate objects of different types (with potentially--- different alignment requirements) in the same memory object.------ When memory is allocated, its contents are undefined.------ The maximum number of valid memory allocations that /can/ exist--- simultaneously within a--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice' /may/ be--- restricted by implementation- or platform-dependent limits. If a call to--- 'vkAllocateMemory' would cause the total number of allocations to exceed--- these limits, such a call will fail and /must/ return--- @VK_ERROR_TOO_MANY_OBJECTS@. The--- [@maxMemoryAllocationCount@](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-maxMemoryAllocationCount)--- feature describes the number of allocations that /can/ exist--- simultaneously before encountering these internal limits.------ Some platforms /may/ have a limit on the maximum size of a single--- allocation. For example, certain systems /may/ fail to create--- allocations with a size greater than or equal to 4GB. Such a limit is--- implementation-dependent, and if such a failure occurs then the error--- @VK_ERROR_OUT_OF_DEVICE_MEMORY@ /must/ be returned. This limit is--- advertised in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance3.VkPhysicalDeviceMaintenance3Properties'::@maxMemoryAllocationSize@.------ == Valid Usage------ - @pAllocateInfo@->@allocationSize@ /must/ be less than or equal to--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceMemoryProperties'::@memoryHeaps@[@pAllocateInfo@->@memoryTypeIndex@].@size@--- as returned by--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceMemoryProperties'--- for the--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice' that--- @device@ was created from.------ - @pAllocateInfo@->@memoryTypeIndex@ /must/ be less than--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceMemoryProperties'::@memoryTypeCount@--- as returned by--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceMemoryProperties'--- for the--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice' that--- @device@ was created from.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pAllocateInfo@ /must/ be a valid pointer to a valid--- @VkMemoryAllocateInfo@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pMemory@ /must/ be a valid pointer to a @VkDeviceMemory@ handle------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_TOO_MANY_OBJECTS@------ - @VK_ERROR_INVALID_EXTERNAL_HANDLE@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkDeviceMemory', 'VkMemoryAllocateInfo'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkAllocateMemory" vkAllocateMemory :: ("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkMemoryAllocateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMemory" ::: Ptr VkDeviceMemory) -> IO VkResult--- | vkFreeMemory - Free device memory------ = Parameters------ - @device@ is the logical device that owns the memory.------ - @memory@ is the @VkDeviceMemory@ object to be freed.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ = Description------ Before freeing a memory object, an application /must/ ensure the memory--- object is no longer in use by the device—for example by command buffers--- in the /pending state/. The memory /can/ remain bound to images or--- buffers at the time the memory object is freed, but any further use of--- them (on host or device) for anything other than destroying those--- objects will result in undefined behavior. If there are still any bound--- images or buffers, the memory /may/ not be immediately released by the--- implementation, but /must/ be released by the time all bound images and--- buffers have been destroyed. Once memory is released, it is returned to--- the heap from which it was allocated.------ How memory objects are bound to Images and Buffers is described in--- detail in the [Resource Memory--- Association](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-association)--- section.------ If a memory object is mapped at the time it is freed, it is implicitly--- unmapped.------ __Note__------ As described--- [below](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-device-unmap-does-not-flush),--- host writes are not implicitly flushed when the memory object is--- unmapped, but the implementation /must/ guarantee that writes that have--- not been flushed do not affect any other memory.------ == Valid Usage------ - All submitted commands that refer to @memory@ (via images or--- buffers) /must/ have completed execution------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - If @memory@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @memory@ /must/--- be a valid @VkDeviceMemory@ handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - If @memory@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@------ == Host Synchronization------ - Host access to @memory@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkDeviceMemory'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkFreeMemory" vkFreeMemory :: ("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | vkMapMemory - Map a memory object into application address space------ = Parameters------ - @device@ is the logical device that owns the memory.------ - @memory@ is the @VkDeviceMemory@ object to be mapped.------ - @offset@ is a zero-based byte offset from the beginning of the--- memory object.------ - @size@ is the size of the memory range to map, or @VK_WHOLE_SIZE@ to--- map from @offset@ to the end of the allocation.------ - @flags@ is reserved for future use.------ - @ppData@ points to a pointer in which is returned a host-accessible--- pointer to the beginning of the mapped range. This pointer minus--- @offset@ /must/ be aligned to at least--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceLimits'::@minMemoryMapAlignment@.------ = Description------ It is an application error to call @vkMapMemory@ on a memory object that--- is already mapped.------ __Note__------ @vkMapMemory@ will fail if the implementation is unable to allocate an--- appropriately sized contiguous virtual address range, e.g. due to--- virtual address space fragmentation or platform limits. In such cases,--- @vkMapMemory@ /must/ return @VK_ERROR_MEMORY_MAP_FAILED@. The--- application /can/ improve the likelihood of success by reducing the size--- of the mapped range and\/or removing unneeded mappings using--- @VkUnmapMemory@.------ @vkMapMemory@ does not check whether the device memory is currently in--- use before returning the host-accessible pointer. The application /must/--- guarantee that any previously submitted command that writes to this--- range has completed before the host reads from or writes to that range,--- and that any previously submitted command that reads from that range has--- completed before the host writes to that region (see--- [here](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-host-writes)--- for details on fulfilling such a guarantee). If the device memory was--- allocated without the @VK_MEMORY_PROPERTY_HOST_COHERENT_BIT@ set, these--- guarantees /must/ be made for an extended range: the application /must/--- round down the start of the range to the nearest multiple of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceLimits'::@nonCoherentAtomSize@,--- and round the end of the range up to the nearest multiple of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceLimits'::@nonCoherentAtomSize@.------ While a range of device memory is mapped for host access, the--- application is responsible for synchronizing both device and host access--- to that memory range.------ __Note__------ It is important for the application developer to become meticulously--- familiar with all of the mechanisms described in the chapter on--- [Synchronization and Cache--- Control](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization)--- as they are crucial to maintaining memory access ordering.------ == Valid Usage------ - @memory@ /must/ not be currently mapped------ - @offset@ /must/ be less than the size of @memory@------ - If @size@ is not equal to @VK_WHOLE_SIZE@, @size@ /must/ be greater--- than @0@------ - If @size@ is not equal to @VK_WHOLE_SIZE@, @size@ /must/ be less--- than or equal to the size of the @memory@ minus @offset@------ - @memory@ /must/ have been created with a memory type that reports--- @VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT@------ - @memory@ /must/ not have been allocated with multiple instances.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @memory@ /must/ be a valid @VkDeviceMemory@ handle------ - @flags@ /must/ be @0@------ - @ppData@ /must/ be a valid pointer to a pointer value------ - @memory@ /must/ have been created, allocated, or retrieved from--- @device@------ == Host Synchronization------ - Host access to @memory@ /must/ be externally synchronized------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_MEMORY_MAP_FAILED@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkDeviceMemory', @VkDeviceSize@, 'VkMemoryMapFlags'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkMapMemory" vkMapMemory :: ("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("offset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("flags" ::: VkMemoryMapFlags) -> ("ppData" ::: Ptr (Ptr ())) -> IO VkResult--- | vkUnmapMemory - Unmap a previously mapped memory object------ = Parameters------ - @device@ is the logical device that owns the memory.------ - @memory@ is the memory object to be unmapped.------ == Valid Usage------ - @memory@ /must/ be currently mapped------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @memory@ /must/ be a valid @VkDeviceMemory@ handle------ - @memory@ /must/ have been created, allocated, or retrieved from--- @device@------ == Host Synchronization------ - Host access to @memory@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkDeviceMemory'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkUnmapMemory" vkUnmapMemory :: ("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> IO ()--- | vkFlushMappedMemoryRanges - Flush mapped memory ranges------ = Parameters------ - @device@ is the logical device that owns the memory ranges.------ - @memoryRangeCount@ is the length of the @pMemoryRanges@ array.------ - @pMemoryRanges@ is a pointer to an array of 'VkMappedMemoryRange'--- structures describing the memory ranges to flush.------ = Description------ @vkFlushMappedMemoryRanges@ guarantees that host writes to the memory--- ranges described by @pMemoryRanges@ /can/ be made available to device--- access, via [availability--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible)--- from the @VK_ACCESS_HOST_WRITE_BIT@ [access--- type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types).------ Within each range described by @pMemoryRanges@, each set of--- @nonCoherentAtomSize@ bytes in that range is flushed if any byte in that--- set has been written by the host since it was first mapped, or the last--- time it was flushed. If @pMemoryRanges@ includes sets of--- @nonCoherentAtomSize@ bytes where no bytes have been written by the--- host, those bytes /must/ not be flushed.------ Unmapping non-coherent memory does not implicitly flush the mapped--- memory, and host writes that have not been flushed /may/ not ever be--- visible to the device. However, implementations /must/ ensure that--- writes that have not been flushed do not become visible to any other--- memory.------ __Note__------ The above guarantee avoids a potential memory corruption in scenarios--- where host writes to a mapped memory object have not been flushed before--- the memory is unmapped (or freed), and the virtual address range is--- subsequently reused for a different mapping (or memory allocation).------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pMemoryRanges@ /must/ be a valid pointer to an array of--- @memoryRangeCount@ valid @VkMappedMemoryRange@ structures------ - @memoryRangeCount@ /must/ be greater than @0@------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkMappedMemoryRange'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkFlushMappedMemoryRanges" vkFlushMappedMemoryRanges :: ("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult--- | vkInvalidateMappedMemoryRanges - Invalidate ranges of mapped memory--- objects------ = Parameters------ - @device@ is the logical device that owns the memory ranges.------ - @memoryRangeCount@ is the length of the @pMemoryRanges@ array.------ - @pMemoryRanges@ is a pointer to an array of 'VkMappedMemoryRange'--- structures describing the memory ranges to invalidate.------ = Description------ @vkInvalidateMappedMemoryRanges@ guarantees that device writes to the--- memory ranges described by @pMemoryRanges@, which have been made visible--- to the @VK_ACCESS_HOST_WRITE_BIT@ and @VK_ACCESS_HOST_READ_BIT@ [access--- types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types),--- are made visible to the host. If a range of non-coherent memory is--- written by the host and then invalidated without first being flushed,--- its contents are undefined.------ Within each range described by @pMemoryRanges@, each set of--- @nonCoherentAtomSize@ bytes in that range is invalidated if any byte in--- that set has been written by the device since it was first mapped, or--- the last time it was invalidated.------ __Note__------ Mapping non-coherent memory does not implicitly invalidate the mapped--- memory, and device writes that have not been invalidated /must/ be made--- visible before the host reads or overwrites them.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pMemoryRanges@ /must/ be a valid pointer to an array of--- @memoryRangeCount@ valid @VkMappedMemoryRange@ structures------ - @memoryRangeCount@ /must/ be greater than @0@------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkMappedMemoryRange'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkInvalidateMappedMemoryRanges" vkInvalidateMappedMemoryRanges :: ("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult--- | vkGetDeviceMemoryCommitment - Query the current commitment for a--- VkDeviceMemory------ = Parameters------ - @device@ is the logical device that owns the memory.------ - @memory@ is the memory object being queried.------ - @pCommittedMemoryInBytes@ is a pointer to a @VkDeviceSize@ value in--- which the number of bytes currently committed is returned, on--- success.------ = Description------ The implementation /may/ update the commitment at any time, and the--- value returned by this query /may/ be out of date.------ The implementation guarantees to allocate any committed memory from the--- heapIndex indicated by the memory type that the memory object was--- created with.------ == Valid Usage------ - @memory@ /must/ have been created with a memory type that reports--- @VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT@------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @memory@ /must/ be a valid @VkDeviceMemory@ handle------ - @pCommittedMemoryInBytes@ /must/ be a valid pointer to a--- @VkDeviceSize@ value------ - @memory@ /must/ have been created, allocated, or retrieved from--- @device@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkDeviceMemory', @VkDeviceSize@-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetDeviceMemoryCommitment" vkGetDeviceMemoryCommitment :: ("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pCommittedMemoryInBytes" ::: Ptr VkDeviceSize) -> IO ()--- | VkMemoryAllocateInfo - Structure containing parameters of a memory--- allocation------ = Description------ An instance of the 'VkMemoryAllocateInfo' structure defines a memory--- import operation if the @pNext@ chain contains an instance of one of the--- following structures: *--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.VkImportMemoryWin32HandleInfoKHR'--- with non-zero @handleType@ value *--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.VkImportMemoryFdInfoKHR'--- with a non-zero @handleType@ value *--- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.VkImportMemoryHostPointerInfoEXT'--- with a non-zero @handleType@ value *--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkImportAndroidHardwareBufferInfoANDROID'--- with a non-@NULL@ @buffer@ value------ Importing memory /must/ not modify the content of the memory.--- Implementations /must/ ensure that importing memory does not enable the--- importing Vulkan instance to access any memory or resources in other--- Vulkan instances other than that corresponding to the memory object--- imported. Implementations /must/ also ensure accessing imported memory--- which has not been initialized does not allow the importing Vulkan--- instance to obtain data from the exporting Vulkan instance or--- vice-versa.------ __Note__------ How exported and imported memory is isolated is left to the--- implementation, but applications should be aware that such isolation--- /may/ prevent implementations from placing multiple exportable memory--- objects in the same physical or virtual page. Hence, applications--- /should/ avoid creating many small external memory objects whenever--- possible.------ When performing a memory import operation, it is the responsibility of--- the application to ensure the external handles meet all valid usage--- requirements. However, implementations /must/ perform sufficient--- validation of external handles to ensure that the operation results in a--- valid memory object which will not cause program termination, device--- loss, queue stalls, or corruption of other resources when used as--- allowed according to its allocation parameters. If the external handle--- provided does not meet these requirements, the implementation /must/--- fail the memory import operation with the error code--- @VK_ERROR_INVALID_EXTERNAL_HANDLE@.------ == Valid Usage------ - If the @pNext@ chain contains an instance of--- @VkExportMemoryAllocateInfo@, and any of the handle types specified--- in @VkExportMemoryAllocateInfo@::@handleTypes@ require a dedicated--- allocation, as reported by--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2'--- in--- @VkExternalImageFormatProperties@::@externalMemoryProperties@::@externalMemoryFeatures@--- or--- @VkExternalBufferProperties@::@externalMemoryProperties@::@externalMemoryFeatures@,--- the @pNext@ chain must contain an instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'--- or--- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationMemoryAllocateInfoNV'--- with either its @image@ or @buffer@ field set to a value other than--- @VK_NULL_HANDLE@.------ - If the @pNext@ chain contains an instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExportMemoryAllocateInfo',--- it /must/ not contain an instance of--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.VkExportMemoryAllocateInfoNV'--- or--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.VkExportMemoryWin32HandleInfoNV'.------ - If the @pNext@ chain contains an instance of--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.VkImportMemoryWin32HandleInfoKHR',--- it /must/ not contain an instance of--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.VkImportMemoryWin32HandleInfoNV'.------ - If the parameters define an import operation, the external handle--- specified was created by the Vulkan API, and the external handle--- type is @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR@, then the--- values of @allocationSize@ and @memoryTypeIndex@ /must/ match those--- specified when the memory object being imported was created.------ - If the parameters define an import operation and the external handle--- specified was created by the Vulkan API, the device mask specified--- by--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.VkMemoryAllocateFlagsInfo'--- /must/ match that specified when the memory object being imported--- was allocated.------ - If the parameters define an import operation and the external handle--- specified was created by the Vulkan API, the list of physical--- devices that comprise the logical device passed to--- 'vkAllocateMemory' /must/ match the list of physical devices that--- comprise the logical device on which the memory was originally--- allocated.------ - If the parameters define an import operation and the external handle--- is an NT handle or a global share handle created outside of the--- Vulkan API, the value of @memoryTypeIndex@ /must/ be one of those--- returned by--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.vkGetMemoryWin32HandlePropertiesKHR'.------ - If the parameters define an import operation, the external handle--- was created by the Vulkan API, and the external handle type is--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR@ or--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR@, then the--- values of @allocationSize@ and @memoryTypeIndex@ /must/ match those--- specified when the memory object being imported was created.------ - If the parameters define an import operation and the external handle--- type is @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT@,--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT@, or--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT@,--- @allocationSize@ /must/ match the size reported in the memory--- requirements of the @image@ or @buffer@ member of the instance of--- @VkDedicatedAllocationMemoryAllocateInfoNV@ included in the @pNext@--- chain.------ - If the parameters define an import operation and the external handle--- type is @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT@,--- @allocationSize@ /must/ match the size specified when creating the--- Direct3D 12 heap from which the external handle was extracted.------ - If the parameters define an import operation and the external handle--- is a POSIX file descriptor created outside of the Vulkan API, the--- value of @memoryTypeIndex@ /must/ be one of those returned by--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.vkGetMemoryFdPropertiesKHR'.------ - If the parameters define an import operation and the external handle--- is a host pointer, the value of @memoryTypeIndex@ /must/ be one of--- those returned by--- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.vkGetMemoryHostPointerPropertiesEXT'------ - If the parameters define an import operation and the external handle--- is a host pointer, @allocationSize@ /must/ be an integer multiple of--- @VkPhysicalDeviceExternalMemoryHostPropertiesEXT@::@minImportedHostPointerAlignment@------ - If the parameters define an import operation and the external handle--- type is--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BIT_ANDROID@:------ - @allocationSize@ /must/ be the size returned by--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.vkGetAndroidHardwareBufferPropertiesANDROID'--- for the Android hardware buffer------ - If the @pNext@ chain doesn’t contain an instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'--- or @VkMemoryDedicatedAllocateInfo@::@image@ is--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', the Android--- hardware buffer /must/ have a format of--- @AHARDWAREBUFFER_FORMAT_BLOB@ and a usage that includes--- @AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER@------ - @memoryTypeIndex@ /must/ be one of those returned by--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.vkGetAndroidHardwareBufferPropertiesANDROID'--- for the Android hardware buffer------ - If the parameters do not define an import operation, and the @pNext@--- chain contains an instance of @VkExportMemoryAllocateInfo@ with--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID@--- included in its @handleTypes@ member, and the @pNext@ contains an--- instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'--- with @image@ not equal to--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', then--- @allocationSize@ /must/ be @0@, otherwise @allocationSize@ /must/ be--- greater than @0@.------ - If the parameters define an import operation, the external handle is--- an Android hardware buffer, and the @pNext@ chain includes an--- instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'--- with @image@ that is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE':------ - The Android hardware buffer’s usage /must/ include at least one--- of @AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT@ or--- @AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE@------ - The @image@’s format /must/ be @VK_FORMAT_UNDEFINED@ or the--- format returned by--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.vkGetAndroidHardwareBufferPropertiesANDROID'--- in--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferFormatPropertiesANDROID'::@format@--- for the Android hardware buffer.------ - The image’s and Android hardware buffer’s width, height, and--- array layer dimensions /must/ be the same------ - If the Android hardware buffer’s usage includes--- @AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE@, the image must have--- ⌊log2(max(@width@, @height@))⌋ + 1 mip levels, otherwise it must--- have exactly @1@ mip level.------ - Each bit set in the image’s usage /must/ be listed in--- [AHardwareBuffer Usage--- Equivalence](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-external-android-hardware-buffer-usage),--- and if there is a corresponding @AHARDWAREBUFFER_USAGE@ bit--- listed that bit /must/ be included in the Android hardware--- buffer’s usage------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of--- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationMemoryAllocateInfoNV',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExportMemoryAllocateInfo',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.VkExportMemoryAllocateInfoNV',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.VkExportMemoryWin32HandleInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.VkExportMemoryWin32HandleInfoNV',--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkImportAndroidHardwareBufferInfoANDROID',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.VkImportMemoryFdInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.VkImportMemoryHostPointerInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.VkImportMemoryWin32HandleInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.VkImportMemoryWin32HandleInfoNV',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.VkMemoryAllocateFlagsInfo',--- or--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ = See Also------ @VkDeviceSize@, 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkAllocateMemory'-data VkMemoryAllocateInfo = VkMemoryAllocateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @allocationSize@ is the size of the allocation in bytes- vkAllocationSize :: VkDeviceSize- , -- | @memoryTypeIndex@ is an index identifying a memory type from the- -- @memoryTypes@ array of the- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceMemoryProperties'- -- structure- vkMemoryTypeIndex :: Word32- }- deriving (Eq, Show)--instance Storable VkMemoryAllocateInfo where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkMemoryAllocateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkMemoryAllocateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkMemoryAllocateInfo))- *> poke (ptr `plusPtr` 16) (vkAllocationSize (poked :: VkMemoryAllocateInfo))- *> poke (ptr `plusPtr` 24) (vkMemoryTypeIndex (poked :: VkMemoryAllocateInfo))--- | VkMappedMemoryRange - Structure specifying a mapped memory range------ == Valid Usage------ - @memory@ /must/ be currently mapped------ - If @size@ is not equal to @VK_WHOLE_SIZE@, @offset@ and @size@--- /must/ specify a range contained within the currently mapped range--- of @memory@------ - If @size@ is equal to @VK_WHOLE_SIZE@, @offset@ /must/ be within the--- currently mapped range of @memory@------ - If @size@ is equal to @VK_WHOLE_SIZE@, the end of the current--- mapping of @memory@ /must/ be a multiple of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceLimits'::@nonCoherentAtomSize@--- bytes from the beginning of the memory object.------ - @offset@ /must/ be a multiple of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceLimits'::@nonCoherentAtomSize@------ - If @size@ is not equal to @VK_WHOLE_SIZE@, @size@ /must/ either be a--- multiple of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceLimits'::@nonCoherentAtomSize@,--- or @offset@ plus @size@ /must/ equal the size of @memory@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE@------ - @pNext@ /must/ be @NULL@------ - @memory@ /must/ be a valid @VkDeviceMemory@ handle------ = See Also------ 'VkDeviceMemory', @VkDeviceSize@,--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkFlushMappedMemoryRanges', 'vkInvalidateMappedMemoryRanges'-data VkMappedMemoryRange = VkMappedMemoryRange- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @memory@ is the memory object to which this range belongs.- vkMemory :: VkDeviceMemory- , -- | @offset@ is the zero-based byte offset from the beginning of the memory- -- object.- vkOffset :: VkDeviceSize- , -- | @size@ is either the size of range, or @VK_WHOLE_SIZE@ to affect the- -- range from @offset@ to the end of the current mapping of the allocation.- vkSize :: VkDeviceSize- }- deriving (Eq, Show)--instance Storable VkMappedMemoryRange where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkMappedMemoryRange <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkMappedMemoryRange))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkMappedMemoryRange))- *> poke (ptr `plusPtr` 16) (vkMemory (poked :: VkMappedMemoryRange))- *> poke (ptr `plusPtr` 24) (vkOffset (poked :: VkMappedMemoryRange))- *> poke (ptr `plusPtr` 32) (vkSize (poked :: VkMappedMemoryRange))+{-# language CPP #-}+module Graphics.Vulkan.Core10.Memory ( allocateMemory+ , withMemory+ , freeMemory+ , mapMemory+ , withMappedMemory+ , unmapMemory+ , flushMappedMemoryRanges+ , invalidateMappedMemoryRanges+ , getDeviceMemoryCommitment+ , MemoryAllocateInfo(..)+ , MappedMemoryRange(..)+ ) where++import Control.Exception.Base (bracket)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.CStruct.Extends (Chain)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationMemoryAllocateInfoNV)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkAllocateMemory))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkFlushMappedMemoryRanges))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkFreeMemory))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetDeviceMemoryCommitment))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkInvalidateMappedMemoryRanges))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkMapMemory))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkUnmapMemory))+import Graphics.Vulkan.Core10.Handles (DeviceMemory)+import Graphics.Vulkan.Core10.Handles (DeviceMemory(..))+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.Handles (Device_T)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory (ExportMemoryAllocateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_external_memory (ExportMemoryAllocateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32 (ExportMemoryWin32HandleInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_external_memory_win32 (ExportMemoryWin32HandleInfoNV)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (ImportAndroidHardwareBufferInfoANDROID)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd (ImportMemoryFdInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_external_memory_host (ImportMemoryHostPointerInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32 (ImportMemoryWin32HandleInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_external_memory_win32 (ImportMemoryWin32HandleInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group (MemoryAllocateFlagsInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation (MemoryDedicatedAllocateInfo)+import Graphics.Vulkan.Core10.Enums.MemoryMapFlags (MemoryMapFlags)+import Graphics.Vulkan.Core10.Enums.MemoryMapFlags (MemoryMapFlags(..))+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (MemoryOpaqueCaptureAddressAllocateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_memory_priority (MemoryPriorityAllocateInfoEXT)+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MAPPED_MEMORY_RANGE))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkAllocateMemory+ :: FunPtr (Ptr Device_T -> Ptr (MemoryAllocateInfo a) -> Ptr AllocationCallbacks -> Ptr DeviceMemory -> IO Result) -> Ptr Device_T -> Ptr (MemoryAllocateInfo a) -> Ptr AllocationCallbacks -> Ptr DeviceMemory -> IO Result++-- | vkAllocateMemory - Allocate device memory+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the memory.+--+-- - @pAllocateInfo@ is a pointer to a 'MemoryAllocateInfo' structure+-- describing parameters of the allocation. A successful returned+-- allocation /must/ use the requested parameters — no substitution is+-- permitted by the implementation.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pMemory@ is a pointer to a+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' handle in which+-- information about the allocated memory is returned.+--+-- = Description+--+-- Allocations returned by 'allocateMemory' are guaranteed to meet any+-- alignment requirement of the implementation. For example, if an+-- implementation requires 128 byte alignment for images and 64 byte+-- alignment for buffers, the device memory returned through this mechanism+-- would be 128-byte aligned. This ensures that applications /can/+-- correctly suballocate objects of different types (with potentially+-- different alignment requirements) in the same memory object.+--+-- When memory is allocated, its contents are undefined with the following+-- constraint:+--+-- - The contents of unprotected memory /must/ not be a function of data+-- protected memory objects, even if those memory objects were+-- previously freed.+--+-- Note+--+-- The contents of memory allocated by one application /should/ not be a+-- function of data from protected memory objects of another application,+-- even if those memory objects were previously freed.+--+-- The maximum number of valid memory allocations that /can/ exist+-- simultaneously within a 'Graphics.Vulkan.Core10.Handles.Device' /may/ be+-- restricted by implementation- or platform-dependent limits. If a call to+-- 'allocateMemory' would cause the total number of allocations to exceed+-- these limits, such a call will fail and /must/ return+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS'. The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxMemoryAllocationCount maxMemoryAllocationCount>+-- feature describes the number of allocations that /can/ exist+-- simultaneously before encountering these internal limits.+--+-- Some platforms /may/ have a limit on the maximum size of a single+-- allocation. For example, certain systems /may/ fail to create+-- allocations with a size greater than or equal to 4GB. Such a limit is+-- implementation-dependent, and if such a failure occurs then the error+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY' /must/+-- be returned. This limit is advertised in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties'::@maxMemoryAllocationSize@.+--+-- The cumulative memory size allocated to a heap /can/ be limited by the+-- size of the specified heap. In such cases, allocated memory is tracked+-- on a per-device and per-heap basis. Some platforms allow overallocation+-- into other heaps. The overallocation behavior /can/ be specified through+-- the+-- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_AMD_memory_overallocation_behavior@+-- extension.+--+-- == Valid Usage+--+-- - @pAllocateInfo->allocationSize@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties'::@memoryHeaps@[memindex].size+-- where @memindex@ =+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties'::@memoryTypes@[pAllocateInfo->memoryTypeIndex].heapIndex+-- as returned by+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceMemoryProperties'+-- for the 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' that+-- 'Graphics.Vulkan.Core10.Handles.Device' was created from.+--+-- - @pAllocateInfo->memoryTypeIndex@ /must/ be less than+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties'::@memoryTypeCount@+-- as returned by+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceMemoryProperties'+-- for the 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' that+-- 'Graphics.Vulkan.Core10.Handles.Device' was created from.+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceCoherentMemory deviceCoherentMemory>+-- feature is not enabled, @pAllocateInfo->memoryTypeIndex@ /must/ not+-- identify a memory type supporting+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pAllocateInfo@ /must/ be a valid pointer to a valid+-- 'MemoryAllocateInfo' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pMemory@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'+--+-- - 'Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory', 'MemoryAllocateInfo'+allocateMemory :: PokeChain a => Device -> MemoryAllocateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (DeviceMemory)+allocateMemory device allocateInfo allocator = evalContT $ do+ let vkAllocateMemory' = mkVkAllocateMemory (pVkAllocateMemory (deviceCmds (device :: Device)))+ pAllocateInfo <- ContT $ withCStruct (allocateInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPMemory <- ContT $ bracket (callocBytes @DeviceMemory 8) free+ r <- lift $ vkAllocateMemory' (deviceHandle (device)) pAllocateInfo pAllocator (pPMemory)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pMemory <- lift $ peek @DeviceMemory pPMemory+ pure $ (pMemory)++-- | A safe wrapper for 'allocateMemory' and 'freeMemory' using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withMemory :: PokeChain a => Device -> MemoryAllocateInfo a -> Maybe AllocationCallbacks -> (DeviceMemory -> IO r) -> IO r+withMemory device memoryAllocateInfo allocationCallbacks =+ bracket+ (allocateMemory device memoryAllocateInfo allocationCallbacks)+ (\o -> freeMemory device o allocationCallbacks)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkFreeMemory+ :: FunPtr (Ptr Device_T -> DeviceMemory -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> DeviceMemory -> Ptr AllocationCallbacks -> IO ()++-- | vkFreeMemory - Free device memory+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the memory.+--+-- - @memory@ is the 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+-- to be freed.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- = Description+--+-- Before freeing a memory object, an application /must/ ensure the memory+-- object is no longer in use by the device—for example by command buffers+-- in the /pending state/. Memory /can/ be freed whilst still bound to+-- resources, but those resources /must/ not be used afterwards. If there+-- are still any bound images or buffers, the memory /may/ not be+-- immediately released by the implementation, but /must/ be released by+-- the time all bound images and buffers have been destroyed. Once memory+-- is released, it is returned to the heap from which it was allocated.+--+-- How memory objects are bound to Images and Buffers is described in+-- detail in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-association Resource Memory Association>+-- section.+--+-- If a memory object is mapped at the time it is freed, it is implicitly+-- unmapped.+--+-- Note+--+-- As described+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-unmap-does-not-flush below>,+-- host writes are not implicitly flushed when the memory object is+-- unmapped, but the implementation /must/ guarantee that writes that have+-- not been flushed do not affect any other memory.+--+-- == Valid Usage+--+-- - All submitted commands that refer to @memory@ (via images or+-- buffers) /must/ have completed execution+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - If @memory@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @memory@ /must/+-- be a valid 'Graphics.Vulkan.Core10.Handles.DeviceMemory' handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - If @memory@ is a valid handle, it /must/ have been created,+-- allocated, or retrieved from 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to @memory@ /must/ be externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory'+freeMemory :: Device -> DeviceMemory -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+freeMemory device memory allocator = evalContT $ do+ let vkFreeMemory' = mkVkFreeMemory (pVkFreeMemory (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkFreeMemory' (deviceHandle (device)) (memory) pAllocator+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkMapMemory+ :: FunPtr (Ptr Device_T -> DeviceMemory -> DeviceSize -> DeviceSize -> MemoryMapFlags -> Ptr (Ptr ()) -> IO Result) -> Ptr Device_T -> DeviceMemory -> DeviceSize -> DeviceSize -> MemoryMapFlags -> Ptr (Ptr ()) -> IO Result++-- | vkMapMemory - Map a memory object into application address space+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the memory.+--+-- - @memory@ is the 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+-- to be mapped.+--+-- - @offset@ is a zero-based byte offset from the beginning of the+-- memory object.+--+-- - @size@ is the size of the memory range to map, or+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE' to map from+-- @offset@ to the end of the allocation.+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+--+-- - @ppData@ is a pointer to a @void *@ variable in which is returned a+-- host-accessible pointer to the beginning of the mapped range. This+-- pointer minus @offset@ /must/ be aligned to at least+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minMemoryMapAlignment@.+--+-- = Description+--+-- After a successful call to 'mapMemory' the memory object @memory@ is+-- considered to be currently /host mapped/.+--+-- Note+--+-- It is an application error to call 'mapMemory' on a memory object that+-- is already /host mapped/.+--+-- Note+--+-- 'mapMemory' will fail if the implementation is unable to allocate an+-- appropriately sized contiguous virtual address range, e.g. due to+-- virtual address space fragmentation or platform limits. In such cases,+-- 'mapMemory' /must/ return+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_MEMORY_MAP_FAILED'. The+-- application /can/ improve the likelihood of success by reducing the size+-- of the mapped range and\/or removing unneeded mappings using+-- 'unmapMemory'.+--+-- 'mapMemory' does not check whether the device memory is currently in use+-- before returning the host-accessible pointer. The application /must/+-- guarantee that any previously submitted command that writes to this+-- range has completed before the host reads from or writes to that range,+-- and that any previously submitted command that reads from that range has+-- completed before the host writes to that region (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-host-writes here>+-- for details on fulfilling such a guarantee). If the device memory was+-- allocated without the+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'+-- set, these guarantees /must/ be made for an extended range: the+-- application /must/ round down the start of the range to the nearest+-- multiple of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@nonCoherentAtomSize@,+-- and round the end of the range up to the nearest multiple of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@nonCoherentAtomSize@.+--+-- While a range of device memory is host mapped, the application is+-- responsible for synchronizing both device and host access to that memory+-- range.+--+-- Note+--+-- It is important for the application developer to become meticulously+-- familiar with all of the mechanisms described in the chapter on+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization Synchronization and Cache Control>+-- as they are crucial to maintaining memory access ordering.+--+-- == Valid Usage+--+-- - @memory@ /must/ not be currently host mapped+--+-- - @offset@ /must/ be less than the size of @memory@+--+-- - If @size@ is not equal to+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be+-- greater than @0@+--+-- - If @size@ is not equal to+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be+-- less than or equal to the size of the @memory@ minus @offset@+--+-- - @memory@ /must/ have been created with a memory type that reports+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_VISIBLE_BIT'+--+-- - @memory@ /must/ not have been allocated with multiple instances.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @memory@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' handle+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+--+-- - @ppData@ /must/ be a valid pointer to a pointer value+--+-- - @memory@ /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to @memory@ /must/ be externally synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_MEMORY_MAP_FAILED'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.MemoryMapFlags.MemoryMapFlags'+mapMemory :: Device -> DeviceMemory -> ("offset" ::: DeviceSize) -> DeviceSize -> MemoryMapFlags -> IO (("data" ::: Ptr ()))+mapMemory device memory offset size flags = evalContT $ do+ let vkMapMemory' = mkVkMapMemory (pVkMapMemory (deviceCmds (device :: Device)))+ pPpData <- ContT $ bracket (callocBytes @(Ptr ()) 8) free+ r <- lift $ vkMapMemory' (deviceHandle (device)) (memory) (offset) (size) (flags) (pPpData)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ ppData <- lift $ peek @(Ptr ()) pPpData+ pure $ (ppData)++-- | A safe wrapper for 'mapMemory' and 'unmapMemory' using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withMappedMemory :: Device -> DeviceMemory -> DeviceSize -> DeviceSize -> MemoryMapFlags -> (Ptr () -> IO r) -> IO r+withMappedMemory device deviceMemory offset' size' flags' =+ bracket+ (mapMemory device deviceMemory offset' size' flags')+ (\_ -> unmapMemory device deviceMemory)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkUnmapMemory+ :: FunPtr (Ptr Device_T -> DeviceMemory -> IO ()) -> Ptr Device_T -> DeviceMemory -> IO ()++-- | vkUnmapMemory - Unmap a previously mapped memory object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the memory.+--+-- - @memory@ is the memory object to be unmapped.+--+-- == Valid Usage+--+-- - @memory@ /must/ be currently host mapped+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @memory@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' handle+--+-- - @memory@ /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to @memory@ /must/ be externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory'+unmapMemory :: Device -> DeviceMemory -> IO ()+unmapMemory device memory = do+ let vkUnmapMemory' = mkVkUnmapMemory (pVkUnmapMemory (deviceCmds (device :: Device)))+ vkUnmapMemory' (deviceHandle (device)) (memory)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkFlushMappedMemoryRanges+ :: FunPtr (Ptr Device_T -> Word32 -> Ptr MappedMemoryRange -> IO Result) -> Ptr Device_T -> Word32 -> Ptr MappedMemoryRange -> IO Result++-- | vkFlushMappedMemoryRanges - Flush mapped memory ranges+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the memory ranges.+--+-- - @memoryRangeCount@ is the length of the @pMemoryRanges@ array.+--+-- - @pMemoryRanges@ is a pointer to an array of 'MappedMemoryRange'+-- structures describing the memory ranges to flush.+--+-- = Description+--+-- 'flushMappedMemoryRanges' guarantees that host writes to the memory+-- ranges described by @pMemoryRanges@ are made available to the host+-- memory domain, such that they /can/ be made available to the device+-- memory domain via+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible memory domain operations>+-- using the+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_WRITE_BIT'+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>.+--+-- Within each range described by @pMemoryRanges@, each set of+-- @nonCoherentAtomSize@ bytes in that range is flushed if any byte in that+-- set has been written by the host since it was first host mapped, or the+-- last time it was flushed. If @pMemoryRanges@ includes sets of+-- @nonCoherentAtomSize@ bytes where no bytes have been written by the+-- host, those bytes /must/ not be flushed.+--+-- Unmapping non-coherent memory does not implicitly flush the host mapped+-- memory, and host writes that have not been flushed /may/ not ever be+-- visible to the device. However, implementations /must/ ensure that+-- writes that have not been flushed do not become visible to any other+-- memory.+--+-- Note+--+-- The above guarantee avoids a potential memory corruption in scenarios+-- where host writes to a mapped memory object have not been flushed before+-- the memory is unmapped (or freed), and the virtual address range is+-- subsequently reused for a different mapping (or memory allocation).+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device', 'MappedMemoryRange'+flushMappedMemoryRanges :: Device -> ("memoryRanges" ::: Vector MappedMemoryRange) -> IO ()+flushMappedMemoryRanges device memoryRanges = evalContT $ do+ let vkFlushMappedMemoryRanges' = mkVkFlushMappedMemoryRanges (pVkFlushMappedMemoryRanges (deviceCmds (device :: Device)))+ pPMemoryRanges <- ContT $ allocaBytesAligned @MappedMemoryRange ((Data.Vector.length (memoryRanges)) * 40) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPMemoryRanges `plusPtr` (40 * (i)) :: Ptr MappedMemoryRange) (e) . ($ ())) (memoryRanges)+ r <- lift $ vkFlushMappedMemoryRanges' (deviceHandle (device)) ((fromIntegral (Data.Vector.length $ (memoryRanges)) :: Word32)) (pPMemoryRanges)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkInvalidateMappedMemoryRanges+ :: FunPtr (Ptr Device_T -> Word32 -> Ptr MappedMemoryRange -> IO Result) -> Ptr Device_T -> Word32 -> Ptr MappedMemoryRange -> IO Result++-- | vkInvalidateMappedMemoryRanges - Invalidate ranges of mapped memory+-- objects+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the memory ranges.+--+-- - @memoryRangeCount@ is the length of the @pMemoryRanges@ array.+--+-- - @pMemoryRanges@ is a pointer to an array of 'MappedMemoryRange'+-- structures describing the memory ranges to invalidate.+--+-- = Description+--+-- 'invalidateMappedMemoryRanges' guarantees that device writes to the+-- memory ranges described by @pMemoryRanges@, which have been made+-- available to the host memory domain using the+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_WRITE_BIT' and+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_READ_BIT'+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access types>,+-- are made visible to the host. If a range of non-coherent memory is+-- written by the host and then invalidated without first being flushed,+-- its contents are undefined.+--+-- Within each range described by @pMemoryRanges@, each set of+-- @nonCoherentAtomSize@ bytes in that range is invalidated if any byte in+-- that set has been written by the device since it was first host mapped,+-- or the last time it was invalidated.+--+-- Note+--+-- Mapping non-coherent memory does not implicitly invalidate that memory.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device', 'MappedMemoryRange'+invalidateMappedMemoryRanges :: Device -> ("memoryRanges" ::: Vector MappedMemoryRange) -> IO ()+invalidateMappedMemoryRanges device memoryRanges = evalContT $ do+ let vkInvalidateMappedMemoryRanges' = mkVkInvalidateMappedMemoryRanges (pVkInvalidateMappedMemoryRanges (deviceCmds (device :: Device)))+ pPMemoryRanges <- ContT $ allocaBytesAligned @MappedMemoryRange ((Data.Vector.length (memoryRanges)) * 40) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPMemoryRanges `plusPtr` (40 * (i)) :: Ptr MappedMemoryRange) (e) . ($ ())) (memoryRanges)+ r <- lift $ vkInvalidateMappedMemoryRanges' (deviceHandle (device)) ((fromIntegral (Data.Vector.length $ (memoryRanges)) :: Word32)) (pPMemoryRanges)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetDeviceMemoryCommitment+ :: FunPtr (Ptr Device_T -> DeviceMemory -> Ptr DeviceSize -> IO ()) -> Ptr Device_T -> DeviceMemory -> Ptr DeviceSize -> IO ()++-- | vkGetDeviceMemoryCommitment - Query the current commitment for a+-- VkDeviceMemory+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the memory.+--+-- - @memory@ is the memory object being queried.+--+-- - @pCommittedMemoryInBytes@ is a pointer to a+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize' value in which the+-- number of bytes currently committed is returned, on success.+--+-- = Description+--+-- The implementation /may/ update the commitment at any time, and the+-- value returned by this query /may/ be out of date.+--+-- The implementation guarantees to allocate any committed memory from the+-- @heapIndex@ indicated by the memory type that the memory object was+-- created with.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+getDeviceMemoryCommitment :: Device -> DeviceMemory -> IO (("committedMemoryInBytes" ::: DeviceSize))+getDeviceMemoryCommitment device memory = evalContT $ do+ let vkGetDeviceMemoryCommitment' = mkVkGetDeviceMemoryCommitment (pVkGetDeviceMemoryCommitment (deviceCmds (device :: Device)))+ pPCommittedMemoryInBytes <- ContT $ bracket (callocBytes @DeviceSize 8) free+ lift $ vkGetDeviceMemoryCommitment' (deviceHandle (device)) (memory) (pPCommittedMemoryInBytes)+ pCommittedMemoryInBytes <- lift $ peek @DeviceSize pPCommittedMemoryInBytes+ pure $ (pCommittedMemoryInBytes)+++-- | VkMemoryAllocateInfo - Structure containing parameters of a memory+-- allocation+--+-- = Description+--+-- A 'MemoryAllocateInfo' structure defines a memory import operation if+-- its @pNext@ chain includes one of the following structures:+--+-- - 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.ImportMemoryWin32HandleInfoKHR'+-- with non-zero @handleType@ value+--+-- - 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.ImportMemoryFdInfoKHR'+-- with a non-zero @handleType@ value+--+-- - 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.ImportMemoryHostPointerInfoEXT'+-- with a non-zero @handleType@ value+--+-- - 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID'+-- with a non-@NULL@ 'Graphics.Vulkan.Core10.Handles.Buffer' value+--+-- Importing memory /must/ not modify the content of the memory.+-- Implementations /must/ ensure that importing memory does not enable the+-- importing Vulkan instance to access any memory or resources in other+-- Vulkan instances other than that corresponding to the memory object+-- imported. Implementations /must/ also ensure accessing imported memory+-- which has not been initialized does not allow the importing Vulkan+-- instance to obtain data from the exporting Vulkan instance or+-- vice-versa.+--+-- Note+--+-- How exported and imported memory is isolated is left to the+-- implementation, but applications should be aware that such isolation+-- /may/ prevent implementations from placing multiple exportable memory+-- objects in the same physical or virtual page. Hence, applications+-- /should/ avoid creating many small external memory objects whenever+-- possible.+--+-- When performing a memory import operation, it is the responsibility of+-- the application to ensure the external handles meet all valid usage+-- requirements. However, implementations /must/ perform sufficient+-- validation of external handles to ensure that the operation results in a+-- valid memory object which will not cause program termination, device+-- loss, queue stalls, or corruption of other resources when used as+-- allowed according to its allocation parameters. If the external handle+-- provided does not meet these requirements, the implementation /must/+-- fail the memory import operation with the error code+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'.+--+-- == Valid Usage+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'+-- structure, and any of the handle types specified in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'::@handleTypes@+-- require a dedicated allocation, as reported by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+-- in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties'::@externalMemoryProperties.externalMemoryFeatures@+-- or+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties'::@externalMemoryProperties.externalMemoryFeatures@,+-- the @pNext@ chain must include a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'+-- or+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV'+-- structure with either its 'Graphics.Vulkan.Core10.Handles.Image' or+-- 'Graphics.Vulkan.Core10.Handles.Buffer' member set to a value other+-- than 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'.+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'+-- structure, it /must/ not include a+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.ExportMemoryAllocateInfoNV'+-- or+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.ExportMemoryWin32HandleInfoNV'+-- structure.+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.ImportMemoryWin32HandleInfoKHR'+-- structure, it /must/ not include a+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.ImportMemoryWin32HandleInfoNV'+-- structure.+--+-- - If the parameters define an import operation, the external handle+-- specified was created by the Vulkan API, and the external handle+-- type is+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR',+-- then the values of @allocationSize@ and @memoryTypeIndex@ /must/+-- match those specified when the memory object being imported was+-- created.+--+-- - If the parameters define an import operation and the external handle+-- specified was created by the Vulkan API, the device mask specified+-- by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.MemoryAllocateFlagsInfo'+-- /must/ match that specified when the memory object being imported+-- was allocated.+--+-- - If the parameters define an import operation and the external handle+-- specified was created by the Vulkan API, the list of physical+-- devices that comprise the logical device passed to 'allocateMemory'+-- /must/ match the list of physical devices that comprise the logical+-- device on which the memory was originally allocated.+--+-- - If the parameters define an import operation and the external handle+-- is an NT handle or a global share handle created outside of the+-- Vulkan API, the value of @memoryTypeIndex@ /must/ be one of those+-- returned by+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.getMemoryWin32HandlePropertiesKHR'.+--+-- - If the parameters define an import operation, the external handle+-- was created by the Vulkan API, and the external handle type is+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR'+-- or+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR',+-- then the values of @allocationSize@ and @memoryTypeIndex@ /must/+-- match those specified when the memory object being imported was+-- created.+--+-- - If the parameters define an import operation and the external handle+-- type is+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT',+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT',+-- or+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT',+-- @allocationSize@ /must/ match the size reported in the memory+-- requirements of the 'Graphics.Vulkan.Core10.Handles.Image' or+-- 'Graphics.Vulkan.Core10.Handles.Buffer' member of the+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV'+-- structure included in the @pNext@ chain.+--+-- - If the parameters define an import operation and the external handle+-- type is+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT',+-- @allocationSize@ /must/ match the size specified when creating the+-- Direct3D 12 heap from which the external handle was extracted.+--+-- - If the parameters define an import operation and the external handle+-- is a POSIX file descriptor created outside of the Vulkan API, the+-- value of @memoryTypeIndex@ /must/ be one of those returned by+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdPropertiesKHR'.+--+-- - If the protected memory feature is not enabled, the+-- 'MemoryAllocateInfo'::@memoryTypeIndex@ /must/ not indicate a memory+-- type that reports+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT'.+--+-- - If the parameters define an import operation and the external handle+-- is a host pointer, the value of @memoryTypeIndex@ /must/ be one of+-- those returned by+-- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.getMemoryHostPointerPropertiesEXT'+--+-- - If the parameters define an import operation and the external handle+-- is a host pointer, @allocationSize@ /must/ be an integer multiple of+-- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT'::@minImportedHostPointerAlignment@+--+-- - If the parameters define an import operation and the external handle+-- is a host pointer, the @pNext@ chain /must/ not include a+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV'+-- structure with either its 'Graphics.Vulkan.Core10.Handles.Image' or+-- 'Graphics.Vulkan.Core10.Handles.Buffer' field set to a value other+-- than 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'.+--+-- - If the parameters define an import operation and the external handle+-- is a host pointer, the @pNext@ chain /must/ not include a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'+-- structure with either its 'Graphics.Vulkan.Core10.Handles.Image' or+-- 'Graphics.Vulkan.Core10.Handles.Buffer' field set to a value other+-- than 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'.+--+-- - If the parameters define an import operation and the external handle+-- type is+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID',+-- @allocationSize@ /must/ be the size returned by+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.getAndroidHardwareBufferPropertiesANDROID'+-- for the Android hardware buffer.+--+-- - If the parameters define an import operation and the external handle+-- type is+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID',+-- and the @pNext@ chain does not include a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'+-- structure or+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::'Graphics.Vulkan.Core10.Handles.Image'+-- is 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', the Android+-- hardware buffer /must/ have a+-- @AHardwareBuffer_Desc@::'Graphics.Vulkan.Core10.Enums.Format.Format'+-- of @AHARDWAREBUFFER_FORMAT_BLOB@ and a+-- @AHardwareBuffer_Desc@::@usage@ that includes+-- @AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER@.+--+-- - If the parameters define an import operation and the external handle+-- type is+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID',+-- @memoryTypeIndex@ /must/ be one of those returned by+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.getAndroidHardwareBufferPropertiesANDROID'+-- for the Android hardware buffer.+--+-- - If the parameters do not define an import operation, and the @pNext@+-- chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'+-- structure with+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'+-- included in its @handleTypes@ member, and the @pNext@ chain includes+-- a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'+-- structure with 'Graphics.Vulkan.Core10.Handles.Image' not equal to+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', then+-- @allocationSize@ /must/ be @0@, otherwise @allocationSize@ /must/ be+-- greater than @0@.+--+-- - If the parameters define an import operation, the external handle is+-- an Android hardware buffer, and the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'+-- with 'Graphics.Vulkan.Core10.Handles.Image' that is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', the Android+-- hardware buffer’s+-- 'Graphics.Vulkan.Extensions.WSITypes.AHardwareBuffer'::@usage@+-- /must/ include at least one of+-- @AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT@ or+-- @AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE@.+--+-- - If the parameters define an import operation, the external handle is+-- an Android hardware buffer, and the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'+-- with 'Graphics.Vulkan.Core10.Handles.Image' that is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', the format of+-- 'Graphics.Vulkan.Core10.Handles.Image' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' or the format+-- returned by+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.getAndroidHardwareBufferPropertiesANDROID'+-- in+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID'::'Graphics.Vulkan.Core10.Enums.Format.Format'+-- for the Android hardware buffer.+--+-- - If the parameters define an import operation, the external handle is+-- an Android hardware buffer, and the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'+-- structure with 'Graphics.Vulkan.Core10.Handles.Image' that is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', the width,+-- height, and array layer dimensions of+-- 'Graphics.Vulkan.Core10.Handles.Image' and the Android hardware+-- buffer’s @AHardwareBuffer_Desc@ /must/ be identical.+--+-- - If the parameters define an import operation, the external handle is+-- an Android hardware buffer, and the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'+-- structure with 'Graphics.Vulkan.Core10.Handles.Image' that is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', and the Android+-- hardware buffer’s+-- 'Graphics.Vulkan.Extensions.WSITypes.AHardwareBuffer'::@usage@+-- includes @AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE@, the+-- 'Graphics.Vulkan.Core10.Handles.Image' /must/ have a complete mipmap+-- chain.+--+-- - If the parameters define an import operation, the external handle is+-- an Android hardware buffer, and the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'+-- structure with 'Graphics.Vulkan.Core10.Handles.Image' that is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', and the Android+-- hardware buffer’s+-- 'Graphics.Vulkan.Extensions.WSITypes.AHardwareBuffer'::@usage@ does+-- not include @AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE@, the+-- 'Graphics.Vulkan.Core10.Handles.Image' /must/ have exactly one+-- mipmap level.+--+-- - If the parameters define an import operation, the external handle is+-- an Android hardware buffer, and the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'+-- structure with 'Graphics.Vulkan.Core10.Handles.Image' that is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', each bit set in+-- the usage of 'Graphics.Vulkan.Core10.Handles.Image' /must/ be listed+-- in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-usage AHardwareBuffer Usage Equivalence>,+-- and if there is a corresponding @AHARDWAREBUFFER_USAGE@ bit listed+-- that bit /must/ be included in the Android hardware buffer’s+-- @AHardwareBuffer_Desc@::@usage@.+--+-- - If+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.MemoryOpaqueCaptureAddressAllocateInfo'::@opaqueCaptureAddress@+-- is not zero,+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.MemoryAllocateFlagsInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- /must/ include+-- 'Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'+--+-- - If+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.MemoryAllocateFlagsInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- includes+-- 'Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT',+-- the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressCaptureReplay bufferDeviceAddressCaptureReplay>+-- feature /must/ be enabled+--+-- - If+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.MemoryAllocateFlagsInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- includes+-- 'Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT',+-- the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddress bufferDeviceAddress>+-- feature /must/ be enabled+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.ImportMemoryHostPointerInfoEXT'+-- structure,+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.MemoryOpaqueCaptureAddressAllocateInfo'::@opaqueCaptureAddress@+-- /must/ be zero+--+-- - If the parameters define an import operation,+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.MemoryOpaqueCaptureAddressAllocateInfo'::@opaqueCaptureAddress@+-- /must/ be zero+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.ExportMemoryAllocateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.ExportMemoryWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.ExportMemoryWin32HandleInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ImportAndroidHardwareBufferInfoANDROID',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.ImportMemoryFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.ImportMemoryHostPointerInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.ImportMemoryWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.ImportMemoryWin32HandleInfoNV',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.MemoryAllocateFlagsInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.MemoryOpaqueCaptureAddressAllocateInfo',+-- or+-- 'Graphics.Vulkan.Extensions.VK_EXT_memory_priority.MemoryPriorityAllocateInfoEXT'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'allocateMemory'+data MemoryAllocateInfo (es :: [Type]) = MemoryAllocateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | @allocationSize@ is the size of the allocation in bytes+ allocationSize :: DeviceSize+ , -- | @memoryTypeIndex@ is an index identifying a memory type from the+ -- @memoryTypes@ array of the+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties'+ -- structure+ memoryTypeIndex :: Word32+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (MemoryAllocateInfo es)++instance Extensible MemoryAllocateInfo where+ extensibleType = STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO+ setNext x next = x{next = next}+ getNext MemoryAllocateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends MemoryAllocateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @MemoryOpaqueCaptureAddressAllocateInfo = Just f+ | Just Refl <- eqT @e @MemoryPriorityAllocateInfoEXT = Just f+ | Just Refl <- eqT @e @ImportAndroidHardwareBufferInfoANDROID = Just f+ | Just Refl <- eqT @e @ImportMemoryHostPointerInfoEXT = Just f+ | Just Refl <- eqT @e @MemoryDedicatedAllocateInfo = Just f+ | Just Refl <- eqT @e @MemoryAllocateFlagsInfo = Just f+ | Just Refl <- eqT @e @ImportMemoryFdInfoKHR = Just f+ | Just Refl <- eqT @e @ExportMemoryWin32HandleInfoKHR = Just f+ | Just Refl <- eqT @e @ImportMemoryWin32HandleInfoKHR = Just f+ | Just Refl <- eqT @e @ExportMemoryAllocateInfo = Just f+ | Just Refl <- eqT @e @ExportMemoryWin32HandleInfoNV = Just f+ | Just Refl <- eqT @e @ImportMemoryWin32HandleInfoNV = Just f+ | Just Refl <- eqT @e @ExportMemoryAllocateInfoNV = Just f+ | Just Refl <- eqT @e @DedicatedAllocationMemoryAllocateInfoNV = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (MemoryAllocateInfo es) where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p MemoryAllocateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (allocationSize)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (memoryTypeIndex)+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ lift $ f++instance PeekChain es => FromCStruct (MemoryAllocateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ allocationSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))+ memoryTypeIndex <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ pure $ MemoryAllocateInfo+ next allocationSize memoryTypeIndex++instance es ~ '[] => Zero (MemoryAllocateInfo es) where+ zero = MemoryAllocateInfo+ ()+ zero+ zero+++-- | VkMappedMemoryRange - Structure specifying a mapped memory range+--+-- == Valid Usage+--+-- - @memory@ /must/ be currently host mapped+--+-- - If @size@ is not equal to+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', @offset@ and+-- @size@ /must/ specify a range contained within the currently mapped+-- range of @memory@+--+-- - If @size@ is equal to+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', @offset@ /must/ be+-- within the currently mapped range of @memory@+--+-- - If @size@ is equal to+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', the end of the+-- current mapping of @memory@ /must/ be a multiple of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@nonCoherentAtomSize@+-- bytes from the beginning of the memory object.+--+-- - @offset@ /must/ be a multiple of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@nonCoherentAtomSize@+--+-- - If @size@ is not equal to+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/+-- either be a multiple of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@nonCoherentAtomSize@,+-- or @offset@ plus @size@ /must/ equal the size of @memory@.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MAPPED_MEMORY_RANGE'+--+-- - @pNext@ /must/ be @NULL@+--+-- - @memory@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' handle+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'flushMappedMemoryRanges', 'invalidateMappedMemoryRanges'+data MappedMemoryRange = MappedMemoryRange+ { -- | @memory@ is the memory object to which this range belongs.+ memory :: DeviceMemory+ , -- | @offset@ is the zero-based byte offset from the beginning of the memory+ -- object.+ offset :: DeviceSize+ , -- | @size@ is either the size of range, or+ -- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE' to affect the range+ -- from @offset@ to the end of the current mapping of the allocation.+ size :: DeviceSize+ }+ deriving (Typeable)+deriving instance Show MappedMemoryRange++instance ToCStruct MappedMemoryRange where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p MappedMemoryRange{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MAPPED_MEMORY_RANGE)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DeviceMemory)) (memory)+ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (offset)+ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (size)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MAPPED_MEMORY_RANGE)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DeviceMemory)) (zero)+ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)+ f++instance FromCStruct MappedMemoryRange where+ peekCStruct p = do+ memory <- peek @DeviceMemory ((p `plusPtr` 16 :: Ptr DeviceMemory))+ offset <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))+ size <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))+ pure $ MappedMemoryRange+ memory offset size++instance Storable MappedMemoryRange where+ sizeOf ~_ = 40+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MappedMemoryRange where+ zero = MappedMemoryRange+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core10/Memory.hs-boot view
@@ -0,0 +1,27 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Memory ( MappedMemoryRange+ , MemoryAllocateInfo+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+data MappedMemoryRange++instance ToCStruct MappedMemoryRange+instance Show MappedMemoryRange++instance FromCStruct MappedMemoryRange+++type role MemoryAllocateInfo nominal+data MemoryAllocateInfo (es :: [Type])++instance PokeChain es => ToCStruct (MemoryAllocateInfo es)+instance Show (Chain es) => Show (MemoryAllocateInfo es)++instance PeekChain es => FromCStruct (MemoryAllocateInfo es)+
src/Graphics/Vulkan/Core10/MemoryManagement.hs view
@@ -1,448 +1,534 @@-{-# language Strict #-} {-# language CPP #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.MemoryManagement- ( VkBuffer- , VkImage- , vkGetBufferMemoryRequirements- , vkBindBufferMemory- , vkGetImageMemoryRequirements- , vkBindImageMemory- , VkMemoryRequirements(..)- ) where--import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- , VkDeviceSize- )-import Graphics.Vulkan.Core10.Memory- ( VkDeviceMemory- )+module Graphics.Vulkan.Core10.MemoryManagement ( getBufferMemoryRequirements+ , bindBufferMemory+ , getImageMemoryRequirements+ , bindImageMemory+ , MemoryRequirements(..)+ ) where +import Foreign.Marshal.Alloc (allocaBytesAligned)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.Core10.Handles (Buffer(..))+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkBindBufferMemory))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkBindImageMemory))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetBufferMemoryRequirements))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetImageMemoryRequirements))+import Graphics.Vulkan.Core10.Handles (DeviceMemory)+import Graphics.Vulkan.Core10.Handles (DeviceMemory(..))+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Image)+import Graphics.Vulkan.Core10.Handles (Image(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetBufferMemoryRequirements+ :: FunPtr (Ptr Device_T -> Buffer -> Ptr MemoryRequirements -> IO ()) -> Ptr Device_T -> Buffer -> Ptr MemoryRequirements -> IO () --- | Dummy data to tag the 'Ptr' with-data VkBuffer_T--- | VkBuffer - Opaque handle to a buffer object------ = See Also------ 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.VkBindBufferMemoryInfo',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkBufferMemoryBarrier',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.VkBufferMemoryRequirementsInfo2',--- 'Graphics.Vulkan.Core10.BufferView.VkBufferViewCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkCmdProcessCommandsInfoNVX',--- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationMemoryAllocateInfoNV',--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorBufferInfo',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkIndirectCommandsTokenNVX',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTableIndexBufferEntryNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTableVertexBufferEntryNVX',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseBufferMemoryBindInfo',--- 'vkBindBufferMemory',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindIndexBuffer',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindVertexBuffers',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyBuffer',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyBufferToImage',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyImageToBuffer',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyQueryPoolResults',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDispatchIndirect',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDrawIndexedIndirect',--- 'Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count.vkCmdDrawIndexedIndirectCountAMD',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDrawIndirect',--- 'Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count.vkCmdDrawIndirectCountAMD',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdFillBuffer',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdUpdateBuffer',--- 'Graphics.Vulkan.Extensions.VK_AMD_buffer_marker.vkCmdWriteBufferMarkerAMD',--- 'Graphics.Vulkan.Core10.Buffer.vkCreateBuffer',--- 'Graphics.Vulkan.Core10.Buffer.vkDestroyBuffer',--- 'vkGetBufferMemoryRequirements'-type VkBuffer = Ptr VkBuffer_T--- | Dummy data to tag the 'Ptr' with-data VkImage_T--- | VkImage - Opaque handle to a image object------ = See Also------ 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.VkBindImageMemoryInfo',--- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationMemoryAllocateInfoNV',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkImageMemoryBarrier',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.VkImageMemoryRequirementsInfo2',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.VkImageSparseMemoryRequirementsInfo2',--- 'Graphics.Vulkan.Core10.ImageView.VkImageViewCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseImageMemoryBindInfo',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseImageOpaqueMemoryBindInfo',--- 'vkBindImageMemory',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBlitImage',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdClearColorImage',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdClearDepthStencilImage',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyBufferToImage',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyImage',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyImageToBuffer',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdResolveImage',--- 'Graphics.Vulkan.Core10.Image.vkCreateImage',--- 'Graphics.Vulkan.Core10.Image.vkDestroyImage',--- 'vkGetImageMemoryRequirements',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetImageSparseMemoryRequirements',--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkGetSwapchainImagesKHR'-type VkImage = Ptr VkImage_T -- | vkGetBufferMemoryRequirements - Returns the memory requirements for -- specified Vulkan object -- -- = Parameters ----- - @device@ is the logical device that owns the buffer.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the buffer. ----- - @buffer@ is the buffer to query.+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' is the buffer to query. ----- - @pMemoryRequirements@ points to an instance of the--- 'VkMemoryRequirements' structure in which the memory requirements of--- the buffer object are returned.+-- - @pMemoryRequirements@ is a pointer to a 'MemoryRequirements'+-- structure in which the memory requirements of the buffer object are+-- returned. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle------ - @buffer@ /must/ be a valid @VkBuffer@ handle------ - @pMemoryRequirements@ /must/ be a valid pointer to a--- @VkMemoryRequirements@ structure------ - @buffer@ /must/ have been created, allocated, or retrieved from--- @device@--- -- = See Also ----- 'VkBuffer', 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkMemoryRequirements'+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.Device', 'MemoryRequirements'+getBufferMemoryRequirements :: Device -> Buffer -> IO (MemoryRequirements)+getBufferMemoryRequirements device buffer = evalContT $ do+ let vkGetBufferMemoryRequirements' = mkVkGetBufferMemoryRequirements (pVkGetBufferMemoryRequirements (deviceCmds (device :: Device)))+ pPMemoryRequirements <- ContT (withZeroCStruct @MemoryRequirements)+ lift $ vkGetBufferMemoryRequirements' (deviceHandle (device)) (buffer) (pPMemoryRequirements)+ pMemoryRequirements <- lift $ peekCStruct @MemoryRequirements pPMemoryRequirements+ pure $ (pMemoryRequirements)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkGetBufferMemoryRequirements" vkGetBufferMemoryRequirements :: ("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ()+ "dynamic" mkVkBindBufferMemory+ :: FunPtr (Ptr Device_T -> Buffer -> DeviceMemory -> DeviceSize -> IO Result) -> Ptr Device_T -> Buffer -> DeviceMemory -> DeviceSize -> IO Result+ -- | vkBindBufferMemory - Bind device memory to a buffer object -- -- = Parameters ----- - @device@ is the logical device that owns the buffer and memory.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the buffer and memory. ----- - @buffer@ is the buffer to be attached to memory.+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' is the buffer to be attached+-- to memory. ----- - @memory@ is a @VkDeviceMemory@ object describing the device memory--- to attach.+-- - @memory@ is a 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+-- describing the device memory to attach. -- -- - @memoryOffset@ is the start offset of the region of @memory@ which -- is to be bound to the buffer. The number of bytes returned in the--- @VkMemoryRequirements@::@size@ member in @memory@, starting from+-- 'MemoryRequirements'::@size@ member in @memory@, starting from -- @memoryOffset@ bytes, will be bound to the specified buffer. -- -- = Description ----- @vkBindBufferMemory@ is equivalent to passing the same parameters--- through--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.VkBindBufferMemoryInfo'+-- 'bindBufferMemory' is equivalent to passing the same parameters through+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo' -- to--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.vkBindBufferMemory2'.+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.bindBufferMemory2'. -- -- == Valid Usage ----- - @buffer@ /must/ not already be backed by a memory object+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ not already be backed+-- by a memory object ----- - @buffer@ /must/ not have been created with any sparse memory binding--- flags+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ not have been created+-- with any sparse memory binding flags -- -- - @memoryOffset@ /must/ be less than the size of @memory@ ----- - If @buffer@ was created with the--- @VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT@ or--- @VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT@, @memoryOffset@ /must/ be--- a multiple of--- @VkPhysicalDeviceLimits@::@minTexelBufferOffsetAlignment@------ - If @buffer@ was created with the--- @VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT@, @memoryOffset@ /must/ be a--- multiple of--- @VkPhysicalDeviceLimits@::@minUniformBufferOffsetAlignment@------ - If @buffer@ was created with the--- @VK_BUFFER_USAGE_STORAGE_BUFFER_BIT@, @memoryOffset@ /must/ be a--- multiple of--- @VkPhysicalDeviceLimits@::@minStorageBufferOffsetAlignment@--- -- - @memory@ /must/ have been allocated using one of the memory types--- allowed in the @memoryTypeBits@ member of the @VkMemoryRequirements@--- structure returned from a call to @vkGetBufferMemoryRequirements@--- with @buffer@+-- allowed in the @memoryTypeBits@ member of the 'MemoryRequirements'+-- structure returned from a call to 'getBufferMemoryRequirements' with+-- 'Graphics.Vulkan.Core10.Handles.Buffer' -- -- - @memoryOffset@ /must/ be an integer multiple of the @alignment@--- member of the @VkMemoryRequirements@ structure returned from a call--- to @vkGetBufferMemoryRequirements@ with @buffer@+-- member of the 'MemoryRequirements' structure returned from a call to+-- 'getBufferMemoryRequirements' with+-- 'Graphics.Vulkan.Core10.Handles.Buffer' ----- - The @size@ member of the @VkMemoryRequirements@ structure returned--- from a call to @vkGetBufferMemoryRequirements@ with @buffer@ /must/--- be less than or equal to the size of @memory@ minus @memoryOffset@+-- - The @size@ member of the 'MemoryRequirements' structure returned+-- from a call to 'getBufferMemoryRequirements' with+-- 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be less than or equal+-- to the size of @memory@ minus @memoryOffset@ ----- - If @buffer@ requires a dedicated allocation(as reported by--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetBufferMemoryRequirements2'+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' requires a dedicated+-- allocation(as reported by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2' -- in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedRequirements'::requiresDedicatedAllocation--- for @buffer@), @memory@ /must/ have been created with--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@buffer@--- equal to @buffer@+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements'::requiresDedicatedAllocation+-- for 'Graphics.Vulkan.Core10.Handles.Buffer'), @memory@ /must/ have+-- been created with+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::'Graphics.Vulkan.Core10.Handles.Buffer'+-- equal to 'Graphics.Vulkan.Core10.Handles.Buffer' ----- - If the @VkMemoryAllocateInfo@ provided when @memory@ was allocated--- included an instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'--- in its @pNext@ chain, and--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@buffer@--- was not @VK_NULL_HANDLE@, then @buffer@ /must/ equal--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@buffer@,+-- - If the 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' provided+-- when @memory@ was allocated included a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'+-- structure in its @pNext@ chain, and+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::'Graphics.Vulkan.Core10.Handles.Buffer'+-- was not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', then+-- 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ equal+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::'Graphics.Vulkan.Core10.Handles.Buffer', -- and @memoryOffset@ /must/ be zero. ----- - If @buffer@ was created with--- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationBufferCreateInfoNV'::@dedicatedAllocation@--- equal to @VK_TRUE@, @memory@ /must/ have been created with--- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationMemoryAllocateInfoNV'::@buffer@+-- - If buffer was created with the+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'+-- bit set, the buffer /must/ be bound to a memory object allocated+-- with a memory type that reports+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT'+--+-- - If buffer was created with the+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_PROTECTED_BIT'+-- bit not set, the buffer /must/ not be bound to a memory object+-- created with a memory type that reports+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' was created with+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV'::@dedicatedAllocation@+-- equal to 'Graphics.Vulkan.Core10.BaseType.TRUE', @memory@ /must/+-- have been created with+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV'::'Graphics.Vulkan.Core10.Handles.Buffer' -- equal to a buffer handle created with identical creation parameters--- to @buffer@ and @memoryOffset@ /must/ be zero+-- to 'Graphics.Vulkan.Core10.Handles.Buffer' and @memoryOffset@ /must/+-- be zero --+-- - If the value of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'::@handleTypes@+-- used to allocate @memory@ is not @0@, it /must/ include at least one+-- of the handles set in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@+-- when 'Graphics.Vulkan.Core10.Handles.Buffer' was created+--+-- - If @memory@ was created by a memory import operation, the external+-- handle type of the imported memory /must/ also have been set in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@+-- when 'Graphics.Vulkan.Core10.Handles.Buffer' was created+--+-- - If the+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures'::@bufferDeviceAddress@+-- feature is enabled and 'Graphics.Vulkan.Core10.Handles.Buffer' was+-- created with the+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT'+-- bit set, @memory@ /must/ have been allocated with the+-- 'Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT'+-- bit set+-- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - @buffer@ /must/ be a valid @VkBuffer@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle ----- - @memory@ /must/ be a valid @VkDeviceMemory@ handle+-- - @memory@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' handle ----- - @buffer@ /must/ have been created, allocated, or retrieved from--- @device@+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ have been created,+-- allocated, or retrieved from 'Graphics.Vulkan.Core10.Handles.Device' -- -- - @memory@ /must/ have been created, allocated, or retrieved from--- @device@+-- 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization ----- - Host access to @buffer@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be+-- externally synchronized -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'+-- -- = See Also ----- 'VkBuffer', 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory', @VkDeviceSize@+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+bindBufferMemory :: Device -> Buffer -> DeviceMemory -> ("memoryOffset" ::: DeviceSize) -> IO ()+bindBufferMemory device buffer memory memoryOffset = do+ let vkBindBufferMemory' = mkVkBindBufferMemory (pVkBindBufferMemory (deviceCmds (device :: Device)))+ r <- vkBindBufferMemory' (deviceHandle (device)) (buffer) (memory) (memoryOffset)+ when (r < SUCCESS) (throwIO (VulkanException r))++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkBindBufferMemory" vkBindBufferMemory :: ("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult+ "dynamic" mkVkGetImageMemoryRequirements+ :: FunPtr (Ptr Device_T -> Image -> Ptr MemoryRequirements -> IO ()) -> Ptr Device_T -> Image -> Ptr MemoryRequirements -> IO ()+ -- | vkGetImageMemoryRequirements - Returns the memory requirements for -- specified Vulkan object -- -- = Parameters ----- - @device@ is the logical device that owns the image.------ - @image@ is the image to query.------ - @pMemoryRequirements@ points to an instance of the--- 'VkMemoryRequirements' structure in which the memory requirements of--- the image object are returned.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the image. ----- == Valid Usage+-- - 'Graphics.Vulkan.Core10.Handles.Image' is the image to query. ----- - @image@ /must/ not have been created with the--- @VK_IMAGE_CREATE_DISJOINT_BIT@ flag set+-- - @pMemoryRequirements@ is a pointer to a 'MemoryRequirements'+-- structure in which the memory requirements of the image object are+-- returned. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle------ - @image@ /must/ be a valid @VkImage@ handle------ - @pMemoryRequirements@ /must/ be a valid pointer to a--- @VkMemoryRequirements@ structure------ - @image@ /must/ have been created, allocated, or retrieved from--- @device@--- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkImage',--- 'VkMemoryRequirements'+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Image', 'MemoryRequirements'+getImageMemoryRequirements :: Device -> Image -> IO (MemoryRequirements)+getImageMemoryRequirements device image = evalContT $ do+ let vkGetImageMemoryRequirements' = mkVkGetImageMemoryRequirements (pVkGetImageMemoryRequirements (deviceCmds (device :: Device)))+ pPMemoryRequirements <- ContT (withZeroCStruct @MemoryRequirements)+ lift $ vkGetImageMemoryRequirements' (deviceHandle (device)) (image) (pPMemoryRequirements)+ pMemoryRequirements <- lift $ peekCStruct @MemoryRequirements pPMemoryRequirements+ pure $ (pMemoryRequirements)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkGetImageMemoryRequirements" vkGetImageMemoryRequirements :: ("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ()+ "dynamic" mkVkBindImageMemory+ :: FunPtr (Ptr Device_T -> Image -> DeviceMemory -> DeviceSize -> IO Result) -> Ptr Device_T -> Image -> DeviceMemory -> DeviceSize -> IO Result+ -- | vkBindImageMemory - Bind device memory to an image object -- -- = Parameters ----- - @device@ is the logical device that owns the image and memory.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the image and memory. ----- - @image@ is the image.+-- - 'Graphics.Vulkan.Core10.Handles.Image' is the image. ----- - @memory@ is the @VkDeviceMemory@ object describing the device memory--- to attach.+-- - @memory@ is the 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+-- describing the device memory to attach. -- -- - @memoryOffset@ is the start offset of the region of @memory@ which -- is to be bound to the image. The number of bytes returned in the--- @VkMemoryRequirements@::@size@ member in @memory@, starting from+-- 'MemoryRequirements'::@size@ member in @memory@, starting from -- @memoryOffset@ bytes, will be bound to the specified image. -- -- = Description ----- @vkBindImageMemory@ is equivalent to passing the same parameters through--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.VkBindImageMemoryInfo'+-- 'bindImageMemory' is equivalent to passing the same parameters through+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo' -- to--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.vkBindImageMemory2'.+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.bindImageMemory2'. -- -- == Valid Usage ----- - @image@ /must/ not have been created with the--- @VK_IMAGE_CREATE_DISJOINT_BIT@ set.+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ not have been created+-- with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'+-- set. ----- - @image@ /must/ not already be backed by a memory object+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ not already be backed+-- by a memory object ----- - @image@ /must/ not have been created with any sparse memory binding--- flags+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ not have been created+-- with any sparse memory binding flags -- -- - @memoryOffset@ /must/ be less than the size of @memory@ -- -- - @memory@ /must/ have been allocated using one of the memory types--- allowed in the @memoryTypeBits@ member of the @VkMemoryRequirements@--- structure returned from a call to @vkGetImageMemoryRequirements@--- with @image@+-- allowed in the @memoryTypeBits@ member of the 'MemoryRequirements'+-- structure returned from a call to 'getImageMemoryRequirements' with+-- 'Graphics.Vulkan.Core10.Handles.Image' -- -- - @memoryOffset@ /must/ be an integer multiple of the @alignment@--- member of the @VkMemoryRequirements@ structure returned from a call--- to @vkGetImageMemoryRequirements@ with @image@+-- member of the 'MemoryRequirements' structure returned from a call to+-- 'getImageMemoryRequirements' with+-- 'Graphics.Vulkan.Core10.Handles.Image' ----- - The @size@ member of the @VkMemoryRequirements@ structure returned--- from a call to @vkGetImageMemoryRequirements@ with @image@ /must/ be--- less than or equal to the size of @memory@ minus @memoryOffset@+-- - The difference of the size of @memory@ and @memoryOffset@ /must/ be+-- greater than or equal to the @size@ member of the+-- 'MemoryRequirements' structure returned from a call to+-- 'getImageMemoryRequirements' with the same+-- 'Graphics.Vulkan.Core10.Handles.Image' ----- - If @image@ requires a dedicated allocation (as reported by--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2'+-- - If 'Graphics.Vulkan.Core10.Handles.Image' requires a dedicated+-- allocation (as reported by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2' -- in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedRequirements'::requiresDedicatedAllocation--- for @image@), @memory@ /must/ have been created with--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@image@--- equal to @image@+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements'::requiresDedicatedAllocation+-- for 'Graphics.Vulkan.Core10.Handles.Image'), @memory@ /must/ have+-- been created with+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::'Graphics.Vulkan.Core10.Handles.Image'+-- equal to 'Graphics.Vulkan.Core10.Handles.Image' ----- - If the @VkMemoryAllocateInfo@ provided when @memory@ was allocated--- included an instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'--- in its @pNext@ chain, and--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@image@--- was not @VK_NULL_HANDLE@, then @image@ /must/ equal--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@image@+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dedicatedAllocationImageAliasing dedicated allocation image aliasing>+-- feature is not enabled, and the+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' provided when+-- @memory@ was allocated included a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'+-- structure in its @pNext@ chain, and+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::'Graphics.Vulkan.Core10.Handles.Image'+-- was not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', then+-- 'Graphics.Vulkan.Core10.Handles.Image' /must/ equal+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::'Graphics.Vulkan.Core10.Handles.Image' -- and @memoryOffset@ /must/ be zero. ----- - If @image@ was created with--- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationImageCreateInfoNV'::@dedicatedAllocation@--- equal to @VK_TRUE@, @memory@ /must/ have been created with--- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationMemoryAllocateInfoNV'::@image@+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dedicatedAllocationImageAliasing dedicated allocation image aliasing>+-- feature is enabled, and the+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' provided when+-- @memory@ was allocated included a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'+-- structure in its @pNext@ chain, and+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::'Graphics.Vulkan.Core10.Handles.Image'+-- was not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', then+-- @memoryOffset@ /must/ be zero, and+-- 'Graphics.Vulkan.Core10.Handles.Image' /must/ be either equal to+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::'Graphics.Vulkan.Core10.Handles.Image'+-- or an image that was created using the same parameters in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo', with the exception+-- that @extent@ and @arrayLayers@ /may/ differ subject to the+-- following restrictions: every dimension in the @extent@ parameter of+-- the image being bound /must/ be equal to or smaller than the+-- original image for which the allocation was created; and the+-- @arrayLayers@ parameter of the image being bound /must/ be equal to+-- or smaller than the original image for which the allocation was+-- created.+--+-- - If image was created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_PROTECTED_BIT'+-- bit set, the image /must/ be bound to a memory object allocated with+-- a memory type that reports+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT'+--+-- - If image was created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_PROTECTED_BIT'+-- bit not set, the image /must/ not be bound to a memory object+-- created with a memory type that reports+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_PROTECTED_BIT'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationImageCreateInfoNV'::@dedicatedAllocation@+-- equal to 'Graphics.Vulkan.Core10.BaseType.TRUE', @memory@ /must/+-- have been created with+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV'::'Graphics.Vulkan.Core10.Handles.Image' -- equal to an image handle created with identical creation parameters--- to @image@ and @memoryOffset@ /must/ be zero+-- to 'Graphics.Vulkan.Core10.Handles.Image' and @memoryOffset@ /must/+-- be zero --+-- - If the value of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'::@handleTypes@+-- used to allocate @memory@ is not @0@, it /must/ include at least one+-- of the handles set in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@+-- when 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- - If @memory@ was created by a memory import operation, the external+-- handle type of the imported memory /must/ also have been set in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@+-- when 'Graphics.Vulkan.Core10.Handles.Image' was created+-- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - @image@ /must/ be a valid @VkImage@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Image' handle ----- - @memory@ /must/ be a valid @VkDeviceMemory@ handle+-- - @memory@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' handle ----- - @image@ /must/ have been created, allocated, or retrieved from--- @device@+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ have been created,+-- allocated, or retrieved from 'Graphics.Vulkan.Core10.Handles.Device' -- -- - @memory@ /must/ have been created, allocated, or retrieved from--- @device@+-- 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization ----- - Host access to @image@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Image' /must/ be+-- externally synchronized -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory', @VkDeviceSize@,--- 'VkImage'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkBindImageMemory" vkBindImageMemory :: ("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Handles.Image'+bindImageMemory :: Device -> Image -> DeviceMemory -> ("memoryOffset" ::: DeviceSize) -> IO ()+bindImageMemory device image memory memoryOffset = do+ let vkBindImageMemory' = mkVkBindImageMemory (pVkBindImageMemory (deviceCmds (device :: Device)))+ r <- vkBindImageMemory' (deviceHandle (device)) (image) (memory) (memoryOffset)+ when (r < SUCCESS) (throwIO (VulkanException r))++ -- | VkMemoryRequirements - Structure specifying memory requirements -- -- = See Also ----- @VkDeviceSize@,--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.VkMemoryRequirements2',--- 'vkGetBufferMemoryRequirements', 'vkGetImageMemoryRequirements'-data VkMemoryRequirements = VkMemoryRequirements+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2',+-- 'getBufferMemoryRequirements', 'getImageMemoryRequirements'+data MemoryRequirements = MemoryRequirements { -- | @size@ is the size, in bytes, of the memory allocation /required/ for- -- the resource.- vkSize :: VkDeviceSize+ -- the resource.+ size :: DeviceSize , -- | @alignment@ is the alignment, in bytes, of the offset within the- -- allocation /required/ for the resource.- vkAlignment :: VkDeviceSize+ -- allocation /required/ for the resource.+ alignment :: DeviceSize , -- | @memoryTypeBits@ is a bitmask and contains one bit set for every- -- supported memory type for the resource. Bit @i@ is set if and only if- -- the memory type @i@ in the @VkPhysicalDeviceMemoryProperties@ structure- -- for the physical device is supported for the resource.- vkMemoryTypeBits :: Word32+ -- supported memory type for the resource. Bit @i@ is set if and only if+ -- the memory type @i@ in the+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties'+ -- structure for the physical device is supported for the resource.+ memoryTypeBits :: Word32 }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show MemoryRequirements -instance Storable VkMemoryRequirements where+instance ToCStruct MemoryRequirements where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p MemoryRequirements{..} f = do+ poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (size)+ poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (alignment)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (memoryTypeBits)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ f++instance FromCStruct MemoryRequirements where+ peekCStruct p = do+ size <- peek @DeviceSize ((p `plusPtr` 0 :: Ptr DeviceSize))+ alignment <- peek @DeviceSize ((p `plusPtr` 8 :: Ptr DeviceSize))+ memoryTypeBits <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pure $ MemoryRequirements+ size alignment memoryTypeBits++instance Storable MemoryRequirements where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkMemoryRequirements <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSize (poked :: VkMemoryRequirements))- *> poke (ptr `plusPtr` 8) (vkAlignment (poked :: VkMemoryRequirements))- *> poke (ptr `plusPtr` 16) (vkMemoryTypeBits (poked :: VkMemoryRequirements))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MemoryRequirements where+ zero = MemoryRequirements+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core10/MemoryManagement.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.MemoryManagement (MemoryRequirements) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data MemoryRequirements++instance ToCStruct MemoryRequirements+instance Show MemoryRequirements++instance FromCStruct MemoryRequirements+
+ src/Graphics/Vulkan/Core10/OtherTypes.hs view
@@ -0,0 +1,987 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.OtherTypes ( MemoryBarrier(..)+ , BufferMemoryBarrier(..)+ , ImageMemoryBarrier(..)+ , DrawIndirectCommand(..)+ , DrawIndexedIndirectCommand(..)+ , DispatchIndirectCommand(..)+ , BaseOutStructure(..)+ , BaseInStructure(..)+ , ObjectType(..)+ , VendorId(..)+ ) where++import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Data.Int (Int32)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Image)+import Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout)+import Graphics.Vulkan.Core10.SharedTypes (ImageSubresourceRange)+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_sample_locations (SampleLocationsInfoEXT)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_BARRIER))+import Graphics.Vulkan.CStruct.Extends (BaseInStructure(..))+import Graphics.Vulkan.CStruct.Extends (BaseOutStructure(..))+import Graphics.Vulkan.Core10.Enums.ObjectType (ObjectType(..))+import Graphics.Vulkan.Core10.Enums.VendorId (VendorId(..))+-- | VkMemoryBarrier - Structure specifying a global memory barrier+--+-- = Description+--+-- The first+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>+-- is limited to access types in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks source access mask>+-- specified by @srcAccessMask@.+--+-- The second+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>+-- is limited to access types in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks destination access mask>+-- specified by @dstAccessMask@.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.AccessFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdPipelineBarrier',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents'+data MemoryBarrier = MemoryBarrier+ { -- | @srcAccessMask@ /must/ be a valid combination of+ -- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' values+ srcAccessMask :: AccessFlags+ , -- | @dstAccessMask@ /must/ be a valid combination of+ -- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' values+ dstAccessMask :: AccessFlags+ }+ deriving (Typeable)+deriving instance Show MemoryBarrier++instance ToCStruct MemoryBarrier where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p MemoryBarrier{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_BARRIER)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr AccessFlags)) (srcAccessMask)+ poke ((p `plusPtr` 20 :: Ptr AccessFlags)) (dstAccessMask)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_BARRIER)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct MemoryBarrier where+ peekCStruct p = do+ srcAccessMask <- peek @AccessFlags ((p `plusPtr` 16 :: Ptr AccessFlags))+ dstAccessMask <- peek @AccessFlags ((p `plusPtr` 20 :: Ptr AccessFlags))+ pure $ MemoryBarrier+ srcAccessMask dstAccessMask++instance Storable MemoryBarrier where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MemoryBarrier where+ zero = MemoryBarrier+ zero+ zero+++-- | VkBufferMemoryBarrier - Structure specifying a buffer memory barrier+--+-- = Description+--+-- The first+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>+-- is limited to access to memory through the specified buffer range, via+-- access types in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks source access mask>+-- specified by @srcAccessMask@. If @srcAccessMask@ includes+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_WRITE_BIT',+-- memory writes performed by that access type are also made visible, as+-- that access type is not performed through a resource.+--+-- The second+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>+-- is limited to access to memory through the specified buffer range, via+-- access types in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks destination access mask>.+-- specified by @dstAccessMask@. If @dstAccessMask@ includes+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_WRITE_BIT' or+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_READ_BIT',+-- available memory writes are also made visible to accesses of those+-- types, as those access types are not performed through a resource.+--+-- If @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, and+-- @srcQueueFamilyIndex@ is equal to the current queue family, then the+-- memory barrier defines a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-release queue family release operation>+-- for the specified buffer range, and the second access scope includes no+-- access, as if @dstAccessMask@ was @0@.+--+-- If @dstQueueFamilyIndex@ is not equal to @srcQueueFamilyIndex@, and+-- @dstQueueFamilyIndex@ is equal to the current queue family, then the+-- memory barrier defines a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquire queue family acquire operation>+-- for the specified buffer range, and the first access scope includes no+-- access, as if @srcAccessMask@ was @0@.+--+-- == Valid Usage+--+-- - @offset@ /must/ be less than the size of+-- 'Graphics.Vulkan.Core10.Handles.Buffer'+--+-- - If @size@ is not equal to+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be+-- greater than @0@+--+-- - If @size@ is not equal to+-- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be+-- less than or equal to than the size of+-- 'Graphics.Vulkan.Core10.Handles.Buffer' minus @offset@+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' was created with a+-- sharing mode of+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',+-- at least one of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@+-- /must/ be 'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' was created with a+-- sharing mode of+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',+-- and one of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ is+-- 'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', the+-- other /must/ be+-- 'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED' or a+-- special queue family reserved for external memory ownership+-- transfers, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers>.+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' was created with a+-- sharing mode of+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE'+-- and @srcQueueFamilyIndex@ is+-- 'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED',+-- @dstQueueFamilyIndex@ /must/ also be+-- 'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' was created with a+-- sharing mode of+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE'+-- and @srcQueueFamilyIndex@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', it+-- /must/ be a valid queue family or a special queue family reserved+-- for external memory transfers, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers>.+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' was created with a+-- sharing mode of+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE'+-- and @dstQueueFamilyIndex@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', it+-- /must/ be a valid queue family or a special queue family reserved+-- for external memory transfers, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers>.+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' was created with a+-- sharing mode of+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE',+-- and @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not+-- 'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', at least+-- one of them /must/ be the same as the family of the queue that will+-- execute this barrier+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is non-sparse then it+-- /must/ be bound completely and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER'+--+-- - @pNext@ /must/ be @NULL@+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.AccessFlags',+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdPipelineBarrier',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents'+data BufferMemoryBarrier = BufferMemoryBarrier+ { -- | @srcAccessMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying+ -- a+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks source access mask>.+ srcAccessMask :: AccessFlags+ , -- | @dstAccessMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying+ -- a+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks destination access mask>.+ dstAccessMask :: AccessFlags+ , -- | @srcQueueFamilyIndex@ is the source queue family for a+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.+ srcQueueFamilyIndex :: Word32+ , -- | @dstQueueFamilyIndex@ is the destination queue family for a+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.+ dstQueueFamilyIndex :: Word32+ , -- | 'Graphics.Vulkan.Core10.Handles.Buffer' is a handle to the buffer whose+ -- backing memory is affected by the barrier.+ buffer :: Buffer+ , -- | @offset@ is an offset in bytes into the backing memory for+ -- 'Graphics.Vulkan.Core10.Handles.Buffer'; this is relative to the base+ -- offset as bound to the buffer (see+ -- 'Graphics.Vulkan.Core10.MemoryManagement.bindBufferMemory').+ offset :: DeviceSize+ , -- | @size@ is a size in bytes of the affected area of backing memory for+ -- 'Graphics.Vulkan.Core10.Handles.Buffer', or+ -- 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE' to use the range from+ -- @offset@ to the end of the buffer.+ size :: DeviceSize+ }+ deriving (Typeable)+deriving instance Show BufferMemoryBarrier++instance ToCStruct BufferMemoryBarrier where+ withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p BufferMemoryBarrier{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr AccessFlags)) (srcAccessMask)+ poke ((p `plusPtr` 20 :: Ptr AccessFlags)) (dstAccessMask)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (srcQueueFamilyIndex)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (dstQueueFamilyIndex)+ poke ((p `plusPtr` 32 :: Ptr Buffer)) (buffer)+ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (offset)+ poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (size)+ f+ cStructSize = 56+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr AccessFlags)) (zero)+ poke ((p `plusPtr` 20 :: Ptr AccessFlags)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 32 :: Ptr Buffer)) (zero)+ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (zero)+ f++instance FromCStruct BufferMemoryBarrier where+ peekCStruct p = do+ srcAccessMask <- peek @AccessFlags ((p `plusPtr` 16 :: Ptr AccessFlags))+ dstAccessMask <- peek @AccessFlags ((p `plusPtr` 20 :: Ptr AccessFlags))+ srcQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ dstQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+ buffer <- peek @Buffer ((p `plusPtr` 32 :: Ptr Buffer))+ offset <- peek @DeviceSize ((p `plusPtr` 40 :: Ptr DeviceSize))+ size <- peek @DeviceSize ((p `plusPtr` 48 :: Ptr DeviceSize))+ pure $ BufferMemoryBarrier+ srcAccessMask dstAccessMask srcQueueFamilyIndex dstQueueFamilyIndex buffer offset size++instance Storable BufferMemoryBarrier where+ sizeOf ~_ = 56+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero BufferMemoryBarrier where+ zero = BufferMemoryBarrier+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkImageMemoryBarrier - Structure specifying the parameters of an image+-- memory barrier+--+-- = Description+--+-- The first+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>+-- is limited to access to memory through the specified image subresource+-- range, via access types in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks source access mask>+-- specified by @srcAccessMask@. If @srcAccessMask@ includes+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_WRITE_BIT',+-- memory writes performed by that access type are also made visible, as+-- that access type is not performed through a resource.+--+-- The second+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>+-- is limited to access to memory through the specified image subresource+-- range, via access types in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks destination access mask>+-- specified by @dstAccessMask@. If @dstAccessMask@ includes+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_WRITE_BIT' or+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_READ_BIT',+-- available memory writes are also made visible to accesses of those+-- types, as those access types are not performed through a resource.+--+-- If @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, and+-- @srcQueueFamilyIndex@ is equal to the current queue family, then the+-- memory barrier defines a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-release queue family release operation>+-- for the specified image subresource range, and the second access scope+-- includes no access, as if @dstAccessMask@ was @0@.+--+-- If @dstQueueFamilyIndex@ is not equal to @srcQueueFamilyIndex@, and+-- @dstQueueFamilyIndex@ is equal to the current queue family, then the+-- memory barrier defines a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquire queue family acquire operation>+-- for the specified image subresource range, and the first access scope+-- includes no access, as if @srcAccessMask@ was @0@.+--+-- If @oldLayout@ is not equal to @newLayout@, then the memory barrier+-- defines an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>+-- for the specified image subresource range.+--+-- Layout transitions that are performed via image memory barriers execute+-- in their entirety in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>,+-- relative to other image layout transitions submitted to the same queue,+-- including those performed by+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass render passes>.+-- In effect there is an implicit execution dependency from each such+-- layout transition to all layout transitions previously submitted to the+-- same queue.+--+-- The image layout of each image subresource of a depth\/stencil image+-- created with+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+-- is dependent on the last sample locations used to render to the image+-- subresource as a depth\/stencil attachment, thus when the+-- 'Graphics.Vulkan.Core10.Handles.Image' member of a 'ImageMemoryBarrier'+-- is an image created with this flag the application /can/ include a+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT'+-- structure in the @pNext@ chain of 'ImageMemoryBarrier' to specify the+-- sample locations to use during the image layout transition.+--+-- If the+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT'+-- structure included in the @pNext@ chain of 'ImageMemoryBarrier' does not+-- match the sample location state last used to render to the image+-- subresource range specified by @subresourceRange@ or if no+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT'+-- structure is included in the @pNext@ chain of 'ImageMemoryBarrier', then+-- the contents of the given image subresource range becomes undefined as+-- if @oldLayout@ would equal+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED'.+--+-- If 'Graphics.Vulkan.Core10.Handles.Image' has a multi-planar format and+-- the image is /disjoint/, then including+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'+-- in the @aspectMask@ member of @subresourceRange@ is equivalent to+-- including+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',+-- and (for three-plane formats only)+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'.+--+-- == Valid Usage+--+-- - @oldLayout@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or+-- the current layout of the image subresources affected by the barrier+--+-- - @newLayout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with a sharing+-- mode of+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',+-- at least one of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@+-- /must/ be 'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with a sharing+-- mode of+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',+-- and one of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ is+-- 'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', the+-- other /must/ be+-- 'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED' or a+-- special queue family reserved for external memory transfers, as+-- described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers>.+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with a sharing+-- mode of+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE'+-- and @srcQueueFamilyIndex@ is+-- 'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED',+-- @dstQueueFamilyIndex@ /must/ also be+-- 'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'.+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with a sharing+-- mode of+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE'+-- and @srcQueueFamilyIndex@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', it+-- /must/ be a valid queue family or a special queue family reserved+-- for external memory transfers, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers>.+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with a sharing+-- mode of+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE'+-- and @dstQueueFamilyIndex@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', it+-- /must/ be a valid queue family or a special queue family reserved+-- for external memory transfers, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers>.+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with a sharing+-- mode of+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE',+-- and @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not+-- 'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', at least+-- one of them /must/ be the same as the family of the queue that will+-- execute this barrier+--+-- - @subresourceRange.baseMipLevel@ /must/ be less than the @mipLevels@+-- specified in 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- - If @subresourceRange.levelCount@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS',+-- @subresourceRange.baseMipLevel@ + @subresourceRange.levelCount@+-- /must/ be less than or equal to the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- - @subresourceRange.baseArrayLayer@ /must/ be less than the+-- @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- - If @subresourceRange.layerCount@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',+-- @subresourceRange.baseArrayLayer@ + @subresourceRange.layerCount@+-- /must/ be less than or equal to the @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' has a depth\/stencil+-- format with both depth and stencil and the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>+-- feature is enabled, then the @aspectMask@ member of+-- @subresourceRange@ /must/ include either or both+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'+-- and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' has a depth\/stencil+-- format with both depth and stencil and the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>+-- feature is not enabled, then the @aspectMask@ member of+-- @subresourceRange@ /must/ include both+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'+-- and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' has a single-plane color+-- format or is not /disjoint/, then the @aspectMask@ member of+-- @subresourceRange@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' has a multi-planar format+-- and the image is /disjoint/, then the @aspectMask@ member of+-- @subresourceRange@ /must/ include either at least one of+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',+-- and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT';+-- or /must/ include+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' has a multi-planar format+-- with only two planes, then the @aspectMask@ member of+-- @subresourceRange@ /must/ not include+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+--+-- - If either @oldLayout@ or @newLayout@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'+-- then 'Graphics.Vulkan.Core10.Handles.Image' /must/ have been created+-- with+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'+-- set+--+-- - If either @oldLayout@ or @newLayout@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL'+-- then 'Graphics.Vulkan.Core10.Handles.Image' /must/ have been created+-- with+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+-- set+--+-- - If either @oldLayout@ or @newLayout@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'+-- then 'Graphics.Vulkan.Core10.Handles.Image' /must/ have been created+-- with+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+-- set+--+-- - If either @oldLayout@ or @newLayout@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'+-- then 'Graphics.Vulkan.Core10.Handles.Image' /must/ have been created+-- with+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+-- set+--+-- - If either @oldLayout@ or @newLayout@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'+-- then 'Graphics.Vulkan.Core10.Handles.Image' /must/ have been created+-- with+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+-- set+--+-- - If either @oldLayout@ or @newLayout@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL'+-- then 'Graphics.Vulkan.Core10.Handles.Image' /must/ have been created+-- with+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'+-- set+--+-- - If either @oldLayout@ or @newLayout@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'+-- then 'Graphics.Vulkan.Core10.Handles.Image' /must/ have been created+-- with+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'+-- set+--+-- - If either @oldLayout@ or @newLayout@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'+-- then 'Graphics.Vulkan.Core10.Handles.Image' /must/ have been created+-- with+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+-- set+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' is non-sparse then it+-- /must/ be bound completely and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - If either @oldLayout@ or @newLayout@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV'+-- then 'Graphics.Vulkan.Core10.Handles.Image' /must/ have been created+-- with+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV'+-- set+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - @oldLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- - @newLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Image' handle+--+-- - @subresourceRange@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange' structure+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.AccessFlags',+-- 'Graphics.Vulkan.Core10.Handles.Image',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout',+-- 'Graphics.Vulkan.Core10.SharedTypes.ImageSubresourceRange',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdPipelineBarrier',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents'+data ImageMemoryBarrier (es :: [Type]) = ImageMemoryBarrier+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | @srcAccessMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying+ -- a+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks source access mask>.+ srcAccessMask :: AccessFlags+ , -- | @dstAccessMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying+ -- a+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks destination access mask>.+ dstAccessMask :: AccessFlags+ , -- | @oldLayout@ is the old layout in an+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>.+ oldLayout :: ImageLayout+ , -- | @newLayout@ is the new layout in an+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>.+ newLayout :: ImageLayout+ , -- | @srcQueueFamilyIndex@ is the source queue family for a+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.+ srcQueueFamilyIndex :: Word32+ , -- | @dstQueueFamilyIndex@ is the destination queue family for a+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.+ dstQueueFamilyIndex :: Word32+ , -- | 'Graphics.Vulkan.Core10.Handles.Image' is a handle to the image affected+ -- by this barrier.+ image :: Image+ , -- | @subresourceRange@ describes the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views image subresource range>+ -- within 'Graphics.Vulkan.Core10.Handles.Image' that is affected by this+ -- barrier.+ subresourceRange :: ImageSubresourceRange+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (ImageMemoryBarrier es)++instance Extensible ImageMemoryBarrier where+ extensibleType = STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER+ setNext x next = x{next = next}+ getNext ImageMemoryBarrier{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends ImageMemoryBarrier e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @SampleLocationsInfoEXT = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (ImageMemoryBarrier es) where+ withCStruct x f = allocaBytesAligned 72 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageMemoryBarrier{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr AccessFlags)) (srcAccessMask)+ lift $ poke ((p `plusPtr` 20 :: Ptr AccessFlags)) (dstAccessMask)+ lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (oldLayout)+ lift $ poke ((p `plusPtr` 28 :: Ptr ImageLayout)) (newLayout)+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (srcQueueFamilyIndex)+ lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (dstQueueFamilyIndex)+ lift $ poke ((p `plusPtr` 40 :: Ptr Image)) (image)+ ContT $ pokeCStruct ((p `plusPtr` 48 :: Ptr ImageSubresourceRange)) (subresourceRange) . ($ ())+ lift $ f+ cStructSize = 72+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 16 :: Ptr AccessFlags)) (zero)+ lift $ poke ((p `plusPtr` 20 :: Ptr AccessFlags)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)+ lift $ poke ((p `plusPtr` 28 :: Ptr ImageLayout)) (zero)+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 40 :: Ptr Image)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 48 :: Ptr ImageSubresourceRange)) (zero) . ($ ())+ lift $ f++instance PeekChain es => FromCStruct (ImageMemoryBarrier es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ srcAccessMask <- peek @AccessFlags ((p `plusPtr` 16 :: Ptr AccessFlags))+ dstAccessMask <- peek @AccessFlags ((p `plusPtr` 20 :: Ptr AccessFlags))+ oldLayout <- peek @ImageLayout ((p `plusPtr` 24 :: Ptr ImageLayout))+ newLayout <- peek @ImageLayout ((p `plusPtr` 28 :: Ptr ImageLayout))+ srcQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ dstQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))+ image <- peek @Image ((p `plusPtr` 40 :: Ptr Image))+ subresourceRange <- peekCStruct @ImageSubresourceRange ((p `plusPtr` 48 :: Ptr ImageSubresourceRange))+ pure $ ImageMemoryBarrier+ next srcAccessMask dstAccessMask oldLayout newLayout srcQueueFamilyIndex dstQueueFamilyIndex image subresourceRange++instance es ~ '[] => Zero (ImageMemoryBarrier es) where+ zero = ImageMemoryBarrier+ ()+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkDrawIndirectCommand - Structure specifying a draw indirect command+--+-- = Description+--+-- The members of 'DrawIndirectCommand' have the same meaning as the+-- similarly named parameters of+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDraw'.+--+-- == Valid Usage+--+-- - For a given vertex buffer binding, any attribute data fetched /must/+-- be entirely contained within the corresponding vertex buffer+-- binding, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input>+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstance drawIndirectFirstInstance>+-- feature is not enabled, @firstInstance@ /must/ be @0@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect'+data DrawIndirectCommand = DrawIndirectCommand+ { -- | @vertexCount@ is the number of vertices to draw.+ vertexCount :: Word32+ , -- | @instanceCount@ is the number of instances to draw.+ instanceCount :: Word32+ , -- | @firstVertex@ is the index of the first vertex to draw.+ firstVertex :: Word32+ , -- | @firstInstance@ is the instance ID of the first instance to draw.+ firstInstance :: Word32+ }+ deriving (Typeable)+deriving instance Show DrawIndirectCommand++instance ToCStruct DrawIndirectCommand where+ withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DrawIndirectCommand{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (vertexCount)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (instanceCount)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (firstVertex)+ poke ((p `plusPtr` 12 :: Ptr Word32)) (firstInstance)+ f+ cStructSize = 16+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)+ f++instance FromCStruct DrawIndirectCommand where+ peekCStruct p = do+ vertexCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ instanceCount <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ firstVertex <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ firstInstance <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))+ pure $ DrawIndirectCommand+ vertexCount instanceCount firstVertex firstInstance++instance Storable DrawIndirectCommand where+ sizeOf ~_ = 16+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DrawIndirectCommand where+ zero = DrawIndirectCommand+ zero+ zero+ zero+ zero+++-- | VkDrawIndexedIndirectCommand - Structure specifying a draw indexed+-- indirect command+--+-- = Description+--+-- The members of 'DrawIndexedIndirectCommand' have the same meaning as the+-- similarly named parameters of+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexed'.+--+-- == Valid Usage+--+-- - For a given vertex buffer binding, any attribute data fetched /must/+-- be entirely contained within the corresponding vertex buffer+-- binding, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input>+--+-- - (@indexSize@ * (@firstIndex@ + @indexCount@) + @offset@) /must/ be+-- less than or equal to the size of the bound index buffer, with+-- @indexSize@ being based on the type specified by+-- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType', where the index+-- buffer, 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType', and+-- @offset@ are specified via+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstance drawIndirectFirstInstance>+-- feature is not enabled, @firstInstance@ /must/ be @0@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect'+data DrawIndexedIndirectCommand = DrawIndexedIndirectCommand+ { -- | @indexCount@ is the number of vertices to draw.+ indexCount :: Word32+ , -- | @instanceCount@ is the number of instances to draw.+ instanceCount :: Word32+ , -- | @firstIndex@ is the base index within the index buffer.+ firstIndex :: Word32+ , -- | @vertexOffset@ is the value added to the vertex index before indexing+ -- into the vertex buffer.+ vertexOffset :: Int32+ , -- | @firstInstance@ is the instance ID of the first instance to draw.+ firstInstance :: Word32+ }+ deriving (Typeable)+deriving instance Show DrawIndexedIndirectCommand++instance ToCStruct DrawIndexedIndirectCommand where+ withCStruct x f = allocaBytesAligned 20 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DrawIndexedIndirectCommand{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (indexCount)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (instanceCount)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (firstIndex)+ poke ((p `plusPtr` 12 :: Ptr Int32)) (vertexOffset)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (firstInstance)+ f+ cStructSize = 20+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 12 :: Ptr Int32)) (zero)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ f++instance FromCStruct DrawIndexedIndirectCommand where+ peekCStruct p = do+ indexCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ instanceCount <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ firstIndex <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ vertexOffset <- peek @Int32 ((p `plusPtr` 12 :: Ptr Int32))+ firstInstance <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pure $ DrawIndexedIndirectCommand+ indexCount instanceCount firstIndex vertexOffset firstInstance++instance Storable DrawIndexedIndirectCommand where+ sizeOf ~_ = 20+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DrawIndexedIndirectCommand where+ zero = DrawIndexedIndirectCommand+ zero+ zero+ zero+ zero+ zero+++-- | VkDispatchIndirectCommand - Structure specifying a dispatch indirect+-- command+--+-- = Description+--+-- The members of 'DispatchIndirectCommand' have the same meaning as the+-- corresponding parameters of+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDispatch'.+--+-- == Valid Usage+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect'+data DispatchIndirectCommand = DispatchIndirectCommand+ { -- | @x@ /must/ be less than or equal to+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]+ x :: Word32+ , -- | @y@ /must/ be less than or equal to+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]+ y :: Word32+ , -- | @z@ /must/ be less than or equal to+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]+ z :: Word32+ }+ deriving (Typeable)+deriving instance Show DispatchIndirectCommand++instance ToCStruct DispatchIndirectCommand where+ withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DispatchIndirectCommand{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (x)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (y)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (z)+ f+ cStructSize = 12+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+ f++instance FromCStruct DispatchIndirectCommand where+ peekCStruct p = do+ x <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ y <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ z <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ pure $ DispatchIndirectCommand+ x y z++instance Storable DispatchIndirectCommand where+ sizeOf ~_ = 12+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DispatchIndirectCommand where+ zero = DispatchIndirectCommand+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core10/OtherTypes.hs-boot view
@@ -0,0 +1,63 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.OtherTypes ( BufferMemoryBarrier+ , DispatchIndirectCommand+ , DrawIndexedIndirectCommand+ , DrawIndirectCommand+ , ImageMemoryBarrier+ , MemoryBarrier+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+data BufferMemoryBarrier++instance ToCStruct BufferMemoryBarrier+instance Show BufferMemoryBarrier++instance FromCStruct BufferMemoryBarrier+++data DispatchIndirectCommand++instance ToCStruct DispatchIndirectCommand+instance Show DispatchIndirectCommand++instance FromCStruct DispatchIndirectCommand+++data DrawIndexedIndirectCommand++instance ToCStruct DrawIndexedIndirectCommand+instance Show DrawIndexedIndirectCommand++instance FromCStruct DrawIndexedIndirectCommand+++data DrawIndirectCommand++instance ToCStruct DrawIndirectCommand+instance Show DrawIndirectCommand++instance FromCStruct DrawIndirectCommand+++type role ImageMemoryBarrier nominal+data ImageMemoryBarrier (es :: [Type])++instance PokeChain es => ToCStruct (ImageMemoryBarrier es)+instance Show (Chain es) => Show (ImageMemoryBarrier es)++instance PeekChain es => FromCStruct (ImageMemoryBarrier es)+++data MemoryBarrier++instance ToCStruct MemoryBarrier+instance Show MemoryBarrier++instance FromCStruct MemoryBarrier+
src/Graphics/Vulkan/Core10/Pass.hs view
@@ -1,2079 +1,2338 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.Pass- ( VkAttachmentLoadOp(..)- , pattern VK_ATTACHMENT_LOAD_OP_LOAD- , pattern VK_ATTACHMENT_LOAD_OP_CLEAR- , pattern VK_ATTACHMENT_LOAD_OP_DONT_CARE- , VkAttachmentStoreOp(..)- , pattern VK_ATTACHMENT_STORE_OP_STORE- , pattern VK_ATTACHMENT_STORE_OP_DONT_CARE- , VkPipelineBindPoint(..)- , pattern VK_PIPELINE_BIND_POINT_GRAPHICS- , pattern VK_PIPELINE_BIND_POINT_COMPUTE- , VkFramebufferCreateFlags(..)- , VkRenderPassCreateFlags(..)- , VkAccessFlagBits(..)- , pattern VK_ACCESS_INDIRECT_COMMAND_READ_BIT- , pattern VK_ACCESS_INDEX_READ_BIT- , pattern VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT- , pattern VK_ACCESS_UNIFORM_READ_BIT- , pattern VK_ACCESS_INPUT_ATTACHMENT_READ_BIT- , pattern VK_ACCESS_SHADER_READ_BIT- , pattern VK_ACCESS_SHADER_WRITE_BIT- , pattern VK_ACCESS_COLOR_ATTACHMENT_READ_BIT- , pattern VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT- , pattern VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT- , pattern VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT- , pattern VK_ACCESS_TRANSFER_READ_BIT- , pattern VK_ACCESS_TRANSFER_WRITE_BIT- , pattern VK_ACCESS_HOST_READ_BIT- , pattern VK_ACCESS_HOST_WRITE_BIT- , pattern VK_ACCESS_MEMORY_READ_BIT- , pattern VK_ACCESS_MEMORY_WRITE_BIT- , VkSubpassDescriptionFlagBits(..)- , VkAttachmentDescriptionFlagBits(..)- , pattern VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT- , VkDependencyFlagBits(..)- , pattern VK_DEPENDENCY_BY_REGION_BIT- , VkFramebuffer- , vkCreateFramebuffer- , vkDestroyFramebuffer- , vkCreateRenderPass- , vkDestroyRenderPass- , vkGetRenderAreaGranularity- , VkAttachmentDescription(..)- , VkAttachmentReference(..)- , VkSubpassDescription(..)- , VkSubpassDependency(..)- , VkRenderPassCreateInfo(..)- , VkFramebufferCreateInfo(..)- , VkAccessFlags- , VkSubpassDescriptionFlags- , VkAttachmentDescriptionFlags- , VkDependencyFlags- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Int- ( Int32- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkFormat(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkSampleCountFlagBits(..)- , VkDevice- )-import Graphics.Vulkan.Core10.Image- ( VkImageLayout(..)- )-import Graphics.Vulkan.Core10.ImageView- ( VkImageView- )-import Graphics.Vulkan.Core10.Pipeline- ( VkExtent2D(..)- , VkRenderPass- )-import Graphics.Vulkan.Core10.Queue- ( VkPipelineStageFlags- )----- ** VkAttachmentLoadOp---- | VkAttachmentLoadOp - Specify how contents of an attachment are treated--- at the beginning of a subpass------ = See Also------ 'VkAttachmentDescription'-newtype VkAttachmentLoadOp = VkAttachmentLoadOp Int32- deriving (Eq, Ord, Storable)--instance Show VkAttachmentLoadOp where- showsPrec _ VK_ATTACHMENT_LOAD_OP_LOAD = showString "VK_ATTACHMENT_LOAD_OP_LOAD"- showsPrec _ VK_ATTACHMENT_LOAD_OP_CLEAR = showString "VK_ATTACHMENT_LOAD_OP_CLEAR"- showsPrec _ VK_ATTACHMENT_LOAD_OP_DONT_CARE = showString "VK_ATTACHMENT_LOAD_OP_DONT_CARE"- showsPrec p (VkAttachmentLoadOp x) = showParen (p >= 11) (showString "VkAttachmentLoadOp " . showsPrec 11 x)--instance Read VkAttachmentLoadOp where- readPrec = parens ( choose [ ("VK_ATTACHMENT_LOAD_OP_LOAD", pure VK_ATTACHMENT_LOAD_OP_LOAD)- , ("VK_ATTACHMENT_LOAD_OP_CLEAR", pure VK_ATTACHMENT_LOAD_OP_CLEAR)- , ("VK_ATTACHMENT_LOAD_OP_DONT_CARE", pure VK_ATTACHMENT_LOAD_OP_DONT_CARE)- ] +++- prec 10 (do- expectP (Ident "VkAttachmentLoadOp")- v <- step readPrec- pure (VkAttachmentLoadOp v)- )- )---- | @VK_ATTACHMENT_LOAD_OP_LOAD@ specifies that the previous contents of the--- image within the render area will be preserved. For attachments with a--- depth\/stencil format, this uses the access type--- @VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT@. For attachments with a--- color format, this uses the access type--- @VK_ACCESS_COLOR_ATTACHMENT_READ_BIT@.-pattern VK_ATTACHMENT_LOAD_OP_LOAD :: VkAttachmentLoadOp-pattern VK_ATTACHMENT_LOAD_OP_LOAD = VkAttachmentLoadOp 0---- | @VK_ATTACHMENT_LOAD_OP_CLEAR@ specifies that the contents within the--- render area will be cleared to a uniform value, which is specified when--- a render pass instance is begun. For attachments with a depth\/stencil--- format, this uses the access type--- @VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT@. For attachments with a--- color format, this uses the access type--- @VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT@.-pattern VK_ATTACHMENT_LOAD_OP_CLEAR :: VkAttachmentLoadOp-pattern VK_ATTACHMENT_LOAD_OP_CLEAR = VkAttachmentLoadOp 1---- | @VK_ATTACHMENT_LOAD_OP_DONT_CARE@ specifies that the previous contents--- within the area need not be preserved; the contents of the attachment--- will be undefined inside the render area. For attachments with a--- depth\/stencil format, this uses the access type--- @VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT@. For attachments with a--- color format, this uses the access type--- @VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT@.-pattern VK_ATTACHMENT_LOAD_OP_DONT_CARE :: VkAttachmentLoadOp-pattern VK_ATTACHMENT_LOAD_OP_DONT_CARE = VkAttachmentLoadOp 2--- ** VkAttachmentStoreOp---- | VkAttachmentStoreOp - Specify how contents of an attachment are treated--- at the end of a subpass------ = See Also------ 'VkAttachmentDescription'-newtype VkAttachmentStoreOp = VkAttachmentStoreOp Int32- deriving (Eq, Ord, Storable)--instance Show VkAttachmentStoreOp where- showsPrec _ VK_ATTACHMENT_STORE_OP_STORE = showString "VK_ATTACHMENT_STORE_OP_STORE"- showsPrec _ VK_ATTACHMENT_STORE_OP_DONT_CARE = showString "VK_ATTACHMENT_STORE_OP_DONT_CARE"- showsPrec p (VkAttachmentStoreOp x) = showParen (p >= 11) (showString "VkAttachmentStoreOp " . showsPrec 11 x)--instance Read VkAttachmentStoreOp where- readPrec = parens ( choose [ ("VK_ATTACHMENT_STORE_OP_STORE", pure VK_ATTACHMENT_STORE_OP_STORE)- , ("VK_ATTACHMENT_STORE_OP_DONT_CARE", pure VK_ATTACHMENT_STORE_OP_DONT_CARE)- ] +++- prec 10 (do- expectP (Ident "VkAttachmentStoreOp")- v <- step readPrec- pure (VkAttachmentStoreOp v)- )- )---- | @VK_ATTACHMENT_STORE_OP_STORE@ specifies the contents generated during--- the render pass and within the render area are written to memory. For--- attachments with a depth\/stencil format, this uses the access type--- @VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT@. For attachments with a--- color format, this uses the access type--- @VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT@.-pattern VK_ATTACHMENT_STORE_OP_STORE :: VkAttachmentStoreOp-pattern VK_ATTACHMENT_STORE_OP_STORE = VkAttachmentStoreOp 0---- | @VK_ATTACHMENT_STORE_OP_DONT_CARE@ specifies the contents within the--- render area are not needed after rendering, and /may/ be discarded; the--- contents of the attachment will be undefined inside the render area. For--- attachments with a depth\/stencil format, this uses the access type--- @VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT@. For attachments with a--- color format, this uses the access type--- @VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT@.-pattern VK_ATTACHMENT_STORE_OP_DONT_CARE :: VkAttachmentStoreOp-pattern VK_ATTACHMENT_STORE_OP_DONT_CARE = VkAttachmentStoreOp 1--- ** VkPipelineBindPoint---- | VkPipelineBindPoint - Specify the bind point of a pipeline object to a--- command buffer------ = See Also------ 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.VkDescriptorUpdateTemplateCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkIndirectCommandsLayoutCreateInfoNVX',--- 'VkSubpassDescription',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindDescriptorSets',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindPipeline',--- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.vkCmdPushDescriptorSetKHR'-newtype VkPipelineBindPoint = VkPipelineBindPoint Int32- deriving (Eq, Ord, Storable)--instance Show VkPipelineBindPoint where- showsPrec _ VK_PIPELINE_BIND_POINT_GRAPHICS = showString "VK_PIPELINE_BIND_POINT_GRAPHICS"- showsPrec _ VK_PIPELINE_BIND_POINT_COMPUTE = showString "VK_PIPELINE_BIND_POINT_COMPUTE"- showsPrec p (VkPipelineBindPoint x) = showParen (p >= 11) (showString "VkPipelineBindPoint " . showsPrec 11 x)--instance Read VkPipelineBindPoint where- readPrec = parens ( choose [ ("VK_PIPELINE_BIND_POINT_GRAPHICS", pure VK_PIPELINE_BIND_POINT_GRAPHICS)- , ("VK_PIPELINE_BIND_POINT_COMPUTE", pure VK_PIPELINE_BIND_POINT_COMPUTE)- ] +++- prec 10 (do- expectP (Ident "VkPipelineBindPoint")- v <- step readPrec- pure (VkPipelineBindPoint v)- )- )---- | @VK_PIPELINE_BIND_POINT_GRAPHICS@ specifies binding as a graphics--- pipeline.-pattern VK_PIPELINE_BIND_POINT_GRAPHICS :: VkPipelineBindPoint-pattern VK_PIPELINE_BIND_POINT_GRAPHICS = VkPipelineBindPoint 0---- | @VK_PIPELINE_BIND_POINT_COMPUTE@ specifies binding as a compute--- pipeline.-pattern VK_PIPELINE_BIND_POINT_COMPUTE :: VkPipelineBindPoint-pattern VK_PIPELINE_BIND_POINT_COMPUTE = VkPipelineBindPoint 1--- ** VkFramebufferCreateFlags---- | VkFramebufferCreateFlags - Reserved for future use------ = Description------ @VkFramebufferCreateFlags@ is a bitmask type for setting a mask, but is--- currently reserved for future use.------ = See Also------ 'VkFramebufferCreateInfo'-newtype VkFramebufferCreateFlags = VkFramebufferCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkFramebufferCreateFlags where- - showsPrec p (VkFramebufferCreateFlags x) = showParen (p >= 11) (showString "VkFramebufferCreateFlags " . showsPrec 11 x)--instance Read VkFramebufferCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkFramebufferCreateFlags")- v <- step readPrec- pure (VkFramebufferCreateFlags v)- )- )----- ** VkRenderPassCreateFlags---- | VkRenderPassCreateFlags - Reserved for future use------ = Description------ @VkRenderPassCreateFlags@ is a bitmask type for setting a mask, but is--- currently reserved for future use.------ = See Also------ 'VkRenderPassCreateInfo'-newtype VkRenderPassCreateFlags = VkRenderPassCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkRenderPassCreateFlags where- - showsPrec p (VkRenderPassCreateFlags x) = showParen (p >= 11) (showString "VkRenderPassCreateFlags " . showsPrec 11 x)--instance Read VkRenderPassCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkRenderPassCreateFlags")- v <- step readPrec- pure (VkRenderPassCreateFlags v)- )- )----- ** VkAccessFlagBits---- | VkAccessFlagBits - Bitmask specifying memory access types that will--- participate in a memory dependency------ = Description------ - @VK_ACCESS_INDIRECT_COMMAND_READ_BIT@ specifies read access to an--- indirect command structure read as part of an indirect drawing or--- dispatch command.------ - @VK_ACCESS_INDEX_READ_BIT@ specifies read access to an index buffer--- as part of an indexed drawing command, bound by--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindIndexBuffer'.------ - @VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT@ specifies read access to a--- vertex buffer as part of a drawing command, bound by--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindVertexBuffers'.------ - @VK_ACCESS_UNIFORM_READ_BIT@ specifies read access to a [uniform--- buffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformbuffer).------ - @VK_ACCESS_INPUT_ATTACHMENT_READ_BIT@ specifies read access to an--- [input--- attachment](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass)--- within a render pass during fragment shading.------ - @VK_ACCESS_SHADER_READ_BIT@ specifies read access to a [storage--- buffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagebuffer),--- [uniform texel--- buffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer),--- [storage texel--- buffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer),--- [sampled--- image](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-sampledimage),--- or [storage--- image](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storageimage).------ - @VK_ACCESS_SHADER_WRITE_BIT@ specifies write access to a [storage--- buffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagebuffer),--- [storage texel--- buffer](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer),--- or [storage--- image](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-storageimage).------ - @VK_ACCESS_COLOR_ATTACHMENT_READ_BIT@ specifies read access to a--- [color--- attachment](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass),--- such as via--- [blending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blending),--- [logic--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-logicop),--- or via certain [subpass load--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-load-store-ops).--- It does not include [advanced blend--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blend-advanced).------ - @VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT@ is similar to--- @VK_ACCESS_COLOR_ATTACHMENT_READ_BIT@, but also includes [advanced--- blend--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blend-advanced).------ - @VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT@ specifies write access to a--- [color or resolve--- attachment](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass)--- during a [render--- pass](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass)--- or via certain [subpass load and store--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-load-store-ops).------ - @VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT@ specifies read access--- to a [depth\/stencil--- attachment](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass),--- via [depth or stencil--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-ds-state)--- or via certain [subpass load--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-load-store-ops).------ - @VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT@ specifies write--- access to a [depth\/stencil--- attachment](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass),--- via [depth or stencil--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-ds-state)--- or via certain [subpass load and store--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-load-store-ops).------ - @VK_ACCESS_TRANSFER_READ_BIT@ specifies read access to an image or--- buffer in a--- [copy](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#copies)--- operation.------ - @VK_ACCESS_TRANSFER_WRITE_BIT@ specifies write access to an image or--- buffer in a--- [clear](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#clears)--- or--- [copy](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#copies)--- operation.------ - @VK_ACCESS_HOST_READ_BIT@ specifies read access by a host operation.--- Accesses of this type are not performed through a resource, but--- directly on memory.------ - @VK_ACCESS_HOST_WRITE_BIT@ specifies write access by a host--- operation. Accesses of this type are not performed through a--- resource, but directly on memory.------ - @VK_ACCESS_MEMORY_READ_BIT@ specifies read access via non-specific--- entities. These entities include the Vulkan device and host, but--- /may/ also include entities external to the Vulkan device or--- otherwise not part of the core Vulkan pipeline. When included in a--- destination access mask, makes all available writes visible to all--- future read accesses on entities known to the Vulkan device.------ - @VK_ACCESS_MEMORY_WRITE_BIT@ specifies write access via non-specific--- entities. These entities include the Vulkan device and host, but--- /may/ also include entities external to the Vulkan device or--- otherwise not part of the core Vulkan pipeline. When included in a--- source access mask, all writes that are performed by entities known--- to the Vulkan device are made available. When included in a--- destination access mask, makes all available writes visible to all--- future write accesses on entities known to the Vulkan device.------ - @VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX@ specifies reads from--- @VkBuffer@ inputs to--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCmdProcessCommandsNVX'.------ - @VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX@ specifies writes to the--- target command buffer in--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCmdProcessCommandsNVX'.------ Certain access types are only performed by a subset of pipeline stages.--- Any synchronization command that takes both stage masks and access masks--- uses both to define the [access--- scopes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)--- - only the specified access types performed by the specified stages are--- included in the access scope. An application /must/ not specify an--- access flag in a synchronization command if it does not include a--- pipeline stage in the corresponding stage mask that is able to perform--- accesses of that type. The following table lists, for each access flag,--- which pipeline stages /can/ perform that type of access.------ +-------------------------------------------------------+---------------------------------------------------------+--- | Access flag | Supported pipeline stages |--- +=======================================================+=========================================================+--- | @VK_ACCESS_INDIRECT_COMMAND_READ_BIT@ | @VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT@ |--- +-------------------------------------------------------+---------------------------------------------------------+--- | @VK_ACCESS_INDEX_READ_BIT@ | @VK_PIPELINE_STAGE_VERTEX_INPUT_BIT@ |--- +-------------------------------------------------------+---------------------------------------------------------+--- | @VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT@ | @VK_PIPELINE_STAGE_VERTEX_INPUT_BIT@ |--- +-------------------------------------------------------+---------------------------------------------------------+--- | @VK_ACCESS_UNIFORM_READ_BIT@ | @VK_PIPELINE_STAGE_VERTEX_SHADER_BIT@, |--- | | @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@, |--- | | @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@, |--- | | @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@, |--- | | @VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT@, or |--- | | @VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT@ |--- +-------------------------------------------------------+---------------------------------------------------------+--- | @VK_ACCESS_INPUT_ATTACHMENT_READ_BIT@ | @VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT@ |--- +-------------------------------------------------------+---------------------------------------------------------+--- | @VK_ACCESS_SHADER_READ_BIT@ | @VK_PIPELINE_STAGE_VERTEX_SHADER_BIT@, |--- | | @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@, |--- | | @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@, |--- | | @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@, |--- | | @VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT@, or |--- | | @VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT@ |--- +-------------------------------------------------------+---------------------------------------------------------+--- | @VK_ACCESS_SHADER_WRITE_BIT@ | @VK_PIPELINE_STAGE_VERTEX_SHADER_BIT@, |--- | | @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@, |--- | | @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@, |--- | | @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@, |--- | | @VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT@, or |--- | | @VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT@ |--- +-------------------------------------------------------+---------------------------------------------------------+--- | @VK_ACCESS_COLOR_ATTACHMENT_READ_BIT@ | @VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT@ |--- +-------------------------------------------------------+---------------------------------------------------------+--- | @VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT@ | @VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT@ |--- +-------------------------------------------------------+---------------------------------------------------------+--- | @VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT@ | @VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT@ |--- +-------------------------------------------------------+---------------------------------------------------------+--- | @VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT@ | @VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT@, or |--- | | @VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT@ |--- +-------------------------------------------------------+---------------------------------------------------------+--- | @VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT@ | @VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT@, or |--- | | @VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT@ |--- +-------------------------------------------------------+---------------------------------------------------------+--- | @VK_ACCESS_TRANSFER_READ_BIT@ | @VK_PIPELINE_STAGE_TRANSFER_BIT@ |--- +-------------------------------------------------------+---------------------------------------------------------+--- | @VK_ACCESS_TRANSFER_WRITE_BIT@ | @VK_PIPELINE_STAGE_TRANSFER_BIT@ |--- +-------------------------------------------------------+---------------------------------------------------------+--- | @VK_ACCESS_HOST_READ_BIT@ | @VK_PIPELINE_STAGE_HOST_BIT@ |--- +-------------------------------------------------------+---------------------------------------------------------+--- | @VK_ACCESS_HOST_WRITE_BIT@ | @VK_PIPELINE_STAGE_HOST_BIT@ |--- +-------------------------------------------------------+---------------------------------------------------------+--- | @VK_ACCESS_MEMORY_READ_BIT@ | N\/A |--- +-------------------------------------------------------+---------------------------------------------------------+--- | @VK_ACCESS_MEMORY_WRITE_BIT@ | N\/A |--- +-------------------------------------------------------+---------------------------------------------------------+--- | @VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX@ | @VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX@ |--- +-------------------------------------------------------+---------------------------------------------------------+--- | @VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX@ | @VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX@ |--- +-------------------------------------------------------+---------------------------------------------------------+------ Supported access types------ If a memory object does not have the--- @VK_MEMORY_PROPERTY_HOST_COHERENT_BIT@ property, then--- 'Graphics.Vulkan.Core10.Memory.vkFlushMappedMemoryRanges' /must/ be--- called in order to guarantee that writes to the memory object from the--- host are made visible to the @VK_ACCESS_HOST_WRITE_BIT@ [access--- type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types),--- where it /can/ be further made available to the device by--- [synchronization--- commands](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization).--- Similarly,--- 'Graphics.Vulkan.Core10.Memory.vkInvalidateMappedMemoryRanges' /must/ be--- called to guarantee that writes which are visible to the--- @VK_ACCESS_HOST_READ_BIT@ [access--- type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types)--- are made visible to host operations.------ If the memory object does have the--- @VK_MEMORY_PROPERTY_HOST_COHERENT_BIT@ property flag, writes to the--- memory object from the host are automatically made visible to the--- @VK_ACCESS_HOST_WRITE_BIT@ [access--- type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types).--- Similarly, writes made visible to the @VK_ACCESS_HOST_READ_BIT@ [access--- type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types)--- are automatically made visible to the host.------ __Note__------ The 'Graphics.Vulkan.Core10.Queue.vkQueueSubmit' command [automatically--- guarantees that host writes flushed to @VK_ACCESS_HOST_WRITE_BIT@ are--- made--- available](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-host-writes)--- if they were flushed before the command executed, so in most cases an--- explicit memory barrier is not needed for this case. In the few--- circumstances where a submit does not occur between the host write and--- the device read access, writes /can/ be made available by using an--- explicit memory barrier.------ = See Also------ 'VkAccessFlags'-newtype VkAccessFlagBits = VkAccessFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkAccessFlagBits where- showsPrec _ VK_ACCESS_INDIRECT_COMMAND_READ_BIT = showString "VK_ACCESS_INDIRECT_COMMAND_READ_BIT"- showsPrec _ VK_ACCESS_INDEX_READ_BIT = showString "VK_ACCESS_INDEX_READ_BIT"- showsPrec _ VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = showString "VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"- showsPrec _ VK_ACCESS_UNIFORM_READ_BIT = showString "VK_ACCESS_UNIFORM_READ_BIT"- showsPrec _ VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = showString "VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"- showsPrec _ VK_ACCESS_SHADER_READ_BIT = showString "VK_ACCESS_SHADER_READ_BIT"- showsPrec _ VK_ACCESS_SHADER_WRITE_BIT = showString "VK_ACCESS_SHADER_WRITE_BIT"- showsPrec _ VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = showString "VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"- showsPrec _ VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = showString "VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"- showsPrec _ VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = showString "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"- showsPrec _ VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = showString "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"- showsPrec _ VK_ACCESS_TRANSFER_READ_BIT = showString "VK_ACCESS_TRANSFER_READ_BIT"- showsPrec _ VK_ACCESS_TRANSFER_WRITE_BIT = showString "VK_ACCESS_TRANSFER_WRITE_BIT"- showsPrec _ VK_ACCESS_HOST_READ_BIT = showString "VK_ACCESS_HOST_READ_BIT"- showsPrec _ VK_ACCESS_HOST_WRITE_BIT = showString "VK_ACCESS_HOST_WRITE_BIT"- showsPrec _ VK_ACCESS_MEMORY_READ_BIT = showString "VK_ACCESS_MEMORY_READ_BIT"- showsPrec _ VK_ACCESS_MEMORY_WRITE_BIT = showString "VK_ACCESS_MEMORY_WRITE_BIT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkAccessFlagBits 0x00020000) = showString "VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX"- showsPrec _ (VkAccessFlagBits 0x00040000) = showString "VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX"- showsPrec _ (VkAccessFlagBits 0x00080000) = showString "VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"- showsPrec p (VkAccessFlagBits x) = showParen (p >= 11) (showString "VkAccessFlagBits " . showsPrec 11 x)--instance Read VkAccessFlagBits where- readPrec = parens ( choose [ ("VK_ACCESS_INDIRECT_COMMAND_READ_BIT", pure VK_ACCESS_INDIRECT_COMMAND_READ_BIT)- , ("VK_ACCESS_INDEX_READ_BIT", pure VK_ACCESS_INDEX_READ_BIT)- , ("VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT", pure VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT)- , ("VK_ACCESS_UNIFORM_READ_BIT", pure VK_ACCESS_UNIFORM_READ_BIT)- , ("VK_ACCESS_INPUT_ATTACHMENT_READ_BIT", pure VK_ACCESS_INPUT_ATTACHMENT_READ_BIT)- , ("VK_ACCESS_SHADER_READ_BIT", pure VK_ACCESS_SHADER_READ_BIT)- , ("VK_ACCESS_SHADER_WRITE_BIT", pure VK_ACCESS_SHADER_WRITE_BIT)- , ("VK_ACCESS_COLOR_ATTACHMENT_READ_BIT", pure VK_ACCESS_COLOR_ATTACHMENT_READ_BIT)- , ("VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT", pure VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT)- , ("VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT", pure VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT)- , ("VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT", pure VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT)- , ("VK_ACCESS_TRANSFER_READ_BIT", pure VK_ACCESS_TRANSFER_READ_BIT)- , ("VK_ACCESS_TRANSFER_WRITE_BIT", pure VK_ACCESS_TRANSFER_WRITE_BIT)- , ("VK_ACCESS_HOST_READ_BIT", pure VK_ACCESS_HOST_READ_BIT)- , ("VK_ACCESS_HOST_WRITE_BIT", pure VK_ACCESS_HOST_WRITE_BIT)- , ("VK_ACCESS_MEMORY_READ_BIT", pure VK_ACCESS_MEMORY_READ_BIT)- , ("VK_ACCESS_MEMORY_WRITE_BIT", pure VK_ACCESS_MEMORY_WRITE_BIT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX", pure (VkAccessFlagBits 0x00020000))- , ("VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX", pure (VkAccessFlagBits 0x00040000))- , ("VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT", pure (VkAccessFlagBits 0x00080000))- ] +++- prec 10 (do- expectP (Ident "VkAccessFlagBits")- v <- step readPrec- pure (VkAccessFlagBits v)- )- )---- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_INDIRECT_COMMAND_READ_BIT"-pattern VK_ACCESS_INDIRECT_COMMAND_READ_BIT :: VkAccessFlagBits-pattern VK_ACCESS_INDIRECT_COMMAND_READ_BIT = VkAccessFlagBits 0x00000001---- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_INDEX_READ_BIT"-pattern VK_ACCESS_INDEX_READ_BIT :: VkAccessFlagBits-pattern VK_ACCESS_INDEX_READ_BIT = VkAccessFlagBits 0x00000002---- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"-pattern VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT :: VkAccessFlagBits-pattern VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = VkAccessFlagBits 0x00000004---- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_UNIFORM_READ_BIT"-pattern VK_ACCESS_UNIFORM_READ_BIT :: VkAccessFlagBits-pattern VK_ACCESS_UNIFORM_READ_BIT = VkAccessFlagBits 0x00000008---- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"-pattern VK_ACCESS_INPUT_ATTACHMENT_READ_BIT :: VkAccessFlagBits-pattern VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = VkAccessFlagBits 0x00000010---- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_SHADER_READ_BIT"-pattern VK_ACCESS_SHADER_READ_BIT :: VkAccessFlagBits-pattern VK_ACCESS_SHADER_READ_BIT = VkAccessFlagBits 0x00000020---- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_SHADER_WRITE_BIT"-pattern VK_ACCESS_SHADER_WRITE_BIT :: VkAccessFlagBits-pattern VK_ACCESS_SHADER_WRITE_BIT = VkAccessFlagBits 0x00000040---- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"-pattern VK_ACCESS_COLOR_ATTACHMENT_READ_BIT :: VkAccessFlagBits-pattern VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = VkAccessFlagBits 0x00000080---- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"-pattern VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT :: VkAccessFlagBits-pattern VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = VkAccessFlagBits 0x00000100---- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"-pattern VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT :: VkAccessFlagBits-pattern VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = VkAccessFlagBits 0x00000200---- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"-pattern VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT :: VkAccessFlagBits-pattern VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = VkAccessFlagBits 0x00000400---- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_TRANSFER_READ_BIT"-pattern VK_ACCESS_TRANSFER_READ_BIT :: VkAccessFlagBits-pattern VK_ACCESS_TRANSFER_READ_BIT = VkAccessFlagBits 0x00000800---- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_TRANSFER_WRITE_BIT"-pattern VK_ACCESS_TRANSFER_WRITE_BIT :: VkAccessFlagBits-pattern VK_ACCESS_TRANSFER_WRITE_BIT = VkAccessFlagBits 0x00001000---- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_HOST_READ_BIT"-pattern VK_ACCESS_HOST_READ_BIT :: VkAccessFlagBits-pattern VK_ACCESS_HOST_READ_BIT = VkAccessFlagBits 0x00002000---- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_HOST_WRITE_BIT"-pattern VK_ACCESS_HOST_WRITE_BIT :: VkAccessFlagBits-pattern VK_ACCESS_HOST_WRITE_BIT = VkAccessFlagBits 0x00004000---- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_MEMORY_READ_BIT"-pattern VK_ACCESS_MEMORY_READ_BIT :: VkAccessFlagBits-pattern VK_ACCESS_MEMORY_READ_BIT = VkAccessFlagBits 0x00008000---- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_MEMORY_WRITE_BIT"-pattern VK_ACCESS_MEMORY_WRITE_BIT :: VkAccessFlagBits-pattern VK_ACCESS_MEMORY_WRITE_BIT = VkAccessFlagBits 0x00010000--- ** VkSubpassDescriptionFlagBits---- | VkSubpassDescriptionFlagBits - Bitmask specifying usage of a subpass------ = See Also------ 'VkSubpassDescriptionFlags'-newtype VkSubpassDescriptionFlagBits = VkSubpassDescriptionFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkSubpassDescriptionFlagBits where- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkSubpassDescriptionFlagBits 0x00000001) = showString "VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX"- showsPrec _ (VkSubpassDescriptionFlagBits 0x00000002) = showString "VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX"- showsPrec p (VkSubpassDescriptionFlagBits x) = showParen (p >= 11) (showString "VkSubpassDescriptionFlagBits " . showsPrec 11 x)--instance Read VkSubpassDescriptionFlagBits where- readPrec = parens ( choose [ -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX", pure (VkSubpassDescriptionFlagBits 0x00000001))- , ("VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX", pure (VkSubpassDescriptionFlagBits 0x00000002))- ] +++- prec 10 (do- expectP (Ident "VkSubpassDescriptionFlagBits")- v <- step readPrec- pure (VkSubpassDescriptionFlagBits v)- )- )----- ** VkAttachmentDescriptionFlagBits---- | VkAttachmentDescriptionFlagBits - Bitmask specifying additional--- properties of an attachment------ = See Also------ 'VkAttachmentDescriptionFlags'-newtype VkAttachmentDescriptionFlagBits = VkAttachmentDescriptionFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkAttachmentDescriptionFlagBits where- showsPrec _ VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = showString "VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"- showsPrec p (VkAttachmentDescriptionFlagBits x) = showParen (p >= 11) (showString "VkAttachmentDescriptionFlagBits " . showsPrec 11 x)--instance Read VkAttachmentDescriptionFlagBits where- readPrec = parens ( choose [ ("VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT", pure VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT)- ] +++- prec 10 (do- expectP (Ident "VkAttachmentDescriptionFlagBits")- v <- step readPrec- pure (VkAttachmentDescriptionFlagBits v)- )- )---- | @VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT@ specifies that the attachment--- aliases the same device memory as other attachments.-pattern VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT :: VkAttachmentDescriptionFlagBits-pattern VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = VkAttachmentDescriptionFlagBits 0x00000001--- ** VkDependencyFlagBits---- | VkDependencyFlagBits - Bitmask specifying how execution and memory--- dependencies are formed------ = See Also------ 'VkDependencyFlags'-newtype VkDependencyFlagBits = VkDependencyFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkDependencyFlagBits where- showsPrec _ VK_DEPENDENCY_BY_REGION_BIT = showString "VK_DEPENDENCY_BY_REGION_BIT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkDependencyFlagBits 0x00000004) = showString "VK_DEPENDENCY_DEVICE_GROUP_BIT"- showsPrec _ (VkDependencyFlagBits 0x00000002) = showString "VK_DEPENDENCY_VIEW_LOCAL_BIT"- showsPrec p (VkDependencyFlagBits x) = showParen (p >= 11) (showString "VkDependencyFlagBits " . showsPrec 11 x)--instance Read VkDependencyFlagBits where- readPrec = parens ( choose [ ("VK_DEPENDENCY_BY_REGION_BIT", pure VK_DEPENDENCY_BY_REGION_BIT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_DEPENDENCY_DEVICE_GROUP_BIT", pure (VkDependencyFlagBits 0x00000004))- , ("VK_DEPENDENCY_VIEW_LOCAL_BIT", pure (VkDependencyFlagBits 0x00000002))- ] +++- prec 10 (do- expectP (Ident "VkDependencyFlagBits")- v <- step readPrec- pure (VkDependencyFlagBits v)- )- )---- | @VK_DEPENDENCY_BY_REGION_BIT@ specifies that dependencies will be--- [framebuffer-local](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-framebuffer-regions).-pattern VK_DEPENDENCY_BY_REGION_BIT :: VkDependencyFlagBits-pattern VK_DEPENDENCY_BY_REGION_BIT = VkDependencyFlagBits 0x00000001--- | Dummy data to tag the 'Ptr' with-data VkFramebuffer_T--- | VkFramebuffer - Opaque handle to a framebuffer object------ = See Also------ 'Graphics.Vulkan.Core10.CommandBuffer.VkCommandBufferInheritanceInfo',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo',--- 'vkCreateFramebuffer', 'vkDestroyFramebuffer'-type VkFramebuffer = Ptr VkFramebuffer_T--- | vkCreateFramebuffer - Create a new framebuffer object------ = Parameters------ - @device@ is the logical device that creates the framebuffer.------ - @pCreateInfo@ points to a 'VkFramebufferCreateInfo' structure which--- describes additional information about framebuffer creation.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ - @pFramebuffer@ points to a @VkFramebuffer@ handle in which the--- resulting framebuffer object is returned.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkFramebufferCreateInfo@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pFramebuffer@ /must/ be a valid pointer to a @VkFramebuffer@ handle------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkFramebuffer',--- 'VkFramebufferCreateInfo'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateFramebuffer" vkCreateFramebuffer :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFramebufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFramebuffer" ::: Ptr VkFramebuffer) -> IO VkResult--- | vkDestroyFramebuffer - Destroy a framebuffer object------ = Parameters------ - @device@ is the logical device that destroys the framebuffer.------ - @framebuffer@ is the handle of the framebuffer to destroy.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ == Valid Usage------ - All submitted commands that refer to @framebuffer@ /must/ have--- completed execution------ - If @VkAllocationCallbacks@ were provided when @framebuffer@ was--- created, a compatible set of callbacks /must/ be provided here------ - If no @VkAllocationCallbacks@ were provided when @framebuffer@ was--- created, @pAllocator@ /must/ be @NULL@------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - If @framebuffer@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @framebuffer@--- /must/ be a valid @VkFramebuffer@ handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - If @framebuffer@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@------ == Host Synchronization------ - Host access to @framebuffer@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkFramebuffer'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroyFramebuffer" vkDestroyFramebuffer :: ("device" ::: VkDevice) -> ("framebuffer" ::: VkFramebuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | vkCreateRenderPass - Create a new render pass object------ = Parameters------ - @device@ is the logical device that creates the render pass.------ - @pCreateInfo@ is a pointer to an instance of the--- 'VkRenderPassCreateInfo' structure that describes the parameters of--- the render pass.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ - @pRenderPass@ points to a @VkRenderPass@ handle in which the--- resulting render pass object is returned.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkRenderPassCreateInfo@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pRenderPass@ /must/ be a valid pointer to a @VkRenderPass@ handle------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.Pipeline.VkRenderPass', 'VkRenderPassCreateInfo'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateRenderPass" vkCreateRenderPass :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkRenderPassCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pRenderPass" ::: Ptr VkRenderPass) -> IO VkResult--- | vkDestroyRenderPass - Destroy a render pass object------ = Parameters------ - @device@ is the logical device that destroys the render pass.------ - @renderPass@ is the handle of the render pass to destroy.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ == Valid Usage------ - All submitted commands that refer to @renderPass@ /must/ have--- completed execution------ - If @VkAllocationCallbacks@ were provided when @renderPass@ was--- created, a compatible set of callbacks /must/ be provided here------ - If no @VkAllocationCallbacks@ were provided when @renderPass@ was--- created, @pAllocator@ /must/ be @NULL@------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - If @renderPass@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @renderPass@--- /must/ be a valid @VkRenderPass@ handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - If @renderPass@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@------ == Host Synchronization------ - Host access to @renderPass@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.Pipeline.VkRenderPass'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroyRenderPass" vkDestroyRenderPass :: ("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | vkGetRenderAreaGranularity - Returns the granularity for optimal render--- area------ = Parameters------ - @device@ is the logical device that owns the render pass.------ - @renderPass@ is a handle to a render pass.------ - @pGranularity@ points to a--- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D' structure in which the--- granularity is returned.------ = Description------ The conditions leading to an optimal @renderArea@ are:------ - the @offset.x@ member in @renderArea@ is a multiple of the @width@--- member of the returned 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D'--- (the horizontal granularity).------ - the @offset.y@ member in @renderArea@ is a multiple of the @height@--- of the returned 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D' (the--- vertical granularity).------ - either the @offset.width@ member in @renderArea@ is a multiple of--- the horizontal granularity or @offset.x@+@offset.width@ is equal to--- the @width@ of the @framebuffer@ in the--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo'.------ - either the @offset.height@ member in @renderArea@ is a multiple of--- the vertical granularity or @offset.y@+@offset.height@ is equal to--- the @height@ of the @framebuffer@ in the--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo'.------ Subpass dependencies are not affected by the render area, and apply to--- the entire image subresources attached to the framebuffer as specified--- in the description of [automatic layout--- transitions](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-layout-transitions).--- Similarly, pipeline barriers are valid even if their effect extends--- outside the render area.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @renderPass@ /must/ be a valid @VkRenderPass@ handle------ - @pGranularity@ /must/ be a valid pointer to a @VkExtent2D@ structure------ - @renderPass@ /must/ have been created, allocated, or retrieved from--- @device@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D',--- 'Graphics.Vulkan.Core10.Pipeline.VkRenderPass'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetRenderAreaGranularity" vkGetRenderAreaGranularity :: ("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pGranularity" ::: Ptr VkExtent2D) -> IO ()--- | VkAttachmentDescription - Structure specifying an attachment description------ = Description------ If the attachment uses a color format, then @loadOp@ and @storeOp@ are--- used, and @stencilLoadOp@ and @stencilStoreOp@ are ignored. If the--- format has depth and\/or stencil components, @loadOp@ and @storeOp@--- apply only to the depth data, while @stencilLoadOp@ and @stencilStoreOp@--- define how the stencil data is handled. @loadOp@ and @stencilLoadOp@--- define the /load operations/ that execute as part of the first subpass--- that uses the attachment. @storeOp@ and @stencilStoreOp@ define the--- /store operations/ that execute as part of the last subpass that uses--- the attachment.------ The load operation for each sample in an attachment happens-before any--- recorded command which accesses the sample in the first subpass where--- the attachment is used. Load operations for attachments with a--- depth\/stencil format execute in the--- @VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT@ pipeline stage. Load--- operations for attachments with a color format execute in the--- @VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT@ pipeline stage.------ The store operation for each sample in an attachment happens-after any--- recorded command which accesses the sample in the last subpass where the--- attachment is used. Store operations for attachments with a--- depth\/stencil format execute in the--- @VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT@ pipeline stage. Store--- operations for attachments with a color format execute in the--- @VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT@ pipeline stage.------ If an attachment is not used by any subpass, then @loadOp@, @storeOp@,--- @stencilStoreOp@, and @stencilLoadOp@ are ignored, and the attachment’s--- memory contents will not be modified by execution of a render pass--- instance.------ The load and store operations apply on the first and last use of each--- view in the render pass, respectively. If a view index of an attachment--- is not included in the view mask in any subpass that uses it, then the--- load and store operations are ignored, and the attachment’s memory--- contents will not be modified by execution of a render pass instance.------ During a render pass instance, input\/color attachments with color--- formats that have a component size of 8, 16, or 32 bits /must/ be--- represented in the attachment’s format throughout the instance.--- Attachments with other floating- or fixed-point color formats, or with--- depth components /may/ be represented in a format with a precision--- higher than the attachment format, but /must/ be represented with the--- same range. When such a component is loaded via the @loadOp@, it will be--- converted into an implementation-dependent format used by the render--- pass. Such components /must/ be converted from the render pass format,--- to the format of the attachment, before they are resolved or stored at--- the end of a render pass instance via @storeOp@. Conversions occur as--- described in [Numeric Representation and--- Computation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-numerics)--- and [Fixed-Point Data--- Conversions](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-fixedconv).------ If @flags@ includes @VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT@, then the--- attachment is treated as if it shares physical memory with another--- attachment in the same render pass. This information limits the ability--- of the implementation to reorder certain operations (like layout--- transitions and the @loadOp@) such that it is not improperly reordered--- against other uses of the same physical memory via a different--- attachment. This is described in more detail below.------ == Valid Usage------ - @finalLayout@ /must/ not be @VK_IMAGE_LAYOUT_UNDEFINED@ or--- @VK_IMAGE_LAYOUT_PREINITIALIZED@------ == Valid Usage (Implicit)------ - @flags@ /must/ be a valid combination of--- 'VkAttachmentDescriptionFlagBits' values------ - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'--- value------ - @samples@ /must/ be a valid--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'--- value------ - @loadOp@ /must/ be a valid 'VkAttachmentLoadOp' value------ - @storeOp@ /must/ be a valid 'VkAttachmentStoreOp' value------ - @stencilLoadOp@ /must/ be a valid 'VkAttachmentLoadOp' value------ - @stencilStoreOp@ /must/ be a valid 'VkAttachmentStoreOp' value------ - @initialLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ - @finalLayout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ = See Also------ 'VkAttachmentDescriptionFlags', 'VkAttachmentLoadOp',--- 'VkAttachmentStoreOp', 'Graphics.Vulkan.Core10.Core.VkFormat',--- 'Graphics.Vulkan.Core10.Image.VkImageLayout', 'VkRenderPassCreateInfo',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'-data VkAttachmentDescription = VkAttachmentDescription- { -- | @flags@ is a bitmask of 'VkAttachmentDescriptionFlagBits' specifying- -- additional properties of the attachment.- vkFlags :: VkAttachmentDescriptionFlags- , -- | @format@ is a 'Graphics.Vulkan.Core10.Core.VkFormat' value specifying- -- the format of the image that will be used for the attachment.- vkFormat :: VkFormat- , -- | @samples@ is the number of samples of the image as defined in- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'.- vkSamples :: VkSampleCountFlagBits- , -- | @loadOp@ is a 'VkAttachmentLoadOp' value specifying how the contents of- -- color and depth components of the attachment are treated at the- -- beginning of the subpass where it is first used.- vkLoadOp :: VkAttachmentLoadOp- , -- | @storeOp@ is a 'VkAttachmentStoreOp' value specifying how the contents- -- of color and depth components of the attachment are treated at the end- -- of the subpass where it is last used.- vkStoreOp :: VkAttachmentStoreOp- , -- | @stencilLoadOp@ is a 'VkAttachmentLoadOp' value specifying how the- -- contents of stencil components of the attachment are treated at the- -- beginning of the subpass where it is first used.- vkStencilLoadOp :: VkAttachmentLoadOp- , -- | @stencilStoreOp@ is a 'VkAttachmentStoreOp' value specifying how the- -- contents of stencil components of the attachment are treated at the end- -- of the last subpass where it is used.- vkStencilStoreOp :: VkAttachmentStoreOp- , -- | @initialLayout@ is the layout the attachment image subresource will be- -- in when a render pass instance begins.- vkInitialLayout :: VkImageLayout- , -- | @finalLayout@ is the layout the attachment image subresource will be- -- transitioned to when a render pass instance ends. During a render pass- -- instance, an attachment /can/ use a different layout in each subpass, if- -- desired.- vkFinalLayout :: VkImageLayout- }- deriving (Eq, Show)--instance Storable VkAttachmentDescription where- sizeOf ~_ = 36- alignment ~_ = 4- peek ptr = VkAttachmentDescription <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkFlags (poked :: VkAttachmentDescription))- *> poke (ptr `plusPtr` 4) (vkFormat (poked :: VkAttachmentDescription))- *> poke (ptr `plusPtr` 8) (vkSamples (poked :: VkAttachmentDescription))- *> poke (ptr `plusPtr` 12) (vkLoadOp (poked :: VkAttachmentDescription))- *> poke (ptr `plusPtr` 16) (vkStoreOp (poked :: VkAttachmentDescription))- *> poke (ptr `plusPtr` 20) (vkStencilLoadOp (poked :: VkAttachmentDescription))- *> poke (ptr `plusPtr` 24) (vkStencilStoreOp (poked :: VkAttachmentDescription))- *> poke (ptr `plusPtr` 28) (vkInitialLayout (poked :: VkAttachmentDescription))- *> poke (ptr `plusPtr` 32) (vkFinalLayout (poked :: VkAttachmentDescription))--- | VkAttachmentReference - Structure specifying an attachment reference------ == Valid Usage------ - @layout@ /must/ not be @VK_IMAGE_LAYOUT_UNDEFINED@ or--- @VK_IMAGE_LAYOUT_PREINITIALIZED@------ == Valid Usage (Implicit)------ - @layout@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Image.VkImageLayout' value------ = See Also------ 'Graphics.Vulkan.Core10.Image.VkImageLayout', 'VkSubpassDescription'-data VkAttachmentReference = VkAttachmentReference- { -- | @attachment@ is the index of the attachment of the render pass, and- -- corresponds to the index of the corresponding element in the- -- @pAttachments@ array of the @VkRenderPassCreateInfo@ structure. If any- -- color or depth\/stencil attachments are @VK_ATTACHMENT_UNUSED@, then no- -- writes occur for those attachments.- vkAttachment :: Word32- , -- | @layout@ is a 'Graphics.Vulkan.Core10.Image.VkImageLayout' value- -- specifying the layout the attachment uses during the subpass.- vkLayout :: VkImageLayout- }- deriving (Eq, Show)--instance Storable VkAttachmentReference where- sizeOf ~_ = 8- alignment ~_ = 4- peek ptr = VkAttachmentReference <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- poke ptr poked = poke (ptr `plusPtr` 0) (vkAttachment (poked :: VkAttachmentReference))- *> poke (ptr `plusPtr` 4) (vkLayout (poked :: VkAttachmentReference))--- | VkSubpassDescription - Structure specifying a subpass description------ = Description------ The contents of an attachment within the render area become undefined at--- the start of a subpass __S__ if all of the following conditions are--- true:------ - The attachment is used as a color, depth\/stencil, or resolve--- attachment in any subpass in the render pass.------ - There is a subpass __S1__ that uses or preserves the attachment, and--- a subpass dependency from __S1__ to __S__.------ - The attachment is not used or preserved in subpass __S__.------ Once the contents of an attachment become undefined in subpass __S__,--- they remain undefined for subpasses in subpass dependency chains--- starting with subpass __S__ until they are written again. However, they--- remain valid for subpasses in other subpass dependency chains starting--- with subpass __S1__ if those subpasses use or preserve the attachment.------ == Valid Usage------ - @pipelineBindPoint@ /must/ be @VK_PIPELINE_BIND_POINT_GRAPHICS@------ - @colorAttachmentCount@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxColorAttachments@------ - If the first use of an attachment in this render pass is as an input--- attachment, and the attachment is not also used as a color or--- depth\/stencil attachment in the same subpass, then @loadOp@ /must/--- not be @VK_ATTACHMENT_LOAD_OP_CLEAR@------ - If @pResolveAttachments@ is not @NULL@, for each resolve attachment--- that does not have the value @VK_ATTACHMENT_UNUSED@, the--- corresponding color attachment /must/ not have the value--- @VK_ATTACHMENT_UNUSED@------ - If @pResolveAttachments@ is not @NULL@, the sample count of each--- element of @pColorAttachments@ /must/ be anything other than--- @VK_SAMPLE_COUNT_1_BIT@------ - Each element of @pResolveAttachments@ /must/ have a sample count of--- @VK_SAMPLE_COUNT_1_BIT@------ - Each element of @pResolveAttachments@ /must/ have the same--- 'Graphics.Vulkan.Core10.Core.VkFormat' as its corresponding color--- attachment------ - All attachments in @pColorAttachments@ that are not--- @VK_ATTACHMENT_UNUSED@ /must/ have the same sample count------ - All attachments in @pColorAttachments@ that are not--- @VK_ATTACHMENT_UNUSED@ /must/ have a sample count that is smaller--- than or equal to the sample count of @pDepthStencilAttachment@ if it--- is not @VK_ATTACHMENT_UNUSED@------ - If any input attachments are @VK_ATTACHMENT_UNUSED@, then any--- pipelines bound during the subpass /must/ not access those input--- attachments from the fragment shader------ - The @attachment@ member of each element of @pPreserveAttachments@--- /must/ not be @VK_ATTACHMENT_UNUSED@------ - Each element of @pPreserveAttachments@ /must/ not also be an element--- of any other member of the subpass description------ - If any attachment is used as both an input attachment and a color or--- depth\/stencil attachment, then each use /must/ use the same--- @layout@------ - If @flags@ includes--- @VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX@, it /must/--- also include @VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX@.------ == Valid Usage (Implicit)------ - @flags@ /must/ be a valid combination of--- 'VkSubpassDescriptionFlagBits' values------ - @pipelineBindPoint@ /must/ be a valid 'VkPipelineBindPoint' value------ - If @inputAttachmentCount@ is not @0@, @pInputAttachments@ /must/ be--- a valid pointer to an array of @inputAttachmentCount@ valid--- @VkAttachmentReference@ structures------ - If @colorAttachmentCount@ is not @0@, @pColorAttachments@ /must/ be--- a valid pointer to an array of @colorAttachmentCount@ valid--- @VkAttachmentReference@ structures------ - If @colorAttachmentCount@ is not @0@, and @pResolveAttachments@ is--- not @NULL@, @pResolveAttachments@ /must/ be a valid pointer to an--- array of @colorAttachmentCount@ valid @VkAttachmentReference@--- structures------ - If @pDepthStencilAttachment@ is not @NULL@,--- @pDepthStencilAttachment@ /must/ be a valid pointer to a valid--- @VkAttachmentReference@ structure------ - If @preserveAttachmentCount@ is not @0@, @pPreserveAttachments@--- /must/ be a valid pointer to an array of @preserveAttachmentCount@--- @uint32_t@ values------ = See Also------ 'VkAttachmentReference', 'VkPipelineBindPoint',--- 'VkRenderPassCreateInfo', 'VkSubpassDescriptionFlags'-data VkSubpassDescription = VkSubpassDescription- { -- | @flags@ is a bitmask of 'VkSubpassDescriptionFlagBits' specifying usage- -- of the subpass.- vkFlags :: VkSubpassDescriptionFlags- , -- | @pipelineBindPoint@ is a 'VkPipelineBindPoint' value specifying whether- -- this is a compute or graphics subpass. Currently, only graphics- -- subpasses are supported.- vkPipelineBindPoint :: VkPipelineBindPoint- , -- | @inputAttachmentCount@ is the number of input attachments.- vkInputAttachmentCount :: Word32- , -- | @pInputAttachments@ is an array of 'VkAttachmentReference' structures- -- (defined below) that lists which of the render pass’s attachments /can/- -- be read in the fragment shader stage during the subpass, and what layout- -- each attachment will be in during the subpass. Each element of the array- -- corresponds to an input attachment unit number in the shader, i.e. if- -- the shader declares an input variable- -- @layout(input_attachment_index=X, set=Y, binding=Z)@ then it uses the- -- attachment provided in @pInputAttachments@[X]. Input attachments /must/- -- also be bound to the pipeline with a descriptor set, with the input- -- attachment descriptor written in the location (set=Y, binding=Z).- -- Fragment shaders /can/ use subpass input variables to access the- -- contents of an input attachment at the fragment’s (x, y, layer)- -- framebuffer coordinates.- vkPInputAttachments :: Ptr VkAttachmentReference- , -- | @colorAttachmentCount@ is the number of color attachments.- vkColorAttachmentCount :: Word32- , -- | @pColorAttachments@ is an array of @colorAttachmentCount@- -- 'VkAttachmentReference' structures that lists which of the render pass’s- -- attachments will be used as color attachments in the subpass, and what- -- layout each attachment will be in during the subpass. Each element of- -- the array corresponds to a fragment shader output location, i.e. if the- -- shader declared an output variable @layout(location=X)@ then it uses the- -- attachment provided in @pColorAttachments@[X].- vkPColorAttachments :: Ptr VkAttachmentReference- , -- | @pResolveAttachments@ is @NULL@ or an array of @colorAttachmentCount@- -- 'VkAttachmentReference' structures that lists which of the render pass’s- -- attachments are resolved to at the end of the subpass, and what layout- -- each attachment will be in during the multisample resolve operation. If- -- @pResolveAttachments@ is not @NULL@, each of its elements corresponds to- -- a color attachment (the element in @pColorAttachments@ at the same- -- index), and a multisample resolve operation is defined for each- -- attachment. At the end of each subpass, multisample resolve operations- -- read the subpass’s color attachments, and resolve the samples for each- -- pixel to the same pixel location in the corresponding resolve- -- attachments, unless the resolve attachment index is- -- @VK_ATTACHMENT_UNUSED@. If the first use of an attachment in a render- -- pass is as a resolve attachment, then the @loadOp@ is effectively- -- ignored as the resolve is guaranteed to overwrite all pixels in the- -- render area.- vkPResolveAttachments :: Ptr VkAttachmentReference- , -- | @pDepthStencilAttachment@ is a pointer to a 'VkAttachmentReference'- -- specifying which attachment will be used for depth\/stencil data and the- -- layout it will be in during the subpass. Setting the attachment index to- -- @VK_ATTACHMENT_UNUSED@ or leaving this pointer as @NULL@ indicates that- -- no depth\/stencil attachment will be used in the subpass.- vkPDepthStencilAttachment :: Ptr VkAttachmentReference- , -- | @preserveAttachmentCount@ is the number of preserved attachments.- vkPreserveAttachmentCount :: Word32- , -- | @pPreserveAttachments@ is an array of @preserveAttachmentCount@ render- -- pass attachment indices describing the attachments that are not used by- -- a subpass, but whose contents /must/ be preserved throughout the- -- subpass.- vkPPreserveAttachments :: Ptr Word32- }- deriving (Eq, Show)--instance Storable VkSubpassDescription where- sizeOf ~_ = 72- alignment ~_ = 8- peek ptr = VkSubpassDescription <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 64)- poke ptr poked = poke (ptr `plusPtr` 0) (vkFlags (poked :: VkSubpassDescription))- *> poke (ptr `plusPtr` 4) (vkPipelineBindPoint (poked :: VkSubpassDescription))- *> poke (ptr `plusPtr` 8) (vkInputAttachmentCount (poked :: VkSubpassDescription))- *> poke (ptr `plusPtr` 16) (vkPInputAttachments (poked :: VkSubpassDescription))- *> poke (ptr `plusPtr` 24) (vkColorAttachmentCount (poked :: VkSubpassDescription))- *> poke (ptr `plusPtr` 32) (vkPColorAttachments (poked :: VkSubpassDescription))- *> poke (ptr `plusPtr` 40) (vkPResolveAttachments (poked :: VkSubpassDescription))- *> poke (ptr `plusPtr` 48) (vkPDepthStencilAttachment (poked :: VkSubpassDescription))- *> poke (ptr `plusPtr` 56) (vkPreserveAttachmentCount (poked :: VkSubpassDescription))- *> poke (ptr `plusPtr` 64) (vkPPreserveAttachments (poked :: VkSubpassDescription))--- | VkSubpassDependency - Structure specifying a subpass dependency------ = Description------ If @srcSubpass@ is equal to @dstSubpass@ then the 'VkSubpassDependency'--- describes a [subpass--- self-dependency](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependencies),--- and only constrains the pipeline barriers allowed within a subpass--- instance. Otherwise, when a render pass instance which includes a--- subpass dependency is submitted to a queue, it defines a memory--- dependency between the subpasses identified by @srcSubpass@ and--- @dstSubpass@.------ If @srcSubpass@ is equal to @VK_SUBPASS_EXTERNAL@, the first--- [synchronization--- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-scopes)--- includes commands that occur earlier in [submission--- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order)--- than the--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBeginRenderPass' used--- to begin the render pass instance. Otherwise, the first set of commands--- includes all commands submitted as part of the subpass instance--- identified by @srcSubpass@ and any load, store or multisample resolve--- operations on attachments used in @srcSubpass@. In either case, the--- first synchronization scope is limited to operations on the pipeline--- stages determined by the [source stage--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)--- specified by @srcStageMask@.------ If @dstSubpass@ is equal to @VK_SUBPASS_EXTERNAL@, the second--- [synchronization--- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-scopes)--- includes commands that occur later in [submission--- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order)--- than the--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdEndRenderPass' used--- to end the render pass instance. Otherwise, the second set of commands--- includes all commands submitted as part of the subpass instance--- identified by @dstSubpass@ and any load, store or multisample resolve--- operations on attachments used in @dstSubpass@. In either case, the--- second synchronization scope is limited to operations on the pipeline--- stages determined by the [destination stage--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)--- specified by @dstStageMask@.------ The first [access--- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)--- is limited to access in the pipeline stages determined by the [source--- stage--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)--- specified by @srcStageMask@. It is also limited to access types in the--- [source access--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks)--- specified by @srcAccessMask@.------ The second [access--- scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-access-scopes)--- is limited to access in the pipeline stages determined by the--- [destination stage--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)--- specified by @dstStageMask@. It is also limited to access types in the--- [destination access--- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks)--- specified by @dstAccessMask@.------ The [availability and visibility--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible)--- defined by a subpass dependency affect the execution of [image layout--- transitions](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-layout-transitions)--- within the render pass.------ __Note__------ For non-attachment resources, the memory dependency expressed by subpass--- dependency is nearly identical to that of a--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkMemoryBarrier' (with--- matching @srcAccessMask@\/@dstAccessMask@ parameters) submitted as a--- part of a--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdPipelineBarrier'--- (with matching @srcStageMask@\/@dstStageMask@ parameters). The only--- difference being that its scopes are limited to the identified subpasses--- rather than potentially affecting everything before and after.------ For attachments however, subpass dependencies work more like an--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkImageMemoryBarrier'--- defined similarly to the--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkMemoryBarrier' above,--- the queue family indices set to @VK_QUEUE_FAMILY_IGNORED@, and layouts--- as follows:------ - The equivalent to @oldLayout@ is the attachment’s layout according--- to the subpass description for @srcSubpass@.------ - The equivalent to @newLayout@ is the attachment’s layout according--- to the subpass description for @dstSubpass@.------ == Valid Usage------ - If @srcSubpass@ is not @VK_SUBPASS_EXTERNAL@, @srcStageMask@ /must/--- not include @VK_PIPELINE_STAGE_HOST_BIT@------ - If @dstSubpass@ is not @VK_SUBPASS_EXTERNAL@, @dstStageMask@ /must/--- not include @VK_PIPELINE_STAGE_HOST_BIT@------ - If the [geometry--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)--- feature is not enabled, @srcStageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@------ - If the [geometry--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)--- feature is not enabled, @dstStageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@------ - If the [tessellation--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)--- feature is not enabled, @srcStageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or--- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@------ - If the [tessellation--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)--- feature is not enabled, @dstStageMask@ /must/ not contain--- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or--- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@------ - @srcSubpass@ /must/ be less than or equal to @dstSubpass@, unless--- one of them is @VK_SUBPASS_EXTERNAL@, to avoid cyclic dependencies--- and ensure a valid execution order------ - @srcSubpass@ and @dstSubpass@ /must/ not both be equal to--- @VK_SUBPASS_EXTERNAL@------ - If @srcSubpass@ is equal to @dstSubpass@, @srcStageMask@ and--- @dstStageMask@ /must/ only contain one of--- @VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT@,--- @VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT@,--- @VK_PIPELINE_STAGE_VERTEX_INPUT_BIT@,--- @VK_PIPELINE_STAGE_VERTEX_SHADER_BIT@,--- @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@,--- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@,--- @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@,--- @VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT@,--- @VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT@,--- @VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT@,--- @VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT@,--- @VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT@, or--- @VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT@------ - If @srcSubpass@ is equal to @dstSubpass@ and not all of the stages--- in @srcStageMask@ and @dstStageMask@ are [framebuffer-space--- stages](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-framebuffer-regions),--- the [logically--- latest](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-order)--- pipeline stage in @srcStageMask@ /must/ be [logically--- earlier](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-order)--- than or equal to the [logically--- earliest](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-order)--- pipeline stage in @dstStageMask@------ - Any access flag included in @srcAccessMask@ /must/ be supported by--- one of the pipeline stages in @srcStageMask@, as specified in the--- [table of supported access--- types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types-supported).------ - Any access flag included in @dstAccessMask@ /must/ be supported by--- one of the pipeline stages in @dstStageMask@, as specified in the--- [table of supported access--- types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-types-supported).------ - If @dependencyFlags@ includes @VK_DEPENDENCY_VIEW_LOCAL_BIT@, then--- both @srcSubpass@ and @dstSubpass@ /must/ not equal--- @VK_SUBPASS_EXTERNAL@------ - If @dependencyFlags@ includes @VK_DEPENDENCY_VIEW_LOCAL_BIT@, then--- the render pass /must/ have multiview enabled------ - If @srcSubpass@ equals @dstSubpass@ and that subpass has more than--- one bit set in the view mask, then @dependencyFlags@ /must/ include--- @VK_DEPENDENCY_VIEW_LOCAL_BIT@------ == Valid Usage (Implicit)------ - @srcStageMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' values------ - @srcStageMask@ /must/ not be @0@------ - @dstStageMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' values------ - @dstStageMask@ /must/ not be @0@------ - @srcAccessMask@ /must/ be a valid combination of 'VkAccessFlagBits'--- values------ - @dstAccessMask@ /must/ be a valid combination of 'VkAccessFlagBits'--- values------ - @dependencyFlags@ /must/ be a valid combination of--- 'VkDependencyFlagBits' values------ = See Also------ 'VkAccessFlags', 'VkDependencyFlags',--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlags',--- 'VkRenderPassCreateInfo'-data VkSubpassDependency = VkSubpassDependency- { -- | @srcSubpass@ is the subpass index of the first subpass in the- -- dependency, or @VK_SUBPASS_EXTERNAL@.- vkSrcSubpass :: Word32- , -- | @dstSubpass@ is the subpass index of the second subpass in the- -- dependency, or @VK_SUBPASS_EXTERNAL@.- vkDstSubpass :: Word32- , -- | @srcStageMask@ is a bitmask of- -- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' specifying the- -- [source stage- -- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks).- vkSrcStageMask :: VkPipelineStageFlags- , -- | @dstStageMask@ is a bitmask of- -- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' specifying the- -- [destination stage- -- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-masks)- vkDstStageMask :: VkPipelineStageFlags- , -- | @srcAccessMask@ is a bitmask of 'VkAccessFlagBits' specifying a [source- -- access- -- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks).- vkSrcAccessMask :: VkAccessFlags- , -- | @dstAccessMask@ is a bitmask of 'VkAccessFlagBits' specifying a- -- [destination access- -- mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-access-masks).- vkDstAccessMask :: VkAccessFlags- , -- | @dependencyFlags@ is a bitmask of 'VkDependencyFlagBits'.- vkDependencyFlags :: VkDependencyFlags- }- deriving (Eq, Show)--instance Storable VkSubpassDependency where- sizeOf ~_ = 28- alignment ~_ = 4- peek ptr = VkSubpassDependency <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSrcSubpass (poked :: VkSubpassDependency))- *> poke (ptr `plusPtr` 4) (vkDstSubpass (poked :: VkSubpassDependency))- *> poke (ptr `plusPtr` 8) (vkSrcStageMask (poked :: VkSubpassDependency))- *> poke (ptr `plusPtr` 12) (vkDstStageMask (poked :: VkSubpassDependency))- *> poke (ptr `plusPtr` 16) (vkSrcAccessMask (poked :: VkSubpassDependency))- *> poke (ptr `plusPtr` 20) (vkDstAccessMask (poked :: VkSubpassDependency))- *> poke (ptr `plusPtr` 24) (vkDependencyFlags (poked :: VkSubpassDependency))--- | VkRenderPassCreateInfo - Structure specifying parameters of a newly--- created render pass------ == Valid Usage------ - If any two subpasses operate on attachments with overlapping ranges--- of the same @VkDeviceMemory@ object, and at least one subpass writes--- to that area of @VkDeviceMemory@, a subpass dependency /must/ be--- included (either directly or via some intermediate subpasses)--- between them------ - If the @attachment@ member of any element of @pInputAttachments@,--- @pColorAttachments@, @pResolveAttachments@ or--- @pDepthStencilAttachment@, or the attachment indexed by any element--- of @pPreserveAttachments@ in any element of @pSubpasses@ is bound to--- a range of a @VkDeviceMemory@ object that overlaps with any other--- attachment in any subpass (including the same subpass), the--- @VkAttachmentDescription@ structures describing them /must/ include--- @VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT@ in @flags@------ - If the @attachment@ member of any element of @pInputAttachments@,--- @pColorAttachments@, @pResolveAttachments@ or--- @pDepthStencilAttachment@, or any element of @pPreserveAttachments@--- in any element of @pSubpasses@ is not @VK_ATTACHMENT_UNUSED@, it--- /must/ be less than @attachmentCount@------ - The value of each element of the @pPreserveAttachments@ member in--- each element of @pSubpasses@ /must/ not be @VK_ATTACHMENT_UNUSED@------ - For any member of @pAttachments@ with a @loadOp@ equal to--- @VK_ATTACHMENT_LOAD_OP_CLEAR@, the first use of that attachment--- /must/ not specify a @layout@ equal to--- @VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL@ or--- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL@.------ - For any member of @pAttachments@ with a @loadOp@ equal to--- @VK_ATTACHMENT_LOAD_OP_CLEAR@, the first use of that attachment--- /must/ not specify a @layout@ equal to--- @VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL@.------ - For any member of @pAttachments@ with a @stencilLoadOp@ equal to--- @VK_ATTACHMENT_LOAD_OP_CLEAR@, the first use of that attachment--- /must/ not specify a @layout@ equal to--- @VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL@.------ - For any element of @pDependencies@, if the @srcSubpass@ is not--- @VK_SUBPASS_EXTERNAL@, all stage flags included in the--- @srcStageMask@ member of that dependency /must/ be a pipeline stage--- supported by the--- [pipeline](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types)--- identified by the @pipelineBindPoint@ member of the source subpass.------ - For any element of @pDependencies@, if the @dstSubpass@ is not--- @VK_SUBPASS_EXTERNAL@, all stage flags included in the--- @dstStageMask@ member of that dependency /must/ be a pipeline stage--- supported by the--- [pipeline](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types)--- identified by the @pipelineBindPoint@ member of the source subpass.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkRenderPassInputAttachmentAspectCreateInfo'--- or--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview.VkRenderPassMultiviewCreateInfo'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ - @flags@ /must/ be @0@------ - If @attachmentCount@ is not @0@, @pAttachments@ /must/ be a valid--- pointer to an array of @attachmentCount@ valid--- @VkAttachmentDescription@ structures------ - @pSubpasses@ /must/ be a valid pointer to an array of @subpassCount@--- valid @VkSubpassDescription@ structures------ - If @dependencyCount@ is not @0@, @pDependencies@ /must/ be a valid--- pointer to an array of @dependencyCount@ valid @VkSubpassDependency@--- structures------ - @subpassCount@ /must/ be greater than @0@------ = See Also------ 'VkAttachmentDescription', 'VkRenderPassCreateFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkSubpassDependency',--- 'VkSubpassDescription', 'vkCreateRenderPass'-data VkRenderPassCreateInfo = VkRenderPassCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkRenderPassCreateFlags- , -- | @attachmentCount@ is the number of attachments used by this render pass,- -- or zero indicating no attachments. Attachments are referred to by- -- zero-based indices in the range [0,@attachmentCount@).- vkAttachmentCount :: Word32- , -- | @pAttachments@ points to an array of @attachmentCount@ number of- -- 'VkAttachmentDescription' structures describing properties of the- -- attachments, or @NULL@ if @attachmentCount@ is zero.- vkPAttachments :: Ptr VkAttachmentDescription- , -- | @subpassCount@ is the number of subpasses to create for this render- -- pass. Subpasses are referred to by zero-based indices in the range- -- [0,@subpassCount@). A render pass /must/ have at least one subpass.- vkSubpassCount :: Word32- , -- | @pSubpasses@ points to an array of @subpassCount@ number of- -- 'VkSubpassDescription' structures describing properties of the- -- subpasses.- vkPSubpasses :: Ptr VkSubpassDescription- , -- | @dependencyCount@ is the number of dependencies between pairs of- -- subpasses, or zero indicating no dependencies.- vkDependencyCount :: Word32- , -- | @pDependencies@ points to an array of @dependencyCount@ number of- -- 'VkSubpassDependency' structures describing dependencies between pairs- -- of subpasses, or @NULL@ if @dependencyCount@ is zero.- vkPDependencies :: Ptr VkSubpassDependency- }- deriving (Eq, Show)--instance Storable VkRenderPassCreateInfo where- sizeOf ~_ = 64- alignment ~_ = 8- peek ptr = VkRenderPassCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkRenderPassCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkRenderPassCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkRenderPassCreateInfo))- *> poke (ptr `plusPtr` 20) (vkAttachmentCount (poked :: VkRenderPassCreateInfo))- *> poke (ptr `plusPtr` 24) (vkPAttachments (poked :: VkRenderPassCreateInfo))- *> poke (ptr `plusPtr` 32) (vkSubpassCount (poked :: VkRenderPassCreateInfo))- *> poke (ptr `plusPtr` 40) (vkPSubpasses (poked :: VkRenderPassCreateInfo))- *> poke (ptr `plusPtr` 48) (vkDependencyCount (poked :: VkRenderPassCreateInfo))- *> poke (ptr `plusPtr` 56) (vkPDependencies (poked :: VkRenderPassCreateInfo))--- | VkFramebufferCreateInfo - Structure specifying parameters of a newly--- created framebuffer------ = Description------ Applications /must/ ensure that all accesses to memory that backs image--- subresources used as attachments in a given renderpass instance either--- happen-before the [load--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-load-store-ops)--- for those attachments, or happen-after the [store--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-load-store-ops)--- for those attachments.------ For depth\/stencil attachments, each aspect /can/ be used separately as--- attachments and non-attachments as long as the non-attachment accesses--- are also via an image subresource in either the--- @VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL@ layout or--- the @VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL@ layout,--- and the attachment resource uses whichever of those two layouts the--- image accesses do not. Use of non-attachment aspects in this case is--- only well defined if the attachment is used in the subpass where the--- non-attachment access is being made, or the layout of the image--- subresource is constant throughout the entire render pass instance,--- including the @initialLayout@ and @finalLayout@.------ __Note__------ These restrictions mean that the render pass has full knowledge of all--- uses of all of the attachments, so that the implementation is able to--- make correct decisions about when and how to perform layout transitions,--- when to overlap execution of subpasses, etc.------ It is legal for a subpass to use no color or depth\/stencil attachments,--- and rather use shader side effects such as image stores and atomics to--- produce an output. In this case, the subpass continues to use the--- @width@, @height@, and @layers@ of the framebuffer to define the--- dimensions of the rendering area, and the @rasterizationSamples@ from--- each pipeline’s--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineMultisampleStateCreateInfo'--- to define the number of samples used in rasterization; however, if--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceFeatures'::@variableMultisampleRate@--- is @VK_FALSE@, then all pipelines to be bound with a given--- zero-attachment subpass /must/ have the same value for--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineMultisampleStateCreateInfo'::@rasterizationSamples@.------ == Valid Usage------ - @attachmentCount@ /must/ be equal to the attachment count specified--- in @renderPass@------ - Each element of @pAttachments@ that is used as a color attachment or--- resolve attachment by @renderPass@ /must/ have been created with a--- @usage@ value including @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@------ - Each element of @pAttachments@ that is used as a depth\/stencil--- attachment by @renderPass@ /must/ have been created with a @usage@--- value including @VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT@------ - Each element of @pAttachments@ that is used as an input attachment--- by @renderPass@ /must/ have been created with a @usage@ value--- including @VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT@------ - Each element of @pAttachments@ /must/ have been created with an--- 'Graphics.Vulkan.Core10.Core.VkFormat' value that matches the--- 'Graphics.Vulkan.Core10.Core.VkFormat' specified by the--- corresponding @VkAttachmentDescription@ in @renderPass@------ - Each element of @pAttachments@ /must/ have been created with a--- @samples@ value that matches the @samples@ value specified by the--- corresponding @VkAttachmentDescription@ in @renderPass@------ - Each element of @pAttachments@ /must/ have dimensions at least as--- large as the corresponding framebuffer dimension------ - Each element of @pAttachments@ /must/ only specify a single mip--- level------ - Each element of @pAttachments@ /must/ have been created with the--- identity swizzle------ - @width@ /must/ be greater than @0@.------ - @width@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxFramebufferWidth@------ - @height@ /must/ be greater than @0@.------ - @height@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxFramebufferHeight@------ - @layers@ /must/ be greater than @0@.------ - @layers@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxFramebufferLayers@------ - Each element of @pAttachments@ that is a 2D or 2D array image view--- taken from a 3D image /must/ not be a depth\/stencil format------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@------ - @renderPass@ /must/ be a valid @VkRenderPass@ handle------ - If @attachmentCount@ is not @0@, @pAttachments@ /must/ be a valid--- pointer to an array of @attachmentCount@ valid @VkImageView@ handles------ - Both of @renderPass@, and the elements of @pAttachments@ that are--- valid handles /must/ have been created, allocated, or retrieved from--- the same @VkDevice@------ = See Also------ 'VkFramebufferCreateFlags',--- 'Graphics.Vulkan.Core10.ImageView.VkImageView',--- 'Graphics.Vulkan.Core10.Pipeline.VkRenderPass',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateFramebuffer'-data VkFramebufferCreateInfo = VkFramebufferCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkFramebufferCreateFlags- , -- | @renderPass@ is a render pass that defines what render passes the- -- framebuffer will be compatible with. See [Render Pass- -- Compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)- -- for details.- vkRenderPass :: VkRenderPass- , -- | @attachmentCount@ is the number of attachments.- vkAttachmentCount :: Word32- , -- | @pAttachments@ is an array of @VkImageView@ handles, each of which will- -- be used as the corresponding attachment in a render pass instance.- vkPAttachments :: Ptr VkImageView- , -- | @width@, @height@ and @layers@ define the dimensions of the framebuffer.- -- If the render pass uses multiview, then @layers@ /must/ be one and each- -- attachment requires a number of layers that is greater than the maximum- -- bit index set in the view mask in the subpasses in which it is used.- vkWidth :: Word32- , -- No documentation found for Nested "VkFramebufferCreateInfo" "height"- vkHeight :: Word32- , -- No documentation found for Nested "VkFramebufferCreateInfo" "layers"- vkLayers :: Word32- }- deriving (Eq, Show)--instance Storable VkFramebufferCreateInfo where- sizeOf ~_ = 64- alignment ~_ = 8- peek ptr = VkFramebufferCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 52)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkFramebufferCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkFramebufferCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkFramebufferCreateInfo))- *> poke (ptr `plusPtr` 24) (vkRenderPass (poked :: VkFramebufferCreateInfo))- *> poke (ptr `plusPtr` 32) (vkAttachmentCount (poked :: VkFramebufferCreateInfo))- *> poke (ptr `plusPtr` 40) (vkPAttachments (poked :: VkFramebufferCreateInfo))- *> poke (ptr `plusPtr` 48) (vkWidth (poked :: VkFramebufferCreateInfo))- *> poke (ptr `plusPtr` 52) (vkHeight (poked :: VkFramebufferCreateInfo))- *> poke (ptr `plusPtr` 56) (vkLayers (poked :: VkFramebufferCreateInfo))--- | VkAccessFlags - Bitmask of VkAccessFlagBits------ = Description------ @VkAccessFlags@ is a bitmask type for setting a mask of zero or more--- 'VkAccessFlagBits'.------ = See Also------ 'VkAccessFlagBits',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkBufferMemoryBarrier',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkImageMemoryBarrier',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkMemoryBarrier',--- 'VkSubpassDependency'-type VkAccessFlags = VkAccessFlagBits--- | VkSubpassDescriptionFlags - Bitmask of VkSubpassDescriptionFlagBits------ = Description------ @VkSubpassDescriptionFlags@ is a bitmask type for setting a mask of zero--- or more 'VkSubpassDescriptionFlagBits'.------ = See Also------ 'VkSubpassDescription', 'VkSubpassDescriptionFlagBits'-type VkSubpassDescriptionFlags = VkSubpassDescriptionFlagBits--- | VkAttachmentDescriptionFlags - Bitmask of--- VkAttachmentDescriptionFlagBits------ = Description------ @VkAttachmentDescriptionFlags@ is a bitmask type for setting a mask of--- zero or more 'VkAttachmentDescriptionFlagBits'.------ = See Also------ 'VkAttachmentDescription', 'VkAttachmentDescriptionFlagBits'-type VkAttachmentDescriptionFlags = VkAttachmentDescriptionFlagBits--- | VkDependencyFlags - Bitmask of VkDependencyFlagBits------ = Description------ @VkDependencyFlags@ is a bitmask type for setting a mask of zero or more--- 'VkDependencyFlagBits'.------ = See Also------ 'VkDependencyFlagBits', 'VkSubpassDependency',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdPipelineBarrier'-type VkDependencyFlags = VkDependencyFlagBits+{-# language CPP #-}+module Graphics.Vulkan.Core10.Pass ( createFramebuffer+ , withFramebuffer+ , destroyFramebuffer+ , createRenderPass+ , withRenderPass+ , destroyRenderPass+ , getRenderAreaGranularity+ , AttachmentDescription(..)+ , AttachmentReference(..)+ , SubpassDescription(..)+ , SubpassDependency(..)+ , RenderPassCreateInfo(..)+ , FramebufferCreateInfo(..)+ ) where++import Control.Exception.Base (bracket)+import Control.Monad (unless)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Marshal.Utils (maybePeek)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import qualified Data.Vector (null)+import Data.Either (Either)+import Data.Type.Equality ((:~:)(Refl))+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.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.Enums.AttachmentDescriptionFlagBits (AttachmentDescriptionFlags)+import Graphics.Vulkan.Core10.Enums.AttachmentLoadOp (AttachmentLoadOp)+import Graphics.Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp)+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlags)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateFramebuffer))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateRenderPass))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyFramebuffer))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyRenderPass))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetRenderAreaGranularity))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.Core10.SharedTypes (Extent2D)+import Graphics.Vulkan.Core10.Enums.Format (Format)+import Graphics.Vulkan.Core10.Handles (Framebuffer)+import Graphics.Vulkan.Core10.Handles (Framebuffer(..))+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (FramebufferAttachmentsCreateInfo)+import Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits (FramebufferCreateFlags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout)+import Graphics.Vulkan.Core10.Handles (ImageView)+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint)+import Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Handles (RenderPass)+import Graphics.Vulkan.Core10.Handles (RenderPass(..))+import Graphics.Vulkan.Core10.Enums.RenderPassCreateFlagBits (RenderPassCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map (RenderPassFragmentDensityMapCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (RenderPassInputAttachmentAspectCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview (RenderPassMultiviewCreateInfo)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits (SubpassDescriptionFlags)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateFramebuffer+ :: FunPtr (Ptr Device_T -> Ptr (FramebufferCreateInfo a) -> Ptr AllocationCallbacks -> Ptr Framebuffer -> IO Result) -> Ptr Device_T -> Ptr (FramebufferCreateInfo a) -> Ptr AllocationCallbacks -> Ptr Framebuffer -> IO Result++-- | vkCreateFramebuffer - Create a new framebuffer object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the framebuffer.+--+-- - @pCreateInfo@ is a pointer to a 'FramebufferCreateInfo' structure+-- describing additional information about framebuffer creation.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pFramebuffer@ is a pointer to a+-- 'Graphics.Vulkan.Core10.Handles.Framebuffer' handle in which the+-- resulting framebuffer object is returned.+--+-- == Valid Usage+--+-- - If @pCreateInfo->flags@ does not include+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- and @attachmentCount@ is not @0@, each element of+-- @pCreateInfo->pAttachments@ /must/ have been created on+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'FramebufferCreateInfo' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pFramebuffer@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.Framebuffer' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Framebuffer', 'FramebufferCreateInfo'+createFramebuffer :: PokeChain a => Device -> FramebufferCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (Framebuffer)+createFramebuffer device createInfo allocator = evalContT $ do+ let vkCreateFramebuffer' = mkVkCreateFramebuffer (pVkCreateFramebuffer (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPFramebuffer <- ContT $ bracket (callocBytes @Framebuffer 8) free+ r <- lift $ vkCreateFramebuffer' (deviceHandle (device)) pCreateInfo pAllocator (pPFramebuffer)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pFramebuffer <- lift $ peek @Framebuffer pPFramebuffer+ pure $ (pFramebuffer)++-- | A safe wrapper for 'createFramebuffer' and 'destroyFramebuffer' using+-- 'bracket'+--+-- The allocated value must not be returned from the provided computation+withFramebuffer :: PokeChain a => Device -> FramebufferCreateInfo a -> Maybe AllocationCallbacks -> (Framebuffer -> IO r) -> IO r+withFramebuffer device framebufferCreateInfo allocationCallbacks =+ bracket+ (createFramebuffer device framebufferCreateInfo allocationCallbacks)+ (\o -> destroyFramebuffer device o allocationCallbacks)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDestroyFramebuffer+ :: FunPtr (Ptr Device_T -> Framebuffer -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> Framebuffer -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyFramebuffer - Destroy a framebuffer object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the framebuffer.+--+-- - 'Graphics.Vulkan.Core10.Handles.Framebuffer' is the handle of the+-- framebuffer to destroy.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- == Valid Usage+--+-- - All submitted commands that refer to+-- 'Graphics.Vulkan.Core10.Handles.Framebuffer' /must/ have completed+-- execution+--+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.Framebuffer' was+-- created, a compatible set of callbacks /must/ be provided here+--+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.Framebuffer' was+-- created, @pAllocator@ /must/ be @NULL@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - If 'Graphics.Vulkan.Core10.Handles.Framebuffer' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Framebuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Framebuffer' handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - If 'Graphics.Vulkan.Core10.Handles.Framebuffer' is a valid handle,+-- it /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Framebuffer' /must/+-- be externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Framebuffer'+destroyFramebuffer :: Device -> Framebuffer -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyFramebuffer device framebuffer allocator = evalContT $ do+ let vkDestroyFramebuffer' = mkVkDestroyFramebuffer (pVkDestroyFramebuffer (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyFramebuffer' (deviceHandle (device)) (framebuffer) pAllocator+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateRenderPass+ :: FunPtr (Ptr Device_T -> Ptr (RenderPassCreateInfo a) -> Ptr AllocationCallbacks -> Ptr RenderPass -> IO Result) -> Ptr Device_T -> Ptr (RenderPassCreateInfo a) -> Ptr AllocationCallbacks -> Ptr RenderPass -> IO Result++-- | vkCreateRenderPass - Create a new render pass object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the render pass.+--+-- - @pCreateInfo@ is a pointer to a 'RenderPassCreateInfo' structure+-- describing the parameters of the render pass.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pRenderPass@ is a pointer to a+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' handle in which the+-- resulting render pass object is returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'RenderPassCreateInfo' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pRenderPass@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.RenderPass', 'RenderPassCreateInfo'+createRenderPass :: PokeChain a => Device -> RenderPassCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (RenderPass)+createRenderPass device createInfo allocator = evalContT $ do+ let vkCreateRenderPass' = mkVkCreateRenderPass (pVkCreateRenderPass (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPRenderPass <- ContT $ bracket (callocBytes @RenderPass 8) free+ r <- lift $ vkCreateRenderPass' (deviceHandle (device)) pCreateInfo pAllocator (pPRenderPass)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pRenderPass <- lift $ peek @RenderPass pPRenderPass+ pure $ (pRenderPass)++-- | A safe wrapper for 'createRenderPass' and 'destroyRenderPass' using+-- 'bracket'+--+-- The allocated value must not be returned from the provided computation+withRenderPass :: PokeChain a => Device -> RenderPassCreateInfo a -> Maybe AllocationCallbacks -> (RenderPass -> IO r) -> IO r+withRenderPass device renderPassCreateInfo allocationCallbacks =+ bracket+ (createRenderPass device renderPassCreateInfo allocationCallbacks)+ (\o -> destroyRenderPass device o allocationCallbacks)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDestroyRenderPass+ :: FunPtr (Ptr Device_T -> RenderPass -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> RenderPass -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyRenderPass - Destroy a render pass object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the render pass.+--+-- - 'Graphics.Vulkan.Core10.Handles.RenderPass' is the handle of the+-- render pass to destroy.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- == Valid Usage+--+-- - All submitted commands that refer to+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' /must/ have completed+-- execution+--+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.RenderPass' was+-- created, a compatible set of callbacks /must/ be provided here+--+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.RenderPass' was+-- created, @pAllocator@ /must/ be @NULL@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - If 'Graphics.Vulkan.Core10.Handles.RenderPass' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - If 'Graphics.Vulkan.Core10.Handles.RenderPass' is a valid handle, it+-- /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.RenderPass' /must/ be+-- externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.RenderPass'+destroyRenderPass :: Device -> RenderPass -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyRenderPass device renderPass allocator = evalContT $ do+ let vkDestroyRenderPass' = mkVkDestroyRenderPass (pVkDestroyRenderPass (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyRenderPass' (deviceHandle (device)) (renderPass) pAllocator+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetRenderAreaGranularity+ :: FunPtr (Ptr Device_T -> RenderPass -> Ptr Extent2D -> IO ()) -> Ptr Device_T -> RenderPass -> Ptr Extent2D -> IO ()++-- | vkGetRenderAreaGranularity - Returns the granularity for optimal render+-- area+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the render pass.+--+-- - 'Graphics.Vulkan.Core10.Handles.RenderPass' is a handle to a render+-- pass.+--+-- - @pGranularity@ is a pointer to a+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent2D' structure in which the+-- granularity is returned.+--+-- = Description+--+-- The conditions leading to an optimal @renderArea@ are:+--+-- - the @offset.x@ member in @renderArea@ is a multiple of the @width@+-- member of the returned 'Graphics.Vulkan.Core10.SharedTypes.Extent2D'+-- (the horizontal granularity).+--+-- - the @offset.y@ member in @renderArea@ is a multiple of the @height@+-- of the returned 'Graphics.Vulkan.Core10.SharedTypes.Extent2D' (the+-- vertical granularity).+--+-- - either the @offset.width@ member in @renderArea@ is a multiple of+-- the horizontal granularity or @offset.x@+@offset.width@ is equal to+-- the @width@ of the 'Graphics.Vulkan.Core10.Handles.Framebuffer' in+-- the+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo'.+--+-- - either the @offset.height@ member in @renderArea@ is a multiple of+-- the vertical granularity or @offset.y@+@offset.height@ is equal to+-- the @height@ of the 'Graphics.Vulkan.Core10.Handles.Framebuffer' in+-- the+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo'.+--+-- Subpass dependencies are not affected by the render area, and apply to+-- the entire image subresources attached to the framebuffer as specified+-- in the description of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-layout-transitions automatic layout transitions>.+-- Similarly, pipeline barriers are valid even if their effect extends+-- outside the render area.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.RenderPass' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' handle+--+-- - @pGranularity@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent2D' structure+--+-- - 'Graphics.Vulkan.Core10.Handles.RenderPass' /must/ have been+-- created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent2D',+-- 'Graphics.Vulkan.Core10.Handles.RenderPass'+getRenderAreaGranularity :: Device -> RenderPass -> IO (("granularity" ::: Extent2D))+getRenderAreaGranularity device renderPass = evalContT $ do+ let vkGetRenderAreaGranularity' = mkVkGetRenderAreaGranularity (pVkGetRenderAreaGranularity (deviceCmds (device :: Device)))+ pPGranularity <- ContT (withZeroCStruct @Extent2D)+ lift $ vkGetRenderAreaGranularity' (deviceHandle (device)) (renderPass) (pPGranularity)+ pGranularity <- lift $ peekCStruct @Extent2D pPGranularity+ pure $ (pGranularity)+++-- | VkAttachmentDescription - Structure specifying an attachment description+--+-- = Description+--+-- If the attachment uses a color format, then @loadOp@ and @storeOp@ are+-- used, and @stencilLoadOp@ and @stencilStoreOp@ are ignored. If the+-- format has depth and\/or stencil components, @loadOp@ and @storeOp@+-- apply only to the depth data, while @stencilLoadOp@ and @stencilStoreOp@+-- define how the stencil data is handled. @loadOp@ and @stencilLoadOp@+-- define the /load operations/ that execute as part of the first subpass+-- that uses the attachment. @storeOp@ and @stencilStoreOp@ define the+-- /store operations/ that execute as part of the last subpass that uses+-- the attachment.+--+-- The load operation for each sample in an attachment happens-before any+-- recorded command which accesses the sample in the first subpass where+-- the attachment is used. Load operations for attachments with a+-- depth\/stencil format execute in the+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT'+-- pipeline stage. Load operations for attachments with a color format+-- execute in the+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'+-- pipeline stage.+--+-- The store operation for each sample in an attachment happens-after any+-- recorded command which accesses the sample in the last subpass where the+-- attachment is used. Store operations for attachments with a+-- depth\/stencil format execute in the+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'+-- pipeline stage. Store operations for attachments with a color format+-- execute in the+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'+-- pipeline stage.+--+-- If an attachment is not used by any subpass, then @loadOp@, @storeOp@,+-- @stencilStoreOp@, and @stencilLoadOp@ are ignored, and the attachment’s+-- memory contents will not be modified by execution of a render pass+-- instance.+--+-- The load and store operations apply on the first and last use of each+-- view in the render pass, respectively. If a view index of an attachment+-- is not included in the view mask in any subpass that uses it, then the+-- load and store operations are ignored, and the attachment’s memory+-- contents will not be modified by execution of a render pass instance.+--+-- During a render pass instance, input\/color attachments with color+-- formats that have a component size of 8, 16, or 32 bits /must/ be+-- represented in the attachment’s format throughout the instance.+-- Attachments with other floating- or fixed-point color formats, or with+-- depth components /may/ be represented in a format with a precision+-- higher than the attachment format, but /must/ be represented with the+-- same range. When such a component is loaded via the @loadOp@, it will be+-- converted into an implementation-dependent format used by the render+-- pass. Such components /must/ be converted from the render pass format,+-- to the format of the attachment, before they are resolved or stored at+-- the end of a render pass instance via @storeOp@. Conversions occur as+-- described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-numerics Numeric Representation and Computation>+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fixedconv Fixed-Point Data Conversions>.+--+-- If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT',+-- then the attachment is treated as if it shares physical memory with+-- another attachment in the same render pass. This information limits the+-- ability of the implementation to reorder certain operations (like layout+-- transitions and the @loadOp@) such that it is not improperly reordered+-- against other uses of the same physical memory via a different+-- attachment. This is described in more detail below.+--+-- If a render pass uses multiple attachments that alias the same device+-- memory, those attachments /must/ each include the+-- 'Graphics.Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT'+-- bit in their attachment description flags. Attachments aliasing the same+-- memory occurs in multiple ways:+--+-- - Multiple attachments being assigned the same image view as part of+-- framebuffer creation.+--+-- - Attachments using distinct image views that correspond to the same+-- image subresource of an image.+--+-- - Attachments using views of distinct image subresources which are+-- bound to overlapping memory ranges.+--+-- Note+--+-- Render passes /must/ include subpass dependencies (either directly or+-- via a subpass dependency chain) between any two subpasses that operate+-- on the same attachment or aliasing attachments and those subpass+-- dependencies /must/ include execution and memory dependencies separating+-- uses of the aliases, if at least one of those subpasses writes to one of+-- the aliases. These dependencies /must/ not include the+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT'+-- if the aliases are views of distinct image subresources which overlap in+-- memory.+--+-- Multiple attachments that alias the same memory /must/ not be used in a+-- single subpass. A given attachment index /must/ not be used multiple+-- times in a single subpass, with one exception: two subpass attachments+-- /can/ use the same attachment index if at least one use is as an input+-- attachment and neither use is as a resolve or preserve attachment. In+-- other words, the same view /can/ be used simultaneously as an input and+-- color or depth\/stencil attachment, but /must/ not be used as multiple+-- color or depth\/stencil attachments nor as resolve or preserve+-- attachments. The precise set of valid scenarios is described in more+-- detail+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop below>.+--+-- If a set of attachments alias each other, then all except the first to+-- be used in the render pass /must/ use an @initialLayout@ of+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED', since+-- the earlier uses of the other aliases make their contents undefined.+-- Once an alias has been used and a different alias has been used after+-- it, the first alias /must/ not be used in any later subpasses. However,+-- an application /can/ assign the same image view to multiple aliasing+-- attachment indices, which allows that image view to be used multiple+-- times even if other aliases are used in between.+--+-- Note+--+-- Once an attachment needs the+-- 'Graphics.Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT'+-- bit, there /should/ be no additional cost of introducing additional+-- aliases, and using these additional aliases /may/ allow more efficient+-- clearing of the attachments on multiple uses via+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'.+--+-- == Valid Usage+--+-- - @finalLayout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a color format,+-- @initialLayout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth\/stencil+-- format, @initialLayout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a color format,+-- @finalLayout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth\/stencil+-- format, @finalLayout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>+-- feature is not enabled, @initialLayout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>+-- feature is not enabled, @finalLayout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a color format,+-- @initialLayout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a color format,+-- @finalLayout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth\/stencil+-- format which includes both depth and stencil aspects,+-- @initialLayout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth\/stencil+-- format which includes both depth and stencil aspects, @finalLayout@+-- /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth\/stencil+-- format which includes only the depth aspect, @initialLayout@ /must/+-- not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth\/stencil+-- format which includes only the depth aspect, @finalLayout@ /must/+-- not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth\/stencil+-- format which includes only the stencil aspect, @initialLayout@+-- /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth\/stencil+-- format which includes only the stencil aspect, @finalLayout@ /must/+-- not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.AttachmentDescriptionFlagBits'+-- values+--+-- - 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' value+--+-- - @samples@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+-- value+--+-- - @loadOp@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp'+-- value+--+-- - @storeOp@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp'+-- value+--+-- - @stencilLoadOp@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp'+-- value+--+-- - @stencilStoreOp@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp'+-- value+--+-- - @initialLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- - @finalLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.AttachmentDescriptionFlags',+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp',+-- 'Graphics.Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp',+-- 'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout',+-- 'RenderPassCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+data AttachmentDescription = AttachmentDescription+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.AttachmentDescriptionFlagBits'+ -- specifying additional properties of the attachment.+ flags :: AttachmentDescriptionFlags+ , -- | 'Graphics.Vulkan.Core10.Enums.Format.Format' is a+ -- 'Graphics.Vulkan.Core10.Enums.Format.Format' value specifying the format+ -- of the image view that will be used for the attachment.+ format :: Format+ , -- | @samples@ is the number of samples of the image as defined in+ -- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'.+ samples :: SampleCountFlagBits+ , -- | @loadOp@ is a+ -- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp' value+ -- specifying how the contents of color and depth components of the+ -- attachment are treated at the beginning of the subpass where it is first+ -- used.+ loadOp :: AttachmentLoadOp+ , -- | @storeOp@ is a+ -- 'Graphics.Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp' value+ -- specifying how the contents of color and depth components of the+ -- attachment are treated at the end of the subpass where it is last used.+ storeOp :: AttachmentStoreOp+ , -- | @stencilLoadOp@ is a+ -- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp' value+ -- specifying how the contents of stencil components of the attachment are+ -- treated at the beginning of the subpass where it is first used.+ stencilLoadOp :: AttachmentLoadOp+ , -- | @stencilStoreOp@ is a+ -- 'Graphics.Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp' value+ -- specifying how the contents of stencil components of the attachment are+ -- treated at the end of the last subpass where it is used.+ stencilStoreOp :: AttachmentStoreOp+ , -- | @initialLayout@ is the layout the attachment image subresource will be+ -- in when a render pass instance begins.+ initialLayout :: ImageLayout+ , -- | @finalLayout@ is the layout the attachment image subresource will be+ -- transitioned to when a render pass instance ends.+ finalLayout :: ImageLayout+ }+ deriving (Typeable)+deriving instance Show AttachmentDescription++instance ToCStruct AttachmentDescription where+ withCStruct x f = allocaBytesAligned 36 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p AttachmentDescription{..} f = do+ poke ((p `plusPtr` 0 :: Ptr AttachmentDescriptionFlags)) (flags)+ poke ((p `plusPtr` 4 :: Ptr Format)) (format)+ poke ((p `plusPtr` 8 :: Ptr SampleCountFlagBits)) (samples)+ poke ((p `plusPtr` 12 :: Ptr AttachmentLoadOp)) (loadOp)+ poke ((p `plusPtr` 16 :: Ptr AttachmentStoreOp)) (storeOp)+ poke ((p `plusPtr` 20 :: Ptr AttachmentLoadOp)) (stencilLoadOp)+ poke ((p `plusPtr` 24 :: Ptr AttachmentStoreOp)) (stencilStoreOp)+ poke ((p `plusPtr` 28 :: Ptr ImageLayout)) (initialLayout)+ poke ((p `plusPtr` 32 :: Ptr ImageLayout)) (finalLayout)+ f+ cStructSize = 36+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 4 :: Ptr Format)) (zero)+ poke ((p `plusPtr` 8 :: Ptr SampleCountFlagBits)) (zero)+ poke ((p `plusPtr` 12 :: Ptr AttachmentLoadOp)) (zero)+ poke ((p `plusPtr` 16 :: Ptr AttachmentStoreOp)) (zero)+ poke ((p `plusPtr` 20 :: Ptr AttachmentLoadOp)) (zero)+ poke ((p `plusPtr` 24 :: Ptr AttachmentStoreOp)) (zero)+ poke ((p `plusPtr` 28 :: Ptr ImageLayout)) (zero)+ poke ((p `plusPtr` 32 :: Ptr ImageLayout)) (zero)+ f++instance FromCStruct AttachmentDescription where+ peekCStruct p = do+ flags <- peek @AttachmentDescriptionFlags ((p `plusPtr` 0 :: Ptr AttachmentDescriptionFlags))+ format <- peek @Format ((p `plusPtr` 4 :: Ptr Format))+ samples <- peek @SampleCountFlagBits ((p `plusPtr` 8 :: Ptr SampleCountFlagBits))+ loadOp <- peek @AttachmentLoadOp ((p `plusPtr` 12 :: Ptr AttachmentLoadOp))+ storeOp <- peek @AttachmentStoreOp ((p `plusPtr` 16 :: Ptr AttachmentStoreOp))+ stencilLoadOp <- peek @AttachmentLoadOp ((p `plusPtr` 20 :: Ptr AttachmentLoadOp))+ stencilStoreOp <- peek @AttachmentStoreOp ((p `plusPtr` 24 :: Ptr AttachmentStoreOp))+ initialLayout <- peek @ImageLayout ((p `plusPtr` 28 :: Ptr ImageLayout))+ finalLayout <- peek @ImageLayout ((p `plusPtr` 32 :: Ptr ImageLayout))+ pure $ AttachmentDescription+ flags format samples loadOp storeOp stencilLoadOp stencilStoreOp initialLayout finalLayout++instance Storable AttachmentDescription where+ sizeOf ~_ = 36+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AttachmentDescription where+ zero = AttachmentDescription+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkAttachmentReference - Structure specifying an attachment reference+--+-- == Valid Usage+--+-- - If @attachment@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', @layout@+-- /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR',+-- or+-- 'Graphics.Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR'+--+-- == Valid Usage (Implicit)+--+-- - @layout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout',+-- 'Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT',+-- 'SubpassDescription'+data AttachmentReference = AttachmentReference+ { -- | @attachment@ is either an integer value identifying an attachment at the+ -- corresponding index in 'RenderPassCreateInfo'::@pAttachments@, or+ -- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' to signify that+ -- this attachment is not used.+ attachment :: Word32+ , -- | @layout@ is a 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout'+ -- value specifying the layout the attachment uses during the subpass.+ layout :: ImageLayout+ }+ deriving (Typeable)+deriving instance Show AttachmentReference++instance ToCStruct AttachmentReference where+ withCStruct x f = allocaBytesAligned 8 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p AttachmentReference{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (attachment)+ poke ((p `plusPtr` 4 :: Ptr ImageLayout)) (layout)+ f+ cStructSize = 8+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 4 :: Ptr ImageLayout)) (zero)+ f++instance FromCStruct AttachmentReference where+ peekCStruct p = do+ attachment <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ layout <- peek @ImageLayout ((p `plusPtr` 4 :: Ptr ImageLayout))+ pure $ AttachmentReference+ attachment layout++instance Storable AttachmentReference where+ sizeOf ~_ = 8+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AttachmentReference where+ zero = AttachmentReference+ zero+ zero+++-- | VkSubpassDescription - Structure specifying a subpass description+--+-- = Description+--+-- Each element of the @pInputAttachments@ array corresponds to an input+-- attachment index in a fragment shader, i.e. if a shader declares an+-- image variable decorated with a @InputAttachmentIndex@ value of __X__,+-- then it uses the attachment provided in @pInputAttachments@[__X__].+-- Input attachments /must/ also be bound to the pipeline in a descriptor+-- set. If the @attachment@ member of any element of @pInputAttachments@ is+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', the application+-- /must/ not read from the corresponding input attachment index. Fragment+-- shaders /can/ use subpass input variables to access the contents of an+-- input attachment at the fragment’s (x, y, layer) framebuffer+-- coordinates. Input attachments /must/ not be used by any subpasses+-- within a renderpass that enables+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>.+--+-- Each element of the @pColorAttachments@ array corresponds to an output+-- location in the shader, i.e. if the shader declares an output variable+-- decorated with a @Location@ value of __X__, then it uses the attachment+-- provided in @pColorAttachments@[__X__]. If the @attachment@ member of+-- any element of @pColorAttachments@ is+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', writes to the+-- corresponding location by a fragment are discarded.+--+-- If @pResolveAttachments@ is not @NULL@, each of its elements corresponds+-- to a color attachment (the element in @pColorAttachments@ at the same+-- index), and a multisample resolve operation is defined for each+-- attachment. At the end of each subpass, multisample resolve operations+-- read the subpass’s color attachments, and resolve the samples for each+-- pixel within the render area to the same pixel location in the+-- corresponding resolve attachments, unless the resolve attachment index+-- is 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'.+--+-- Similarly, if+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve'::@pDepthStencilResolveAttachment@+-- is not @NULL@ and does not have the value+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', it corresponds+-- to the depth\/stencil attachment in @pDepthStencilAttachment@, and+-- multisample resolve operations for depth and stencil are defined by+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve'::@depthResolveMode@+-- and+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve'::@stencilResolveMode@,+-- respectively. At the end of each subpass, multisample resolve operations+-- read the subpass’s depth\/stencil attachment, and resolve the samples+-- for each pixel to the same pixel location in the corresponding resolve+-- attachment. If+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve'::@depthResolveMode@+-- is 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',+-- then the depth component of the resolve attachment is not written to and+-- its contents are preserved. Similarly, if+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve'::@stencilResolveMode@+-- is 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',+-- then the stencil component of the resolve attachment is not written to+-- and its contents are preserved.+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve'::@depthResolveMode@+-- is ignored if the 'Graphics.Vulkan.Core10.Enums.Format.Format' of the+-- @pDepthStencilResolveAttachment@ does not have a depth component.+-- Similarly,+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve'::@stencilResolveMode@+-- is ignored if the 'Graphics.Vulkan.Core10.Enums.Format.Format' of the+-- @pDepthStencilResolveAttachment@ does not have a stencil component.+--+-- If the image subresource range referenced by the depth\/stencil+-- attachment is created with+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT',+-- then the multisample resolve operation uses the sample locations state+-- specified in the @sampleLocationsInfo@ member of the element of the+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.RenderPassSampleLocationsBeginInfoEXT'::@pPostSubpassSampleLocations@+-- for the subpass.+--+-- If @pDepthStencilAttachment@ is @NULL@, or if its attachment index is+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', it indicates+-- that no depth\/stencil attachment will be used in the subpass.+--+-- The contents of an attachment within the render area become undefined at+-- the start of a subpass __S__ if all of the following conditions are+-- true:+--+-- - The attachment is used as a color, depth\/stencil, or resolve+-- attachment in any subpass in the render pass.+--+-- - There is a subpass __S1__ that uses or preserves the attachment, and+-- a subpass dependency from __S1__ to __S__.+--+-- - The attachment is not used or preserved in subpass __S__.+--+-- Once the contents of an attachment become undefined in subpass __S__,+-- they remain undefined for subpasses in subpass dependency chains+-- starting with subpass __S__ until they are written again. However, they+-- remain valid for subpasses in other subpass dependency chains starting+-- with subpass __S1__ if those subpasses use or preserve the attachment.+--+-- == Valid Usage+--+-- - 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- /must/ be+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'+--+-- - @colorAttachmentCount@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxColorAttachments@+--+-- - If the first use of an attachment in this render pass is as an input+-- attachment, and the attachment is not also used as a color or+-- depth\/stencil attachment in the same subpass, then @loadOp@ /must/+-- not be+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'+--+-- - If @pResolveAttachments@ is not @NULL@, for each resolve attachment+-- that is not 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',+-- the corresponding color attachment /must/ not be+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'+--+-- - If @pResolveAttachments@ is not @NULL@, for each resolve attachment+-- that is not 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',+-- the corresponding color attachment /must/ not have a sample count of+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- - If @pResolveAttachments@ is not @NULL@, each resolve attachment that+-- is not 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'+-- /must/ have a sample count of+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- - If @pResolveAttachments@ is not @NULL@, each resolve attachment that+-- is not 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'+-- /must/ have the same 'Graphics.Vulkan.Core10.Enums.Format.Format' as+-- its corresponding color attachment+--+-- - All attachments in @pColorAttachments@ that are not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have+-- the same sample count+--+-- - All attachments in @pInputAttachments@ that are not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have+-- formats whose features contain at least one of+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'.+--+-- - All attachments in @pColorAttachments@ that are not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have+-- formats whose features contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'+--+-- - All attachments in @pResolveAttachments@ that are not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have+-- formats whose features contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'+--+-- - If @pDepthStencilAttachment@ is not @NULL@ and the attachment is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' then it+-- /must/ have a format whose features contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- - If the @VK_AMD_mixed_attachment_samples@ extension is enabled, and+-- all attachments in @pColorAttachments@ that are not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have+-- a sample count that is smaller than or equal to the sample count of+-- @pDepthStencilAttachment@ if it is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'+--+-- - If neither the @VK_AMD_mixed_attachment_samples@ nor the+-- @VK_NV_framebuffer_mixed_samples@ extensions are enabled, and if+-- @pDepthStencilAttachment@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' and any+-- attachments in @pColorAttachments@ are not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', they /must/+-- have the same sample count+--+-- - The @attachment@ member of each element of @pPreserveAttachments@+-- /must/ not be+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'+--+-- - Each element of @pPreserveAttachments@ /must/ not also be an element+-- of any other member of the subpass description+--+-- - If any attachment is used by more than one 'AttachmentReference'+-- member, then each use /must/ use the same @layout@+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX',+-- it /must/ also include+-- 'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX'.+--+-- - If the render pass is created with+-- 'Graphics.Vulkan.Core10.Enums.RenderPassCreateFlagBits.RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM'+-- each of the elements of @pInputAttachments@ /must/ be+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SubpassDescriptionFlagBits'+-- values+--+-- - 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- value+--+-- - If @inputAttachmentCount@ is not @0@, @pInputAttachments@ /must/ be+-- a valid pointer to an array of @inputAttachmentCount@ valid+-- 'AttachmentReference' structures+--+-- - If @colorAttachmentCount@ is not @0@, @pColorAttachments@ /must/ be+-- a valid pointer to an array of @colorAttachmentCount@ valid+-- 'AttachmentReference' structures+--+-- - If @colorAttachmentCount@ is not @0@, and @pResolveAttachments@ is+-- not @NULL@, @pResolveAttachments@ /must/ be a valid pointer to an+-- array of @colorAttachmentCount@ valid 'AttachmentReference'+-- structures+--+-- - If @pDepthStencilAttachment@ is not @NULL@,+-- @pDepthStencilAttachment@ /must/ be a valid pointer to a valid+-- 'AttachmentReference' structure+--+-- - If @preserveAttachmentCount@ is not @0@, @pPreserveAttachments@+-- /must/ be a valid pointer to an array of @preserveAttachmentCount@+-- @uint32_t@ values+--+-- = See Also+--+-- 'AttachmentReference',+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',+-- 'RenderPassCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SubpassDescriptionFlags'+data SubpassDescription = SubpassDescription+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SubpassDescriptionFlagBits'+ -- specifying usage of the subpass.+ flags :: SubpassDescriptionFlags+ , -- | 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' is a+ -- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value+ -- specifying the pipeline type supported for this subpass.+ pipelineBindPoint :: PipelineBindPoint+ , -- | @pInputAttachments@ is a pointer to an array of 'AttachmentReference'+ -- structures defining the input attachments for this subpass and their+ -- layouts.+ inputAttachments :: Vector AttachmentReference+ , -- | @pColorAttachments@ is a pointer to an array of 'AttachmentReference'+ -- structures defining the color attachments for this subpass and their+ -- layouts.+ colorAttachments :: Vector AttachmentReference+ , -- | @pResolveAttachments@ is an optional array of @colorAttachmentCount@+ -- 'AttachmentReference' structures defining the resolve attachments for+ -- this subpass and their layouts.+ resolveAttachments :: Either Word32 (Vector AttachmentReference)+ , -- | @pDepthStencilAttachment@ is a pointer to a 'AttachmentReference'+ -- structure specifying the depth\/stencil attachment for this subpass and+ -- its layout.+ depthStencilAttachment :: Maybe AttachmentReference+ , -- | @pPreserveAttachments@ is a pointer to an array of+ -- @preserveAttachmentCount@ render pass attachment indices identifying+ -- attachments that are not used by this subpass, but whose contents /must/+ -- be preserved throughout the subpass.+ preserveAttachments :: Vector Word32+ }+ deriving (Typeable)+deriving instance Show SubpassDescription++instance ToCStruct SubpassDescription where+ withCStruct x f = allocaBytesAligned 72 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SubpassDescription{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr SubpassDescriptionFlags)) (flags)+ lift $ poke ((p `plusPtr` 4 :: Ptr PipelineBindPoint)) (pipelineBindPoint)+ lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (inputAttachments)) :: Word32))+ pPInputAttachments' <- ContT $ allocaBytesAligned @AttachmentReference ((Data.Vector.length (inputAttachments)) * 8) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPInputAttachments' `plusPtr` (8 * (i)) :: Ptr AttachmentReference) (e) . ($ ())) (inputAttachments)+ lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr AttachmentReference))) (pPInputAttachments')+ let pColorAttachmentsLength = Data.Vector.length $ (colorAttachments)+ let pResolveAttachmentsLength = either id (fromIntegral . Data.Vector.length) (resolveAttachments)+ lift $ unless (fromIntegral pResolveAttachmentsLength == pColorAttachmentsLength || pResolveAttachmentsLength == 0) $+ throwIO $ IOError Nothing InvalidArgument "" "pResolveAttachments and pColorAttachments must have the same length" Nothing Nothing+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral pColorAttachmentsLength :: Word32))+ pPColorAttachments' <- ContT $ allocaBytesAligned @AttachmentReference ((Data.Vector.length (colorAttachments)) * 8) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPColorAttachments' `plusPtr` (8 * (i)) :: Ptr AttachmentReference) (e) . ($ ())) (colorAttachments)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr AttachmentReference))) (pPColorAttachments')+ pResolveAttachments'' <- case (resolveAttachments) of+ Left _ -> pure nullPtr+ Right v -> do+ pPResolveAttachments' <- ContT $ allocaBytesAligned @AttachmentReference ((Data.Vector.length (v)) * 8) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPResolveAttachments' `plusPtr` (8 * (i)) :: Ptr AttachmentReference) (e) . ($ ())) (v)+ pure $ pPResolveAttachments'+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr AttachmentReference))) pResolveAttachments''+ pDepthStencilAttachment'' <- case (depthStencilAttachment) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr AttachmentReference))) pDepthStencilAttachment''+ lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (preserveAttachments)) :: Word32))+ pPPreserveAttachments' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (preserveAttachments)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPPreserveAttachments' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (preserveAttachments)+ lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr Word32))) (pPPreserveAttachments')+ lift $ f+ cStructSize = 72+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 4 :: Ptr PipelineBindPoint)) (zero)+ pPInputAttachments' <- ContT $ allocaBytesAligned @AttachmentReference ((Data.Vector.length (mempty)) * 8) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPInputAttachments' `plusPtr` (8 * (i)) :: Ptr AttachmentReference) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr AttachmentReference))) (pPInputAttachments')+ pPColorAttachments' <- ContT $ allocaBytesAligned @AttachmentReference ((Data.Vector.length (mempty)) * 8) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPColorAttachments' `plusPtr` (8 * (i)) :: Ptr AttachmentReference) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr AttachmentReference))) (pPColorAttachments')+ pPPreserveAttachments' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPPreserveAttachments' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr Word32))) (pPPreserveAttachments')+ lift $ f++instance FromCStruct SubpassDescription where+ peekCStruct p = do+ flags <- peek @SubpassDescriptionFlags ((p `plusPtr` 0 :: Ptr SubpassDescriptionFlags))+ pipelineBindPoint <- peek @PipelineBindPoint ((p `plusPtr` 4 :: Ptr PipelineBindPoint))+ inputAttachmentCount <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ pInputAttachments <- peek @(Ptr AttachmentReference) ((p `plusPtr` 16 :: Ptr (Ptr AttachmentReference)))+ pInputAttachments' <- generateM (fromIntegral inputAttachmentCount) (\i -> peekCStruct @AttachmentReference ((pInputAttachments `advancePtrBytes` (8 * (i)) :: Ptr AttachmentReference)))+ colorAttachmentCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ pColorAttachments <- peek @(Ptr AttachmentReference) ((p `plusPtr` 32 :: Ptr (Ptr AttachmentReference)))+ pColorAttachments' <- generateM (fromIntegral colorAttachmentCount) (\i -> peekCStruct @AttachmentReference ((pColorAttachments `advancePtrBytes` (8 * (i)) :: Ptr AttachmentReference)))+ pResolveAttachments <- peek @(Ptr AttachmentReference) ((p `plusPtr` 40 :: Ptr (Ptr AttachmentReference)))+ pResolveAttachments' <- maybePeek (\j -> generateM (fromIntegral colorAttachmentCount) (\i -> peekCStruct @AttachmentReference (((j) `advancePtrBytes` (8 * (i)) :: Ptr AttachmentReference)))) pResolveAttachments+ let pResolveAttachments'' = maybe (Left colorAttachmentCount) Right pResolveAttachments'+ pDepthStencilAttachment <- peek @(Ptr AttachmentReference) ((p `plusPtr` 48 :: Ptr (Ptr AttachmentReference)))+ pDepthStencilAttachment' <- maybePeek (\j -> peekCStruct @AttachmentReference (j)) pDepthStencilAttachment+ preserveAttachmentCount <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))+ pPreserveAttachments <- peek @(Ptr Word32) ((p `plusPtr` 64 :: Ptr (Ptr Word32)))+ pPreserveAttachments' <- generateM (fromIntegral preserveAttachmentCount) (\i -> peek @Word32 ((pPreserveAttachments `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ pure $ SubpassDescription+ flags pipelineBindPoint pInputAttachments' pColorAttachments' pResolveAttachments'' pDepthStencilAttachment' pPreserveAttachments'++instance Zero SubpassDescription where+ zero = SubpassDescription+ zero+ zero+ mempty+ mempty+ (Left 0)+ Nothing+ mempty+++-- | VkSubpassDependency - Structure specifying a subpass dependency+--+-- = Description+--+-- If @srcSubpass@ is equal to @dstSubpass@ then the 'SubpassDependency'+-- describes a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependencies subpass self-dependency>,+-- and only constrains the pipeline barriers allowed within a subpass+-- instance. Otherwise, when a render pass instance which includes a+-- subpass dependency is submitted to a queue, it defines a memory+-- dependency between the subpasses identified by @srcSubpass@ and+-- @dstSubpass@.+--+-- If @srcSubpass@ is equal to+-- 'Graphics.Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL', the first+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>+-- includes commands that occur earlier in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>+-- than the+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBeginRenderPass' used+-- to begin the render pass instance. Otherwise, the first set of commands+-- includes all commands submitted as part of the subpass instance+-- identified by @srcSubpass@ and any load, store or multisample resolve+-- operations on attachments used in @srcSubpass@. In either case, the+-- first synchronization scope is limited to operations on the pipeline+-- stages determined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>+-- specified by @srcStageMask@.+--+-- If @dstSubpass@ is equal to+-- 'Graphics.Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL', the second+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>+-- includes commands that occur later in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>+-- than the 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdEndRenderPass'+-- used to end the render pass instance. Otherwise, the second set of+-- commands includes all commands submitted as part of the subpass instance+-- identified by @dstSubpass@ and any load, store or multisample resolve+-- operations on attachments used in @dstSubpass@. In either case, the+-- second synchronization scope is limited to operations on the pipeline+-- stages determined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>+-- specified by @dstStageMask@.+--+-- The first+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>+-- is limited to access in the pipeline stages determined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>+-- specified by @srcStageMask@. It is also limited to access types in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks source access mask>+-- specified by @srcAccessMask@.+--+-- The second+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>+-- is limited to access in the pipeline stages determined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>+-- specified by @dstStageMask@. It is also limited to access types in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks destination access mask>+-- specified by @dstAccessMask@.+--+-- The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible availability and visibility operations>+-- defined by a subpass dependency affect the execution of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-layout-transitions image layout transitions>+-- within the render pass.+--+-- Note+--+-- For non-attachment resources, the memory dependency expressed by subpass+-- dependency is nearly identical to that of a+-- 'Graphics.Vulkan.Core10.OtherTypes.MemoryBarrier' (with matching+-- @srcAccessMask@ and @dstAccessMask@ parameters) submitted as a part of a+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdPipelineBarrier' (with+-- matching @srcStageMask@ and @dstStageMask@ parameters). The only+-- difference being that its scopes are limited to the identified subpasses+-- rather than potentially affecting everything before and after.+--+-- For attachments however, subpass dependencies work more like a+-- 'Graphics.Vulkan.Core10.OtherTypes.ImageMemoryBarrier' defined similarly+-- to the 'Graphics.Vulkan.Core10.OtherTypes.MemoryBarrier' above, the+-- queue family indices set to+-- 'Graphics.Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED', and layouts+-- as follows:+--+-- - The equivalent to @oldLayout@ is the attachment’s layout according+-- to the subpass description for @srcSubpass@.+--+-- - The equivalent to @newLayout@ is the attachment’s layout according+-- to the subpass description for @dstSubpass@.+--+-- == Valid Usage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>+-- feature is not enabled, @srcStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>+-- feature is not enabled, @dstStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+-- feature is not enabled, @srcStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+-- feature is not enabled, @dstStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'+--+-- - @srcSubpass@ /must/ be less than or equal to @dstSubpass@, unless+-- one of them is+-- 'Graphics.Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL', to avoid+-- cyclic dependencies and ensure a valid execution order+--+-- - @srcSubpass@ and @dstSubpass@ /must/ not both be equal to+-- 'Graphics.Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL'+--+-- - If @srcSubpass@ is equal to @dstSubpass@ and not all of the stages+-- in @srcStageMask@ and @dstStageMask@ are+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>,+-- the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically latest>+-- pipeline stage in @srcStageMask@ /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically earlier>+-- than or equal to the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically earliest>+-- pipeline stage in @dstStageMask@+--+-- - Any access flag included in @srcAccessMask@ /must/ be supported by+-- one of the pipeline stages in @srcStageMask@, as specified in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- - Any access flag included in @dstAccessMask@ /must/ be supported by+-- one of the pipeline stages in @dstStageMask@, as specified in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- - If @srcSubpass@ equals @dstSubpass@, and @srcStageMask@ and+-- @dstStageMask@ both include a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stage>,+-- then+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags'+-- /must/ include+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT'+--+-- - If 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags'+-- includes+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT',+-- @srcSubpass@ /must/ not be equal to+-- 'Graphics.Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags'+-- includes+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT',+-- @dstSubpass@ /must/ not be equal to+-- 'Graphics.Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL'+--+-- - If @srcSubpass@ equals @dstSubpass@ and that subpass has more than+-- one bit set in the view mask, then+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags'+-- /must/ include+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>+-- feature is not enabled, @srcStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>+-- feature is not enabled, @srcStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>+-- feature is not enabled, @dstStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>+-- feature is not enabled, @dstStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'+--+-- == Valid Usage (Implicit)+--+-- - @srcStageMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+-- values+--+-- - @srcStageMask@ /must/ not be @0@+--+-- - @dstStageMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+-- values+--+-- - @dstStageMask@ /must/ not be @0@+--+-- - @srcAccessMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' values+--+-- - @dstAccessMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' values+--+-- - 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags'+-- /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits'+-- values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.AccessFlags',+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags',+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags',+-- 'RenderPassCreateInfo'+data SubpassDependency = SubpassDependency+ { -- | @srcSubpass@ is the subpass index of the first subpass in the+ -- dependency, or 'Graphics.Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL'.+ srcSubpass :: Word32+ , -- | @dstSubpass@ is the subpass index of the second subpass in the+ -- dependency, or 'Graphics.Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL'.+ dstSubpass :: Word32+ , -- | @srcStageMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+ -- specifying the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>.+ srcStageMask :: PipelineStageFlags+ , -- | @dstStageMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+ -- specifying the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>+ dstStageMask :: PipelineStageFlags+ , -- | @srcAccessMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying+ -- a+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks source access mask>.+ srcAccessMask :: AccessFlags+ , -- | @dstAccessMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying+ -- a+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks destination access mask>.+ dstAccessMask :: AccessFlags+ , -- | 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags' is a+ -- bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits'.+ dependencyFlags :: DependencyFlags+ }+ deriving (Typeable)+deriving instance Show SubpassDependency++instance ToCStruct SubpassDependency where+ withCStruct x f = allocaBytesAligned 28 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SubpassDependency{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (srcSubpass)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (dstSubpass)+ poke ((p `plusPtr` 8 :: Ptr PipelineStageFlags)) (srcStageMask)+ poke ((p `plusPtr` 12 :: Ptr PipelineStageFlags)) (dstStageMask)+ poke ((p `plusPtr` 16 :: Ptr AccessFlags)) (srcAccessMask)+ poke ((p `plusPtr` 20 :: Ptr AccessFlags)) (dstAccessMask)+ poke ((p `plusPtr` 24 :: Ptr DependencyFlags)) (dependencyFlags)+ f+ cStructSize = 28+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 8 :: Ptr PipelineStageFlags)) (zero)+ poke ((p `plusPtr` 12 :: Ptr PipelineStageFlags)) (zero)+ f++instance FromCStruct SubpassDependency where+ peekCStruct p = do+ srcSubpass <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ dstSubpass <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ srcStageMask <- peek @PipelineStageFlags ((p `plusPtr` 8 :: Ptr PipelineStageFlags))+ dstStageMask <- peek @PipelineStageFlags ((p `plusPtr` 12 :: Ptr PipelineStageFlags))+ srcAccessMask <- peek @AccessFlags ((p `plusPtr` 16 :: Ptr AccessFlags))+ dstAccessMask <- peek @AccessFlags ((p `plusPtr` 20 :: Ptr AccessFlags))+ dependencyFlags <- peek @DependencyFlags ((p `plusPtr` 24 :: Ptr DependencyFlags))+ pure $ SubpassDependency+ srcSubpass dstSubpass srcStageMask dstStageMask srcAccessMask dstAccessMask dependencyFlags++instance Storable SubpassDependency where+ sizeOf ~_ = 28+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SubpassDependency where+ zero = SubpassDependency+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkRenderPassCreateInfo - Structure specifying parameters of a newly+-- created render pass+--+-- = Description+--+-- Note+--+-- Care should be taken to avoid a data race here; if any subpasses access+-- attachments with overlapping memory locations, and one of those accesses+-- is a write, a subpass dependency needs to be included between them.+--+-- == Valid Usage+--+-- - If the @attachment@ member of any element of @pInputAttachments@,+-- @pColorAttachments@, @pResolveAttachments@ or+-- @pDepthStencilAttachment@, or any element of @pPreserveAttachments@+-- in any element of @pSubpasses@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', it /must/+-- be less than @attachmentCount@+--+-- - For any member of @pAttachments@ with a @loadOp@ equal to+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR',+-- the first use of that attachment /must/ not specify a @layout@ equal+-- to+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'.+--+-- - For any member of @pAttachments@ with a @stencilLoadOp@ equal to+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR',+-- the first use of that attachment /must/ not specify a @layout@ equal+-- to+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'.+--+-- - For any member of @pAttachments@ with a @loadOp@ equal to+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR',+-- the first use of that attachment /must/ not specify a @layout@ equal+-- to+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'.+--+-- - For any member of @pAttachments@ with a @stencilLoadOp@ equal to+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR',+-- the first use of that attachment /must/ not specify a @layout@ equal+-- to+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'.+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.RenderPassInputAttachmentAspectCreateInfo'+-- structure, the @subpass@ member of each element of its+-- @pAspectReferences@ member /must/ be less than @subpassCount@+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.RenderPassInputAttachmentAspectCreateInfo'+-- structure, the @inputAttachmentIndex@ member of each element of its+-- @pAspectReferences@ member /must/ be less than the value of+-- @inputAttachmentCount@ in the member of @pSubpasses@ identified by+-- its @subpass@ member+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.RenderPassInputAttachmentAspectCreateInfo'+-- structure, for any element of the @pInputAttachments@ member of any+-- element of @pSubpasses@ where the @attachment@ member is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', the+-- @aspectMask@ member of the corresponding element of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.RenderPassInputAttachmentAspectCreateInfo'::@pAspectReferences@+-- /must/ only include aspects that are present in images of the format+-- specified by the element of @pAttachments@ at @attachment@+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'+-- structure, and its @subpassCount@ member is not zero, that member+-- /must/ be equal to the value of @subpassCount@+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'+-- structure, if its @dependencyCount@ member is not zero, it /must/ be+-- equal to @dependencyCount@+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'+-- structure, for each non-zero element of @pViewOffsets@, the+-- @srcSubpass@ and @dstSubpass@ members of @pDependencies@ at the same+-- index /must/ not be equal+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'+-- structure, for any element of @pDependencies@ with a+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags'+-- member that does not include+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT',+-- the corresponding element of the @pViewOffsets@ member of that+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'+-- instance /must/ be @0@+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'+-- structure, elements of its @pViewMasks@ member /must/ either all be+-- @0@, or all not be @0@+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'+-- structure, and each element of its @pViewMasks@ member is @0@, the+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags'+-- member of each element of @pDependencies@ /must/ not include+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'+-- structure, and each element of its @pViewMasks@ member is @0@,+-- @correlatedViewMaskCount@ /must/ be @0@+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'+-- structure, each element of its @pViewMask@ member /must/ not have a+-- bit set at an index greater than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxFramebufferLayers@+--+-- - For any element of @pDependencies@, if the @srcSubpass@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL', all stage+-- flags included in the @srcStageMask@ member of that dependency+-- /must/ be a pipeline stage supported by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types pipeline>+-- identified by the+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- member of the source subpass+--+-- - For any element of @pDependencies@, if the @dstSubpass@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL', all stage+-- flags included in the @dstStageMask@ member of that dependency+-- /must/ be a pipeline stage supported by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types pipeline>+-- identified by the+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- member of the destination subpass+--+-- - The @srcSubpass@ member of each element of @pDependencies@ /must/ be+-- less than @subpassCount@+--+-- - The @dstSubpass@ member of each element of @pDependencies@ /must/ be+-- less than @subpassCount@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.RenderPassInputAttachmentAspectCreateInfo',+-- or+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.RenderPassCreateFlagBits.RenderPassCreateFlagBits'+-- values+--+-- - If @attachmentCount@ is not @0@, @pAttachments@ /must/ be a valid+-- pointer to an array of @attachmentCount@ valid+-- 'AttachmentDescription' structures+--+-- - @pSubpasses@ /must/ be a valid pointer to an array of @subpassCount@+-- valid 'SubpassDescription' structures+--+-- - If @dependencyCount@ is not @0@, @pDependencies@ /must/ be a valid+-- pointer to an array of @dependencyCount@ valid 'SubpassDependency'+-- structures+--+-- - @subpassCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'AttachmentDescription',+-- 'Graphics.Vulkan.Core10.Enums.RenderPassCreateFlagBits.RenderPassCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'SubpassDependency', 'SubpassDescription', 'createRenderPass'+data RenderPassCreateInfo (es :: [Type]) = RenderPassCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.RenderPassCreateFlagBits.RenderPassCreateFlagBits'+ flags :: RenderPassCreateFlags+ , -- | @pAttachments@ is a pointer to an array of @attachmentCount@+ -- 'AttachmentDescription' structures describing the attachments used by+ -- the render pass.+ attachments :: Vector AttachmentDescription+ , -- | @pSubpasses@ is a pointer to an array of @subpassCount@+ -- 'SubpassDescription' structures describing each subpass.+ subpasses :: Vector SubpassDescription+ , -- | @pDependencies@ is a pointer to an array of @dependencyCount@+ -- 'SubpassDependency' structures describing dependencies between pairs of+ -- subpasses.+ dependencies :: Vector SubpassDependency+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (RenderPassCreateInfo es)++instance Extensible RenderPassCreateInfo where+ extensibleType = STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO+ setNext x next = x{next = next}+ getNext RenderPassCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends RenderPassCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @RenderPassFragmentDensityMapCreateInfoEXT = Just f+ | Just Refl <- eqT @e @RenderPassInputAttachmentAspectCreateInfo = Just f+ | Just Refl <- eqT @e @RenderPassMultiviewCreateInfo = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (RenderPassCreateInfo es) where+ withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p RenderPassCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr RenderPassCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (attachments)) :: Word32))+ pPAttachments' <- ContT $ allocaBytesAligned @AttachmentDescription ((Data.Vector.length (attachments)) * 36) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAttachments' `plusPtr` (36 * (i)) :: Ptr AttachmentDescription) (e) . ($ ())) (attachments)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AttachmentDescription))) (pPAttachments')+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (subpasses)) :: Word32))+ pPSubpasses' <- ContT $ allocaBytesAligned @SubpassDescription ((Data.Vector.length (subpasses)) * 72) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPSubpasses' `plusPtr` (72 * (i)) :: Ptr SubpassDescription) (e) . ($ ())) (subpasses)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr SubpassDescription))) (pPSubpasses')+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (dependencies)) :: Word32))+ pPDependencies' <- ContT $ allocaBytesAligned @SubpassDependency ((Data.Vector.length (dependencies)) * 28) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDependencies' `plusPtr` (28 * (i)) :: Ptr SubpassDependency) (e) . ($ ())) (dependencies)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr SubpassDependency))) (pPDependencies')+ lift $ f+ cStructSize = 64+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ pPAttachments' <- ContT $ allocaBytesAligned @AttachmentDescription ((Data.Vector.length (mempty)) * 36) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAttachments' `plusPtr` (36 * (i)) :: Ptr AttachmentDescription) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AttachmentDescription))) (pPAttachments')+ pPSubpasses' <- ContT $ allocaBytesAligned @SubpassDescription ((Data.Vector.length (mempty)) * 72) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPSubpasses' `plusPtr` (72 * (i)) :: Ptr SubpassDescription) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr SubpassDescription))) (pPSubpasses')+ pPDependencies' <- ContT $ allocaBytesAligned @SubpassDependency ((Data.Vector.length (mempty)) * 28) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDependencies' `plusPtr` (28 * (i)) :: Ptr SubpassDependency) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr SubpassDependency))) (pPDependencies')+ lift $ f++instance PeekChain es => FromCStruct (RenderPassCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @RenderPassCreateFlags ((p `plusPtr` 16 :: Ptr RenderPassCreateFlags))+ attachmentCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pAttachments <- peek @(Ptr AttachmentDescription) ((p `plusPtr` 24 :: Ptr (Ptr AttachmentDescription)))+ pAttachments' <- generateM (fromIntegral attachmentCount) (\i -> peekCStruct @AttachmentDescription ((pAttachments `advancePtrBytes` (36 * (i)) :: Ptr AttachmentDescription)))+ subpassCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pSubpasses <- peek @(Ptr SubpassDescription) ((p `plusPtr` 40 :: Ptr (Ptr SubpassDescription)))+ pSubpasses' <- generateM (fromIntegral subpassCount) (\i -> peekCStruct @SubpassDescription ((pSubpasses `advancePtrBytes` (72 * (i)) :: Ptr SubpassDescription)))+ dependencyCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+ pDependencies <- peek @(Ptr SubpassDependency) ((p `plusPtr` 56 :: Ptr (Ptr SubpassDependency)))+ pDependencies' <- generateM (fromIntegral dependencyCount) (\i -> peekCStruct @SubpassDependency ((pDependencies `advancePtrBytes` (28 * (i)) :: Ptr SubpassDependency)))+ pure $ RenderPassCreateInfo+ next flags pAttachments' pSubpasses' pDependencies'++instance es ~ '[] => Zero (RenderPassCreateInfo es) where+ zero = RenderPassCreateInfo+ ()+ zero+ mempty+ mempty+ mempty+++-- | VkFramebufferCreateInfo - Structure specifying parameters of a newly+-- created framebuffer+--+-- = Description+--+-- Applications /must/ ensure that all accesses to memory that backs image+-- subresources used as attachments in a given renderpass instance either+-- happen-before the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops load operations>+-- for those attachments, or happen-after the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops store operations>+-- for those attachments.+--+-- For depth\/stencil attachments, each aspect /can/ be used separately as+-- attachments and non-attachments as long as the non-attachment accesses+-- are also via an image subresource in either the+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'+-- layout or the+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'+-- layout, and the attachment resource uses whichever of those two layouts+-- the image accesses do not. Use of non-attachment aspects in this case is+-- only well defined if the attachment is used in the subpass where the+-- non-attachment access is being made, or the layout of the image+-- subresource is constant throughout the entire render pass instance,+-- including the @initialLayout@ and @finalLayout@.+--+-- Note+--+-- These restrictions mean that the render pass has full knowledge of all+-- uses of all of the attachments, so that the implementation is able to+-- make correct decisions about when and how to perform layout transitions,+-- when to overlap execution of subpasses, etc.+--+-- It is legal for a subpass to use no color or depth\/stencil attachments,+-- and rather use shader side effects such as image stores and atomics to+-- produce an output. In this case, the subpass continues to use the+-- @width@, @height@, and @layers@ of the framebuffer to define the+-- dimensions of the rendering area, and the @rasterizationSamples@ from+-- each pipeline’s+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo' to+-- define the number of samples used in rasterization; however, if+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures'::@variableMultisampleRate@+-- is 'Graphics.Vulkan.Core10.BaseType.FALSE', then all pipelines to be+-- bound with a given zero-attachment subpass /must/ have the same value+-- for+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@.+--+-- == Valid Usage+--+-- - @attachmentCount@ /must/ be equal to the attachment count specified+-- in 'Graphics.Vulkan.Core10.Handles.RenderPass'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' does not include+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- and @attachmentCount@ is not @0@, @pAttachments@ must be a valid+-- pointer to an array of @attachmentCount@ valid+-- 'Graphics.Vulkan.Core10.Handles.ImageView' handles+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' does not include+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- each element of @pAttachments@ that is used as a color attachment or+-- resolve attachment by 'Graphics.Vulkan.Core10.Handles.RenderPass'+-- /must/ have been created with a @usage@ value including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' does not include+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- each element of @pAttachments@ that is used as a depth\/stencil+-- attachment by 'Graphics.Vulkan.Core10.Handles.RenderPass' /must/+-- have been created with a @usage@ value including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' does not include+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- each element of @pAttachments@ that is used as a depth\/stencil+-- resolve attachment by 'Graphics.Vulkan.Core10.Handles.RenderPass'+-- /must/ have been created with a @usage@ value including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' does not include+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- each element of @pAttachments@ that is used as an input attachment+-- by 'Graphics.Vulkan.Core10.Handles.RenderPass' /must/ have been+-- created with a @usage@ value including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'+--+-- - Each element of @pAttachments@ that is used as a fragment density+-- map attachment by 'Graphics.Vulkan.Core10.Handles.RenderPass' /must/+-- not have been created with a 'Graphics.Vulkan.Core10.BaseType.Flags'+-- value including+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'.+--+-- - If 'Graphics.Vulkan.Core10.Handles.RenderPass' has a fragment+-- density map attachment and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nonsubsampledimages non-subsample image feature>+-- is not enabled, each element of @pAttachments@ /must/ have been+-- created with a 'Graphics.Vulkan.Core10.BaseType.Flags' value+-- including+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'+-- unless that element is the fragment density map attachment.+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' does not include+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- each element of @pAttachments@ /must/ have been created with a+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' value that matches the+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' specified by the+-- corresponding 'AttachmentDescription' in+-- 'Graphics.Vulkan.Core10.Handles.RenderPass'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' does not include+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- each element of @pAttachments@ /must/ have been created with a+-- @samples@ value that matches the @samples@ value specified by the+-- corresponding 'AttachmentDescription' in+-- 'Graphics.Vulkan.Core10.Handles.RenderPass'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' does not include+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- each element of @pAttachments@ /must/ have dimensions at least as+-- large as the corresponding framebuffer dimension except for any+-- element that is referenced by @fragmentDensityMapAttachment@+--+-- - If 'Graphics.Vulkan.Core10.Handles.RenderPass' was specified with+-- non-zero view masks, each element of @pAttachments@ that is not+-- referenced by @fragmentDensityMapAttachment@ /must/ have a+-- @layerCount@ greater than the index of the most significant bit set+-- in any of those view masks+--+-- - If 'Graphics.Vulkan.Core10.Handles.RenderPass' was specified with+-- non-zero view masks, each element of @pAttachments@ that is+-- referenced by @fragmentDensityMapAttachment@ /must/ have a+-- @layerCount@ equal to @1@ or greater than the index of the most+-- significant bit set in any of those view masks+--+-- - If 'Graphics.Vulkan.Core10.Handles.RenderPass' was not specified+-- with non-zero view masks, each element of @pAttachments@ that is+-- referenced by @fragmentDensityMapAttachment@ /must/ have a+-- @layerCount@ equal to @1@+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' does not include+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- an element of @pAttachments@ that is referenced by+-- @fragmentDensityMapAttachment@ /must/ have a width at least as large+-- as+-- \(\lceil{\frac{width}{maxFragmentDensityTexelSize_{width}}}\rceil\)+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' does not include+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- an element of @pAttachments@ that is referenced by+-- @fragmentDensityMapAttachment@ /must/ have a height at least as+-- large as+-- \(\lceil{\frac{height}{maxFragmentDensityTexelSize_{height}}}\rceil\)+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' does not include+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- each element of @pAttachments@ /must/ only specify a single mip+-- level+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' does not include+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- each element of @pAttachments@ /must/ have been created with the+-- identity swizzle+--+-- - @width@ /must/ be greater than @0@.+--+-- - @width@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxFramebufferWidth@+--+-- - @height@ /must/ be greater than @0@.+--+-- - @height@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxFramebufferHeight@+--+-- - @layers@ /must/ be greater than @0@.+--+-- - @layers@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxFramebufferLayers@+--+-- - If 'Graphics.Vulkan.Core10.Handles.RenderPass' was specified with+-- non-zero view masks, @layers@ /must/ be @1@+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' does not include+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- each element of @pAttachments@ that is a 2D or 2D array image view+-- taken from a 3D image /must/ not be a depth\/stencil format+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' does not include+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- and @attachmentCount@ is not 0, @pAttachments@ /must/ be a valid+-- pointer to an array of @attachmentCount@ valid+-- 'Graphics.Vulkan.Core10.Handles.ImageView' handles+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-imagelessFramebuffer imageless framebuffer>+-- feature is not enabled, 'Graphics.Vulkan.Core10.BaseType.Flags'+-- /must/ not include+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- the @pNext@ chain /must/ include a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'+-- structure+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- the @attachmentImageInfoCount@ member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'+-- structure included in the @pNext@ chain /must/ be equal to either+-- zero or @attachmentCount@+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- the @width@ member of any element of the @pAttachmentImageInfos@+-- member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'+-- structure included in the @pNext@ chain /must/ be greater than or+-- equal to @width@, except for any element that is referenced by+-- 'Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT'::@fragmentDensityMapAttachment@+-- in 'Graphics.Vulkan.Core10.Handles.RenderPass'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- the @height@ member of any element of the @pAttachmentImageInfos@+-- member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'+-- structure included in the @pNext@ chain /must/ be greater than or+-- equal to @height@, except for any element that is referenced by+-- 'Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT'::@fragmentDensityMapAttachment@+-- in 'Graphics.Vulkan.Core10.Handles.RenderPass'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- the @width@ member of any element of the @pAttachmentImageInfos@+-- member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'+-- structure included in the @pNext@ chain that is referenced by+-- 'Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT'::@fragmentDensityMapAttachment@+-- in 'Graphics.Vulkan.Core10.Handles.RenderPass' /must/ be greater+-- than or equal to+-- \(\lceil{\frac{width}{maxFragmentDensityTexelSize_{width}}}\rceil\)+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- the @height@ member of any element of the @pAttachmentImageInfos@+-- member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'+-- structure included in the @pNext@ chain that is referenced by+-- 'Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT'::@fragmentDensityMapAttachment@+-- in 'Graphics.Vulkan.Core10.Handles.RenderPass' /must/ be greater+-- than or equal to+-- \(\lceil{\frac{height}{maxFragmentDensityTexelSize_{height}}}\rceil\)+--+-- - If multiview is enabled for+-- 'Graphics.Vulkan.Core10.Handles.RenderPass', and+-- 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- the @layerCount@ member of any element of the+-- @pAttachmentImageInfos@ member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'+-- structure included in the @pNext@ chain /must/ be greater than the+-- maximum bit index set in the view mask in the subpasses in which it+-- is used in 'Graphics.Vulkan.Core10.Handles.RenderPass'+--+-- - If multiview is not enabled for+-- 'Graphics.Vulkan.Core10.Handles.RenderPass', and+-- 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- the @layerCount@ member of any element of the+-- @pAttachmentImageInfos@ member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'+-- structure included in the @pNext@ chain /must/ be greater than or+-- equal to @layers@+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- the @usage@ member of any element of the @pAttachmentImageInfos@+-- member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'+-- structure included in the @pNext@ chain that refers to an attachment+-- used as a color attachment or resolve attachment by+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' /must/ include+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- the @usage@ member of any element of the @pAttachmentImageInfos@+-- member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'+-- structure included in the @pNext@ chain that refers to an attachment+-- used as a depth\/stencil attachment by+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' /must/ include+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- the @usage@ member of any element of the @pAttachmentImageInfos@+-- member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'+-- structure included in the @pNext@ chain that refers to an attachment+-- used as a depth\/stencil resolve attachment by+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' /must/ include+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- the @usage@ member of any element of the @pAttachmentImageInfos@+-- member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'+-- structure included in the @pNext@ chain that refers to an attachment+-- used as an input attachment by+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' /must/ include+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+-- at least one element of the @pViewFormats@ member of any element of+-- the @pAttachmentImageInfos@ member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'+-- structure included in the @pNext@ chain /must/ be equal to the+-- corresponding value of+-- 'AttachmentDescription'::'Graphics.Vulkan.Core10.Enums.Format.Format'+-- used to create 'Graphics.Vulkan.Core10.Handles.RenderPass'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FramebufferCreateFlagBits'+-- values+--+-- - 'Graphics.Vulkan.Core10.Handles.RenderPass' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' handle+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.RenderPass', and the+-- elements of @pAttachments@ that are valid handles of non-ignored+-- parameters /must/ have been created, allocated, or retrieved from+-- the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FramebufferCreateFlags',+-- 'Graphics.Vulkan.Core10.Handles.ImageView',+-- 'Graphics.Vulkan.Core10.Handles.RenderPass',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createFramebuffer'+data FramebufferCreateInfo (es :: [Type]) = FramebufferCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FramebufferCreateFlagBits'+ flags :: FramebufferCreateFlags+ , -- | 'Graphics.Vulkan.Core10.Handles.RenderPass' is a render pass defining+ -- what render passes the framebuffer will be compatible with. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility Render Pass Compatibility>+ -- for details.+ renderPass :: RenderPass+ , -- | @pAttachments@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.Handles.ImageView' handles, each of which will+ -- be used as the corresponding attachment in a render pass instance. If+ -- 'Graphics.Vulkan.Core10.BaseType.Flags' includes+ -- 'Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',+ -- this parameter is ignored.+ attachments :: Vector ImageView+ , -- | @width@, @height@ and @layers@ define the dimensions of the framebuffer.+ -- If the render pass uses multiview, then @layers@ /must/ be one and each+ -- attachment requires a number of layers that is greater than the maximum+ -- bit index set in the view mask in the subpasses in which it is used.+ width :: Word32+ , -- No documentation found for Nested "VkFramebufferCreateInfo" "height"+ height :: Word32+ , -- No documentation found for Nested "VkFramebufferCreateInfo" "layers"+ layers :: Word32+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (FramebufferCreateInfo es)++instance Extensible FramebufferCreateInfo where+ extensibleType = STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO+ setNext x next = x{next = next}+ getNext FramebufferCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends FramebufferCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @FramebufferAttachmentsCreateInfo = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (FramebufferCreateInfo es) where+ withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p FramebufferCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr FramebufferCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 24 :: Ptr RenderPass)) (renderPass)+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (attachments)) :: Word32))+ pPAttachments' <- ContT $ allocaBytesAligned @ImageView ((Data.Vector.length (attachments)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPAttachments' `plusPtr` (8 * (i)) :: Ptr ImageView) (e)) (attachments)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr ImageView))) (pPAttachments')+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (width)+ lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (height)+ lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (layers)+ lift $ f+ cStructSize = 64+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 24 :: Ptr RenderPass)) (zero)+ pPAttachments' <- ContT $ allocaBytesAligned @ImageView ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPAttachments' `plusPtr` (8 * (i)) :: Ptr ImageView) (e)) (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr ImageView))) (pPAttachments')+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)+ lift $ f++instance PeekChain es => FromCStruct (FramebufferCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @FramebufferCreateFlags ((p `plusPtr` 16 :: Ptr FramebufferCreateFlags))+ renderPass <- peek @RenderPass ((p `plusPtr` 24 :: Ptr RenderPass))+ attachmentCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pAttachments <- peek @(Ptr ImageView) ((p `plusPtr` 40 :: Ptr (Ptr ImageView)))+ pAttachments' <- generateM (fromIntegral attachmentCount) (\i -> peek @ImageView ((pAttachments `advancePtrBytes` (8 * (i)) :: Ptr ImageView)))+ width <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+ height <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))+ layers <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))+ pure $ FramebufferCreateInfo+ next flags renderPass pAttachments' width height layers++instance es ~ '[] => Zero (FramebufferCreateInfo es) where+ zero = FramebufferCreateInfo+ ()+ zero+ zero+ mempty+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core10/Pass.hs-boot view
@@ -0,0 +1,64 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Pass ( AttachmentDescription+ , AttachmentReference+ , FramebufferCreateInfo+ , RenderPassCreateInfo+ , SubpassDependency+ , SubpassDescription+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+data AttachmentDescription++instance ToCStruct AttachmentDescription+instance Show AttachmentDescription++instance FromCStruct AttachmentDescription+++data AttachmentReference++instance ToCStruct AttachmentReference+instance Show AttachmentReference++instance FromCStruct AttachmentReference+++type role FramebufferCreateInfo nominal+data FramebufferCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (FramebufferCreateInfo es)+instance Show (Chain es) => Show (FramebufferCreateInfo es)++instance PeekChain es => FromCStruct (FramebufferCreateInfo es)+++type role RenderPassCreateInfo nominal+data RenderPassCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (RenderPassCreateInfo es)+instance Show (Chain es) => Show (RenderPassCreateInfo es)++instance PeekChain es => FromCStruct (RenderPassCreateInfo es)+++data SubpassDependency++instance ToCStruct SubpassDependency+instance Show SubpassDependency++instance FromCStruct SubpassDependency+++data SubpassDescription++instance ToCStruct SubpassDescription+instance Show SubpassDescription++instance FromCStruct SubpassDescription+
src/Graphics/Vulkan/Core10/Pipeline.hs view
@@ -1,4399 +1,3461 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.Pipeline- ( VkBlendFactor(..)- , pattern VK_BLEND_FACTOR_ZERO- , pattern VK_BLEND_FACTOR_ONE- , pattern VK_BLEND_FACTOR_SRC_COLOR- , pattern VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR- , pattern VK_BLEND_FACTOR_DST_COLOR- , pattern VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR- , pattern VK_BLEND_FACTOR_SRC_ALPHA- , pattern VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA- , pattern VK_BLEND_FACTOR_DST_ALPHA- , pattern VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA- , pattern VK_BLEND_FACTOR_CONSTANT_COLOR- , pattern VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR- , pattern VK_BLEND_FACTOR_CONSTANT_ALPHA- , pattern VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA- , pattern VK_BLEND_FACTOR_SRC_ALPHA_SATURATE- , pattern VK_BLEND_FACTOR_SRC1_COLOR- , pattern VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR- , pattern VK_BLEND_FACTOR_SRC1_ALPHA- , pattern VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA- , VkBlendOp(..)- , pattern VK_BLEND_OP_ADD- , pattern VK_BLEND_OP_SUBTRACT- , pattern VK_BLEND_OP_REVERSE_SUBTRACT- , pattern VK_BLEND_OP_MIN- , pattern VK_BLEND_OP_MAX- , VkCompareOp(..)- , pattern VK_COMPARE_OP_NEVER- , pattern VK_COMPARE_OP_LESS- , pattern VK_COMPARE_OP_EQUAL- , pattern VK_COMPARE_OP_LESS_OR_EQUAL- , pattern VK_COMPARE_OP_GREATER- , pattern VK_COMPARE_OP_NOT_EQUAL- , pattern VK_COMPARE_OP_GREATER_OR_EQUAL- , pattern VK_COMPARE_OP_ALWAYS- , VkDynamicState(..)- , pattern VK_DYNAMIC_STATE_VIEWPORT- , pattern VK_DYNAMIC_STATE_SCISSOR- , pattern VK_DYNAMIC_STATE_LINE_WIDTH- , pattern VK_DYNAMIC_STATE_DEPTH_BIAS- , pattern VK_DYNAMIC_STATE_BLEND_CONSTANTS- , pattern VK_DYNAMIC_STATE_DEPTH_BOUNDS- , pattern VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK- , pattern VK_DYNAMIC_STATE_STENCIL_WRITE_MASK- , pattern VK_DYNAMIC_STATE_STENCIL_REFERENCE- , VkPolygonMode(..)- , pattern VK_POLYGON_MODE_FILL- , pattern VK_POLYGON_MODE_LINE- , pattern VK_POLYGON_MODE_POINT- , VkFrontFace(..)- , pattern VK_FRONT_FACE_COUNTER_CLOCKWISE- , pattern VK_FRONT_FACE_CLOCKWISE- , VkLogicOp(..)- , pattern VK_LOGIC_OP_CLEAR- , pattern VK_LOGIC_OP_AND- , pattern VK_LOGIC_OP_AND_REVERSE- , pattern VK_LOGIC_OP_COPY- , pattern VK_LOGIC_OP_AND_INVERTED- , pattern VK_LOGIC_OP_NO_OP- , pattern VK_LOGIC_OP_XOR- , pattern VK_LOGIC_OP_OR- , pattern VK_LOGIC_OP_NOR- , pattern VK_LOGIC_OP_EQUIVALENT- , pattern VK_LOGIC_OP_INVERT- , pattern VK_LOGIC_OP_OR_REVERSE- , pattern VK_LOGIC_OP_COPY_INVERTED- , pattern VK_LOGIC_OP_OR_INVERTED- , pattern VK_LOGIC_OP_NAND- , pattern VK_LOGIC_OP_SET- , VkPrimitiveTopology(..)- , pattern VK_PRIMITIVE_TOPOLOGY_POINT_LIST- , pattern VK_PRIMITIVE_TOPOLOGY_LINE_LIST- , pattern VK_PRIMITIVE_TOPOLOGY_LINE_STRIP- , pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST- , pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP- , pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN- , pattern VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY- , pattern VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY- , pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY- , pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY- , pattern VK_PRIMITIVE_TOPOLOGY_PATCH_LIST- , VkStencilOp(..)- , pattern VK_STENCIL_OP_KEEP- , pattern VK_STENCIL_OP_ZERO- , pattern VK_STENCIL_OP_REPLACE- , pattern VK_STENCIL_OP_INCREMENT_AND_CLAMP- , pattern VK_STENCIL_OP_DECREMENT_AND_CLAMP- , pattern VK_STENCIL_OP_INVERT- , pattern VK_STENCIL_OP_INCREMENT_AND_WRAP- , pattern VK_STENCIL_OP_DECREMENT_AND_WRAP- , VkVertexInputRate(..)- , pattern VK_VERTEX_INPUT_RATE_VERTEX- , pattern VK_VERTEX_INPUT_RATE_INSTANCE- , VkPipelineDepthStencilStateCreateFlags(..)- , VkPipelineDynamicStateCreateFlags(..)- , VkPipelineColorBlendStateCreateFlags(..)- , VkPipelineMultisampleStateCreateFlags(..)- , VkPipelineRasterizationStateCreateFlags(..)- , VkPipelineViewportStateCreateFlags(..)- , VkPipelineTessellationStateCreateFlags(..)- , VkPipelineInputAssemblyStateCreateFlags(..)- , VkPipelineVertexInputStateCreateFlags(..)- , VkPipelineShaderStageCreateFlags(..)- , VkShaderStageFlagBits(..)- , pattern VK_SHADER_STAGE_VERTEX_BIT- , pattern VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT- , pattern VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT- , pattern VK_SHADER_STAGE_GEOMETRY_BIT- , pattern VK_SHADER_STAGE_FRAGMENT_BIT- , pattern VK_SHADER_STAGE_COMPUTE_BIT- , pattern VK_SHADER_STAGE_ALL_GRAPHICS- , pattern VK_SHADER_STAGE_ALL- , VkPipelineCreateFlagBits(..)- , pattern VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT- , pattern VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT- , pattern VK_PIPELINE_CREATE_DERIVATIVE_BIT- , VkColorComponentFlagBits(..)- , pattern VK_COLOR_COMPONENT_R_BIT- , pattern VK_COLOR_COMPONENT_G_BIT- , pattern VK_COLOR_COMPONENT_B_BIT- , pattern VK_COLOR_COMPONENT_A_BIT- , VkCullModeFlagBits(..)- , pattern VK_CULL_MODE_FRONT_BIT- , pattern VK_CULL_MODE_BACK_BIT- , pattern VK_CULL_MODE_NONE- , pattern VK_CULL_MODE_FRONT_AND_BACK- , VkPipeline- , VkPipelineLayout- , VkRenderPass- , vkCreateGraphicsPipelines- , vkCreateComputePipelines- , vkDestroyPipeline- , VkOffset2D(..)- , VkExtent2D(..)- , VkViewport(..)- , VkRect2D(..)- , VkSpecializationMapEntry(..)- , VkSpecializationInfo(..)- , VkPipelineShaderStageCreateInfo(..)- , VkComputePipelineCreateInfo(..)- , VkVertexInputBindingDescription(..)- , VkVertexInputAttributeDescription(..)- , VkPipelineVertexInputStateCreateInfo(..)- , VkPipelineInputAssemblyStateCreateInfo(..)- , VkPipelineTessellationStateCreateInfo(..)- , VkPipelineViewportStateCreateInfo(..)- , VkPipelineRasterizationStateCreateInfo(..)- , VkPipelineMultisampleStateCreateInfo(..)- , VkPipelineColorBlendAttachmentState(..)- , VkPipelineColorBlendStateCreateInfo(..)- , VkPipelineDynamicStateCreateInfo(..)- , VkStencilOpState(..)- , VkPipelineDepthStencilStateCreateInfo(..)- , VkGraphicsPipelineCreateInfo(..)- , VkPipelineCreateFlags- , VkColorComponentFlags- , VkCullModeFlags- , VkSampleMask- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Int- ( Int32- )-import Data.Vector.Storable.Sized- ( Vector- )-import Data.Word- ( Word32- )-import Foreign.C.Types- ( CChar(..)- , CFloat(..)- , CSize(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkFormat(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkSampleCountFlagBits(..)- , VkDevice- )-import Graphics.Vulkan.Core10.PipelineCache- ( VkPipelineCache- )-import Graphics.Vulkan.Core10.Shader- ( VkShaderModule- )----- ** VkBlendFactor---- | VkBlendFactor - Framebuffer blending factors------ = Description------ The semantics of each enum value is described in the table below:------ +--------------------------------------------+---------------------+--------+--- | VkBlendFactor | RGB Blend Factors | Alpha |--- | | (Sr,Sg,Sb) or | Blend |--- | | (Dr,Dg,Db) | Factor |--- | | | (Sa or |--- | | | Da) |--- +============================================+=====================+========+--- | @VK_BLEND_FACTOR_ZERO@ | (0,0,0) | 0 |--- +--------------------------------------------+---------------------+--------+--- | @VK_BLEND_FACTOR_ONE@ | (1,1,1) | 1 |--- +--------------------------------------------+---------------------+--------+--- | @VK_BLEND_FACTOR_SRC_COLOR@ | (Rs0,Gs0,Bs0) | As0 |--- +--------------------------------------------+---------------------+--------+--- | @VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR@ | (1-Rs0,1-Gs0,1-Bs0) | 1-As0 |--- +--------------------------------------------+---------------------+--------+--- | @VK_BLEND_FACTOR_DST_COLOR@ | (Rd,Gd,Bd) | Ad |--- +--------------------------------------------+---------------------+--------+--- | @VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR@ | (1-Rd,1-Gd,1-Bd) | 1-Ad |--- +--------------------------------------------+---------------------+--------+--- | @VK_BLEND_FACTOR_SRC_ALPHA@ | (As0,As0,As0) | As0 |--- +--------------------------------------------+---------------------+--------+--- | @VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA@ | (1-As0,1-As0,1-As0) | 1-As0 |--- +--------------------------------------------+---------------------+--------+--- | @VK_BLEND_FACTOR_DST_ALPHA@ | (Ad,Ad,Ad) | Ad |--- +--------------------------------------------+---------------------+--------+--- | @VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA@ | (1-Ad,1-Ad,1-Ad) | 1-Ad |--- +--------------------------------------------+---------------------+--------+--- | @VK_BLEND_FACTOR_CONSTANT_COLOR@ | (Rc,Gc,Bc) | Ac |--- +--------------------------------------------+---------------------+--------+--- | @VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR@ | (1-Rc,1-Gc,1-Bc) | 1-Ac |--- +--------------------------------------------+---------------------+--------+--- | @VK_BLEND_FACTOR_CONSTANT_ALPHA@ | (Ac,Ac,Ac) | Ac |--- +--------------------------------------------+---------------------+--------+--- | @VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA@ | (1-Ac,1-Ac,1-Ac) | 1-Ac |--- +--------------------------------------------+---------------------+--------+--- | @VK_BLEND_FACTOR_SRC_ALPHA_SATURATE@ | (f,f,f); f = | 1 |--- | | min(As0,1-Ad) | |--- +--------------------------------------------+---------------------+--------+--- | @VK_BLEND_FACTOR_SRC1_COLOR@ | (Rs1,Gs1,Bs1) | As1 |--- +--------------------------------------------+---------------------+--------+--- | @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@ | (1-Rs1,1-Gs1,1-Bs1) | 1-As1 |--- +--------------------------------------------+---------------------+--------+--- | @VK_BLEND_FACTOR_SRC1_ALPHA@ | (As1,As1,As1) | As1 |--- +--------------------------------------------+---------------------+--------+--- | @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@ | (1-As1,1-As1,1-As1) | 1-As1 |--- +--------------------------------------------+---------------------+--------+------ Blend Factors------ In this table, the following conventions are used:------ - Rs0,Gs0,Bs0 and As0 represent the first source color R, G, B, and A--- components, respectively, for the fragment output location--- corresponding to the color attachment being blended.------ - Rs1,Gs1,Bs1 and As1 represent the second source color R, G, B, and A--- components, respectively, used in dual source blending modes, for--- the fragment output location corresponding to the color attachment--- being blended.------ - Rd,Gd,Bd and Ad represent the R, G, B, and A components of the--- destination color. That is, the color currently in the corresponding--- color attachment for this fragment\/sample.------ - Rc,Gc,Bc and Ac represent the blend constant R, G, B, and A--- components, respectively.------ = See Also------ 'VkPipelineColorBlendAttachmentState'-newtype VkBlendFactor = VkBlendFactor Int32- deriving (Eq, Ord, Storable)--instance Show VkBlendFactor where- showsPrec _ VK_BLEND_FACTOR_ZERO = showString "VK_BLEND_FACTOR_ZERO"- showsPrec _ VK_BLEND_FACTOR_ONE = showString "VK_BLEND_FACTOR_ONE"- showsPrec _ VK_BLEND_FACTOR_SRC_COLOR = showString "VK_BLEND_FACTOR_SRC_COLOR"- showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR"- showsPrec _ VK_BLEND_FACTOR_DST_COLOR = showString "VK_BLEND_FACTOR_DST_COLOR"- showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = showString "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR"- showsPrec _ VK_BLEND_FACTOR_SRC_ALPHA = showString "VK_BLEND_FACTOR_SRC_ALPHA"- showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"- showsPrec _ VK_BLEND_FACTOR_DST_ALPHA = showString "VK_BLEND_FACTOR_DST_ALPHA"- showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = showString "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA"- showsPrec _ VK_BLEND_FACTOR_CONSTANT_COLOR = showString "VK_BLEND_FACTOR_CONSTANT_COLOR"- showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = showString "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR"- showsPrec _ VK_BLEND_FACTOR_CONSTANT_ALPHA = showString "VK_BLEND_FACTOR_CONSTANT_ALPHA"- showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = showString "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA"- showsPrec _ VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = showString "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE"- showsPrec _ VK_BLEND_FACTOR_SRC1_COLOR = showString "VK_BLEND_FACTOR_SRC1_COLOR"- showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"- showsPrec _ VK_BLEND_FACTOR_SRC1_ALPHA = showString "VK_BLEND_FACTOR_SRC1_ALPHA"- showsPrec _ VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = showString "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"- showsPrec p (VkBlendFactor x) = showParen (p >= 11) (showString "VkBlendFactor " . showsPrec 11 x)--instance Read VkBlendFactor where- readPrec = parens ( choose [ ("VK_BLEND_FACTOR_ZERO", pure VK_BLEND_FACTOR_ZERO)- , ("VK_BLEND_FACTOR_ONE", pure VK_BLEND_FACTOR_ONE)- , ("VK_BLEND_FACTOR_SRC_COLOR", pure VK_BLEND_FACTOR_SRC_COLOR)- , ("VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR", pure VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR)- , ("VK_BLEND_FACTOR_DST_COLOR", pure VK_BLEND_FACTOR_DST_COLOR)- , ("VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR", pure VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR)- , ("VK_BLEND_FACTOR_SRC_ALPHA", pure VK_BLEND_FACTOR_SRC_ALPHA)- , ("VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA", pure VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA)- , ("VK_BLEND_FACTOR_DST_ALPHA", pure VK_BLEND_FACTOR_DST_ALPHA)- , ("VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA", pure VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA)- , ("VK_BLEND_FACTOR_CONSTANT_COLOR", pure VK_BLEND_FACTOR_CONSTANT_COLOR)- , ("VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR", pure VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR)- , ("VK_BLEND_FACTOR_CONSTANT_ALPHA", pure VK_BLEND_FACTOR_CONSTANT_ALPHA)- , ("VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA", pure VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA)- , ("VK_BLEND_FACTOR_SRC_ALPHA_SATURATE", pure VK_BLEND_FACTOR_SRC_ALPHA_SATURATE)- , ("VK_BLEND_FACTOR_SRC1_COLOR", pure VK_BLEND_FACTOR_SRC1_COLOR)- , ("VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR", pure VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR)- , ("VK_BLEND_FACTOR_SRC1_ALPHA", pure VK_BLEND_FACTOR_SRC1_ALPHA)- , ("VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA", pure VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA)- ] +++- prec 10 (do- expectP (Ident "VkBlendFactor")- v <- step readPrec- pure (VkBlendFactor v)- )- )---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ZERO"-pattern VK_BLEND_FACTOR_ZERO :: VkBlendFactor-pattern VK_BLEND_FACTOR_ZERO = VkBlendFactor 0---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE"-pattern VK_BLEND_FACTOR_ONE :: VkBlendFactor-pattern VK_BLEND_FACTOR_ONE = VkBlendFactor 1---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC_COLOR"-pattern VK_BLEND_FACTOR_SRC_COLOR :: VkBlendFactor-pattern VK_BLEND_FACTOR_SRC_COLOR = VkBlendFactor 2---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR"-pattern VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR :: VkBlendFactor-pattern VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = VkBlendFactor 3---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_DST_COLOR"-pattern VK_BLEND_FACTOR_DST_COLOR :: VkBlendFactor-pattern VK_BLEND_FACTOR_DST_COLOR = VkBlendFactor 4---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR"-pattern VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR :: VkBlendFactor-pattern VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = VkBlendFactor 5---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC_ALPHA"-pattern VK_BLEND_FACTOR_SRC_ALPHA :: VkBlendFactor-pattern VK_BLEND_FACTOR_SRC_ALPHA = VkBlendFactor 6---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"-pattern VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA :: VkBlendFactor-pattern VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = VkBlendFactor 7---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_DST_ALPHA"-pattern VK_BLEND_FACTOR_DST_ALPHA :: VkBlendFactor-pattern VK_BLEND_FACTOR_DST_ALPHA = VkBlendFactor 8---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA"-pattern VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA :: VkBlendFactor-pattern VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = VkBlendFactor 9---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_CONSTANT_COLOR"-pattern VK_BLEND_FACTOR_CONSTANT_COLOR :: VkBlendFactor-pattern VK_BLEND_FACTOR_CONSTANT_COLOR = VkBlendFactor 10---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR"-pattern VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR :: VkBlendFactor-pattern VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = VkBlendFactor 11---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_CONSTANT_ALPHA"-pattern VK_BLEND_FACTOR_CONSTANT_ALPHA :: VkBlendFactor-pattern VK_BLEND_FACTOR_CONSTANT_ALPHA = VkBlendFactor 12---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA"-pattern VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA :: VkBlendFactor-pattern VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = VkBlendFactor 13---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE"-pattern VK_BLEND_FACTOR_SRC_ALPHA_SATURATE :: VkBlendFactor-pattern VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = VkBlendFactor 14---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC1_COLOR"-pattern VK_BLEND_FACTOR_SRC1_COLOR :: VkBlendFactor-pattern VK_BLEND_FACTOR_SRC1_COLOR = VkBlendFactor 15---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"-pattern VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR :: VkBlendFactor-pattern VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = VkBlendFactor 16---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_SRC1_ALPHA"-pattern VK_BLEND_FACTOR_SRC1_ALPHA :: VkBlendFactor-pattern VK_BLEND_FACTOR_SRC1_ALPHA = VkBlendFactor 17---- No documentation found for Nested "VkBlendFactor" "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"-pattern VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA :: VkBlendFactor-pattern VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = VkBlendFactor 18--- ** VkBlendOp---- | VkBlendOp - Framebuffer blending operations------ = Description------ The semantics of each basic blend operations is described in the table--- below:------ +--------------------------------+--------------------+----------------+--- | VkBlendOp | RGB Components | Alpha |--- | | | Component |--- +================================+====================+================+--- | @VK_BLEND_OP_ADD@ | R = Rs0 × Sr + Rd | A = As0 × Sa + |--- | | × Dr | Ad × Da |--- | | G = Gs0 × Sg + Gd | |--- | | × Dg | |--- | | B = Bs0 × Sb + Bd | |--- | | × Db | |--- +--------------------------------+--------------------+----------------+--- | @VK_BLEND_OP_SUBTRACT@ | R = Rs0 × Sr - Rd | A = As0 × Sa - |--- | | × Dr | Ad × Da |--- | | G = Gs0 × Sg - Gd | |--- | | × Dg | |--- | | B = Bs0 × Sb - Bd | |--- | | × Db | |--- +--------------------------------+--------------------+----------------+--- | @VK_BLEND_OP_REVERSE_SUBTRACT@ | R = Rd × Dr - Rs0 | A = Ad × Da - |--- | | × Sr | As0 × Sa |--- | | G = Gd × Dg - Gs0 | |--- | | × Sg | |--- | | B = Bd × Db - Bs0 | |--- | | × Sb | |--- +--------------------------------+--------------------+----------------+--- | @VK_BLEND_OP_MIN@ | R = min(Rs0,Rd) | A = |--- | | G = min(Gs0,Gd) | min(As0,Ad) |--- | | B = min(Bs0,Bd) | |--- +--------------------------------+--------------------+----------------+--- | @VK_BLEND_OP_MAX@ | R = max(Rs0,Rd) | A = |--- | | G = max(Gs0,Gd) | max(As0,Ad) |--- | | B = max(Bs0,Bd) | |--- +--------------------------------+--------------------+----------------+------ Basic Blend Operations------ In this table, the following conventions are used:------ - Rs0, Gs0, Bs0 and As0 represent the first source color R, G, B, and--- A components, respectively.------ - Rd, Gd, Bd and Ad represent the R, G, B, and A components of the--- destination color. That is, the color currently in the corresponding--- color attachment for this fragment\/sample.------ - Sr, Sg, Sb and Sa represent the source blend factor R, G, B, and A--- components, respectively.------ - Dr, Dg, Db and Da represent the destination blend factor R, G, B,--- and A components, respectively.------ The blending operation produces a new set of values R, G, B and A, which--- are written to the framebuffer attachment. If blending is not enabled--- for this attachment, then R, G, B and A are assigned Rs0, Gs0, Bs0 and--- As0, respectively.------ If the color attachment is fixed-point, the components of the source and--- destination values and blend factors are each clamped to [0,1] or [-1,1]--- respectively for an unsigned normalized or signed normalized color--- attachment prior to evaluating the blend operations. If the color--- attachment is floating-point, no clamping occurs.------ = See Also------ 'VkPipelineColorBlendAttachmentState'-newtype VkBlendOp = VkBlendOp Int32- deriving (Eq, Ord, Storable)--instance Show VkBlendOp where- showsPrec _ VK_BLEND_OP_ADD = showString "VK_BLEND_OP_ADD"- showsPrec _ VK_BLEND_OP_SUBTRACT = showString "VK_BLEND_OP_SUBTRACT"- showsPrec _ VK_BLEND_OP_REVERSE_SUBTRACT = showString "VK_BLEND_OP_REVERSE_SUBTRACT"- showsPrec _ VK_BLEND_OP_MIN = showString "VK_BLEND_OP_MIN"- showsPrec _ VK_BLEND_OP_MAX = showString "VK_BLEND_OP_MAX"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkBlendOp 1000148000) = showString "VK_BLEND_OP_ZERO_EXT"- showsPrec _ (VkBlendOp 1000148001) = showString "VK_BLEND_OP_SRC_EXT"- showsPrec _ (VkBlendOp 1000148002) = showString "VK_BLEND_OP_DST_EXT"- showsPrec _ (VkBlendOp 1000148003) = showString "VK_BLEND_OP_SRC_OVER_EXT"- showsPrec _ (VkBlendOp 1000148004) = showString "VK_BLEND_OP_DST_OVER_EXT"- showsPrec _ (VkBlendOp 1000148005) = showString "VK_BLEND_OP_SRC_IN_EXT"- showsPrec _ (VkBlendOp 1000148006) = showString "VK_BLEND_OP_DST_IN_EXT"- showsPrec _ (VkBlendOp 1000148007) = showString "VK_BLEND_OP_SRC_OUT_EXT"- showsPrec _ (VkBlendOp 1000148008) = showString "VK_BLEND_OP_DST_OUT_EXT"- showsPrec _ (VkBlendOp 1000148009) = showString "VK_BLEND_OP_SRC_ATOP_EXT"- showsPrec _ (VkBlendOp 1000148010) = showString "VK_BLEND_OP_DST_ATOP_EXT"- showsPrec _ (VkBlendOp 1000148011) = showString "VK_BLEND_OP_XOR_EXT"- showsPrec _ (VkBlendOp 1000148012) = showString "VK_BLEND_OP_MULTIPLY_EXT"- showsPrec _ (VkBlendOp 1000148013) = showString "VK_BLEND_OP_SCREEN_EXT"- showsPrec _ (VkBlendOp 1000148014) = showString "VK_BLEND_OP_OVERLAY_EXT"- showsPrec _ (VkBlendOp 1000148015) = showString "VK_BLEND_OP_DARKEN_EXT"- showsPrec _ (VkBlendOp 1000148016) = showString "VK_BLEND_OP_LIGHTEN_EXT"- showsPrec _ (VkBlendOp 1000148017) = showString "VK_BLEND_OP_COLORDODGE_EXT"- showsPrec _ (VkBlendOp 1000148018) = showString "VK_BLEND_OP_COLORBURN_EXT"- showsPrec _ (VkBlendOp 1000148019) = showString "VK_BLEND_OP_HARDLIGHT_EXT"- showsPrec _ (VkBlendOp 1000148020) = showString "VK_BLEND_OP_SOFTLIGHT_EXT"- showsPrec _ (VkBlendOp 1000148021) = showString "VK_BLEND_OP_DIFFERENCE_EXT"- showsPrec _ (VkBlendOp 1000148022) = showString "VK_BLEND_OP_EXCLUSION_EXT"- showsPrec _ (VkBlendOp 1000148023) = showString "VK_BLEND_OP_INVERT_EXT"- showsPrec _ (VkBlendOp 1000148024) = showString "VK_BLEND_OP_INVERT_RGB_EXT"- showsPrec _ (VkBlendOp 1000148025) = showString "VK_BLEND_OP_LINEARDODGE_EXT"- showsPrec _ (VkBlendOp 1000148026) = showString "VK_BLEND_OP_LINEARBURN_EXT"- showsPrec _ (VkBlendOp 1000148027) = showString "VK_BLEND_OP_VIVIDLIGHT_EXT"- showsPrec _ (VkBlendOp 1000148028) = showString "VK_BLEND_OP_LINEARLIGHT_EXT"- showsPrec _ (VkBlendOp 1000148029) = showString "VK_BLEND_OP_PINLIGHT_EXT"- showsPrec _ (VkBlendOp 1000148030) = showString "VK_BLEND_OP_HARDMIX_EXT"- showsPrec _ (VkBlendOp 1000148031) = showString "VK_BLEND_OP_HSL_HUE_EXT"- showsPrec _ (VkBlendOp 1000148032) = showString "VK_BLEND_OP_HSL_SATURATION_EXT"- showsPrec _ (VkBlendOp 1000148033) = showString "VK_BLEND_OP_HSL_COLOR_EXT"- showsPrec _ (VkBlendOp 1000148034) = showString "VK_BLEND_OP_HSL_LUMINOSITY_EXT"- showsPrec _ (VkBlendOp 1000148035) = showString "VK_BLEND_OP_PLUS_EXT"- showsPrec _ (VkBlendOp 1000148036) = showString "VK_BLEND_OP_PLUS_CLAMPED_EXT"- showsPrec _ (VkBlendOp 1000148037) = showString "VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT"- showsPrec _ (VkBlendOp 1000148038) = showString "VK_BLEND_OP_PLUS_DARKER_EXT"- showsPrec _ (VkBlendOp 1000148039) = showString "VK_BLEND_OP_MINUS_EXT"- showsPrec _ (VkBlendOp 1000148040) = showString "VK_BLEND_OP_MINUS_CLAMPED_EXT"- showsPrec _ (VkBlendOp 1000148041) = showString "VK_BLEND_OP_CONTRAST_EXT"- showsPrec _ (VkBlendOp 1000148042) = showString "VK_BLEND_OP_INVERT_OVG_EXT"- showsPrec _ (VkBlendOp 1000148043) = showString "VK_BLEND_OP_RED_EXT"- showsPrec _ (VkBlendOp 1000148044) = showString "VK_BLEND_OP_GREEN_EXT"- showsPrec _ (VkBlendOp 1000148045) = showString "VK_BLEND_OP_BLUE_EXT"- showsPrec p (VkBlendOp x) = showParen (p >= 11) (showString "VkBlendOp " . showsPrec 11 x)--instance Read VkBlendOp where- readPrec = parens ( choose [ ("VK_BLEND_OP_ADD", pure VK_BLEND_OP_ADD)- , ("VK_BLEND_OP_SUBTRACT", pure VK_BLEND_OP_SUBTRACT)- , ("VK_BLEND_OP_REVERSE_SUBTRACT", pure VK_BLEND_OP_REVERSE_SUBTRACT)- , ("VK_BLEND_OP_MIN", pure VK_BLEND_OP_MIN)- , ("VK_BLEND_OP_MAX", pure VK_BLEND_OP_MAX)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_BLEND_OP_ZERO_EXT", pure (VkBlendOp 1000148000))- , ("VK_BLEND_OP_SRC_EXT", pure (VkBlendOp 1000148001))- , ("VK_BLEND_OP_DST_EXT", pure (VkBlendOp 1000148002))- , ("VK_BLEND_OP_SRC_OVER_EXT", pure (VkBlendOp 1000148003))- , ("VK_BLEND_OP_DST_OVER_EXT", pure (VkBlendOp 1000148004))- , ("VK_BLEND_OP_SRC_IN_EXT", pure (VkBlendOp 1000148005))- , ("VK_BLEND_OP_DST_IN_EXT", pure (VkBlendOp 1000148006))- , ("VK_BLEND_OP_SRC_OUT_EXT", pure (VkBlendOp 1000148007))- , ("VK_BLEND_OP_DST_OUT_EXT", pure (VkBlendOp 1000148008))- , ("VK_BLEND_OP_SRC_ATOP_EXT", pure (VkBlendOp 1000148009))- , ("VK_BLEND_OP_DST_ATOP_EXT", pure (VkBlendOp 1000148010))- , ("VK_BLEND_OP_XOR_EXT", pure (VkBlendOp 1000148011))- , ("VK_BLEND_OP_MULTIPLY_EXT", pure (VkBlendOp 1000148012))- , ("VK_BLEND_OP_SCREEN_EXT", pure (VkBlendOp 1000148013))- , ("VK_BLEND_OP_OVERLAY_EXT", pure (VkBlendOp 1000148014))- , ("VK_BLEND_OP_DARKEN_EXT", pure (VkBlendOp 1000148015))- , ("VK_BLEND_OP_LIGHTEN_EXT", pure (VkBlendOp 1000148016))- , ("VK_BLEND_OP_COLORDODGE_EXT", pure (VkBlendOp 1000148017))- , ("VK_BLEND_OP_COLORBURN_EXT", pure (VkBlendOp 1000148018))- , ("VK_BLEND_OP_HARDLIGHT_EXT", pure (VkBlendOp 1000148019))- , ("VK_BLEND_OP_SOFTLIGHT_EXT", pure (VkBlendOp 1000148020))- , ("VK_BLEND_OP_DIFFERENCE_EXT", pure (VkBlendOp 1000148021))- , ("VK_BLEND_OP_EXCLUSION_EXT", pure (VkBlendOp 1000148022))- , ("VK_BLEND_OP_INVERT_EXT", pure (VkBlendOp 1000148023))- , ("VK_BLEND_OP_INVERT_RGB_EXT", pure (VkBlendOp 1000148024))- , ("VK_BLEND_OP_LINEARDODGE_EXT", pure (VkBlendOp 1000148025))- , ("VK_BLEND_OP_LINEARBURN_EXT", pure (VkBlendOp 1000148026))- , ("VK_BLEND_OP_VIVIDLIGHT_EXT", pure (VkBlendOp 1000148027))- , ("VK_BLEND_OP_LINEARLIGHT_EXT", pure (VkBlendOp 1000148028))- , ("VK_BLEND_OP_PINLIGHT_EXT", pure (VkBlendOp 1000148029))- , ("VK_BLEND_OP_HARDMIX_EXT", pure (VkBlendOp 1000148030))- , ("VK_BLEND_OP_HSL_HUE_EXT", pure (VkBlendOp 1000148031))- , ("VK_BLEND_OP_HSL_SATURATION_EXT", pure (VkBlendOp 1000148032))- , ("VK_BLEND_OP_HSL_COLOR_EXT", pure (VkBlendOp 1000148033))- , ("VK_BLEND_OP_HSL_LUMINOSITY_EXT", pure (VkBlendOp 1000148034))- , ("VK_BLEND_OP_PLUS_EXT", pure (VkBlendOp 1000148035))- , ("VK_BLEND_OP_PLUS_CLAMPED_EXT", pure (VkBlendOp 1000148036))- , ("VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT", pure (VkBlendOp 1000148037))- , ("VK_BLEND_OP_PLUS_DARKER_EXT", pure (VkBlendOp 1000148038))- , ("VK_BLEND_OP_MINUS_EXT", pure (VkBlendOp 1000148039))- , ("VK_BLEND_OP_MINUS_CLAMPED_EXT", pure (VkBlendOp 1000148040))- , ("VK_BLEND_OP_CONTRAST_EXT", pure (VkBlendOp 1000148041))- , ("VK_BLEND_OP_INVERT_OVG_EXT", pure (VkBlendOp 1000148042))- , ("VK_BLEND_OP_RED_EXT", pure (VkBlendOp 1000148043))- , ("VK_BLEND_OP_GREEN_EXT", pure (VkBlendOp 1000148044))- , ("VK_BLEND_OP_BLUE_EXT", pure (VkBlendOp 1000148045))- ] +++- prec 10 (do- expectP (Ident "VkBlendOp")- v <- step readPrec- pure (VkBlendOp v)- )- )---- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_ADD"-pattern VK_BLEND_OP_ADD :: VkBlendOp-pattern VK_BLEND_OP_ADD = VkBlendOp 0---- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SUBTRACT"-pattern VK_BLEND_OP_SUBTRACT :: VkBlendOp-pattern VK_BLEND_OP_SUBTRACT = VkBlendOp 1---- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_REVERSE_SUBTRACT"-pattern VK_BLEND_OP_REVERSE_SUBTRACT :: VkBlendOp-pattern VK_BLEND_OP_REVERSE_SUBTRACT = VkBlendOp 2---- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MIN"-pattern VK_BLEND_OP_MIN :: VkBlendOp-pattern VK_BLEND_OP_MIN = VkBlendOp 3---- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MAX"-pattern VK_BLEND_OP_MAX :: VkBlendOp-pattern VK_BLEND_OP_MAX = VkBlendOp 4--- ** VkCompareOp---- | VkCompareOp - Stencil comparison function------ = See Also------ 'VkPipelineDepthStencilStateCreateInfo',--- 'Graphics.Vulkan.Core10.Sampler.VkSamplerCreateInfo', 'VkStencilOpState'-newtype VkCompareOp = VkCompareOp Int32- deriving (Eq, Ord, Storable)--instance Show VkCompareOp where- showsPrec _ VK_COMPARE_OP_NEVER = showString "VK_COMPARE_OP_NEVER"- showsPrec _ VK_COMPARE_OP_LESS = showString "VK_COMPARE_OP_LESS"- showsPrec _ VK_COMPARE_OP_EQUAL = showString "VK_COMPARE_OP_EQUAL"- showsPrec _ VK_COMPARE_OP_LESS_OR_EQUAL = showString "VK_COMPARE_OP_LESS_OR_EQUAL"- showsPrec _ VK_COMPARE_OP_GREATER = showString "VK_COMPARE_OP_GREATER"- showsPrec _ VK_COMPARE_OP_NOT_EQUAL = showString "VK_COMPARE_OP_NOT_EQUAL"- showsPrec _ VK_COMPARE_OP_GREATER_OR_EQUAL = showString "VK_COMPARE_OP_GREATER_OR_EQUAL"- showsPrec _ VK_COMPARE_OP_ALWAYS = showString "VK_COMPARE_OP_ALWAYS"- showsPrec p (VkCompareOp x) = showParen (p >= 11) (showString "VkCompareOp " . showsPrec 11 x)--instance Read VkCompareOp where- readPrec = parens ( choose [ ("VK_COMPARE_OP_NEVER", pure VK_COMPARE_OP_NEVER)- , ("VK_COMPARE_OP_LESS", pure VK_COMPARE_OP_LESS)- , ("VK_COMPARE_OP_EQUAL", pure VK_COMPARE_OP_EQUAL)- , ("VK_COMPARE_OP_LESS_OR_EQUAL", pure VK_COMPARE_OP_LESS_OR_EQUAL)- , ("VK_COMPARE_OP_GREATER", pure VK_COMPARE_OP_GREATER)- , ("VK_COMPARE_OP_NOT_EQUAL", pure VK_COMPARE_OP_NOT_EQUAL)- , ("VK_COMPARE_OP_GREATER_OR_EQUAL", pure VK_COMPARE_OP_GREATER_OR_EQUAL)- , ("VK_COMPARE_OP_ALWAYS", pure VK_COMPARE_OP_ALWAYS)- ] +++- prec 10 (do- expectP (Ident "VkCompareOp")- v <- step readPrec- pure (VkCompareOp v)- )- )---- | @VK_COMPARE_OP_NEVER@ specifies that the test never passes.-pattern VK_COMPARE_OP_NEVER :: VkCompareOp-pattern VK_COMPARE_OP_NEVER = VkCompareOp 0---- | @VK_COMPARE_OP_LESS@ specifies that the test passes when R \< S.-pattern VK_COMPARE_OP_LESS :: VkCompareOp-pattern VK_COMPARE_OP_LESS = VkCompareOp 1---- | @VK_COMPARE_OP_EQUAL@ specifies that the test passes when R = S.-pattern VK_COMPARE_OP_EQUAL :: VkCompareOp-pattern VK_COMPARE_OP_EQUAL = VkCompareOp 2---- | @VK_COMPARE_OP_LESS_OR_EQUAL@ specifies that the test passes when R ≤ S.-pattern VK_COMPARE_OP_LESS_OR_EQUAL :: VkCompareOp-pattern VK_COMPARE_OP_LESS_OR_EQUAL = VkCompareOp 3---- | @VK_COMPARE_OP_GREATER@ specifies that the test passes when R > S.-pattern VK_COMPARE_OP_GREATER :: VkCompareOp-pattern VK_COMPARE_OP_GREATER = VkCompareOp 4---- | @VK_COMPARE_OP_NOT_EQUAL@ specifies that the test passes when R ≠ S.-pattern VK_COMPARE_OP_NOT_EQUAL :: VkCompareOp-pattern VK_COMPARE_OP_NOT_EQUAL = VkCompareOp 5---- | @VK_COMPARE_OP_GREATER_OR_EQUAL@ specifies that the test passes when R ≥--- S.-pattern VK_COMPARE_OP_GREATER_OR_EQUAL :: VkCompareOp-pattern VK_COMPARE_OP_GREATER_OR_EQUAL = VkCompareOp 6---- | @VK_COMPARE_OP_ALWAYS@ specifies that the test always passes.-pattern VK_COMPARE_OP_ALWAYS :: VkCompareOp-pattern VK_COMPARE_OP_ALWAYS = VkCompareOp 7--- ** VkDynamicState---- | VkDynamicState - Indicate which dynamic state is taken from dynamic--- state commands------ = See Also------ 'VkPipelineDynamicStateCreateInfo'-newtype VkDynamicState = VkDynamicState Int32- deriving (Eq, Ord, Storable)--instance Show VkDynamicState where- showsPrec _ VK_DYNAMIC_STATE_VIEWPORT = showString "VK_DYNAMIC_STATE_VIEWPORT"- showsPrec _ VK_DYNAMIC_STATE_SCISSOR = showString "VK_DYNAMIC_STATE_SCISSOR"- showsPrec _ VK_DYNAMIC_STATE_LINE_WIDTH = showString "VK_DYNAMIC_STATE_LINE_WIDTH"- showsPrec _ VK_DYNAMIC_STATE_DEPTH_BIAS = showString "VK_DYNAMIC_STATE_DEPTH_BIAS"- showsPrec _ VK_DYNAMIC_STATE_BLEND_CONSTANTS = showString "VK_DYNAMIC_STATE_BLEND_CONSTANTS"- showsPrec _ VK_DYNAMIC_STATE_DEPTH_BOUNDS = showString "VK_DYNAMIC_STATE_DEPTH_BOUNDS"- showsPrec _ VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = showString "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK"- showsPrec _ VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = showString "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK"- showsPrec _ VK_DYNAMIC_STATE_STENCIL_REFERENCE = showString "VK_DYNAMIC_STATE_STENCIL_REFERENCE"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkDynamicState 1000087000) = showString "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV"- showsPrec _ (VkDynamicState 1000099000) = showString "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT"- showsPrec _ (VkDynamicState 1000143000) = showString "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT"- showsPrec p (VkDynamicState x) = showParen (p >= 11) (showString "VkDynamicState " . showsPrec 11 x)--instance Read VkDynamicState where- readPrec = parens ( choose [ ("VK_DYNAMIC_STATE_VIEWPORT", pure VK_DYNAMIC_STATE_VIEWPORT)- , ("VK_DYNAMIC_STATE_SCISSOR", pure VK_DYNAMIC_STATE_SCISSOR)- , ("VK_DYNAMIC_STATE_LINE_WIDTH", pure VK_DYNAMIC_STATE_LINE_WIDTH)- , ("VK_DYNAMIC_STATE_DEPTH_BIAS", pure VK_DYNAMIC_STATE_DEPTH_BIAS)- , ("VK_DYNAMIC_STATE_BLEND_CONSTANTS", pure VK_DYNAMIC_STATE_BLEND_CONSTANTS)- , ("VK_DYNAMIC_STATE_DEPTH_BOUNDS", pure VK_DYNAMIC_STATE_DEPTH_BOUNDS)- , ("VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK", pure VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK)- , ("VK_DYNAMIC_STATE_STENCIL_WRITE_MASK", pure VK_DYNAMIC_STATE_STENCIL_WRITE_MASK)- , ("VK_DYNAMIC_STATE_STENCIL_REFERENCE", pure VK_DYNAMIC_STATE_STENCIL_REFERENCE)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV", pure (VkDynamicState 1000087000))- , ("VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT", pure (VkDynamicState 1000099000))- , ("VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT", pure (VkDynamicState 1000143000))- ] +++- prec 10 (do- expectP (Ident "VkDynamicState")- v <- step readPrec- pure (VkDynamicState v)- )- )---- | @VK_DYNAMIC_STATE_VIEWPORT@ specifies that the @pViewports@ state in--- @VkPipelineViewportStateCreateInfo@ will be ignored and /must/ be set--- dynamically with--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetViewport' before--- any draw commands. The number of viewports used by a pipeline is still--- specified by the @viewportCount@ member of--- @VkPipelineViewportStateCreateInfo@.-pattern VK_DYNAMIC_STATE_VIEWPORT :: VkDynamicState-pattern VK_DYNAMIC_STATE_VIEWPORT = VkDynamicState 0---- | @VK_DYNAMIC_STATE_SCISSOR@ specifies that the @pScissors@ state in--- @VkPipelineViewportStateCreateInfo@ will be ignored and /must/ be set--- dynamically with--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetScissor' before--- any draw commands. The number of scissor rectangles used by a pipeline--- is still specified by the @scissorCount@ member of--- @VkPipelineViewportStateCreateInfo@.-pattern VK_DYNAMIC_STATE_SCISSOR :: VkDynamicState-pattern VK_DYNAMIC_STATE_SCISSOR = VkDynamicState 1---- | @VK_DYNAMIC_STATE_LINE_WIDTH@ specifies that the @lineWidth@ state in--- @VkPipelineRasterizationStateCreateInfo@ will be ignored and /must/ be--- set dynamically with--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetLineWidth' before--- any draw commands that generate line primitives for the rasterizer.-pattern VK_DYNAMIC_STATE_LINE_WIDTH :: VkDynamicState-pattern VK_DYNAMIC_STATE_LINE_WIDTH = VkDynamicState 2---- | @VK_DYNAMIC_STATE_DEPTH_BIAS@ specifies that the--- @depthBiasConstantFactor@, @depthBiasClamp@ and @depthBiasSlopeFactor@--- states in @VkPipelineRasterizationStateCreateInfo@ will be ignored and--- /must/ be set dynamically with--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetDepthBias' before--- any draws are performed with @depthBiasEnable@ in--- @VkPipelineRasterizationStateCreateInfo@ set to @VK_TRUE@.-pattern VK_DYNAMIC_STATE_DEPTH_BIAS :: VkDynamicState-pattern VK_DYNAMIC_STATE_DEPTH_BIAS = VkDynamicState 3---- | @VK_DYNAMIC_STATE_BLEND_CONSTANTS@ specifies that the @blendConstants@--- state in @VkPipelineColorBlendStateCreateInfo@ will be ignored and--- /must/ be set dynamically with--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetBlendConstants'--- before any draws are performed with a pipeline state with--- @VkPipelineColorBlendAttachmentState@ member @blendEnable@ set to--- @VK_TRUE@ and any of the blend functions using a constant blend color.-pattern VK_DYNAMIC_STATE_BLEND_CONSTANTS :: VkDynamicState-pattern VK_DYNAMIC_STATE_BLEND_CONSTANTS = VkDynamicState 4---- | @VK_DYNAMIC_STATE_DEPTH_BOUNDS@ specifies that the @minDepthBounds@ and--- @maxDepthBounds@ states of 'VkPipelineDepthStencilStateCreateInfo' will--- be ignored and /must/ be set dynamically with--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetDepthBounds'--- before any draws are performed with a pipeline state with--- @VkPipelineDepthStencilStateCreateInfo@ member @depthBoundsTestEnable@--- set to @VK_TRUE@.-pattern VK_DYNAMIC_STATE_DEPTH_BOUNDS :: VkDynamicState-pattern VK_DYNAMIC_STATE_DEPTH_BOUNDS = VkDynamicState 5---- | @VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK@ specifies that the @compareMask@--- state in @VkPipelineDepthStencilStateCreateInfo@ for both @front@ and--- @back@ will be ignored and /must/ be set dynamically with--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetStencilCompareMask'--- before any draws are performed with a pipeline state with--- @VkPipelineDepthStencilStateCreateInfo@ member @stencilTestEnable@ set--- to @VK_TRUE@-pattern VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK :: VkDynamicState-pattern VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = VkDynamicState 6---- | @VK_DYNAMIC_STATE_STENCIL_WRITE_MASK@ specifies that the @writeMask@--- state in @VkPipelineDepthStencilStateCreateInfo@ for both @front@ and--- @back@ will be ignored and /must/ be set dynamically with--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetStencilWriteMask'--- before any draws are performed with a pipeline state with--- @VkPipelineDepthStencilStateCreateInfo@ member @stencilTestEnable@ set--- to @VK_TRUE@-pattern VK_DYNAMIC_STATE_STENCIL_WRITE_MASK :: VkDynamicState-pattern VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = VkDynamicState 7---- | @VK_DYNAMIC_STATE_STENCIL_REFERENCE@ specifies that the @reference@--- state in @VkPipelineDepthStencilStateCreateInfo@ for both @front@ and--- @back@ will be ignored and /must/ be set dynamically with--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetStencilReference'--- before any draws are performed with a pipeline state with--- @VkPipelineDepthStencilStateCreateInfo@ member @stencilTestEnable@ set--- to @VK_TRUE@-pattern VK_DYNAMIC_STATE_STENCIL_REFERENCE :: VkDynamicState-pattern VK_DYNAMIC_STATE_STENCIL_REFERENCE = VkDynamicState 8--- ** VkPolygonMode---- | VkPolygonMode - Control polygon rasterization mode------ = Description------ - @VK_POLYGON_MODE_POINT@ specifies that polygon vertices are drawn as--- points.------ - @VK_POLYGON_MODE_LINE@ specifies that polygon edges are drawn as--- line segments.------ - @VK_POLYGON_MODE_FILL@ specifies that polygons are rendered using--- the polygon rasterization rules in this section.------ - @VK_POLYGON_MODE_FILL_RECTANGLE_NV@ specifies that polygons are--- rendered using polygon rasterization rules, modified to consider a--- sample within the primitive if the sample location is inside the--- axis-aligned bounding box of the triangle after projection. Note--- that the barycentric weights used in attribute interpolation /can/--- extend outside the range [0,1] when these primitives are shaded.--- Special treatment is given to a sample position on the boundary edge--- of the bounding box. In such a case, if two rectangles lie on either--- side of a common edge (with identical endpoints) on which a sample--- position lies, then exactly one of the triangles /must/ produce a--- fragment that covers that sample during rasterization.------ Polygons rendered in @VK_POLYGON_MODE_FILL_RECTANGLE_NV@ mode /may/--- be clipped by the frustum or by user clip planes. If clipping is--- applied, the triangle is culled rather than clipped.------ Area calculation and facingness are determined for--- @VK_POLYGON_MODE_FILL_RECTANGLE_NV@ mode using the triangle’s--- vertices.------ These modes affect only the final rasterization of polygons: in--- particular, a polygon’s vertices are shaded and the polygon is clipped--- and possibly culled before these modes are applied.------ = See Also------ 'VkPipelineRasterizationStateCreateInfo'-newtype VkPolygonMode = VkPolygonMode Int32- deriving (Eq, Ord, Storable)--instance Show VkPolygonMode where- showsPrec _ VK_POLYGON_MODE_FILL = showString "VK_POLYGON_MODE_FILL"- showsPrec _ VK_POLYGON_MODE_LINE = showString "VK_POLYGON_MODE_LINE"- showsPrec _ VK_POLYGON_MODE_POINT = showString "VK_POLYGON_MODE_POINT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkPolygonMode 1000153000) = showString "VK_POLYGON_MODE_FILL_RECTANGLE_NV"- showsPrec p (VkPolygonMode x) = showParen (p >= 11) (showString "VkPolygonMode " . showsPrec 11 x)--instance Read VkPolygonMode where- readPrec = parens ( choose [ ("VK_POLYGON_MODE_FILL", pure VK_POLYGON_MODE_FILL)- , ("VK_POLYGON_MODE_LINE", pure VK_POLYGON_MODE_LINE)- , ("VK_POLYGON_MODE_POINT", pure VK_POLYGON_MODE_POINT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_POLYGON_MODE_FILL_RECTANGLE_NV", pure (VkPolygonMode 1000153000))- ] +++- prec 10 (do- expectP (Ident "VkPolygonMode")- v <- step readPrec- pure (VkPolygonMode v)- )- )---- No documentation found for Nested "VkPolygonMode" "VK_POLYGON_MODE_FILL"-pattern VK_POLYGON_MODE_FILL :: VkPolygonMode-pattern VK_POLYGON_MODE_FILL = VkPolygonMode 0---- No documentation found for Nested "VkPolygonMode" "VK_POLYGON_MODE_LINE"-pattern VK_POLYGON_MODE_LINE :: VkPolygonMode-pattern VK_POLYGON_MODE_LINE = VkPolygonMode 1---- No documentation found for Nested "VkPolygonMode" "VK_POLYGON_MODE_POINT"-pattern VK_POLYGON_MODE_POINT :: VkPolygonMode-pattern VK_POLYGON_MODE_POINT = VkPolygonMode 2--- ** VkFrontFace---- | VkFrontFace - Interpret polygon front-facing orientation------ = Description------ - @VK_FRONT_FACE_COUNTER_CLOCKWISE@ specifies that a triangle with--- positive area is considered front-facing.------ - @VK_FRONT_FACE_CLOCKWISE@ specifies that a triangle with negative--- area is considered front-facing.------ Any triangle which is not front-facing is back-facing, including--- zero-area triangles.------ = See Also------ 'VkPipelineRasterizationStateCreateInfo'-newtype VkFrontFace = VkFrontFace Int32- deriving (Eq, Ord, Storable)--instance Show VkFrontFace where- showsPrec _ VK_FRONT_FACE_COUNTER_CLOCKWISE = showString "VK_FRONT_FACE_COUNTER_CLOCKWISE"- showsPrec _ VK_FRONT_FACE_CLOCKWISE = showString "VK_FRONT_FACE_CLOCKWISE"- showsPrec p (VkFrontFace x) = showParen (p >= 11) (showString "VkFrontFace " . showsPrec 11 x)--instance Read VkFrontFace where- readPrec = parens ( choose [ ("VK_FRONT_FACE_COUNTER_CLOCKWISE", pure VK_FRONT_FACE_COUNTER_CLOCKWISE)- , ("VK_FRONT_FACE_CLOCKWISE", pure VK_FRONT_FACE_CLOCKWISE)- ] +++- prec 10 (do- expectP (Ident "VkFrontFace")- v <- step readPrec- pure (VkFrontFace v)- )- )---- No documentation found for Nested "VkFrontFace" "VK_FRONT_FACE_COUNTER_CLOCKWISE"-pattern VK_FRONT_FACE_COUNTER_CLOCKWISE :: VkFrontFace-pattern VK_FRONT_FACE_COUNTER_CLOCKWISE = VkFrontFace 0---- No documentation found for Nested "VkFrontFace" "VK_FRONT_FACE_CLOCKWISE"-pattern VK_FRONT_FACE_CLOCKWISE :: VkFrontFace-pattern VK_FRONT_FACE_CLOCKWISE = VkFrontFace 1--- ** VkLogicOp---- | VkLogicOp - Framebuffer logical operations------ = Description------ The logical operations supported by Vulkan are summarized in the--- following table in which------ - ¬ is bitwise invert,------ - ∧ is bitwise and,------ - ∨ is bitwise or,------ - ⊕ is bitwise exclusive or,------ - s is the fragment’s Rs0, Gs0, Bs0 or As0 component value for the--- fragment output corresponding to the color attachment being updated,--- and------ - d is the color attachment’s R, G, B or A component value:------ +-----------------------------------+-----------------------------------+--- | Mode | Operation |--- +===================================+===================================+--- | @VK_LOGIC_OP_CLEAR@ | 0 |--- +-----------------------------------+-----------------------------------+--- | @VK_LOGIC_OP_AND@ | s ∧ d |--- +-----------------------------------+-----------------------------------+--- | @VK_LOGIC_OP_AND_REVERSE@ | s ∧ ¬ d |--- +-----------------------------------+-----------------------------------+--- | @VK_LOGIC_OP_COPY@ | s |--- +-----------------------------------+-----------------------------------+--- | @VK_LOGIC_OP_AND_INVERTED@ | ¬ s ∧ d |--- +-----------------------------------+-----------------------------------+--- | @VK_LOGIC_OP_NO_OP@ | d |--- +-----------------------------------+-----------------------------------+--- | @VK_LOGIC_OP_XOR@ | s ⊕ d |--- +-----------------------------------+-----------------------------------+--- | @VK_LOGIC_OP_OR@ | s ∨ d |--- +-----------------------------------+-----------------------------------+--- | @VK_LOGIC_OP_NOR@ | ¬ (s ∨ d) |--- +-----------------------------------+-----------------------------------+--- | @VK_LOGIC_OP_EQUIVALENT@ | ¬ (s ⊕ d) |--- +-----------------------------------+-----------------------------------+--- | @VK_LOGIC_OP_INVERT@ | ¬ d |--- +-----------------------------------+-----------------------------------+--- | @VK_LOGIC_OP_OR_REVERSE@ | s ∨ ¬ d |--- +-----------------------------------+-----------------------------------+--- | @VK_LOGIC_OP_COPY_INVERTED@ | ¬ s |--- +-----------------------------------+-----------------------------------+--- | @VK_LOGIC_OP_OR_INVERTED@ | ¬ s ∨ d |--- +-----------------------------------+-----------------------------------+--- | @VK_LOGIC_OP_NAND@ | ¬ (s ∧ d) |--- +-----------------------------------+-----------------------------------+--- | @VK_LOGIC_OP_SET@ | all 1s |--- +-----------------------------------+-----------------------------------+------ Logical Operations------ The result of the logical operation is then written to the color--- attachment as controlled by the component write mask, described in--- [Blend--- Operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blendoperations).------ = See Also------ 'VkPipelineColorBlendStateCreateInfo'-newtype VkLogicOp = VkLogicOp Int32- deriving (Eq, Ord, Storable)--instance Show VkLogicOp where- showsPrec _ VK_LOGIC_OP_CLEAR = showString "VK_LOGIC_OP_CLEAR"- showsPrec _ VK_LOGIC_OP_AND = showString "VK_LOGIC_OP_AND"- showsPrec _ VK_LOGIC_OP_AND_REVERSE = showString "VK_LOGIC_OP_AND_REVERSE"- showsPrec _ VK_LOGIC_OP_COPY = showString "VK_LOGIC_OP_COPY"- showsPrec _ VK_LOGIC_OP_AND_INVERTED = showString "VK_LOGIC_OP_AND_INVERTED"- showsPrec _ VK_LOGIC_OP_NO_OP = showString "VK_LOGIC_OP_NO_OP"- showsPrec _ VK_LOGIC_OP_XOR = showString "VK_LOGIC_OP_XOR"- showsPrec _ VK_LOGIC_OP_OR = showString "VK_LOGIC_OP_OR"- showsPrec _ VK_LOGIC_OP_NOR = showString "VK_LOGIC_OP_NOR"- showsPrec _ VK_LOGIC_OP_EQUIVALENT = showString "VK_LOGIC_OP_EQUIVALENT"- showsPrec _ VK_LOGIC_OP_INVERT = showString "VK_LOGIC_OP_INVERT"- showsPrec _ VK_LOGIC_OP_OR_REVERSE = showString "VK_LOGIC_OP_OR_REVERSE"- showsPrec _ VK_LOGIC_OP_COPY_INVERTED = showString "VK_LOGIC_OP_COPY_INVERTED"- showsPrec _ VK_LOGIC_OP_OR_INVERTED = showString "VK_LOGIC_OP_OR_INVERTED"- showsPrec _ VK_LOGIC_OP_NAND = showString "VK_LOGIC_OP_NAND"- showsPrec _ VK_LOGIC_OP_SET = showString "VK_LOGIC_OP_SET"- showsPrec p (VkLogicOp x) = showParen (p >= 11) (showString "VkLogicOp " . showsPrec 11 x)--instance Read VkLogicOp where- readPrec = parens ( choose [ ("VK_LOGIC_OP_CLEAR", pure VK_LOGIC_OP_CLEAR)- , ("VK_LOGIC_OP_AND", pure VK_LOGIC_OP_AND)- , ("VK_LOGIC_OP_AND_REVERSE", pure VK_LOGIC_OP_AND_REVERSE)- , ("VK_LOGIC_OP_COPY", pure VK_LOGIC_OP_COPY)- , ("VK_LOGIC_OP_AND_INVERTED", pure VK_LOGIC_OP_AND_INVERTED)- , ("VK_LOGIC_OP_NO_OP", pure VK_LOGIC_OP_NO_OP)- , ("VK_LOGIC_OP_XOR", pure VK_LOGIC_OP_XOR)- , ("VK_LOGIC_OP_OR", pure VK_LOGIC_OP_OR)- , ("VK_LOGIC_OP_NOR", pure VK_LOGIC_OP_NOR)- , ("VK_LOGIC_OP_EQUIVALENT", pure VK_LOGIC_OP_EQUIVALENT)- , ("VK_LOGIC_OP_INVERT", pure VK_LOGIC_OP_INVERT)- , ("VK_LOGIC_OP_OR_REVERSE", pure VK_LOGIC_OP_OR_REVERSE)- , ("VK_LOGIC_OP_COPY_INVERTED", pure VK_LOGIC_OP_COPY_INVERTED)- , ("VK_LOGIC_OP_OR_INVERTED", pure VK_LOGIC_OP_OR_INVERTED)- , ("VK_LOGIC_OP_NAND", pure VK_LOGIC_OP_NAND)- , ("VK_LOGIC_OP_SET", pure VK_LOGIC_OP_SET)- ] +++- prec 10 (do- expectP (Ident "VkLogicOp")- v <- step readPrec- pure (VkLogicOp v)- )- )---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_CLEAR"-pattern VK_LOGIC_OP_CLEAR :: VkLogicOp-pattern VK_LOGIC_OP_CLEAR = VkLogicOp 0---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_AND"-pattern VK_LOGIC_OP_AND :: VkLogicOp-pattern VK_LOGIC_OP_AND = VkLogicOp 1---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_AND_REVERSE"-pattern VK_LOGIC_OP_AND_REVERSE :: VkLogicOp-pattern VK_LOGIC_OP_AND_REVERSE = VkLogicOp 2---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_COPY"-pattern VK_LOGIC_OP_COPY :: VkLogicOp-pattern VK_LOGIC_OP_COPY = VkLogicOp 3---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_AND_INVERTED"-pattern VK_LOGIC_OP_AND_INVERTED :: VkLogicOp-pattern VK_LOGIC_OP_AND_INVERTED = VkLogicOp 4---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_NO_OP"-pattern VK_LOGIC_OP_NO_OP :: VkLogicOp-pattern VK_LOGIC_OP_NO_OP = VkLogicOp 5---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_XOR"-pattern VK_LOGIC_OP_XOR :: VkLogicOp-pattern VK_LOGIC_OP_XOR = VkLogicOp 6---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_OR"-pattern VK_LOGIC_OP_OR :: VkLogicOp-pattern VK_LOGIC_OP_OR = VkLogicOp 7---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_NOR"-pattern VK_LOGIC_OP_NOR :: VkLogicOp-pattern VK_LOGIC_OP_NOR = VkLogicOp 8---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_EQUIVALENT"-pattern VK_LOGIC_OP_EQUIVALENT :: VkLogicOp-pattern VK_LOGIC_OP_EQUIVALENT = VkLogicOp 9---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_INVERT"-pattern VK_LOGIC_OP_INVERT :: VkLogicOp-pattern VK_LOGIC_OP_INVERT = VkLogicOp 10---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_OR_REVERSE"-pattern VK_LOGIC_OP_OR_REVERSE :: VkLogicOp-pattern VK_LOGIC_OP_OR_REVERSE = VkLogicOp 11---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_COPY_INVERTED"-pattern VK_LOGIC_OP_COPY_INVERTED :: VkLogicOp-pattern VK_LOGIC_OP_COPY_INVERTED = VkLogicOp 12---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_OR_INVERTED"-pattern VK_LOGIC_OP_OR_INVERTED :: VkLogicOp-pattern VK_LOGIC_OP_OR_INVERTED = VkLogicOp 13---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_NAND"-pattern VK_LOGIC_OP_NAND :: VkLogicOp-pattern VK_LOGIC_OP_NAND = VkLogicOp 14---- No documentation found for Nested "VkLogicOp" "VK_LOGIC_OP_SET"-pattern VK_LOGIC_OP_SET :: VkLogicOp-pattern VK_LOGIC_OP_SET = VkLogicOp 15--- ** VkPrimitiveTopology---- | VkPrimitiveTopology - Supported primitive topologies------ = See Also------ 'VkPipelineInputAssemblyStateCreateInfo'-newtype VkPrimitiveTopology = VkPrimitiveTopology Int32- deriving (Eq, Ord, Storable)--instance Show VkPrimitiveTopology where- showsPrec _ VK_PRIMITIVE_TOPOLOGY_POINT_LIST = showString "VK_PRIMITIVE_TOPOLOGY_POINT_LIST"- showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_LIST = showString "VK_PRIMITIVE_TOPOLOGY_LINE_LIST"- showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = showString "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP"- showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"- showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"- showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN"- showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = showString "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY"- showsPrec _ VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = showString "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY"- showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY"- showsPrec _ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = showString "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY"- showsPrec _ VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = showString "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST"- showsPrec p (VkPrimitiveTopology x) = showParen (p >= 11) (showString "VkPrimitiveTopology " . showsPrec 11 x)--instance Read VkPrimitiveTopology where- readPrec = parens ( choose [ ("VK_PRIMITIVE_TOPOLOGY_POINT_LIST", pure VK_PRIMITIVE_TOPOLOGY_POINT_LIST)- , ("VK_PRIMITIVE_TOPOLOGY_LINE_LIST", pure VK_PRIMITIVE_TOPOLOGY_LINE_LIST)- , ("VK_PRIMITIVE_TOPOLOGY_LINE_STRIP", pure VK_PRIMITIVE_TOPOLOGY_LINE_STRIP)- , ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST", pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST)- , ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP", pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP)- , ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN", pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN)- , ("VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY", pure VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY)- , ("VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY", pure VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY)- , ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY", pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY)- , ("VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY", pure VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY)- , ("VK_PRIMITIVE_TOPOLOGY_PATCH_LIST", pure VK_PRIMITIVE_TOPOLOGY_PATCH_LIST)- ] +++- prec 10 (do- expectP (Ident "VkPrimitiveTopology")- v <- step readPrec- pure (VkPrimitiveTopology v)- )- )---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_POINT_LIST"-pattern VK_PRIMITIVE_TOPOLOGY_POINT_LIST :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_POINT_LIST = VkPrimitiveTopology 0---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_LINE_LIST"-pattern VK_PRIMITIVE_TOPOLOGY_LINE_LIST :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_LINE_LIST = VkPrimitiveTopology 1---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP"-pattern VK_PRIMITIVE_TOPOLOGY_LINE_STRIP :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = VkPrimitiveTopology 2---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"-pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = VkPrimitiveTopology 3---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"-pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = VkPrimitiveTopology 4---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN"-pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = VkPrimitiveTopology 5---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY"-pattern VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = VkPrimitiveTopology 6---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY"-pattern VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = VkPrimitiveTopology 7---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY"-pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = VkPrimitiveTopology 8---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY"-pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = VkPrimitiveTopology 9---- No documentation found for Nested "VkPrimitiveTopology" "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST"-pattern VK_PRIMITIVE_TOPOLOGY_PATCH_LIST :: VkPrimitiveTopology-pattern VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = VkPrimitiveTopology 10--- ** VkStencilOp---- | VkStencilOp - Stencil comparison function------ = Description------ - @VK_STENCIL_OP_KEEP@ keeps the current value.------ - @VK_STENCIL_OP_ZERO@ sets the value to 0.------ - @VK_STENCIL_OP_REPLACE@ sets the value to @reference@.------ - @VK_STENCIL_OP_INCREMENT_AND_CLAMP@ increments the current value and--- clamps to the maximum representable unsigned value.------ - @VK_STENCIL_OP_DECREMENT_AND_CLAMP@ decrements the current value and--- clamps to 0.------ - @VK_STENCIL_OP_INVERT@ bitwise-inverts the current value.------ - @VK_STENCIL_OP_INCREMENT_AND_WRAP@ increments the current value and--- wraps to 0 when the maximum value would have been exceeded.------ - @VK_STENCIL_OP_DECREMENT_AND_WRAP@ decrements the current value and--- wraps to the maximum possible value when the value would go below 0.------ For purposes of increment and decrement, the stencil bits are considered--- as an unsigned integer.------ If the stencil test fails, the sample’s coverage bit is cleared in the--- fragment. If there is no stencil framebuffer attachment, stencil--- modification /cannot/ occur, and it is as if the stencil tests always--- pass.------ If the stencil test passes, the @writeMask@ member of the--- 'VkStencilOpState' structures controls how the updated stencil value is--- written to the stencil framebuffer attachment.------ The least significant s bits of @writeMask@, where s is the number of--- bits in the stencil framebuffer attachment, specify an integer mask.--- Where a 1 appears in this mask, the corresponding bit in the stencil--- value in the depth\/stencil attachment is written; where a 0 appears,--- the bit is not written. The @writeMask@ value uses either the--- front-facing or back-facing state based on the facingness of the--- fragment. Fragments generated by front-facing primitives use the front--- mask and fragments generated by back-facing primitives use the back--- mask.------ = See Also------ 'VkStencilOpState'-newtype VkStencilOp = VkStencilOp Int32- deriving (Eq, Ord, Storable)--instance Show VkStencilOp where- showsPrec _ VK_STENCIL_OP_KEEP = showString "VK_STENCIL_OP_KEEP"- showsPrec _ VK_STENCIL_OP_ZERO = showString "VK_STENCIL_OP_ZERO"- showsPrec _ VK_STENCIL_OP_REPLACE = showString "VK_STENCIL_OP_REPLACE"- showsPrec _ VK_STENCIL_OP_INCREMENT_AND_CLAMP = showString "VK_STENCIL_OP_INCREMENT_AND_CLAMP"- showsPrec _ VK_STENCIL_OP_DECREMENT_AND_CLAMP = showString "VK_STENCIL_OP_DECREMENT_AND_CLAMP"- showsPrec _ VK_STENCIL_OP_INVERT = showString "VK_STENCIL_OP_INVERT"- showsPrec _ VK_STENCIL_OP_INCREMENT_AND_WRAP = showString "VK_STENCIL_OP_INCREMENT_AND_WRAP"- showsPrec _ VK_STENCIL_OP_DECREMENT_AND_WRAP = showString "VK_STENCIL_OP_DECREMENT_AND_WRAP"- showsPrec p (VkStencilOp x) = showParen (p >= 11) (showString "VkStencilOp " . showsPrec 11 x)--instance Read VkStencilOp where- readPrec = parens ( choose [ ("VK_STENCIL_OP_KEEP", pure VK_STENCIL_OP_KEEP)- , ("VK_STENCIL_OP_ZERO", pure VK_STENCIL_OP_ZERO)- , ("VK_STENCIL_OP_REPLACE", pure VK_STENCIL_OP_REPLACE)- , ("VK_STENCIL_OP_INCREMENT_AND_CLAMP", pure VK_STENCIL_OP_INCREMENT_AND_CLAMP)- , ("VK_STENCIL_OP_DECREMENT_AND_CLAMP", pure VK_STENCIL_OP_DECREMENT_AND_CLAMP)- , ("VK_STENCIL_OP_INVERT", pure VK_STENCIL_OP_INVERT)- , ("VK_STENCIL_OP_INCREMENT_AND_WRAP", pure VK_STENCIL_OP_INCREMENT_AND_WRAP)- , ("VK_STENCIL_OP_DECREMENT_AND_WRAP", pure VK_STENCIL_OP_DECREMENT_AND_WRAP)- ] +++- prec 10 (do- expectP (Ident "VkStencilOp")- v <- step readPrec- pure (VkStencilOp v)- )- )---- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_KEEP"-pattern VK_STENCIL_OP_KEEP :: VkStencilOp-pattern VK_STENCIL_OP_KEEP = VkStencilOp 0---- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_ZERO"-pattern VK_STENCIL_OP_ZERO :: VkStencilOp-pattern VK_STENCIL_OP_ZERO = VkStencilOp 1---- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_REPLACE"-pattern VK_STENCIL_OP_REPLACE :: VkStencilOp-pattern VK_STENCIL_OP_REPLACE = VkStencilOp 2---- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_INCREMENT_AND_CLAMP"-pattern VK_STENCIL_OP_INCREMENT_AND_CLAMP :: VkStencilOp-pattern VK_STENCIL_OP_INCREMENT_AND_CLAMP = VkStencilOp 3---- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_DECREMENT_AND_CLAMP"-pattern VK_STENCIL_OP_DECREMENT_AND_CLAMP :: VkStencilOp-pattern VK_STENCIL_OP_DECREMENT_AND_CLAMP = VkStencilOp 4---- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_INVERT"-pattern VK_STENCIL_OP_INVERT :: VkStencilOp-pattern VK_STENCIL_OP_INVERT = VkStencilOp 5---- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_INCREMENT_AND_WRAP"-pattern VK_STENCIL_OP_INCREMENT_AND_WRAP :: VkStencilOp-pattern VK_STENCIL_OP_INCREMENT_AND_WRAP = VkStencilOp 6---- No documentation found for Nested "VkStencilOp" "VK_STENCIL_OP_DECREMENT_AND_WRAP"-pattern VK_STENCIL_OP_DECREMENT_AND_WRAP :: VkStencilOp-pattern VK_STENCIL_OP_DECREMENT_AND_WRAP = VkStencilOp 7--- ** VkVertexInputRate---- | VkVertexInputRate - Specify rate at which vertex attributes are pulled--- from buffers------ = See Also------ 'VkVertexInputBindingDescription'-newtype VkVertexInputRate = VkVertexInputRate Int32- deriving (Eq, Ord, Storable)--instance Show VkVertexInputRate where- showsPrec _ VK_VERTEX_INPUT_RATE_VERTEX = showString "VK_VERTEX_INPUT_RATE_VERTEX"- showsPrec _ VK_VERTEX_INPUT_RATE_INSTANCE = showString "VK_VERTEX_INPUT_RATE_INSTANCE"- showsPrec p (VkVertexInputRate x) = showParen (p >= 11) (showString "VkVertexInputRate " . showsPrec 11 x)--instance Read VkVertexInputRate where- readPrec = parens ( choose [ ("VK_VERTEX_INPUT_RATE_VERTEX", pure VK_VERTEX_INPUT_RATE_VERTEX)- , ("VK_VERTEX_INPUT_RATE_INSTANCE", pure VK_VERTEX_INPUT_RATE_INSTANCE)- ] +++- prec 10 (do- expectP (Ident "VkVertexInputRate")- v <- step readPrec- pure (VkVertexInputRate v)- )- )---- | @VK_VERTEX_INPUT_RATE_VERTEX@ specifies that vertex attribute addressing--- is a function of the vertex index.-pattern VK_VERTEX_INPUT_RATE_VERTEX :: VkVertexInputRate-pattern VK_VERTEX_INPUT_RATE_VERTEX = VkVertexInputRate 0---- | @VK_VERTEX_INPUT_RATE_INSTANCE@ specifies that vertex attribute--- addressing is a function of the instance index.-pattern VK_VERTEX_INPUT_RATE_INSTANCE :: VkVertexInputRate-pattern VK_VERTEX_INPUT_RATE_INSTANCE = VkVertexInputRate 1--- ** VkPipelineDepthStencilStateCreateFlags---- | VkPipelineDepthStencilStateCreateFlags - Reserved for future use------ = Description------ @VkPipelineDepthStencilStateCreateFlags@ is a bitmask type for setting a--- mask, but is currently reserved for future use.------ = See Also------ 'VkPipelineDepthStencilStateCreateInfo'-newtype VkPipelineDepthStencilStateCreateFlags = VkPipelineDepthStencilStateCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineDepthStencilStateCreateFlags where- - showsPrec p (VkPipelineDepthStencilStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineDepthStencilStateCreateFlags " . showsPrec 11 x)--instance Read VkPipelineDepthStencilStateCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineDepthStencilStateCreateFlags")- v <- step readPrec- pure (VkPipelineDepthStencilStateCreateFlags v)- )- )----- ** VkPipelineDynamicStateCreateFlags---- | VkPipelineDynamicStateCreateFlags - Reserved for future use------ = Description------ @VkPipelineDynamicStateCreateFlags@ is a bitmask type for setting a--- mask, but is currently reserved for future use.------ = See Also------ 'VkPipelineDynamicStateCreateInfo'-newtype VkPipelineDynamicStateCreateFlags = VkPipelineDynamicStateCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineDynamicStateCreateFlags where- - showsPrec p (VkPipelineDynamicStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineDynamicStateCreateFlags " . showsPrec 11 x)--instance Read VkPipelineDynamicStateCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineDynamicStateCreateFlags")- v <- step readPrec- pure (VkPipelineDynamicStateCreateFlags v)- )- )----- ** VkPipelineColorBlendStateCreateFlags---- | VkPipelineColorBlendStateCreateFlags - Reserved for future use------ = Description------ @VkPipelineColorBlendStateCreateFlags@ is a bitmask type for setting a--- mask, but is currently reserved for future use.------ = See Also------ 'VkPipelineColorBlendStateCreateInfo'-newtype VkPipelineColorBlendStateCreateFlags = VkPipelineColorBlendStateCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineColorBlendStateCreateFlags where- - showsPrec p (VkPipelineColorBlendStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineColorBlendStateCreateFlags " . showsPrec 11 x)--instance Read VkPipelineColorBlendStateCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineColorBlendStateCreateFlags")- v <- step readPrec- pure (VkPipelineColorBlendStateCreateFlags v)- )- )----- ** VkPipelineMultisampleStateCreateFlags---- | VkPipelineMultisampleStateCreateFlags - Reserved for future use------ = Description------ @VkPipelineMultisampleStateCreateFlags@ is a bitmask type for setting a--- mask, but is currently reserved for future use.------ = See Also------ 'VkPipelineMultisampleStateCreateInfo'-newtype VkPipelineMultisampleStateCreateFlags = VkPipelineMultisampleStateCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineMultisampleStateCreateFlags where- - showsPrec p (VkPipelineMultisampleStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineMultisampleStateCreateFlags " . showsPrec 11 x)--instance Read VkPipelineMultisampleStateCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineMultisampleStateCreateFlags")- v <- step readPrec- pure (VkPipelineMultisampleStateCreateFlags v)- )- )----- ** VkPipelineRasterizationStateCreateFlags---- | VkPipelineRasterizationStateCreateFlags - Reserved for future use------ = Description------ @VkPipelineRasterizationStateCreateFlags@ is a bitmask type for setting--- a mask, but is currently reserved for future use.------ = See Also------ 'VkPipelineRasterizationStateCreateInfo'-newtype VkPipelineRasterizationStateCreateFlags = VkPipelineRasterizationStateCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineRasterizationStateCreateFlags where- - showsPrec p (VkPipelineRasterizationStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineRasterizationStateCreateFlags " . showsPrec 11 x)--instance Read VkPipelineRasterizationStateCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineRasterizationStateCreateFlags")- v <- step readPrec- pure (VkPipelineRasterizationStateCreateFlags v)- )- )----- ** VkPipelineViewportStateCreateFlags---- | VkPipelineViewportStateCreateFlags - Reserved for future use------ = Description------ @VkPipelineViewportStateCreateFlags@ is a bitmask type for setting a--- mask, but is currently reserved for future use.------ = See Also------ 'VkPipelineViewportStateCreateInfo'-newtype VkPipelineViewportStateCreateFlags = VkPipelineViewportStateCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineViewportStateCreateFlags where- - showsPrec p (VkPipelineViewportStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineViewportStateCreateFlags " . showsPrec 11 x)--instance Read VkPipelineViewportStateCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineViewportStateCreateFlags")- v <- step readPrec- pure (VkPipelineViewportStateCreateFlags v)- )- )----- ** VkPipelineTessellationStateCreateFlags---- | VkPipelineTessellationStateCreateFlags - Reserved for future use------ = Description------ @VkPipelineTessellationStateCreateFlags@ is a bitmask type for setting a--- mask, but is currently reserved for future use.------ = See Also------ 'VkPipelineTessellationStateCreateInfo'-newtype VkPipelineTessellationStateCreateFlags = VkPipelineTessellationStateCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineTessellationStateCreateFlags where- - showsPrec p (VkPipelineTessellationStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineTessellationStateCreateFlags " . showsPrec 11 x)--instance Read VkPipelineTessellationStateCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineTessellationStateCreateFlags")- v <- step readPrec- pure (VkPipelineTessellationStateCreateFlags v)- )- )----- ** VkPipelineInputAssemblyStateCreateFlags---- | VkPipelineInputAssemblyStateCreateFlags - Reserved for future use------ = Description------ @VkPipelineInputAssemblyStateCreateFlags@ is a bitmask type for setting--- a mask, but is currently reserved for future use.------ = See Also------ 'VkPipelineInputAssemblyStateCreateInfo'-newtype VkPipelineInputAssemblyStateCreateFlags = VkPipelineInputAssemblyStateCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineInputAssemblyStateCreateFlags where- - showsPrec p (VkPipelineInputAssemblyStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineInputAssemblyStateCreateFlags " . showsPrec 11 x)--instance Read VkPipelineInputAssemblyStateCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineInputAssemblyStateCreateFlags")- v <- step readPrec- pure (VkPipelineInputAssemblyStateCreateFlags v)- )- )----- ** VkPipelineVertexInputStateCreateFlags---- | VkPipelineVertexInputStateCreateFlags - Reserved for future use------ = Description------ @VkPipelineVertexInputStateCreateFlags@ is a bitmask type for setting a--- mask, but is currently reserved for future use.------ = See Also------ 'VkPipelineVertexInputStateCreateInfo'-newtype VkPipelineVertexInputStateCreateFlags = VkPipelineVertexInputStateCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineVertexInputStateCreateFlags where- - showsPrec p (VkPipelineVertexInputStateCreateFlags x) = showParen (p >= 11) (showString "VkPipelineVertexInputStateCreateFlags " . showsPrec 11 x)--instance Read VkPipelineVertexInputStateCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineVertexInputStateCreateFlags")- v <- step readPrec- pure (VkPipelineVertexInputStateCreateFlags v)- )- )----- ** VkPipelineShaderStageCreateFlags---- | VkPipelineShaderStageCreateFlags - Reserved for future use------ = Description------ @VkPipelineShaderStageCreateFlags@ is a bitmask type for setting a mask,--- but is currently reserved for future use.------ = See Also------ 'VkPipelineShaderStageCreateInfo'-newtype VkPipelineShaderStageCreateFlags = VkPipelineShaderStageCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineShaderStageCreateFlags where- - showsPrec p (VkPipelineShaderStageCreateFlags x) = showParen (p >= 11) (showString "VkPipelineShaderStageCreateFlags " . showsPrec 11 x)--instance Read VkPipelineShaderStageCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineShaderStageCreateFlags")- v <- step readPrec- pure (VkPipelineShaderStageCreateFlags v)- )- )----- ** VkShaderStageFlagBits---- | VkShaderStageFlagBits - Bitmask specifying a pipeline stage------ = See Also------ 'VkPipelineShaderStageCreateInfo',--- 'Graphics.Vulkan.Core10.PipelineLayout.VkShaderStageFlags',--- 'Graphics.Vulkan.Extensions.VK_AMD_shader_info.vkGetShaderInfoAMD'-newtype VkShaderStageFlagBits = VkShaderStageFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkShaderStageFlagBits where- showsPrec _ VK_SHADER_STAGE_VERTEX_BIT = showString "VK_SHADER_STAGE_VERTEX_BIT"- showsPrec _ VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = showString "VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"- showsPrec _ VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = showString "VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"- showsPrec _ VK_SHADER_STAGE_GEOMETRY_BIT = showString "VK_SHADER_STAGE_GEOMETRY_BIT"- showsPrec _ VK_SHADER_STAGE_FRAGMENT_BIT = showString "VK_SHADER_STAGE_FRAGMENT_BIT"- showsPrec _ VK_SHADER_STAGE_COMPUTE_BIT = showString "VK_SHADER_STAGE_COMPUTE_BIT"- showsPrec _ VK_SHADER_STAGE_ALL_GRAPHICS = showString "VK_SHADER_STAGE_ALL_GRAPHICS"- showsPrec _ VK_SHADER_STAGE_ALL = showString "VK_SHADER_STAGE_ALL"- showsPrec p (VkShaderStageFlagBits x) = showParen (p >= 11) (showString "VkShaderStageFlagBits " . showsPrec 11 x)--instance Read VkShaderStageFlagBits where- readPrec = parens ( choose [ ("VK_SHADER_STAGE_VERTEX_BIT", pure VK_SHADER_STAGE_VERTEX_BIT)- , ("VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT", pure VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT)- , ("VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT", pure VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT)- , ("VK_SHADER_STAGE_GEOMETRY_BIT", pure VK_SHADER_STAGE_GEOMETRY_BIT)- , ("VK_SHADER_STAGE_FRAGMENT_BIT", pure VK_SHADER_STAGE_FRAGMENT_BIT)- , ("VK_SHADER_STAGE_COMPUTE_BIT", pure VK_SHADER_STAGE_COMPUTE_BIT)- , ("VK_SHADER_STAGE_ALL_GRAPHICS", pure VK_SHADER_STAGE_ALL_GRAPHICS)- , ("VK_SHADER_STAGE_ALL", pure VK_SHADER_STAGE_ALL)- ] +++- prec 10 (do- expectP (Ident "VkShaderStageFlagBits")- v <- step readPrec- pure (VkShaderStageFlagBits v)- )- )---- | @VK_SHADER_STAGE_VERTEX_BIT@ specifies the vertex stage.-pattern VK_SHADER_STAGE_VERTEX_BIT :: VkShaderStageFlagBits-pattern VK_SHADER_STAGE_VERTEX_BIT = VkShaderStageFlagBits 0x00000001---- | @VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT@ specifies the tessellation--- control stage.-pattern VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT :: VkShaderStageFlagBits-pattern VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = VkShaderStageFlagBits 0x00000002---- | @VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT@ specifies the tessellation--- evaluation stage.-pattern VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT :: VkShaderStageFlagBits-pattern VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = VkShaderStageFlagBits 0x00000004---- | @VK_SHADER_STAGE_GEOMETRY_BIT@ specifies the geometry stage.-pattern VK_SHADER_STAGE_GEOMETRY_BIT :: VkShaderStageFlagBits-pattern VK_SHADER_STAGE_GEOMETRY_BIT = VkShaderStageFlagBits 0x00000008---- | @VK_SHADER_STAGE_FRAGMENT_BIT@ specifies the fragment stage.-pattern VK_SHADER_STAGE_FRAGMENT_BIT :: VkShaderStageFlagBits-pattern VK_SHADER_STAGE_FRAGMENT_BIT = VkShaderStageFlagBits 0x00000010---- | @VK_SHADER_STAGE_COMPUTE_BIT@ specifies the compute stage.-pattern VK_SHADER_STAGE_COMPUTE_BIT :: VkShaderStageFlagBits-pattern VK_SHADER_STAGE_COMPUTE_BIT = VkShaderStageFlagBits 0x00000020---- | @VK_SHADER_STAGE_ALL_GRAPHICS@ is a combination of bits used as--- shorthand to specify all graphics stages defined above (excluding the--- compute stage).-pattern VK_SHADER_STAGE_ALL_GRAPHICS :: VkShaderStageFlagBits-pattern VK_SHADER_STAGE_ALL_GRAPHICS = VkShaderStageFlagBits 0x0000001f---- | @VK_SHADER_STAGE_ALL@ is a combination of bits used as shorthand to--- specify all shader stages supported by the device, including all--- additional stages which are introduced by extensions.-pattern VK_SHADER_STAGE_ALL :: VkShaderStageFlagBits-pattern VK_SHADER_STAGE_ALL = VkShaderStageFlagBits 0x7fffffff--- ** VkPipelineCreateFlagBits---- | VkPipelineCreateFlagBits - Bitmask controlling how a pipeline is created------ = Description------ - @VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT@ specifies that the--- created pipeline will not be optimized. Using this flag /may/ reduce--- the time taken to create the pipeline.------ - @VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT@ specifies that the--- pipeline to be created is allowed to be the parent of a pipeline--- that will be created in a subsequent call to--- 'vkCreateGraphicsPipelines' or 'vkCreateComputePipelines'.------ - @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ specifies that the pipeline to--- be created will be a child of a previously created parent pipeline.------ - @VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT@ specifies that--- any shader input variables decorated as @DeviceIndex@ will be--- assigned values as if they were decorated as @ViewIndex@.------ - @VK_PIPELINE_CREATE_DISPATCH_BASE@ specifies that a compute pipeline--- /can/ be used with--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.vkCmdDispatchBase'--- with a non-zero base workgroup.------ It is valid to set both @VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT@ and--- @VK_PIPELINE_CREATE_DERIVATIVE_BIT@. This allows a pipeline to be both a--- parent and possibly a child in a pipeline hierarchy. See [Pipeline--- Derivatives](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-pipeline-derivatives)--- for more information.------ = See Also------ 'VkPipelineCreateFlags'-newtype VkPipelineCreateFlagBits = VkPipelineCreateFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineCreateFlagBits where- showsPrec _ VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = showString "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"- showsPrec _ VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = showString "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"- showsPrec _ VK_PIPELINE_CREATE_DERIVATIVE_BIT = showString "VK_PIPELINE_CREATE_DERIVATIVE_BIT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkPipelineCreateFlagBits 0x00000008) = showString "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"- showsPrec _ (VkPipelineCreateFlagBits 0x00000010) = showString "VK_PIPELINE_CREATE_DISPATCH_BASE"- showsPrec p (VkPipelineCreateFlagBits x) = showParen (p >= 11) (showString "VkPipelineCreateFlagBits " . showsPrec 11 x)--instance Read VkPipelineCreateFlagBits where- readPrec = parens ( choose [ ("VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT", pure VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT)- , ("VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT", pure VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT)- , ("VK_PIPELINE_CREATE_DERIVATIVE_BIT", pure VK_PIPELINE_CREATE_DERIVATIVE_BIT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT", pure (VkPipelineCreateFlagBits 0x00000008))- , ("VK_PIPELINE_CREATE_DISPATCH_BASE", pure (VkPipelineCreateFlagBits 0x00000010))- ] +++- prec 10 (do- expectP (Ident "VkPipelineCreateFlagBits")- v <- step readPrec- pure (VkPipelineCreateFlagBits v)- )- )---- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"-pattern VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT :: VkPipelineCreateFlagBits-pattern VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = VkPipelineCreateFlagBits 0x00000001---- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"-pattern VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT :: VkPipelineCreateFlagBits-pattern VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = VkPipelineCreateFlagBits 0x00000002---- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DERIVATIVE_BIT"-pattern VK_PIPELINE_CREATE_DERIVATIVE_BIT :: VkPipelineCreateFlagBits-pattern VK_PIPELINE_CREATE_DERIVATIVE_BIT = VkPipelineCreateFlagBits 0x00000004--- ** VkColorComponentFlagBits---- | VkColorComponentFlagBits - Bitmask controlling which components are--- written to the framebuffer------ = Description------ - @VK_COLOR_COMPONENT_R_BIT@ specifies that the R value is written to--- the color attachment for the appropriate sample. Otherwise, the--- value in memory is unmodified.------ - @VK_COLOR_COMPONENT_G_BIT@ specifies that the G value is written to--- the color attachment for the appropriate sample. Otherwise, the--- value in memory is unmodified.------ - @VK_COLOR_COMPONENT_B_BIT@ specifies that the B value is written to--- the color attachment for the appropriate sample. Otherwise, the--- value in memory is unmodified.------ - @VK_COLOR_COMPONENT_A_BIT@ specifies that the A value is written to--- the color attachment for the appropriate sample. Otherwise, the--- value in memory is unmodified.------ The color write mask operation is applied regardless of whether blending--- is enabled.------ = See Also------ 'VkColorComponentFlags'-newtype VkColorComponentFlagBits = VkColorComponentFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkColorComponentFlagBits where- showsPrec _ VK_COLOR_COMPONENT_R_BIT = showString "VK_COLOR_COMPONENT_R_BIT"- showsPrec _ VK_COLOR_COMPONENT_G_BIT = showString "VK_COLOR_COMPONENT_G_BIT"- showsPrec _ VK_COLOR_COMPONENT_B_BIT = showString "VK_COLOR_COMPONENT_B_BIT"- showsPrec _ VK_COLOR_COMPONENT_A_BIT = showString "VK_COLOR_COMPONENT_A_BIT"- showsPrec p (VkColorComponentFlagBits x) = showParen (p >= 11) (showString "VkColorComponentFlagBits " . showsPrec 11 x)--instance Read VkColorComponentFlagBits where- readPrec = parens ( choose [ ("VK_COLOR_COMPONENT_R_BIT", pure VK_COLOR_COMPONENT_R_BIT)- , ("VK_COLOR_COMPONENT_G_BIT", pure VK_COLOR_COMPONENT_G_BIT)- , ("VK_COLOR_COMPONENT_B_BIT", pure VK_COLOR_COMPONENT_B_BIT)- , ("VK_COLOR_COMPONENT_A_BIT", pure VK_COLOR_COMPONENT_A_BIT)- ] +++- prec 10 (do- expectP (Ident "VkColorComponentFlagBits")- v <- step readPrec- pure (VkColorComponentFlagBits v)- )- )---- No documentation found for Nested "VkColorComponentFlagBits" "VK_COLOR_COMPONENT_R_BIT"-pattern VK_COLOR_COMPONENT_R_BIT :: VkColorComponentFlagBits-pattern VK_COLOR_COMPONENT_R_BIT = VkColorComponentFlagBits 0x00000001---- No documentation found for Nested "VkColorComponentFlagBits" "VK_COLOR_COMPONENT_G_BIT"-pattern VK_COLOR_COMPONENT_G_BIT :: VkColorComponentFlagBits-pattern VK_COLOR_COMPONENT_G_BIT = VkColorComponentFlagBits 0x00000002---- No documentation found for Nested "VkColorComponentFlagBits" "VK_COLOR_COMPONENT_B_BIT"-pattern VK_COLOR_COMPONENT_B_BIT :: VkColorComponentFlagBits-pattern VK_COLOR_COMPONENT_B_BIT = VkColorComponentFlagBits 0x00000004---- No documentation found for Nested "VkColorComponentFlagBits" "VK_COLOR_COMPONENT_A_BIT"-pattern VK_COLOR_COMPONENT_A_BIT :: VkColorComponentFlagBits-pattern VK_COLOR_COMPONENT_A_BIT = VkColorComponentFlagBits 0x00000008--- ** VkCullModeFlagBits---- | VkCullModeFlagBits - Bitmask controlling triangle culling------ = Description------ - @VK_CULL_MODE_NONE@ specifies that no triangles are discarded------ - @VK_CULL_MODE_FRONT_BIT@ specifies that front-facing triangles are--- discarded------ - @VK_CULL_MODE_BACK_BIT@ specifies that back-facing triangles are--- discarded------ - @VK_CULL_MODE_FRONT_AND_BACK@ specifies that all triangles are--- discarded.------ Following culling, fragments are produced for any triangles which have--- not been discarded.------ = See Also------ 'VkCullModeFlags'-newtype VkCullModeFlagBits = VkCullModeFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkCullModeFlagBits where- showsPrec _ VK_CULL_MODE_FRONT_BIT = showString "VK_CULL_MODE_FRONT_BIT"- showsPrec _ VK_CULL_MODE_BACK_BIT = showString "VK_CULL_MODE_BACK_BIT"- showsPrec _ VK_CULL_MODE_NONE = showString "VK_CULL_MODE_NONE"- showsPrec _ VK_CULL_MODE_FRONT_AND_BACK = showString "VK_CULL_MODE_FRONT_AND_BACK"- showsPrec p (VkCullModeFlagBits x) = showParen (p >= 11) (showString "VkCullModeFlagBits " . showsPrec 11 x)--instance Read VkCullModeFlagBits where- readPrec = parens ( choose [ ("VK_CULL_MODE_FRONT_BIT", pure VK_CULL_MODE_FRONT_BIT)- , ("VK_CULL_MODE_BACK_BIT", pure VK_CULL_MODE_BACK_BIT)- , ("VK_CULL_MODE_NONE", pure VK_CULL_MODE_NONE)- , ("VK_CULL_MODE_FRONT_AND_BACK", pure VK_CULL_MODE_FRONT_AND_BACK)- ] +++- prec 10 (do- expectP (Ident "VkCullModeFlagBits")- v <- step readPrec- pure (VkCullModeFlagBits v)- )- )---- No documentation found for Nested "VkCullModeFlagBits" "VK_CULL_MODE_FRONT_BIT"-pattern VK_CULL_MODE_FRONT_BIT :: VkCullModeFlagBits-pattern VK_CULL_MODE_FRONT_BIT = VkCullModeFlagBits 0x00000001---- No documentation found for Nested "VkCullModeFlagBits" "VK_CULL_MODE_BACK_BIT"-pattern VK_CULL_MODE_BACK_BIT :: VkCullModeFlagBits-pattern VK_CULL_MODE_BACK_BIT = VkCullModeFlagBits 0x00000002---- No documentation found for Nested "VkCullModeFlagBits" "VK_CULL_MODE_NONE"-pattern VK_CULL_MODE_NONE :: VkCullModeFlagBits-pattern VK_CULL_MODE_NONE = VkCullModeFlagBits 0x00000000---- No documentation found for Nested "VkCullModeFlagBits" "VK_CULL_MODE_FRONT_AND_BACK"-pattern VK_CULL_MODE_FRONT_AND_BACK :: VkCullModeFlagBits-pattern VK_CULL_MODE_FRONT_AND_BACK = VkCullModeFlagBits 0x00000003--- | Dummy data to tag the 'Ptr' with-data VkPipeline_T--- | VkPipeline - Opaque handle to a pipeline object------ = See Also------ 'VkComputePipelineCreateInfo', 'VkGraphicsPipelineCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTablePipelineEntryNVX',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindPipeline',--- 'vkCreateComputePipelines', 'vkCreateGraphicsPipelines',--- 'vkDestroyPipeline',--- 'Graphics.Vulkan.Extensions.VK_AMD_shader_info.vkGetShaderInfoAMD'-type VkPipeline = Ptr VkPipeline_T--- | Dummy data to tag the 'Ptr' with-data VkPipelineLayout_T--- | VkPipelineLayout - Opaque handle to a pipeline layout object------ = See Also------ 'VkComputePipelineCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.VkDescriptorUpdateTemplateCreateInfo',--- 'VkGraphicsPipelineCreateInfo',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTableDescriptorSetEntryNVX',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTablePushConstantEntryNVX',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindDescriptorSets',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdPushConstants',--- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.vkCmdPushDescriptorSetKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.vkCmdPushDescriptorSetWithTemplateKHR',--- 'Graphics.Vulkan.Core10.PipelineLayout.vkCreatePipelineLayout',--- 'Graphics.Vulkan.Core10.PipelineLayout.vkDestroyPipelineLayout'-type VkPipelineLayout = Ptr VkPipelineLayout_T--- | Dummy data to tag the 'Ptr' with-data VkRenderPass_T--- | VkRenderPass - Opaque handle to a render pass object------ = See Also------ 'Graphics.Vulkan.Core10.CommandBuffer.VkCommandBufferInheritanceInfo',--- 'Graphics.Vulkan.Core10.Pass.VkFramebufferCreateInfo',--- 'VkGraphicsPipelineCreateInfo',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo',--- 'Graphics.Vulkan.Core10.Pass.vkCreateRenderPass',--- 'Graphics.Vulkan.Core10.Pass.vkDestroyRenderPass',--- 'Graphics.Vulkan.Core10.Pass.vkGetRenderAreaGranularity'-type VkRenderPass = Ptr VkRenderPass_T--- | vkCreateGraphicsPipelines - Create graphics pipelines------ = Parameters------ - @device@ is the logical device that creates the graphics pipelines.------ - @pipelineCache@ is either--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', indicating that--- pipeline caching is disabled; or the handle of a valid [pipeline--- cache](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-cache)--- object, in which case use of that cache is enabled for the duration--- of the command.------ - @createInfoCount@ is the length of the @pCreateInfos@ and--- @pPipelines@ arrays.------ - @pCreateInfos@ is an array of @VkGraphicsPipelineCreateInfo@--- structures.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ - @pPipelines@ is a pointer to an array in which the resulting--- graphics pipeline objects are returned.------ = Description------ The 'VkGraphicsPipelineCreateInfo' structure includes an array of shader--- create info structures containing all the desired active shader stages,--- as well as creation info to define all relevant fixed-function stages,--- and a pipeline layout.------ == Valid Usage------ - If the @flags@ member of any element of @pCreateInfos@ contains the--- @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag, and the--- @basePipelineIndex@ member of that same element is not @-1@,--- @basePipelineIndex@ /must/ be less than the index into--- @pCreateInfos@ that corresponds to that element------ - If the @flags@ member of any element of @pCreateInfos@ contains the--- @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag, the base pipeline /must/--- have been created with the--- @VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT@ flag set------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - If @pipelineCache@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @pipelineCache@--- /must/ be a valid @VkPipelineCache@ handle------ - @pCreateInfos@ /must/ be a valid pointer to an array of--- @createInfoCount@ valid @VkGraphicsPipelineCreateInfo@ structures------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pPipelines@ /must/ be a valid pointer to an array of--- @createInfoCount@ @VkPipeline@ handles------ - @createInfoCount@ /must/ be greater than @0@------ - If @pipelineCache@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_INVALID_SHADER_NV@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkGraphicsPipelineCreateInfo', 'VkPipeline',--- 'Graphics.Vulkan.Core10.PipelineCache.VkPipelineCache'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateGraphicsPipelines" vkCreateGraphicsPipelines :: ("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkGraphicsPipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult--- | vkCreateComputePipelines - Creates a new compute pipeline object------ = Parameters------ - @device@ is the logical device that creates the compute pipelines.------ - @pipelineCache@ is either--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', indicating that--- pipeline caching is disabled; or the handle of a valid [pipeline--- cache](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-cache)--- object, in which case use of that cache is enabled for the duration--- of the command.------ - @createInfoCount@ is the length of the @pCreateInfos@ and--- @pPipelines@ arrays.------ - @pCreateInfos@ is an array of @VkComputePipelineCreateInfo@--- structures.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ - @pPipelines@ is a pointer to an array in which the resulting compute--- pipeline objects are returned.------ == Valid Usage------ - If the @flags@ member of any element of @pCreateInfos@ contains the--- @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag, and the--- @basePipelineIndex@ member of that same element is not @-1@,--- @basePipelineIndex@ /must/ be less than the index into--- @pCreateInfos@ that corresponds to that element------ - If the @flags@ member of any element of @pCreateInfos@ contains the--- @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag, the base pipeline /must/--- have been created with the--- @VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT@ flag set------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - If @pipelineCache@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @pipelineCache@--- /must/ be a valid @VkPipelineCache@ handle------ - @pCreateInfos@ /must/ be a valid pointer to an array of--- @createInfoCount@ valid @VkComputePipelineCreateInfo@ structures------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pPipelines@ /must/ be a valid pointer to an array of--- @createInfoCount@ @VkPipeline@ handles------ - @createInfoCount@ /must/ be greater than @0@------ - If @pipelineCache@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_INVALID_SHADER_NV@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'VkComputePipelineCreateInfo',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkPipeline',--- 'Graphics.Vulkan.Core10.PipelineCache.VkPipelineCache'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateComputePipelines" vkCreateComputePipelines :: ("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkComputePipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult--- | vkDestroyPipeline - Destroy a pipeline object------ = Parameters------ - @device@ is the logical device that destroys the pipeline.------ - @pipeline@ is the handle of the pipeline to destroy.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ == Valid Usage------ - All submitted commands that refer to @pipeline@ /must/ have--- completed execution------ - If @VkAllocationCallbacks@ were provided when @pipeline@ was--- created, a compatible set of callbacks /must/ be provided here------ - If no @VkAllocationCallbacks@ were provided when @pipeline@ was--- created, @pAllocator@ /must/ be @NULL@------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - If @pipeline@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @pipeline@ /must/--- be a valid @VkPipeline@ handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - If @pipeline@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@------ == Host Synchronization------ - Host access to @pipeline@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkPipeline'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroyPipeline" vkDestroyPipeline :: ("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | VkOffset2D - Structure specifying a two-dimensional offset------ = See Also------ 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayPlaneCapabilitiesKHR',--- 'VkRect2D',--- 'Graphics.Vulkan.Extensions.VK_KHR_incremental_present.VkRectLayerKHR'-data VkOffset2D = VkOffset2D- { -- | @x@ is the x offset.- vkX :: Int32- , -- | @y@ is the y offset.- vkY :: Int32- }- deriving (Eq, Show)--instance Storable VkOffset2D where- sizeOf ~_ = 8- alignment ~_ = 4- peek ptr = VkOffset2D <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- poke ptr poked = poke (ptr `plusPtr` 0) (vkX (poked :: VkOffset2D))- *> poke (ptr `plusPtr` 4) (vkY (poked :: VkOffset2D))--- | VkExtent2D - Structure specifying a two-dimensional extent------ = See Also------ 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayModeParametersKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayPlaneCapabilitiesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayPropertiesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplaySurfaceCreateInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkMultisamplePropertiesEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPhysicalDeviceSampleLocationsPropertiesEXT',--- 'VkRect2D',--- 'Graphics.Vulkan.Extensions.VK_KHR_incremental_present.VkRectLayerKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkSampleLocationsInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCapabilities2EXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceCapabilitiesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR',--- 'Graphics.Vulkan.Core10.Pass.vkGetRenderAreaGranularity'-data VkExtent2D = VkExtent2D- { -- | @width@ is the width of the extent.- vkWidth :: Word32- , -- | @height@ is the height of the extent.- vkHeight :: Word32- }- deriving (Eq, Show)--instance Storable VkExtent2D where- sizeOf ~_ = 8- alignment ~_ = 4- peek ptr = VkExtent2D <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- poke ptr poked = poke (ptr `plusPtr` 0) (vkWidth (poked :: VkExtent2D))- *> poke (ptr `plusPtr` 4) (vkHeight (poked :: VkExtent2D))--- | VkViewport - Structure specifying a viewport------ = Description------ The framebuffer depth coordinate @z@f /may/ be represented using either--- a fixed-point or floating-point representation. However, a--- floating-point representation /must/ be used if the depth\/stencil--- attachment has a floating-point depth component. If an m-bit fixed-point--- representation is used, we assume that it represents each value--- \(\frac{k}{2^m - 1}\), where k ∈ { 0, 1, …, 2m-1 }, as k (e.g. 1.0 is--- represented in binary as a string of all ones).------ The viewport parameters shown in the above equations are found from--- these values as------ - ox = @x@ + @width@ \/ 2------ - oy = @y@ + @height@ \/ 2------ - oz = @minDepth@------ - px = @width@------ - py = @height@------ - pz = @maxDepth@ - @minDepth@.------ The application /can/ specify a negative term for @height@, which has--- the effect of negating the y coordinate in clip space before performing--- the transform. When using a negative @height@, the application /should/--- also adjust the @y@ value to point to the lower left corner of the--- viewport instead of the upper left corner. Using the negative @height@--- allows the application to avoid having to negate the y component of the--- @Position@ output from the last vertex processing stage in shaders that--- also target other graphics APIs.------ The width and height of the [implementation-dependent maximum viewport--- dimensions](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-maxViewportDimensions)--- /must/ be greater than or equal to the width and height of the largest--- image which /can/ be created and attached to a framebuffer.------ The floating-point viewport bounds are represented with an--- [implementation-dependent--- precision](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-viewportSubPixelBits).------ == Valid Usage------ - @width@ /must/ be greater than @0.0@------ - @width@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxViewportDimensions@[0]------ - The absolute value of @height@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxViewportDimensions@[1]------ - @x@ /must/ be greater than or equal to @viewportBoundsRange@[0]------ - (@x@ + @width@) /must/ be less than or equal to--- @viewportBoundsRange@[1]------ - @y@ /must/ be greater than or equal to @viewportBoundsRange@[0]------ - @y@ /must/ be less than or equal to @viewportBoundsRange@[1]------ - (@y@ + @height@) /must/ be greater than or equal to--- @viewportBoundsRange@[0]------ - (@y@ + @height@) /must/ be less than or equal to--- @viewportBoundsRange@[1]------ - Unless @{html_spec_relative}#VK_EXT_depth_range_unrestricted@--- extension is enabled @minDepth@ /must/ be between @0.0@ and @1.0@,--- inclusive------ - Unless @{html_spec_relative}#VK_EXT_depth_range_unrestricted@--- extension is enabled @maxDepth@ /must/ be between @0.0@ and @1.0@,--- inclusive------ = See Also------ 'VkPipelineViewportStateCreateInfo',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetViewport'-data VkViewport = VkViewport- { -- | @x@ and @y@ are the viewport’s upper left corner (x,y).- vkX :: CFloat- , -- No documentation found for Nested "VkViewport" "y"- vkY :: CFloat- , -- | @width@ and @height@ are the viewport’s width and height, respectively.- vkWidth :: CFloat- , -- No documentation found for Nested "VkViewport" "height"- vkHeight :: CFloat- , -- | @minDepth@ and @maxDepth@ are the depth range for the viewport. It is- -- valid for @minDepth@ to be greater than or equal to @maxDepth@.- vkMinDepth :: CFloat- , -- No documentation found for Nested "VkViewport" "maxDepth"- vkMaxDepth :: CFloat- }- deriving (Eq, Show)--instance Storable VkViewport where- sizeOf ~_ = 24- alignment ~_ = 4- peek ptr = VkViewport <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- poke ptr poked = poke (ptr `plusPtr` 0) (vkX (poked :: VkViewport))- *> poke (ptr `plusPtr` 4) (vkY (poked :: VkViewport))- *> poke (ptr `plusPtr` 8) (vkWidth (poked :: VkViewport))- *> poke (ptr `plusPtr` 12) (vkHeight (poked :: VkViewport))- *> poke (ptr `plusPtr` 16) (vkMinDepth (poked :: VkViewport))- *> poke (ptr `plusPtr` 20) (vkMaxDepth (poked :: VkViewport))--- | VkRect2D - Structure specifying a two-dimensional subregion------ = See Also------ 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkClearRect',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.VkDeviceGroupRenderPassBeginInfo',--- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.VkDisplayPresentInfoKHR',--- 'VkExtent2D', 'VkOffset2D',--- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.VkPipelineDiscardRectangleStateCreateInfoEXT',--- 'VkPipelineViewportStateCreateInfo',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo',--- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.vkCmdSetDiscardRectangleEXT',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetScissor',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkGetPhysicalDevicePresentRectanglesKHR'-data VkRect2D = VkRect2D- { -- | @offset@ is a 'VkOffset2D' specifying the rectangle offset.- vkOffset :: VkOffset2D- , -- | @extent@ is a 'VkExtent2D' specifying the rectangle extent.- vkExtent :: VkExtent2D- }- deriving (Eq, Show)--instance Storable VkRect2D where- sizeOf ~_ = 16- alignment ~_ = 4- peek ptr = VkRect2D <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkOffset (poked :: VkRect2D))- *> poke (ptr `plusPtr` 8) (vkExtent (poked :: VkRect2D))--- | VkSpecializationMapEntry - Structure specifying a specialization map--- entry------ = Description------ If a @constantID@ value is not a specialization constant ID used in the--- shader, that map entry does not affect the behavior of the pipeline.------ == Valid Usage------ - For a @constantID@ specialization constant declared in a shader,--- @size@ /must/ match the byte size of the @constantID@. If the--- specialization constant is of type @boolean@, @size@ /must/ be the--- byte size of @VkBool32@------ = See Also------ 'VkSpecializationInfo'-data VkSpecializationMapEntry = VkSpecializationMapEntry- { -- | @constantID@ is the ID of the specialization constant in SPIR-V.- vkConstantID :: Word32- , -- | @offset@ is the byte offset of the specialization constant value within- -- the supplied data buffer.- vkOffset :: Word32- , -- | @size@ is the byte size of the specialization constant value within the- -- supplied data buffer.- vkSize :: CSize- }- deriving (Eq, Show)--instance Storable VkSpecializationMapEntry where- sizeOf ~_ = 16- alignment ~_ = 8- peek ptr = VkSpecializationMapEntry <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkConstantID (poked :: VkSpecializationMapEntry))- *> poke (ptr `plusPtr` 4) (vkOffset (poked :: VkSpecializationMapEntry))- *> poke (ptr `plusPtr` 8) (vkSize (poked :: VkSpecializationMapEntry))--- | VkSpecializationInfo - Structure specifying specialization info------ = Description------ @pMapEntries@ points to a structure of type 'VkSpecializationMapEntry'.------ == Valid Usage------ - The @offset@ member of each element of @pMapEntries@ /must/ be less--- than @dataSize@------ - The @size@ member of each element of @pMapEntries@ /must/ be less--- than or equal to @dataSize@ minus @offset@------ - If @mapEntryCount@ is not @0@, @pMapEntries@ /must/ be a valid--- pointer to an array of @mapEntryCount@ valid--- @VkSpecializationMapEntry@ structures------ == Valid Usage (Implicit)------ - If @dataSize@ is not @0@, @pData@ /must/ be a valid pointer to an--- array of @dataSize@ bytes------ = See Also------ 'VkPipelineShaderStageCreateInfo', 'VkSpecializationMapEntry'-data VkSpecializationInfo = VkSpecializationInfo- { -- | @mapEntryCount@ is the number of entries in the @pMapEntries@ array.- vkMapEntryCount :: Word32- , -- | @pMapEntries@ is a pointer to an array of @VkSpecializationMapEntry@- -- which maps constant IDs to offsets in @pData@.- vkPMapEntries :: Ptr VkSpecializationMapEntry- , -- | @dataSize@ is the byte size of the @pData@ buffer.- vkDataSize :: CSize- , -- | @pData@ contains the actual constant values to specialize with.- vkPData :: Ptr ()- }- deriving (Eq, Show)--instance Storable VkSpecializationInfo where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkSpecializationInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkMapEntryCount (poked :: VkSpecializationInfo))- *> poke (ptr `plusPtr` 8) (vkPMapEntries (poked :: VkSpecializationInfo))- *> poke (ptr `plusPtr` 16) (vkDataSize (poked :: VkSpecializationInfo))- *> poke (ptr `plusPtr` 24) (vkPData (poked :: VkSpecializationInfo))--- | VkPipelineShaderStageCreateInfo - Structure specifying parameters of a--- newly created pipeline shader stage------ == Valid Usage------ - If the [geometry--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)--- feature is not enabled, @stage@ /must/ not be--- @VK_SHADER_STAGE_GEOMETRY_BIT@------ - If the [tessellation--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)--- feature is not enabled, @stage@ /must/ not be--- @VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT@ or--- @VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT@------ - @stage@ /must/ not be @VK_SHADER_STAGE_ALL_GRAPHICS@, or--- @VK_SHADER_STAGE_ALL@------ - @pName@ /must/ be the name of an @OpEntryPoint@ in @module@ with an--- execution model that matches @stage@------ - If the identified entry point includes any variable in its interface--- that is declared with the @ClipDistance@ @BuiltIn@ decoration, that--- variable /must/ not have an array size greater than--- @VkPhysicalDeviceLimits@::@maxClipDistances@------ - If the identified entry point includes any variable in its interface--- that is declared with the @CullDistance@ @BuiltIn@ decoration, that--- variable /must/ not have an array size greater than--- @VkPhysicalDeviceLimits@::@maxCullDistances@------ - If the identified entry point includes any variables in its--- interface that are declared with the @ClipDistance@ or--- @CullDistance@ @BuiltIn@ decoration, those variables /must/ not have--- array sizes which sum to more than--- @VkPhysicalDeviceLimits@::@maxCombinedClipAndCullDistances@------ - If the identified entry point includes any variable in its interface--- that is declared with the @SampleMask@ @BuiltIn@ decoration, that--- variable /must/ not have an array size greater than--- @VkPhysicalDeviceLimits@::@maxSampleMaskWords@------ - If @stage@ is @VK_SHADER_STAGE_VERTEX_BIT@, the identified entry--- point /must/ not include any input variable in its interface that is--- decorated with @CullDistance@------ - If @stage@ is @VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT@ or--- @VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT@, and the identified--- entry point has an @OpExecutionMode@ instruction that specifies a--- patch size with @OutputVertices@, the patch size /must/ be greater--- than @0@ and less than or equal to--- @VkPhysicalDeviceLimits@::@maxTessellationPatchSize@------ - If @stage@ is @VK_SHADER_STAGE_GEOMETRY_BIT@, the identified entry--- point /must/ have an @OpExecutionMode@ instruction that specifies a--- maximum output vertex count that is greater than @0@ and less than--- or equal to @VkPhysicalDeviceLimits@::@maxGeometryOutputVertices@------ - If @stage@ is @VK_SHADER_STAGE_GEOMETRY_BIT@, the identified entry--- point /must/ have an @OpExecutionMode@ instruction that specifies an--- invocation count that is greater than @0@ and less than or equal to--- @VkPhysicalDeviceLimits@::@maxGeometryShaderInvocations@------ - If @stage@ is @VK_SHADER_STAGE_GEOMETRY_BIT@, and the identified--- entry point writes to @Layer@ for any primitive, it /must/ write the--- same value to @Layer@ for all vertices of a given primitive------ - If @stage@ is @VK_SHADER_STAGE_GEOMETRY_BIT@, and the identified--- entry point writes to @ViewportIndex@ for any primitive, it /must/--- write the same value to @ViewportIndex@ for all vertices of a given--- primitive------ - If @stage@ is @VK_SHADER_STAGE_FRAGMENT_BIT@, the identified entry--- point /must/ not include any output variables in its interface--- decorated with @CullDistance@------ - If @stage@ is @VK_SHADER_STAGE_FRAGMENT_BIT@, and the identified--- entry point writes to @FragDepth@ in any execution path, it /must/--- write to @FragDepth@ in all execution paths------ - If @stage@ is @VK_SHADER_STAGE_FRAGMENT_BIT@, and the identified--- entry point writes to @FragStencilRefEXT@ in any execution path, it--- /must/ write to @FragStencilRefEXT@ in all execution paths------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@------ - @stage@ /must/ be a valid 'VkShaderStageFlagBits' value------ - @module@ /must/ be a valid @VkShaderModule@ handle------ - @pName@ /must/ be a null-terminated UTF-8 string------ - If @pSpecializationInfo@ is not @NULL@, @pSpecializationInfo@ /must/--- be a valid pointer to a valid @VkSpecializationInfo@ structure------ = See Also------ 'VkComputePipelineCreateInfo', 'VkGraphicsPipelineCreateInfo',--- 'VkPipelineShaderStageCreateFlags',--- 'Graphics.Vulkan.Core10.Shader.VkShaderModule', 'VkShaderStageFlagBits',--- 'VkSpecializationInfo', 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineShaderStageCreateInfo = VkPipelineShaderStageCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkPipelineShaderStageCreateFlags- , -- | @stage@ is a 'VkShaderStageFlagBits' value specifying a single pipeline- -- stage.- vkStage :: VkShaderStageFlagBits- , -- | @module@ is a @VkShaderModule@ object that contains the shader for this- -- stage.- vkModule :: VkShaderModule- , -- | @pName@ is a pointer to a null-terminated UTF-8 string specifying the- -- entry point name of the shader for this stage.- vkPName :: Ptr CChar- , -- | @pSpecializationInfo@ is a pointer to 'VkSpecializationInfo', as- -- described in [Specialization- -- Constants](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-specialization-constants),- -- and /can/ be @NULL@.- vkPSpecializationInfo :: Ptr VkSpecializationInfo- }- deriving (Eq, Show)--instance Storable VkPipelineShaderStageCreateInfo where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkPipelineShaderStageCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineShaderStageCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineShaderStageCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineShaderStageCreateInfo))- *> poke (ptr `plusPtr` 20) (vkStage (poked :: VkPipelineShaderStageCreateInfo))- *> poke (ptr `plusPtr` 24) (vkModule (poked :: VkPipelineShaderStageCreateInfo))- *> poke (ptr `plusPtr` 32) (vkPName (poked :: VkPipelineShaderStageCreateInfo))- *> poke (ptr `plusPtr` 40) (vkPSpecializationInfo (poked :: VkPipelineShaderStageCreateInfo))--- | VkComputePipelineCreateInfo - Structure specifying parameters of a newly--- created compute pipeline------ = Description------ The parameters @basePipelineHandle@ and @basePipelineIndex@ are--- described in more detail in [Pipeline--- Derivatives](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-pipeline-derivatives).------ @stage@ points to a structure of type @VkPipelineShaderStageCreateInfo@.------ == Valid Usage------ - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,--- and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be a--- valid handle to a compute @VkPipeline@------ - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,--- and @basePipelineHandle@ is--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @basePipelineIndex@ /must/ be a valid index into the calling--- command’s @pCreateInfos@ parameter------ - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,--- and @basePipelineIndex@ is not -1, @basePipelineHandle@ /must/ be--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'------ - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,--- and @basePipelineHandle@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @basePipelineIndex@ /must/ be -1------ - The @stage@ member of @stage@ /must/ be--- @VK_SHADER_STAGE_COMPUTE_BIT@------ - The shader code for the entry point identified by @stage@ and the--- rest of the state identified by this structure /must/ adhere to the--- pipeline linking rules described in the [Shader--- Interfaces](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#interfaces)--- chapter------ - @layout@ /must/ be--- [consistent](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency)--- with the layout of the compute shader specified in @stage@------ - The number of resources in @layout@ accessible to the compute shader--- stage /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxPerStageResources@------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be a valid combination of 'VkPipelineCreateFlagBits'--- values------ - @stage@ /must/ be a valid @VkPipelineShaderStageCreateInfo@--- structure------ - @layout@ /must/ be a valid @VkPipelineLayout@ handle------ - Both of @basePipelineHandle@, and @layout@ that are valid handles--- /must/ have been created, allocated, or retrieved from the same--- @VkDevice@------ = See Also------ 'VkPipeline', 'VkPipelineCreateFlags', 'VkPipelineLayout',--- 'VkPipelineShaderStageCreateInfo',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkCreateComputePipelines'-data VkComputePipelineCreateInfo = VkComputePipelineCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is a bitmask of 'VkPipelineCreateFlagBits' specifying how the- -- pipeline will be generated.- vkFlags :: VkPipelineCreateFlags- , -- | @stage@ is a 'VkPipelineShaderStageCreateInfo' describing the compute- -- shader.- vkStage :: VkPipelineShaderStageCreateInfo- , -- | @layout@ is the description of binding locations used by both the- -- pipeline and descriptor sets used with the pipeline.- vkLayout :: VkPipelineLayout- , -- | @basePipelineHandle@ is a pipeline to derive from- vkBasePipelineHandle :: VkPipeline- , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use- -- as a pipeline to derive from- vkBasePipelineIndex :: Int32- }- deriving (Eq, Show)--instance Storable VkComputePipelineCreateInfo where- sizeOf ~_ = 96- alignment ~_ = 8- peek ptr = VkComputePipelineCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 72)- <*> peek (ptr `plusPtr` 80)- <*> peek (ptr `plusPtr` 88)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkComputePipelineCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkComputePipelineCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkComputePipelineCreateInfo))- *> poke (ptr `plusPtr` 24) (vkStage (poked :: VkComputePipelineCreateInfo))- *> poke (ptr `plusPtr` 72) (vkLayout (poked :: VkComputePipelineCreateInfo))- *> poke (ptr `plusPtr` 80) (vkBasePipelineHandle (poked :: VkComputePipelineCreateInfo))- *> poke (ptr `plusPtr` 88) (vkBasePipelineIndex (poked :: VkComputePipelineCreateInfo))--- | VkVertexInputBindingDescription - Structure specifying vertex input--- binding description------ == Valid Usage------ - @binding@ /must/ be less than--- @VkPhysicalDeviceLimits@::@maxVertexInputBindings@------ - @stride@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxVertexInputBindingStride@------ == Valid Usage (Implicit)------ - @inputRate@ /must/ be a valid 'VkVertexInputRate' value------ = See Also------ 'VkPipelineVertexInputStateCreateInfo', 'VkVertexInputRate'-data VkVertexInputBindingDescription = VkVertexInputBindingDescription- { -- | @binding@ is the binding number that this structure describes.- vkBinding :: Word32- , -- | @stride@ is the distance in bytes between two consecutive elements- -- within the buffer.- vkStride :: Word32- , -- | @inputRate@ is a 'VkVertexInputRate' value specifying whether vertex- -- attribute addressing is a function of the vertex index or of the- -- instance index.- vkInputRate :: VkVertexInputRate- }- deriving (Eq, Show)--instance Storable VkVertexInputBindingDescription where- sizeOf ~_ = 12- alignment ~_ = 4- peek ptr = VkVertexInputBindingDescription <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkBinding (poked :: VkVertexInputBindingDescription))- *> poke (ptr `plusPtr` 4) (vkStride (poked :: VkVertexInputBindingDescription))- *> poke (ptr `plusPtr` 8) (vkInputRate (poked :: VkVertexInputBindingDescription))--- | VkVertexInputAttributeDescription - Structure specifying vertex input--- attribute description------ == Valid Usage------ - @location@ /must/ be less than--- @VkPhysicalDeviceLimits@::@maxVertexInputAttributes@------ - @binding@ /must/ be less than--- @VkPhysicalDeviceLimits@::@maxVertexInputBindings@------ - @offset@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxVertexInputAttributeOffset@------ - @format@ /must/ be allowed as a vertex buffer format, as specified--- by the @VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT@ flag in--- @VkFormatProperties@::@bufferFeatures@ returned by--- @vkGetPhysicalDeviceFormatProperties@------ == Valid Usage (Implicit)------ - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'--- value------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkFormat',--- 'VkPipelineVertexInputStateCreateInfo'-data VkVertexInputAttributeDescription = VkVertexInputAttributeDescription- { -- | @location@ is the shader binding location number for this attribute.- vkLocation :: Word32- , -- | @binding@ is the binding number which this attribute takes its data- -- from.- vkBinding :: Word32- , -- | @format@ is the size and type of the vertex attribute data.- vkFormat :: VkFormat- , -- | @offset@ is a byte offset of this attribute relative to the start of an- -- element in the vertex input binding.- vkOffset :: Word32- }- deriving (Eq, Show)--instance Storable VkVertexInputAttributeDescription where- sizeOf ~_ = 16- alignment ~_ = 4- peek ptr = VkVertexInputAttributeDescription <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- poke ptr poked = poke (ptr `plusPtr` 0) (vkLocation (poked :: VkVertexInputAttributeDescription))- *> poke (ptr `plusPtr` 4) (vkBinding (poked :: VkVertexInputAttributeDescription))- *> poke (ptr `plusPtr` 8) (vkFormat (poked :: VkVertexInputAttributeDescription))- *> poke (ptr `plusPtr` 12) (vkOffset (poked :: VkVertexInputAttributeDescription))--- | VkPipelineVertexInputStateCreateInfo - Structure specifying parameters--- of a newly created pipeline vertex input state------ == Valid Usage------ - @vertexBindingDescriptionCount@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxVertexInputBindings@------ - @vertexAttributeDescriptionCount@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxVertexInputAttributes@------ - For every @binding@ specified by each element of--- @pVertexAttributeDescriptions@, a @VkVertexInputBindingDescription@--- /must/ exist in @pVertexBindingDescriptions@ with the same value of--- @binding@------ - All elements of @pVertexBindingDescriptions@ /must/ describe--- distinct binding numbers------ - All elements of @pVertexAttributeDescriptions@ /must/ describe--- distinct attribute locations------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO@------ - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.VkPipelineVertexInputDivisorStateCreateInfoEXT'------ - @flags@ /must/ be @0@------ - If @vertexBindingDescriptionCount@ is not @0@,--- @pVertexBindingDescriptions@ /must/ be a valid pointer to an array--- of @vertexBindingDescriptionCount@ valid--- @VkVertexInputBindingDescription@ structures------ - If @vertexAttributeDescriptionCount@ is not @0@,--- @pVertexAttributeDescriptions@ /must/ be a valid pointer to an array--- of @vertexAttributeDescriptionCount@ valid--- @VkVertexInputAttributeDescription@ structures------ = See Also------ 'VkGraphicsPipelineCreateInfo', 'VkPipelineVertexInputStateCreateFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'VkVertexInputAttributeDescription', 'VkVertexInputBindingDescription'-data VkPipelineVertexInputStateCreateInfo = VkPipelineVertexInputStateCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkPipelineVertexInputStateCreateFlags- , -- | @vertexBindingDescriptionCount@ is the number of vertex binding- -- descriptions provided in @pVertexBindingDescriptions@.- vkVertexBindingDescriptionCount :: Word32- , -- | @pVertexBindingDescriptions@ is a pointer to an array of- -- @VkVertexInputBindingDescription@ structures.- vkPVertexBindingDescriptions :: Ptr VkVertexInputBindingDescription- , -- | @vertexAttributeDescriptionCount@ is the number of vertex attribute- -- descriptions provided in @pVertexAttributeDescriptions@.- vkVertexAttributeDescriptionCount :: Word32- , -- | @pVertexAttributeDescriptions@ is a pointer to an array of- -- @VkVertexInputAttributeDescription@ structures.- vkPVertexAttributeDescriptions :: Ptr VkVertexInputAttributeDescription- }- deriving (Eq, Show)--instance Storable VkPipelineVertexInputStateCreateInfo where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkPipelineVertexInputStateCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineVertexInputStateCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineVertexInputStateCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineVertexInputStateCreateInfo))- *> poke (ptr `plusPtr` 20) (vkVertexBindingDescriptionCount (poked :: VkPipelineVertexInputStateCreateInfo))- *> poke (ptr `plusPtr` 24) (vkPVertexBindingDescriptions (poked :: VkPipelineVertexInputStateCreateInfo))- *> poke (ptr `plusPtr` 32) (vkVertexAttributeDescriptionCount (poked :: VkPipelineVertexInputStateCreateInfo))- *> poke (ptr `plusPtr` 40) (vkPVertexAttributeDescriptions (poked :: VkPipelineVertexInputStateCreateInfo))--- | VkPipelineInputAssemblyStateCreateInfo - Structure specifying parameters--- of a newly created pipeline input assembly state------ = Description------ Restarting the assembly of primitives discards the most recent index--- values if those elements formed an incomplete primitive, and restarts--- the primitive assembly using the subsequent indices, but only assembling--- the immediately following element through the end of the originally--- specified elements. The primitive restart index value comparison is--- performed before adding the @vertexOffset@ value to the index value.------ == Valid Usage------ - If @topology@ is @VK_PRIMITIVE_TOPOLOGY_POINT_LIST@,--- @VK_PRIMITIVE_TOPOLOGY_LINE_LIST@,--- @VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST@,--- @VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY@,--- @VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY@ or--- @VK_PRIMITIVE_TOPOLOGY_PATCH_LIST@, @primitiveRestartEnable@ /must/--- be @VK_FALSE@------ - If the [geometry--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)--- feature is not enabled, @topology@ /must/ not be any of--- @VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY@,--- @VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY@,--- @VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY@ or--- @VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY@------ - If the [tessellation--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)--- feature is not enabled, @topology@ /must/ not be--- @VK_PRIMITIVE_TOPOLOGY_PATCH_LIST@------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@------ - @topology@ /must/ be a valid 'VkPrimitiveTopology' value------ = See Also------ @VkBool32@, 'VkGraphicsPipelineCreateInfo',--- 'VkPipelineInputAssemblyStateCreateFlags', 'VkPrimitiveTopology',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineInputAssemblyStateCreateInfo = VkPipelineInputAssemblyStateCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkPipelineInputAssemblyStateCreateFlags- , -- | @topology@ is a 'VkPrimitiveTopology' defining the primitive topology,- -- as described below.- vkTopology :: VkPrimitiveTopology- , -- | @primitiveRestartEnable@ controls whether a special vertex index value- -- is treated as restarting the assembly of primitives. This enable only- -- applies to indexed draws- -- ('Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDrawIndexed' and- -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDrawIndexedIndirect'),- -- and the special index value is either 0xFFFFFFFF when the @indexType@- -- parameter of @vkCmdBindIndexBuffer@ is equal to @VK_INDEX_TYPE_UINT32@,- -- or 0xFFFF when @indexType@ is equal to @VK_INDEX_TYPE_UINT16@. Primitive- -- restart is not allowed for “list” topologies.- vkPrimitiveRestartEnable :: VkBool32- }- deriving (Eq, Show)--instance Storable VkPipelineInputAssemblyStateCreateInfo where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkPipelineInputAssemblyStateCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineInputAssemblyStateCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineInputAssemblyStateCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineInputAssemblyStateCreateInfo))- *> poke (ptr `plusPtr` 20) (vkTopology (poked :: VkPipelineInputAssemblyStateCreateInfo))- *> poke (ptr `plusPtr` 24) (vkPrimitiveRestartEnable (poked :: VkPipelineInputAssemblyStateCreateInfo))--- | VkPipelineTessellationStateCreateInfo - Structure specifying parameters--- of a newly created pipeline tessellation state------ == Valid Usage------ - @patchControlPoints@ /must/ be greater than zero and less than or--- equal to @VkPhysicalDeviceLimits@::@maxTessellationPatchSize@------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO@------ - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkPipelineTessellationDomainOriginStateCreateInfo'------ - @flags@ /must/ be @0@------ = See Also------ 'VkGraphicsPipelineCreateInfo',--- 'VkPipelineTessellationStateCreateFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineTessellationStateCreateInfo = VkPipelineTessellationStateCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkPipelineTessellationStateCreateFlags- , -- | @patchControlPoints@ number of control points per patch.- vkPatchControlPoints :: Word32- }- deriving (Eq, Show)--instance Storable VkPipelineTessellationStateCreateInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkPipelineTessellationStateCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineTessellationStateCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineTessellationStateCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineTessellationStateCreateInfo))- *> poke (ptr `plusPtr` 20) (vkPatchControlPoints (poked :: VkPipelineTessellationStateCreateInfo))--- | VkPipelineViewportStateCreateInfo - Structure specifying parameters of a--- newly created pipeline viewport state------ == Valid Usage------ - If the [multiple--- viewports](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiViewport)--- feature is not enabled, @viewportCount@ /must/ be @1@------ - If the [multiple--- viewports](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiViewport)--- feature is not enabled, @scissorCount@ /must/ be @1@------ - @viewportCount@ /must/ be between @1@ and--- @VkPhysicalDeviceLimits@::@maxViewports@, inclusive------ - @scissorCount@ /must/ be between @1@ and--- @VkPhysicalDeviceLimits@::@maxViewports@, inclusive------ - @scissorCount@ and @viewportCount@ /must/ be identical------ - If the @viewportWScalingEnable@ member of a--- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkPipelineViewportWScalingStateCreateInfoNV'--- structure chained to the @pNext@ chain is @VK_TRUE@, the--- @viewportCount@ member of the--- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkPipelineViewportWScalingStateCreateInfoNV'--- structure /must/ be equal to @viewportCount@------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of--- 'Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle.VkPipelineViewportSwizzleStateCreateInfoNV'--- or--- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkPipelineViewportWScalingStateCreateInfoNV'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ - @flags@ /must/ be @0@------ - @viewportCount@ /must/ be greater than @0@------ - @scissorCount@ /must/ be greater than @0@------ = See Also------ 'VkGraphicsPipelineCreateInfo', 'VkPipelineViewportStateCreateFlags',--- 'VkRect2D', 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkViewport'-data VkPipelineViewportStateCreateInfo = VkPipelineViewportStateCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkPipelineViewportStateCreateFlags- , -- | @viewportCount@ is the number of viewports used by the pipeline.- vkViewportCount :: Word32- , -- | @pViewports@ is a pointer to an array of 'VkViewport' structures,- -- defining the viewport transforms. If the viewport state is dynamic, this- -- member is ignored.- vkPViewports :: Ptr VkViewport- , -- | @scissorCount@ is the number of- -- [scissors](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-scissor)- -- and /must/ match the number of viewports.- vkScissorCount :: Word32- , -- | @pScissors@ is a pointer to an array of @VkRect2D@ structures which- -- define the rectangular bounds of the scissor for the corresponding- -- viewport. If the scissor state is dynamic, this member is ignored.- vkPScissors :: Ptr VkRect2D- }- deriving (Eq, Show)--instance Storable VkPipelineViewportStateCreateInfo where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkPipelineViewportStateCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineViewportStateCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineViewportStateCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineViewportStateCreateInfo))- *> poke (ptr `plusPtr` 20) (vkViewportCount (poked :: VkPipelineViewportStateCreateInfo))- *> poke (ptr `plusPtr` 24) (vkPViewports (poked :: VkPipelineViewportStateCreateInfo))- *> poke (ptr `plusPtr` 32) (vkScissorCount (poked :: VkPipelineViewportStateCreateInfo))- *> poke (ptr `plusPtr` 40) (vkPScissors (poked :: VkPipelineViewportStateCreateInfo))--- | VkPipelineRasterizationStateCreateInfo - Structure specifying parameters--- of a newly created pipeline rasterization state------ = Description------ The application /can/ also add a--- @VkPipelineRasterizationStateRasterizationOrderAMD@ structure to the--- @pNext@ chain of a @VkPipelineRasterizationStateCreateInfo@ structure.--- This structure enables selecting the rasterization order to use when--- rendering with the corresponding graphics pipeline as described in--- [Rasterization--- Order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#primrast-order).------ == Valid Usage------ - If the [depth--- clamping](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-depthClamp)--- feature is not enabled, @depthClampEnable@ /must/ be @VK_FALSE@------ - If the [non-solid fill--- modes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-fillModeNonSolid)--- feature is not enabled, @polygonMode@ /must/ be--- @VK_POLYGON_MODE_FILL@ or @VK_POLYGON_MODE_FILL_RECTANGLE_NV@------ - If the @{html_spec_relative}#VK_NV_fill_rectangle@ extension is not--- enabled, @polygonMode@ /must/ not be--- @VK_POLYGON_MODE_FILL_RECTANGLE_NV@------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of--- 'Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization.VkPipelineRasterizationConservativeStateCreateInfoEXT'--- or--- 'Graphics.Vulkan.Extensions.VK_AMD_rasterization_order.VkPipelineRasterizationStateRasterizationOrderAMD'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ - @flags@ /must/ be @0@------ - @polygonMode@ /must/ be a valid 'VkPolygonMode' value------ - @cullMode@ /must/ be a valid combination of 'VkCullModeFlagBits'--- values------ - @frontFace@ /must/ be a valid 'VkFrontFace' value------ = See Also------ @VkBool32@, 'VkCullModeFlags', 'VkFrontFace',--- 'VkGraphicsPipelineCreateInfo',--- 'VkPipelineRasterizationStateCreateFlags', 'VkPolygonMode',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineRasterizationStateCreateInfo = VkPipelineRasterizationStateCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkPipelineRasterizationStateCreateFlags- , -- | @depthClampEnable@ controls whether to clamp the fragment’s depth values- -- instead of clipping primitives to the z planes of the frustum, as- -- described in [Primitive- -- Clipping](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vertexpostproc-clipping).- vkDepthClampEnable :: VkBool32- , -- | @rasterizerDiscardEnable@ controls whether primitives are discarded- -- immediately before the rasterization stage.- vkRasterizerDiscardEnable :: VkBool32- , -- | @polygonMode@ is the triangle rendering mode. See 'VkPolygonMode'.- vkPolygonMode :: VkPolygonMode- , -- | @cullMode@ is the triangle facing direction used for primitive culling.- -- See 'VkCullModeFlagBits'.- vkCullMode :: VkCullModeFlags- , -- | @frontFace@ is a 'VkFrontFace' value specifying the front-facing- -- triangle orientation to be used for culling.- vkFrontFace :: VkFrontFace- , -- | @depthBiasEnable@ controls whether to bias fragment depth values.- vkDepthBiasEnable :: VkBool32- , -- | @depthBiasConstantFactor@ is a scalar factor controlling the constant- -- depth value added to each fragment.- vkDepthBiasConstantFactor :: CFloat- , -- | @depthBiasClamp@ is the maximum (or minimum) depth bias of a fragment.- vkDepthBiasClamp :: CFloat- , -- | @depthBiasSlopeFactor@ is a scalar factor applied to a fragment’s slope- -- in depth bias calculations.- vkDepthBiasSlopeFactor :: CFloat- , -- | @lineWidth@ is the width of rasterized line segments.- vkLineWidth :: CFloat- }- deriving (Eq, Show)--instance Storable VkPipelineRasterizationStateCreateInfo where- sizeOf ~_ = 64- alignment ~_ = 8- peek ptr = VkPipelineRasterizationStateCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 52)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 20) (vkDepthClampEnable (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 24) (vkRasterizerDiscardEnable (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 28) (vkPolygonMode (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 32) (vkCullMode (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 36) (vkFrontFace (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 40) (vkDepthBiasEnable (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 44) (vkDepthBiasConstantFactor (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 48) (vkDepthBiasClamp (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 52) (vkDepthBiasSlopeFactor (poked :: VkPipelineRasterizationStateCreateInfo))- *> poke (ptr `plusPtr` 56) (vkLineWidth (poked :: VkPipelineRasterizationStateCreateInfo))--- | VkPipelineMultisampleStateCreateInfo - Structure specifying parameters--- of a newly created pipeline multisample state------ == Valid Usage------ - If the [sample rate--- shading](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sampleRateShading)--- feature is not enabled, @sampleShadingEnable@ /must/ be @VK_FALSE@------ - If the [alpha to--- one](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-alphaToOne)--- feature is not enabled, @alphaToOneEnable@ /must/ be @VK_FALSE@------ - @minSampleShading@ /must/ be in the range [0,1]------ - If the subpass has any color attachments and @rasterizationSamples@--- is greater than the number of color samples, then--- @sampleShadingEnable@ /must/ be @VK_FALSE@------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of--- 'Graphics.Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.VkPipelineCoverageModulationStateCreateInfoNV',--- 'Graphics.Vulkan.Extensions.VK_NV_fragment_coverage_to_color.VkPipelineCoverageToColorStateCreateInfoNV',--- or--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ - @flags@ /must/ be @0@------ - @rasterizationSamples@ /must/ be a valid--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'--- value------ - If @pSampleMask@ is not @NULL@, @pSampleMask@ /must/ be a valid--- pointer to an array of--- \(\lceil{\mathit{rasterizationSamples} \over 32}\rceil\)--- @VkSampleMask@ values------ = See Also------ @VkBool32@, 'VkGraphicsPipelineCreateInfo',--- 'VkPipelineMultisampleStateCreateFlags',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits',--- @VkSampleMask@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineMultisampleStateCreateInfo = VkPipelineMultisampleStateCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkPipelineMultisampleStateCreateFlags- , -- | @rasterizationSamples@ is a- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'- -- specifying the number of samples per pixel used in rasterization.- vkRasterizationSamples :: VkSampleCountFlagBits- , -- | @sampleShadingEnable@ /can/ be used to enable [Sample- -- Shading](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#primsrast-sampleshading).- vkSampleShadingEnable :: VkBool32- , -- | @minSampleShading@ specifies a minimum fraction of sample shading if- -- @sampleShadingEnable@ is set to @VK_TRUE@.- vkMinSampleShading :: CFloat- , -- | @pSampleMask@ is a bitmask of static coverage information that is ANDed- -- with the coverage information generated during rasterization, as- -- described in [Sample- -- Mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-samplemask).- vkPSampleMask :: Ptr VkSampleMask- , -- | @alphaToCoverageEnable@ controls whether a temporary coverage value is- -- generated based on the alpha component of the fragment’s first color- -- output as specified in the [Multisample- -- Coverage](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-covg)- -- section.- vkAlphaToCoverageEnable :: VkBool32- , -- | @alphaToOneEnable@ controls whether the alpha component of the- -- fragment’s first color output is replaced with one as described in- -- [Multisample- -- Coverage](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-covg).- vkAlphaToOneEnable :: VkBool32- }- deriving (Eq, Show)--instance Storable VkPipelineMultisampleStateCreateInfo where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkPipelineMultisampleStateCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 44)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineMultisampleStateCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineMultisampleStateCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineMultisampleStateCreateInfo))- *> poke (ptr `plusPtr` 20) (vkRasterizationSamples (poked :: VkPipelineMultisampleStateCreateInfo))- *> poke (ptr `plusPtr` 24) (vkSampleShadingEnable (poked :: VkPipelineMultisampleStateCreateInfo))- *> poke (ptr `plusPtr` 28) (vkMinSampleShading (poked :: VkPipelineMultisampleStateCreateInfo))- *> poke (ptr `plusPtr` 32) (vkPSampleMask (poked :: VkPipelineMultisampleStateCreateInfo))- *> poke (ptr `plusPtr` 40) (vkAlphaToCoverageEnable (poked :: VkPipelineMultisampleStateCreateInfo))- *> poke (ptr `plusPtr` 44) (vkAlphaToOneEnable (poked :: VkPipelineMultisampleStateCreateInfo))--- | VkPipelineColorBlendAttachmentState - Structure specifying a pipeline--- color blend attachment state------ == Valid Usage------ - If the [dual source--- blending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-dualSrcBlend)--- feature is not enabled, @srcColorBlendFactor@ /must/ not be--- @VK_BLEND_FACTOR_SRC1_COLOR@,--- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@,--- @VK_BLEND_FACTOR_SRC1_ALPHA@, or--- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@------ - If the [dual source--- blending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-dualSrcBlend)--- feature is not enabled, @dstColorBlendFactor@ /must/ not be--- @VK_BLEND_FACTOR_SRC1_COLOR@,--- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@,--- @VK_BLEND_FACTOR_SRC1_ALPHA@, or--- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@------ - If the [dual source--- blending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-dualSrcBlend)--- feature is not enabled, @srcAlphaBlendFactor@ /must/ not be--- @VK_BLEND_FACTOR_SRC1_COLOR@,--- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@,--- @VK_BLEND_FACTOR_SRC1_ALPHA@, or--- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@------ - If the [dual source--- blending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-dualSrcBlend)--- feature is not enabled, @dstAlphaBlendFactor@ /must/ not be--- @VK_BLEND_FACTOR_SRC1_COLOR@,--- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR@,--- @VK_BLEND_FACTOR_SRC1_ALPHA@, or--- @VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA@------ - If either of @colorBlendOp@ or @alphaBlendOp@ is an [advanced blend--- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blend-advanced),--- then @colorBlendOp@ /must/ equal @alphaBlendOp@------ - If--- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendIndependentBlend@--- is @VK_FALSE@ and @colorBlendOp@ is an [advanced blend--- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blend-advanced),--- then @colorBlendOp@ /must/ be the same for all attachments.------ - If--- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendIndependentBlend@--- is @VK_FALSE@ and @alphaBlendOp@ is an [advanced blend--- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blend-advanced),--- then @alphaBlendOp@ /must/ be the same for all attachments.------ - If--- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendAllOperations@--- is @VK_FALSE@, then @colorBlendOp@ /must/ not be--- @VK_BLEND_OP_ZERO_EXT@, @VK_BLEND_OP_SRC_EXT@,--- @VK_BLEND_OP_DST_EXT@, @VK_BLEND_OP_SRC_OVER_EXT@,--- @VK_BLEND_OP_DST_OVER_EXT@, @VK_BLEND_OP_SRC_IN_EXT@,--- @VK_BLEND_OP_DST_IN_EXT@, @VK_BLEND_OP_SRC_OUT_EXT@,--- @VK_BLEND_OP_DST_OUT_EXT@, @VK_BLEND_OP_SRC_ATOP_EXT@,--- @VK_BLEND_OP_DST_ATOP_EXT@, @VK_BLEND_OP_XOR_EXT@,--- @VK_BLEND_OP_INVERT_EXT@, @VK_BLEND_OP_INVERT_RGB_EXT@,--- @VK_BLEND_OP_LINEARDODGE_EXT@, @VK_BLEND_OP_LINEARBURN_EXT@,--- @VK_BLEND_OP_VIVIDLIGHT_EXT@, @VK_BLEND_OP_LINEARLIGHT_EXT@,--- @VK_BLEND_OP_PINLIGHT_EXT@, @VK_BLEND_OP_HARDMIX_EXT@,--- @VK_BLEND_OP_PLUS_EXT@, @VK_BLEND_OP_PLUS_CLAMPED_EXT@,--- @VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT@, @VK_BLEND_OP_PLUS_DARKER_EXT@,--- @VK_BLEND_OP_MINUS_EXT@, @VK_BLEND_OP_MINUS_CLAMPED_EXT@,--- @VK_BLEND_OP_CONTRAST_EXT@, @VK_BLEND_OP_INVERT_OVG_EXT@,--- @VK_BLEND_OP_RED_EXT@, @VK_BLEND_OP_GREEN_EXT@, or--- @VK_BLEND_OP_BLUE_EXT@------ - If @colorBlendOp@ or @alphaBlendOp@ is an [advanced blend--- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blend-advanced),--- then--- 'Graphics.Vulkan.Core10.Pass.VkSubpassDescription'::@colorAttachmentCount@--- of the subpass this pipeline is compiled against /must/ be less than--- or equal to--- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT'::advancedBlendMaxColorAttachments------ == Valid Usage (Implicit)------ - @srcColorBlendFactor@ /must/ be a valid 'VkBlendFactor' value------ - @dstColorBlendFactor@ /must/ be a valid 'VkBlendFactor' value------ - @colorBlendOp@ /must/ be a valid 'VkBlendOp' value------ - @srcAlphaBlendFactor@ /must/ be a valid 'VkBlendFactor' value------ - @dstAlphaBlendFactor@ /must/ be a valid 'VkBlendFactor' value------ - @alphaBlendOp@ /must/ be a valid 'VkBlendOp' value------ - @colorWriteMask@ /must/ be a valid combination of--- 'VkColorComponentFlagBits' values------ = See Also------ 'VkBlendFactor', 'VkBlendOp', @VkBool32@, 'VkColorComponentFlags',--- 'VkPipelineColorBlendStateCreateInfo'-data VkPipelineColorBlendAttachmentState = VkPipelineColorBlendAttachmentState- { -- | @blendEnable@ controls whether blending is enabled for the corresponding- -- color attachment. If blending is not enabled, the source fragment’s- -- color for that attachment is passed through unmodified.- vkBlendEnable :: VkBool32- , -- | @srcColorBlendFactor@ selects which blend factor is used to determine- -- the source factors (Sr,Sg,Sb).- vkSrcColorBlendFactor :: VkBlendFactor- , -- | @dstColorBlendFactor@ selects which blend factor is used to determine- -- the destination factors (Dr,Dg,Db).- vkDstColorBlendFactor :: VkBlendFactor- , -- | @colorBlendOp@ selects which blend operation is used to calculate the- -- RGB values to write to the color attachment.- vkColorBlendOp :: VkBlendOp- , -- | @srcAlphaBlendFactor@ selects which blend factor is used to determine- -- the source factor Sa.- vkSrcAlphaBlendFactor :: VkBlendFactor- , -- | @dstAlphaBlendFactor@ selects which blend factor is used to determine- -- the destination factor Da.- vkDstAlphaBlendFactor :: VkBlendFactor- , -- | @alphaBlendOp@ selects which blend operation is use to calculate the- -- alpha values to write to the color attachment.- vkAlphaBlendOp :: VkBlendOp- , -- | @colorWriteMask@ is a bitmask of 'VkColorComponentFlagBits' specifying- -- which of the R, G, B, and\/or A components are enabled for writing, as- -- described for the [Color Write- -- Mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-color-write-mask).- vkColorWriteMask :: VkColorComponentFlags- }- deriving (Eq, Show)--instance Storable VkPipelineColorBlendAttachmentState where- sizeOf ~_ = 32- alignment ~_ = 4- peek ptr = VkPipelineColorBlendAttachmentState <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- poke ptr poked = poke (ptr `plusPtr` 0) (vkBlendEnable (poked :: VkPipelineColorBlendAttachmentState))- *> poke (ptr `plusPtr` 4) (vkSrcColorBlendFactor (poked :: VkPipelineColorBlendAttachmentState))- *> poke (ptr `plusPtr` 8) (vkDstColorBlendFactor (poked :: VkPipelineColorBlendAttachmentState))- *> poke (ptr `plusPtr` 12) (vkColorBlendOp (poked :: VkPipelineColorBlendAttachmentState))- *> poke (ptr `plusPtr` 16) (vkSrcAlphaBlendFactor (poked :: VkPipelineColorBlendAttachmentState))- *> poke (ptr `plusPtr` 20) (vkDstAlphaBlendFactor (poked :: VkPipelineColorBlendAttachmentState))- *> poke (ptr `plusPtr` 24) (vkAlphaBlendOp (poked :: VkPipelineColorBlendAttachmentState))- *> poke (ptr `plusPtr` 28) (vkColorWriteMask (poked :: VkPipelineColorBlendAttachmentState))--- | VkPipelineColorBlendStateCreateInfo - Structure specifying parameters of--- a newly created pipeline color blend state------ = Description------ Each element of the @pAttachments@ array is a--- 'VkPipelineColorBlendAttachmentState' structure specifying per-target--- blending state for each individual color attachment. If the [independent--- blending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-independentBlend)--- feature is not enabled on the device, all--- 'VkPipelineColorBlendAttachmentState' elements in the @pAttachments@--- array /must/ be identical.------ == Valid Usage------ - If the [independent--- blending](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-independentBlend)--- feature is not enabled, all elements of @pAttachments@ /must/ be--- identical------ - If the [logic--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-logicOp)--- feature is not enabled, @logicOpEnable@ /must/ be @VK_FALSE@------ - If @logicOpEnable@ is @VK_TRUE@, @logicOp@ /must/ be a valid--- 'VkLogicOp' value------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO@------ - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPipelineColorBlendAdvancedStateCreateInfoEXT'------ - @flags@ /must/ be @0@------ - If @attachmentCount@ is not @0@, @pAttachments@ /must/ be a valid--- pointer to an array of @attachmentCount@ valid--- @VkPipelineColorBlendAttachmentState@ structures------ = See Also------ @VkBool32@, 'VkGraphicsPipelineCreateInfo', 'VkLogicOp',--- 'VkPipelineColorBlendAttachmentState',--- 'VkPipelineColorBlendStateCreateFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineColorBlendStateCreateInfo = VkPipelineColorBlendStateCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkPipelineColorBlendStateCreateFlags- , -- | @logicOpEnable@ controls whether to apply [Logical- -- Operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-logicop).- vkLogicOpEnable :: VkBool32- , -- | @logicOp@ selects which logical operation to apply.- vkLogicOp :: VkLogicOp- , -- | @attachmentCount@ is the number of @VkPipelineColorBlendAttachmentState@- -- elements in @pAttachments@. This value /must/ equal the- -- @colorAttachmentCount@ for the subpass in which this pipeline is used.- vkAttachmentCount :: Word32- , -- | @pAttachments@: is a pointer to array of per target attachment states.- vkPAttachments :: Ptr VkPipelineColorBlendAttachmentState- , -- | @blendConstants@ is an array of four values used as the R, G, B, and A- -- components of the blend constant that are used in blending, depending on- -- the [blend- -- factor](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blendfactors).- vkBlendConstants :: Vector 4 CFloat- }- deriving (Eq, Show)--instance Storable VkPipelineColorBlendStateCreateInfo where- sizeOf ~_ = 56- alignment ~_ = 8- peek ptr = VkPipelineColorBlendStateCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineColorBlendStateCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineColorBlendStateCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineColorBlendStateCreateInfo))- *> poke (ptr `plusPtr` 20) (vkLogicOpEnable (poked :: VkPipelineColorBlendStateCreateInfo))- *> poke (ptr `plusPtr` 24) (vkLogicOp (poked :: VkPipelineColorBlendStateCreateInfo))- *> poke (ptr `plusPtr` 28) (vkAttachmentCount (poked :: VkPipelineColorBlendStateCreateInfo))- *> poke (ptr `plusPtr` 32) (vkPAttachments (poked :: VkPipelineColorBlendStateCreateInfo))- *> poke (ptr `plusPtr` 40) (vkBlendConstants (poked :: VkPipelineColorBlendStateCreateInfo))--- | VkPipelineDynamicStateCreateInfo - Structure specifying parameters of a--- newly created pipeline dynamic state------ == Valid Usage------ - Each element of @pDynamicStates@ /must/ be unique------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@------ - @pDynamicStates@ /must/ be a valid pointer to an array of--- @dynamicStateCount@ valid 'VkDynamicState' values------ - @dynamicStateCount@ /must/ be greater than @0@------ = See Also------ 'VkDynamicState', 'VkGraphicsPipelineCreateInfo',--- 'VkPipelineDynamicStateCreateFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineDynamicStateCreateInfo = VkPipelineDynamicStateCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkPipelineDynamicStateCreateFlags- , -- | @dynamicStateCount@ is the number of elements in the @pDynamicStates@- -- array.- vkDynamicStateCount :: Word32- , -- | @pDynamicStates@ is an array of 'VkDynamicState' values specifying which- -- pieces of pipeline state will use the values from dynamic state commands- -- rather than from pipeline state creation info.- vkPDynamicStates :: Ptr VkDynamicState- }- deriving (Eq, Show)--instance Storable VkPipelineDynamicStateCreateInfo where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkPipelineDynamicStateCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineDynamicStateCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineDynamicStateCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineDynamicStateCreateInfo))- *> poke (ptr `plusPtr` 20) (vkDynamicStateCount (poked :: VkPipelineDynamicStateCreateInfo))- *> poke (ptr `plusPtr` 24) (vkPDynamicStates (poked :: VkPipelineDynamicStateCreateInfo))--- | VkStencilOpState - Structure specifying stencil operation state------ == Valid Usage (Implicit)------ - @failOp@ /must/ be a valid 'VkStencilOp' value------ - @passOp@ /must/ be a valid 'VkStencilOp' value------ - @depthFailOp@ /must/ be a valid 'VkStencilOp' value------ - @compareOp@ /must/ be a valid 'VkCompareOp' value------ = See Also------ 'VkCompareOp', 'VkPipelineDepthStencilStateCreateInfo', 'VkStencilOp'-data VkStencilOpState = VkStencilOpState- { -- | @failOp@ is a 'VkStencilOp' value specifying the action performed on- -- samples that fail the stencil test.- vkFailOp :: VkStencilOp- , -- | @passOp@ is a 'VkStencilOp' value specifying the action performed on- -- samples that pass both the depth and stencil tests.- vkPassOp :: VkStencilOp- , -- | @depthFailOp@ is a 'VkStencilOp' value specifying the action performed- -- on samples that pass the stencil test and fail the depth test.- vkDepthFailOp :: VkStencilOp- , -- | @compareOp@ is a 'VkCompareOp' value specifying the comparison operator- -- used in the stencil test.- vkCompareOp :: VkCompareOp- , -- | @compareMask@ selects the bits of the unsigned integer stencil values- -- participating in the stencil test.- vkCompareMask :: Word32- , -- | @writeMask@ selects the bits of the unsigned integer stencil values- -- updated by the stencil test in the stencil framebuffer attachment.- vkWriteMask :: Word32- , -- | @reference@ is an integer reference value that is used in the unsigned- -- stencil comparison.- vkReference :: Word32- }- deriving (Eq, Show)--instance Storable VkStencilOpState where- sizeOf ~_ = 28- alignment ~_ = 4- peek ptr = VkStencilOpState <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkFailOp (poked :: VkStencilOpState))- *> poke (ptr `plusPtr` 4) (vkPassOp (poked :: VkStencilOpState))- *> poke (ptr `plusPtr` 8) (vkDepthFailOp (poked :: VkStencilOpState))- *> poke (ptr `plusPtr` 12) (vkCompareOp (poked :: VkStencilOpState))- *> poke (ptr `plusPtr` 16) (vkCompareMask (poked :: VkStencilOpState))- *> poke (ptr `plusPtr` 20) (vkWriteMask (poked :: VkStencilOpState))- *> poke (ptr `plusPtr` 24) (vkReference (poked :: VkStencilOpState))--- | VkPipelineDepthStencilStateCreateInfo - Structure specifying parameters--- of a newly created pipeline depth stencil state------ == Valid Usage------ - If the [depth bounds--- testing](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-depthBounds)--- feature is not enabled, @depthBoundsTestEnable@ /must/ be @VK_FALSE@------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@------ - @depthCompareOp@ /must/ be a valid 'VkCompareOp' value------ - @front@ /must/ be a valid @VkStencilOpState@ structure------ - @back@ /must/ be a valid @VkStencilOpState@ structure------ = See Also------ @VkBool32@, 'VkCompareOp', 'VkGraphicsPipelineCreateInfo',--- 'VkPipelineDepthStencilStateCreateFlags', 'VkStencilOpState',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineDepthStencilStateCreateInfo = VkPipelineDepthStencilStateCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkPipelineDepthStencilStateCreateFlags- , -- | @depthTestEnable@ controls whether [depth- -- testing](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-depth)- -- is enabled.- vkDepthTestEnable :: VkBool32- , -- | @depthWriteEnable@ controls whether [depth- -- writes](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-depth-write)- -- are enabled when @depthTestEnable@ is @VK_TRUE@. Depth writes are always- -- disabled when @depthTestEnable@ is @VK_FALSE@.- vkDepthWriteEnable :: VkBool32- , -- | @depthCompareOp@ is the comparison operator used in the [depth- -- test](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-depth).- vkDepthCompareOp :: VkCompareOp- , -- | @depthBoundsTestEnable@ controls whether [depth bounds- -- testing](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-dbt)- -- is enabled.- vkDepthBoundsTestEnable :: VkBool32- , -- | @stencilTestEnable@ controls whether [stencil- -- testing](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-stencil)- -- is enabled.- vkStencilTestEnable :: VkBool32- , -- | @front@ and @back@ control the parameters of the [stencil- -- test](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-stencil).- vkFront :: VkStencilOpState- , -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "back"- vkBack :: VkStencilOpState- , -- | @minDepthBounds@ and @maxDepthBounds@ define the range of values used in- -- the [depth bounds- -- test](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-dbt).- vkMinDepthBounds :: CFloat- , -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "maxDepthBounds"- vkMaxDepthBounds :: CFloat- }- deriving (Eq, Show)--instance Storable VkPipelineDepthStencilStateCreateInfo where- sizeOf ~_ = 104- alignment ~_ = 8- peek ptr = VkPipelineDepthStencilStateCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 68)- <*> peek (ptr `plusPtr` 96)- <*> peek (ptr `plusPtr` 100)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 20) (vkDepthTestEnable (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 24) (vkDepthWriteEnable (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 28) (vkDepthCompareOp (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 32) (vkDepthBoundsTestEnable (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 36) (vkStencilTestEnable (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 40) (vkFront (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 68) (vkBack (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 96) (vkMinDepthBounds (poked :: VkPipelineDepthStencilStateCreateInfo))- *> poke (ptr `plusPtr` 100) (vkMaxDepthBounds (poked :: VkPipelineDepthStencilStateCreateInfo))--- | VkGraphicsPipelineCreateInfo - Structure specifying parameters of a--- newly created graphics pipeline------ = Description------ The parameters @basePipelineHandle@ and @basePipelineIndex@ are--- described in more detail in [Pipeline--- Derivatives](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-pipeline-derivatives).------ @pStages@ points to an array of 'VkPipelineShaderStageCreateInfo'--- structures, which were previously described in [Compute--- Pipelines](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-compute).------ @pDynamicState@ points to a structure of type--- 'VkPipelineDynamicStateCreateInfo'.------ If any shader stage fails to compile, the compile log will be reported--- back to the application, and @VK_ERROR_INVALID_SHADER_NV@ will be--- generated.------ == Valid Usage------ - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,--- and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be a--- valid handle to a graphics @VkPipeline@------ - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,--- and @basePipelineHandle@ is--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @basePipelineIndex@ /must/ be a valid index into the calling--- command’s @pCreateInfos@ parameter------ - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,--- and @basePipelineIndex@ is not -1, @basePipelineHandle@ /must/ be--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'------ - If @flags@ contains the @VK_PIPELINE_CREATE_DERIVATIVE_BIT@ flag,--- and @basePipelineHandle@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @basePipelineIndex@ /must/ be -1------ - The @stage@ member of each element of @pStages@ /must/ be unique------ - The @stage@ member of one element of @pStages@ /must/ be--- @VK_SHADER_STAGE_VERTEX_BIT@------ - The @stage@ member of each element of @pStages@ /must/ not be--- @VK_SHADER_STAGE_COMPUTE_BIT@------ - If @pStages@ includes a tessellation control shader stage, it /must/--- include a tessellation evaluation shader stage------ - If @pStages@ includes a tessellation evaluation shader stage, it--- /must/ include a tessellation control shader stage------ - If @pStages@ includes a tessellation control shader stage and a--- tessellation evaluation shader stage, @pTessellationState@ /must/ be--- a valid pointer to a valid @VkPipelineTessellationStateCreateInfo@--- structure------ - If @pStages@ includes tessellation shader stages, the shader code of--- at least one stage /must/ contain an @OpExecutionMode@ instruction--- that specifies the type of subdivision in the pipeline------ - If @pStages@ includes tessellation shader stages, and the shader--- code of both stages contain an @OpExecutionMode@ instruction that--- specifies the type of subdivision in the pipeline, they /must/ both--- specify the same subdivision mode------ - If @pStages@ includes tessellation shader stages, the shader code of--- at least one stage /must/ contain an @OpExecutionMode@ instruction--- that specifies the output patch size in the pipeline------ - If @pStages@ includes tessellation shader stages, and the shader--- code of both contain an @OpExecutionMode@ instruction that specifies--- the out patch size in the pipeline, they /must/ both specify the--- same patch size------ - If @pStages@ includes tessellation shader stages, the @topology@--- member of @pInputAssembly@ /must/ be--- @VK_PRIMITIVE_TOPOLOGY_PATCH_LIST@------ - If the @topology@ member of @pInputAssembly@ is--- @VK_PRIMITIVE_TOPOLOGY_PATCH_LIST@, @pStages@ /must/ include--- tessellation shader stages------ - If @pStages@ includes a geometry shader stage, and does not include--- any tessellation shader stages, its shader code /must/ contain an--- @OpExecutionMode@ instruction that specifies an input primitive type--- that is--- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-geometry-execution)--- with the primitive topology specified in @pInputAssembly@------ - If @pStages@ includes a geometry shader stage, and also includes--- tessellation shader stages, its shader code /must/ contain an--- @OpExecutionMode@ instruction that specifies an input primitive type--- that is--- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-geometry-execution)--- with the primitive topology that is output by the tessellation--- stages------ - If @pStages@ includes a fragment shader stage and a geometry shader--- stage, and the fragment shader code reads from an input variable--- that is decorated with @PrimitiveID@, then the geometry shader code--- /must/ write to a matching output variable, decorated with--- @PrimitiveID@, in all execution paths------ - If @pStages@ includes a fragment shader stage, its shader code--- /must/ not read from any input attachment that is defined as--- @VK_ATTACHMENT_UNUSED@ in @subpass@------ - The shader code for the entry points identified by @pStages@, and--- the rest of the state identified by this structure /must/ adhere to--- the pipeline linking rules described in the [Shader--- Interfaces](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#interfaces)--- chapter------ - If rasterization is not disabled and @subpass@ uses a depth\/stencil--- attachment in @renderPass@ that has a layout of--- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL@ or--- @VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL@ in the--- @VkAttachmentReference@ defined by @subpass@, the @depthWriteEnable@--- member of @pDepthStencilState@ /must/ be @VK_FALSE@------ - If rasterization is not disabled and @subpass@ uses a depth\/stencil--- attachment in @renderPass@ that has a layout of--- @VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL@ or--- @VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL@ in the--- @VkAttachmentReference@ defined by @subpass@, the @failOp@, @passOp@--- and @depthFailOp@ members of each of the @front@ and @back@ members--- of @pDepthStencilState@ /must/ be @VK_STENCIL_OP_KEEP@------ - If rasterization is not disabled and the subpass uses color--- attachments, then for each color attachment in the subpass the--- @blendEnable@ member of the corresponding element of the--- @pAttachment@ member of @pColorBlendState@ /must/ be @VK_FALSE@ if--- the @format@ of the attachment does not support color blend--- operations, as specified by the--- @VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ or--- @VkFormatProperties@::@optimalTilingFeatures@ returned by--- @vkGetPhysicalDeviceFormatProperties@------ - If rasterization is not disabled and the subpass uses color--- attachments, the @attachmentCount@ member of @pColorBlendState@--- /must/ be equal to the @colorAttachmentCount@ used to create--- @subpass@------ - If no element of the @pDynamicStates@ member of @pDynamicState@ is--- @VK_DYNAMIC_STATE_VIEWPORT@, the @pViewports@ member of--- @pViewportState@ /must/ be a valid pointer to an array of--- @pViewportState@::@viewportCount@ @VkViewport@ structures------ - If no element of the @pDynamicStates@ member of @pDynamicState@ is--- @VK_DYNAMIC_STATE_SCISSOR@, the @pScissors@ member of--- @pViewportState@ /must/ be a valid pointer to an array of--- @pViewportState@::@scissorCount@ @VkRect2D@ structures------ - If the wide lines feature is not enabled, and no element of the--- @pDynamicStates@ member of @pDynamicState@ is--- @VK_DYNAMIC_STATE_LINE_WIDTH@, the @lineWidth@ member of--- @pRasterizationState@ /must/ be @1.0@------ - If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is--- @VK_FALSE@, @pViewportState@ /must/ be a valid pointer to a valid--- @VkPipelineViewportStateCreateInfo@ structure------ - If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is--- @VK_FALSE@, @pMultisampleState@ /must/ be a valid pointer to a valid--- @VkPipelineMultisampleStateCreateInfo@ structure------ - If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is--- @VK_FALSE@, and @subpass@ uses a depth\/stencil attachment,--- @pDepthStencilState@ /must/ be a valid pointer to a valid--- @VkPipelineDepthStencilStateCreateInfo@ structure------ - If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is--- @VK_FALSE@, and @subpass@ uses color attachments, @pColorBlendState@--- /must/ be a valid pointer to a valid--- @VkPipelineColorBlendStateCreateInfo@ structure------ - If the depth bias clamping feature is not enabled, no element of the--- @pDynamicStates@ member of @pDynamicState@ is--- @VK_DYNAMIC_STATE_DEPTH_BIAS@, and the @depthBiasEnable@ member of--- @pRasterizationState@ is @VK_TRUE@, the @depthBiasClamp@ member of--- @pRasterizationState@ /must/ be @0.0@------ - If the @{html_spec_relative}#VK_EXT_depth_range_unrestricted@--- extension is not enabled and no element of the @pDynamicStates@--- member of @pDynamicState@ is @VK_DYNAMIC_STATE_DEPTH_BOUNDS@, and--- the @depthBoundsTestEnable@ member of @pDepthStencilState@ is--- @VK_TRUE@, the @minDepthBounds@ and @maxDepthBounds@ members of--- @pDepthStencilState@ /must/ be between @0.0@ and @1.0@, inclusive------ - If no element of the @pDynamicStates@ member of @pDynamicState@ is--- @VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT@, and the--- @sampleLocationsEnable@ member of a--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'--- structure chained to the @pNext@ chain of @pMultisampleState@ is--- @VK_TRUE@, @sampleLocationsInfo.sampleLocationGridSize.width@ /must/--- evenly divide--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkMultisamplePropertiesEXT'::@sampleLocationGridSize.width@--- as returned by--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.vkGetPhysicalDeviceMultisamplePropertiesEXT'--- with a @samples@ parameter equaling @rasterizationSamples@------ - If no element of the @pDynamicStates@ member of @pDynamicState@ is--- @VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT@, and the--- @sampleLocationsEnable@ member of a--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'--- structure chained to the @pNext@ chain of @pMultisampleState@ is--- @VK_TRUE@, @sampleLocationsInfo.sampleLocationGridSize.height@--- /must/ evenly divide--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkMultisamplePropertiesEXT'::@sampleLocationGridSize.height@--- as returned by--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.vkGetPhysicalDeviceMultisamplePropertiesEXT'--- with a @samples@ parameter equaling @rasterizationSamples@------ - If no element of the @pDynamicStates@ member of @pDynamicState@ is--- @VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT@, and the--- @sampleLocationsEnable@ member of a--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'--- structure chained to the @pNext@ chain of @pMultisampleState@ is--- @VK_TRUE@, @sampleLocationsInfo.sampleLocationsPerPixel@ /must/--- equal @rasterizationSamples@------ - If the @sampleLocationsEnable@ member of a--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'--- structure chained to the @pNext@ chain of @pMultisampleState@ is--- @VK_TRUE@, the fragment shader code /must/ not statically use the--- extended instruction @InterpolateAtSample@------ - @layout@ /must/ be--- [consistent](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency)--- with all shaders specified in @pStages@------ - If @subpass@ uses color and\/or depth\/stencil attachments, then the--- @rasterizationSamples@ member of @pMultisampleState@ /must/ equal--- the maximum of the sample counts of those subpass attachments------ - If @subpass@ has a depth\/stencil attachment and depth test, stencil--- test, or depth bounds test are enabled, then the--- @rasterizationSamples@ member of @pMultisampleState@ /must/ be the--- same as the sample count of the depth\/stencil attachment------ - If @subpass@ has any color attachments, then the--- @rasterizationSamples@ member of @pMultisampleState@ /must/ be--- greater than or equal to the sample count for those subpass--- attachments------ - If @subpass@ does not use any color and\/or depth\/stencil--- attachments, then the @rasterizationSamples@ member of--- @pMultisampleState@ /must/ follow the rules for a [zero-attachment--- subpass](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-noattachments)------ - @subpass@ /must/ be a valid subpass within @renderPass@------ - If the @renderPass@ has multiview enabled and @subpass@ has more--- than one bit set in the view mask and @multiviewTessellationShader@--- is not enabled, then @pStages@ /must/ not include tessellation--- shaders.------ - If the @renderPass@ has multiview enabled and @subpass@ has more--- than one bit set in the view mask and @multiviewGeometryShader@ is--- not enabled, then @pStages@ /must/ not include a geometry shader.------ - If the @renderPass@ has multiview enabled and @subpass@ has more--- than one bit set in the view mask, shaders in the pipeline /must/--- not write to the @Layer@ built-in output------ - If the @renderPass@ has multiview enabled, then all shaders /must/--- not include variables decorated with the @Layer@ built-in decoration--- in their interfaces.------ - @flags@ /must/ not contain the @VK_PIPELINE_CREATE_DISPATCH_BASE@--- flag.------ - If @pStages@ includes a fragment shader stage and an input--- attachment was referenced by the--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkRenderPassInputAttachmentAspectCreateInfo'--- at @renderPass@ create time, its shader code /must/ not read from--- any aspect that was not specified in the @aspectMask@ of the--- corresponding--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkInputAttachmentAspectReference'--- structure.------ - The number of resources in @layout@ accessible to each shader stage--- that is used by the pipeline /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxPerStageResources@------ - If no element of the @pDynamicStates@ member of @pDynamicState@ is--- @VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV@, and the--- @viewportWScalingEnable@ member of a--- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkPipelineViewportWScalingStateCreateInfoNV'--- structure, chained to the @pNext@ chain of @pViewportState@, is--- @VK_TRUE@, the @pViewportWScalings@ member of the--- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkPipelineViewportWScalingStateCreateInfoNV'--- /must/ be a pointer to an array of--- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkPipelineViewportWScalingStateCreateInfoNV'::@viewportCount@--- valid--- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.VkViewportWScalingNV'--- structures------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO@------ - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.VkPipelineDiscardRectangleStateCreateInfoEXT'------ - @flags@ /must/ be a valid combination of 'VkPipelineCreateFlagBits'--- values------ - @pStages@ /must/ be a valid pointer to an array of @stageCount@--- valid @VkPipelineShaderStageCreateInfo@ structures------ - @pVertexInputState@ /must/ be a valid pointer to a valid--- @VkPipelineVertexInputStateCreateInfo@ structure------ - @pInputAssemblyState@ /must/ be a valid pointer to a valid--- @VkPipelineInputAssemblyStateCreateInfo@ structure------ - @pRasterizationState@ /must/ be a valid pointer to a valid--- @VkPipelineRasterizationStateCreateInfo@ structure------ - If @pDynamicState@ is not @NULL@, @pDynamicState@ /must/ be a valid--- pointer to a valid @VkPipelineDynamicStateCreateInfo@ structure------ - @layout@ /must/ be a valid @VkPipelineLayout@ handle------ - @renderPass@ /must/ be a valid @VkRenderPass@ handle------ - @stageCount@ /must/ be greater than @0@------ - Each of @basePipelineHandle@, @layout@, and @renderPass@ that are--- valid handles /must/ have been created, allocated, or retrieved from--- the same @VkDevice@------ = See Also------ 'VkPipeline', 'VkPipelineColorBlendStateCreateInfo',--- 'VkPipelineCreateFlags', 'VkPipelineDepthStencilStateCreateInfo',--- 'VkPipelineDynamicStateCreateInfo',--- 'VkPipelineInputAssemblyStateCreateInfo', 'VkPipelineLayout',--- 'VkPipelineMultisampleStateCreateInfo',--- 'VkPipelineRasterizationStateCreateInfo',--- 'VkPipelineShaderStageCreateInfo',--- 'VkPipelineTessellationStateCreateInfo',--- 'VkPipelineVertexInputStateCreateInfo',--- 'VkPipelineViewportStateCreateInfo', 'VkRenderPass',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkCreateGraphicsPipelines'-data VkGraphicsPipelineCreateInfo = VkGraphicsPipelineCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is a bitmask of 'VkPipelineCreateFlagBits' specifying how the- -- pipeline will be generated.- vkFlags :: VkPipelineCreateFlags- , -- | @stageCount@ is the number of entries in the @pStages@ array.- vkStageCount :: Word32- , -- | @pStages@ is an array of size @stageCount@ structures of type- -- 'VkPipelineShaderStageCreateInfo' describing the set of the shader- -- stages to be included in the graphics pipeline.- vkPStages :: Ptr VkPipelineShaderStageCreateInfo- , -- | @pVertexInputState@ is a pointer to an instance of the- -- 'VkPipelineVertexInputStateCreateInfo' structure.- vkPVertexInputState :: Ptr VkPipelineVertexInputStateCreateInfo- , -- | @pInputAssemblyState@ is a pointer to an instance of the- -- 'VkPipelineInputAssemblyStateCreateInfo' structure which determines- -- input assembly behavior, as described in [Drawing- -- Commands](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#drawing).- vkPInputAssemblyState :: Ptr VkPipelineInputAssemblyStateCreateInfo- , -- | @pTessellationState@ is a pointer to an instance of the- -- 'VkPipelineTessellationStateCreateInfo' structure, and is ignored if the- -- pipeline does not include a tessellation control shader stage and- -- tessellation evaluation shader stage.- vkPTessellationState :: Ptr VkPipelineTessellationStateCreateInfo- , -- | @pViewportState@ is a pointer to an instance of the- -- 'VkPipelineViewportStateCreateInfo' structure, and is ignored if the- -- pipeline has rasterization disabled.- vkPViewportState :: Ptr VkPipelineViewportStateCreateInfo- , -- | @pRasterizationState@ is a pointer to an instance of the- -- 'VkPipelineRasterizationStateCreateInfo' structure.- vkPRasterizationState :: Ptr VkPipelineRasterizationStateCreateInfo- , -- | @pMultisampleState@ is a pointer to an instance of the- -- 'VkPipelineMultisampleStateCreateInfo', and is ignored if the pipeline- -- has rasterization disabled.- vkPMultisampleState :: Ptr VkPipelineMultisampleStateCreateInfo- , -- | @pDepthStencilState@ is a pointer to an instance of the- -- 'VkPipelineDepthStencilStateCreateInfo' structure, and is ignored if the- -- pipeline has rasterization disabled or if the subpass of the render pass- -- the pipeline is created against does not use a depth\/stencil- -- attachment.- vkPDepthStencilState :: Ptr VkPipelineDepthStencilStateCreateInfo- , -- | @pColorBlendState@ is a pointer to an instance of the- -- 'VkPipelineColorBlendStateCreateInfo' structure, and is ignored if the- -- pipeline has rasterization disabled or if the subpass of the render pass- -- the pipeline is created against does not use any color attachments.- vkPColorBlendState :: Ptr VkPipelineColorBlendStateCreateInfo- , -- | @pDynamicState@ is a pointer to 'VkPipelineDynamicStateCreateInfo' and- -- is used to indicate which properties of the pipeline state object are- -- dynamic and /can/ be changed independently of the pipeline state. This- -- /can/ be @NULL@, which means no state in the pipeline is considered- -- dynamic.- vkPDynamicState :: Ptr VkPipelineDynamicStateCreateInfo- , -- | @layout@ is the description of binding locations used by both the- -- pipeline and descriptor sets used with the pipeline.- vkLayout :: VkPipelineLayout- , -- | @renderPass@ is a handle to a render pass object describing the- -- environment in which the pipeline will be used; the pipeline /must/ only- -- be used with an instance of any render pass compatible with the one- -- provided. See [Render Pass- -- Compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)- -- for more information.- vkRenderPass :: VkRenderPass- , -- | @subpass@ is the index of the subpass in the render pass where this- -- pipeline will be used.- vkSubpass :: Word32- , -- | @basePipelineHandle@ is a pipeline to derive from.- vkBasePipelineHandle :: VkPipeline- , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use- -- as a pipeline to derive from.- vkBasePipelineIndex :: Int32- }- deriving (Eq, Show)--instance Storable VkGraphicsPipelineCreateInfo where- sizeOf ~_ = 144- alignment ~_ = 8- peek ptr = VkGraphicsPipelineCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 64)- <*> peek (ptr `plusPtr` 72)- <*> peek (ptr `plusPtr` 80)- <*> peek (ptr `plusPtr` 88)- <*> peek (ptr `plusPtr` 96)- <*> peek (ptr `plusPtr` 104)- <*> peek (ptr `plusPtr` 112)- <*> peek (ptr `plusPtr` 120)- <*> peek (ptr `plusPtr` 128)- <*> peek (ptr `plusPtr` 136)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 20) (vkStageCount (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 24) (vkPStages (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 32) (vkPVertexInputState (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 40) (vkPInputAssemblyState (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 48) (vkPTessellationState (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 56) (vkPViewportState (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 64) (vkPRasterizationState (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 72) (vkPMultisampleState (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 80) (vkPDepthStencilState (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 88) (vkPColorBlendState (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 96) (vkPDynamicState (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 104) (vkLayout (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 112) (vkRenderPass (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 120) (vkSubpass (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 128) (vkBasePipelineHandle (poked :: VkGraphicsPipelineCreateInfo))- *> poke (ptr `plusPtr` 136) (vkBasePipelineIndex (poked :: VkGraphicsPipelineCreateInfo))--- | VkPipelineCreateFlags - Bitmask of VkPipelineCreateFlagBits------ = Description------ @VkPipelineCreateFlags@ is a bitmask type for setting a mask of zero or--- more 'VkPipelineCreateFlagBits'.------ = See Also------ 'VkComputePipelineCreateInfo', 'VkGraphicsPipelineCreateInfo',--- 'VkPipelineCreateFlagBits'-type VkPipelineCreateFlags = VkPipelineCreateFlagBits--- | VkColorComponentFlags - Bitmask of VkColorComponentFlagBits------ = Description------ @VkColorComponentFlags@ is a bitmask type for setting a mask of zero or--- more 'VkColorComponentFlagBits'.------ = See Also------ 'VkColorComponentFlagBits', 'VkPipelineColorBlendAttachmentState'-type VkColorComponentFlags = VkColorComponentFlagBits--- | VkCullModeFlags - Bitmask of VkCullModeFlagBits------ = Description------ @VkCullModeFlags@ is a bitmask type for setting a mask of zero or more--- 'VkCullModeFlagBits'.------ = See Also------ 'VkCullModeFlagBits', 'VkPipelineRasterizationStateCreateInfo'-type VkCullModeFlags = VkCullModeFlagBits--- | VkSampleMask - Mask of sample coverage information------ = See Also------ 'VkPipelineMultisampleStateCreateInfo'-type VkSampleMask = Word32+{-# language CPP #-}+module Graphics.Vulkan.Core10.Pipeline ( createGraphicsPipelines+ , withGraphicsPipelines+ , createComputePipelines+ , withComputePipelines+ , destroyPipeline+ , SpecializationMapEntry(..)+ , SpecializationInfo(..)+ , PipelineShaderStageCreateInfo(..)+ , ComputePipelineCreateInfo(..)+ , VertexInputBindingDescription(..)+ , VertexInputAttributeDescription(..)+ , PipelineVertexInputStateCreateInfo(..)+ , PipelineInputAssemblyStateCreateInfo(..)+ , PipelineTessellationStateCreateInfo(..)+ , PipelineViewportStateCreateInfo(..)+ , PipelineRasterizationStateCreateInfo(..)+ , PipelineMultisampleStateCreateInfo(..)+ , PipelineColorBlendAttachmentState(..)+ , PipelineColorBlendStateCreateInfo(..)+ , PipelineDynamicStateCreateInfo(..)+ , StencilOpState(..)+ , PipelineDepthStencilStateCreateInfo(..)+ , GraphicsPipelineCreateInfo(..)+ ) where++import Control.Exception.Base (bracket)+import Control.Monad (unless)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Marshal.Utils (maybePeek)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import qualified Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.ByteString (packCString)+import Data.ByteString (useAsCString)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Either (Either)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CFloat(CFloat))+import Foreign.C.Types (CSize)+import Foreign.C.Types (CSize(CSize))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import GHC.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Word (Word64)+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import qualified Data.Vector.Storable.Sized (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.CStruct.Extends (forgetExtensions)+import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)+import Graphics.Vulkan.CStruct.Extends (peekSomeCStruct)+import Graphics.Vulkan.CStruct.Extends (pokeSomeCStruct)+import Graphics.Vulkan.CStruct.Extends (withSomeCStruct)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.Enums.BlendFactor (BlendFactor)+import Graphics.Vulkan.Core10.Enums.BlendOp (BlendOp)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.Enums.ColorComponentFlagBits (ColorComponentFlags)+import Graphics.Vulkan.Core10.Enums.CompareOp (CompareOp)+import Graphics.Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlags)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateComputePipelines))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateGraphicsPipelines))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyPipeline))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.Core10.Enums.DynamicState (DynamicState)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.Core10.Enums.Format (Format)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.FrontFace (FrontFace)+import Graphics.Vulkan.Core10.Enums.LogicOp (LogicOp)+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.Core10.Handles (Pipeline)+import Graphics.Vulkan.Core10.Handles (Pipeline(..))+import Graphics.Vulkan.Core10.Handles (PipelineCache)+import Graphics.Vulkan.Core10.Handles (PipelineCache(..))+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced (PipelineColorBlendAdvancedStateCreateInfoEXT)+import Graphics.Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlags (PipelineColorBlendStateCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_pipeline_compiler_control (PipelineCompilerControlCreateInfoAMD)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_framebuffer_mixed_samples (PipelineCoverageModulationStateCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode (PipelineCoverageReductionStateCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_fragment_coverage_to_color (PipelineCoverageToColorStateCreateInfoNV)+import Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfoEXT)+import Graphics.Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlags (PipelineDepthStencilStateCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles (PipelineDiscardRectangleStateCreateInfoEXT)+import Graphics.Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags (PipelineDynamicStateCreateFlags)+import Graphics.Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags (PipelineInputAssemblyStateCreateFlags)+import Graphics.Vulkan.Core10.Handles (PipelineLayout)+import Graphics.Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags (PipelineMultisampleStateCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization (PipelineRasterizationConservativeStateCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable (PipelineRasterizationDepthClipStateCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_line_rasterization (PipelineRasterizationLineStateCreateInfoEXT)+import Graphics.Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags (PipelineRasterizationStateCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_rasterization_order (PipelineRasterizationStateRasterizationOrderAMD)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_transform_feedback (PipelineRasterizationStateStreamCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test (PipelineRepresentativeFragmentTestStateCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_sample_locations (PipelineSampleLocationsStateCreateInfoEXT)+import Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control (PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (PipelineTessellationDomainOriginStateCreateInfo)+import Graphics.Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags (PipelineTessellationStateCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (PipelineVertexInputDivisorStateCreateInfoEXT)+import Graphics.Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags (PipelineVertexInputStateCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (PipelineViewportCoarseSampleOrderStateCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive (PipelineViewportExclusiveScissorStateCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (PipelineViewportShadingRateImageStateCreateInfoNV)+import Graphics.Vulkan.Core10.Enums.PipelineViewportStateCreateFlags (PipelineViewportStateCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle (PipelineViewportSwizzleStateCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling (PipelineViewportWScalingStateCreateInfoNV)+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Enums.PolygonMode (PolygonMode)+import Graphics.Vulkan.Core10.Enums.PrimitiveTopology (PrimitiveTopology)+import Graphics.Vulkan.Core10.CommandBufferBuilding (Rect2D)+import Graphics.Vulkan.Core10.Handles (RenderPass)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)+import Graphics.Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits(SampleCountFlagBits))+import Graphics.Vulkan.Core10.BaseType (SampleMask)+import Graphics.Vulkan.Core10.Handles (ShaderModule)+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits)+import Graphics.Vulkan.CStruct.Extends (SomeStruct)+import Graphics.Vulkan.CStruct.Extends (SomeStruct(..))+import Graphics.Vulkan.Core10.Enums.StencilOp (StencilOp)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Core10.Enums.VertexInputRate (VertexInputRate)+import Graphics.Vulkan.Core10.CommandBufferBuilding (Viewport)+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateGraphicsPipelines+ :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (GraphicsPipelineCreateInfo a) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (GraphicsPipelineCreateInfo a) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result++-- | vkCreateGraphicsPipelines - Create graphics pipelines+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the graphics pipelines.+--+-- - 'Graphics.Vulkan.Core10.Handles.PipelineCache' is either+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', indicating that+-- pipeline caching is disabled; or the handle of a valid+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cache pipeline cache>+-- object, in which case use of that cache is enabled for the duration+-- of the command.+--+-- - @createInfoCount@ is the length of the @pCreateInfos@ and+-- @pPipelines@ arrays.+--+-- - @pCreateInfos@ is a pointer to an array of+-- 'GraphicsPipelineCreateInfo' structures.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pPipelines@ is a pointer to an array of+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' handles in which the+-- resulting graphics pipeline objects are returned.+--+-- = Description+--+-- The 'GraphicsPipelineCreateInfo' structure includes an array of shader+-- create info structures containing all the desired active shader stages,+-- as well as creation info to define all relevant fixed-function stages,+-- and a pipeline layout.+--+-- == Valid Usage+--+-- - If the 'Graphics.Vulkan.Core10.BaseType.Flags' member of any element+-- of @pCreateInfos@ contains the+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+-- flag, and the @basePipelineIndex@ member of that same element is not+-- @-1@, @basePipelineIndex@ /must/ be less than the index into+-- @pCreateInfos@ that corresponds to that element+--+-- - If the 'Graphics.Vulkan.Core10.BaseType.Flags' member of any element+-- of @pCreateInfos@ contains the+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+-- flag, the base pipeline /must/ have been created with the+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'+-- flag set+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - If 'Graphics.Vulkan.Core10.Handles.PipelineCache' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache' handle+--+-- - @pCreateInfos@ /must/ be a valid pointer to an array of+-- @createInfoCount@ valid 'GraphicsPipelineCreateInfo' structures+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pPipelines@ /must/ be a valid pointer to an array of+-- @createInfoCount@ 'Graphics.Vulkan.Core10.Handles.Pipeline' handles+--+-- - @createInfoCount@ /must/ be greater than @0@+--+-- - If 'Graphics.Vulkan.Core10.Handles.PipelineCache' is a valid handle,+-- it /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device', 'GraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Core10.Handles.Pipeline',+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache'+createGraphicsPipelines :: PokeChain a => Device -> PipelineCache -> ("createInfos" ::: Vector (GraphicsPipelineCreateInfo a)) -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (("pipelines" ::: Vector Pipeline))+createGraphicsPipelines device pipelineCache createInfos allocator = evalContT $ do+ let vkCreateGraphicsPipelines' = mkVkCreateGraphicsPipelines (pVkCreateGraphicsPipelines (deviceCmds (device :: Device)))+ pPCreateInfos <- ContT $ allocaBytesAligned @(GraphicsPipelineCreateInfo _) ((Data.Vector.length (createInfos)) * 144) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPCreateInfos `plusPtr` (144 * (i)) :: Ptr (GraphicsPipelineCreateInfo _)) (e) . ($ ())) (createInfos)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free+ r <- lift $ vkCreateGraphicsPipelines' (deviceHandle (device)) (pipelineCache) ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32)) (pPCreateInfos) pAllocator (pPPipelines)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))+ pure $ (pPipelines)++-- | A safe wrapper for 'createGraphicsPipelines' and 'destroyPipeline' using+-- 'bracket'+--+-- The allocated value must not be returned from the provided computation+withGraphicsPipelines :: PokeChain a => Device -> PipelineCache -> Vector (GraphicsPipelineCreateInfo a) -> Maybe AllocationCallbacks -> (Vector Pipeline -> IO r) -> IO r+withGraphicsPipelines device pipelineCache graphicsPipelineCreateInfo allocationCallbacks =+ bracket+ (createGraphicsPipelines device pipelineCache graphicsPipelineCreateInfo allocationCallbacks)+ (traverse (\o -> destroyPipeline device o allocationCallbacks))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateComputePipelines+ :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (ComputePipelineCreateInfo a) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (ComputePipelineCreateInfo a) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result++-- | vkCreateComputePipelines - Creates a new compute pipeline object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the compute pipelines.+--+-- - 'Graphics.Vulkan.Core10.Handles.PipelineCache' is either+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', indicating that+-- pipeline caching is disabled; or the handle of a valid+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cache pipeline cache>+-- object, in which case use of that cache is enabled for the duration+-- of the command.+--+-- - @createInfoCount@ is the length of the @pCreateInfos@ and+-- @pPipelines@ arrays.+--+-- - @pCreateInfos@ is a pointer to an array of+-- 'ComputePipelineCreateInfo' structures.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pPipelines@ is a pointer to an array of+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' handles in which the+-- resulting compute pipeline objects are returned.+--+-- == Valid Usage+--+-- - If the 'Graphics.Vulkan.Core10.BaseType.Flags' member of any element+-- of @pCreateInfos@ contains the+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+-- flag, and the @basePipelineIndex@ member of that same element is not+-- @-1@, @basePipelineIndex@ /must/ be less than the index into+-- @pCreateInfos@ that corresponds to that element+--+-- - If the 'Graphics.Vulkan.Core10.BaseType.Flags' member of any element+-- of @pCreateInfos@ contains the+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+-- flag, the base pipeline /must/ have been created with the+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'+-- flag set+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - If 'Graphics.Vulkan.Core10.Handles.PipelineCache' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache' handle+--+-- - @pCreateInfos@ /must/ be a valid pointer to an array of+-- @createInfoCount@ valid 'ComputePipelineCreateInfo' structures+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pPipelines@ /must/ be a valid pointer to an array of+-- @createInfoCount@ 'Graphics.Vulkan.Core10.Handles.Pipeline' handles+--+-- - @createInfoCount@ /must/ be greater than @0@+--+-- - If 'Graphics.Vulkan.Core10.Handles.PipelineCache' is a valid handle,+-- it /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'ComputePipelineCreateInfo', 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Pipeline',+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache'+createComputePipelines :: PokeChain a => Device -> PipelineCache -> ("createInfos" ::: Vector (ComputePipelineCreateInfo a)) -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (("pipelines" ::: Vector Pipeline))+createComputePipelines device pipelineCache createInfos allocator = evalContT $ do+ let vkCreateComputePipelines' = mkVkCreateComputePipelines (pVkCreateComputePipelines (deviceCmds (device :: Device)))+ pPCreateInfos <- ContT $ allocaBytesAligned @(ComputePipelineCreateInfo _) ((Data.Vector.length (createInfos)) * 96) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPCreateInfos `plusPtr` (96 * (i)) :: Ptr (ComputePipelineCreateInfo _)) (e) . ($ ())) (createInfos)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free+ r <- lift $ vkCreateComputePipelines' (deviceHandle (device)) (pipelineCache) ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32)) (pPCreateInfos) pAllocator (pPPipelines)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))+ pure $ (pPipelines)++-- | A safe wrapper for 'createComputePipelines' and 'destroyPipeline' using+-- 'bracket'+--+-- The allocated value must not be returned from the provided computation+withComputePipelines :: PokeChain a => Device -> PipelineCache -> Vector (ComputePipelineCreateInfo a) -> Maybe AllocationCallbacks -> (Vector Pipeline -> IO r) -> IO r+withComputePipelines device pipelineCache computePipelineCreateInfo allocationCallbacks =+ bracket+ (createComputePipelines device pipelineCache computePipelineCreateInfo allocationCallbacks)+ (traverse (\o -> destroyPipeline device o allocationCallbacks))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDestroyPipeline+ :: FunPtr (Ptr Device_T -> Pipeline -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> Pipeline -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyPipeline - Destroy a pipeline object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the pipeline.+--+-- - 'Graphics.Vulkan.Core10.Handles.Pipeline' is the handle of the+-- pipeline to destroy.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- == Valid Usage+--+-- - All submitted commands that refer to+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' /must/ have completed+-- execution+--+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.Pipeline' was+-- created, a compatible set of callbacks /must/ be provided here+--+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.Pipeline' was+-- created, @pAllocator@ /must/ be @NULL@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - If 'Graphics.Vulkan.Core10.Handles.Pipeline' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - If 'Graphics.Vulkan.Core10.Handles.Pipeline' is a valid handle, it+-- /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Pipeline' /must/ be+-- externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Pipeline'+destroyPipeline :: Device -> Pipeline -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyPipeline device pipeline allocator = evalContT $ do+ let vkDestroyPipeline' = mkVkDestroyPipeline (pVkDestroyPipeline (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyPipeline' (deviceHandle (device)) (pipeline) pAllocator+ pure $ ()+++-- | VkSpecializationMapEntry - Structure specifying a specialization map+-- entry+--+-- = Description+--+-- If a @constantID@ value is not a specialization constant ID used in the+-- shader, that map entry does not affect the behavior of the pipeline.+--+-- == Valid Usage+--+-- - For a @constantID@ specialization constant declared in a shader,+-- @size@ /must/ match the byte size of the @constantID@. If the+-- specialization constant is of type @boolean@, @size@ /must/ be the+-- byte size of 'Graphics.Vulkan.Core10.BaseType.Bool32'+--+-- = See Also+--+-- 'SpecializationInfo'+data SpecializationMapEntry = SpecializationMapEntry+ { -- | @constantID@ is the ID of the specialization constant in SPIR-V.+ constantID :: Word32+ , -- | @offset@ is the byte offset of the specialization constant value within+ -- the supplied data buffer.+ offset :: Word32+ , -- | @size@ is the byte size of the specialization constant value within the+ -- supplied data buffer.+ size :: Word64+ }+ deriving (Typeable)+deriving instance Show SpecializationMapEntry++instance ToCStruct SpecializationMapEntry where+ withCStruct x f = allocaBytesAligned 16 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SpecializationMapEntry{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (constantID)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (offset)+ poke ((p `plusPtr` 8 :: Ptr CSize)) (CSize (size))+ f+ cStructSize = 16+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 8 :: Ptr CSize)) (CSize (zero))+ f++instance FromCStruct SpecializationMapEntry where+ peekCStruct p = do+ constantID <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ offset <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ size <- peek @CSize ((p `plusPtr` 8 :: Ptr CSize))+ pure $ SpecializationMapEntry+ constantID offset ((\(CSize a) -> a) size)++instance Storable SpecializationMapEntry where+ sizeOf ~_ = 16+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SpecializationMapEntry where+ zero = SpecializationMapEntry+ zero+ zero+ zero+++-- | VkSpecializationInfo - Structure specifying specialization info+--+-- = Description+--+-- @pMapEntries@ is a pointer to a 'SpecializationMapEntry' structure.+--+-- == Valid Usage+--+-- - The @offset@ member of each element of @pMapEntries@ /must/ be less+-- than @dataSize@+--+-- - The @size@ member of each element of @pMapEntries@ /must/ be less+-- than or equal to @dataSize@ minus @offset@+--+-- == Valid Usage (Implicit)+--+-- - If @mapEntryCount@ is not @0@, @pMapEntries@ /must/ be a valid+-- pointer to an array of @mapEntryCount@ valid+-- 'SpecializationMapEntry' structures+--+-- - If @dataSize@ is not @0@, @pData@ /must/ be a valid pointer to an+-- array of @dataSize@ bytes+--+-- = See Also+--+-- 'PipelineShaderStageCreateInfo', 'SpecializationMapEntry'+data SpecializationInfo = SpecializationInfo+ { -- | @pMapEntries@ is a pointer to an array of 'SpecializationMapEntry'+ -- structures which map constant IDs to offsets in @pData@.+ mapEntries :: Vector SpecializationMapEntry+ , -- | @dataSize@ is the byte size of the @pData@ buffer.+ dataSize :: Word64+ , -- | @pData@ contains the actual constant values to specialize with.+ data' :: Ptr ()+ }+ deriving (Typeable)+deriving instance Show SpecializationInfo++instance ToCStruct SpecializationInfo where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SpecializationInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (mapEntries)) :: Word32))+ pPMapEntries' <- ContT $ allocaBytesAligned @SpecializationMapEntry ((Data.Vector.length (mapEntries)) * 16) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPMapEntries' `plusPtr` (16 * (i)) :: Ptr SpecializationMapEntry) (e) . ($ ())) (mapEntries)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr SpecializationMapEntry))) (pPMapEntries')+ lift $ poke ((p `plusPtr` 16 :: Ptr CSize)) (CSize (dataSize))+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (data')+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ pPMapEntries' <- ContT $ allocaBytesAligned @SpecializationMapEntry ((Data.Vector.length (mempty)) * 16) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPMapEntries' `plusPtr` (16 * (i)) :: Ptr SpecializationMapEntry) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr SpecializationMapEntry))) (pPMapEntries')+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (zero)+ lift $ f++instance FromCStruct SpecializationInfo where+ peekCStruct p = do+ mapEntryCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ pMapEntries <- peek @(Ptr SpecializationMapEntry) ((p `plusPtr` 8 :: Ptr (Ptr SpecializationMapEntry)))+ pMapEntries' <- generateM (fromIntegral mapEntryCount) (\i -> peekCStruct @SpecializationMapEntry ((pMapEntries `advancePtrBytes` (16 * (i)) :: Ptr SpecializationMapEntry)))+ dataSize <- peek @CSize ((p `plusPtr` 16 :: Ptr CSize))+ pData <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))+ pure $ SpecializationInfo+ pMapEntries' ((\(CSize a) -> a) dataSize) pData++instance Zero SpecializationInfo where+ zero = SpecializationInfo+ mempty+ zero+ zero+++-- | VkPipelineShaderStageCreateInfo - Structure specifying parameters of a+-- newly created pipeline shader stage+--+-- == Valid Usage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>+-- feature is not enabled, @stage@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+-- feature is not enabled, @stage@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shader>+-- feature is not enabled, @stage@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shader>+-- feature is not enabled, @stage@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_NV'+--+-- - @stage@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ALL_GRAPHICS',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ALL'+--+-- - @pName@ /must/ be the name of an @OpEntryPoint@ in @module@ with an+-- execution model that matches @stage@+--+-- - If the identified entry point includes any variable in its interface+-- that is declared with the @ClipDistance@ @BuiltIn@ decoration, that+-- variable /must/ not have an array size greater than+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxClipDistances@+--+-- - If the identified entry point includes any variable in its interface+-- that is declared with the @CullDistance@ @BuiltIn@ decoration, that+-- variable /must/ not have an array size greater than+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxCullDistances@+--+-- - If the identified entry point includes any variables in its+-- interface that are declared with the @ClipDistance@ or+-- @CullDistance@ @BuiltIn@ decoration, those variables /must/ not have+-- array sizes which sum to more than+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxCombinedClipAndCullDistances@+--+-- - If the identified entry point includes any variable in its interface+-- that is declared with the+-- 'Graphics.Vulkan.Core10.BaseType.SampleMask' @BuiltIn@ decoration,+-- that variable /must/ not have an array size greater than+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxSampleMaskWords@+--+-- - If @stage@ is+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',+-- the identified entry point /must/ not include any input variable in+-- its interface that is decorated with @CullDistance@+--+-- - If @stage@ is+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',+-- and the identified entry point has an @OpExecutionMode@ instruction+-- that specifies a patch size with @OutputVertices@, the patch size+-- /must/ be greater than @0@ and less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxTessellationPatchSize@+--+-- - If @stage@ is+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',+-- the identified entry point /must/ have an @OpExecutionMode@+-- instruction that specifies a maximum output vertex count that is+-- greater than @0@ and less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxGeometryOutputVertices@+--+-- - If @stage@ is+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT',+-- the identified entry point /must/ have an @OpExecutionMode@+-- instruction that specifies an invocation count that is greater than+-- @0@ and less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxGeometryShaderInvocations@+--+-- - If @stage@ is a vertex processing stage, and the identified entry+-- point writes to @Layer@ for any primitive, it /must/ write the same+-- value to @Layer@ for all vertices of a given primitive+--+-- - If @stage@ is a vertex processing stage, and the identified entry+-- point writes to @ViewportIndex@ for any primitive, it /must/ write+-- the same value to @ViewportIndex@ for all vertices of a given+-- primitive+--+-- - If @stage@ is+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',+-- the identified entry point /must/ not include any output variables+-- in its interface decorated with @CullDistance@+--+-- - If @stage@ is+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',+-- and the identified entry point writes to @FragDepth@ in any+-- execution path, it /must/ write to @FragDepth@ in all execution+-- paths+--+-- - If @stage@ is+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_FRAGMENT_BIT',+-- and the identified entry point writes to @FragStencilRefEXT@ in any+-- execution path, it /must/ write to @FragStencilRefEXT@ in all+-- execution paths+--+-- - If @stage@ is+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV',+-- the identified entry point /must/ have an @OpExecutionMode@+-- instruction that specifies a maximum output vertex count,+-- @OutputVertices@, that is greater than @0@ and less than or equal to+-- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderPropertiesNV'::@maxMeshOutputVertices@.+--+-- - If @stage@ is+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV',+-- the identified entry point /must/ have an @OpExecutionMode@+-- instruction that specifies a maximum output primitive count,+-- @OutputPrimitivesNV@, that is greater than @0@ and less than or+-- equal to+-- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderPropertiesNV'::@maxMeshOutputPrimitives@.+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' has the+-- 'Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT'+-- flag set, the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroupSizeControl subgroupSizeControl>+-- feature /must/ be enabled.+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' has the+-- 'Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT'+-- flag set, the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-computeFullSubgroups computeFullSubgroups>+-- feature /must/ be enabled.+--+-- - If a+-- 'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'+-- structure is included in the @pNext@ chain,+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not have the+-- 'Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT'+-- flag set.+--+-- - If a+-- 'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'+-- structure is included in the @pNext@ chain, the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroupSizeControl subgroupSizeControl>+-- feature /must/ be enabled, and @stage@ /must/ be a valid bit+-- specified in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-required-subgroup-size-stages requiredSubgroupSizeStages>.+--+-- - If a+-- 'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'+-- structure is included in the @pNext@ chain and @stage@ is+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT',+-- the local workgroup size of the shader /must/ be less than or equal+-- to the product of+-- 'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'::@requiredSubgroupSize@+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroups-per-workgroup maxComputeWorkgroupSubgroups>.+--+-- - If a+-- 'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'+-- structure is included in the @pNext@ chain, and+-- 'Graphics.Vulkan.Core10.BaseType.Flags' has the+-- 'Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT'+-- flag set, the local workgroup size in the X dimension of the+-- pipeline /must/ be a multiple of+-- 'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'::@requiredSubgroupSize@.+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' has both the+-- 'Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT'+-- and+-- 'Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT'+-- flags set, the local workgroup size in the X dimension of the+-- pipeline /must/ be a multiple of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroup-size maxSubgroupSize>.+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' has the+-- 'Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT'+-- flag set and 'Graphics.Vulkan.Core10.BaseType.Flags' does not have+-- the+-- 'Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT'+-- flag set and no+-- 'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'+-- structure is included in the @pNext@ chain, the local workgroup size+-- in the X dimension of the pipeline /must/ be a multiple of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subgroup-size subgroupSize>.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlagBits'+-- values+--+-- - @stage@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits'+-- value+--+-- - @module@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.ShaderModule' handle+--+-- - @pName@ /must/ be a null-terminated UTF-8 string+--+-- - If @pSpecializationInfo@ is not @NULL@, @pSpecializationInfo@ /must/+-- be a valid pointer to a valid 'SpecializationInfo' structure+--+-- = See Also+--+-- 'ComputePipelineCreateInfo', 'GraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlags',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',+-- 'Graphics.Vulkan.Core10.Handles.ShaderModule',+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits',+-- 'SpecializationInfo',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineShaderStageCreateInfo (es :: [Type]) = PipelineShaderStageCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlagBits'+ -- specifying how the pipeline shader stage will be generated.+ flags :: PipelineShaderStageCreateFlags+ , -- | @stage@ is a+ -- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits'+ -- value specifying a single pipeline stage.+ stage :: ShaderStageFlagBits+ , -- | @module@ is a 'Graphics.Vulkan.Core10.Handles.ShaderModule' object+ -- containing the shader for this stage.+ module' :: ShaderModule+ , -- | @pName@ is a pointer to a null-terminated UTF-8 string specifying the+ -- entry point name of the shader for this stage.+ name :: ByteString+ , -- | @pSpecializationInfo@ is a pointer to a 'SpecializationInfo' structure,+ -- as described in+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-specialization-constants Specialization Constants>,+ -- or @NULL@.+ specializationInfo :: Maybe SpecializationInfo+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (PipelineShaderStageCreateInfo es)++instance Extensible PipelineShaderStageCreateInfo where+ extensibleType = STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO+ setNext x next = x{next = next}+ getNext PipelineShaderStageCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineShaderStageCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (PipelineShaderStageCreateInfo es) where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineShaderStageCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr PipelineShaderStageCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr ShaderStageFlagBits)) (stage)+ lift $ poke ((p `plusPtr` 24 :: Ptr ShaderModule)) (module')+ pName'' <- ContT $ useAsCString (name)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CChar))) pName''+ pSpecializationInfo'' <- case (specializationInfo) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr SpecializationInfo))) pSpecializationInfo''+ lift $ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 20 :: Ptr ShaderStageFlagBits)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr ShaderModule)) (zero)+ pName'' <- ContT $ useAsCString (mempty)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CChar))) pName''+ lift $ f++instance PeekChain es => FromCStruct (PipelineShaderStageCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @PipelineShaderStageCreateFlags ((p `plusPtr` 16 :: Ptr PipelineShaderStageCreateFlags))+ stage <- peek @ShaderStageFlagBits ((p `plusPtr` 20 :: Ptr ShaderStageFlagBits))+ module' <- peek @ShaderModule ((p `plusPtr` 24 :: Ptr ShaderModule))+ pName <- packCString =<< peek ((p `plusPtr` 32 :: Ptr (Ptr CChar)))+ pSpecializationInfo <- peek @(Ptr SpecializationInfo) ((p `plusPtr` 40 :: Ptr (Ptr SpecializationInfo)))+ pSpecializationInfo' <- maybePeek (\j -> peekCStruct @SpecializationInfo (j)) pSpecializationInfo+ pure $ PipelineShaderStageCreateInfo+ next flags stage module' pName pSpecializationInfo'++instance es ~ '[] => Zero (PipelineShaderStageCreateInfo es) where+ zero = PipelineShaderStageCreateInfo+ ()+ zero+ zero+ zero+ mempty+ Nothing+++-- | VkComputePipelineCreateInfo - Structure specifying parameters of a newly+-- created compute pipeline+--+-- = Description+--+-- The parameters @basePipelineHandle@ and @basePipelineIndex@ are+-- described in more detail in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.+--+-- == Valid Usage+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains the+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+-- flag, and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be+-- a valid handle to a compute+-- 'Graphics.Vulkan.Core10.Handles.Pipeline'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains the+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+-- flag, and @basePipelineHandle@ is+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- @basePipelineIndex@ /must/ be a valid index into the calling+-- command’s @pCreateInfos@ parameter+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains the+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+-- flag, and @basePipelineIndex@ is not -1, @basePipelineHandle@ /must/+-- be 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains the+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+-- flag, and @basePipelineHandle@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- @basePipelineIndex@ /must/ be -1+--+-- - The @stage@ member of @stage@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'+--+-- - The shader code for the entry point identified by @stage@ and the+-- rest of the state identified by this structure /must/ adhere to the+-- pipeline linking rules described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces Shader Interfaces>+-- chapter+--+-- - @layout@ /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent>+-- with the layout of the compute shader specified in @stage@+--+-- - The number of resources in @layout@ accessible to the compute shader+-- stage /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD'+-- or+-- 'Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+-- values+--+-- - @stage@ /must/ be a valid 'PipelineShaderStageCreateInfo' structure+--+-- - @layout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' handle+--+-- - Both of @basePipelineHandle@, and @layout@ that are valid handles of+-- non-ignored parameters /must/ have been created, allocated, or+-- retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Pipeline',+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout',+-- 'PipelineShaderStageCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createComputePipelines'+data ComputePipelineCreateInfo (es :: [Type]) = ComputePipelineCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+ -- specifying how the pipeline will be generated.+ flags :: PipelineCreateFlags+ , -- | @stage@ is a 'PipelineShaderStageCreateInfo' structure describing the+ -- compute shader.+ stage :: SomeStruct PipelineShaderStageCreateInfo+ , -- | @layout@ is the description of binding locations used by both the+ -- pipeline and descriptor sets used with the pipeline.+ layout :: PipelineLayout+ , -- | @basePipelineHandle@ is a pipeline to derive from+ basePipelineHandle :: Pipeline+ , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use+ -- as a pipeline to derive from+ basePipelineIndex :: Int32+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (ComputePipelineCreateInfo es)++instance Extensible ComputePipelineCreateInfo where+ extensibleType = STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO+ setNext x next = x{next = next}+ getNext ComputePipelineCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends ComputePipelineCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @PipelineCompilerControlCreateInfoAMD = Just f+ | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfoEXT = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (ComputePipelineCreateInfo es) where+ withCStruct x f = allocaBytesAligned 96 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ComputePipelineCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)+ ContT $ pokeSomeCStruct (forgetExtensions ((p `plusPtr` 24 :: Ptr (PipelineShaderStageCreateInfo _)))) (stage) . ($ ())+ lift $ poke ((p `plusPtr` 72 :: Ptr PipelineLayout)) (layout)+ lift $ poke ((p `plusPtr` 80 :: Ptr Pipeline)) (basePipelineHandle)+ lift $ poke ((p `plusPtr` 88 :: Ptr Int32)) (basePipelineIndex)+ lift $ f+ cStructSize = 96+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ ContT $ pokeSomeCStruct (forgetExtensions ((p `plusPtr` 24 :: Ptr (PipelineShaderStageCreateInfo _)))) ((SomeStruct zero)) . ($ ())+ lift $ poke ((p `plusPtr` 72 :: Ptr PipelineLayout)) (zero)+ lift $ poke ((p `plusPtr` 88 :: Ptr Int32)) (zero)+ lift $ f++instance PeekChain es => FromCStruct (ComputePipelineCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))+ stage <- peekSomeCStruct (forgetExtensions ((p `plusPtr` 24 :: Ptr (PipelineShaderStageCreateInfo a))))+ layout <- peek @PipelineLayout ((p `plusPtr` 72 :: Ptr PipelineLayout))+ basePipelineHandle <- peek @Pipeline ((p `plusPtr` 80 :: Ptr Pipeline))+ basePipelineIndex <- peek @Int32 ((p `plusPtr` 88 :: Ptr Int32))+ pure $ ComputePipelineCreateInfo+ next flags stage layout basePipelineHandle basePipelineIndex++instance es ~ '[] => Zero (ComputePipelineCreateInfo es) where+ zero = ComputePipelineCreateInfo+ ()+ zero+ (SomeStruct zero)+ zero+ zero+ zero+++-- | VkVertexInputBindingDescription - Structure specifying vertex input+-- binding description+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'PipelineVertexInputStateCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.VertexInputRate.VertexInputRate'+data VertexInputBindingDescription = VertexInputBindingDescription+ { -- | @binding@ /must/ be less than+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@+ binding :: Word32+ , -- | @stride@ /must/ be less than or equal to+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindingStride@+ stride :: Word32+ , -- | @inputRate@ /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Enums.VertexInputRate.VertexInputRate' value+ inputRate :: VertexInputRate+ }+ deriving (Typeable)+deriving instance Show VertexInputBindingDescription++instance ToCStruct VertexInputBindingDescription where+ withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p VertexInputBindingDescription{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (binding)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (stride)+ poke ((p `plusPtr` 8 :: Ptr VertexInputRate)) (inputRate)+ f+ cStructSize = 12+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 8 :: Ptr VertexInputRate)) (zero)+ f++instance FromCStruct VertexInputBindingDescription where+ peekCStruct p = do+ binding <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ stride <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ inputRate <- peek @VertexInputRate ((p `plusPtr` 8 :: Ptr VertexInputRate))+ pure $ VertexInputBindingDescription+ binding stride inputRate++instance Storable VertexInputBindingDescription where+ sizeOf ~_ = 12+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero VertexInputBindingDescription where+ zero = VertexInputBindingDescription+ zero+ zero+ zero+++-- | VkVertexInputAttributeDescription - Structure specifying vertex input+-- attribute description+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'PipelineVertexInputStateCreateInfo'+data VertexInputAttributeDescription = VertexInputAttributeDescription+ { -- | @location@ /must/ be less than+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputAttributes@+ location :: Word32+ , -- | @binding@ /must/ be less than+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@+ binding :: Word32+ , -- | 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Enums.Format.Format' value+ format :: Format+ , -- | @offset@ /must/ be less than or equal to+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputAttributeOffset@+ offset :: Word32+ }+ deriving (Typeable)+deriving instance Show VertexInputAttributeDescription++instance ToCStruct VertexInputAttributeDescription where+ withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p VertexInputAttributeDescription{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (location)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (binding)+ poke ((p `plusPtr` 8 :: Ptr Format)) (format)+ poke ((p `plusPtr` 12 :: Ptr Word32)) (offset)+ f+ cStructSize = 16+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Format)) (zero)+ poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)+ f++instance FromCStruct VertexInputAttributeDescription where+ peekCStruct p = do+ location <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ binding <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ format <- peek @Format ((p `plusPtr` 8 :: Ptr Format))+ offset <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))+ pure $ VertexInputAttributeDescription+ location binding format offset++instance Storable VertexInputAttributeDescription where+ sizeOf ~_ = 16+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero VertexInputAttributeDescription where+ zero = VertexInputAttributeDescription+ zero+ zero+ zero+ zero+++-- | VkPipelineVertexInputStateCreateInfo - Structure specifying parameters+-- of a newly created pipeline vertex input state+--+-- == Valid Usage+--+-- - @vertexBindingDescriptionCount@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@+--+-- - @vertexAttributeDescriptionCount@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputAttributes@+--+-- - For every @binding@ specified by each element of+-- @pVertexAttributeDescriptions@, a 'VertexInputBindingDescription'+-- /must/ exist in @pVertexBindingDescriptions@ with the same value of+-- @binding@+--+-- - All elements of @pVertexBindingDescriptions@ /must/ describe+-- distinct binding numbers+--+-- - All elements of @pVertexAttributeDescriptions@ /must/ describe+-- distinct attribute locations+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfoEXT'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+--+-- - If @vertexBindingDescriptionCount@ is not @0@,+-- @pVertexBindingDescriptions@ /must/ be a valid pointer to an array+-- of @vertexBindingDescriptionCount@ valid+-- 'VertexInputBindingDescription' structures+--+-- - If @vertexAttributeDescriptionCount@ is not @0@,+-- @pVertexAttributeDescriptions@ /must/ be a valid pointer to an array+-- of @vertexAttributeDescriptionCount@ valid+-- 'VertexInputAttributeDescription' structures+--+-- = See Also+--+-- 'GraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags.PipelineVertexInputStateCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'VertexInputAttributeDescription', 'VertexInputBindingDescription'+data PipelineVertexInputStateCreateInfo (es :: [Type]) = PipelineVertexInputStateCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: PipelineVertexInputStateCreateFlags+ , -- | @pVertexBindingDescriptions@ is a pointer to an array of+ -- 'VertexInputBindingDescription' structures.+ vertexBindingDescriptions :: Vector VertexInputBindingDescription+ , -- | @pVertexAttributeDescriptions@ is a pointer to an array of+ -- 'VertexInputAttributeDescription' structures.+ vertexAttributeDescriptions :: Vector VertexInputAttributeDescription+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (PipelineVertexInputStateCreateInfo es)++instance Extensible PipelineVertexInputStateCreateInfo where+ extensibleType = STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO+ setNext x next = x{next = next}+ getNext PipelineVertexInputStateCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineVertexInputStateCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @PipelineVertexInputDivisorStateCreateInfoEXT = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (PipelineVertexInputStateCreateInfo es) where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineVertexInputStateCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr PipelineVertexInputStateCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (vertexBindingDescriptions)) :: Word32))+ pPVertexBindingDescriptions' <- ContT $ allocaBytesAligned @VertexInputBindingDescription ((Data.Vector.length (vertexBindingDescriptions)) * 12) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPVertexBindingDescriptions' `plusPtr` (12 * (i)) :: Ptr VertexInputBindingDescription) (e) . ($ ())) (vertexBindingDescriptions)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDescription))) (pPVertexBindingDescriptions')+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (vertexAttributeDescriptions)) :: Word32))+ pPVertexAttributeDescriptions' <- ContT $ allocaBytesAligned @VertexInputAttributeDescription ((Data.Vector.length (vertexAttributeDescriptions)) * 16) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPVertexAttributeDescriptions' `plusPtr` (16 * (i)) :: Ptr VertexInputAttributeDescription) (e) . ($ ())) (vertexAttributeDescriptions)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr VertexInputAttributeDescription))) (pPVertexAttributeDescriptions')+ lift $ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ pPVertexBindingDescriptions' <- ContT $ allocaBytesAligned @VertexInputBindingDescription ((Data.Vector.length (mempty)) * 12) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPVertexBindingDescriptions' `plusPtr` (12 * (i)) :: Ptr VertexInputBindingDescription) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDescription))) (pPVertexBindingDescriptions')+ pPVertexAttributeDescriptions' <- ContT $ allocaBytesAligned @VertexInputAttributeDescription ((Data.Vector.length (mempty)) * 16) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPVertexAttributeDescriptions' `plusPtr` (16 * (i)) :: Ptr VertexInputAttributeDescription) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr VertexInputAttributeDescription))) (pPVertexAttributeDescriptions')+ lift $ f++instance PeekChain es => FromCStruct (PipelineVertexInputStateCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @PipelineVertexInputStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineVertexInputStateCreateFlags))+ vertexBindingDescriptionCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pVertexBindingDescriptions <- peek @(Ptr VertexInputBindingDescription) ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDescription)))+ pVertexBindingDescriptions' <- generateM (fromIntegral vertexBindingDescriptionCount) (\i -> peekCStruct @VertexInputBindingDescription ((pVertexBindingDescriptions `advancePtrBytes` (12 * (i)) :: Ptr VertexInputBindingDescription)))+ vertexAttributeDescriptionCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pVertexAttributeDescriptions <- peek @(Ptr VertexInputAttributeDescription) ((p `plusPtr` 40 :: Ptr (Ptr VertexInputAttributeDescription)))+ pVertexAttributeDescriptions' <- generateM (fromIntegral vertexAttributeDescriptionCount) (\i -> peekCStruct @VertexInputAttributeDescription ((pVertexAttributeDescriptions `advancePtrBytes` (16 * (i)) :: Ptr VertexInputAttributeDescription)))+ pure $ PipelineVertexInputStateCreateInfo+ next flags pVertexBindingDescriptions' pVertexAttributeDescriptions'++instance es ~ '[] => Zero (PipelineVertexInputStateCreateInfo es) where+ zero = PipelineVertexInputStateCreateInfo+ ()+ zero+ mempty+ mempty+++-- | VkPipelineInputAssemblyStateCreateInfo - Structure specifying parameters+-- of a newly created pipeline input assembly state+--+-- = Description+--+-- Restarting the assembly of primitives discards the most recent index+-- values if those elements formed an incomplete primitive, and restarts+-- the primitive assembly using the subsequent indices, but only assembling+-- the immediately following element through the end of the originally+-- specified elements. The primitive restart index value comparison is+-- performed before adding the @vertexOffset@ value to the index value.+--+-- == Valid Usage+--+-- - If @topology@ is+-- 'Graphics.Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_POINT_LIST',+-- 'Graphics.Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST',+-- 'Graphics.Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST',+-- 'Graphics.Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY',+-- 'Graphics.Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY'+-- or+-- 'Graphics.Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',+-- @primitiveRestartEnable@ /must/ be+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>+-- feature is not enabled, @topology@ /must/ not be any of+-- 'Graphics.Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY',+-- 'Graphics.Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY',+-- 'Graphics.Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY'+-- or+-- 'Graphics.Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+-- feature is not enabled, @topology@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO'+--+-- - @pNext@ /must/ be @NULL@+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+--+-- - @topology@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.PrimitiveTopology.PrimitiveTopology'+-- value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32', 'GraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags.PipelineInputAssemblyStateCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.PrimitiveTopology.PrimitiveTopology',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineInputAssemblyStateCreateInfo = PipelineInputAssemblyStateCreateInfo+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: PipelineInputAssemblyStateCreateFlags+ , -- | @topology@ is a+ -- 'Graphics.Vulkan.Core10.Enums.PrimitiveTopology.PrimitiveTopology'+ -- defining the primitive topology, as described below.+ topology :: PrimitiveTopology+ , -- | @primitiveRestartEnable@ controls whether a special vertex index value+ -- is treated as restarting the assembly of primitives. This enable only+ -- applies to indexed draws+ -- ('Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexed' and+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect'),+ -- and the special index value is either 0xFFFFFFFF when the+ -- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' parameter of+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer' is+ -- equal to 'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32',+ -- 0xFF when 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' is equal to+ -- 'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_EXT', or 0xFFFF+ -- when 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' is equal to+ -- 'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16'. Primitive+ -- restart is not allowed for “list” topologies.+ primitiveRestartEnable :: Bool+ }+ deriving (Typeable)+deriving instance Show PipelineInputAssemblyStateCreateInfo++instance ToCStruct PipelineInputAssemblyStateCreateInfo where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineInputAssemblyStateCreateInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr PipelineInputAssemblyStateCreateFlags)) (flags)+ poke ((p `plusPtr` 20 :: Ptr PrimitiveTopology)) (topology)+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (primitiveRestartEnable))+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 20 :: Ptr PrimitiveTopology)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PipelineInputAssemblyStateCreateInfo where+ peekCStruct p = do+ flags <- peek @PipelineInputAssemblyStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineInputAssemblyStateCreateFlags))+ topology <- peek @PrimitiveTopology ((p `plusPtr` 20 :: Ptr PrimitiveTopology))+ primitiveRestartEnable <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ pure $ PipelineInputAssemblyStateCreateInfo+ flags topology (bool32ToBool primitiveRestartEnable)++instance Storable PipelineInputAssemblyStateCreateInfo where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineInputAssemblyStateCreateInfo where+ zero = PipelineInputAssemblyStateCreateInfo+ zero+ zero+ zero+++-- | VkPipelineTessellationStateCreateInfo - Structure specifying parameters+-- of a newly created pipeline tessellation state+--+-- == Valid Usage+--+-- - @patchControlPoints@ /must/ be greater than zero and less than or+-- equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxTessellationPatchSize@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PipelineTessellationDomainOriginStateCreateInfo'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+--+-- = See Also+--+-- 'GraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags.PipelineTessellationStateCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineTessellationStateCreateInfo (es :: [Type]) = PipelineTessellationStateCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: PipelineTessellationStateCreateFlags+ , -- | @patchControlPoints@ number of control points per patch.+ patchControlPoints :: Word32+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (PipelineTessellationStateCreateInfo es)++instance Extensible PipelineTessellationStateCreateInfo where+ extensibleType = STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO+ setNext x next = x{next = next}+ getNext PipelineTessellationStateCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineTessellationStateCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @PipelineTessellationDomainOriginStateCreateInfo = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (PipelineTessellationStateCreateInfo es) where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineTessellationStateCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr PipelineTessellationStateCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (patchControlPoints)+ lift $ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ lift $ f++instance PeekChain es => FromCStruct (PipelineTessellationStateCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @PipelineTessellationStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineTessellationStateCreateFlags))+ patchControlPoints <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pure $ PipelineTessellationStateCreateInfo+ next flags patchControlPoints++instance es ~ '[] => Zero (PipelineTessellationStateCreateInfo es) where+ zero = PipelineTessellationStateCreateInfo+ ()+ zero+ zero+++-- | VkPipelineViewportStateCreateInfo - Structure specifying parameters of a+-- newly created pipeline viewport state+--+-- == Valid Usage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>+-- feature is not enabled, @viewportCount@ /must/ be @1@+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>+-- feature is not enabled, @scissorCount@ /must/ be @1@+--+-- - @viewportCount@ /must/ be between @1@ and+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@,+-- inclusive+--+-- - @scissorCount@ /must/ be between @1@ and+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@,+-- inclusive+--+-- - @scissorCount@ and @viewportCount@ /must/ be identical+--+-- - The @x@ and @y@ members of @offset@ member of any element of+-- @pScissors@ /must/ be greater than or equal to @0@+--+-- - Evaluation of (@offset.x@ + @extent.width@) /must/ not cause a+-- signed integer addition overflow for any element of @pScissors@+--+-- - Evaluation of (@offset.y@ + @extent.height@) /must/ not cause a+-- signed integer addition overflow for any element of @pScissors@+--+-- - If the @viewportWScalingEnable@ member of a+-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'+-- structure included in the @pNext@ chain is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', the @viewportCount@ member+-- of the+-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'+-- structure /must/ be equal to @viewportCount@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportCoarseSampleOrderStateCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV',+-- or+-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+--+-- - @viewportCount@ /must/ be greater than @0@+--+-- - @scissorCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'GraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.PipelineViewportStateCreateFlags.PipelineViewportStateCreateFlags',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Viewport'+data PipelineViewportStateCreateInfo (es :: [Type]) = PipelineViewportStateCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: PipelineViewportStateCreateFlags+ , -- | @pViewports@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Viewport' structures,+ -- defining the viewport transforms. If the viewport state is dynamic, this+ -- member is ignored.+ viewports :: Either Word32 (Vector Viewport)+ , -- | @pScissors@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D' structures+ -- defining the rectangular bounds of the scissor for the corresponding+ -- viewport. If the scissor state is dynamic, this member is ignored.+ scissors :: Either Word32 (Vector Rect2D)+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (PipelineViewportStateCreateInfo es)++instance Extensible PipelineViewportStateCreateInfo where+ extensibleType = STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO+ setNext x next = x{next = next}+ getNext PipelineViewportStateCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineViewportStateCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @PipelineViewportCoarseSampleOrderStateCreateInfoNV = Just f+ | Just Refl <- eqT @e @PipelineViewportShadingRateImageStateCreateInfoNV = Just f+ | Just Refl <- eqT @e @PipelineViewportExclusiveScissorStateCreateInfoNV = Just f+ | Just Refl <- eqT @e @PipelineViewportSwizzleStateCreateInfoNV = Just f+ | Just Refl <- eqT @e @PipelineViewportWScalingStateCreateInfoNV = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (PipelineViewportStateCreateInfo es) where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineViewportStateCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr PipelineViewportStateCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (either id (fromIntegral . Data.Vector.length) (viewports)) :: Word32))+ pViewports'' <- case (viewports) of+ Left _ -> pure nullPtr+ Right v -> do+ pPViewports' <- ContT $ allocaBytesAligned @Viewport ((Data.Vector.length (v)) * 24) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPViewports' `plusPtr` (24 * (i)) :: Ptr Viewport) (e) . ($ ())) (v)+ pure $ pPViewports'+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Viewport))) pViewports''+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (either id (fromIntegral . Data.Vector.length) (scissors)) :: Word32))+ pScissors'' <- case (scissors) of+ Left _ -> pure nullPtr+ Right v -> do+ pPScissors' <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (v)) * 16) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPScissors' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (v)+ pure $ pPScissors'+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Rect2D))) pScissors''+ lift $ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ f++instance PeekChain es => FromCStruct (PipelineViewportStateCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @PipelineViewportStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineViewportStateCreateFlags))+ viewportCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pViewports <- peek @(Ptr Viewport) ((p `plusPtr` 24 :: Ptr (Ptr Viewport)))+ pViewports' <- maybePeek (\j -> generateM (fromIntegral viewportCount) (\i -> peekCStruct @Viewport (((j) `advancePtrBytes` (24 * (i)) :: Ptr Viewport)))) pViewports+ let pViewports'' = maybe (Left viewportCount) Right pViewports'+ scissorCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pScissors <- peek @(Ptr Rect2D) ((p `plusPtr` 40 :: Ptr (Ptr Rect2D)))+ pScissors' <- maybePeek (\j -> generateM (fromIntegral scissorCount) (\i -> peekCStruct @Rect2D (((j) `advancePtrBytes` (16 * (i)) :: Ptr Rect2D)))) pScissors+ let pScissors'' = maybe (Left scissorCount) Right pScissors'+ pure $ PipelineViewportStateCreateInfo+ next flags pViewports'' pScissors''++instance es ~ '[] => Zero (PipelineViewportStateCreateInfo es) where+ zero = PipelineViewportStateCreateInfo+ ()+ zero+ (Left 0)+ (Left 0)+++-- | VkPipelineRasterizationStateCreateInfo - Structure specifying parameters+-- of a newly created pipeline rasterization state+--+-- = Description+--+-- The application /can/ also add a+-- 'Graphics.Vulkan.Extensions.VK_AMD_rasterization_order.PipelineRasterizationStateRasterizationOrderAMD'+-- structure to the @pNext@ chain of a+-- 'PipelineRasterizationStateCreateInfo' structure. This structure enables+-- selecting the rasterization order to use when rendering with the+-- corresponding graphics pipeline as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primrast-order Rasterization Order>.+--+-- == Valid Usage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depth clamping>+-- feature is not enabled, @depthClampEnable@ /must/ be+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fillModeNonSolid non-solid fill modes>+-- feature is not enabled,+-- 'Graphics.Vulkan.Core10.Enums.PolygonMode.PolygonMode' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL' or+-- 'Graphics.Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL_RECTANGLE_NV'+--+-- - If the+-- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_NV_fill_rectangle@+-- extension is not enabled,+-- 'Graphics.Vulkan.Core10.Enums.PolygonMode.PolygonMode' /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL_RECTANGLE_NV'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization.PipelineRasterizationConservativeStateCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_AMD_rasterization_order.PipelineRasterizationStateRasterizationOrderAMD',+-- or+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+--+-- - 'Graphics.Vulkan.Core10.Enums.PolygonMode.PolygonMode' /must/ be a+-- valid 'Graphics.Vulkan.Core10.Enums.PolygonMode.PolygonMode' value+--+-- - @cullMode@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.CullModeFlagBits.CullModeFlagBits'+-- values+--+-- - 'Graphics.Vulkan.Core10.Enums.FrontFace.FrontFace' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.FrontFace.FrontFace' value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.CullModeFlagBits.CullModeFlags',+-- 'Graphics.Vulkan.Core10.Enums.FrontFace.FrontFace',+-- 'GraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags.PipelineRasterizationStateCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.PolygonMode.PolygonMode',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineRasterizationStateCreateInfo (es :: [Type]) = PipelineRasterizationStateCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: PipelineRasterizationStateCreateFlags+ , -- | @depthClampEnable@ controls whether to clamp the fragment’s depth values+ -- as described in+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth Depth Test>.+ -- If the pipeline is not created with+ -- 'Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT'+ -- present then enabling depth clamp will also disable clipping primitives+ -- to the z planes of the frustrum as described in+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>.+ -- Otherwise depth clipping is controlled by the state set in+ -- 'Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT'.+ depthClampEnable :: Bool+ , -- | @rasterizerDiscardEnable@ controls whether primitives are discarded+ -- immediately before the rasterization stage.+ rasterizerDiscardEnable :: Bool+ , -- | 'Graphics.Vulkan.Core10.Enums.PolygonMode.PolygonMode' is the triangle+ -- rendering mode. See+ -- 'Graphics.Vulkan.Core10.Enums.PolygonMode.PolygonMode'.+ polygonMode :: PolygonMode+ , -- | @cullMode@ is the triangle facing direction used for primitive culling.+ -- See 'Graphics.Vulkan.Core10.Enums.CullModeFlagBits.CullModeFlagBits'.+ cullMode :: CullModeFlags+ , -- | 'Graphics.Vulkan.Core10.Enums.FrontFace.FrontFace' is a+ -- 'Graphics.Vulkan.Core10.Enums.FrontFace.FrontFace' value specifying the+ -- front-facing triangle orientation to be used for culling.+ frontFace :: FrontFace+ , -- | @depthBiasEnable@ controls whether to bias fragment depth values.+ depthBiasEnable :: Bool+ , -- | @depthBiasConstantFactor@ is a scalar factor controlling the constant+ -- depth value added to each fragment.+ depthBiasConstantFactor :: Float+ , -- | @depthBiasClamp@ is the maximum (or minimum) depth bias of a fragment.+ depthBiasClamp :: Float+ , -- | @depthBiasSlopeFactor@ is a scalar factor applied to a fragment’s slope+ -- in depth bias calculations.+ depthBiasSlopeFactor :: Float+ , -- | @lineWidth@ is the width of rasterized line segments.+ lineWidth :: Float+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (PipelineRasterizationStateCreateInfo es)++instance Extensible PipelineRasterizationStateCreateInfo where+ extensibleType = STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO+ setNext x next = x{next = next}+ getNext PipelineRasterizationStateCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineRasterizationStateCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @PipelineRasterizationLineStateCreateInfoEXT = Just f+ | Just Refl <- eqT @e @PipelineRasterizationDepthClipStateCreateInfoEXT = Just f+ | Just Refl <- eqT @e @PipelineRasterizationStateStreamCreateInfoEXT = Just f+ | Just Refl <- eqT @e @PipelineRasterizationConservativeStateCreateInfoEXT = Just f+ | Just Refl <- eqT @e @PipelineRasterizationStateRasterizationOrderAMD = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (PipelineRasterizationStateCreateInfo es) where+ withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineRasterizationStateCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr PipelineRasterizationStateCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (depthClampEnable))+ lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (rasterizerDiscardEnable))+ lift $ poke ((p `plusPtr` 28 :: Ptr PolygonMode)) (polygonMode)+ lift $ poke ((p `plusPtr` 32 :: Ptr CullModeFlags)) (cullMode)+ lift $ poke ((p `plusPtr` 36 :: Ptr FrontFace)) (frontFace)+ lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (depthBiasEnable))+ lift $ poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (depthBiasConstantFactor))+ lift $ poke ((p `plusPtr` 48 :: Ptr CFloat)) (CFloat (depthBiasClamp))+ lift $ poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (depthBiasSlopeFactor))+ lift $ poke ((p `plusPtr` 56 :: Ptr CFloat)) (CFloat (lineWidth))+ lift $ f+ cStructSize = 64+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 28 :: Ptr PolygonMode)) (zero)+ lift $ poke ((p `plusPtr` 36 :: Ptr FrontFace)) (zero)+ lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (zero))+ lift $ poke ((p `plusPtr` 48 :: Ptr CFloat)) (CFloat (zero))+ lift $ poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (zero))+ lift $ poke ((p `plusPtr` 56 :: Ptr CFloat)) (CFloat (zero))+ lift $ f++instance PeekChain es => FromCStruct (PipelineRasterizationStateCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @PipelineRasterizationStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineRasterizationStateCreateFlags))+ depthClampEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ rasterizerDiscardEnable <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ polygonMode <- peek @PolygonMode ((p `plusPtr` 28 :: Ptr PolygonMode))+ cullMode <- peek @CullModeFlags ((p `plusPtr` 32 :: Ptr CullModeFlags))+ frontFace <- peek @FrontFace ((p `plusPtr` 36 :: Ptr FrontFace))+ depthBiasEnable <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))+ depthBiasConstantFactor <- peek @CFloat ((p `plusPtr` 44 :: Ptr CFloat))+ depthBiasClamp <- peek @CFloat ((p `plusPtr` 48 :: Ptr CFloat))+ depthBiasSlopeFactor <- peek @CFloat ((p `plusPtr` 52 :: Ptr CFloat))+ lineWidth <- peek @CFloat ((p `plusPtr` 56 :: Ptr CFloat))+ pure $ PipelineRasterizationStateCreateInfo+ next flags (bool32ToBool depthClampEnable) (bool32ToBool rasterizerDiscardEnable) polygonMode cullMode frontFace (bool32ToBool depthBiasEnable) ((\(CFloat a) -> a) depthBiasConstantFactor) ((\(CFloat a) -> a) depthBiasClamp) ((\(CFloat a) -> a) depthBiasSlopeFactor) ((\(CFloat a) -> a) lineWidth)++instance es ~ '[] => Zero (PipelineRasterizationStateCreateInfo es) where+ zero = PipelineRasterizationStateCreateInfo+ ()+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkPipelineMultisampleStateCreateInfo - Structure specifying parameters+-- of a newly created pipeline multisample state+--+-- == Valid Usage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sampleRateShading sample rate shading>+-- feature is not enabled, @sampleShadingEnable@ /must/ be+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alpha to one>+-- feature is not enabled, @alphaToOneEnable@ /must/ be+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'+--+-- - @minSampleShading@ /must/ be in the range [0,1]+--+-- - If the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and+-- if the subpass has any color attachments and @rasterizationSamples@+-- is greater than the number of color samples, then+-- @sampleShadingEnable@ /must/ be+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV',+-- or+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+--+-- - @rasterizationSamples@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+-- value+--+-- - If @pSampleMask@ is not @NULL@, @pSampleMask@ /must/ be a valid+-- pointer to an array of+-- \(\lceil{\mathit{rasterizationSamples} \over 32}\rceil\)+-- 'Graphics.Vulkan.Core10.BaseType.SampleMask' values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32', 'GraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags.PipelineMultisampleStateCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',+-- 'Graphics.Vulkan.Core10.BaseType.SampleMask',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineMultisampleStateCreateInfo (es :: [Type]) = PipelineMultisampleStateCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: PipelineMultisampleStateCreateFlags+ , -- | @rasterizationSamples@ is a+ -- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+ -- specifying the number of samples used in rasterization.+ rasterizationSamples :: SampleCountFlagBits+ , -- | @sampleShadingEnable@ /can/ be used to enable+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading Sample Shading>.+ sampleShadingEnable :: Bool+ , -- | @minSampleShading@ specifies a minimum fraction of sample shading if+ -- @sampleShadingEnable@ is set to 'Graphics.Vulkan.Core10.BaseType.TRUE'.+ minSampleShading :: Float+ , -- | @pSampleMask@ is a bitmask of static coverage information that is ANDed+ -- with the coverage information generated during rasterization, as+ -- described in+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-samplemask Sample Mask>.+ sampleMask :: Vector SampleMask+ , -- | @alphaToCoverageEnable@ controls whether a temporary coverage value is+ -- generated based on the alpha component of the fragment’s first color+ -- output as specified in the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-covg Multisample Coverage>+ -- section.+ alphaToCoverageEnable :: Bool+ , -- | @alphaToOneEnable@ controls whether the alpha component of the+ -- fragment’s first color output is replaced with one as described in+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-covg Multisample Coverage>.+ alphaToOneEnable :: Bool+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (PipelineMultisampleStateCreateInfo es)++instance Extensible PipelineMultisampleStateCreateInfo where+ extensibleType = STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO+ setNext x next = x{next = next}+ getNext PipelineMultisampleStateCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineMultisampleStateCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @PipelineCoverageReductionStateCreateInfoNV = Just f+ | Just Refl <- eqT @e @PipelineCoverageModulationStateCreateInfoNV = Just f+ | Just Refl <- eqT @e @PipelineSampleLocationsStateCreateInfoEXT = Just f+ | Just Refl <- eqT @e @PipelineCoverageToColorStateCreateInfoNV = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (PipelineMultisampleStateCreateInfo es) where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineMultisampleStateCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr PipelineMultisampleStateCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr SampleCountFlagBits)) (rasterizationSamples)+ lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (sampleShadingEnable))+ lift $ poke ((p `plusPtr` 28 :: Ptr CFloat)) (CFloat (minSampleShading))+ pSampleMask'' <- case Data.Vector.length (sampleMask) of+ 0 -> pure nullPtr+ vecLen -> do+ let requiredLen = case (rasterizationSamples) of+ SampleCountFlagBits n -> (n + 31) `quot` 32+ lift $ unless (requiredLen == fromIntegral vecLen) $+ throwIO $ IOError Nothing InvalidArgument "" "sampleMask must be either empty or contain enough bits to cover all the sample specified by 'rasterizationSamples'" Nothing Nothing+ do+ pPSampleMask' <- ContT $ allocaBytesAligned @SampleMask ((Data.Vector.length ((sampleMask))) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPSampleMask' `plusPtr` (4 * (i)) :: Ptr SampleMask) (e)) ((sampleMask))+ pure $ pPSampleMask'+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr SampleMask))) pSampleMask''+ lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (alphaToCoverageEnable))+ lift $ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (alphaToOneEnable))+ lift $ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 20 :: Ptr SampleCountFlagBits)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 28 :: Ptr CFloat)) (CFloat (zero))+ lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ f++instance PeekChain es => FromCStruct (PipelineMultisampleStateCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @PipelineMultisampleStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineMultisampleStateCreateFlags))+ rasterizationSamples <- peek @SampleCountFlagBits ((p `plusPtr` 20 :: Ptr SampleCountFlagBits))+ sampleShadingEnable <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ minSampleShading <- peek @CFloat ((p `plusPtr` 28 :: Ptr CFloat))+ pSampleMask <- peek @(Ptr SampleMask) ((p `plusPtr` 32 :: Ptr (Ptr SampleMask)))+ pSampleMask' <- if pSampleMask == nullPtr+ then pure mempty+ else generateM (case rasterizationSamples of+ SampleCountFlagBits n -> (fromIntegral n + 31) `quot` 32) (\i -> peek @SampleMask (((pSampleMask) `advancePtrBytes` (4 * (i)) :: Ptr SampleMask)))+ alphaToCoverageEnable <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))+ alphaToOneEnable <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))+ pure $ PipelineMultisampleStateCreateInfo+ next flags rasterizationSamples (bool32ToBool sampleShadingEnable) ((\(CFloat a) -> a) minSampleShading) pSampleMask' (bool32ToBool alphaToCoverageEnable) (bool32ToBool alphaToOneEnable)++instance es ~ '[] => Zero (PipelineMultisampleStateCreateInfo es) where+ zero = PipelineMultisampleStateCreateInfo+ ()+ zero+ zero+ zero+ zero+ mempty+ zero+ zero+++-- | VkPipelineColorBlendAttachmentState - Structure specifying a pipeline+-- color blend attachment state+--+-- == Valid Usage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dualSrcBlend dual source blending>+-- feature is not enabled, @srcColorBlendFactor@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_COLOR',+-- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_COLOR',+-- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA',+-- or+-- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dualSrcBlend dual source blending>+-- feature is not enabled, @dstColorBlendFactor@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_COLOR',+-- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_COLOR',+-- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA',+-- or+-- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dualSrcBlend dual source blending>+-- feature is not enabled, @srcAlphaBlendFactor@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_COLOR',+-- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_COLOR',+-- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA',+-- or+-- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dualSrcBlend dual source blending>+-- feature is not enabled, @dstAlphaBlendFactor@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_COLOR',+-- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_COLOR',+-- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA',+-- or+-- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA'+--+-- - If either of @colorBlendOp@ or @alphaBlendOp@ is an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,+-- then @colorBlendOp@ /must/ equal @alphaBlendOp@+--+-- - If+-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendIndependentBlend@+-- is 'Graphics.Vulkan.Core10.BaseType.FALSE' and @colorBlendOp@ is an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,+-- then @colorBlendOp@ /must/ be the same for all attachments.+--+-- - If+-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendIndependentBlend@+-- is 'Graphics.Vulkan.Core10.BaseType.FALSE' and @alphaBlendOp@ is an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,+-- then @alphaBlendOp@ /must/ be the same for all attachments.+--+-- - If+-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendAllOperations@+-- is 'Graphics.Vulkan.Core10.BaseType.FALSE', then @colorBlendOp@+-- /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_ZERO_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_OVER_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_OVER_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_IN_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_IN_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_OUT_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_OUT_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_SRC_ATOP_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_DST_ATOP_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_XOR_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_INVERT_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_INVERT_RGB_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_LINEARDODGE_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_LINEARBURN_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_VIVIDLIGHT_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_LINEARLIGHT_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_PINLIGHT_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_HARDMIX_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_CLAMPED_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_CLAMPED_ALPHA_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_PLUS_DARKER_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_MINUS_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_MINUS_CLAMPED_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_CONTRAST_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_INVERT_OVG_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_RED_EXT',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_GREEN_EXT', or+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BLEND_OP_BLUE_EXT'+--+-- - If @colorBlendOp@ or @alphaBlendOp@ is an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,+-- then+-- 'Graphics.Vulkan.Core10.Pass.SubpassDescription'::@colorAttachmentCount@+-- of the subpass this pipeline is compiled against /must/ be less than+-- or equal to+-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::advancedBlendMaxColorAttachments+--+-- == Valid Usage (Implicit)+--+-- - @srcColorBlendFactor@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BlendFactor' value+--+-- - @dstColorBlendFactor@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BlendFactor' value+--+-- - @colorBlendOp@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BlendOp' value+--+-- - @srcAlphaBlendFactor@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BlendFactor' value+--+-- - @dstAlphaBlendFactor@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BlendFactor' value+--+-- - @alphaBlendOp@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BlendOp' value+--+-- - @colorWriteMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlagBits'+-- values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.BlendFactor.BlendFactor',+-- 'Graphics.Vulkan.Core10.Enums.BlendOp.BlendOp',+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlags',+-- 'PipelineColorBlendStateCreateInfo'+data PipelineColorBlendAttachmentState = PipelineColorBlendAttachmentState+ { -- | @blendEnable@ controls whether blending is enabled for the corresponding+ -- color attachment. If blending is not enabled, the source fragment’s+ -- color for that attachment is passed through unmodified.+ blendEnable :: Bool+ , -- | @srcColorBlendFactor@ selects which blend factor is used to determine+ -- the source factors (Sr,Sg,Sb).+ srcColorBlendFactor :: BlendFactor+ , -- | @dstColorBlendFactor@ selects which blend factor is used to determine+ -- the destination factors (Dr,Dg,Db).+ dstColorBlendFactor :: BlendFactor+ , -- | @colorBlendOp@ selects which blend operation is used to calculate the+ -- RGB values to write to the color attachment.+ colorBlendOp :: BlendOp+ , -- | @srcAlphaBlendFactor@ selects which blend factor is used to determine+ -- the source factor Sa.+ srcAlphaBlendFactor :: BlendFactor+ , -- | @dstAlphaBlendFactor@ selects which blend factor is used to determine+ -- the destination factor Da.+ dstAlphaBlendFactor :: BlendFactor+ , -- | @alphaBlendOp@ selects which blend operation is use to calculate the+ -- alpha values to write to the color attachment.+ alphaBlendOp :: BlendOp+ , -- | @colorWriteMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlagBits'+ -- specifying which of the R, G, B, and\/or A components are enabled for+ -- writing, as described for the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-color-write-mask Color Write Mask>.+ colorWriteMask :: ColorComponentFlags+ }+ deriving (Typeable)+deriving instance Show PipelineColorBlendAttachmentState++instance ToCStruct PipelineColorBlendAttachmentState where+ withCStruct x f = allocaBytesAligned 32 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineColorBlendAttachmentState{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (blendEnable))+ poke ((p `plusPtr` 4 :: Ptr BlendFactor)) (srcColorBlendFactor)+ poke ((p `plusPtr` 8 :: Ptr BlendFactor)) (dstColorBlendFactor)+ poke ((p `plusPtr` 12 :: Ptr BlendOp)) (colorBlendOp)+ poke ((p `plusPtr` 16 :: Ptr BlendFactor)) (srcAlphaBlendFactor)+ poke ((p `plusPtr` 20 :: Ptr BlendFactor)) (dstAlphaBlendFactor)+ poke ((p `plusPtr` 24 :: Ptr BlendOp)) (alphaBlendOp)+ poke ((p `plusPtr` 28 :: Ptr ColorComponentFlags)) (colorWriteMask)+ f+ cStructSize = 32+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 4 :: Ptr BlendFactor)) (zero)+ poke ((p `plusPtr` 8 :: Ptr BlendFactor)) (zero)+ poke ((p `plusPtr` 12 :: Ptr BlendOp)) (zero)+ poke ((p `plusPtr` 16 :: Ptr BlendFactor)) (zero)+ poke ((p `plusPtr` 20 :: Ptr BlendFactor)) (zero)+ poke ((p `plusPtr` 24 :: Ptr BlendOp)) (zero)+ f++instance FromCStruct PipelineColorBlendAttachmentState where+ peekCStruct p = do+ blendEnable <- peek @Bool32 ((p `plusPtr` 0 :: Ptr Bool32))+ srcColorBlendFactor <- peek @BlendFactor ((p `plusPtr` 4 :: Ptr BlendFactor))+ dstColorBlendFactor <- peek @BlendFactor ((p `plusPtr` 8 :: Ptr BlendFactor))+ colorBlendOp <- peek @BlendOp ((p `plusPtr` 12 :: Ptr BlendOp))+ srcAlphaBlendFactor <- peek @BlendFactor ((p `plusPtr` 16 :: Ptr BlendFactor))+ dstAlphaBlendFactor <- peek @BlendFactor ((p `plusPtr` 20 :: Ptr BlendFactor))+ alphaBlendOp <- peek @BlendOp ((p `plusPtr` 24 :: Ptr BlendOp))+ colorWriteMask <- peek @ColorComponentFlags ((p `plusPtr` 28 :: Ptr ColorComponentFlags))+ pure $ PipelineColorBlendAttachmentState+ (bool32ToBool blendEnable) srcColorBlendFactor dstColorBlendFactor colorBlendOp srcAlphaBlendFactor dstAlphaBlendFactor alphaBlendOp colorWriteMask++instance Storable PipelineColorBlendAttachmentState where+ sizeOf ~_ = 32+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineColorBlendAttachmentState where+ zero = PipelineColorBlendAttachmentState+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkPipelineColorBlendStateCreateInfo - Structure specifying parameters of+-- a newly created pipeline color blend state+--+-- = Description+--+-- Each element of the @pAttachments@ array is a+-- 'PipelineColorBlendAttachmentState' structure specifying per-target+-- blending state for each individual color attachment. If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-independentBlend independent blending>+-- feature is not enabled on the device, all+-- 'PipelineColorBlendAttachmentState' elements in the @pAttachments@ array+-- /must/ be identical.+--+-- == Valid Usage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-independentBlend independent blending>+-- feature is not enabled, all elements of @pAttachments@ /must/ be+-- identical+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logic operations>+-- feature is not enabled, @logicOpEnable@ /must/ be+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'+--+-- - If @logicOpEnable@ is 'Graphics.Vulkan.Core10.BaseType.TRUE',+-- 'Graphics.Vulkan.Core10.Enums.LogicOp.LogicOp' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.LogicOp.LogicOp' value+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+--+-- - If @attachmentCount@ is not @0@, @pAttachments@ /must/ be a valid+-- pointer to an array of @attachmentCount@ valid+-- 'PipelineColorBlendAttachmentState' structures+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32', 'GraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.LogicOp.LogicOp',+-- 'PipelineColorBlendAttachmentState',+-- 'Graphics.Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlags.PipelineColorBlendStateCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineColorBlendStateCreateInfo (es :: [Type]) = PipelineColorBlendStateCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: PipelineColorBlendStateCreateFlags+ , -- | @logicOpEnable@ controls whether to apply+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-logicop Logical Operations>.+ logicOpEnable :: Bool+ , -- | 'Graphics.Vulkan.Core10.Enums.LogicOp.LogicOp' selects which logical+ -- operation to apply.+ logicOp :: LogicOp+ , -- | @pAttachments@: is a pointer to an array of per target attachment+ -- states.+ attachments :: Vector PipelineColorBlendAttachmentState+ , -- | @blendConstants@ is a pointer to an array of four values used as the R,+ -- G, B, and A components of the blend constant that are used in blending,+ -- depending on the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blendfactors blend factor>.+ blendConstants :: (Float, Float, Float, Float)+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (PipelineColorBlendStateCreateInfo es)++instance Extensible PipelineColorBlendStateCreateInfo where+ extensibleType = STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO+ setNext x next = x{next = next}+ getNext PipelineColorBlendStateCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineColorBlendStateCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @PipelineColorBlendAdvancedStateCreateInfoEXT = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (PipelineColorBlendStateCreateInfo es) where+ withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineColorBlendStateCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr PipelineColorBlendStateCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (logicOpEnable))+ lift $ poke ((p `plusPtr` 24 :: Ptr LogicOp)) (logicOp)+ lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (attachments)) :: Word32))+ pPAttachments' <- ContT $ allocaBytesAligned @PipelineColorBlendAttachmentState ((Data.Vector.length (attachments)) * 32) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAttachments' `plusPtr` (32 * (i)) :: Ptr PipelineColorBlendAttachmentState) (e) . ($ ())) (attachments)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr PipelineColorBlendAttachmentState))) (pPAttachments')+ let pBlendConstants' = lowerArrayPtr ((p `plusPtr` 40 :: Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat)))+ lift $ case (blendConstants) of+ (e0, e1, e2, e3) -> do+ poke (pBlendConstants' :: Ptr CFloat) (CFloat (e0))+ poke (pBlendConstants' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+ poke (pBlendConstants' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))+ poke (pBlendConstants' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))+ lift $ f+ cStructSize = 56+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 24 :: Ptr LogicOp)) (zero)+ pPAttachments' <- ContT $ allocaBytesAligned @PipelineColorBlendAttachmentState ((Data.Vector.length (mempty)) * 32) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAttachments' `plusPtr` (32 * (i)) :: Ptr PipelineColorBlendAttachmentState) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr PipelineColorBlendAttachmentState))) (pPAttachments')+ let pBlendConstants' = lowerArrayPtr ((p `plusPtr` 40 :: Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat)))+ lift $ case ((zero, zero, zero, zero)) of+ (e0, e1, e2, e3) -> do+ poke (pBlendConstants' :: Ptr CFloat) (CFloat (e0))+ poke (pBlendConstants' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+ poke (pBlendConstants' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))+ poke (pBlendConstants' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))+ lift $ f++instance PeekChain es => FromCStruct (PipelineColorBlendStateCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @PipelineColorBlendStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineColorBlendStateCreateFlags))+ logicOpEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ logicOp <- peek @LogicOp ((p `plusPtr` 24 :: Ptr LogicOp))+ attachmentCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+ pAttachments <- peek @(Ptr PipelineColorBlendAttachmentState) ((p `plusPtr` 32 :: Ptr (Ptr PipelineColorBlendAttachmentState)))+ pAttachments' <- generateM (fromIntegral attachmentCount) (\i -> peekCStruct @PipelineColorBlendAttachmentState ((pAttachments `advancePtrBytes` (32 * (i)) :: Ptr PipelineColorBlendAttachmentState)))+ let pblendConstants = lowerArrayPtr @CFloat ((p `plusPtr` 40 :: Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat)))+ blendConstants0 <- peek @CFloat ((pblendConstants `advancePtrBytes` 0 :: Ptr CFloat))+ blendConstants1 <- peek @CFloat ((pblendConstants `advancePtrBytes` 4 :: Ptr CFloat))+ blendConstants2 <- peek @CFloat ((pblendConstants `advancePtrBytes` 8 :: Ptr CFloat))+ blendConstants3 <- peek @CFloat ((pblendConstants `advancePtrBytes` 12 :: Ptr CFloat))+ pure $ PipelineColorBlendStateCreateInfo+ next flags (bool32ToBool logicOpEnable) logicOp pAttachments' ((((\(CFloat a) -> a) blendConstants0), ((\(CFloat a) -> a) blendConstants1), ((\(CFloat a) -> a) blendConstants2), ((\(CFloat a) -> a) blendConstants3)))++instance es ~ '[] => Zero (PipelineColorBlendStateCreateInfo es) where+ zero = PipelineColorBlendStateCreateInfo+ ()+ zero+ zero+ zero+ mempty+ (zero, zero, zero, zero)+++-- | VkPipelineDynamicStateCreateInfo - Structure specifying parameters of a+-- newly created pipeline dynamic state+--+-- == Valid Usage+--+-- - Each element of @pDynamicStates@ /must/ be unique+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO'+--+-- - @pNext@ /must/ be @NULL@+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+--+-- - If @dynamicStateCount@ is not @0@, @pDynamicStates@ /must/ be a+-- valid pointer to an array of @dynamicStateCount@ valid+-- 'Graphics.Vulkan.Core10.Enums.DynamicState.DynamicState' values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.DynamicState.DynamicState',+-- 'GraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags.PipelineDynamicStateCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineDynamicStateCreateInfo = PipelineDynamicStateCreateInfo+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: PipelineDynamicStateCreateFlags+ , -- | @pDynamicStates@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.Enums.DynamicState.DynamicState' values+ -- specifying which pieces of pipeline state will use the values from+ -- dynamic state commands rather than from pipeline state creation info.+ dynamicStates :: Vector DynamicState+ }+ deriving (Typeable)+deriving instance Show PipelineDynamicStateCreateInfo++instance ToCStruct PipelineDynamicStateCreateInfo where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineDynamicStateCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr PipelineDynamicStateCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (dynamicStates)) :: Word32))+ pPDynamicStates' <- ContT $ allocaBytesAligned @DynamicState ((Data.Vector.length (dynamicStates)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPDynamicStates' `plusPtr` (4 * (i)) :: Ptr DynamicState) (e)) (dynamicStates)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DynamicState))) (pPDynamicStates')+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPDynamicStates' <- ContT $ allocaBytesAligned @DynamicState ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPDynamicStates' `plusPtr` (4 * (i)) :: Ptr DynamicState) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DynamicState))) (pPDynamicStates')+ lift $ f++instance FromCStruct PipelineDynamicStateCreateInfo where+ peekCStruct p = do+ flags <- peek @PipelineDynamicStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineDynamicStateCreateFlags))+ dynamicStateCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pDynamicStates <- peek @(Ptr DynamicState) ((p `plusPtr` 24 :: Ptr (Ptr DynamicState)))+ pDynamicStates' <- generateM (fromIntegral dynamicStateCount) (\i -> peek @DynamicState ((pDynamicStates `advancePtrBytes` (4 * (i)) :: Ptr DynamicState)))+ pure $ PipelineDynamicStateCreateInfo+ flags pDynamicStates'++instance Zero PipelineDynamicStateCreateInfo where+ zero = PipelineDynamicStateCreateInfo+ zero+ mempty+++-- | VkStencilOpState - Structure specifying stencil operation state+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.CompareOp.CompareOp',+-- 'PipelineDepthStencilStateCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.StencilOp.StencilOp'+data StencilOpState = StencilOpState+ { -- | @failOp@ /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Enums.StencilOp.StencilOp' value+ failOp :: StencilOp+ , -- | @passOp@ /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Enums.StencilOp.StencilOp' value+ passOp :: StencilOp+ , -- | @depthFailOp@ /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Enums.StencilOp.StencilOp' value+ depthFailOp :: StencilOp+ , -- | 'Graphics.Vulkan.Core10.Enums.CompareOp.CompareOp' /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Enums.CompareOp.CompareOp' value+ compareOp :: CompareOp+ , -- | @compareMask@ selects the bits of the unsigned integer stencil values+ -- participating in the stencil test.+ compareMask :: Word32+ , -- | @writeMask@ selects the bits of the unsigned integer stencil values+ -- updated by the stencil test in the stencil framebuffer attachment.+ writeMask :: Word32+ , -- | @reference@ is an integer reference value that is used in the unsigned+ -- stencil comparison.+ reference :: Word32+ }+ deriving (Typeable)+deriving instance Show StencilOpState++instance ToCStruct StencilOpState where+ withCStruct x f = allocaBytesAligned 28 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p StencilOpState{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StencilOp)) (failOp)+ poke ((p `plusPtr` 4 :: Ptr StencilOp)) (passOp)+ poke ((p `plusPtr` 8 :: Ptr StencilOp)) (depthFailOp)+ poke ((p `plusPtr` 12 :: Ptr CompareOp)) (compareOp)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (compareMask)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (writeMask)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (reference)+ f+ cStructSize = 28+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StencilOp)) (zero)+ poke ((p `plusPtr` 4 :: Ptr StencilOp)) (zero)+ poke ((p `plusPtr` 8 :: Ptr StencilOp)) (zero)+ poke ((p `plusPtr` 12 :: Ptr CompareOp)) (zero)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ f++instance FromCStruct StencilOpState where+ peekCStruct p = do+ failOp <- peek @StencilOp ((p `plusPtr` 0 :: Ptr StencilOp))+ passOp <- peek @StencilOp ((p `plusPtr` 4 :: Ptr StencilOp))+ depthFailOp <- peek @StencilOp ((p `plusPtr` 8 :: Ptr StencilOp))+ compareOp <- peek @CompareOp ((p `plusPtr` 12 :: Ptr CompareOp))+ compareMask <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ writeMask <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ reference <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ pure $ StencilOpState+ failOp passOp depthFailOp compareOp compareMask writeMask reference++instance Storable StencilOpState where+ sizeOf ~_ = 28+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero StencilOpState where+ zero = StencilOpState+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkPipelineDepthStencilStateCreateInfo - Structure specifying parameters+-- of a newly created pipeline depth stencil state+--+-- == Valid Usage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depth bounds testing>+-- feature is not enabled, @depthBoundsTestEnable@ /must/ be+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO'+--+-- - @pNext@ /must/ be @NULL@+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+--+-- - @depthCompareOp@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.CompareOp.CompareOp' value+--+-- - @front@ /must/ be a valid 'StencilOpState' structure+--+-- - @back@ /must/ be a valid 'StencilOpState' structure+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.CompareOp.CompareOp',+-- 'GraphicsPipelineCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlags.PipelineDepthStencilStateCreateFlags',+-- 'StencilOpState',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineDepthStencilStateCreateInfo = PipelineDepthStencilStateCreateInfo+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: PipelineDepthStencilStateCreateFlags+ , -- | @depthTestEnable@ controls whether+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth depth testing>+ -- is enabled.+ depthTestEnable :: Bool+ , -- | @depthWriteEnable@ controls whether+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>+ -- are enabled when @depthTestEnable@ is+ -- 'Graphics.Vulkan.Core10.BaseType.TRUE'. Depth writes are always disabled+ -- when @depthTestEnable@ is 'Graphics.Vulkan.Core10.BaseType.FALSE'.+ depthWriteEnable :: Bool+ , -- | @depthCompareOp@ is the comparison operator used in the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth depth test>.+ depthCompareOp :: CompareOp+ , -- | @depthBoundsTestEnable@ controls whether+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-dbt depth bounds testing>+ -- is enabled.+ depthBoundsTestEnable :: Bool+ , -- | @stencilTestEnable@ controls whether+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil stencil testing>+ -- is enabled.+ stencilTestEnable :: Bool+ , -- | @front@ and @back@ control the parameters of the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil stencil test>.+ front :: StencilOpState+ , -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "back"+ back :: StencilOpState+ , -- | @minDepthBounds@ and @maxDepthBounds@ define the range of values used in+ -- the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-dbt depth bounds test>.+ minDepthBounds :: Float+ , -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "maxDepthBounds"+ maxDepthBounds :: Float+ }+ deriving (Typeable)+deriving instance Show PipelineDepthStencilStateCreateInfo++instance ToCStruct PipelineDepthStencilStateCreateInfo where+ withCStruct x f = allocaBytesAligned 104 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineDepthStencilStateCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr PipelineDepthStencilStateCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (depthTestEnable))+ lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (depthWriteEnable))+ lift $ poke ((p `plusPtr` 28 :: Ptr CompareOp)) (depthCompareOp)+ lift $ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (depthBoundsTestEnable))+ lift $ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (stencilTestEnable))+ ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr StencilOpState)) (front) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 68 :: Ptr StencilOpState)) (back) . ($ ())+ lift $ poke ((p `plusPtr` 96 :: Ptr CFloat)) (CFloat (minDepthBounds))+ lift $ poke ((p `plusPtr` 100 :: Ptr CFloat)) (CFloat (maxDepthBounds))+ lift $ f+ cStructSize = 104+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 28 :: Ptr CompareOp)) (zero)+ lift $ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))+ ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr StencilOpState)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 68 :: Ptr StencilOpState)) (zero) . ($ ())+ lift $ poke ((p `plusPtr` 96 :: Ptr CFloat)) (CFloat (zero))+ lift $ poke ((p `plusPtr` 100 :: Ptr CFloat)) (CFloat (zero))+ lift $ f++instance FromCStruct PipelineDepthStencilStateCreateInfo where+ peekCStruct p = do+ flags <- peek @PipelineDepthStencilStateCreateFlags ((p `plusPtr` 16 :: Ptr PipelineDepthStencilStateCreateFlags))+ depthTestEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ depthWriteEnable <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ depthCompareOp <- peek @CompareOp ((p `plusPtr` 28 :: Ptr CompareOp))+ depthBoundsTestEnable <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))+ stencilTestEnable <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))+ front <- peekCStruct @StencilOpState ((p `plusPtr` 40 :: Ptr StencilOpState))+ back <- peekCStruct @StencilOpState ((p `plusPtr` 68 :: Ptr StencilOpState))+ minDepthBounds <- peek @CFloat ((p `plusPtr` 96 :: Ptr CFloat))+ maxDepthBounds <- peek @CFloat ((p `plusPtr` 100 :: Ptr CFloat))+ pure $ PipelineDepthStencilStateCreateInfo+ flags (bool32ToBool depthTestEnable) (bool32ToBool depthWriteEnable) depthCompareOp (bool32ToBool depthBoundsTestEnable) (bool32ToBool stencilTestEnable) front back ((\(CFloat a) -> a) minDepthBounds) ((\(CFloat a) -> a) maxDepthBounds)++instance Zero PipelineDepthStencilStateCreateInfo where+ zero = PipelineDepthStencilStateCreateInfo+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkGraphicsPipelineCreateInfo - Structure specifying parameters of a+-- newly created graphics pipeline+--+-- = Description+--+-- The parameters @basePipelineHandle@ and @basePipelineIndex@ are+-- described in more detail in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.+--+-- If any shader stage fails to compile, the compile log will be reported+-- back to the application, and+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV' will be+-- generated.+--+-- == Valid Usage+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains the+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+-- flag, and @basePipelineIndex@ is -1, @basePipelineHandle@ /must/ be+-- a valid handle to a graphics+-- 'Graphics.Vulkan.Core10.Handles.Pipeline'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains the+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+-- flag, and @basePipelineHandle@ is+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- @basePipelineIndex@ /must/ be a valid index into the calling+-- command’s @pCreateInfos@ parameter+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains the+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+-- flag, and @basePipelineIndex@ is not -1, @basePipelineHandle@ /must/+-- be 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains the+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+-- flag, and @basePipelineHandle@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- @basePipelineIndex@ /must/ be -1+--+-- - The @stage@ member of each element of @pStages@ /must/ be unique+--+-- - The geometric shader stages provided in @pStages@ /must/ be either+-- from the mesh shading pipeline (@stage@ is+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_NV'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV')+-- or from the primitive shading pipeline (@stage@ is+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT').+--+-- - The @stage@ member of one element of @pStages@ /must/ be either+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'.+--+-- - The @stage@ member of each element of @pStages@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'+--+-- - If @pStages@ includes a tessellation control shader stage, it /must/+-- include a tessellation evaluation shader stage+--+-- - If @pStages@ includes a tessellation evaluation shader stage, it+-- /must/ include a tessellation control shader stage+--+-- - If @pStages@ includes a tessellation control shader stage and a+-- tessellation evaluation shader stage, @pTessellationState@ /must/ be+-- a valid pointer to a valid 'PipelineTessellationStateCreateInfo'+-- structure+--+-- - If @pStages@ includes tessellation shader stages, the shader code of+-- at least one stage /must/ contain an @OpExecutionMode@ instruction+-- that specifies the type of subdivision in the pipeline+--+-- - If @pStages@ includes tessellation shader stages, and the shader+-- code of both stages contain an @OpExecutionMode@ instruction that+-- specifies the type of subdivision in the pipeline, they /must/ both+-- specify the same subdivision mode+--+-- - If @pStages@ includes tessellation shader stages, the shader code of+-- at least one stage /must/ contain an @OpExecutionMode@ instruction+-- that specifies the output patch size in the pipeline+--+-- - If @pStages@ includes tessellation shader stages, and the shader+-- code of both contain an @OpExecutionMode@ instruction that specifies+-- the out patch size in the pipeline, they /must/ both specify the+-- same patch size+--+-- - If @pStages@ includes tessellation shader stages, the @topology@+-- member of @pInputAssembly@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'+--+-- - If the @topology@ member of @pInputAssembly@ is+-- 'Graphics.Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',+-- @pStages@ /must/ include tessellation shader stages+--+-- - If @pStages@ includes a geometry shader stage, and does not include+-- any tessellation shader stages, its shader code /must/ contain an+-- @OpExecutionMode@ instruction that specifies an input primitive type+-- that is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-geometry-execution compatible>+-- with the primitive topology specified in @pInputAssembly@+--+-- - If @pStages@ includes a geometry shader stage, and also includes+-- tessellation shader stages, its shader code /must/ contain an+-- @OpExecutionMode@ instruction that specifies an input primitive type+-- that is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-geometry-execution compatible>+-- with the primitive topology that is output by the tessellation+-- stages+--+-- - If @pStages@ includes a fragment shader stage and a geometry shader+-- stage, and the fragment shader code reads from an input variable+-- that is decorated with @PrimitiveID@, then the geometry shader code+-- /must/ write to a matching output variable, decorated with+-- @PrimitiveID@, in all execution paths+--+-- - If @pStages@ includes a fragment shader stage, its shader code+-- /must/ not read from any input attachment that is defined as+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' in @subpass@+--+-- - The shader code for the entry points identified by @pStages@, and+-- the rest of the state identified by this structure /must/ adhere to+-- the pipeline linking rules described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces Shader Interfaces>+-- chapter+--+-- - If rasterization is not disabled and @subpass@ uses a depth\/stencil+-- attachment in 'Graphics.Vulkan.Core10.Handles.RenderPass' that has a+-- layout of+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'+-- in the 'Graphics.Vulkan.Core10.Pass.AttachmentReference' defined by+-- @subpass@, the @depthWriteEnable@ member of @pDepthStencilState@+-- /must/ be 'Graphics.Vulkan.Core10.BaseType.FALSE'+--+-- - If rasterization is not disabled and @subpass@ uses a depth\/stencil+-- attachment in 'Graphics.Vulkan.Core10.Handles.RenderPass' that has a+-- layout of+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'+-- in the 'Graphics.Vulkan.Core10.Pass.AttachmentReference' defined by+-- @subpass@, the @failOp@, @passOp@ and @depthFailOp@ members of each+-- of the @front@ and @back@ members of @pDepthStencilState@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StencilOp.STENCIL_OP_KEEP'+--+-- - If rasterization is not disabled and the subpass uses color+-- attachments, then for each color attachment in the subpass the+-- @blendEnable@ member of the corresponding element of the+-- @pAttachment@ member of @pColorBlendState@ /must/ be+-- 'Graphics.Vulkan.Core10.BaseType.FALSE' if the attached image’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>+-- does not contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT'.+--+-- - If rasterization is not disabled and the subpass uses color+-- attachments, the @attachmentCount@ member of @pColorBlendState@+-- /must/ be equal to the @colorAttachmentCount@ used to create+-- @subpass@+--+-- - If no element of the @pDynamicStates@ member of @pDynamicState@ is+-- 'Graphics.Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT',+-- the @pViewports@ member of @pViewportState@ /must/ be a valid+-- pointer to an array of @pViewportState->viewportCount@ valid+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Viewport' structures+--+-- - If no element of the @pDynamicStates@ member of @pDynamicState@ is+-- 'Graphics.Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR',+-- the @pScissors@ member of @pViewportState@ /must/ be a valid pointer+-- to an array of @pViewportState->scissorCount@+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D' structures+--+-- - If the wide lines feature is not enabled, and no element of the+-- @pDynamicStates@ member of @pDynamicState@ is+-- 'Graphics.Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH',+-- the @lineWidth@ member of @pRasterizationState@ /must/ be @1.0@+--+-- - If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is+-- 'Graphics.Vulkan.Core10.BaseType.FALSE', @pViewportState@ /must/ be+-- a valid pointer to a valid 'PipelineViewportStateCreateInfo'+-- structure+--+-- - If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is+-- 'Graphics.Vulkan.Core10.BaseType.FALSE', @pMultisampleState@ /must/+-- be a valid pointer to a valid 'PipelineMultisampleStateCreateInfo'+-- structure+--+-- - If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is+-- 'Graphics.Vulkan.Core10.BaseType.FALSE', and @subpass@ uses a+-- depth\/stencil attachment, @pDepthStencilState@ /must/ be a valid+-- pointer to a valid 'PipelineDepthStencilStateCreateInfo' structure+--+-- - If the @rasterizerDiscardEnable@ member of @pRasterizationState@ is+-- 'Graphics.Vulkan.Core10.BaseType.FALSE', and @subpass@ uses color+-- attachments, @pColorBlendState@ /must/ be a valid pointer to a valid+-- 'PipelineColorBlendStateCreateInfo' structure+--+-- - If the depth bias clamping feature is not enabled, no element of the+-- @pDynamicStates@ member of @pDynamicState@ is+-- 'Graphics.Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS',+-- and the @depthBiasEnable@ member of @pRasterizationState@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', the @depthBiasClamp@ member+-- of @pRasterizationState@ /must/ be @0.0@+--+-- - If the+-- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_depth_range_unrestricted@+-- extension is not enabled and no element of the @pDynamicStates@+-- member of @pDynamicState@ is+-- 'Graphics.Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS',+-- and the @depthBoundsTestEnable@ member of @pDepthStencilState@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', the @minDepthBounds@ and+-- @maxDepthBounds@ members of @pDepthStencilState@ /must/ be between+-- @0.0@ and @1.0@, inclusive+--+-- - If no element of the @pDynamicStates@ member of @pDynamicState@ is+-- 'Graphics.Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT',+-- and the @sampleLocationsEnable@ member of a+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'+-- structure included in the @pNext@ chain of @pMultisampleState@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE',+-- @sampleLocationsInfo.sampleLocationGridSize.width@ /must/ evenly+-- divide+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.width@+-- as returned by+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'+-- with a @samples@ parameter equaling @rasterizationSamples@+--+-- - If no element of the @pDynamicStates@ member of @pDynamicState@ is+-- 'Graphics.Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT',+-- and the @sampleLocationsEnable@ member of a+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'+-- structure included in the @pNext@ chain of @pMultisampleState@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE',+-- @sampleLocationsInfo.sampleLocationGridSize.height@ /must/ evenly+-- divide+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT'::@sampleLocationGridSize.height@+-- as returned by+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.getPhysicalDeviceMultisamplePropertiesEXT'+-- with a @samples@ parameter equaling @rasterizationSamples@+--+-- - If no element of the @pDynamicStates@ member of @pDynamicState@ is+-- 'Graphics.Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT',+-- and the @sampleLocationsEnable@ member of a+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'+-- structure included in the @pNext@ chain of @pMultisampleState@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE',+-- @sampleLocationsInfo.sampleLocationsPerPixel@ /must/ equal+-- @rasterizationSamples@+--+-- - If the @sampleLocationsEnable@ member of a+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'+-- structure included in the @pNext@ chain of @pMultisampleState@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', the fragment shader code+-- /must/ not statically use the extended instruction+-- @InterpolateAtSample@+--+-- - @layout@ /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent>+-- with all shaders specified in @pStages@+--+-- - If neither the @VK_AMD_mixed_attachment_samples@ nor the+-- @VK_NV_framebuffer_mixed_samples@ extensions are enabled, and if+-- @subpass@ uses color and\/or depth\/stencil attachments, then the+-- @rasterizationSamples@ member of @pMultisampleState@ /must/ be the+-- same as the sample count for those subpass attachments+--+-- - If the @VK_AMD_mixed_attachment_samples@ extension is enabled, and+-- if @subpass@ uses color and\/or depth\/stencil attachments, then the+-- @rasterizationSamples@ member of @pMultisampleState@ /must/ equal+-- the maximum of the sample counts of those subpass attachments+--+-- - If the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and+-- if @subpass@ has a depth\/stencil attachment and depth test, stencil+-- test, or depth bounds test are enabled, then the+-- @rasterizationSamples@ member of @pMultisampleState@ /must/ be the+-- same as the sample count of the depth\/stencil attachment+--+-- - If the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and+-- if @subpass@ has any color attachments, then the+-- @rasterizationSamples@ member of @pMultisampleState@ /must/ be+-- greater than or equal to the sample count for those subpass+-- attachments+--+-- - If the @VK_NV_coverage_reduction_mode@ extension is enabled, the+-- coverage reduction mode specified by+-- 'Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV'::@coverageReductionMode@,+-- the @rasterizationSamples@ member of @pMultisampleState@ and the+-- sample counts for the color and depth\/stencil attachments (if the+-- subpass has them) /must/ be a valid combination returned by+-- 'Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode.getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'+--+-- - If @subpass@ does not use any color and\/or depth\/stencil+-- attachments, then the @rasterizationSamples@ member of+-- @pMultisampleState@ /must/ follow the rules for a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>+--+-- - @subpass@ /must/ be a valid subpass within+-- 'Graphics.Vulkan.Core10.Handles.RenderPass'+--+-- - If the 'Graphics.Vulkan.Core10.Handles.RenderPass' has multiview+-- enabled and @subpass@ has more than one bit set in the view mask and+-- @multiviewTessellationShader@ is not enabled, then @pStages@ /must/+-- not include tessellation shaders.+--+-- - If the 'Graphics.Vulkan.Core10.Handles.RenderPass' has multiview+-- enabled and @subpass@ has more than one bit set in the view mask and+-- @multiviewGeometryShader@ is not enabled, then @pStages@ /must/ not+-- include a geometry shader.+--+-- - If the 'Graphics.Vulkan.Core10.Handles.RenderPass' has multiview+-- enabled and @subpass@ has more than one bit set in the view mask,+-- shaders in the pipeline /must/ not write to the @Layer@ built-in+-- output+--+-- - If the 'Graphics.Vulkan.Core10.Handles.RenderPass' has multiview+-- enabled, then all shaders /must/ not include variables decorated+-- with the @Layer@ built-in decoration in their interfaces.+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not contain the+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.PIPELINE_CREATE_DISPATCH_BASE'+-- flag.+--+-- - If @pStages@ includes a fragment shader stage and an input+-- attachment was referenced by the+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.RenderPassInputAttachmentAspectCreateInfo'+-- at 'Graphics.Vulkan.Core10.Handles.RenderPass' create time, its+-- shader code /must/ not read from any aspect that was not specified+-- in the @aspectMask@ of the corresponding+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.InputAttachmentAspectReference'+-- structure.+--+-- - The number of resources in @layout@ accessible to each shader stage+-- that is used by the pipeline /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@+--+-- - If no element of the @pDynamicStates@ member of @pDynamicState@ is+-- 'Graphics.Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV',+-- and the @viewportWScalingEnable@ member of a+-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'+-- structure, included in the @pNext@ chain of @pViewportState@, is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', the @pViewportWScalings@+-- member of the+-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'+-- /must/ be a pointer to an array of+-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@+-- valid+-- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.ViewportWScalingNV'+-- structures+--+-- - If @pStages@ includes a vertex shader stage, @pVertexInputState@+-- /must/ be a valid pointer to a valid+-- 'PipelineVertexInputStateCreateInfo' structure+--+-- - If @pStages@ includes a vertex shader stage, @pInputAssemblyState@+-- /must/ be a valid pointer to a valid+-- 'PipelineInputAssemblyStateCreateInfo' structure+--+-- - The @Xfb@ execution mode /can/ be specified by only one shader stage+-- in @pStages@+--+-- - If any shader stage in @pStages@ specifies @Xfb@ execution mode it+-- /must/ be the last vertex processing stage+--+-- - If a+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@+-- value other than zero is specified, all variables in the output+-- interface of the entry point being compiled decorated with+-- @Position@, @PointSize@, @ClipDistance@, or @CullDistance@ /must/+-- all be decorated with identical @Stream@ values that match the+-- @rasterizationStream@+--+-- - If+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@+-- is zero, or not specified, all variables in the output interface of+-- the entry point being compiled decorated with @Position@,+-- @PointSize@, @ClipDistance@, or @CullDistance@ /must/ all be+-- decorated with a @Stream@ value of zero, or /must/ not specify the+-- @Stream@ decoration+--+-- - If the last vertex processing stage is a geometry shader, and that+-- geometry shader uses the @GeometryStreams@ capability, then+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackFeaturesEXT'::@geometryStreams@+-- feature /must/ be enabled+--+-- - If there are any mesh shader stages in the pipeline there /must/ not+-- be any shader stage in the pipeline with a @Xfb@ execution mode.+--+-- - If the @lineRasterizationMode@ member of a+-- 'Graphics.Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT'+-- structure included in the @pNext@ chain of @pRasterizationState@ is+-- 'Graphics.Vulkan.Extensions.VK_EXT_line_rasterization.LINE_RASTERIZATION_MODE_BRESENHAM_EXT'+-- or+-- 'Graphics.Vulkan.Extensions.VK_EXT_line_rasterization.LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT'+-- and if rasterization is enabled, then the @alphaToCoverageEnable@,+-- @alphaToOneEnable@, and @sampleShadingEnable@ members of+-- @pMultisampleState@ /must/ all be+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'+--+-- - If the @stippledLineEnable@ member of+-- 'Graphics.Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT'+-- is 'Graphics.Vulkan.Core10.BaseType.TRUE' and no element of the+-- @pDynamicStates@ member of @pDynamicState@ is+-- 'Graphics.Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_STIPPLE_EXT',+-- then the @lineStippleFactor@ member of+-- 'Graphics.Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT'+-- /must/ be in the range [1,256]+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD',+-- 'Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT',+-- or+-- 'Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+-- values+--+-- - @pStages@ /must/ be a valid pointer to an array of @stageCount@+-- valid 'PipelineShaderStageCreateInfo' structures+--+-- - @pRasterizationState@ /must/ be a valid pointer to a valid+-- 'PipelineRasterizationStateCreateInfo' structure+--+-- - If @pDynamicState@ is not @NULL@, @pDynamicState@ /must/ be a valid+-- pointer to a valid 'PipelineDynamicStateCreateInfo' structure+--+-- - @layout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.RenderPass' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' handle+--+-- - @stageCount@ /must/ be greater than @0@+--+-- - Each of @basePipelineHandle@, @layout@, and+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' that are valid handles+-- of non-ignored parameters /must/ have been created, allocated, or+-- retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Pipeline',+-- 'PipelineColorBlendStateCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',+-- 'PipelineDepthStencilStateCreateInfo', 'PipelineDynamicStateCreateInfo',+-- 'PipelineInputAssemblyStateCreateInfo',+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout',+-- 'PipelineMultisampleStateCreateInfo',+-- 'PipelineRasterizationStateCreateInfo', 'PipelineShaderStageCreateInfo',+-- 'PipelineTessellationStateCreateInfo',+-- 'PipelineVertexInputStateCreateInfo', 'PipelineViewportStateCreateInfo',+-- 'Graphics.Vulkan.Core10.Handles.RenderPass',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createGraphicsPipelines'+data GraphicsPipelineCreateInfo (es :: [Type]) = GraphicsPipelineCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+ -- specifying how the pipeline will be generated.+ flags :: PipelineCreateFlags+ , -- | @pStages@ is a pointer to an array of @stageCount@+ -- 'PipelineShaderStageCreateInfo' structures describing the set of the+ -- shader stages to be included in the graphics pipeline.+ stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)+ , -- | @pVertexInputState@ is a pointer to a+ -- 'PipelineVertexInputStateCreateInfo' structure. It is ignored if the+ -- pipeline includes a mesh shader stage.+ vertexInputState :: Maybe (SomeStruct PipelineVertexInputStateCreateInfo)+ , -- | @pInputAssemblyState@ is a pointer to a+ -- 'PipelineInputAssemblyStateCreateInfo' structure which determines input+ -- assembly behavior, as described in+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing Drawing Commands>.+ -- It is ignored if the pipeline includes a mesh shader stage.+ inputAssemblyState :: Maybe PipelineInputAssemblyStateCreateInfo+ , -- | @pTessellationState@ is a pointer to a+ -- 'PipelineTessellationStateCreateInfo' structure, and is ignored if the+ -- pipeline does not include a tessellation control shader stage and+ -- tessellation evaluation shader stage.+ tessellationState :: Maybe (SomeStruct PipelineTessellationStateCreateInfo)+ , -- | @pViewportState@ is a pointer to a 'PipelineViewportStateCreateInfo'+ -- structure, and is ignored if the pipeline has rasterization disabled.+ viewportState :: Maybe (SomeStruct PipelineViewportStateCreateInfo)+ , -- | @pRasterizationState@ is a pointer to a+ -- 'PipelineRasterizationStateCreateInfo' structure.+ rasterizationState :: SomeStruct PipelineRasterizationStateCreateInfo+ , -- | @pMultisampleState@ is a pointer to a+ -- 'PipelineMultisampleStateCreateInfo' structure, and is ignored if the+ -- pipeline has rasterization disabled.+ multisampleState :: Maybe (SomeStruct PipelineMultisampleStateCreateInfo)+ , -- | @pDepthStencilState@ is a pointer to a+ -- 'PipelineDepthStencilStateCreateInfo' structure, and is ignored if the+ -- pipeline has rasterization disabled or if the subpass of the render pass+ -- the pipeline is created against does not use a depth\/stencil+ -- attachment.+ depthStencilState :: Maybe PipelineDepthStencilStateCreateInfo+ , -- | @pColorBlendState@ is a pointer to a 'PipelineColorBlendStateCreateInfo'+ -- structure, and is ignored if the pipeline has rasterization disabled or+ -- if the subpass of the render pass the pipeline is created against does+ -- not use any color attachments.+ colorBlendState :: Maybe (SomeStruct PipelineColorBlendStateCreateInfo)+ , -- | @pDynamicState@ is a pointer to a 'PipelineDynamicStateCreateInfo'+ -- structure, and is used to indicate which properties of the pipeline+ -- state object are dynamic and /can/ be changed independently of the+ -- pipeline state. This /can/ be @NULL@, which means no state in the+ -- pipeline is considered dynamic.+ dynamicState :: Maybe PipelineDynamicStateCreateInfo+ , -- | @layout@ is the description of binding locations used by both the+ -- pipeline and descriptor sets used with the pipeline.+ layout :: PipelineLayout+ , -- | 'Graphics.Vulkan.Core10.Handles.RenderPass' is a handle to a render pass+ -- object describing the environment in which the pipeline will be used;+ -- the pipeline /must/ only be used with an instance of any render pass+ -- compatible with the one provided. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility Render Pass Compatibility>+ -- for more information.+ renderPass :: RenderPass+ , -- | @subpass@ is the index of the subpass in the render pass where this+ -- pipeline will be used.+ subpass :: Word32+ , -- | @basePipelineHandle@ is a pipeline to derive from.+ basePipelineHandle :: Pipeline+ , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use+ -- as a pipeline to derive from.+ basePipelineIndex :: Int32+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (GraphicsPipelineCreateInfo es)++instance Extensible GraphicsPipelineCreateInfo where+ extensibleType = STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO+ setNext x next = x{next = next}+ getNext GraphicsPipelineCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends GraphicsPipelineCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @PipelineCompilerControlCreateInfoAMD = Just f+ | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfoEXT = Just f+ | Just Refl <- eqT @e @PipelineRepresentativeFragmentTestStateCreateInfoNV = Just f+ | Just Refl <- eqT @e @PipelineDiscardRectangleStateCreateInfoEXT = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (GraphicsPipelineCreateInfo es) where+ withCStruct x f = allocaBytesAligned 144 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p GraphicsPipelineCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (stages)) :: Word32))+ pPStages' <- ContT $ allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (stages)) * 48) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (stages)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')+ pVertexInputState'' <- case (vertexInputState) of+ Nothing -> pure nullPtr+ Just j -> ContT @_ @_ @(Ptr (PipelineVertexInputStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineVertexInputStateCreateInfo (j) (cont . castPtr)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr (PipelineVertexInputStateCreateInfo _)))) pVertexInputState''+ pInputAssemblyState'' <- case (inputAssemblyState) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr PipelineInputAssemblyStateCreateInfo))) pInputAssemblyState''+ pTessellationState'' <- case (tessellationState) of+ Nothing -> pure nullPtr+ Just j -> ContT @_ @_ @(Ptr (PipelineTessellationStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineTessellationStateCreateInfo (j) (cont . castPtr)+ lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr (PipelineTessellationStateCreateInfo _)))) pTessellationState''+ pViewportState'' <- case (viewportState) of+ Nothing -> pure nullPtr+ Just j -> ContT @_ @_ @(Ptr (PipelineViewportStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineViewportStateCreateInfo (j) (cont . castPtr)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (PipelineViewportStateCreateInfo _)))) pViewportState''+ pRasterizationState'' <- ContT @_ @_ @(Ptr (PipelineRasterizationStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineRasterizationStateCreateInfo (rasterizationState) (cont . castPtr)+ lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr (PipelineRasterizationStateCreateInfo _)))) pRasterizationState''+ pMultisampleState'' <- case (multisampleState) of+ Nothing -> pure nullPtr+ Just j -> ContT @_ @_ @(Ptr (PipelineMultisampleStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineMultisampleStateCreateInfo (j) (cont . castPtr)+ lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr (PipelineMultisampleStateCreateInfo _)))) pMultisampleState''+ pDepthStencilState'' <- case (depthStencilState) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ poke ((p `plusPtr` 80 :: Ptr (Ptr PipelineDepthStencilStateCreateInfo))) pDepthStencilState''+ pColorBlendState'' <- case (colorBlendState) of+ Nothing -> pure nullPtr+ Just j -> ContT @_ @_ @(Ptr (PipelineColorBlendStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineColorBlendStateCreateInfo (j) (cont . castPtr)+ lift $ poke ((p `plusPtr` 88 :: Ptr (Ptr (PipelineColorBlendStateCreateInfo _)))) pColorBlendState''+ pDynamicState'' <- case (dynamicState) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ poke ((p `plusPtr` 96 :: Ptr (Ptr PipelineDynamicStateCreateInfo))) pDynamicState''+ lift $ poke ((p `plusPtr` 104 :: Ptr PipelineLayout)) (layout)+ lift $ poke ((p `plusPtr` 112 :: Ptr RenderPass)) (renderPass)+ lift $ poke ((p `plusPtr` 120 :: Ptr Word32)) (subpass)+ lift $ poke ((p `plusPtr` 128 :: Ptr Pipeline)) (basePipelineHandle)+ lift $ poke ((p `plusPtr` 136 :: Ptr Int32)) (basePipelineIndex)+ lift $ f+ cStructSize = 144+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ pPStages' <- ContT $ allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (mempty)) * 48) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')+ pRasterizationState'' <- ContT @_ @_ @(Ptr (PipelineRasterizationStateCreateInfo '[])) $ \cont -> withSomeCStruct @PipelineRasterizationStateCreateInfo ((SomeStruct zero)) (cont . castPtr)+ lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr (PipelineRasterizationStateCreateInfo _)))) pRasterizationState''+ lift $ poke ((p `plusPtr` 104 :: Ptr PipelineLayout)) (zero)+ lift $ poke ((p `plusPtr` 112 :: Ptr RenderPass)) (zero)+ lift $ poke ((p `plusPtr` 120 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 136 :: Ptr Int32)) (zero)+ lift $ f++instance PeekChain es => FromCStruct (GraphicsPipelineCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))+ stageCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo a))))+ pStages' <- generateM (fromIntegral stageCount) (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))+ pVertexInputState <- peek @(Ptr (PipelineVertexInputStateCreateInfo _)) ((p `plusPtr` 32 :: Ptr (Ptr (PipelineVertexInputStateCreateInfo a))))+ pVertexInputState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pVertexInputState+ pInputAssemblyState <- peek @(Ptr PipelineInputAssemblyStateCreateInfo) ((p `plusPtr` 40 :: Ptr (Ptr PipelineInputAssemblyStateCreateInfo)))+ pInputAssemblyState' <- maybePeek (\j -> peekCStruct @PipelineInputAssemblyStateCreateInfo (j)) pInputAssemblyState+ pTessellationState <- peek @(Ptr (PipelineTessellationStateCreateInfo _)) ((p `plusPtr` 48 :: Ptr (Ptr (PipelineTessellationStateCreateInfo a))))+ pTessellationState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pTessellationState+ pViewportState <- peek @(Ptr (PipelineViewportStateCreateInfo _)) ((p `plusPtr` 56 :: Ptr (Ptr (PipelineViewportStateCreateInfo a))))+ pViewportState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pViewportState+ pRasterizationState <- peekSomeCStruct . forgetExtensions =<< peek ((p `plusPtr` 64 :: Ptr (Ptr (PipelineRasterizationStateCreateInfo a))))+ pMultisampleState <- peek @(Ptr (PipelineMultisampleStateCreateInfo _)) ((p `plusPtr` 72 :: Ptr (Ptr (PipelineMultisampleStateCreateInfo a))))+ pMultisampleState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pMultisampleState+ pDepthStencilState <- peek @(Ptr PipelineDepthStencilStateCreateInfo) ((p `plusPtr` 80 :: Ptr (Ptr PipelineDepthStencilStateCreateInfo)))+ pDepthStencilState' <- maybePeek (\j -> peekCStruct @PipelineDepthStencilStateCreateInfo (j)) pDepthStencilState+ pColorBlendState <- peek @(Ptr (PipelineColorBlendStateCreateInfo _)) ((p `plusPtr` 88 :: Ptr (Ptr (PipelineColorBlendStateCreateInfo a))))+ pColorBlendState' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pColorBlendState+ pDynamicState <- peek @(Ptr PipelineDynamicStateCreateInfo) ((p `plusPtr` 96 :: Ptr (Ptr PipelineDynamicStateCreateInfo)))+ pDynamicState' <- maybePeek (\j -> peekCStruct @PipelineDynamicStateCreateInfo (j)) pDynamicState+ layout <- peek @PipelineLayout ((p `plusPtr` 104 :: Ptr PipelineLayout))+ renderPass <- peek @RenderPass ((p `plusPtr` 112 :: Ptr RenderPass))+ subpass <- peek @Word32 ((p `plusPtr` 120 :: Ptr Word32))+ basePipelineHandle <- peek @Pipeline ((p `plusPtr` 128 :: Ptr Pipeline))+ basePipelineIndex <- peek @Int32 ((p `plusPtr` 136 :: Ptr Int32))+ pure $ GraphicsPipelineCreateInfo+ next flags pStages' pVertexInputState' pInputAssemblyState' pTessellationState' pViewportState' pRasterizationState pMultisampleState' pDepthStencilState' pColorBlendState' pDynamicState' layout renderPass subpass basePipelineHandle basePipelineIndex++instance es ~ '[] => Zero (GraphicsPipelineCreateInfo es) where+ zero = GraphicsPipelineCreateInfo+ ()+ zero+ mempty+ Nothing+ Nothing+ Nothing+ Nothing+ (SomeStruct zero)+ Nothing+ Nothing+ Nothing+ Nothing+ zero+ zero+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core10/Pipeline.hs-boot view
@@ -0,0 +1,179 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Pipeline ( ComputePipelineCreateInfo+ , GraphicsPipelineCreateInfo+ , PipelineColorBlendAttachmentState+ , PipelineColorBlendStateCreateInfo+ , PipelineDepthStencilStateCreateInfo+ , PipelineDynamicStateCreateInfo+ , PipelineInputAssemblyStateCreateInfo+ , PipelineMultisampleStateCreateInfo+ , PipelineRasterizationStateCreateInfo+ , PipelineShaderStageCreateInfo+ , PipelineTessellationStateCreateInfo+ , PipelineVertexInputStateCreateInfo+ , PipelineViewportStateCreateInfo+ , SpecializationInfo+ , SpecializationMapEntry+ , StencilOpState+ , VertexInputAttributeDescription+ , VertexInputBindingDescription+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+type role ComputePipelineCreateInfo nominal+data ComputePipelineCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (ComputePipelineCreateInfo es)+instance Show (Chain es) => Show (ComputePipelineCreateInfo es)++instance PeekChain es => FromCStruct (ComputePipelineCreateInfo es)+++type role GraphicsPipelineCreateInfo nominal+data GraphicsPipelineCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (GraphicsPipelineCreateInfo es)+instance Show (Chain es) => Show (GraphicsPipelineCreateInfo es)++instance PeekChain es => FromCStruct (GraphicsPipelineCreateInfo es)+++data PipelineColorBlendAttachmentState++instance ToCStruct PipelineColorBlendAttachmentState+instance Show PipelineColorBlendAttachmentState++instance FromCStruct PipelineColorBlendAttachmentState+++type role PipelineColorBlendStateCreateInfo nominal+data PipelineColorBlendStateCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (PipelineColorBlendStateCreateInfo es)+instance Show (Chain es) => Show (PipelineColorBlendStateCreateInfo es)++instance PeekChain es => FromCStruct (PipelineColorBlendStateCreateInfo es)+++data PipelineDepthStencilStateCreateInfo++instance ToCStruct PipelineDepthStencilStateCreateInfo+instance Show PipelineDepthStencilStateCreateInfo++instance FromCStruct PipelineDepthStencilStateCreateInfo+++data PipelineDynamicStateCreateInfo++instance ToCStruct PipelineDynamicStateCreateInfo+instance Show PipelineDynamicStateCreateInfo++instance FromCStruct PipelineDynamicStateCreateInfo+++data PipelineInputAssemblyStateCreateInfo++instance ToCStruct PipelineInputAssemblyStateCreateInfo+instance Show PipelineInputAssemblyStateCreateInfo++instance FromCStruct PipelineInputAssemblyStateCreateInfo+++type role PipelineMultisampleStateCreateInfo nominal+data PipelineMultisampleStateCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (PipelineMultisampleStateCreateInfo es)+instance Show (Chain es) => Show (PipelineMultisampleStateCreateInfo es)++instance PeekChain es => FromCStruct (PipelineMultisampleStateCreateInfo es)+++type role PipelineRasterizationStateCreateInfo nominal+data PipelineRasterizationStateCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (PipelineRasterizationStateCreateInfo es)+instance Show (Chain es) => Show (PipelineRasterizationStateCreateInfo es)++instance PeekChain es => FromCStruct (PipelineRasterizationStateCreateInfo es)+++type role PipelineShaderStageCreateInfo nominal+data PipelineShaderStageCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (PipelineShaderStageCreateInfo es)+instance Show (Chain es) => Show (PipelineShaderStageCreateInfo es)++instance PeekChain es => FromCStruct (PipelineShaderStageCreateInfo es)+++type role PipelineTessellationStateCreateInfo nominal+data PipelineTessellationStateCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (PipelineTessellationStateCreateInfo es)+instance Show (Chain es) => Show (PipelineTessellationStateCreateInfo es)++instance PeekChain es => FromCStruct (PipelineTessellationStateCreateInfo es)+++type role PipelineVertexInputStateCreateInfo nominal+data PipelineVertexInputStateCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (PipelineVertexInputStateCreateInfo es)+instance Show (Chain es) => Show (PipelineVertexInputStateCreateInfo es)++instance PeekChain es => FromCStruct (PipelineVertexInputStateCreateInfo es)+++type role PipelineViewportStateCreateInfo nominal+data PipelineViewportStateCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (PipelineViewportStateCreateInfo es)+instance Show (Chain es) => Show (PipelineViewportStateCreateInfo es)++instance PeekChain es => FromCStruct (PipelineViewportStateCreateInfo es)+++data SpecializationInfo++instance ToCStruct SpecializationInfo+instance Show SpecializationInfo++instance FromCStruct SpecializationInfo+++data SpecializationMapEntry++instance ToCStruct SpecializationMapEntry+instance Show SpecializationMapEntry++instance FromCStruct SpecializationMapEntry+++data StencilOpState++instance ToCStruct StencilOpState+instance Show StencilOpState++instance FromCStruct StencilOpState+++data VertexInputAttributeDescription++instance ToCStruct VertexInputAttributeDescription+instance Show VertexInputAttributeDescription++instance FromCStruct VertexInputAttributeDescription+++data VertexInputBindingDescription++instance ToCStruct VertexInputBindingDescription+instance Show VertexInputBindingDescription++instance FromCStruct VertexInputBindingDescription+
src/Graphics/Vulkan/Core10/PipelineCache.hs view
@@ -1,251 +1,268 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.PipelineCache- ( VkPipelineCacheCreateFlags(..)- , VkPipelineCache- , vkCreatePipelineCache- , vkDestroyPipelineCache- , vkGetPipelineCacheData- , vkMergePipelineCaches- , VkPipelineCacheCreateInfo(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Word- ( Word32- )-import Foreign.C.Types- ( CSize(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- )----- ** VkPipelineCacheCreateFlags---- | VkPipelineCacheCreateFlags - Reserved for future use------ = Description------ @VkPipelineCacheCreateFlags@ is a bitmask type for setting a mask, but--- is currently reserved for future use.------ = See Also------ 'VkPipelineCacheCreateInfo'-newtype VkPipelineCacheCreateFlags = VkPipelineCacheCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineCacheCreateFlags where- - showsPrec p (VkPipelineCacheCreateFlags x) = showParen (p >= 11) (showString "VkPipelineCacheCreateFlags " . showsPrec 11 x)--instance Read VkPipelineCacheCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineCacheCreateFlags")- v <- step readPrec- pure (VkPipelineCacheCreateFlags v)- )- )+module Graphics.Vulkan.Core10.PipelineCache ( createPipelineCache+ , withPipelineCache+ , destroyPipelineCache+ , getPipelineCacheData+ , mergePipelineCaches+ , PipelineCacheCreateInfo(..)+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.ByteString (packCStringLen)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.C.Types (CSize)+import Foreign.C.Types (CSize(..))+import Foreign.C.Types (CSize(CSize))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Word (Word64)+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreatePipelineCache))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyPipelineCache))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetPipelineCacheData))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkMergePipelineCaches))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (PipelineCache)+import Graphics.Vulkan.Core10.Handles (PipelineCache(..))+import Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlags (PipelineCacheCreateFlags)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreatePipelineCache+ :: FunPtr (Ptr Device_T -> Ptr PipelineCacheCreateInfo -> Ptr AllocationCallbacks -> Ptr PipelineCache -> IO Result) -> Ptr Device_T -> Ptr PipelineCacheCreateInfo -> Ptr AllocationCallbacks -> Ptr PipelineCache -> IO Result --- | Dummy data to tag the 'Ptr' with-data VkPipelineCache_T--- | VkPipelineCache - Opaque handle to a pipeline cache object------ = See Also------ 'Graphics.Vulkan.Core10.Pipeline.vkCreateComputePipelines',--- 'Graphics.Vulkan.Core10.Pipeline.vkCreateGraphicsPipelines',--- 'vkCreatePipelineCache', 'vkDestroyPipelineCache',--- 'vkGetPipelineCacheData', 'vkMergePipelineCaches'-type VkPipelineCache = Ptr VkPipelineCache_T -- | vkCreatePipelineCache - Creates a new pipeline cache -- -- = Parameters ----- - @device@ is the logical device that creates the pipeline cache--- object.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the pipeline cache object. ----- - @pCreateInfo@ is a pointer to a @VkPipelineCacheCreateInfo@--- structure that contains the initial parameters for the pipeline--- cache object.+-- - @pCreateInfo@ is a pointer to a 'PipelineCacheCreateInfo' structure+-- containing initial parameters for the pipeline cache object. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. ----- - @pPipelineCache@ is a pointer to a @VkPipelineCache@ handle in which--- the resulting pipeline cache object is returned.+-- - @pPipelineCache@ is a pointer to a+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache' handle in which the+-- resulting pipeline cache object is returned. -- -- = Description ----- __Note__+-- Note -- -- Applications /can/ track and manage the total host memory size of a -- pipeline cache object using the @pAllocator@. Applications /can/ limit -- the amount of data retrieved from a pipeline cache object in--- @vkGetPipelineCacheData@. Implementations /should/ not internally limit+-- 'getPipelineCacheData'. Implementations /should/ not internally limit -- the total number of entries added to a pipeline cache object or the -- total host memory consumed. -- -- Once created, a pipeline cache /can/ be passed to the--- @vkCreateGraphicsPipelines@ and @vkCreateComputePipelines@ commands. If+-- 'Graphics.Vulkan.Core10.Pipeline.createGraphicsPipelines' and+-- 'Graphics.Vulkan.Core10.Pipeline.createComputePipelines' commands. If -- the pipeline cache passed into these commands is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', the implementation+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', the implementation -- will query it for possible reuse opportunities and update it with new -- content. The use of the pipeline cache object in these commands is -- internally synchronized, and the same pipeline cache object /can/ be -- used in multiple threads simultaneously. ----- __Note__+-- Note -- -- Implementations /should/ make every effort to limit any critical -- sections to the actual accesses to the cache, which is expected to be -- significantly shorter than the duration of the--- @vkCreateGraphicsPipelines@ and @vkCreateComputePipelines@ commands.+-- 'Graphics.Vulkan.Core10.Pipeline.createGraphicsPipelines' and+-- 'Graphics.Vulkan.Core10.Pipeline.createComputePipelines' commands. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle -- -- - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkPipelineCacheCreateInfo@ structure+-- 'PipelineCacheCreateInfo' structure -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - @pPipelineCache@ /must/ be a valid pointer to a @VkPipelineCache@--- handle+-- - @pPipelineCache@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache' handle -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkPipelineCache', 'VkPipelineCacheCreateInfo'+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache',+-- 'PipelineCacheCreateInfo'+createPipelineCache :: Device -> PipelineCacheCreateInfo -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (PipelineCache)+createPipelineCache device createInfo allocator = evalContT $ do+ let vkCreatePipelineCache' = mkVkCreatePipelineCache (pVkCreatePipelineCache (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPPipelineCache <- ContT $ bracket (callocBytes @PipelineCache 8) free+ r <- lift $ vkCreatePipelineCache' (deviceHandle (device)) pCreateInfo pAllocator (pPPipelineCache)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pPipelineCache <- lift $ peek @PipelineCache pPPipelineCache+ pure $ (pPipelineCache)++-- | A safe wrapper for 'createPipelineCache' and 'destroyPipelineCache'+-- using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withPipelineCache :: Device -> PipelineCacheCreateInfo -> Maybe AllocationCallbacks -> (PipelineCache -> IO r) -> IO r+withPipelineCache device pipelineCacheCreateInfo allocationCallbacks =+ bracket+ (createPipelineCache device pipelineCacheCreateInfo allocationCallbacks)+ (\o -> destroyPipelineCache device o allocationCallbacks)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkCreatePipelineCache" vkCreatePipelineCache :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineCacheCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineCache" ::: Ptr VkPipelineCache) -> IO VkResult+ "dynamic" mkVkDestroyPipelineCache+ :: FunPtr (Ptr Device_T -> PipelineCache -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> PipelineCache -> Ptr AllocationCallbacks -> IO ()+ -- | vkDestroyPipelineCache - Destroy a pipeline cache object -- -- = Parameters ----- - @device@ is the logical device that destroys the pipeline cache--- object.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the pipeline cache object. ----- - @pipelineCache@ is the handle of the pipeline cache to destroy.+-- - 'Graphics.Vulkan.Core10.Handles.PipelineCache' is the handle of the+-- pipeline cache to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. -- -- == Valid Usage ----- - If @VkAllocationCallbacks@ were provided when @pipelineCache@ was--- created, a compatible set of callbacks /must/ be provided here+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.PipelineCache'+-- was created, a compatible set of callbacks /must/ be provided here ----- - If no @VkAllocationCallbacks@ were provided when @pipelineCache@ was--- created, @pAllocator@ /must/ be @NULL@+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.PipelineCache'+-- was created, @pAllocator@ /must/ be @NULL@ -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - If @pipelineCache@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @pipelineCache@--- /must/ be a valid @VkPipelineCache@ handle+-- - If 'Graphics.Vulkan.Core10.Handles.PipelineCache' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache' handle -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - If @pipelineCache@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@+-- - If 'Graphics.Vulkan.Core10.Handles.PipelineCache' is a valid handle,+-- it /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization ----- - Host access to @pipelineCache@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.PipelineCache' /must/+-- be externally synchronized -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkPipelineCache'+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache'+destroyPipelineCache :: Device -> PipelineCache -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyPipelineCache device pipelineCache allocator = evalContT $ do+ let vkDestroyPipelineCache' = mkVkDestroyPipelineCache (pVkDestroyPipelineCache (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyPipelineCache' (deviceHandle (device)) (pipelineCache) pAllocator+ pure $ ()++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkDestroyPipelineCache" vkDestroyPipelineCache :: ("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()+ "dynamic" mkVkGetPipelineCacheData+ :: FunPtr (Ptr Device_T -> PipelineCache -> Ptr CSize -> Ptr () -> IO Result) -> Ptr Device_T -> PipelineCache -> Ptr CSize -> Ptr () -> IO Result+ -- | vkGetPipelineCacheData - Get the data store from a pipeline cache -- -- = Parameters ----- - @device@ is the logical device that owns the pipeline cache.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the pipeline cache. ----- - @pipelineCache@ is the pipeline cache to retrieve data from.+-- - 'Graphics.Vulkan.Core10.Handles.PipelineCache' is the pipeline cache+-- to retrieve data from. ----- - @pDataSize@ is a pointer to a value related to the amount of data in--- the pipeline cache, as described below.+-- - @pDataSize@ is a pointer to a @size_t@ value related to the amount+-- of data in the pipeline cache, as described below. -- -- - @pData@ is either @NULL@ or a pointer to a buffer. --@@ -260,12 +277,12 @@ -- -- If @pDataSize@ is less than the maximum size that /can/ be retrieved by -- the pipeline cache, at most @pDataSize@ bytes will be written to--- @pData@, and @vkGetPipelineCacheData@ will return @VK_INCOMPLETE@. Any--- data written to @pData@ is valid and /can/ be provided as the--- @pInitialData@ member of the @VkPipelineCacheCreateInfo@ structure--- passed to @vkCreatePipelineCache@.+-- @pData@, and 'getPipelineCacheData' will return+-- 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'. Any data written to+-- @pData@ is valid and /can/ be provided as the @pInitialData@ member of+-- the 'PipelineCacheCreateInfo' structure passed to 'createPipelineCache'. ----- Two calls to @vkGetPipelineCacheData@ with the same parameters /must/+-- Two calls to 'getPipelineCacheData' with the same parameters /must/ -- retrieve the same data unless a command that modifies the contents of -- the cache is called between them. --@@ -278,39 +295,37 @@ -- written to @pData@ /must/ be a header consisting of the following -- members: ----- +--------+----------------+-----------------------------------------------------------------+--- | Offset | Size | Meaning |--- +========+================+=================================================================+--- | 0 | 4 | length in bytes of the entire pipeline cache header written as |--- | | | a stream of bytes, with the least significant byte first |--- +--------+----------------+-----------------------------------------------------------------+--- | 4 | 4 | a |--- | | | 'Graphics.Vulkan.Core10.Constants.VkPipelineCacheHeaderVersion' |--- | | | value written as a stream of bytes, with the least significant |--- | | | byte first |--- +--------+----------------+-----------------------------------------------------------------+--- | 8 | 4 | a vendor ID equal to @VkPhysicalDeviceProperties@::@vendorID@ |--- | | | written as a stream of bytes, with the least significant byte |--- | | | first |--- +--------+----------------+-----------------------------------------------------------------+--- | 12 | 4 | a device ID equal to @VkPhysicalDeviceProperties@::@deviceID@ |--- | | | written as a stream of bytes, with the least significant byte |--- | | | first |--- +--------+----------------+-----------------------------------------------------------------+--- | 16 | @VK_UUID_SIZE@ | a pipeline cache ID equal to |--- | | | @VkPhysicalDeviceProperties@::@pipelineCacheUUID@ |--- +--------+----------------+-----------------------------------------------------------------++-- +--------+-------------------------------------------------+---------------------------------------------------------------------------------------------++-- | Offset | Size | Meaning |+-- +========+=================================================+=============================================================================================++-- | 0 | 4 | length in bytes of the entire pipeline cache header written as a stream of bytes, with the |+-- | | | least significant byte first |+-- +--------+-------------------------------------------------+---------------------------------------------------------------------------------------------++-- | 4 | 4 | a 'Graphics.Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PipelineCacheHeaderVersion' |+-- | | | value written as a stream of bytes, with the least significant byte first |+-- +--------+-------------------------------------------------+---------------------------------------------------------------------------------------------++-- | 8 | 4 | a vendor ID equal to |+-- | | | 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@vendorID@ written |+-- | | | as a stream of bytes, with the least significant byte first |+-- +--------+-------------------------------------------------+---------------------------------------------------------------------------------------------++-- | 12 | 4 | a device ID equal to |+-- | | | 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@deviceID@ written |+-- | | | as a stream of bytes, with the least significant byte first |+-- +--------+-------------------------------------------------+---------------------------------------------------------------------------------------------++-- | 16 | 'Graphics.Vulkan.Core10.APIConstants.UUID_SIZE' | a pipeline cache ID equal to |+-- | | | 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'::@pipelineCacheUUID@ |+-- +--------+-------------------------------------------------+---------------------------------------------------------------------------------------------+ -- -- Layout for pipeline cache header version--- @VK_PIPELINE_CACHE_HEADER_VERSION_ONE@+-- 'Graphics.Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PIPELINE_CACHE_HEADER_VERSION_ONE' -- -- The first four bytes encode the length of the entire pipeline cache -- header, in bytes. This value includes all fields in the header including -- the pipeline cache version field and the size of the length field. -- -- The next four bytes encode the pipeline cache version, as described for--- 'Graphics.Vulkan.Core10.Constants.VkPipelineCacheHeaderVersion'. A--- consumer of the pipeline cache /should/ use the cache version to+-- 'Graphics.Vulkan.Core10.Enums.PipelineCacheHeaderVersion.PipelineCacheHeaderVersion'.+-- A consumer of the pipeline cache /should/ use the cache version to -- interpret the remainder of the cache header. -- -- If @pDataSize@ is less than what is necessary to store this header,@@ -319,9 +334,11 @@ -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - @pipelineCache@ /must/ be a valid @VkPipelineCache@ handle+-- - 'Graphics.Vulkan.Core10.Handles.PipelineCache' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache' handle -- -- - @pDataSize@ /must/ be a valid pointer to a @size_t@ value --@@ -329,48 +346,70 @@ -- not @NULL@, @pData@ /must/ be a valid pointer to an array of -- @pDataSize@ bytes ----- - @pipelineCache@ /must/ have been created, allocated, or retrieved--- from @device@+-- - 'Graphics.Vulkan.Core10.Handles.PipelineCache' /must/ have been+-- created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- - @VK_INCOMPLETE@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkPipelineCache'+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache'+getPipelineCacheData :: Device -> PipelineCache -> IO (Result, ("data" ::: ByteString))+getPipelineCacheData device pipelineCache = evalContT $ do+ let vkGetPipelineCacheData' = mkVkGetPipelineCacheData (pVkGetPipelineCacheData (deviceCmds (device :: Device)))+ let device' = deviceHandle (device)+ pPDataSize <- ContT $ bracket (callocBytes @CSize 8) free+ r <- lift $ vkGetPipelineCacheData' device' (pipelineCache) (pPDataSize) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pDataSize <- lift $ peek @CSize pPDataSize+ pPData <- ContT $ bracket (callocBytes @(()) (fromIntegral (((\(CSize a) -> a) pDataSize)))) free+ r' <- lift $ vkGetPipelineCacheData' device' (pipelineCache) (pPDataSize) (pPData)+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pDataSize'' <- lift $ peek @CSize pPDataSize+ pData' <- lift $ packCStringLen (castPtr @() @CChar pPData, (fromIntegral (((\(CSize a) -> a) pDataSize''))))+ pure $ ((r'), pData')++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkGetPipelineCacheData" vkGetPipelineCacheData :: ("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult+ "dynamic" mkVkMergePipelineCaches+ :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr PipelineCache -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr PipelineCache -> IO Result+ -- | vkMergePipelineCaches - Combine the data stores of pipeline caches -- -- = Parameters ----- - @device@ is the logical device that owns the pipeline cache objects.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the pipeline cache objects. -- -- - @dstCache@ is the handle of the pipeline cache to merge results -- into. -- -- - @srcCacheCount@ is the length of the @pSrcCaches@ array. ----- - @pSrcCaches@ is an array of pipeline cache handles, which will be--- merged into @dstCache@. The previous contents of @dstCache@ are--- included after the merge.+-- - @pSrcCaches@ is a pointer to an array of pipeline cache handles,+-- which will be merged into @dstCache@. The previous contents of+-- @dstCache@ are included after the merge. -- -- = Description ----- __Note__+-- Note -- -- The details of the merge operation are implementation dependent, but -- implementations /should/ merge the contents of the specified pipelines@@ -382,20 +421,23 @@ -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - @dstCache@ /must/ be a valid @VkPipelineCache@ handle+-- - @dstCache@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache' handle -- -- - @pSrcCaches@ /must/ be a valid pointer to an array of--- @srcCacheCount@ valid @VkPipelineCache@ handles+-- @srcCacheCount@ valid 'Graphics.Vulkan.Core10.Handles.PipelineCache'+-- handles -- -- - @srcCacheCount@ /must/ be greater than @0@ -- -- - @dstCache@ /must/ have been created, allocated, or retrieved from--- @device@+-- 'Graphics.Vulkan.Core10.Handles.Device' -- -- - Each element of @pSrcCaches@ /must/ have been created, allocated, or--- retrieved from @device@+-- retrieved from 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization --@@ -403,78 +445,107 @@ -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkPipelineCache'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkMergePipelineCaches" vkMergePipelineCaches :: ("device" ::: VkDevice) -> ("dstCache" ::: VkPipelineCache) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkPipelineCache) -> IO VkResult+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache'+mergePipelineCaches :: Device -> ("dstCache" ::: PipelineCache) -> ("srcCaches" ::: Vector PipelineCache) -> IO ()+mergePipelineCaches device dstCache srcCaches = evalContT $ do+ let vkMergePipelineCaches' = mkVkMergePipelineCaches (pVkMergePipelineCaches (deviceCmds (device :: Device)))+ pPSrcCaches <- ContT $ allocaBytesAligned @PipelineCache ((Data.Vector.length (srcCaches)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPSrcCaches `plusPtr` (8 * (i)) :: Ptr PipelineCache) (e)) (srcCaches)+ r <- lift $ vkMergePipelineCaches' (deviceHandle (device)) (dstCache) ((fromIntegral (Data.Vector.length $ (srcCaches)) :: Word32)) (pPSrcCaches)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))++ -- | VkPipelineCacheCreateInfo - Structure specifying parameters of a newly -- created pipeline cache -- -- == Valid Usage -- -- - If @initialDataSize@ is not @0@, it /must/ be equal to the size of--- @pInitialData@, as returned by @vkGetPipelineCacheData@ when+-- @pInitialData@, as returned by 'getPipelineCacheData' when -- @pInitialData@ was originally retrieved -- -- - If @initialDataSize@ is not @0@, @pInitialData@ /must/ have been--- retrieved from a previous call to @vkGetPipelineCacheData@+-- retrieved from a previous call to 'getPipelineCacheData' -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO@+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO' -- -- - @pNext@ /must/ be @NULL@ ----- - @flags@ /must/ be @0@+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@ -- -- - If @initialDataSize@ is not @0@, @pInitialData@ /must/ be a valid -- pointer to an array of @initialDataSize@ bytes -- -- = See Also ----- 'VkPipelineCacheCreateFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreatePipelineCache'-data VkPipelineCacheCreateInfo = VkPipelineCacheCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkPipelineCacheCreateFlags+-- 'Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlags.PipelineCacheCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createPipelineCache'+data PipelineCacheCreateInfo = PipelineCacheCreateInfo+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: PipelineCacheCreateFlags , -- | @initialDataSize@ is the number of bytes in @pInitialData@. If- -- @initialDataSize@ is zero, the pipeline cache will initially be empty.- vkInitialDataSize :: CSize+ -- @initialDataSize@ is zero, the pipeline cache will initially be empty.+ initialDataSize :: Word64 , -- | @pInitialData@ is a pointer to previously retrieved pipeline cache data.- -- If the pipeline cache data is incompatible (as defined below) with the- -- device, the pipeline cache will be initially empty. If @initialDataSize@- -- is zero, @pInitialData@ is ignored.- vkPInitialData :: Ptr ()+ -- If the pipeline cache data is incompatible (as defined below) with the+ -- device, the pipeline cache will be initially empty. If @initialDataSize@+ -- is zero, @pInitialData@ is ignored.+ initialData :: Ptr () }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show PipelineCacheCreateInfo -instance Storable VkPipelineCacheCreateInfo where+instance ToCStruct PipelineCacheCreateInfo where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineCacheCreateInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr PipelineCacheCreateFlags)) (flags)+ poke ((p `plusPtr` 24 :: Ptr CSize)) (CSize (initialDataSize))+ poke ((p `plusPtr` 32 :: Ptr (Ptr ()))) (initialData)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 32 :: Ptr (Ptr ()))) (zero)+ f++instance FromCStruct PipelineCacheCreateInfo where+ peekCStruct p = do+ flags <- peek @PipelineCacheCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCacheCreateFlags))+ initialDataSize <- peek @CSize ((p `plusPtr` 24 :: Ptr CSize))+ pInitialData <- peek @(Ptr ()) ((p `plusPtr` 32 :: Ptr (Ptr ())))+ pure $ PipelineCacheCreateInfo+ flags ((\(CSize a) -> a) initialDataSize) pInitialData++instance Storable PipelineCacheCreateInfo where sizeOf ~_ = 40 alignment ~_ = 8- peek ptr = VkPipelineCacheCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineCacheCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineCacheCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineCacheCreateInfo))- *> poke (ptr `plusPtr` 24) (vkInitialDataSize (poked :: VkPipelineCacheCreateInfo))- *> poke (ptr `plusPtr` 32) (vkPInitialData (poked :: VkPipelineCacheCreateInfo))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineCacheCreateInfo where+ zero = PipelineCacheCreateInfo+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core10/PipelineCache.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.PipelineCache (PipelineCacheCreateInfo) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PipelineCacheCreateInfo++instance ToCStruct PipelineCacheCreateInfo+instance Show PipelineCacheCreateInfo++instance FromCStruct PipelineCacheCreateInfo+
src/Graphics/Vulkan/Core10/PipelineLayout.hs view
@@ -1,601 +1,687 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.PipelineLayout- ( VkPipelineLayoutCreateFlags(..)- , VkDescriptorSetLayout- , vkCreatePipelineLayout- , vkDestroyPipelineLayout- , VkPushConstantRange(..)- , VkPipelineLayoutCreateInfo(..)- , VkShaderStageFlags- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- )-import Graphics.Vulkan.Core10.Pipeline- ( VkShaderStageFlagBits(..)- , VkPipelineLayout- )----- ** VkPipelineLayoutCreateFlags---- | VkPipelineLayoutCreateFlags - Reserved for future use------ = Description------ @VkPipelineLayoutCreateFlags@ is a bitmask type for setting a mask, but--- is currently reserved for future use.------ = See Also------ 'VkPipelineLayoutCreateInfo'-newtype VkPipelineLayoutCreateFlags = VkPipelineLayoutCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineLayoutCreateFlags where- - showsPrec p (VkPipelineLayoutCreateFlags x) = showParen (p >= 11) (showString "VkPipelineLayoutCreateFlags " . showsPrec 11 x)--instance Read VkPipelineLayoutCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineLayoutCreateFlags")- v <- step readPrec- pure (VkPipelineLayoutCreateFlags v)- )- )+module Graphics.Vulkan.Core10.PipelineLayout ( createPipelineLayout+ , withPipelineLayout+ , destroyPipelineLayout+ , PushConstantRange(..)+ , PipelineLayoutCreateInfo(..)+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.Handles (DescriptorSetLayout)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreatePipelineLayout))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyPipelineLayout))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (PipelineLayout)+import Graphics.Vulkan.Core10.Handles (PipelineLayout(..))+import Graphics.Vulkan.Core10.Enums.PipelineLayoutCreateFlags (PipelineLayoutCreateFlags)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreatePipelineLayout+ :: FunPtr (Ptr Device_T -> Ptr PipelineLayoutCreateInfo -> Ptr AllocationCallbacks -> Ptr PipelineLayout -> IO Result) -> Ptr Device_T -> Ptr PipelineLayoutCreateInfo -> Ptr AllocationCallbacks -> Ptr PipelineLayout -> IO Result --- | Dummy data to tag the 'Ptr' with-data VkDescriptorSetLayout_T--- | VkDescriptorSetLayout - Opaque handle to a descriptor set layout object------ = See Also------ 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetAllocateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.VkDescriptorUpdateTemplateCreateInfo',--- 'VkPipelineLayoutCreateInfo',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkCreateDescriptorSetLayout',--- 'Graphics.Vulkan.Core10.DescriptorSet.vkDestroyDescriptorSetLayout'-type VkDescriptorSetLayout = Ptr VkDescriptorSetLayout_T -- | vkCreatePipelineLayout - Creates a new pipeline layout object -- -- = Parameters ----- - @device@ is the logical device that creates the pipeline layout.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the pipeline layout. ----- - @pCreateInfo@ is a pointer to an instance of the--- 'VkPipelineLayoutCreateInfo' structure specifying the state of the--- pipeline layout object.+-- - @pCreateInfo@ is a pointer to a 'PipelineLayoutCreateInfo' structure+-- specifying the state of the pipeline layout object. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. ----- - @pPipelineLayout@ points to a @VkPipelineLayout@ handle in which the+-- - @pPipelineLayout@ is a pointer to a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' handle in which the -- resulting pipeline layout object is returned. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle -- -- - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkPipelineLayoutCreateInfo@ structure+-- 'PipelineLayoutCreateInfo' structure -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - @pPipelineLayout@ /must/ be a valid pointer to a @VkPipelineLayout@--- handle+-- - @pPipelineLayout@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' handle -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout',--- 'VkPipelineLayoutCreateInfo'+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout',+-- 'PipelineLayoutCreateInfo'+createPipelineLayout :: Device -> PipelineLayoutCreateInfo -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (PipelineLayout)+createPipelineLayout device createInfo allocator = evalContT $ do+ let vkCreatePipelineLayout' = mkVkCreatePipelineLayout (pVkCreatePipelineLayout (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPPipelineLayout <- ContT $ bracket (callocBytes @PipelineLayout 8) free+ r <- lift $ vkCreatePipelineLayout' (deviceHandle (device)) pCreateInfo pAllocator (pPPipelineLayout)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pPipelineLayout <- lift $ peek @PipelineLayout pPPipelineLayout+ pure $ (pPipelineLayout)++-- | A safe wrapper for 'createPipelineLayout' and 'destroyPipelineLayout'+-- using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withPipelineLayout :: Device -> PipelineLayoutCreateInfo -> Maybe AllocationCallbacks -> (PipelineLayout -> IO r) -> IO r+withPipelineLayout device pipelineLayoutCreateInfo allocationCallbacks =+ bracket+ (createPipelineLayout device pipelineLayoutCreateInfo allocationCallbacks)+ (\o -> destroyPipelineLayout device o allocationCallbacks)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkCreatePipelineLayout" vkCreatePipelineLayout :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineLayout" ::: Ptr VkPipelineLayout) -> IO VkResult+ "dynamic" mkVkDestroyPipelineLayout+ :: FunPtr (Ptr Device_T -> PipelineLayout -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> PipelineLayout -> Ptr AllocationCallbacks -> IO ()+ -- | vkDestroyPipelineLayout - Destroy a pipeline layout object -- -- = Parameters ----- - @device@ is the logical device that destroys the pipeline layout.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the pipeline layout. ----- - @pipelineLayout@ is the pipeline layout to destroy.+-- - 'Graphics.Vulkan.Core10.Handles.PipelineLayout' is the pipeline+-- layout to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. -- -- == Valid Usage ----- - If @VkAllocationCallbacks@ were provided when @pipelineLayout@ was--- created, a compatible set of callbacks /must/ be provided here+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.PipelineLayout'+-- was created, a compatible set of callbacks /must/ be provided here ----- - If no @VkAllocationCallbacks@ were provided when @pipelineLayout@+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.PipelineLayout' -- was created, @pAllocator@ /must/ be @NULL@ --+-- - 'Graphics.Vulkan.Core10.Handles.PipelineLayout' /must/ not have been+-- passed to any @vkCmd*@ command for any command buffers that are+-- still in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+-- when 'destroyPipelineLayout' is called+-- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - If @pipelineLayout@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @pipelineLayout@--- /must/ be a valid @VkPipelineLayout@ handle+-- - If 'Graphics.Vulkan.Core10.Handles.PipelineLayout' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' handle -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - If @pipelineLayout@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@+-- - If 'Graphics.Vulkan.Core10.Handles.PipelineLayout' is a valid+-- handle, it /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization ----- - Host access to @pipelineLayout@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.PipelineLayout'+-- /must/ be externally synchronized -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroyPipelineLayout" vkDestroyPipelineLayout :: ("device" ::: VkDevice) -> ("pipelineLayout" ::: VkPipelineLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout'+destroyPipelineLayout :: Device -> PipelineLayout -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyPipelineLayout device pipelineLayout allocator = evalContT $ do+ let vkDestroyPipelineLayout' = mkVkDestroyPipelineLayout (pVkDestroyPipelineLayout (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyPipelineLayout' (deviceHandle (device)) (pipelineLayout) pAllocator+ pure $ ()++ -- | VkPushConstantRange - Structure specifying a push constant range ----- == Valid Usage------ - @offset@ /must/ be less than--- @VkPhysicalDeviceLimits@::@maxPushConstantsSize@------ - @offset@ /must/ be a multiple of @4@------ - @size@ /must/ be greater than @0@------ - @size@ /must/ be a multiple of @4@------ - @size@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxPushConstantsSize@ minus @offset@--- -- == Valid Usage (Implicit) ----- - @stageFlags@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Pipeline.VkShaderStageFlagBits' values------ - @stageFlags@ /must/ not be @0@--- -- = See Also ----- 'VkPipelineLayoutCreateInfo', 'VkShaderStageFlags'-data VkPushConstantRange = VkPushConstantRange- { -- | @stageFlags@ is a set of stage flags describing the shader stages that- -- will access a range of push constants. If a particular stage is not- -- included in the range, then accessing members of that range of push- -- constants from the corresponding shader stage will result in undefined- -- data being read.- vkStageFlags :: VkShaderStageFlags- , -- | @offset@ and @size@ are the start offset and size, respectively,- -- consumed by the range. Both @offset@ and @size@ are in units of bytes- -- and /must/ be a multiple of 4. The layout of the push constant variables- -- is specified in the shader.- vkOffset :: Word32- , -- No documentation found for Nested "VkPushConstantRange" "size"- vkSize :: Word32+-- 'PipelineLayoutCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags'+data PushConstantRange = PushConstantRange+ { -- | @stageFlags@ /must/ not be @0@+ stageFlags :: ShaderStageFlags+ , -- | @offset@ /must/ be a multiple of @4@+ offset :: Word32+ , -- | @size@ /must/ be less than or equal to+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPushConstantsSize@+ -- minus @offset@+ size :: Word32 }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show PushConstantRange -instance Storable VkPushConstantRange where+instance ToCStruct PushConstantRange where+ withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PushConstantRange{..} f = do+ poke ((p `plusPtr` 0 :: Ptr ShaderStageFlags)) (stageFlags)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (offset)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (size)+ f+ cStructSize = 12+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr ShaderStageFlags)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+ f++instance FromCStruct PushConstantRange where+ peekCStruct p = do+ stageFlags <- peek @ShaderStageFlags ((p `plusPtr` 0 :: Ptr ShaderStageFlags))+ offset <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ size <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ pure $ PushConstantRange+ stageFlags offset size++instance Storable PushConstantRange where sizeOf ~_ = 12 alignment ~_ = 4- peek ptr = VkPushConstantRange <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkStageFlags (poked :: VkPushConstantRange))- *> poke (ptr `plusPtr` 4) (vkOffset (poked :: VkPushConstantRange))- *> poke (ptr `plusPtr` 8) (vkSize (poked :: VkPushConstantRange))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PushConstantRange where+ zero = PushConstantRange+ zero+ zero+ zero++ -- | VkPipelineLayoutCreateInfo - Structure specifying the parameters of a -- newly created pipeline layout object ----- = Members------ - @sType@ is the type of this structure.------ - @pNext@ is @NULL@ or a pointer to an extension-specific structure.------ - @flags@ is reserved for future use.------ - @setLayoutCount@ is the number of descriptor sets included in the--- pipeline layout.------ - @pSetLayouts@ is a pointer to an array of @VkDescriptorSetLayout@--- objects.------ - @pushConstantRangeCount@ is the number of push constant ranges--- included in the pipeline layout.------ - @pPushConstantRanges@ is a pointer to an array of--- @VkPushConstantRange@ structures defining a set of push constant--- ranges for use in a single pipeline layout. In addition to--- descriptor set layouts, a pipeline layout also describes how many--- push constants /can/ be accessed by each stage of the pipeline.------ __Note__------ Push constants represent a high speed path to modify constant data--- in pipelines that is expected to outperform memory-backed resource--- updates.--- -- == Valid Usage -- -- - @setLayoutCount@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxBoundDescriptorSets@+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxBoundDescriptorSets@ -- -- - The total number of descriptors in descriptor set layouts created -- without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set with a @descriptorType@ of @VK_DESCRIPTOR_TYPE_SAMPLER@ and--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@ accessible to any given--- shader stage across all elements of @pSetLayouts@ /must/ be less--- than or equal to--- @VkPhysicalDeviceLimits@::@maxPerStageDescriptorSamplers@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+-- bit set with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER'+-- and+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'+-- accessible to any given shader stage across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageDescriptorSamplers@ -- -- - The total number of descriptors in descriptor set layouts created -- without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set with a @descriptorType@ of @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@--- and @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ accessible to any--- given shader stage across all elements of @pSetLayouts@ /must/ be--- less than or equal to--- @VkPhysicalDeviceLimits@::@maxPerStageDescriptorUniformBuffers@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+-- bit set with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'+-- and+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'+-- accessible to any given shader stage across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageDescriptorUniformBuffers@ -- -- - The total number of descriptors in descriptor set layouts created -- without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set with a @descriptorType@ of @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@--- and @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ accessible to any--- given shader stage across all elements of @pSetLayouts@ /must/ be--- less than or equal to--- @VkPhysicalDeviceLimits@::@maxPerStageDescriptorStorageBuffers@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+-- bit set with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'+-- and+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'+-- accessible to any given shader stage across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageDescriptorStorageBuffers@ -- -- - The total number of descriptors in descriptor set layouts created -- without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set with a @descriptorType@ of--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@,--- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@, and--- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ accessible to any given--- shader stage across all elements of @pSetLayouts@ /must/ be less--- than or equal to--- @VkPhysicalDeviceLimits@::@maxPerStageDescriptorSampledImages@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+-- bit set with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',+-- and+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'+-- accessible to any given shader stage across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageDescriptorSampledImages@ -- -- - The total number of descriptors in descriptor set layouts created -- without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set with a @descriptorType@ of @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@,--- and @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ accessible to any--- given shader stage across all elements of @pSetLayouts@ /must/ be--- less than or equal to--- @VkPhysicalDeviceLimits@::@maxPerStageDescriptorStorageImages@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+-- bit set with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',+-- and+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'+-- accessible to any given shader stage across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageDescriptorStorageImages@ -- -- - The total number of descriptors in descriptor set layouts created -- without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set with a @descriptorType@ of @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+-- bit set with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT' -- accessible to any given shader stage across all elements of -- @pSetLayouts@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxPerStageDescriptorInputAttachments@+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageDescriptorInputAttachments@ ----- - The total number of descriptors with a @descriptorType@ of--- @VK_DESCRIPTOR_TYPE_SAMPLER@ and--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@ accessible to any given--- shader stage across all elements of @pSetLayouts@ /must/ be less--- than or equal to--- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxPerStageDescriptorUpdateAfterBindSamplers@+-- - The total number of bindings in descriptor set layouts created+-- without the+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+-- bit set with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+-- accessible to any given shader stage across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockPropertiesEXT'::@maxPerStageDescriptorInlineUniformBlocks@ ----- - The total number of descriptors with a @descriptorType@ of--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ and--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ accessible to any given--- shader stage across all elements of @pSetLayouts@ /must/ be less--- than or equal to--- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxPerStageDescriptorUpdateAfterBindUniformBuffers@+-- - The total number of descriptors with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER'+-- and+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'+-- accessible to any given shader stage across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxPerStageDescriptorUpdateAfterBindSamplers@ ----- - The total number of descriptors with a @descriptorType@ of--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ and--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ accessible to any given--- shader stage across all elements of @pSetLayouts@ /must/ be less--- than or equal to--- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxPerStageDescriptorUpdateAfterBindStorageBuffers@+-- - The total number of descriptors with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'+-- and+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'+-- accessible to any given shader stage across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxPerStageDescriptorUpdateAfterBindUniformBuffers@ ----- - The total number of descriptors with a @descriptorType@ of--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@,--- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@, and--- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ accessible to any given--- shader stage across all elements of @pSetLayouts@ /must/ be less--- than or equal to--- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxPerStageDescriptorUpdateAfterBindSampledImages@+-- - The total number of descriptors with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'+-- and+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'+-- accessible to any given shader stage across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxPerStageDescriptorUpdateAfterBindStorageBuffers@ ----- - The total number of descriptors with a @descriptorType@ of--- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@, and--- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ accessible to any given--- shader stage across all elements of @pSetLayouts@ /must/ be less--- than or equal to--- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxPerStageDescriptorUpdateAfterBindStorageImages@+-- - The total number of descriptors with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',+-- and+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'+-- accessible to any given shader stage across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxPerStageDescriptorUpdateAfterBindSampledImages@ ----- - The total number of descriptors with a @descriptorType@ of--- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ accessible to any given shader--- stage across all elements of @pSetLayouts@ /must/ be less than or--- equal to--- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxPerStageDescriptorUpdateAfterBindInputAttachments@+-- - The total number of descriptors with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',+-- and+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'+-- accessible to any given shader stage across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxPerStageDescriptorUpdateAfterBindStorageImages@ --+-- - The total number of descriptors with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'+-- accessible to any given shader stage across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxPerStageDescriptorUpdateAfterBindInputAttachments@+--+-- - The total number of bindings with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+-- accessible to any given shader stage across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockPropertiesEXT'::@maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks@+-- -- - The total number of descriptors in descriptor set layouts created -- without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set with a @descriptorType@ of @VK_DESCRIPTOR_TYPE_SAMPLER@ and--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@ accessible across all--- shader stages and across all elements of @pSetLayouts@ /must/ be--- less than or equal to--- @VkPhysicalDeviceLimits@::@maxDescriptorSetSamplers@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+-- bit set with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER'+-- and+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'+-- accessible across all shader stages and across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDescriptorSetSamplers@ -- -- - The total number of descriptors in descriptor set layouts created -- without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set with a @descriptorType@ of @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@--- accessible across all shader stagess and and across all elements of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+-- bit set with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'+-- accessible across all shader stages and across all elements of -- @pSetLayouts@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxDescriptorSetUniformBuffers@+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDescriptorSetUniformBuffers@ -- -- - The total number of descriptors in descriptor set layouts created -- without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set with a @descriptorType@ of--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ accessible across all--- shader stages and across all elements of @pSetLayouts@ /must/ be--- less than or equal to--- @VkPhysicalDeviceLimits@::@maxDescriptorSetUniformBuffersDynamic@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+-- bit set with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'+-- accessible across all shader stages and across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDescriptorSetUniformBuffersDynamic@ -- -- - The total number of descriptors in descriptor set layouts created -- without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set with a @descriptorType@ of @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+-- bit set with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER' -- accessible across all shader stages and across all elements of -- @pSetLayouts@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxDescriptorSetStorageBuffers@+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDescriptorSetStorageBuffers@ -- -- - The total number of descriptors in descriptor set layouts created -- without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set with a @descriptorType@ of--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ accessible across all--- shader stages and across all elements of @pSetLayouts@ /must/ be--- less than or equal to--- @VkPhysicalDeviceLimits@::@maxDescriptorSetStorageBuffersDynamic@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+-- bit set with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'+-- accessible across all shader stages and across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDescriptorSetStorageBuffersDynamic@ -- -- - The total number of descriptors in descriptor set layouts created -- without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set with a @descriptorType@ of--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@,--- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@, and--- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ accessible across all--- shader stages and across all elements of @pSetLayouts@ /must/ be--- less than or equal to--- @VkPhysicalDeviceLimits@::@maxDescriptorSetSampledImages@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+-- bit set with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',+-- and+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'+-- accessible across all shader stages and across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDescriptorSetSampledImages@ -- -- - The total number of descriptors in descriptor set layouts created -- without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set with a @descriptorType@ of @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@,--- and @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ accessible across all--- shader stages and across all elements of @pSetLayouts@ /must/ be--- less than or equal to--- @VkPhysicalDeviceLimits@::@maxDescriptorSetStorageImages@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+-- bit set with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',+-- and+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'+-- accessible across all shader stages and across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDescriptorSetStorageImages@ -- -- - The total number of descriptors in descriptor set layouts created -- without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set with a @descriptorType@ of @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+-- bit set with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT' -- accessible across all shader stages and across all elements of -- @pSetLayouts@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxDescriptorSetInputAttachments@+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDescriptorSetInputAttachments@ --+-- - The total number of bindings in descriptor set layouts created+-- without the+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+-- bit set with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+-- accessible across all shader stages and across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockPropertiesEXT'::@maxDescriptorSetInlineUniformBlocks@+-- -- - The total number of descriptors of the type--- @VK_DESCRIPTOR_TYPE_SAMPLER@ and--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@ accessible across all--- shader stages and across all elements of @pSetLayouts@ /must/ be--- less than or equal to--- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxDescriptorSetUpdateAfterBindSamplers@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER'+-- and+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'+-- accessible across all shader stages and across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxDescriptorSetUpdateAfterBindSamplers@ -- -- - The total number of descriptors of the type--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ accessible across all shader--- stagess and and across all elements of @pSetLayouts@ /must/ be less--- than or equal to--- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxDescriptorSetUpdateAfterBindUniformBuffers@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'+-- accessible across all shader stages and across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxDescriptorSetUpdateAfterBindUniformBuffers@ -- -- - The total number of descriptors of the type--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ accessible across all--- shader stages and across all elements of @pSetLayouts@ /must/ be--- less than or equal to--- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxDescriptorSetUpdateAfterBindUniformBuffersDynamic@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'+-- accessible across all shader stages and across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxDescriptorSetUpdateAfterBindUniformBuffersDynamic@ -- -- - The total number of descriptors of the type--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ accessible across all shader--- stages and across all elements of @pSetLayouts@ /must/ be less than--- or equal to--- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxDescriptorSetUpdateAfterBindStorageBuffers@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'+-- accessible across all shader stages and across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxDescriptorSetUpdateAfterBindStorageBuffers@ -- -- - The total number of descriptors of the type--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ accessible across all--- shader stages and across all elements of @pSetLayouts@ /must/ be--- less than or equal to--- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxDescriptorSetUpdateAfterBindStorageBuffersDynamic@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'+-- accessible across all shader stages and across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxDescriptorSetUpdateAfterBindStorageBuffersDynamic@ -- -- - The total number of descriptors of the type--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@,--- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@, and--- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ accessible across all--- shader stages and across all elements of @pSetLayouts@ /must/ be--- less than or equal to--- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxDescriptorSetUpdateAfterBindSampledImages@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',+-- and+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'+-- accessible across all shader stages and across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxDescriptorSetUpdateAfterBindSampledImages@ -- -- - The total number of descriptors of the type--- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@, and--- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ accessible across all--- shader stages and across all elements of @pSetLayouts@ /must/ be--- less than or equal to--- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxDescriptorSetUpdateAfterBindStorageImages@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',+-- and+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'+-- accessible across all shader stages and across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxDescriptorSetUpdateAfterBindStorageImages@ -- -- - The total number of descriptors of the type--- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ accessible across all shader--- stages and across all elements of @pSetLayouts@ /must/ be less than--- or equal to--- @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@::@maxDescriptorSetUpdateAfterBindInputAttachments@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'+-- accessible across all shader stages and across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties'::@maxDescriptorSetUpdateAfterBindInputAttachments@ --+-- - The total number of bindings with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+-- accessible across all shader stages and across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockPropertiesEXT'::@maxDescriptorSetUpdateAfterBindInlineUniformBlocks@+-- -- - Any two elements of @pPushConstantRanges@ /must/ not include the -- same stage in @stageFlags@ -- -- - @pSetLayouts@ /must/ not contain more than one descriptor set layout -- that was created with--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR@ set+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR'+-- set --+-- - The total number of bindings with a+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV'+-- accessible across all shader stages and across all elements of+-- @pSetLayouts@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV'::@maxDescriptorSetAccelerationStructures@+-- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO@+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO' -- -- - @pNext@ /must/ be @NULL@ ----- - @flags@ /must/ be @0@+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@ -- -- - If @setLayoutCount@ is not @0@, @pSetLayouts@ /must/ be a valid -- pointer to an array of @setLayoutCount@ valid--- @VkDescriptorSetLayout@ handles+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' handles -- -- - If @pushConstantRangeCount@ is not @0@, @pPushConstantRanges@ /must/ -- be a valid pointer to an array of @pushConstantRangeCount@ valid--- @VkPushConstantRange@ structures+-- 'PushConstantRange' structures -- -- = See Also ----- 'VkDescriptorSetLayout', 'VkPipelineLayoutCreateFlags',--- 'VkPushConstantRange', 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkCreatePipelineLayout'-data VkPipelineLayoutCreateInfo = VkPipelineLayoutCreateInfo- { -- No documentation found for Nested "VkPipelineLayoutCreateInfo" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPipelineLayoutCreateInfo" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPipelineLayoutCreateInfo" "flags"- vkFlags :: VkPipelineLayoutCreateFlags- , -- No documentation found for Nested "VkPipelineLayoutCreateInfo" "setLayoutCount"- vkSetLayoutCount :: Word32- , -- No documentation found for Nested "VkPipelineLayoutCreateInfo" "pSetLayouts"- vkPSetLayouts :: Ptr VkDescriptorSetLayout- , -- No documentation found for Nested "VkPipelineLayoutCreateInfo" "pushConstantRangeCount"- vkPushConstantRangeCount :: Word32- , -- No documentation found for Nested "VkPipelineLayoutCreateInfo" "pPushConstantRanges"- vkPPushConstantRanges :: Ptr VkPushConstantRange+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout',+-- 'Graphics.Vulkan.Core10.Enums.PipelineLayoutCreateFlags.PipelineLayoutCreateFlags',+-- 'PushConstantRange',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createPipelineLayout'+data PipelineLayoutCreateInfo = PipelineLayoutCreateInfo+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: PipelineLayoutCreateFlags+ , -- | @pSetLayouts@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' objects.+ setLayouts :: Vector DescriptorSetLayout+ , -- | @pPushConstantRanges@ is a pointer to an array of 'PushConstantRange'+ -- structures defining a set of push constant ranges for use in a single+ -- pipeline layout. In addition to descriptor set layouts, a pipeline+ -- layout also describes how many push constants /can/ be accessed by each+ -- stage of the pipeline.+ --+ -- Note+ --+ -- Push constants represent a high speed path to modify constant data in+ -- pipelines that is expected to outperform memory-backed resource updates.+ pushConstantRanges :: Vector PushConstantRange }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show PipelineLayoutCreateInfo -instance Storable VkPipelineLayoutCreateInfo where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkPipelineLayoutCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineLayoutCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineLayoutCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineLayoutCreateInfo))- *> poke (ptr `plusPtr` 20) (vkSetLayoutCount (poked :: VkPipelineLayoutCreateInfo))- *> poke (ptr `plusPtr` 24) (vkPSetLayouts (poked :: VkPipelineLayoutCreateInfo))- *> poke (ptr `plusPtr` 32) (vkPushConstantRangeCount (poked :: VkPipelineLayoutCreateInfo))- *> poke (ptr `plusPtr` 40) (vkPPushConstantRanges (poked :: VkPipelineLayoutCreateInfo))--- | VkShaderStageFlags - Bitmask of VkShaderStageFlagBits------ = Description------ @VkShaderStageFlags@ is a bitmask type for setting a mask of zero or--- more 'Graphics.Vulkan.Core10.Pipeline.VkShaderStageFlagBits'.------ = See Also------ 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetLayoutBinding',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTablePushConstantEntryNVX',--- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_subgroup.VkPhysicalDeviceSubgroupProperties',--- 'VkPushConstantRange',--- 'Graphics.Vulkan.Core10.Pipeline.VkShaderStageFlagBits',--- 'Graphics.Vulkan.Extensions.VK_AMD_shader_info.VkShaderStatisticsInfoAMD',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdPushConstants'-type VkShaderStageFlags = VkShaderStageFlagBits+instance ToCStruct PipelineLayoutCreateInfo where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineLayoutCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr PipelineLayoutCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (setLayouts)) :: Word32))+ pPSetLayouts' <- ContT $ allocaBytesAligned @DescriptorSetLayout ((Data.Vector.length (setLayouts)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPSetLayouts' `plusPtr` (8 * (i)) :: Ptr DescriptorSetLayout) (e)) (setLayouts)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DescriptorSetLayout))) (pPSetLayouts')+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (pushConstantRanges)) :: Word32))+ pPPushConstantRanges' <- ContT $ allocaBytesAligned @PushConstantRange ((Data.Vector.length (pushConstantRanges)) * 12) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPPushConstantRanges' `plusPtr` (12 * (i)) :: Ptr PushConstantRange) (e) . ($ ())) (pushConstantRanges)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr PushConstantRange))) (pPPushConstantRanges')+ lift $ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPSetLayouts' <- ContT $ allocaBytesAligned @DescriptorSetLayout ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPSetLayouts' `plusPtr` (8 * (i)) :: Ptr DescriptorSetLayout) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DescriptorSetLayout))) (pPSetLayouts')+ pPPushConstantRanges' <- ContT $ allocaBytesAligned @PushConstantRange ((Data.Vector.length (mempty)) * 12) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPPushConstantRanges' `plusPtr` (12 * (i)) :: Ptr PushConstantRange) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr PushConstantRange))) (pPPushConstantRanges')+ lift $ f++instance FromCStruct PipelineLayoutCreateInfo where+ peekCStruct p = do+ flags <- peek @PipelineLayoutCreateFlags ((p `plusPtr` 16 :: Ptr PipelineLayoutCreateFlags))+ setLayoutCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pSetLayouts <- peek @(Ptr DescriptorSetLayout) ((p `plusPtr` 24 :: Ptr (Ptr DescriptorSetLayout)))+ pSetLayouts' <- generateM (fromIntegral setLayoutCount) (\i -> peek @DescriptorSetLayout ((pSetLayouts `advancePtrBytes` (8 * (i)) :: Ptr DescriptorSetLayout)))+ pushConstantRangeCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pPushConstantRanges <- peek @(Ptr PushConstantRange) ((p `plusPtr` 40 :: Ptr (Ptr PushConstantRange)))+ pPushConstantRanges' <- generateM (fromIntegral pushConstantRangeCount) (\i -> peekCStruct @PushConstantRange ((pPushConstantRanges `advancePtrBytes` (12 * (i)) :: Ptr PushConstantRange)))+ pure $ PipelineLayoutCreateInfo+ flags pSetLayouts' pPushConstantRanges'++instance Zero PipelineLayoutCreateInfo where+ zero = PipelineLayoutCreateInfo+ zero+ mempty+ mempty+
+ src/Graphics/Vulkan/Core10/PipelineLayout.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.PipelineLayout ( PipelineLayoutCreateInfo+ , PushConstantRange+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PipelineLayoutCreateInfo++instance ToCStruct PipelineLayoutCreateInfo+instance Show PipelineLayoutCreateInfo++instance FromCStruct PipelineLayoutCreateInfo+++data PushConstantRange++instance ToCStruct PushConstantRange+instance Show PushConstantRange++instance FromCStruct PushConstantRange+
src/Graphics/Vulkan/Core10/Query.hs view
@@ -1,791 +1,601 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.Query- ( VkQueryType(..)- , pattern VK_QUERY_TYPE_OCCLUSION- , pattern VK_QUERY_TYPE_PIPELINE_STATISTICS- , pattern VK_QUERY_TYPE_TIMESTAMP- , VkQueryPoolCreateFlags(..)- , VkQueryResultFlagBits(..)- , pattern VK_QUERY_RESULT_64_BIT- , pattern VK_QUERY_RESULT_WAIT_BIT- , pattern VK_QUERY_RESULT_WITH_AVAILABILITY_BIT- , pattern VK_QUERY_RESULT_PARTIAL_BIT- , VkQueryPipelineStatisticFlagBits(..)- , pattern VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT- , pattern VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT- , pattern VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT- , pattern VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT- , pattern VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT- , pattern VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT- , pattern VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT- , pattern VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT- , pattern VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT- , pattern VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT- , pattern VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT- , VkQueryPool- , vkCreateQueryPool- , vkDestroyQueryPool- , vkGetQueryPoolResults- , VkQueryPoolCreateInfo(..)- , VkQueryResultFlags- , VkQueryPipelineStatisticFlags- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Int- ( Int32- )-import Data.Word- ( Word32- )-import Foreign.C.Types- ( CSize(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- , VkDeviceSize- )----- ** VkQueryType---- | VkQueryType - Specify the type of queries managed by a query pool------ = See Also------ 'VkQueryPoolCreateInfo'-newtype VkQueryType = VkQueryType Int32- deriving (Eq, Ord, Storable)--instance Show VkQueryType where- showsPrec _ VK_QUERY_TYPE_OCCLUSION = showString "VK_QUERY_TYPE_OCCLUSION"- showsPrec _ VK_QUERY_TYPE_PIPELINE_STATISTICS = showString "VK_QUERY_TYPE_PIPELINE_STATISTICS"- showsPrec _ VK_QUERY_TYPE_TIMESTAMP = showString "VK_QUERY_TYPE_TIMESTAMP"- showsPrec p (VkQueryType x) = showParen (p >= 11) (showString "VkQueryType " . showsPrec 11 x)--instance Read VkQueryType where- readPrec = parens ( choose [ ("VK_QUERY_TYPE_OCCLUSION", pure VK_QUERY_TYPE_OCCLUSION)- , ("VK_QUERY_TYPE_PIPELINE_STATISTICS", pure VK_QUERY_TYPE_PIPELINE_STATISTICS)- , ("VK_QUERY_TYPE_TIMESTAMP", pure VK_QUERY_TYPE_TIMESTAMP)- ] +++- prec 10 (do- expectP (Ident "VkQueryType")- v <- step readPrec- pure (VkQueryType v)- )- )---- | @VK_QUERY_TYPE_OCCLUSION@ specifies an [occlusion--- query](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-occlusion).-pattern VK_QUERY_TYPE_OCCLUSION :: VkQueryType-pattern VK_QUERY_TYPE_OCCLUSION = VkQueryType 0---- | @VK_QUERY_TYPE_PIPELINE_STATISTICS@ specifies a [pipeline statistics--- query](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-pipestats).-pattern VK_QUERY_TYPE_PIPELINE_STATISTICS :: VkQueryType-pattern VK_QUERY_TYPE_PIPELINE_STATISTICS = VkQueryType 1---- | @VK_QUERY_TYPE_TIMESTAMP@ specifies a [timestamp--- query](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-timestamps).-pattern VK_QUERY_TYPE_TIMESTAMP :: VkQueryType-pattern VK_QUERY_TYPE_TIMESTAMP = VkQueryType 2--- ** VkQueryPoolCreateFlags---- | VkQueryPoolCreateFlags - Reserved for future use------ = Description------ @VkQueryPoolCreateFlags@ is a bitmask type for setting a mask, but is--- currently reserved for future use.------ = See Also------ 'VkQueryPoolCreateInfo'-newtype VkQueryPoolCreateFlags = VkQueryPoolCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkQueryPoolCreateFlags where- - showsPrec p (VkQueryPoolCreateFlags x) = showParen (p >= 11) (showString "VkQueryPoolCreateFlags " . showsPrec 11 x)--instance Read VkQueryPoolCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkQueryPoolCreateFlags")- v <- step readPrec- pure (VkQueryPoolCreateFlags v)- )- )----- ** VkQueryResultFlagBits---- | VkQueryResultFlagBits - Bitmask specifying how and when query results--- are returned------ = See Also------ 'VkQueryResultFlags'-newtype VkQueryResultFlagBits = VkQueryResultFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkQueryResultFlagBits where- showsPrec _ VK_QUERY_RESULT_64_BIT = showString "VK_QUERY_RESULT_64_BIT"- showsPrec _ VK_QUERY_RESULT_WAIT_BIT = showString "VK_QUERY_RESULT_WAIT_BIT"- showsPrec _ VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = showString "VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"- showsPrec _ VK_QUERY_RESULT_PARTIAL_BIT = showString "VK_QUERY_RESULT_PARTIAL_BIT"- showsPrec p (VkQueryResultFlagBits x) = showParen (p >= 11) (showString "VkQueryResultFlagBits " . showsPrec 11 x)--instance Read VkQueryResultFlagBits where- readPrec = parens ( choose [ ("VK_QUERY_RESULT_64_BIT", pure VK_QUERY_RESULT_64_BIT)- , ("VK_QUERY_RESULT_WAIT_BIT", pure VK_QUERY_RESULT_WAIT_BIT)- , ("VK_QUERY_RESULT_WITH_AVAILABILITY_BIT", pure VK_QUERY_RESULT_WITH_AVAILABILITY_BIT)- , ("VK_QUERY_RESULT_PARTIAL_BIT", pure VK_QUERY_RESULT_PARTIAL_BIT)- ] +++- prec 10 (do- expectP (Ident "VkQueryResultFlagBits")- v <- step readPrec- pure (VkQueryResultFlagBits v)- )- )---- | @VK_QUERY_RESULT_64_BIT@ specifies the results will be written as an--- array of 64-bit unsigned integer values. If this bit is not set, the--- results will be written as an array of 32-bit unsigned integer values.-pattern VK_QUERY_RESULT_64_BIT :: VkQueryResultFlagBits-pattern VK_QUERY_RESULT_64_BIT = VkQueryResultFlagBits 0x00000001---- | @VK_QUERY_RESULT_WAIT_BIT@ specifies that Vulkan will wait for each--- query’s status to become available before retrieving its results.-pattern VK_QUERY_RESULT_WAIT_BIT :: VkQueryResultFlagBits-pattern VK_QUERY_RESULT_WAIT_BIT = VkQueryResultFlagBits 0x00000002---- | @VK_QUERY_RESULT_WITH_AVAILABILITY_BIT@ specifies that the availability--- status accompanies the results.-pattern VK_QUERY_RESULT_WITH_AVAILABILITY_BIT :: VkQueryResultFlagBits-pattern VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = VkQueryResultFlagBits 0x00000004---- | @VK_QUERY_RESULT_PARTIAL_BIT@ specifies that returning partial results--- is acceptable.-pattern VK_QUERY_RESULT_PARTIAL_BIT :: VkQueryResultFlagBits-pattern VK_QUERY_RESULT_PARTIAL_BIT = VkQueryResultFlagBits 0x00000008--- ** VkQueryPipelineStatisticFlagBits---- | VkQueryPipelineStatisticFlagBits - Bitmask specifying queried pipeline--- statistics------ = Description------ - @VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT@ specifies--- that queries managed by the pool will count the number of vertices--- processed by the [input--- assembly](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#drawing)--- stage. Vertices corresponding to incomplete primitives /may/--- contribute to the count.------ - @VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT@--- specifies that queries managed by the pool will count the number of--- primitives processed by the [input--- assembly](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#drawing)--- stage. If primitive restart is enabled, restarting the primitive--- topology has no effect on the count. Incomplete primitives /may/ be--- counted.------ - @VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT@--- specifies that queries managed by the pool will count the number of--- vertex shader invocations. This counter’s value is incremented each--- time a vertex shader is--- [invoked](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-vertex-execution).------ - @VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT@--- specifies that queries managed by the pool will count the number of--- geometry shader invocations. This counter’s value is incremented--- each time a geometry shader is--- [invoked](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-geometry-execution).--- In the case of [instanced geometry--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#geometry-invocations),--- the geometry shader invocations count is incremented for each--- separate instanced invocation.------ - @VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT@--- specifies that queries managed by the pool will count the number of--- primitives generated by geometry shader invocations. The counter’s--- value is incremented each time the geometry shader emits a--- primitive. Restarting primitive topology using the SPIR-V--- instructions @OpEndPrimitive@ or @OpEndStreamPrimitive@ has no--- effect on the geometry shader output primitives count.------ - @VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT@ specifies--- that queries managed by the pool will count the number of primitives--- processed by the [Primitive--- Clipping](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vertexpostproc-clipping)--- stage of the pipeline. The counter’s value is incremented each time--- a primitive reaches the primitive clipping stage.------ - @VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT@ specifies that--- queries managed by the pool will count the number of primitives--- output by the [Primitive--- Clipping](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vertexpostproc-clipping)--- stage of the pipeline. The counter’s value is incremented each time--- a primitive passes the primitive clipping stage. The actual number--- of primitives output by the primitive clipping stage for a--- particular input primitive is implementation-dependent but /must/--- satisfy the following conditions:------ - If at least one vertex of the input primitive lies inside the--- clipping volume, the counter is incremented by one or more.------ - Otherwise, the counter is incremented by zero or more.------ - @VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT@--- specifies that queries managed by the pool will count the number of--- fragment shader invocations. The counter’s value is incremented each--- time the fragment shader is--- [invoked](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-fragment-execution).------ - @VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT@--- specifies that queries managed by the pool will count the number of--- patches processed by the tessellation control shader. The counter’s--- value is incremented once for each patch for which a tessellation--- control shader is--- [invoked](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-tessellation-control-execution).------ - @VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT@--- specifies that queries managed by the pool will count the number of--- invocations of the tessellation evaluation shader. The counter’s--- value is incremented each time the tessellation evaluation shader is--- [invoked](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-tessellation-evaluation-execution).------ - @VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT@--- specifies that queries managed by the pool will count the number of--- compute shader invocations. The counter’s value is incremented every--- time the compute shader is invoked. Implementations /may/ skip the--- execution of certain compute shader invocations or execute--- additional compute shader invocations for implementation-dependent--- reasons as long as the results of rendering otherwise remain--- unchanged.------ These values are intended to measure relative statistics on one--- implementation. Various device architectures will count these values--- differently. Any or all counters /may/ be affected by the issues--- described in [Query--- Operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-undefined).------ __Note__------ For example, tile-based rendering devices /may/ need to replay the scene--- multiple times, affecting some of the counts.------ If a pipeline has @rasterizerDiscardEnable@ enabled, implementations--- /may/ discard primitives after the final vertex processing stage. As a--- result, if @rasterizerDiscardEnable@ is enabled, the clipping input and--- output primitives counters /may/ not be incremented.------ When a pipeline statistics query finishes, the result for that query is--- marked as available. The application /can/ copy the result to a buffer--- (via @vkCmdCopyQueryPoolResults@), or request it be put into host memory--- (via @vkGetQueryPoolResults@).------ = See Also------ 'VkQueryPipelineStatisticFlags'-newtype VkQueryPipelineStatisticFlagBits = VkQueryPipelineStatisticFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkQueryPipelineStatisticFlagBits where- showsPrec _ VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = showString "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT"- showsPrec _ VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = showString "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT"- showsPrec _ VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = showString "VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT"- showsPrec _ VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = showString "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT"- showsPrec _ VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = showString "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT"- showsPrec _ VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = showString "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT"- showsPrec _ VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = showString "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT"- showsPrec _ VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = showString "VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT"- showsPrec _ VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = showString "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT"- showsPrec _ VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = showString "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT"- showsPrec _ VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = showString "VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT"- showsPrec p (VkQueryPipelineStatisticFlagBits x) = showParen (p >= 11) (showString "VkQueryPipelineStatisticFlagBits " . showsPrec 11 x)--instance Read VkQueryPipelineStatisticFlagBits where- readPrec = parens ( choose [ ("VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT", pure VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT)- , ("VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT", pure VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT)- , ("VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT", pure VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT)- , ("VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT", pure VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT)- , ("VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT", pure VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT)- , ("VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT", pure VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT)- , ("VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT", pure VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT)- , ("VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT", pure VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT)- , ("VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT", pure VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT)- , ("VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT", pure VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT)- , ("VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT", pure VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT)- ] +++- prec 10 (do- expectP (Ident "VkQueryPipelineStatisticFlagBits")- v <- step readPrec- pure (VkQueryPipelineStatisticFlagBits v)- )- )---- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT"-pattern VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT :: VkQueryPipelineStatisticFlagBits-pattern VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = VkQueryPipelineStatisticFlagBits 0x00000001---- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT"-pattern VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT :: VkQueryPipelineStatisticFlagBits-pattern VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = VkQueryPipelineStatisticFlagBits 0x00000002---- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT"-pattern VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT :: VkQueryPipelineStatisticFlagBits-pattern VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = VkQueryPipelineStatisticFlagBits 0x00000004---- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT"-pattern VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT :: VkQueryPipelineStatisticFlagBits-pattern VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = VkQueryPipelineStatisticFlagBits 0x00000008---- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT"-pattern VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT :: VkQueryPipelineStatisticFlagBits-pattern VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = VkQueryPipelineStatisticFlagBits 0x00000010---- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT"-pattern VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT :: VkQueryPipelineStatisticFlagBits-pattern VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = VkQueryPipelineStatisticFlagBits 0x00000020---- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT"-pattern VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT :: VkQueryPipelineStatisticFlagBits-pattern VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = VkQueryPipelineStatisticFlagBits 0x00000040---- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT"-pattern VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT :: VkQueryPipelineStatisticFlagBits-pattern VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = VkQueryPipelineStatisticFlagBits 0x00000080---- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT"-pattern VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT :: VkQueryPipelineStatisticFlagBits-pattern VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = VkQueryPipelineStatisticFlagBits 0x00000100---- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT"-pattern VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT :: VkQueryPipelineStatisticFlagBits-pattern VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = VkQueryPipelineStatisticFlagBits 0x00000200---- No documentation found for Nested "VkQueryPipelineStatisticFlagBits" "VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT"-pattern VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT :: VkQueryPipelineStatisticFlagBits-pattern VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = VkQueryPipelineStatisticFlagBits 0x00000400--- | Dummy data to tag the 'Ptr' with-data VkQueryPool_T--- | VkQueryPool - Opaque handle to a query pool object------ = See Also------ 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBeginQuery',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyQueryPoolResults',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdEndQuery',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdResetQueryPool',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdWriteTimestamp',--- 'vkCreateQueryPool', 'vkDestroyQueryPool', 'vkGetQueryPoolResults'-type VkQueryPool = Ptr VkQueryPool_T--- | vkCreateQueryPool - Create a new query pool object------ = Parameters------ - @device@ is the logical device that creates the query pool.------ - @pCreateInfo@ is a pointer to an instance of the--- @VkQueryPoolCreateInfo@ structure containing the number and type of--- queries to be managed by the pool.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ - @pQueryPool@ is a pointer to a @VkQueryPool@ handle in which the--- resulting query pool object is returned.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkQueryPoolCreateInfo@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pQueryPool@ /must/ be a valid pointer to a @VkQueryPool@ handle------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkQueryPool',--- 'VkQueryPoolCreateInfo'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateQueryPool" vkCreateQueryPool :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkQueryPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pQueryPool" ::: Ptr VkQueryPool) -> IO VkResult--- | vkDestroyQueryPool - Destroy a query pool object------ = Parameters------ - @device@ is the logical device that destroys the query pool.------ - @queryPool@ is the query pool to destroy.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ == Valid Usage------ - All submitted commands that refer to @queryPool@ /must/ have--- completed execution------ - If @VkAllocationCallbacks@ were provided when @queryPool@ was--- created, a compatible set of callbacks /must/ be provided here------ - If no @VkAllocationCallbacks@ were provided when @queryPool@ was--- created, @pAllocator@ /must/ be @NULL@------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - If @queryPool@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @queryPool@--- /must/ be a valid @VkQueryPool@ handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - If @queryPool@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@------ == Host Synchronization------ - Host access to @queryPool@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkQueryPool'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroyQueryPool" vkDestroyQueryPool :: ("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | vkGetQueryPoolResults - Copy results of queries in a query pool to a--- host memory region------ = Parameters------ - @device@ is the logical device that owns the query pool.------ - @queryPool@ is the query pool managing the queries containing the--- desired results.------ - @firstQuery@ is the initial query index.------ - @queryCount@ is the number of queries. @firstQuery@ and @queryCount@--- together define a range of queries. For pipeline statistics queries,--- each query index in the pool contains one integer value for each bit--- that is enabled in 'VkQueryPoolCreateInfo'::@pipelineStatistics@--- when the pool is created.------ - @dataSize@ is the size in bytes of the buffer pointed to by @pData@.------ - @pData@ is a pointer to a user-allocated buffer where the results--- will be written------ - @stride@ is the stride in bytes between results for individual--- queries within @pData@.------ - @flags@ is a bitmask of 'VkQueryResultFlagBits' specifying how and--- when results are returned.------ = Description------ If no bits are set in @flags@, and all requested queries are in the--- available state, results are written as an array of 32-bit unsigned--- integer values. The behavior when not all queries are available, is--- described--- [below](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-wait-bit-not-set).------ If @VK_QUERY_RESULT_64_BIT@ is not set and the result overflows a 32-bit--- value, the value /may/ either wrap or saturate. Similarly, if--- @VK_QUERY_RESULT_64_BIT@ is set and the result overflows a 64-bit value,--- the value /may/ either wrap or saturate.------ If @VK_QUERY_RESULT_WAIT_BIT@ is set, Vulkan will wait for each query to--- be in the available state before retrieving the numerical results for--- that query. In this case, @vkGetQueryPoolResults@ is guaranteed to--- succeed and return @VK_SUCCESS@ if the queries become available in a--- finite time (i.e. if they have been issued and not reset). If queries--- will never finish (e.g. due to being reset but not issued), then--- @vkGetQueryPoolResults@ /may/ not return in finite time.------ If @VK_QUERY_RESULT_WAIT_BIT@ and @VK_QUERY_RESULT_PARTIAL_BIT@ are both--- not set then no result values are written to @pData@ for queries that--- are in the unavailable state at the time of the call, and--- @vkGetQueryPoolResults@ returns @VK_NOT_READY@. However, availability--- state is still written to @pData@ for those queries if--- @VK_QUERY_RESULT_WITH_AVAILABILITY_BIT@ is set.------ __Note__------ Applications /must/ take care to ensure that use of the--- @VK_QUERY_RESULT_WAIT_BIT@ bit has the desired effect.------ For example, if a query has been used previously and a command buffer--- records the commands @vkCmdResetQueryPool@, @vkCmdBeginQuery@, and--- @vkCmdEndQuery@ for that query, then the query will remain in the--- available state until the @vkCmdResetQueryPool@ command executes on a--- queue. Applications /can/ use fences or events to ensure that a query--- has already been reset before checking for its results or availability--- status. Otherwise, a stale value could be returned from a previous use--- of the query.------ The above also applies when @VK_QUERY_RESULT_WAIT_BIT@ is used in--- combination with @VK_QUERY_RESULT_WITH_AVAILABILITY_BIT@. In this case,--- the returned availability status /may/ reflect the result of a previous--- use of the query unless the @vkCmdResetQueryPool@ command has been--- executed since the last use of the query.------ __Note__------ Applications /can/ double-buffer query pool usage, with a pool per--- frame, and reset queries at the end of the frame in which they are read.------ If @VK_QUERY_RESULT_PARTIAL_BIT@ is set, @VK_QUERY_RESULT_WAIT_BIT@ is--- not set, and the query’s status is unavailable, an intermediate result--- value between zero and the final result value is written to @pData@ for--- that query.------ @VK_QUERY_RESULT_PARTIAL_BIT@ /must/ not be used if the pool’s--- @queryType@ is @VK_QUERY_TYPE_TIMESTAMP@.------ If @VK_QUERY_RESULT_WITH_AVAILABILITY_BIT@ is set, the final integer--- value written for each query is non-zero if the query’s status was--- available or zero if the status was unavailable. When--- @VK_QUERY_RESULT_WITH_AVAILABILITY_BIT@ is used, implementations /must/--- guarantee that if they return a non-zero availability value then the--- numerical results /must/ be valid, assuming the results are not reset by--- a subsequent command.------ __Note__------ Satisfying this guarantee /may/ require careful ordering by the--- application, e.g. to read the availability status before reading the--- results.------ == Valid Usage------ - @firstQuery@ /must/ be less than the number of queries in--- @queryPool@------ - If @VK_QUERY_RESULT_64_BIT@ is not set in @flags@ then @pData@ and--- @stride@ /must/ be multiples of @4@------ - If @VK_QUERY_RESULT_64_BIT@ is set in @flags@ then @pData@ and--- @stride@ /must/ be multiples of @8@------ - The sum of @firstQuery@ and @queryCount@ /must/ be less than or--- equal to the number of queries in @queryPool@------ - @dataSize@ /must/ be large enough to contain the result of each--- query, as described--- [here](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-operation-memorylayout)------ - If the @queryType@ used to create @queryPool@ was--- @VK_QUERY_TYPE_TIMESTAMP@, @flags@ /must/ not contain--- @VK_QUERY_RESULT_PARTIAL_BIT@------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @queryPool@ /must/ be a valid @VkQueryPool@ handle------ - @pData@ /must/ be a valid pointer to an array of @dataSize@ bytes------ - @flags@ /must/ be a valid combination of 'VkQueryResultFlagBits'--- values------ - @dataSize@ /must/ be greater than @0@------ - @queryPool@ /must/ have been created, allocated, or retrieved from--- @device@------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ - @VK_NOT_READY@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_DEVICE_LOST@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', @VkDeviceSize@,--- 'VkQueryPool', 'VkQueryResultFlags'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetQueryPoolResults" vkGetQueryPoolResults :: ("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO VkResult--- | VkQueryPoolCreateInfo - Structure specifying parameters of a newly--- created query pool------ = Description------ @pipelineStatistics@ is ignored if @queryType@ is not--- @VK_QUERY_TYPE_PIPELINE_STATISTICS@.------ == Valid Usage------ - If the [pipeline statistics--- queries](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-pipelineStatisticsQuery)--- feature is not enabled, @queryType@ /must/ not be--- @VK_QUERY_TYPE_PIPELINE_STATISTICS@------ - If @queryType@ is @VK_QUERY_TYPE_PIPELINE_STATISTICS@,--- @pipelineStatistics@ /must/ be a valid combination of--- 'VkQueryPipelineStatisticFlagBits' values------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@------ - @queryType@ /must/ be a valid 'VkQueryType' value------ = See Also------ 'VkQueryPipelineStatisticFlags', 'VkQueryPoolCreateFlags',--- 'VkQueryType', 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkCreateQueryPool'-data VkQueryPoolCreateInfo = VkQueryPoolCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkQueryPoolCreateFlags- , -- | @queryType@ is a 'VkQueryType' value specifying the type of queries- -- managed by the pool.- vkQueryType :: VkQueryType- , -- | @queryCount@ is the number of queries managed by the pool.- vkQueryCount :: Word32- , -- | @pipelineStatistics@ is a bitmask of 'VkQueryPipelineStatisticFlagBits'- -- specifying which counters will be returned in queries on the new pool,- -- as described below in- -- [{html_spec_relative}#queries-pipestats](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#queries-pipestats).- vkPipelineStatistics :: VkQueryPipelineStatisticFlags- }- deriving (Eq, Show)--instance Storable VkQueryPoolCreateInfo where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkQueryPoolCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkQueryPoolCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkQueryPoolCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkQueryPoolCreateInfo))- *> poke (ptr `plusPtr` 20) (vkQueryType (poked :: VkQueryPoolCreateInfo))- *> poke (ptr `plusPtr` 24) (vkQueryCount (poked :: VkQueryPoolCreateInfo))- *> poke (ptr `plusPtr` 28) (vkPipelineStatistics (poked :: VkQueryPoolCreateInfo))--- | VkQueryResultFlags - Bitmask of VkQueryResultFlagBits------ = Description------ @VkQueryResultFlags@ is a bitmask type for setting a mask of zero or--- more 'VkQueryResultFlagBits'.------ = See Also------ 'VkQueryResultFlagBits',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyQueryPoolResults',--- 'vkGetQueryPoolResults'-type VkQueryResultFlags = VkQueryResultFlagBits--- | VkQueryPipelineStatisticFlags - Bitmask of--- VkQueryPipelineStatisticFlagBits------ = Description------ @VkQueryPipelineStatisticFlags@ is a bitmask type for setting a mask of--- zero or more 'VkQueryPipelineStatisticFlagBits'.------ = See Also------ 'Graphics.Vulkan.Core10.CommandBuffer.VkCommandBufferInheritanceInfo',--- 'VkQueryPipelineStatisticFlagBits', 'VkQueryPoolCreateInfo'-type VkQueryPipelineStatisticFlags = VkQueryPipelineStatisticFlagBits+{-# language CPP #-}+module Graphics.Vulkan.Core10.Query ( createQueryPool+ , withQueryPool+ , destroyQueryPool+ , getQueryPoolResults+ , QueryPoolCreateInfo(..)+ ) where++import Control.Exception.Base (bracket)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.C.Types (CSize)+import Foreign.C.Types (CSize(..))+import Foreign.C.Types (CSize(CSize))+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Word (Word64)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateQueryPool))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyQueryPool))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetQueryPoolResults))+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits (QueryPipelineStatisticFlags)+import Graphics.Vulkan.Core10.Handles (QueryPool)+import Graphics.Vulkan.Core10.Handles (QueryPool(..))+import Graphics.Vulkan.Core10.Enums.QueryPoolCreateFlags (QueryPoolCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (QueryPoolCreateInfoINTEL)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (QueryPoolPerformanceCreateInfoKHR)+import Graphics.Vulkan.Core10.Enums.QueryResultFlagBits (QueryResultFlags)+import Graphics.Vulkan.Core10.Enums.QueryResultFlagBits (QueryResultFlags)+import Graphics.Vulkan.Core10.Enums.QueryResultFlagBits (QueryResultFlagBits(..))+import Graphics.Vulkan.Core10.Enums.QueryType (QueryType)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateQueryPool+ :: FunPtr (Ptr Device_T -> Ptr (QueryPoolCreateInfo a) -> Ptr AllocationCallbacks -> Ptr QueryPool -> IO Result) -> Ptr Device_T -> Ptr (QueryPoolCreateInfo a) -> Ptr AllocationCallbacks -> Ptr QueryPool -> IO Result++-- | vkCreateQueryPool - Create a new query pool object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the query pool.+--+-- - @pCreateInfo@ is a pointer to a 'QueryPoolCreateInfo' structure+-- containing the number and type of queries to be managed by the pool.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pQueryPool@ is a pointer to a+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' handle in which the+-- resulting query pool object is returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'QueryPoolCreateInfo' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pQueryPool@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.QueryPool', 'QueryPoolCreateInfo'+createQueryPool :: PokeChain a => Device -> QueryPoolCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (QueryPool)+createQueryPool device createInfo allocator = evalContT $ do+ let vkCreateQueryPool' = mkVkCreateQueryPool (pVkCreateQueryPool (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPQueryPool <- ContT $ bracket (callocBytes @QueryPool 8) free+ r <- lift $ vkCreateQueryPool' (deviceHandle (device)) pCreateInfo pAllocator (pPQueryPool)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pQueryPool <- lift $ peek @QueryPool pPQueryPool+ pure $ (pQueryPool)++-- | A safe wrapper for 'createQueryPool' and 'destroyQueryPool' using+-- 'bracket'+--+-- The allocated value must not be returned from the provided computation+withQueryPool :: PokeChain a => Device -> QueryPoolCreateInfo a -> Maybe AllocationCallbacks -> (QueryPool -> IO r) -> IO r+withQueryPool device queryPoolCreateInfo allocationCallbacks =+ bracket+ (createQueryPool device queryPoolCreateInfo allocationCallbacks)+ (\o -> destroyQueryPool device o allocationCallbacks)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDestroyQueryPool+ :: FunPtr (Ptr Device_T -> QueryPool -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> QueryPool -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyQueryPool - Destroy a query pool object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the query pool.+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' is the query pool to+-- destroy.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- == Valid Usage+--+-- - All submitted commands that refer to+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ have completed+-- execution+--+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- created, a compatible set of callbacks /must/ be provided here+--+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- created, @pAllocator@ /must/ be @NULL@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - If 'Graphics.Vulkan.Core10.Handles.QueryPool' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - If 'Graphics.Vulkan.Core10.Handles.QueryPool' is a valid handle, it+-- /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ be+-- externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+destroyQueryPool :: Device -> QueryPool -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyQueryPool device queryPool allocator = evalContT $ do+ let vkDestroyQueryPool' = mkVkDestroyQueryPool (pVkDestroyQueryPool (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyQueryPool' (deviceHandle (device)) (queryPool) pAllocator+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetQueryPoolResults+ :: FunPtr (Ptr Device_T -> QueryPool -> Word32 -> Word32 -> CSize -> Ptr () -> DeviceSize -> QueryResultFlags -> IO Result) -> Ptr Device_T -> QueryPool -> Word32 -> Word32 -> CSize -> Ptr () -> DeviceSize -> QueryResultFlags -> IO Result++-- | vkGetQueryPoolResults - Copy results of queries in a query pool to a+-- host memory region+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the query pool.+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' is the query pool+-- managing the queries containing the desired results.+--+-- - @firstQuery@ is the initial query index.+--+-- - @queryCount@ is the number of queries to read.+--+-- - @dataSize@ is the size in bytes of the buffer pointed to by @pData@.+--+-- - @pData@ is a pointer to a user-allocated buffer where the results+-- will be written+--+-- - @stride@ is the stride in bytes between results for individual+-- queries within @pData@.+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QueryResultFlagBits'+-- specifying how and when results are returned.+--+-- = Description+--+-- The range of queries read is defined by [@firstQuery@, @firstQuery@ ++-- @queryCount@ - 1]. For pipeline statistics queries, each query index in+-- the pool contains one integer value for each bit that is enabled in+-- 'QueryPoolCreateInfo'::@pipelineStatistics@ when the pool is created.+--+-- If no bits are set in 'Graphics.Vulkan.Core10.BaseType.Flags', and all+-- requested queries are in the available state, results are written as an+-- array of 32-bit unsigned integer values. The behavior when not all+-- queries are available, is described+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-wait-bit-not-set below>.+--+-- If+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT'+-- is not set and the result overflows a 32-bit value, the value /may/+-- either wrap or saturate. Similarly, if+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT'+-- is set and the result overflows a 64-bit value, the value /may/ either+-- wrap or saturate.+--+-- If+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT'+-- is set, Vulkan will wait for each query to be in the available state+-- before retrieving the numerical results for that query. In this case,+-- 'getQueryPoolResults' is guaranteed to succeed and return+-- 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' if the queries become+-- available in a finite time (i.e. if they have been issued and not+-- reset). If queries will never finish (e.g. due to being reset but not+-- issued), then 'getQueryPoolResults' /may/ not return in finite time.+--+-- If+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT'+-- and+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'+-- are both not set then no result values are written to @pData@ for+-- queries that are in the unavailable state at the time of the call, and+-- 'getQueryPoolResults' returns+-- 'Graphics.Vulkan.Core10.Enums.Result.NOT_READY'. However, availability+-- state is still written to @pData@ for those queries if+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT'+-- is set.+--+-- Note+--+-- Applications /must/ take care to ensure that use of the+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT'+-- bit has the desired effect.+--+-- For example, if a query has been used previously and a command buffer+-- records the commands+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdResetQueryPool',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery', and+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdEndQuery' for that+-- query, then the query will remain in the available state until+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.resetQueryPool'+-- is called or the+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdResetQueryPool' command+-- executes on a queue. Applications /can/ use fences or events to ensure+-- that a query has already been reset before checking for its results or+-- availability status. Otherwise, a stale value could be returned from a+-- previous use of the query.+--+-- The above also applies when+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT'+-- is used in combination with+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT'.+-- In this case, the returned availability status /may/ reflect the result+-- of a previous use of the query unless+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.resetQueryPool'+-- is called or the+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdResetQueryPool' command+-- has been executed since the last use of the query.+--+-- Note+--+-- Applications /can/ double-buffer query pool usage, with a pool per+-- frame, and reset queries at the end of the frame in which they are read.+--+-- If+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'+-- is set,+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT'+-- is not set, and the query’s status is unavailable, an intermediate+-- result value between zero and the final result value is written to+-- @pData@ for that query.+--+-- If+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT'+-- is set, the final integer value written for each query is non-zero if+-- the query’s status was available or zero if the status was unavailable.+-- When+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT'+-- is used, implementations /must/ guarantee that if they return a non-zero+-- availability value then the numerical results /must/ be valid, assuming+-- the results are not reset by a subsequent command.+--+-- Note+--+-- Satisfying this guarantee /may/ require careful ordering by the+-- application, e.g. to read the availability status before reading the+-- results.+--+-- == Valid Usage+--+-- - @firstQuery@ /must/ be less than the number of queries in+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+--+-- - If+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT'+-- is not set in 'Graphics.Vulkan.Core10.BaseType.Flags', then @pData@+-- and @stride@ /must/ be multiples of @4@+--+-- - If+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT'+-- is not set in 'Graphics.Vulkan.Core10.BaseType.Flags' and the+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to create+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' was not+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',+-- then @pData@ and @stride@ /must/ be multiples of @4@+--+-- - If+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT'+-- is set in 'Graphics.Vulkan.Core10.BaseType.Flags' then @pData@ and+-- @stride@ /must/ be multiples of @8@+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',+-- then @pData@ and @stride@ /must/ be multiples of the size of+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterResultKHR'+--+-- - The sum of @firstQuery@ and @queryCount@ /must/ be less than or+-- equal to the number of queries in+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+--+-- - @dataSize@ /must/ be large enough to contain the result of each+-- query, as described+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-memorylayout here>+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP',+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT',+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT'+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',+-- the 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ have been+-- recorded once for each pass as retrieved via a call to+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' handle+--+-- - @pData@ /must/ be a valid pointer to an array of @dataSize@ bytes+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QueryResultFlagBits'+-- values+--+-- - @dataSize@ /must/ be greater than @0@+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ have been created,+-- allocated, or retrieved from 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.NOT_READY'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Handles.QueryPool',+-- 'Graphics.Vulkan.Core10.Enums.QueryResultFlagBits.QueryResultFlags'+getQueryPoolResults :: Device -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> ("stride" ::: DeviceSize) -> QueryResultFlags -> IO (Result)+getQueryPoolResults device queryPool firstQuery queryCount dataSize data' stride flags = do+ let vkGetQueryPoolResults' = mkVkGetQueryPoolResults (pVkGetQueryPoolResults (deviceCmds (device :: Device)))+ r <- vkGetQueryPoolResults' (deviceHandle (device)) (queryPool) (firstQuery) (queryCount) (CSize (dataSize)) (data') (stride) (flags)+ when (r < SUCCESS) (throwIO (VulkanException r))+ pure $ (r)+++-- | VkQueryPoolCreateInfo - Structure specifying parameters of a newly+-- created query pool+--+-- = Description+--+-- @pipelineStatistics@ is ignored if+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' is not+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS'.+--+-- == Valid Usage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineStatisticsQuery pipeline statistics queries>+-- feature is not enabled,+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS'+--+-- - If 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' is+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS',+-- @pipelineStatistics@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlagBits'+-- values+--+-- - If 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' is+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',+-- the @pNext@ chain /must/ include a structure of type+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.QueryPoolPerformanceCreateInfoKHR'+--+-- - @queryCount@ /must/ be greater than 0+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.QueryPoolCreateInfoINTEL'+-- or+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.QueryPoolPerformanceCreateInfoKHR'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+--+-- - 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlags',+-- 'Graphics.Vulkan.Core10.Enums.QueryPoolCreateFlags.QueryPoolCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createQueryPool'+data QueryPoolCreateInfo (es :: [Type]) = QueryPoolCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: QueryPoolCreateFlags+ , -- | 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' is a+ -- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' value specifying the+ -- type of queries managed by the pool.+ queryType :: QueryType+ , -- | @queryCount@ is the number of queries managed by the pool.+ queryCount :: Word32+ , -- | @pipelineStatistics@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlagBits'+ -- specifying which counters will be returned in queries on the new pool,+ -- as described below in+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats>.+ pipelineStatistics :: QueryPipelineStatisticFlags+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (QueryPoolCreateInfo es)++instance Extensible QueryPoolCreateInfo where+ extensibleType = STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO+ setNext x next = x{next = next}+ getNext QueryPoolCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends QueryPoolCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @QueryPoolCreateInfoINTEL = Just f+ | Just Refl <- eqT @e @QueryPoolPerformanceCreateInfoKHR = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (QueryPoolCreateInfo es) where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p QueryPoolCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr QueryPoolCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr QueryType)) (queryType)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (queryCount)+ lift $ poke ((p `plusPtr` 28 :: Ptr QueryPipelineStatisticFlags)) (pipelineStatistics)+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 20 :: Ptr QueryType)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ lift $ f++instance PeekChain es => FromCStruct (QueryPoolCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @QueryPoolCreateFlags ((p `plusPtr` 16 :: Ptr QueryPoolCreateFlags))+ queryType <- peek @QueryType ((p `plusPtr` 20 :: Ptr QueryType))+ queryCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ pipelineStatistics <- peek @QueryPipelineStatisticFlags ((p `plusPtr` 28 :: Ptr QueryPipelineStatisticFlags))+ pure $ QueryPoolCreateInfo+ next flags queryType queryCount pipelineStatistics++instance es ~ '[] => Zero (QueryPoolCreateInfo es) where+ zero = QueryPoolCreateInfo+ ()+ zero+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core10/Query.hs-boot view
@@ -0,0 +1,17 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Query (QueryPoolCreateInfo) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+type role QueryPoolCreateInfo nominal+data QueryPoolCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (QueryPoolCreateInfo es)+instance Show (Chain es) => Show (QueryPoolCreateInfo es)++instance PeekChain es => FromCStruct (QueryPoolCreateInfo es)+
src/Graphics/Vulkan/Core10/Queue.hs view
@@ -1,955 +1,792 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.Queue- ( VkPipelineStageFlagBits(..)- , pattern VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT- , pattern VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT- , pattern VK_PIPELINE_STAGE_VERTEX_INPUT_BIT- , pattern VK_PIPELINE_STAGE_VERTEX_SHADER_BIT- , pattern VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT- , pattern VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT- , pattern VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT- , pattern VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT- , pattern VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT- , pattern VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT- , pattern VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT- , pattern VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT- , pattern VK_PIPELINE_STAGE_TRANSFER_BIT- , pattern VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT- , pattern VK_PIPELINE_STAGE_HOST_BIT- , pattern VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT- , pattern VK_PIPELINE_STAGE_ALL_COMMANDS_BIT- , VkQueue- , VkCommandBuffer- , VkFence- , VkSemaphore- , vkGetDeviceQueue- , vkQueueSubmit- , vkQueueWaitIdle- , vkDeviceWaitIdle- , VkSubmitInfo(..)- , VkPipelineStageFlags- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- )----- ** VkPipelineStageFlagBits---- | VkPipelineStageFlagBits - Bitmask specifying pipeline stages------ = Description------ - @VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT@ specifies the stage of the--- pipeline where any commands are initially received by the queue.------ - @VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX@ specifies the stage of--- the pipeline where device-side generation of commands via--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCmdProcessCommandsNVX'--- is handled.------ - @VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT@ specifies the stage of the--- pipeline where Draw\/DispatchIndirect data structures are consumed.--- This stage also includes reading commands written by--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCmdProcessCommandsNVX'.------ - @VK_PIPELINE_STAGE_VERTEX_INPUT_BIT@ specifies the stage of the--- pipeline where vertex and index buffers are consumed.------ - @VK_PIPELINE_STAGE_VERTEX_SHADER_BIT@ specifies the vertex shader--- stage.------ - @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ specifies the--- tessellation control shader stage.------ - @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@ specifies the--- tessellation evaluation shader stage.------ - @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@ specifies the geometry--- shader stage.------ - @VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT@ specifies the fragment--- shader stage.------ - @VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT@ specifies the stage of--- the pipeline where early fragment tests (depth and stencil tests--- before fragment shading) are performed. This stage also includes--- [subpass load--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-load-store-ops)--- for framebuffer attachments with a depth\/stencil format.------ - @VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT@ specifies the stage of--- the pipeline where late fragment tests (depth and stencil tests--- after fragment shading) are performed. This stage also includes--- [subpass store--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-load-store-ops)--- for framebuffer attachments with a depth\/stencil format.------ - @VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT@ specifies the stage--- of the pipeline after blending where the final color values are--- output from the pipeline. This stage also includes [subpass load and--- store--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-load-store-ops)--- and multisample resolve operations for framebuffer attachments with--- a color format.------ - @VK_PIPELINE_STAGE_TRANSFER_BIT@ specifies the execution of copy--- commands. This includes the operations resulting from all [copy--- commands](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#copies),--- [clear--- commands](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#clears)--- (with the exception of--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdClearAttachments'),--- and--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyQueryPoolResults'.------ - @VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT@ specifies the execution of a--- compute shader.------ - @VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT@ specifies the final stage in--- the pipeline where operations generated by all commands complete--- execution.------ - @VK_PIPELINE_STAGE_HOST_BIT@ specifies a pseudo-stage indicating--- execution on the host of reads\/writes of device memory. This stage--- is not invoked by any commands recorded in a command buffer.------ - @VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT@ specifies the execution of all--- graphics pipeline stages, and is equivalent to the logical OR of:------ - @VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT@------ - @VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT@------ - @VK_PIPELINE_STAGE_VERTEX_INPUT_BIT@------ - @VK_PIPELINE_STAGE_VERTEX_SHADER_BIT@------ - @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@------ - @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@------ - @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@------ - @VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT@------ - @VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT@------ - @VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT@------ - @VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT@------ - @VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT@------ - @VK_PIPELINE_STAGE_ALL_COMMANDS_BIT@ is equivalent to the logical OR--- of every other pipeline stage flag that is supported on the queue it--- is used with.------ __Note__------ An execution dependency with only @VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT@--- in the destination stage mask will only prevent that stage from--- executing in subsequently submitted commands. As this stage does not--- perform any actual execution, this is not observable - in effect, it--- does not delay processing of subsequent commands. Similarly an execution--- dependency with only @VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT@ in the source--- stage mask will effectively not wait for any prior commands to complete.------ When defining a memory dependency, using only--- @VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT@ or--- @VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT@ would never make any accesses--- available and\/or visible because these stages do not access memory.------ @VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT@ and--- @VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT@ are useful for accomplishing layout--- transitions and queue ownership operations when the required execution--- dependency is satisfied by other means - for example, semaphore--- operations between queues.------ = See Also------ 'VkPipelineStageFlags',--- 'Graphics.Vulkan.Extensions.VK_AMD_buffer_marker.vkCmdWriteBufferMarkerAMD',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdWriteTimestamp'-newtype VkPipelineStageFlagBits = VkPipelineStageFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineStageFlagBits where- showsPrec _ VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = showString "VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"- showsPrec _ VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = showString "VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"- showsPrec _ VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = showString "VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"- showsPrec _ VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = showString "VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"- showsPrec _ VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = showString "VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"- showsPrec _ VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = showString "VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"- showsPrec _ VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = showString "VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"- showsPrec _ VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = showString "VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"- showsPrec _ VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = showString "VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"- showsPrec _ VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = showString "VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"- showsPrec _ VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = showString "VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"- showsPrec _ VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = showString "VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"- showsPrec _ VK_PIPELINE_STAGE_TRANSFER_BIT = showString "VK_PIPELINE_STAGE_TRANSFER_BIT"- showsPrec _ VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = showString "VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT"- showsPrec _ VK_PIPELINE_STAGE_HOST_BIT = showString "VK_PIPELINE_STAGE_HOST_BIT"- showsPrec _ VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = showString "VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"- showsPrec _ VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = showString "VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkPipelineStageFlagBits 0x00020000) = showString "VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX"- showsPrec p (VkPipelineStageFlagBits x) = showParen (p >= 11) (showString "VkPipelineStageFlagBits " . showsPrec 11 x)--instance Read VkPipelineStageFlagBits where- readPrec = parens ( choose [ ("VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT", pure VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT)- , ("VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT", pure VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT)- , ("VK_PIPELINE_STAGE_VERTEX_INPUT_BIT", pure VK_PIPELINE_STAGE_VERTEX_INPUT_BIT)- , ("VK_PIPELINE_STAGE_VERTEX_SHADER_BIT", pure VK_PIPELINE_STAGE_VERTEX_SHADER_BIT)- , ("VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT", pure VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT)- , ("VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT", pure VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT)- , ("VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT", pure VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT)- , ("VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT", pure VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT)- , ("VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT", pure VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT)- , ("VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT", pure VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT)- , ("VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT", pure VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT)- , ("VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT", pure VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT)- , ("VK_PIPELINE_STAGE_TRANSFER_BIT", pure VK_PIPELINE_STAGE_TRANSFER_BIT)- , ("VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT", pure VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT)- , ("VK_PIPELINE_STAGE_HOST_BIT", pure VK_PIPELINE_STAGE_HOST_BIT)- , ("VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT", pure VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT)- , ("VK_PIPELINE_STAGE_ALL_COMMANDS_BIT", pure VK_PIPELINE_STAGE_ALL_COMMANDS_BIT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX", pure (VkPipelineStageFlagBits 0x00020000))- ] +++- prec 10 (do- expectP (Ident "VkPipelineStageFlagBits")- v <- step readPrec- pure (VkPipelineStageFlagBits v)- )- )---- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"-pattern VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT :: VkPipelineStageFlagBits-pattern VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = VkPipelineStageFlagBits 0x00000001---- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"-pattern VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT :: VkPipelineStageFlagBits-pattern VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = VkPipelineStageFlagBits 0x00000002---- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"-pattern VK_PIPELINE_STAGE_VERTEX_INPUT_BIT :: VkPipelineStageFlagBits-pattern VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = VkPipelineStageFlagBits 0x00000004---- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"-pattern VK_PIPELINE_STAGE_VERTEX_SHADER_BIT :: VkPipelineStageFlagBits-pattern VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = VkPipelineStageFlagBits 0x00000008---- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"-pattern VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT :: VkPipelineStageFlagBits-pattern VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = VkPipelineStageFlagBits 0x00000010---- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"-pattern VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT :: VkPipelineStageFlagBits-pattern VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = VkPipelineStageFlagBits 0x00000020---- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"-pattern VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT :: VkPipelineStageFlagBits-pattern VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = VkPipelineStageFlagBits 0x00000040---- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"-pattern VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT :: VkPipelineStageFlagBits-pattern VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = VkPipelineStageFlagBits 0x00000080---- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"-pattern VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT :: VkPipelineStageFlagBits-pattern VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = VkPipelineStageFlagBits 0x00000100---- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"-pattern VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT :: VkPipelineStageFlagBits-pattern VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = VkPipelineStageFlagBits 0x00000200---- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"-pattern VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT :: VkPipelineStageFlagBits-pattern VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = VkPipelineStageFlagBits 0x00000400---- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"-pattern VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT :: VkPipelineStageFlagBits-pattern VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = VkPipelineStageFlagBits 0x00000800---- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_TRANSFER_BIT"-pattern VK_PIPELINE_STAGE_TRANSFER_BIT :: VkPipelineStageFlagBits-pattern VK_PIPELINE_STAGE_TRANSFER_BIT = VkPipelineStageFlagBits 0x00001000---- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT"-pattern VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT :: VkPipelineStageFlagBits-pattern VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = VkPipelineStageFlagBits 0x00002000---- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_HOST_BIT"-pattern VK_PIPELINE_STAGE_HOST_BIT :: VkPipelineStageFlagBits-pattern VK_PIPELINE_STAGE_HOST_BIT = VkPipelineStageFlagBits 0x00004000---- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"-pattern VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT :: VkPipelineStageFlagBits-pattern VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = VkPipelineStageFlagBits 0x00008000---- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"-pattern VK_PIPELINE_STAGE_ALL_COMMANDS_BIT :: VkPipelineStageFlagBits-pattern VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = VkPipelineStageFlagBits 0x00010000--- | Dummy data to tag the 'Ptr' with-data VkQueue_T--- | VkQueue - Opaque handle to a queue object------ = See Also------ 'vkGetDeviceQueue',--- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory.vkGetDeviceQueue2',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkQueueBeginDebugUtilsLabelEXT',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkQueueBindSparse',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkQueueEndDebugUtilsLabelEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkQueueInsertDebugUtilsLabelEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkQueuePresentKHR',--- 'vkQueueSubmit', 'vkQueueWaitIdle'-type VkQueue = Ptr VkQueue_T--- | Dummy data to tag the 'Ptr' with-data VkCommandBuffer_T--- | VkCommandBuffer - Opaque handle to a command buffer object------ = See Also------ 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkCmdProcessCommandsInfoNVX',--- 'VkSubmitInfo',--- 'Graphics.Vulkan.Core10.CommandBuffer.vkAllocateCommandBuffers',--- 'Graphics.Vulkan.Core10.CommandBuffer.vkBeginCommandBuffer',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkCmdBeginDebugUtilsLabelEXT',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBeginQuery',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBeginRenderPass',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindDescriptorSets',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindIndexBuffer',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindPipeline',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBindVertexBuffers',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBlitImage',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdClearAttachments',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdClearColorImage',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdClearDepthStencilImage',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyBuffer',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyBufferToImage',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyImage',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyImageToBuffer',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdCopyQueryPoolResults',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.vkCmdDebugMarkerBeginEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.vkCmdDebugMarkerEndEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.vkCmdDebugMarkerInsertEXT',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDispatch',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.vkCmdDispatchBase',--- 'Graphics.Vulkan.Extensions.VK_KHR_device_group.vkCmdDispatchBaseKHR',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDispatchIndirect',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDraw',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDrawIndexed',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDrawIndexedIndirect',--- 'Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count.vkCmdDrawIndexedIndirectCountAMD',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDrawIndirect',--- 'Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count.vkCmdDrawIndirectCountAMD',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkCmdEndDebugUtilsLabelEXT',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdEndQuery',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdEndRenderPass',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdExecuteCommands',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdFillBuffer',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.vkCmdInsertDebugUtilsLabelEXT',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdNextSubpass',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdPipelineBarrier',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCmdProcessCommandsNVX',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdPushConstants',--- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.vkCmdPushDescriptorSetKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.vkCmdPushDescriptorSetWithTemplateKHR',--- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.vkCmdReserveSpaceForCommandsNVX',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdResetEvent',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdResetQueryPool',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdResolveImage',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetBlendConstants',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetDepthBias',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetDepthBounds',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.vkCmdSetDeviceMask',--- 'Graphics.Vulkan.Extensions.VK_KHR_device_group.vkCmdSetDeviceMaskKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.vkCmdSetDiscardRectangleEXT',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetEvent',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetLineWidth',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.vkCmdSetSampleLocationsEXT',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetScissor',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetStencilCompareMask',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetStencilReference',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetStencilWriteMask',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetViewport',--- 'Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling.vkCmdSetViewportWScalingNV',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdUpdateBuffer',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdWaitEvents',--- 'Graphics.Vulkan.Extensions.VK_AMD_buffer_marker.vkCmdWriteBufferMarkerAMD',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdWriteTimestamp',--- 'Graphics.Vulkan.Core10.CommandBuffer.vkEndCommandBuffer',--- 'Graphics.Vulkan.Core10.CommandBuffer.vkFreeCommandBuffers',--- 'Graphics.Vulkan.Core10.CommandBuffer.vkResetCommandBuffer'-type VkCommandBuffer = Ptr VkCommandBuffer_T--- | Dummy data to tag the 'Ptr' with-data VkFence_T--- | VkFence - Opaque handle to a fence object------ = See Also------ 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkAcquireNextImageInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.VkFenceGetFdInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.VkFenceGetWin32HandleInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.VkImportFenceFdInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.VkImportFenceWin32HandleInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkAcquireNextImageKHR',--- 'Graphics.Vulkan.Core10.Fence.vkCreateFence',--- 'Graphics.Vulkan.Core10.Fence.vkDestroyFence',--- 'Graphics.Vulkan.Core10.Fence.vkGetFenceStatus',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkQueueBindSparse',--- 'vkQueueSubmit',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkRegisterDeviceEventEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkRegisterDisplayEventEXT',--- 'Graphics.Vulkan.Core10.Fence.vkResetFences',--- 'Graphics.Vulkan.Core10.Fence.vkWaitForFences'-type VkFence = Ptr VkFence_T--- | Dummy data to tag the 'Ptr' with-data VkSemaphore_T--- | VkSemaphore - Opaque handle to a semaphore object------ = See Also------ 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkAcquireNextImageInfoKHR',--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkBindSparseInfo',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.VkImportSemaphoreFdInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.VkImportSemaphoreWin32HandleInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkPresentInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.VkSemaphoreGetFdInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.VkSemaphoreGetWin32HandleInfoKHR',--- 'VkSubmitInfo',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkAcquireNextImageKHR',--- 'Graphics.Vulkan.Core10.QueueSemaphore.vkCreateSemaphore',--- 'Graphics.Vulkan.Core10.QueueSemaphore.vkDestroySemaphore'-type VkSemaphore = Ptr VkSemaphore_T--- | vkGetDeviceQueue - Get a queue handle from a device------ = Parameters------ - @device@ is the logical device that owns the queue.------ - @queueFamilyIndex@ is the index of the queue family to which the--- queue belongs.------ - @queueIndex@ is the index within this queue family of the queue to--- retrieve.------ - @pQueue@ is a pointer to a @VkQueue@ object that will be filled with--- the handle for the requested queue.------ == Valid Usage------ - @queueFamilyIndex@ /must/ be one of the queue family indices--- specified when @device@ was created, via the--- @VkDeviceQueueCreateInfo@ structure------ - @queueIndex@ /must/ be less than the number of queues created for--- the specified queue family index when @device@ was created, via the--- @queueCount@ member of the @VkDeviceQueueCreateInfo@ structure------ - 'Graphics.Vulkan.Core10.Device.VkDeviceQueueCreateInfo'::@flags@--- /must/ have been set to zero when @device@ was created------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pQueue@ /must/ be a valid pointer to a @VkQueue@ handle------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkQueue'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetDeviceQueue" vkGetDeviceQueue :: ("device" ::: VkDevice) -> ("queueFamilyIndex" ::: Word32) -> ("queueIndex" ::: Word32) -> ("pQueue" ::: Ptr VkQueue) -> IO ()--- | vkQueueSubmit - Submits a sequence of semaphores or command buffers to a--- queue------ = Parameters------ - @queue@ is the queue that the command buffers will be submitted to.------ - @submitCount@ is the number of elements in the @pSubmits@ array.------ - @pSubmits@ is a pointer to an array of 'VkSubmitInfo' structures,--- each specifying a command buffer submission batch.------ - @fence@ is an /optional/ handle to a fence to be signaled once all--- submitted command buffers have completed execution. If @fence@ is--- not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', it defines a--- [fence signal--- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences-signaling).------ = Description------ __Note__------ Submission can be a high overhead operation, and applications /should/--- attempt to batch work together into as few calls to @vkQueueSubmit@ as--- possible.------ @vkQueueSubmit@ is a [queue submission--- command](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-submission),--- with each batch defined by an element of @pSubmits@ as an instance of--- the 'VkSubmitInfo' structure. Batches begin execution in the order they--- appear in @pSubmits@, but /may/ complete out of order.------ Fence and semaphore operations submitted with 'vkQueueSubmit' have--- additional ordering constraints compared to other submission commands,--- with dependencies involving previous and subsequent queue operations.--- Information about these additional constraints can be found in the--- [semaphore](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores)--- and--- [fence](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences)--- sections of [the synchronization--- chapter](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization).------ Details on the interaction of @pWaitDstStageMask@ with synchronization--- are described in the [semaphore wait--- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-waiting)--- section of [the synchronization--- chapter](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization).------ The order that batches appear in @pSubmits@ is used to determine--- [submission--- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order),--- and thus all the [implicit ordering--- guarantees](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-implicit)--- that respect it. Other than these implicit ordering guarantees and any--- [explicit synchronization--- primitives](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization),--- these batches /may/ overlap or otherwise execute out of order.------ If any command buffer submitted to this queue is in the [executable--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle),--- it is moved to the [pending--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).--- Once execution of all submissions of a command buffer complete, it moves--- from the [pending--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle),--- back to the [executable--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).--- If a command buffer was recorded with the--- @VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT@ flag, it instead moves--- back to the [invalid--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).------ If @vkQueueSubmit@ fails, it /may/ return @VK_ERROR_OUT_OF_HOST_MEMORY@--- or @VK_ERROR_OUT_OF_DEVICE_MEMORY@. If it does, the implementation--- /must/ ensure that the state and contents of any resources or--- synchronization primitives referenced by the submitted command buffers--- and any semaphores referenced by @pSubmits@ is unaffected by the call or--- its failure. If @vkQueueSubmit@ fails in such a way that the--- implementation is unable to make that guarantee, the implementation--- /must/ return @VK_ERROR_DEVICE_LOST@. See [Lost--- Device](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-lost-device).------ == Valid Usage------ - If @fence@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @fence@ /must/ be unsignaled------ - If @fence@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @fence@ /must/ not be associated with any other queue command that--- has not yet completed execution on that queue------ - Any calls to--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetEvent',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdResetEvent' or--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdWaitEvents' that--- have been recorded into any of the command buffer elements of the--- @pCommandBuffers@ member of any element of @pSubmits@, /must/ not--- reference any 'Graphics.Vulkan.Core10.Event.VkEvent' that is--- referenced by any of those commands in a command buffer that has--- been submitted to another queue and is still in the /pending state/.------ - Any stage flag included in any element of the @pWaitDstStageMask@--- member of any element of @pSubmits@ /must/ be a pipeline stage--- supported by one of the capabilities of @queue@, as specified in the--- [table of supported pipeline--- stages](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-supported).------ - Each element of the @pSignalSemaphores@ member of any element of--- @pSubmits@ /must/ be unsignaled when the semaphore signal operation--- it defines is executed on the device------ - When a semaphore unsignal operation defined by any element of the--- @pWaitSemaphores@ member of any element of @pSubmits@ executes on--- @queue@, no other queue /must/ be waiting on the same semaphore.------ - All elements of the @pWaitSemaphores@ member of all elements of--- @pSubmits@ /must/ be semaphores that are signaled, or have--- [semaphore signal--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-signaling)--- previously submitted for execution.------ - Each element of the @pCommandBuffers@ member of each element of--- @pSubmits@ /must/ be in the [pending or executable--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).------ - If any element of the @pCommandBuffers@ member of any element of--- @pSubmits@ was not recorded with the--- @VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT@, it /must/ not be in--- the [pending--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).------ - Any [secondary command buffers--- recorded](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-secondary)--- into any element of the @pCommandBuffers@ member of any element of--- @pSubmits@ /must/ be in the [pending or executable--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).------ - If any [secondary command buffers--- recorded](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-secondary)--- into any element of the @pCommandBuffers@ member of any element of--- @pSubmits@ was not recorded with the--- @VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT@, it /must/ not be in--- the [pending--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle).------ - Each element of the @pCommandBuffers@ member of each element of--- @pSubmits@ /must/ have been allocated from a @VkCommandPool@ that--- was created for the same queue family @queue@ belongs to.------ == Valid Usage (Implicit)------ - @queue@ /must/ be a valid @VkQueue@ handle------ - If @submitCount@ is not @0@, @pSubmits@ /must/ be a valid pointer to--- an array of @submitCount@ valid @VkSubmitInfo@ structures------ - If @fence@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @fence@ /must/ be a valid @VkFence@ handle------ - Both of @fence@, and @queue@ that are valid handles /must/ have been--- created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @queue@ /must/ be externally synchronized------ - Host access to @pSubmits@[].pWaitSemaphores[] /must/ be externally--- synchronized------ - Host access to @pSubmits@[].pSignalSemaphores[] /must/ be externally--- synchronized------ - Host access to @fence@ /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | - | - | Any | - |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_DEVICE_LOST@------ = See Also------ 'VkFence', 'VkQueue', 'VkSubmitInfo'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkQueueSubmit" vkQueueSubmit :: ("queue" ::: VkQueue) -> ("submitCount" ::: Word32) -> ("pSubmits" ::: Ptr VkSubmitInfo) -> ("fence" ::: VkFence) -> IO VkResult--- | vkQueueWaitIdle - Wait for a queue to become idle------ = Parameters------ - @queue@ is the queue on which to wait.------ = Description------ @vkQueueWaitIdle@ is equivalent to submitting a fence to a queue and--- waiting with an infinite timeout for that fence to signal.------ == Valid Usage (Implicit)------ - @queue@ /must/ be a valid @VkQueue@ handle------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | - | - | Any | - |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_DEVICE_LOST@------ = See Also------ 'VkQueue'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkQueueWaitIdle" vkQueueWaitIdle :: ("queue" ::: VkQueue) -> IO VkResult--- | vkDeviceWaitIdle - Wait for a device to become idle------ = Parameters------ - @device@ is the logical device to idle.------ = Description------ @vkDeviceWaitIdle@ is equivalent to calling @vkQueueWaitIdle@ for all--- queues owned by @device@.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ == Host Synchronization------ - Host access to all @VkQueue@ objects created from @device@ /must/ be--- externally synchronized------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_DEVICE_LOST@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDeviceWaitIdle" vkDeviceWaitIdle :: ("device" ::: VkDevice) -> IO VkResult--- | VkSubmitInfo - Structure specifying a queue submit operation------ = Description------ The order that command buffers appear in @pCommandBuffers@ is used to--- determine [submission--- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-submission-order),--- and thus all the [implicit ordering--- guarantees](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-implicit)--- that respect it. Other than these implicit ordering guarantees and any--- [explicit synchronization--- primitives](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization),--- these command buffers /may/ overlap or otherwise execute out of order.------ == Valid Usage------ - Each element of @pCommandBuffers@ /must/ not have been allocated--- with @VK_COMMAND_BUFFER_LEVEL_SECONDARY@------ - If the [geometry--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-geometryShader)--- feature is not enabled, each element of @pWaitDstStageMask@ /must/--- not contain @VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT@------ - If the [tessellation--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-tessellationShader)--- feature is not enabled, each element of @pWaitDstStageMask@ /must/--- not contain @VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT@ or--- @VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT@------ - Each element of @pWaitDstStageMask@ /must/ not include--- @VK_PIPELINE_STAGE_HOST_BIT@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_SUBMIT_INFO@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.VkD3D12FenceSubmitInfoKHR',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.VkDeviceGroupSubmitInfo',--- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory.VkProtectedSubmitInfo',--- 'Graphics.Vulkan.Extensions.VK_KHR_win32_keyed_mutex.VkWin32KeyedMutexAcquireReleaseInfoKHR',--- or--- 'Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex.VkWin32KeyedMutexAcquireReleaseInfoNV'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ - If @waitSemaphoreCount@ is not @0@, @pWaitSemaphores@ /must/ be a--- valid pointer to an array of @waitSemaphoreCount@ valid--- @VkSemaphore@ handles------ - If @waitSemaphoreCount@ is not @0@, @pWaitDstStageMask@ /must/ be a--- valid pointer to an array of @waitSemaphoreCount@ valid combinations--- of 'VkPipelineStageFlagBits' values------ - Each element of @pWaitDstStageMask@ /must/ not be @0@------ - If @commandBufferCount@ is not @0@, @pCommandBuffers@ /must/ be a--- valid pointer to an array of @commandBufferCount@ valid--- @VkCommandBuffer@ handles------ - If @signalSemaphoreCount@ is not @0@, @pSignalSemaphores@ /must/ be--- a valid pointer to an array of @signalSemaphoreCount@ valid--- @VkSemaphore@ handles------ - Each of the elements of @pCommandBuffers@, the elements of--- @pSignalSemaphores@, and the elements of @pWaitSemaphores@ that are--- valid handles /must/ have been created, allocated, or retrieved from--- the same @VkDevice@------ = See Also------ 'VkCommandBuffer', 'VkPipelineStageFlags', 'VkSemaphore',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkQueueSubmit'-data VkSubmitInfo = VkSubmitInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @waitSemaphoreCount@ is the number of semaphores upon which to wait- -- before executing the command buffers for the batch.- vkWaitSemaphoreCount :: Word32- , -- | @pWaitSemaphores@ is a pointer to an array of semaphores upon which to- -- wait before the command buffers for this batch begin execution. If- -- semaphores to wait on are provided, they define a [semaphore wait- -- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-waiting).- vkPWaitSemaphores :: Ptr VkSemaphore- , -- | @pWaitDstStageMask@ is a pointer to an array of pipeline stages at which- -- each corresponding semaphore wait will occur.- vkPWaitDstStageMask :: Ptr VkPipelineStageFlags- , -- | @commandBufferCount@ is the number of command buffers to execute in the- -- batch.- vkCommandBufferCount :: Word32- , -- | @pCommandBuffers@ is a pointer to an array of command buffers to execute- -- in the batch.- vkPCommandBuffers :: Ptr VkCommandBuffer- , -- | @signalSemaphoreCount@ is the number of semaphores to be signaled once- -- the commands specified in @pCommandBuffers@ have completed execution.- vkSignalSemaphoreCount :: Word32- , -- | @pSignalSemaphores@ is a pointer to an array of semaphores which will be- -- signaled when the command buffers for this batch have completed- -- execution. If semaphores to be signaled are provided, they define a- -- [semaphore signal- -- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-signaling).- vkPSignalSemaphores :: Ptr VkSemaphore- }- deriving (Eq, Show)--instance Storable VkSubmitInfo where- sizeOf ~_ = 72- alignment ~_ = 8- peek ptr = VkSubmitInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 64)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkSubmitInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkSubmitInfo))- *> poke (ptr `plusPtr` 16) (vkWaitSemaphoreCount (poked :: VkSubmitInfo))- *> poke (ptr `plusPtr` 24) (vkPWaitSemaphores (poked :: VkSubmitInfo))- *> poke (ptr `plusPtr` 32) (vkPWaitDstStageMask (poked :: VkSubmitInfo))- *> poke (ptr `plusPtr` 40) (vkCommandBufferCount (poked :: VkSubmitInfo))- *> poke (ptr `plusPtr` 48) (vkPCommandBuffers (poked :: VkSubmitInfo))- *> poke (ptr `plusPtr` 56) (vkSignalSemaphoreCount (poked :: VkSubmitInfo))- *> poke (ptr `plusPtr` 64) (vkPSignalSemaphores (poked :: VkSubmitInfo))--- | VkPipelineStageFlags - Bitmask of VkPipelineStageFlagBits------ = Description------ @VkPipelineStageFlags@ is a bitmask type for setting a mask of zero or--- more 'VkPipelineStageFlagBits'.------ = See Also------ 'VkPipelineStageFlagBits', 'VkSubmitInfo',--- 'Graphics.Vulkan.Core10.Pass.VkSubpassDependency',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdPipelineBarrier',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdResetEvent',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdSetEvent',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdWaitEvents'-type VkPipelineStageFlags = VkPipelineStageFlagBits+{-# language CPP #-}+module Graphics.Vulkan.Core10.Queue ( getDeviceQueue+ , queueSubmit+ , queueWaitIdle+ , deviceWaitIdle+ , SubmitInfo(..)+ ) where++import Control.Exception.Base (bracket)+import Control.Monad (unless)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import GHC.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32 (D3D12FenceSubmitInfoKHR)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDeviceWaitIdle))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetDeviceQueue))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkQueueSubmit))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkQueueWaitIdle))+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupSubmitInfo)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.Core10.Handles (Fence)+import Graphics.Vulkan.Core10.Handles (Fence(..))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (PerformanceQuerySubmitInfoKHR)+import Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import {-# SOURCE #-} Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (ProtectedSubmitInfo)+import Graphics.Vulkan.Core10.Handles (Queue)+import Graphics.Vulkan.Core10.Handles (Queue(..))+import Graphics.Vulkan.Core10.Handles (Queue(Queue))+import Graphics.Vulkan.Core10.Handles (Queue_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Handles (Semaphore)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (TimelineSemaphoreSubmitInfo)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_win32_keyed_mutex (Win32KeyedMutexAcquireReleaseInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex (Win32KeyedMutexAcquireReleaseInfoNV)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBMIT_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetDeviceQueue+ :: FunPtr (Ptr Device_T -> Word32 -> Word32 -> Ptr (Ptr Queue_T) -> IO ()) -> Ptr Device_T -> Word32 -> Word32 -> Ptr (Ptr Queue_T) -> IO ()++-- | vkGetDeviceQueue - Get a queue handle from a device+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the queue.+--+-- - @queueFamilyIndex@ is the index of the queue family to which the+-- queue belongs.+--+-- - @queueIndex@ is the index within this queue family of the queue to+-- retrieve.+--+-- - @pQueue@ is a pointer to a 'Graphics.Vulkan.Core10.Handles.Queue'+-- object that will be filled with the handle for the requested queue.+--+-- = Description+--+-- 'getDeviceQueue' /must/ only be used to get queues that were created+-- with the 'Graphics.Vulkan.Core10.BaseType.Flags' parameter of+-- 'Graphics.Vulkan.Core10.Device.DeviceQueueCreateInfo' set to zero. To+-- get queues that were created with a non-zero+-- 'Graphics.Vulkan.Core10.BaseType.Flags' parameter use+-- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.getDeviceQueue2'.+--+-- == Valid Usage+--+-- - @queueFamilyIndex@ /must/ be one of the queue family indices+-- specified when 'Graphics.Vulkan.Core10.Handles.Device' was created,+-- via the 'Graphics.Vulkan.Core10.Device.DeviceQueueCreateInfo'+-- structure+--+-- - @queueIndex@ /must/ be less than the number of queues created for+-- the specified queue family index when+-- 'Graphics.Vulkan.Core10.Handles.Device' was created, via the+-- @queueCount@ member of the+-- 'Graphics.Vulkan.Core10.Device.DeviceQueueCreateInfo' structure+--+-- - 'Graphics.Vulkan.Core10.Device.DeviceQueueCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- /must/ have been set to zero when+-- 'Graphics.Vulkan.Core10.Handles.Device' was created+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pQueue@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.Queue' handle+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Queue'+getDeviceQueue :: Device -> ("queueFamilyIndex" ::: Word32) -> ("queueIndex" ::: Word32) -> IO (Queue)+getDeviceQueue device queueFamilyIndex queueIndex = evalContT $ do+ let cmds = deviceCmds (device :: Device)+ let vkGetDeviceQueue' = mkVkGetDeviceQueue (pVkGetDeviceQueue cmds)+ pPQueue <- ContT $ bracket (callocBytes @(Ptr Queue_T) 8) free+ lift $ vkGetDeviceQueue' (deviceHandle (device)) (queueFamilyIndex) (queueIndex) (pPQueue)+ pQueue <- lift $ peek @(Ptr Queue_T) pPQueue+ pure $ (((\h -> Queue h cmds ) pQueue))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkQueueSubmit+ :: FunPtr (Ptr Queue_T -> Word32 -> Ptr (SubmitInfo a) -> Fence -> IO Result) -> Ptr Queue_T -> Word32 -> Ptr (SubmitInfo a) -> Fence -> IO Result++-- | vkQueueSubmit - Submits a sequence of semaphores or command buffers to a+-- queue+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Queue' is the queue that the command+-- buffers will be submitted to.+--+-- - @submitCount@ is the number of elements in the @pSubmits@ array.+--+-- - @pSubmits@ is a pointer to an array of 'SubmitInfo' structures, each+-- specifying a command buffer submission batch.+--+-- - 'Graphics.Vulkan.Core10.Handles.Fence' is an /optional/ handle to a+-- fence to be signaled once all submitted command buffers have+-- completed execution. If 'Graphics.Vulkan.Core10.Handles.Fence' is+-- not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', it defines a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signaling fence signal operation>.+--+-- = Description+--+-- Note+--+-- Submission can be a high overhead operation, and applications /should/+-- attempt to batch work together into as few calls to 'queueSubmit' as+-- possible.+--+-- 'queueSubmit' is a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submission queue submission command>,+-- with each batch defined by an element of @pSubmits@. Batches begin+-- execution in the order they appear in @pSubmits@, but /may/ complete out+-- of order.+--+-- Fence and semaphore operations submitted with 'queueSubmit' have+-- additional ordering constraints compared to other submission commands,+-- with dependencies involving previous and subsequent queue operations.+-- Information about these additional constraints can be found in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores semaphore>+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences fence>+-- sections of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization the synchronization chapter>.+--+-- Details on the interaction of @pWaitDstStageMask@ with synchronization+-- are described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>+-- section of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization the synchronization chapter>.+--+-- The order that batches appear in @pSubmits@ is used to determine+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>,+-- and thus all the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-implicit implicit ordering guarantees>+-- that respect it. Other than these implicit ordering guarantees and any+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization explicit synchronization primitives>,+-- these batches /may/ overlap or otherwise execute out of order.+--+-- If any command buffer submitted to this queue is in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle executable state>,+-- it is moved to the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>.+-- Once execution of all submissions of a command buffer complete, it moves+-- from the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>,+-- back to the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle executable state>.+-- If a command buffer was recorded with the+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT'+-- flag, it instead moves to the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle invalid state>.+--+-- If 'queueSubmit' fails, it /may/ return+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' or+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'. If it+-- does, the implementation /must/ ensure that the state and contents of+-- any resources or synchronization primitives referenced by the submitted+-- command buffers and any semaphores referenced by @pSubmits@ is+-- unaffected by the call or its failure. If 'queueSubmit' fails in such a+-- way that the implementation is unable to make that guarantee, the+-- implementation /must/ return+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'. See+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>.+--+-- == Valid Usage+--+-- - If 'Graphics.Vulkan.Core10.Handles.Fence' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Fence' /must/ be unsignaled+--+-- - If 'Graphics.Vulkan.Core10.Handles.Fence' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Fence' /must/ not be associated with+-- any other queue command that has not yet completed execution on that+-- queue+--+-- - Any calls to+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdSetEvent',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdResetEvent' or+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents' that+-- have been recorded into any of the command buffer elements of the+-- @pCommandBuffers@ member of any element of @pSubmits@, /must/ not+-- reference any 'Graphics.Vulkan.Core10.Handles.Event' that is+-- referenced by any of those commands in a command buffer that has+-- been submitted to another queue and is still in the /pending state/+--+-- - Any stage flag included in any element of the @pWaitDstStageMask@+-- member of any element of @pSubmits@ /must/ be a pipeline stage+-- supported by one of the capabilities of+-- 'Graphics.Vulkan.Core10.Handles.Queue', as specified in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>+--+-- - Each element of the @pSignalSemaphores@ member of any element of+-- @pSubmits@ /must/ be unsignaled when the semaphore signal operation+-- it defines is executed on the device+--+-- - When a semaphore wait operation referring to a binary semaphore+-- defined by any element of the @pWaitSemaphores@ member of any+-- element of @pSubmits@ executes on+-- 'Graphics.Vulkan.Core10.Handles.Queue', there /must/ be no other+-- queues waiting on the same semaphore+--+-- - All elements of the @pWaitSemaphores@ member of all elements of+-- @pSubmits@ created with a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY'+-- /must/ reference a semaphore signal operation that has been+-- submitted for execution and any semaphore signal operations on which+-- it depends (if any) /must/ have also been submitted for execution+--+-- - Each element of the @pCommandBuffers@ member of each element of+-- @pSubmits@ /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending or executable state>+--+-- - If any element of the @pCommandBuffers@ member of any element of+-- @pSubmits@ was not recorded with the+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT',+-- it /must/ not be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>+--+-- - Any+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-secondary secondary command buffers recorded>+-- into any element of the @pCommandBuffers@ member of any element of+-- @pSubmits@ /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending or executable state>+--+-- - If any+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-secondary secondary command buffers recorded>+-- into any element of the @pCommandBuffers@ member of any element of+-- @pSubmits@ was not recorded with the+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT',+-- it /must/ not be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>+--+-- - Each element of the @pCommandBuffers@ member of each element of+-- @pSubmits@ /must/ have been allocated from a+-- 'Graphics.Vulkan.Core10.Handles.CommandPool' that was created for+-- the same queue family 'Graphics.Vulkan.Core10.Handles.Queue' belongs+-- to+--+-- - If any element of @pSubmits->pCommandBuffers@ includes a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquire Queue Family Transfer Acquire Operation>,+-- there /must/ exist a previously submitted+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-release Queue Family Transfer Release Operation>+-- on a queue in the queue family identified by the acquire operation,+-- with parameters matching the acquire operation as defined in the+-- definition of such+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquire acquire operations>,+-- and which happens-before the acquire operation+--+-- - If a command recorded into any element of @pCommandBuffers@ was a+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery' whose+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' was created with a+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' of+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',+-- the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#profiling-lock profiling lock>+-- /must/ have been held continuously on the+-- 'Graphics.Vulkan.Core10.Handles.Device' that+-- 'Graphics.Vulkan.Core10.Handles.Queue' was retrieved from,+-- throughout recording of those command buffers+--+-- - Any resource created with+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE'+-- that is read by an operation specified by @pSubmits@ /must/ not be+-- owned by any queue family other than the one which+-- 'Graphics.Vulkan.Core10.Handles.Queue' belongs to, at the time it is+-- executed+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Queue' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Queue' handle+--+-- - If @submitCount@ is not @0@, @pSubmits@ /must/ be a valid pointer to+-- an array of @submitCount@ valid 'SubmitInfo' structures+--+-- - If 'Graphics.Vulkan.Core10.Handles.Fence' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Fence' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Fence' handle+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.Fence', and+-- 'Graphics.Vulkan.Core10.Handles.Queue' that are valid handles of+-- non-ignored parameters /must/ have been created, allocated, or+-- retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Queue' /must/ be+-- externally synchronized+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Fence' /must/ be+-- externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | - | - | Any | - |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Fence',+-- 'Graphics.Vulkan.Core10.Handles.Queue', 'SubmitInfo'+queueSubmit :: PokeChain a => Queue -> ("submits" ::: Vector (SubmitInfo a)) -> Fence -> IO ()+queueSubmit queue submits fence = evalContT $ do+ let vkQueueSubmit' = mkVkQueueSubmit (pVkQueueSubmit (deviceCmds (queue :: Queue)))+ pPSubmits <- ContT $ allocaBytesAligned @(SubmitInfo _) ((Data.Vector.length (submits)) * 72) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPSubmits `plusPtr` (72 * (i)) :: Ptr (SubmitInfo _)) (e) . ($ ())) (submits)+ r <- lift $ vkQueueSubmit' (queueHandle (queue)) ((fromIntegral (Data.Vector.length $ (submits)) :: Word32)) (pPSubmits) (fence)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkQueueWaitIdle+ :: FunPtr (Ptr Queue_T -> IO Result) -> Ptr Queue_T -> IO Result++-- | vkQueueWaitIdle - Wait for a queue to become idle+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Queue' is the queue on which to+-- wait.+--+-- = Description+--+-- 'queueWaitIdle' is equivalent to submitting a fence to a queue and+-- waiting with an infinite timeout for that fence to signal.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Queue' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Queue' handle+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Queue' /must/ be+-- externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | - | - | Any | - |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Queue'+queueWaitIdle :: Queue -> IO ()+queueWaitIdle queue = do+ let vkQueueWaitIdle' = mkVkQueueWaitIdle (pVkQueueWaitIdle (deviceCmds (queue :: Queue)))+ r <- vkQueueWaitIdle' (queueHandle (queue))+ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDeviceWaitIdle+ :: FunPtr (Ptr Device_T -> IO Result) -> Ptr Device_T -> IO Result++-- | vkDeviceWaitIdle - Wait for a device to become idle+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device to+-- idle.+--+-- = Description+--+-- 'deviceWaitIdle' is equivalent to calling 'queueWaitIdle' for all queues+-- owned by 'Graphics.Vulkan.Core10.Handles.Device'.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- == Host Synchronization+--+-- - Host access to all 'Graphics.Vulkan.Core10.Handles.Queue' objects+-- created from 'Graphics.Vulkan.Core10.Handles.Device' /must/ be+-- externally synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device'+deviceWaitIdle :: Device -> IO ()+deviceWaitIdle device = do+ let vkDeviceWaitIdle' = mkVkDeviceWaitIdle (pVkDeviceWaitIdle (deviceCmds (device :: Device)))+ r <- vkDeviceWaitIdle' (deviceHandle (device))+ when (r < SUCCESS) (throwIO (VulkanException r))+++-- | VkSubmitInfo - Structure specifying a queue submit operation+--+-- = Description+--+-- The order that command buffers appear in @pCommandBuffers@ is used to+-- determine+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>,+-- and thus all the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-implicit implicit ordering guarantees>+-- that respect it. Other than these implicit ordering guarantees and any+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization explicit synchronization primitives>,+-- these command buffers /may/ overlap or otherwise execute out of order.+--+-- == Valid Usage+--+-- - Each element of @pCommandBuffers@ /must/ not have been allocated+-- with+-- 'Graphics.Vulkan.Core10.Enums.CommandBufferLevel.COMMAND_BUFFER_LEVEL_SECONDARY'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>+-- feature is not enabled, each element of @pWaitDstStageMask@ /must/+-- not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+-- feature is not enabled, each element of @pWaitDstStageMask@ /must/+-- not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'+--+-- - Each element of @pWaitDstStageMask@ /must/ not include+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'.+--+-- - If any element of @pWaitSemaphores@ or @pSignalSemaphores@ was+-- created with a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE',+-- then the @pNext@ chain /must/ include a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'+-- structure+--+-- - If the @pNext@ chain of this structure includes a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'+-- structure and any element of @pWaitSemaphores@ was created with a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE',+-- then its @waitSemaphoreValueCount@ member /must/ equal+-- @waitSemaphoreCount@+--+-- - If the @pNext@ chain of this structure includes a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'+-- structure and any element of @pSignalSemaphores@ was created with a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE',+-- then its @signalSemaphoreValueCount@ member /must/ equal+-- @signalSemaphoreCount@+--+-- - For each element of @pSignalSemaphores@ created with a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE'+-- the corresponding element of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'::pSignalSemaphoreValues+-- /must/ have a value greater than the current value of the semaphore+-- when the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>+-- is executed+--+-- - For each element of @pWaitSemaphores@ created with a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE'+-- the corresponding element of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'::pWaitSemaphoreValues+-- /must/ have a value which does not differ from the current value of+-- the semaphore or the value of any outstanding semaphore wait or+-- signal operation on that semaphore by more than+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>.+--+-- - For each element of @pSignalSemaphores@ created with a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE'+-- the corresponding element of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'::pSignalSemaphoreValues+-- /must/ have a value which does not differ from the current value of+-- the semaphore or the value of any outstanding semaphore wait or+-- signal operation on that semaphore by more than+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>.+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>+-- feature is not enabled, each element of @pWaitDstStageMask@ /must/+-- not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>+-- feature is not enabled, each element of @pWaitDstStageMask@ /must/+-- not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBMIT_INFO'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.D3D12FenceSubmitInfoKHR',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupSubmitInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PerformanceQuerySubmitInfoKHR',+-- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.ProtectedSubmitInfo',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoKHR',+-- or+-- 'Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoNV'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - If @waitSemaphoreCount@ is not @0@, @pWaitSemaphores@ /must/ be a+-- valid pointer to an array of @waitSemaphoreCount@ valid+-- 'Graphics.Vulkan.Core10.Handles.Semaphore' handles+--+-- - If @waitSemaphoreCount@ is not @0@, @pWaitDstStageMask@ /must/ be a+-- valid pointer to an array of @waitSemaphoreCount@ valid combinations+-- of+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+-- values+--+-- - Each element of @pWaitDstStageMask@ /must/ not be @0@+--+-- - If @commandBufferCount@ is not @0@, @pCommandBuffers@ /must/ be a+-- valid pointer to an array of @commandBufferCount@ valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handles+--+-- - If @signalSemaphoreCount@ is not @0@, @pSignalSemaphores@ /must/ be+-- a valid pointer to an array of @signalSemaphoreCount@ valid+-- 'Graphics.Vulkan.Core10.Handles.Semaphore' handles+--+-- - Each of the elements of @pCommandBuffers@, the elements of+-- @pSignalSemaphores@, and the elements of @pWaitSemaphores@ that are+-- valid handles of non-ignored parameters /must/ have been created,+-- allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags',+-- 'Graphics.Vulkan.Core10.Handles.Semaphore',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'queueSubmit'+data SubmitInfo (es :: [Type]) = SubmitInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | @pWaitSemaphores@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.Handles.Semaphore' handles upon which to wait+ -- before the command buffers for this batch begin execution. If semaphores+ -- to wait on are provided, they define a+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>.+ waitSemaphores :: Vector Semaphore+ , -- | @pWaitDstStageMask@ is a pointer to an array of pipeline stages at which+ -- each corresponding semaphore wait will occur.+ waitDstStageMask :: Vector PipelineStageFlags+ , -- | @pCommandBuffers@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handles to execute in the+ -- batch.+ commandBuffers :: Vector (Ptr CommandBuffer_T)+ , -- | @pSignalSemaphores@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.Handles.Semaphore' handles which will be+ -- signaled when the command buffers for this batch have completed+ -- execution. If semaphores to be signaled are provided, they define a+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>.+ signalSemaphores :: Vector Semaphore+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (SubmitInfo es)++instance Extensible SubmitInfo where+ extensibleType = STRUCTURE_TYPE_SUBMIT_INFO+ setNext x next = x{next = next}+ getNext SubmitInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends SubmitInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @PerformanceQuerySubmitInfoKHR = Just f+ | Just Refl <- eqT @e @TimelineSemaphoreSubmitInfo = Just f+ | Just Refl <- eqT @e @ProtectedSubmitInfo = Just f+ | Just Refl <- eqT @e @DeviceGroupSubmitInfo = Just f+ | Just Refl <- eqT @e @D3D12FenceSubmitInfoKHR = Just f+ | Just Refl <- eqT @e @Win32KeyedMutexAcquireReleaseInfoKHR = Just f+ | Just Refl <- eqT @e @Win32KeyedMutexAcquireReleaseInfoNV = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (SubmitInfo es) where+ withCStruct x f = allocaBytesAligned 72 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SubmitInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBMIT_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ let pWaitSemaphoresLength = Data.Vector.length $ (waitSemaphores)+ let pWaitDstStageMaskLength = Data.Vector.length $ (waitDstStageMask)+ lift $ unless (pWaitDstStageMaskLength == pWaitSemaphoresLength) $+ throwIO $ IOError Nothing InvalidArgument "" "pWaitDstStageMask and pWaitSemaphores must have the same length" Nothing Nothing+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral pWaitSemaphoresLength :: Word32))+ pPWaitSemaphores' <- ContT $ allocaBytesAligned @Semaphore ((Data.Vector.length (waitSemaphores)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPWaitSemaphores' `plusPtr` (8 * (i)) :: Ptr Semaphore) (e)) (waitSemaphores)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Semaphore))) (pPWaitSemaphores')+ pPWaitDstStageMask' <- ContT $ allocaBytesAligned @PipelineStageFlags ((Data.Vector.length (waitDstStageMask)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPWaitDstStageMask' `plusPtr` (4 * (i)) :: Ptr PipelineStageFlags) (e)) (waitDstStageMask)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr PipelineStageFlags))) (pPWaitDstStageMask')+ lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (commandBuffers)) :: Word32))+ pPCommandBuffers' <- ContT $ allocaBytesAligned @(Ptr CommandBuffer_T) ((Data.Vector.length (commandBuffers)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPCommandBuffers' `plusPtr` (8 * (i)) :: Ptr (Ptr CommandBuffer_T)) (e)) (commandBuffers)+ lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr (Ptr CommandBuffer_T)))) (pPCommandBuffers')+ lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (signalSemaphores)) :: Word32))+ pPSignalSemaphores' <- ContT $ allocaBytesAligned @Semaphore ((Data.Vector.length (signalSemaphores)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPSignalSemaphores' `plusPtr` (8 * (i)) :: Ptr Semaphore) (e)) (signalSemaphores)+ lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr Semaphore))) (pPSignalSemaphores')+ lift $ f+ cStructSize = 72+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBMIT_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ pPWaitSemaphores' <- ContT $ allocaBytesAligned @Semaphore ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPWaitSemaphores' `plusPtr` (8 * (i)) :: Ptr Semaphore) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Semaphore))) (pPWaitSemaphores')+ pPWaitDstStageMask' <- ContT $ allocaBytesAligned @PipelineStageFlags ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPWaitDstStageMask' `plusPtr` (4 * (i)) :: Ptr PipelineStageFlags) (e)) (mempty)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr PipelineStageFlags))) (pPWaitDstStageMask')+ pPCommandBuffers' <- ContT $ allocaBytesAligned @(Ptr CommandBuffer_T) ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPCommandBuffers' `plusPtr` (8 * (i)) :: Ptr (Ptr CommandBuffer_T)) (e)) (mempty)+ lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr (Ptr CommandBuffer_T)))) (pPCommandBuffers')+ pPSignalSemaphores' <- ContT $ allocaBytesAligned @Semaphore ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPSignalSemaphores' `plusPtr` (8 * (i)) :: Ptr Semaphore) (e)) (mempty)+ lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr Semaphore))) (pPSignalSemaphores')+ lift $ f++instance PeekChain es => FromCStruct (SubmitInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ waitSemaphoreCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pWaitSemaphores <- peek @(Ptr Semaphore) ((p `plusPtr` 24 :: Ptr (Ptr Semaphore)))+ pWaitSemaphores' <- generateM (fromIntegral waitSemaphoreCount) (\i -> peek @Semaphore ((pWaitSemaphores `advancePtrBytes` (8 * (i)) :: Ptr Semaphore)))+ pWaitDstStageMask <- peek @(Ptr PipelineStageFlags) ((p `plusPtr` 32 :: Ptr (Ptr PipelineStageFlags)))+ pWaitDstStageMask' <- generateM (fromIntegral waitSemaphoreCount) (\i -> peek @PipelineStageFlags ((pWaitDstStageMask `advancePtrBytes` (4 * (i)) :: Ptr PipelineStageFlags)))+ commandBufferCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))+ pCommandBuffers <- peek @(Ptr (Ptr CommandBuffer_T)) ((p `plusPtr` 48 :: Ptr (Ptr (Ptr CommandBuffer_T))))+ pCommandBuffers' <- generateM (fromIntegral commandBufferCount) (\i -> peek @(Ptr CommandBuffer_T) ((pCommandBuffers `advancePtrBytes` (8 * (i)) :: Ptr (Ptr CommandBuffer_T))))+ signalSemaphoreCount <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))+ pSignalSemaphores <- peek @(Ptr Semaphore) ((p `plusPtr` 64 :: Ptr (Ptr Semaphore)))+ pSignalSemaphores' <- generateM (fromIntegral signalSemaphoreCount) (\i -> peek @Semaphore ((pSignalSemaphores `advancePtrBytes` (8 * (i)) :: Ptr Semaphore)))+ pure $ SubmitInfo+ next pWaitSemaphores' pWaitDstStageMask' pCommandBuffers' pSignalSemaphores'++instance es ~ '[] => Zero (SubmitInfo es) where+ zero = SubmitInfo+ ()+ mempty+ mempty+ mempty+ mempty+
+ src/Graphics/Vulkan/Core10/Queue.hs-boot view
@@ -0,0 +1,17 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Queue (SubmitInfo) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+type role SubmitInfo nominal+data SubmitInfo (es :: [Type])++instance PokeChain es => ToCStruct (SubmitInfo es)+instance Show (Chain es) => Show (SubmitInfo es)++instance PeekChain es => FromCStruct (SubmitInfo es)+
src/Graphics/Vulkan/Core10/QueueSemaphore.hs view
@@ -1,239 +1,289 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.QueueSemaphore- ( VkSemaphoreCreateFlags(..)- , vkCreateSemaphore- , vkDestroySemaphore- , VkSemaphoreCreateInfo(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- )-import Graphics.Vulkan.Core10.Queue- ( VkSemaphore- )----- ** VkSemaphoreCreateFlags---- | VkSemaphoreCreateFlags - Reserved for future use------ = Description------ @VkSemaphoreCreateFlags@ is a bitmask type for setting a mask, but is--- currently reserved for future use.------ = See Also------ 'VkSemaphoreCreateInfo'-newtype VkSemaphoreCreateFlags = VkSemaphoreCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkSemaphoreCreateFlags where- - showsPrec p (VkSemaphoreCreateFlags x) = showParen (p >= 11) (showString "VkSemaphoreCreateFlags " . showsPrec 11 x)--instance Read VkSemaphoreCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkSemaphoreCreateFlags")- v <- step readPrec- pure (VkSemaphoreCreateFlags v)- )- )+module Graphics.Vulkan.Core10.QueueSemaphore ( createSemaphore+ , withSemaphore+ , destroySemaphore+ , SemaphoreCreateInfo(..)+ ) where +import Control.Exception.Base (bracket)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateSemaphore))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroySemaphore))+import Graphics.Vulkan.Core10.Handles (Device_T)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore (ExportSemaphoreCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32 (ExportSemaphoreWin32HandleInfoKHR)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Handles (Semaphore)+import Graphics.Vulkan.Core10.Handles (Semaphore(..))+import Graphics.Vulkan.Core10.Enums.SemaphoreCreateFlags (SemaphoreCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreTypeCreateInfo)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateSemaphore+ :: FunPtr (Ptr Device_T -> Ptr (SemaphoreCreateInfo a) -> Ptr AllocationCallbacks -> Ptr Semaphore -> IO Result) -> Ptr Device_T -> Ptr (SemaphoreCreateInfo a) -> Ptr AllocationCallbacks -> Ptr Semaphore -> IO Result -- | vkCreateSemaphore - Create a new queue semaphore object -- -- = Parameters ----- - @device@ is the logical device that creates the semaphore.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the semaphore. ----- - @pCreateInfo@ is a pointer to an instance of the--- @VkSemaphoreCreateInfo@ structure which contains information about--- how the semaphore is to be created.+-- - @pCreateInfo@ is a pointer to a 'SemaphoreCreateInfo' structure+-- containing information about how the semaphore is to be created. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. ----- - @pSemaphore@ points to a handle in which the resulting semaphore--- object is returned.------ = Description------ When created, the semaphore is in the unsignaled state.+-- - @pSemaphore@ is a pointer to a handle in which the resulting+-- semaphore object is returned. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle -- -- - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkSemaphoreCreateInfo@ structure+-- 'SemaphoreCreateInfo' structure -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - @pSemaphore@ /must/ be a valid pointer to a @VkSemaphore@ handle+-- - @pSemaphore@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.Semaphore' handle -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.Queue.VkSemaphore', 'VkSemaphoreCreateInfo'+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Semaphore', 'SemaphoreCreateInfo'+createSemaphore :: PokeChain a => Device -> SemaphoreCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (Semaphore)+createSemaphore device createInfo allocator = evalContT $ do+ let vkCreateSemaphore' = mkVkCreateSemaphore (pVkCreateSemaphore (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPSemaphore <- ContT $ bracket (callocBytes @Semaphore 8) free+ r <- lift $ vkCreateSemaphore' (deviceHandle (device)) pCreateInfo pAllocator (pPSemaphore)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSemaphore <- lift $ peek @Semaphore pPSemaphore+ pure $ (pSemaphore)++-- | A safe wrapper for 'createSemaphore' and 'destroySemaphore' using+-- 'bracket'+--+-- The allocated value must not be returned from the provided computation+withSemaphore :: PokeChain a => Device -> SemaphoreCreateInfo a -> Maybe AllocationCallbacks -> (Semaphore -> IO r) -> IO r+withSemaphore device semaphoreCreateInfo allocationCallbacks =+ bracket+ (createSemaphore device semaphoreCreateInfo allocationCallbacks)+ (\o -> destroySemaphore device o allocationCallbacks)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkCreateSemaphore" vkCreateSemaphore :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSemaphoreCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSemaphore" ::: Ptr VkSemaphore) -> IO VkResult+ "dynamic" mkVkDestroySemaphore+ :: FunPtr (Ptr Device_T -> Semaphore -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> Semaphore -> Ptr AllocationCallbacks -> IO ()+ -- | vkDestroySemaphore - Destroy a semaphore object -- -- = Parameters ----- - @device@ is the logical device that destroys the semaphore.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the semaphore. ----- - @semaphore@ is the handle of the semaphore to destroy.+-- - 'Graphics.Vulkan.Core10.Handles.Semaphore' is the handle of the+-- semaphore to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. -- -- == Valid Usage ----- - All submitted batches that refer to @semaphore@ /must/ have--- completed execution+-- - All submitted batches that refer to+-- 'Graphics.Vulkan.Core10.Handles.Semaphore' /must/ have completed+-- execution ----- - If @VkAllocationCallbacks@ were provided when @semaphore@ was+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.Semaphore' was -- created, a compatible set of callbacks /must/ be provided here ----- - If no @VkAllocationCallbacks@ were provided when @semaphore@ was+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.Semaphore' was -- created, @pAllocator@ /must/ be @NULL@ -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - If @semaphore@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @semaphore@--- /must/ be a valid @VkSemaphore@ handle+-- - If 'Graphics.Vulkan.Core10.Handles.Semaphore' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Semaphore' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Semaphore' handle -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - If @semaphore@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@+-- - If 'Graphics.Vulkan.Core10.Handles.Semaphore' is a valid handle, it+-- /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization ----- - Host access to @semaphore@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Semaphore' /must/ be+-- externally synchronized -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.Queue.VkSemaphore'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroySemaphore" vkDestroySemaphore :: ("device" ::: VkDevice) -> ("semaphore" ::: VkSemaphore) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Semaphore'+destroySemaphore :: Device -> Semaphore -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroySemaphore device semaphore allocator = evalContT $ do+ let vkDestroySemaphore' = mkVkDestroySemaphore (pVkDestroySemaphore (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroySemaphore' (deviceHandle (device)) (semaphore) pAllocator+ pure $ ()++ -- | VkSemaphoreCreateInfo - Structure specifying parameters of a newly -- created semaphore -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO@+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO' -- -- - Each @pNext@ member of any structure (including this one) in the -- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid -- instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore.VkExportSemaphoreCreateInfo'+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore.ExportSemaphoreCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.ExportSemaphoreWin32HandleInfoKHR', -- or--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.VkExportSemaphoreWin32HandleInfoKHR'+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo' ----- - Each @sType@ member in the @pNext@ chain /must/ be unique+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique ----- - @flags@ /must/ be @0@+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@ -- -- = See Also ----- 'VkSemaphoreCreateFlags', 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkCreateSemaphore'-data VkSemaphoreCreateInfo = VkSemaphoreCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkSemaphoreCreateFlags+-- 'Graphics.Vulkan.Core10.Enums.SemaphoreCreateFlags.SemaphoreCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createSemaphore'+data SemaphoreCreateInfo (es :: [Type]) = SemaphoreCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: SemaphoreCreateFlags }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show (Chain es) => Show (SemaphoreCreateInfo es) -instance Storable VkSemaphoreCreateInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkSemaphoreCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkSemaphoreCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkSemaphoreCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkSemaphoreCreateInfo))+instance Extensible SemaphoreCreateInfo where+ extensibleType = STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO+ setNext x next = x{next = next}+ getNext SemaphoreCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends SemaphoreCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @SemaphoreTypeCreateInfo = Just f+ | Just Refl <- eqT @e @ExportSemaphoreWin32HandleInfoKHR = Just f+ | Just Refl <- eqT @e @ExportSemaphoreCreateInfo = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (SemaphoreCreateInfo es) where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SemaphoreCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr SemaphoreCreateFlags)) (flags)+ lift $ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ f++instance PeekChain es => FromCStruct (SemaphoreCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @SemaphoreCreateFlags ((p `plusPtr` 16 :: Ptr SemaphoreCreateFlags))+ pure $ SemaphoreCreateInfo+ next flags++instance es ~ '[] => Zero (SemaphoreCreateInfo es) where+ zero = SemaphoreCreateInfo+ ()+ zero+
+ src/Graphics/Vulkan/Core10/QueueSemaphore.hs-boot view
@@ -0,0 +1,17 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.QueueSemaphore (SemaphoreCreateInfo) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+type role SemaphoreCreateInfo nominal+data SemaphoreCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (SemaphoreCreateInfo es)+instance Show (Chain es) => Show (SemaphoreCreateInfo es)++instance PeekChain es => FromCStruct (SemaphoreCreateInfo es)+
src/Graphics/Vulkan/Core10/Sampler.hs view
@@ -1,790 +1,657 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.Sampler- ( VkBorderColor(..)- , pattern VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK- , pattern VK_BORDER_COLOR_INT_TRANSPARENT_BLACK- , pattern VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK- , pattern VK_BORDER_COLOR_INT_OPAQUE_BLACK- , pattern VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE- , pattern VK_BORDER_COLOR_INT_OPAQUE_WHITE- , VkSamplerAddressMode(..)- , pattern VK_SAMPLER_ADDRESS_MODE_REPEAT- , pattern VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT- , pattern VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE- , pattern VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER- , VkFilter(..)- , pattern VK_FILTER_NEAREST- , pattern VK_FILTER_LINEAR- , VkSamplerMipmapMode(..)- , pattern VK_SAMPLER_MIPMAP_MODE_NEAREST- , pattern VK_SAMPLER_MIPMAP_MODE_LINEAR- , VkSamplerCreateFlags(..)- , VkSampler- , vkCreateSampler- , vkDestroySampler- , VkSamplerCreateInfo(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Int- ( Int32- )-import Foreign.C.Types- ( CFloat(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- )-import Graphics.Vulkan.Core10.Pipeline- ( VkCompareOp(..)- )----- ** VkBorderColor---- | VkBorderColor - Specify border color used for texture lookups------ = Description------ - @VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK@ specifies a transparent,--- floating-point format, black color.------ - @VK_BORDER_COLOR_INT_TRANSPARENT_BLACK@ specifies a transparent,--- integer format, black color.------ - @VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK@ specifies an opaque,--- floating-point format, black color.------ - @VK_BORDER_COLOR_INT_OPAQUE_BLACK@ specifies an opaque, integer--- format, black color.------ - @VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE@ specifies an opaque,--- floating-point format, white color.------ - @VK_BORDER_COLOR_INT_OPAQUE_WHITE@ specifies an opaque, integer--- format, white color.------ These colors are described in detail in [Texel--- Replacement](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-texel-replacement).------ = See Also------ 'VkSamplerCreateInfo'-newtype VkBorderColor = VkBorderColor Int32- deriving (Eq, Ord, Storable)--instance Show VkBorderColor where- showsPrec _ VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = showString "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK"- showsPrec _ VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = showString "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK"- showsPrec _ VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = showString "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK"- showsPrec _ VK_BORDER_COLOR_INT_OPAQUE_BLACK = showString "VK_BORDER_COLOR_INT_OPAQUE_BLACK"- showsPrec _ VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = showString "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE"- showsPrec _ VK_BORDER_COLOR_INT_OPAQUE_WHITE = showString "VK_BORDER_COLOR_INT_OPAQUE_WHITE"- showsPrec p (VkBorderColor x) = showParen (p >= 11) (showString "VkBorderColor " . showsPrec 11 x)--instance Read VkBorderColor where- readPrec = parens ( choose [ ("VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK", pure VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK)- , ("VK_BORDER_COLOR_INT_TRANSPARENT_BLACK", pure VK_BORDER_COLOR_INT_TRANSPARENT_BLACK)- , ("VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK", pure VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK)- , ("VK_BORDER_COLOR_INT_OPAQUE_BLACK", pure VK_BORDER_COLOR_INT_OPAQUE_BLACK)- , ("VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE", pure VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE)- , ("VK_BORDER_COLOR_INT_OPAQUE_WHITE", pure VK_BORDER_COLOR_INT_OPAQUE_WHITE)- ] +++- prec 10 (do- expectP (Ident "VkBorderColor")- v <- step readPrec- pure (VkBorderColor v)- )- )---- No documentation found for Nested "VkBorderColor" "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK"-pattern VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK :: VkBorderColor-pattern VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = VkBorderColor 0---- No documentation found for Nested "VkBorderColor" "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK"-pattern VK_BORDER_COLOR_INT_TRANSPARENT_BLACK :: VkBorderColor-pattern VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = VkBorderColor 1---- No documentation found for Nested "VkBorderColor" "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK"-pattern VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK :: VkBorderColor-pattern VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = VkBorderColor 2---- No documentation found for Nested "VkBorderColor" "VK_BORDER_COLOR_INT_OPAQUE_BLACK"-pattern VK_BORDER_COLOR_INT_OPAQUE_BLACK :: VkBorderColor-pattern VK_BORDER_COLOR_INT_OPAQUE_BLACK = VkBorderColor 3---- No documentation found for Nested "VkBorderColor" "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE"-pattern VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE :: VkBorderColor-pattern VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = VkBorderColor 4---- No documentation found for Nested "VkBorderColor" "VK_BORDER_COLOR_INT_OPAQUE_WHITE"-pattern VK_BORDER_COLOR_INT_OPAQUE_WHITE :: VkBorderColor-pattern VK_BORDER_COLOR_INT_OPAQUE_WHITE = VkBorderColor 5--- ** VkSamplerAddressMode---- | VkSamplerAddressMode - Specify behavior of sampling with texture--- coordinates outside an image------ = See Also------ 'VkSamplerCreateInfo'-newtype VkSamplerAddressMode = VkSamplerAddressMode Int32- deriving (Eq, Ord, Storable)--instance Show VkSamplerAddressMode where- showsPrec _ VK_SAMPLER_ADDRESS_MODE_REPEAT = showString "VK_SAMPLER_ADDRESS_MODE_REPEAT"- showsPrec _ VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = showString "VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT"- showsPrec _ VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = showString "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE"- showsPrec _ VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = showString "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkSamplerAddressMode 4) = showString "VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE"- showsPrec p (VkSamplerAddressMode x) = showParen (p >= 11) (showString "VkSamplerAddressMode " . showsPrec 11 x)--instance Read VkSamplerAddressMode where- readPrec = parens ( choose [ ("VK_SAMPLER_ADDRESS_MODE_REPEAT", pure VK_SAMPLER_ADDRESS_MODE_REPEAT)- , ("VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT", pure VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT)- , ("VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE", pure VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE)- , ("VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER", pure VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE", pure (VkSamplerAddressMode 4))- ] +++- prec 10 (do- expectP (Ident "VkSamplerAddressMode")- v <- step readPrec- pure (VkSamplerAddressMode v)- )- )---- | @VK_SAMPLER_ADDRESS_MODE_REPEAT@ specifies that the repeat wrap mode--- will be used.-pattern VK_SAMPLER_ADDRESS_MODE_REPEAT :: VkSamplerAddressMode-pattern VK_SAMPLER_ADDRESS_MODE_REPEAT = VkSamplerAddressMode 0---- | @VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT@ specifies that the mirrored--- repeat wrap mode will be used.-pattern VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT :: VkSamplerAddressMode-pattern VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = VkSamplerAddressMode 1---- | @VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE@ specifies that the clamp to edge--- wrap mode will be used.-pattern VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE :: VkSamplerAddressMode-pattern VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = VkSamplerAddressMode 2---- | @VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER@ specifies that the clamp to--- border wrap mode will be used.-pattern VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER :: VkSamplerAddressMode-pattern VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = VkSamplerAddressMode 3--- ** VkFilter---- | VkFilter - Specify filters used for texture lookups------ = Description------ - @VK_FILTER_NEAREST@ specifies nearest filtering.------ - @VK_FILTER_LINEAR@ specifies linear filtering.------ - @VK_FILTER_CUBIC_IMG@ specifies cubic filtering.------ These filters are described in detail in [Texel--- Filtering](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-texel-filtering).------ = See Also------ 'VkSamplerCreateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionCreateInfo',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBlitImage'-newtype VkFilter = VkFilter Int32- deriving (Eq, Ord, Storable)--instance Show VkFilter where- showsPrec _ VK_FILTER_NEAREST = showString "VK_FILTER_NEAREST"- showsPrec _ VK_FILTER_LINEAR = showString "VK_FILTER_LINEAR"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkFilter 1000015000) = showString "VK_FILTER_CUBIC_IMG"- showsPrec p (VkFilter x) = showParen (p >= 11) (showString "VkFilter " . showsPrec 11 x)--instance Read VkFilter where- readPrec = parens ( choose [ ("VK_FILTER_NEAREST", pure VK_FILTER_NEAREST)- , ("VK_FILTER_LINEAR", pure VK_FILTER_LINEAR)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_FILTER_CUBIC_IMG", pure (VkFilter 1000015000))- ] +++- prec 10 (do- expectP (Ident "VkFilter")- v <- step readPrec- pure (VkFilter v)- )- )---- No documentation found for Nested "VkFilter" "VK_FILTER_NEAREST"-pattern VK_FILTER_NEAREST :: VkFilter-pattern VK_FILTER_NEAREST = VkFilter 0---- No documentation found for Nested "VkFilter" "VK_FILTER_LINEAR"-pattern VK_FILTER_LINEAR :: VkFilter-pattern VK_FILTER_LINEAR = VkFilter 1--- ** VkSamplerMipmapMode---- | VkSamplerMipmapMode - Specify mipmap mode used for texture lookups------ = Description------ - @VK_SAMPLER_MIPMAP_MODE_NEAREST@ specifies nearest filtering.------ - @VK_SAMPLER_MIPMAP_MODE_LINEAR@ specifies linear filtering.------ These modes are described in detail in [Texel--- Filtering](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-texel-filtering).------ = See Also------ 'VkSamplerCreateInfo'-newtype VkSamplerMipmapMode = VkSamplerMipmapMode Int32- deriving (Eq, Ord, Storable)--instance Show VkSamplerMipmapMode where- showsPrec _ VK_SAMPLER_MIPMAP_MODE_NEAREST = showString "VK_SAMPLER_MIPMAP_MODE_NEAREST"- showsPrec _ VK_SAMPLER_MIPMAP_MODE_LINEAR = showString "VK_SAMPLER_MIPMAP_MODE_LINEAR"- showsPrec p (VkSamplerMipmapMode x) = showParen (p >= 11) (showString "VkSamplerMipmapMode " . showsPrec 11 x)--instance Read VkSamplerMipmapMode where- readPrec = parens ( choose [ ("VK_SAMPLER_MIPMAP_MODE_NEAREST", pure VK_SAMPLER_MIPMAP_MODE_NEAREST)- , ("VK_SAMPLER_MIPMAP_MODE_LINEAR", pure VK_SAMPLER_MIPMAP_MODE_LINEAR)- ] +++- prec 10 (do- expectP (Ident "VkSamplerMipmapMode")- v <- step readPrec- pure (VkSamplerMipmapMode v)- )- )---- No documentation found for Nested "VkSamplerMipmapMode" "VK_SAMPLER_MIPMAP_MODE_NEAREST"-pattern VK_SAMPLER_MIPMAP_MODE_NEAREST :: VkSamplerMipmapMode-pattern VK_SAMPLER_MIPMAP_MODE_NEAREST = VkSamplerMipmapMode 0---- No documentation found for Nested "VkSamplerMipmapMode" "VK_SAMPLER_MIPMAP_MODE_LINEAR"-pattern VK_SAMPLER_MIPMAP_MODE_LINEAR :: VkSamplerMipmapMode-pattern VK_SAMPLER_MIPMAP_MODE_LINEAR = VkSamplerMipmapMode 1--- ** VkSamplerCreateFlags---- | VkSamplerCreateFlags - Reserved for future use------ = Description------ @VkSamplerCreateFlags@ is a bitmask type for setting a mask, but is--- currently reserved for future use.------ = See Also------ 'VkSamplerCreateInfo'-newtype VkSamplerCreateFlags = VkSamplerCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkSamplerCreateFlags where- - showsPrec p (VkSamplerCreateFlags x) = showParen (p >= 11) (showString "VkSamplerCreateFlags " . showsPrec 11 x)--instance Read VkSamplerCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkSamplerCreateFlags")- v <- step readPrec- pure (VkSamplerCreateFlags v)- )- )----- | Dummy data to tag the 'Ptr' with-data VkSampler_T--- | VkSampler - Opaque handle to a sampler object------ = See Also------ 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorImageInfo',--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetLayoutBinding',--- 'vkCreateSampler', 'vkDestroySampler'-type VkSampler = Ptr VkSampler_T--- | vkCreateSampler - Create a new sampler object------ = Parameters------ - @device@ is the logical device that creates the sampler.------ - @pCreateInfo@ is a pointer to an instance of the--- 'VkSamplerCreateInfo' structure specifying the state of the sampler--- object.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ - @pSampler@ points to a 'VkSampler' handle in which the resulting--- sampler object is returned.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkSamplerCreateInfo@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pSampler@ /must/ be a valid pointer to a @VkSampler@ handle------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_TOO_MANY_OBJECTS@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkSampler',--- 'VkSamplerCreateInfo'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateSampler" vkCreateSampler :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSampler" ::: Ptr VkSampler) -> IO VkResult--- | vkDestroySampler - Destroy a sampler object------ = Parameters------ - @device@ is the logical device that destroys the sampler.------ - @sampler@ is the sampler to destroy.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ == Valid Usage------ - All submitted commands that refer to @sampler@ /must/ have completed--- execution------ - If @VkAllocationCallbacks@ were provided when @sampler@ was created,--- a compatible set of callbacks /must/ be provided here------ - If no @VkAllocationCallbacks@ were provided when @sampler@ was--- created, @pAllocator@ /must/ be @NULL@------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - If @sampler@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @sampler@ /must/--- be a valid @VkSampler@ handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - If @sampler@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@------ == Host Synchronization------ - Host access to @sampler@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkSampler'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroySampler" vkDestroySampler :: ("device" ::: VkDevice) -> ("sampler" ::: VkSampler) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | VkSamplerCreateInfo - Structure specifying parameters of a newly created--- sampler------ = Members------ - @sType@ is the type of this structure.------ - @pNext@ is @NULL@ or a pointer to an extension-specific structure.------ - @flags@ is reserved for future use.------ - @magFilter@ is a 'VkFilter' value specifying the magnification--- filter to apply to lookups.------ - @minFilter@ is a 'VkFilter' value specifying the minification filter--- to apply to lookups.------ - @mipmapMode@ is a 'VkSamplerMipmapMode' value specifying the mipmap--- filter to apply to lookups.------ - @addressModeU@ is a 'VkSamplerAddressMode' value specifying the--- addressing mode for outside [0..1] range for U coordinate.------ - @addressModeV@ is a 'VkSamplerAddressMode' value specifying the--- addressing mode for outside [0..1] range for V coordinate.------ - @addressModeW@ is a 'VkSamplerAddressMode' value specifying the--- addressing mode for outside [0..1] range for W coordinate.------ - @mipLodBias@ is the bias to be added to mipmap LOD (level-of-detail)--- calculation and bias provided by image sampling functions in SPIR-V,--- as described in the [Level-of-Detail--- Operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-level-of-detail-operation)--- section.------ - @anisotropyEnable@ is @VK_TRUE@ to enable anisotropic filtering, as--- described in the [Texel Anisotropic--- Filtering](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-texel-anisotropic-filtering)--- section, or @VK_FALSE@ otherwise.------ - @maxAnisotropy@ is the anisotropy value clamp used by the sampler--- when @anisotropyEnable@ is @VK_TRUE@. If @anisotropyEnable@ is--- @VK_FALSE@, @maxAnisotropy@ is ignored.------ - @compareEnable@ is @VK_TRUE@ to enable comparison against a--- reference value during lookups, or @VK_FALSE@ otherwise.------ - Note: Some implementations will default to shader state if this--- member does not match.------ - @compareOp@ is a 'Graphics.Vulkan.Core10.Pipeline.VkCompareOp' value--- specifying the comparison function to apply to fetched data before--- filtering as described in the [Depth Compare--- Operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-depth-compare-operation)--- section.------ - @minLod@ and @maxLod@ are the values used to clamp the computed LOD--- value, as described in the [Level-of-Detail--- Operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-level-of-detail-operation)--- section. @maxLod@ /must/ be greater than or equal to @minLod@.------ - @borderColor@ is a 'VkBorderColor' value specifying the predefined--- border color to use.------ - @unnormalizedCoordinates@ controls whether to use unnormalized or--- normalized texel coordinates to address texels of the image. When--- set to @VK_TRUE@, the range of the image coordinates used to lookup--- the texel is in the range of zero to the image dimensions for x, y--- and z. When set to @VK_FALSE@ the range of image coordinates is zero--- to one. When @unnormalizedCoordinates@ is @VK_TRUE@, samplers have--- the following requirements:------ - @minFilter@ and @magFilter@ /must/ be equal.------ - @mipmapMode@ /must/ be @VK_SAMPLER_MIPMAP_MODE_NEAREST@.------ - @minLod@ and @maxLod@ /must/ be zero.------ - @addressModeU@ and @addressModeV@ /must/ each be either--- @VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE@ or--- @VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER@.------ - @anisotropyEnable@ /must/ be @VK_FALSE@.------ - @compareEnable@ /must/ be @VK_FALSE@.------ - The sampler /must/ not enable sampler Y’CBCR conversion.------ - When @unnormalizedCoordinates@ is @VK_TRUE@, images the sampler is--- used with in the shader have the following requirements:------ - The @viewType@ /must/ be either @VK_IMAGE_VIEW_TYPE_1D@ or--- @VK_IMAGE_VIEW_TYPE_2D@.------ - The image view /must/ have a single layer and a single mip--- level.------ - When @unnormalizedCoordinates@ is @VK_TRUE@, image built-in--- functions in the shader that use the sampler have the following--- requirements:------ - The functions /must/ not use projection.------ - The functions /must/ not use offsets.------ = Description------ __Note__------ @magFilter@ values of @VK_FILTER_NEAREST@ and @VK_FILTER_LINEAR@--- directly correspond to @GL_NEAREST@ and @GL_LINEAR@ magnification--- filters. @minFilter@ and @mipmapMode@ combine to correspond to the--- similarly named OpenGL minification filter of--- @GL_minFilter_MIPMAP_mipmapMode@ (e.g. @minFilter@ of @VK_FILTER_LINEAR@--- and @mipmapMode@ of @VK_SAMPLER_MIPMAP_MODE_NEAREST@ correspond to--- @GL_LINEAR_MIPMAP_NEAREST@).------ There are no Vulkan filter modes that directly correspond to OpenGL--- minification filters of @GL_LINEAR@ or @GL_NEAREST@, but they /can/ be--- emulated using @VK_SAMPLER_MIPMAP_MODE_NEAREST@, @minLod@ = 0, and--- @maxLod@ = 0.25, and using @minFilter@ = @VK_FILTER_LINEAR@ or--- @minFilter@ = @VK_FILTER_NEAREST@, respectively.------ Note that using a @maxLod@ of zero would cause--- [magnification](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-texel-filtering)--- to always be performed, and the @magFilter@ to always be used. This is--- valid, just not an exact match for OpenGL behavior. Clamping the maximum--- LOD to 0.25 allows the λ value to be non-zero and minification to be--- performed, while still always rounding down to the base level. If the--- @minFilter@ and @magFilter@ are equal, then using a @maxLod@ of zero--- also works.------ The maximum number of sampler objects which /can/ be simultaneously--- created on a device is implementation-dependent and specified by the--- [maxSamplerAllocationCount](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-maxSamplerAllocationCount)--- member of the--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceLimits'--- structure. If @maxSamplerAllocationCount@ is exceeded, @vkCreateSampler@--- will return @VK_ERROR_TOO_MANY_OBJECTS@.------ Since 'VkSampler' is a non-dispatchable handle type, implementations--- /may/ return the same handle for sampler state vectors that are--- identical. In such cases, all such objects would only count once against--- the @maxSamplerAllocationCount@ limit.------ == Valid Usage------ - The absolute value of @mipLodBias@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxSamplerLodBias@------ - If the [anisotropic--- sampling](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-samplerAnisotropy)--- feature is not enabled, @anisotropyEnable@ /must/ be @VK_FALSE@------ - If @anisotropyEnable@ is @VK_TRUE@, @maxAnisotropy@ /must/ be--- between @1.0@ and @VkPhysicalDeviceLimits@::@maxSamplerAnisotropy@,--- inclusive------ - If [sampler Y’CBCR--- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion)--- is enabled and--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT@--- is not set for the format, @minFilter@ and @magFilter@ /must/ be--- equal to the sampler Y’CBCR conversion’s @chromaFilter@------ - If @unnormalizedCoordinates@ is @VK_TRUE@, @minFilter@ and--- @magFilter@ /must/ be equal------ - If @unnormalizedCoordinates@ is @VK_TRUE@, @mipmapMode@ /must/ be--- @VK_SAMPLER_MIPMAP_MODE_NEAREST@------ - If @unnormalizedCoordinates@ is @VK_TRUE@, @minLod@ and @maxLod@--- /must/ be zero------ - If @unnormalizedCoordinates@ is @VK_TRUE@, @addressModeU@ and--- @addressModeV@ /must/ each be either--- @VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE@ or--- @VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER@------ - If @unnormalizedCoordinates@ is @VK_TRUE@, @anisotropyEnable@ /must/--- be @VK_FALSE@------ - If @unnormalizedCoordinates@ is @VK_TRUE@, @compareEnable@ /must/ be--- @VK_FALSE@------ - If any of @addressModeU@, @addressModeV@ or @addressModeW@ are--- @VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER@, @borderColor@ /must/ be a--- valid 'VkBorderColor' value------ - If [sampler Y’CBCR--- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion)--- is enabled, @addressModeU@, @addressModeV@, and @addressModeW@--- /must/ be @VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE@,--- @anisotropyEnable@ /must/ be @VK_FALSE@, and--- @unnormalizedCoordinates@ /must/ be @VK_FALSE@------ - The sampler reduction mode /must/ be set to--- @VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT@ if [sampler Y’CBCR--- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion)--- is enabled------ - If the @{html_spec_relative}#VK_KHR_sampler_mirror_clamp_to_edge@--- extension is not enabled, @addressModeU@, @addressModeV@ and--- @addressModeW@ /must/ not be--- @VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE@------ - If @compareEnable@ is @VK_TRUE@, @compareOp@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Pipeline.VkCompareOp' value------ - If either @magFilter@ or @minFilter@ is @VK_FILTER_CUBIC_IMG@,--- @anisotropyEnable@ /must/ be @VK_FALSE@------ - If either @magFilter@ or @minFilter@ is @VK_FILTER_CUBIC_IMG@, the--- @reductionMode@ member of--- 'Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax.VkSamplerReductionModeCreateInfoEXT'--- /must/ be @VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT@------ - If @compareEnable@ is @VK_TRUE@, the @reductionMode@ member of--- 'Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax.VkSamplerReductionModeCreateInfoEXT'--- /must/ be @VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT@------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of--- 'Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax.VkSamplerReductionModeCreateInfoEXT'--- or--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionInfo'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ - @flags@ /must/ be @0@------ - @magFilter@ /must/ be a valid 'VkFilter' value------ - @minFilter@ /must/ be a valid 'VkFilter' value------ - @mipmapMode@ /must/ be a valid 'VkSamplerMipmapMode' value------ - @addressModeU@ /must/ be a valid 'VkSamplerAddressMode' value------ - @addressModeV@ /must/ be a valid 'VkSamplerAddressMode' value------ - @addressModeW@ /must/ be a valid 'VkSamplerAddressMode' value------ = See Also------ @VkBool32@, 'VkBorderColor',--- 'Graphics.Vulkan.Core10.Pipeline.VkCompareOp', 'VkFilter',--- 'VkSamplerAddressMode', 'VkSamplerCreateFlags', 'VkSamplerMipmapMode',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateSampler'-data VkSamplerCreateInfo = VkSamplerCreateInfo- { -- No documentation found for Nested "VkSamplerCreateInfo" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkSamplerCreateInfo" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkSamplerCreateInfo" "flags"- vkFlags :: VkSamplerCreateFlags- , -- No documentation found for Nested "VkSamplerCreateInfo" "magFilter"- vkMagFilter :: VkFilter- , -- No documentation found for Nested "VkSamplerCreateInfo" "minFilter"- vkMinFilter :: VkFilter- , -- No documentation found for Nested "VkSamplerCreateInfo" "mipmapMode"- vkMipmapMode :: VkSamplerMipmapMode- , -- No documentation found for Nested "VkSamplerCreateInfo" "addressModeU"- vkAddressModeU :: VkSamplerAddressMode- , -- No documentation found for Nested "VkSamplerCreateInfo" "addressModeV"- vkAddressModeV :: VkSamplerAddressMode- , -- No documentation found for Nested "VkSamplerCreateInfo" "addressModeW"- vkAddressModeW :: VkSamplerAddressMode- , -- No documentation found for Nested "VkSamplerCreateInfo" "mipLodBias"- vkMipLodBias :: CFloat- , -- No documentation found for Nested "VkSamplerCreateInfo" "anisotropyEnable"- vkAnisotropyEnable :: VkBool32- , -- No documentation found for Nested "VkSamplerCreateInfo" "maxAnisotropy"- vkMaxAnisotropy :: CFloat- , -- No documentation found for Nested "VkSamplerCreateInfo" "compareEnable"- vkCompareEnable :: VkBool32- , -- No documentation found for Nested "VkSamplerCreateInfo" "compareOp"- vkCompareOp :: VkCompareOp- , -- No documentation found for Nested "VkSamplerCreateInfo" "minLod"- vkMinLod :: CFloat- , -- No documentation found for Nested "VkSamplerCreateInfo" "maxLod"- vkMaxLod :: CFloat- , -- No documentation found for Nested "VkSamplerCreateInfo" "borderColor"- vkBorderColor :: VkBorderColor- , -- No documentation found for Nested "VkSamplerCreateInfo" "unnormalizedCoordinates"- vkUnnormalizedCoordinates :: VkBool32- }- deriving (Eq, Show)--instance Storable VkSamplerCreateInfo where- sizeOf ~_ = 80- alignment ~_ = 8- peek ptr = VkSamplerCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 52)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 60)- <*> peek (ptr `plusPtr` 64)- <*> peek (ptr `plusPtr` 68)- <*> peek (ptr `plusPtr` 72)- <*> peek (ptr `plusPtr` 76)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkSamplerCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkSamplerCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkSamplerCreateInfo))- *> poke (ptr `plusPtr` 20) (vkMagFilter (poked :: VkSamplerCreateInfo))- *> poke (ptr `plusPtr` 24) (vkMinFilter (poked :: VkSamplerCreateInfo))- *> poke (ptr `plusPtr` 28) (vkMipmapMode (poked :: VkSamplerCreateInfo))- *> poke (ptr `plusPtr` 32) (vkAddressModeU (poked :: VkSamplerCreateInfo))- *> poke (ptr `plusPtr` 36) (vkAddressModeV (poked :: VkSamplerCreateInfo))- *> poke (ptr `plusPtr` 40) (vkAddressModeW (poked :: VkSamplerCreateInfo))- *> poke (ptr `plusPtr` 44) (vkMipLodBias (poked :: VkSamplerCreateInfo))- *> poke (ptr `plusPtr` 48) (vkAnisotropyEnable (poked :: VkSamplerCreateInfo))- *> poke (ptr `plusPtr` 52) (vkMaxAnisotropy (poked :: VkSamplerCreateInfo))- *> poke (ptr `plusPtr` 56) (vkCompareEnable (poked :: VkSamplerCreateInfo))- *> poke (ptr `plusPtr` 60) (vkCompareOp (poked :: VkSamplerCreateInfo))- *> poke (ptr `plusPtr` 64) (vkMinLod (poked :: VkSamplerCreateInfo))- *> poke (ptr `plusPtr` 68) (vkMaxLod (poked :: VkSamplerCreateInfo))- *> poke (ptr `plusPtr` 72) (vkBorderColor (poked :: VkSamplerCreateInfo))- *> poke (ptr `plusPtr` 76) (vkUnnormalizedCoordinates (poked :: VkSamplerCreateInfo))+{-# language CPP #-}+module Graphics.Vulkan.Core10.Sampler ( createSampler+ , withSampler+ , destroySampler+ , SamplerCreateInfo(..)+ ) where++import Control.Exception.Base (bracket)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CFloat(CFloat))+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Enums.BorderColor (BorderColor)+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.Enums.CompareOp (CompareOp)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateSampler))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroySampler))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.Core10.Enums.Filter (Filter)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Handles (Sampler)+import Graphics.Vulkan.Core10.Handles (Sampler(..))+import Graphics.Vulkan.Core10.Enums.SamplerAddressMode (SamplerAddressMode)+import Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits (SamplerCreateFlags)+import Graphics.Vulkan.Core10.Enums.SamplerMipmapMode (SamplerMipmapMode)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax (SamplerReductionModeCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionInfo)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SAMPLER_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateSampler+ :: FunPtr (Ptr Device_T -> Ptr (SamplerCreateInfo a) -> Ptr AllocationCallbacks -> Ptr Sampler -> IO Result) -> Ptr Device_T -> Ptr (SamplerCreateInfo a) -> Ptr AllocationCallbacks -> Ptr Sampler -> IO Result++-- | vkCreateSampler - Create a new sampler object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the sampler.+--+-- - @pCreateInfo@ is a pointer to a 'SamplerCreateInfo' structure+-- specifying the state of the sampler object.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pSampler@ is a pointer to a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' handle in which the+-- resulting sampler object is returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'SamplerCreateInfo' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pSampler@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Sampler', 'SamplerCreateInfo'+createSampler :: PokeChain a => Device -> SamplerCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (Sampler)+createSampler device createInfo allocator = evalContT $ do+ let vkCreateSampler' = mkVkCreateSampler (pVkCreateSampler (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPSampler <- ContT $ bracket (callocBytes @Sampler 8) free+ r <- lift $ vkCreateSampler' (deviceHandle (device)) pCreateInfo pAllocator (pPSampler)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSampler <- lift $ peek @Sampler pPSampler+ pure $ (pSampler)++-- | A safe wrapper for 'createSampler' and 'destroySampler' using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withSampler :: PokeChain a => Device -> SamplerCreateInfo a -> Maybe AllocationCallbacks -> (Sampler -> IO r) -> IO r+withSampler device samplerCreateInfo allocationCallbacks =+ bracket+ (createSampler device samplerCreateInfo allocationCallbacks)+ (\o -> destroySampler device o allocationCallbacks)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDestroySampler+ :: FunPtr (Ptr Device_T -> Sampler -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> Sampler -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroySampler - Destroy a sampler object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the sampler.+--+-- - 'Graphics.Vulkan.Core10.Handles.Sampler' is the sampler to destroy.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- == Valid Usage+--+-- - All submitted commands that refer to+-- 'Graphics.Vulkan.Core10.Handles.Sampler' /must/ have completed+-- execution+--+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.Sampler' was+-- created, a compatible set of callbacks /must/ be provided here+--+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.Sampler' was+-- created, @pAllocator@ /must/ be @NULL@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - If 'Graphics.Vulkan.Core10.Handles.Sampler' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Sampler' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Sampler' handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - If 'Graphics.Vulkan.Core10.Handles.Sampler' is a valid handle, it+-- /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Sampler' /must/ be+-- externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Sampler'+destroySampler :: Device -> Sampler -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroySampler device sampler allocator = evalContT $ do+ let vkDestroySampler' = mkVkDestroySampler (pVkDestroySampler (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroySampler' (deviceHandle (device)) (sampler) pAllocator+ pure $ ()+++-- | VkSamplerCreateInfo - Structure specifying parameters of a newly created+-- sampler+--+-- = Description+--+-- Mapping of OpenGL to Vulkan filter modes+--+-- @magFilter@ values of+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_NEAREST' and+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' directly correspond+-- to @GL_NEAREST@ and @GL_LINEAR@ magnification filters. @minFilter@ and+-- @mipmapMode@ combine to correspond to the similarly named OpenGL+-- minification filter of @GL_minFilter_MIPMAP_mipmapMode@ (e.g.+-- @minFilter@ of 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and+-- @mipmapMode@ of+-- 'Graphics.Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_NEAREST'+-- correspond to @GL_LINEAR_MIPMAP_NEAREST@).+--+-- There are no Vulkan filter modes that directly correspond to OpenGL+-- minification filters of @GL_LINEAR@ or @GL_NEAREST@, but they /can/ be+-- emulated using+-- 'Graphics.Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_NEAREST',+-- @minLod@ = 0, and @maxLod@ = 0.25, and using @minFilter@ =+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' or @minFilter@ =+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_NEAREST', respectively.+--+-- Note that using a @maxLod@ of zero would cause+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-filtering magnification>+-- to always be performed, and the @magFilter@ to always be used. This is+-- valid, just not an exact match for OpenGL behavior. Clamping the maximum+-- LOD to 0.25 allows the λ value to be non-zero and minification to be+-- performed, while still always rounding down to the base level. If the+-- @minFilter@ and @magFilter@ are equal, then using a @maxLod@ of zero+-- also works.+--+-- The maximum number of sampler objects which /can/ be simultaneously+-- created on a device is implementation-dependent and specified by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxSamplerAllocationCount maxSamplerAllocationCount>+-- member of the+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'+-- structure. If @maxSamplerAllocationCount@ is exceeded, 'createSampler'+-- will return+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS'.+--+-- Since 'Graphics.Vulkan.Core10.Handles.Sampler' is a non-dispatchable+-- handle type, implementations /may/ return the same handle for sampler+-- state vectors that are identical. In such cases, all such objects would+-- only count once against the @maxSamplerAllocationCount@ limit.+--+-- == Valid Usage+--+-- - The absolute value of @mipLodBias@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxSamplerLodBias@+--+-- - @maxLod@ /must/ be greater than or equal to @minLod@+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-samplerAnisotropy anisotropic sampling>+-- feature is not enabled, @anisotropyEnable@ /must/ be+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'+--+-- - If @anisotropyEnable@ is 'Graphics.Vulkan.Core10.BaseType.TRUE',+-- @maxAnisotropy@ /must/ be between @1.0@ and+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxSamplerAnisotropy@,+-- inclusive+--+-- - If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>+-- is enabled and+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT'+-- is not set for the format, @minFilter@ and @magFilter@ /must/ be+-- equal to the sampler Y′CBCR conversion’s @chromaFilter@+--+-- - If @unnormalizedCoordinates@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', @minFilter@ and @magFilter@+-- /must/ be equal+--+-- - If @unnormalizedCoordinates@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', @mipmapMode@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_NEAREST'+--+-- - If @unnormalizedCoordinates@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', @minLod@ and @maxLod@ /must/+-- be zero+--+-- - If @unnormalizedCoordinates@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', @addressModeU@ and+-- @addressModeV@ /must/ each be either+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'+-- or+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER'+--+-- - If @unnormalizedCoordinates@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', @anisotropyEnable@ /must/ be+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'+--+-- - If @unnormalizedCoordinates@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', @compareEnable@ /must/ be+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'+--+-- - If any of @addressModeU@, @addressModeV@ or @addressModeW@ are+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER',+-- 'Graphics.Vulkan.Core10.Enums.BorderColor.BorderColor' /must/ be a+-- valid 'Graphics.Vulkan.Core10.Enums.BorderColor.BorderColor' value+--+-- - If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>+-- is enabled, @addressModeU@, @addressModeV@, and @addressModeW@+-- /must/ be+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',+-- @anisotropyEnable@ /must/ be+-- 'Graphics.Vulkan.Core10.BaseType.FALSE', and+-- @unnormalizedCoordinates@ /must/ be+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'+--+-- - The sampler reduction mode /must/ be set to+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE'+-- if+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>+-- is enabled+--+-- - If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-samplerMirrorClampToEdge samplerMirrorClampToEdge>+-- is not enabled, and if the+-- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_KHR_sampler_mirror_clamp_to_edge@+-- extension is not enabled, @addressModeU@, @addressModeV@ and+-- @addressModeW@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE'+--+-- - If @compareEnable@ is 'Graphics.Vulkan.Core10.BaseType.TRUE',+-- 'Graphics.Vulkan.Core10.Enums.CompareOp.CompareOp' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.CompareOp.CompareOp' value+--+-- - If either @magFilter@ or @minFilter@ is+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT',+-- @anisotropyEnable@ /must/ be 'Graphics.Vulkan.Core10.BaseType.FALSE'+--+-- - If @compareEnable@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', the+-- @reductionMode@ member of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'+-- /must/ be+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT',+-- then @minFilter@ and @magFilter@ /must/ be equal.+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT',+-- then @mipmapMode@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_NEAREST'.+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT',+-- then @minLod@ and @maxLod@ /must/ be zero.+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT',+-- then @addressModeU@ and @addressModeV@ /must/ each be either+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'+-- or+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER'.+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT',+-- then @anisotropyEnable@ /must/ be+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'.+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT',+-- then @compareEnable@ /must/ be+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'.+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_BIT_EXT',+-- then @unnormalizedCoordinates@ /must/ be+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SAMPLER_CREATE_INFO'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'+-- or+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits.SamplerCreateFlagBits'+-- values+--+-- - @magFilter@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.Filter.Filter' value+--+-- - @minFilter@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.Filter.Filter' value+--+-- - @mipmapMode@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.SamplerMipmapMode.SamplerMipmapMode'+-- value+--+-- - @addressModeU@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+-- value+--+-- - @addressModeV@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+-- value+--+-- - @addressModeW@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+-- value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.BorderColor.BorderColor',+-- 'Graphics.Vulkan.Core10.Enums.CompareOp.CompareOp',+-- 'Graphics.Vulkan.Core10.Enums.Filter.Filter',+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode',+-- 'Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits.SamplerCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.SamplerMipmapMode.SamplerMipmapMode',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createSampler'+data SamplerCreateInfo (es :: [Type]) = SamplerCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits.SamplerCreateFlagBits'+ -- describing additional parameters of the sampler.+ flags :: SamplerCreateFlags+ , -- | @magFilter@ is a 'Graphics.Vulkan.Core10.Enums.Filter.Filter' value+ -- specifying the magnification filter to apply to lookups.+ magFilter :: Filter+ , -- | @minFilter@ is a 'Graphics.Vulkan.Core10.Enums.Filter.Filter' value+ -- specifying the minification filter to apply to lookups.+ minFilter :: Filter+ , -- | @mipmapMode@ is a+ -- 'Graphics.Vulkan.Core10.Enums.SamplerMipmapMode.SamplerMipmapMode' value+ -- specifying the mipmap filter to apply to lookups.+ mipmapMode :: SamplerMipmapMode+ , -- | @addressModeU@ is a+ -- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+ -- value specifying the addressing mode for outside [0..1] range for U+ -- coordinate.+ addressModeU :: SamplerAddressMode+ , -- | @addressModeV@ is a+ -- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+ -- value specifying the addressing mode for outside [0..1] range for V+ -- coordinate.+ addressModeV :: SamplerAddressMode+ , -- | @addressModeW@ is a+ -- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+ -- value specifying the addressing mode for outside [0..1] range for W+ -- coordinate.+ addressModeW :: SamplerAddressMode+ , -- | @mipLodBias@ is the bias to be added to mipmap LOD (level-of-detail)+ -- calculation and bias provided by image sampling functions in SPIR-V, as+ -- described in the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-level-of-detail-operation Level-of-Detail Operation>+ -- section.+ mipLodBias :: Float+ , -- | @anisotropyEnable@ is 'Graphics.Vulkan.Core10.BaseType.TRUE' to enable+ -- anisotropic filtering, as described in the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-anisotropic-filtering Texel Anisotropic Filtering>+ -- section, or 'Graphics.Vulkan.Core10.BaseType.FALSE' otherwise.+ anisotropyEnable :: Bool+ , -- | @maxAnisotropy@ is the anisotropy value clamp used by the sampler when+ -- @anisotropyEnable@ is 'Graphics.Vulkan.Core10.BaseType.TRUE'. If+ -- @anisotropyEnable@ is 'Graphics.Vulkan.Core10.BaseType.FALSE',+ -- @maxAnisotropy@ is ignored.+ maxAnisotropy :: Float+ , -- | @compareEnable@ is 'Graphics.Vulkan.Core10.BaseType.TRUE' to enable+ -- comparison against a reference value during lookups, or+ -- 'Graphics.Vulkan.Core10.BaseType.FALSE' otherwise.+ --+ -- - Note: Some implementations will default to shader state if this+ -- member does not match.+ compareEnable :: Bool+ , -- | 'Graphics.Vulkan.Core10.Enums.CompareOp.CompareOp' is a+ -- 'Graphics.Vulkan.Core10.Enums.CompareOp.CompareOp' value specifying the+ -- comparison function to apply to fetched data before filtering as+ -- described in the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation Depth Compare Operation>+ -- section.+ compareOp :: CompareOp+ , -- | @minLod@ and @maxLod@ are the values used to clamp the computed LOD+ -- value, as described in the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-level-of-detail-operation Level-of-Detail Operation>+ -- section.+ minLod :: Float+ , -- No documentation found for Nested "VkSamplerCreateInfo" "maxLod"+ maxLod :: Float+ , -- | 'Graphics.Vulkan.Core10.Enums.BorderColor.BorderColor' is a+ -- 'Graphics.Vulkan.Core10.Enums.BorderColor.BorderColor' value specifying+ -- the predefined border color to use.+ borderColor :: BorderColor+ , -- | @unnormalizedCoordinates@ controls whether to use unnormalized or+ -- normalized texel coordinates to address texels of the image. When set to+ -- 'Graphics.Vulkan.Core10.BaseType.TRUE', the range of the image+ -- coordinates used to lookup the texel is in the range of zero to the+ -- image dimensions for x, y and z. When set to+ -- 'Graphics.Vulkan.Core10.BaseType.FALSE' the range of image coordinates+ -- is zero to one.+ --+ -- When @unnormalizedCoordinates@ is+ -- 'Graphics.Vulkan.Core10.BaseType.TRUE', images the sampler is used with+ -- in the shader have the following requirements:+ --+ -- - The @viewType@ /must/ be either+ -- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D' or+ -- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D'.+ --+ -- - The image view /must/ have a single layer and a single mip level.+ --+ -- When @unnormalizedCoordinates@ is+ -- 'Graphics.Vulkan.Core10.BaseType.TRUE', image built-in functions in the+ -- shader that use the sampler have the following requirements:+ --+ -- - The functions /must/ not use projection.+ --+ -- - The functions /must/ not use offsets.+ unnormalizedCoordinates :: Bool+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (SamplerCreateInfo es)++instance Extensible SamplerCreateInfo where+ extensibleType = STRUCTURE_TYPE_SAMPLER_CREATE_INFO+ setNext x next = x{next = next}+ getNext SamplerCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends SamplerCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @SamplerReductionModeCreateInfo = Just f+ | Just Refl <- eqT @e @SamplerYcbcrConversionInfo = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (SamplerCreateInfo es) where+ withCStruct x f = allocaBytesAligned 80 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SamplerCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SAMPLER_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr SamplerCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr Filter)) (magFilter)+ lift $ poke ((p `plusPtr` 24 :: Ptr Filter)) (minFilter)+ lift $ poke ((p `plusPtr` 28 :: Ptr SamplerMipmapMode)) (mipmapMode)+ lift $ poke ((p `plusPtr` 32 :: Ptr SamplerAddressMode)) (addressModeU)+ lift $ poke ((p `plusPtr` 36 :: Ptr SamplerAddressMode)) (addressModeV)+ lift $ poke ((p `plusPtr` 40 :: Ptr SamplerAddressMode)) (addressModeW)+ lift $ poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (mipLodBias))+ lift $ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (anisotropyEnable))+ lift $ poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (maxAnisotropy))+ lift $ poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (compareEnable))+ lift $ poke ((p `plusPtr` 60 :: Ptr CompareOp)) (compareOp)+ lift $ poke ((p `plusPtr` 64 :: Ptr CFloat)) (CFloat (minLod))+ lift $ poke ((p `plusPtr` 68 :: Ptr CFloat)) (CFloat (maxLod))+ lift $ poke ((p `plusPtr` 72 :: Ptr BorderColor)) (borderColor)+ lift $ poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (unnormalizedCoordinates))+ lift $ f+ cStructSize = 80+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SAMPLER_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 20 :: Ptr Filter)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr Filter)) (zero)+ lift $ poke ((p `plusPtr` 28 :: Ptr SamplerMipmapMode)) (zero)+ lift $ poke ((p `plusPtr` 32 :: Ptr SamplerAddressMode)) (zero)+ lift $ poke ((p `plusPtr` 36 :: Ptr SamplerAddressMode)) (zero)+ lift $ poke ((p `plusPtr` 40 :: Ptr SamplerAddressMode)) (zero)+ lift $ poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (zero))+ lift $ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (zero))+ lift $ poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 60 :: Ptr CompareOp)) (zero)+ lift $ poke ((p `plusPtr` 64 :: Ptr CFloat)) (CFloat (zero))+ lift $ poke ((p `plusPtr` 68 :: Ptr CFloat)) (CFloat (zero))+ lift $ poke ((p `plusPtr` 72 :: Ptr BorderColor)) (zero)+ lift $ poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ f++instance PeekChain es => FromCStruct (SamplerCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @SamplerCreateFlags ((p `plusPtr` 16 :: Ptr SamplerCreateFlags))+ magFilter <- peek @Filter ((p `plusPtr` 20 :: Ptr Filter))+ minFilter <- peek @Filter ((p `plusPtr` 24 :: Ptr Filter))+ mipmapMode <- peek @SamplerMipmapMode ((p `plusPtr` 28 :: Ptr SamplerMipmapMode))+ addressModeU <- peek @SamplerAddressMode ((p `plusPtr` 32 :: Ptr SamplerAddressMode))+ addressModeV <- peek @SamplerAddressMode ((p `plusPtr` 36 :: Ptr SamplerAddressMode))+ addressModeW <- peek @SamplerAddressMode ((p `plusPtr` 40 :: Ptr SamplerAddressMode))+ mipLodBias <- peek @CFloat ((p `plusPtr` 44 :: Ptr CFloat))+ anisotropyEnable <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))+ maxAnisotropy <- peek @CFloat ((p `plusPtr` 52 :: Ptr CFloat))+ compareEnable <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))+ compareOp <- peek @CompareOp ((p `plusPtr` 60 :: Ptr CompareOp))+ minLod <- peek @CFloat ((p `plusPtr` 64 :: Ptr CFloat))+ maxLod <- peek @CFloat ((p `plusPtr` 68 :: Ptr CFloat))+ borderColor <- peek @BorderColor ((p `plusPtr` 72 :: Ptr BorderColor))+ unnormalizedCoordinates <- peek @Bool32 ((p `plusPtr` 76 :: Ptr Bool32))+ pure $ SamplerCreateInfo+ next flags magFilter minFilter mipmapMode addressModeU addressModeV addressModeW ((\(CFloat a) -> a) mipLodBias) (bool32ToBool anisotropyEnable) ((\(CFloat a) -> a) maxAnisotropy) (bool32ToBool compareEnable) compareOp ((\(CFloat a) -> a) minLod) ((\(CFloat a) -> a) maxLod) borderColor (bool32ToBool unnormalizedCoordinates)++instance es ~ '[] => Zero (SamplerCreateInfo es) where+ zero = SamplerCreateInfo+ ()+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core10/Sampler.hs-boot view
@@ -0,0 +1,17 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Sampler (SamplerCreateInfo) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+type role SamplerCreateInfo nominal+data SamplerCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (SamplerCreateInfo es)+instance Show (Chain es) => Show (SamplerCreateInfo es)++instance PeekChain es => FromCStruct (SamplerCreateInfo es)+
src/Graphics/Vulkan/Core10/Shader.hs view
@@ -1,183 +1,190 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.Shader- ( VkShaderModuleCreateFlags(..)- , VkShaderModule- , vkCreateShaderModule- , vkDestroyShaderModule- , VkShaderModuleCreateInfo(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Word- ( Word32- )-import Foreign.C.Types- ( CSize(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- )----- ** VkShaderModuleCreateFlags---- | VkShaderModuleCreateFlags - Reserved for future use------ = Description------ @VkShaderModuleCreateFlags@ is a bitmask type for setting a mask, but is--- currently reserved for future use.------ = See Also------ 'VkShaderModuleCreateInfo'-newtype VkShaderModuleCreateFlags = VkShaderModuleCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkShaderModuleCreateFlags where- - showsPrec p (VkShaderModuleCreateFlags x) = showParen (p >= 11) (showString "VkShaderModuleCreateFlags " . showsPrec 11 x)--instance Read VkShaderModuleCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkShaderModuleCreateFlags")- v <- step readPrec- pure (VkShaderModuleCreateFlags v)- )- )+module Graphics.Vulkan.Core10.Shader ( createShaderModule+ , withShaderModule+ , destroyShaderModule+ , ShaderModuleCreateInfo(..)+ ) where +import Control.Exception.Base (bracket)+import Control.Monad (unless)+import Data.Bits ((.&.))+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Marshal.Utils (copyBytes)+import Foreign.Ptr (ptrToWordPtr)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import qualified Data.ByteString (length)+import Data.ByteString (packCStringLen)+import Data.ByteString.Unsafe (unsafeUseAsCString)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.C.Types (CSize)+import Foreign.C.Types (CSize(CSize))+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import GHC.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateShaderModule))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyShaderModule))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Handles (ShaderModule)+import Graphics.Vulkan.Core10.Handles (ShaderModule(..))+import Graphics.Vulkan.Core10.Enums.ShaderModuleCreateFlagBits (ShaderModuleCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_validation_cache (ShaderModuleValidationCacheCreateInfoEXT)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateShaderModule+ :: FunPtr (Ptr Device_T -> Ptr (ShaderModuleCreateInfo a) -> Ptr AllocationCallbacks -> Ptr ShaderModule -> IO Result) -> Ptr Device_T -> Ptr (ShaderModuleCreateInfo a) -> Ptr AllocationCallbacks -> Ptr ShaderModule -> IO Result --- | Dummy data to tag the 'Ptr' with-data VkShaderModule_T--- | VkShaderModule - Opaque handle to a shader module object------ = See Also------ 'Graphics.Vulkan.Core10.Pipeline.VkPipelineShaderStageCreateInfo',--- 'vkCreateShaderModule', 'vkDestroyShaderModule'-type VkShaderModule = Ptr VkShaderModule_T -- | vkCreateShaderModule - Creates a new shader module object -- -- = Parameters ----- - @device@ is the logical device that creates the shader module.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the shader module. ----- - @pCreateInfo@ parameter is a pointer to an instance of the--- @VkShaderModuleCreateInfo@ structure.+-- - @pCreateInfo@ is a pointer to a 'ShaderModuleCreateInfo' structure. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. ----- - @pShaderModule@ points to a @VkShaderModule@ handle in which the+-- - @pShaderModule@ is a pointer to a+-- 'Graphics.Vulkan.Core10.Handles.ShaderModule' handle in which the -- resulting shader module object is returned. -- -- = Description -- -- Once a shader module has been created, any entry points it contains--- /can/ be used in pipeline shader stages as described in [Compute--- Pipelines](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-compute)--- and [Graphics--- Pipelines](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#pipelines-graphics).+-- /can/ be used in pipeline shader stages as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-compute Compute Pipelines>+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-graphics Graphics Pipelines>. ----- If the shader stage fails to compile @VK_ERROR_INVALID_SHADER_NV@ will--- be generated and the compile log will be reported back to the--- application by @{html_spec_relative}#VK_EXT_debug_report@ if enabled.+-- If the shader stage fails to compile+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV' will be+-- generated and the compile log will be reported back to the application+-- by+-- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_debug_report@+-- if enabled. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle -- -- - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkShaderModuleCreateInfo@ structure+-- 'ShaderModuleCreateInfo' structure -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - @pShaderModule@ /must/ be a valid pointer to a @VkShaderModule@--- handle+-- - @pShaderModule@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.ShaderModule' handle -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- - @VK_ERROR_INVALID_SHADER_NV@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkShaderModule', 'VkShaderModuleCreateInfo'+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.ShaderModule', 'ShaderModuleCreateInfo'+createShaderModule :: PokeChain a => Device -> ShaderModuleCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (ShaderModule)+createShaderModule device createInfo allocator = evalContT $ do+ let vkCreateShaderModule' = mkVkCreateShaderModule (pVkCreateShaderModule (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPShaderModule <- ContT $ bracket (callocBytes @ShaderModule 8) free+ r <- lift $ vkCreateShaderModule' (deviceHandle (device)) pCreateInfo pAllocator (pPShaderModule)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pShaderModule <- lift $ peek @ShaderModule pPShaderModule+ pure $ (pShaderModule)++-- | A safe wrapper for 'createShaderModule' and 'destroyShaderModule' using+-- 'bracket'+--+-- The allocated value must not be returned from the provided computation+withShaderModule :: PokeChain a => Device -> ShaderModuleCreateInfo a -> Maybe AllocationCallbacks -> (ShaderModule -> IO r) -> IO r+withShaderModule device shaderModuleCreateInfo allocationCallbacks =+ bracket+ (createShaderModule device shaderModuleCreateInfo allocationCallbacks)+ (\o -> destroyShaderModule device o allocationCallbacks)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkCreateShaderModule" vkCreateShaderModule :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkShaderModuleCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pShaderModule" ::: Ptr VkShaderModule) -> IO VkResult--- | vkDestroyShaderModule - Destroy a shader module module+ "dynamic" mkVkDestroyShaderModule+ :: FunPtr (Ptr Device_T -> ShaderModule -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> ShaderModule -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyShaderModule - Destroy a shader module -- -- = Parameters ----- - @device@ is the logical device that destroys the shader module.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the shader module. ----- - @shaderModule@ is the handle of the shader module to destroy.+-- - 'Graphics.Vulkan.Core10.Handles.ShaderModule' is the handle of the+-- shader module to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. -- -- = Description@@ -187,39 +194,54 @@ -- -- == Valid Usage ----- - If @VkAllocationCallbacks@ were provided when @shaderModule@ was+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.ShaderModule' was -- created, a compatible set of callbacks /must/ be provided here ----- - If no @VkAllocationCallbacks@ were provided when @shaderModule@ was+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when 'Graphics.Vulkan.Core10.Handles.ShaderModule' was -- created, @pAllocator@ /must/ be @NULL@ -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - If @shaderModule@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @shaderModule@--- /must/ be a valid @VkShaderModule@ handle+-- - If 'Graphics.Vulkan.Core10.Handles.ShaderModule' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.ShaderModule' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.ShaderModule' handle -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - If @shaderModule@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@+-- - If 'Graphics.Vulkan.Core10.Handles.ShaderModule' is a valid handle,+-- it /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization ----- - Host access to @shaderModule@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.ShaderModule' /must/+-- be externally synchronized -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkShaderModule'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroyShaderModule" vkDestroyShaderModule :: ("device" ::: VkDevice) -> ("shaderModule" ::: VkShaderModule) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.ShaderModule'+destroyShaderModule :: Device -> ShaderModule -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyShaderModule device shaderModule allocator = evalContT $ do+ let vkDestroyShaderModule' = mkVkDestroyShaderModule (pVkDestroyShaderModule (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyShaderModule' (deviceHandle (device)) (shaderModule) pAllocator+ pure $ ()++ -- | VkShaderModuleCreateInfo - Structure specifying parameters of a newly -- created shader module --@@ -227,81 +249,139 @@ -- -- - @codeSize@ /must/ be greater than 0 ----- - If @pCode@ points to SPIR-V code, @codeSize@ /must/ be a multiple of--- 4+-- - If @pCode@ is a pointer to SPIR-V code, @codeSize@ /must/ be a+-- multiple of 4 -- -- - @pCode@ /must/ point to either valid SPIR-V code, formatted and--- packed as described by the [Khronos SPIR-V--- Specification](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#spirv-spec)--- or valid GLSL code which /must/ be written to the GL_KHR_vulkan_glsl--- extension specification+-- packed as described by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirv-spec Khronos SPIR-V Specification>+-- or valid GLSL code which /must/ be written to the+-- @GL_KHR_vulkan_glsl@ extension specification ----- - If @pCode@ points to SPIR-V code, that code /must/ adhere to the--- validation rules described by the [Validation Rules within a--- Module](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#spirvenv-module-validation)--- section of the [SPIR-V--- Environment](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#spirvenv-capabilities)+-- - If @pCode@ is a pointer to SPIR-V code, that code /must/ adhere to+-- the validation rules described by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-module-validation Validation Rules within a Module>+-- section of the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities SPIR-V Environment> -- appendix ----- - If @pCode@ points to GLSL code, it /must/ be valid GLSL code written--- to the GL_KHR_vulkan_glsl GLSL extension specification+-- - If @pCode@ is a pointer to GLSL code, it /must/ be valid GLSL code+-- written to the @GL_KHR_vulkan_glsl@ GLSL extension specification -- -- - @pCode@ /must/ declare the @Shader@ capability for SPIR-V code -- -- - @pCode@ /must/ not declare any capability that is not supported by -- the API, as described by the--- [Capabilities](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#spirvenv-module-validation)--- section of the [SPIR-V--- Environment](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#spirvenv-capabilities)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-module-validation Capabilities>+-- section of the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities SPIR-V Environment> -- appendix -- -- - If @pCode@ declares any of the capabilities listed as /optional/ in--- the [SPIR-V--- Environment](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#spirvenv-capabilities-table)+-- the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table SPIR-V Environment> -- appendix, the corresponding feature(s) /must/ be enabled. -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO@+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO' -- -- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.VkShaderModuleValidationCacheCreateInfoEXT'+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.ShaderModuleValidationCacheCreateInfoEXT' ----- - @flags@ /must/ be @0@+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique --+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+-- -- - @pCode@ /must/ be a valid pointer to an array of--- \(codeSize \over 4\) @uint32_t@ values+-- \(\textrm{codeSize} \over 4\) @uint32_t@ values -- -- = See Also ----- 'VkShaderModuleCreateFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateShaderModule'-data VkShaderModuleCreateInfo = VkShaderModuleCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkShaderModuleCreateFlags- , -- | @codeSize@ is the size, in bytes, of the code pointed to by @pCode@.- vkCodeSize :: CSize- , -- | @pCode@ points to code that is used to create the shader module. The- -- type and format of the code is determined from the content of the memory- -- addressed by @pCode@.- vkPCode :: Ptr Word32+-- 'Graphics.Vulkan.Core10.Enums.ShaderModuleCreateFlagBits.ShaderModuleCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createShaderModule'+data ShaderModuleCreateInfo (es :: [Type]) = ShaderModuleCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: ShaderModuleCreateFlags+ , -- | @pCode@ is a pointer to code that is used to create the shader module.+ -- The type and format of the code is determined from the content of the+ -- memory addressed by @pCode@.+ code :: ByteString }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show (Chain es) => Show (ShaderModuleCreateInfo es) -instance Storable VkShaderModuleCreateInfo where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkShaderModuleCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkShaderModuleCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkShaderModuleCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkShaderModuleCreateInfo))- *> poke (ptr `plusPtr` 24) (vkCodeSize (poked :: VkShaderModuleCreateInfo))- *> poke (ptr `plusPtr` 32) (vkPCode (poked :: VkShaderModuleCreateInfo))+instance Extensible ShaderModuleCreateInfo where+ extensibleType = STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO+ setNext x next = x{next = next}+ getNext ShaderModuleCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends ShaderModuleCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @ShaderModuleValidationCacheCreateInfoEXT = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (ShaderModuleCreateInfo es) where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ShaderModuleCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr ShaderModuleCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 24 :: Ptr CSize)) (fromIntegral $ Data.ByteString.length (code))+ lift $ unless (Data.ByteString.length (code) .&. 3 == 0) $+ throwIO $ IOError Nothing InvalidArgument "" "code size must be a multiple of 4" Nothing Nothing+ unalignedCode <- ContT $ unsafeUseAsCString (code)+ pCode'' <- if ptrToWordPtr unalignedCode .&. 3 == 0+ -- If this pointer is already aligned properly then use it+ then pure $ castPtr @CChar @Word32 unalignedCode+ -- Otherwise allocate and copy the bytes+ else do+ let len = Data.ByteString.length (code)+ mem <- ContT $ allocaBytesAligned @Word32 len 4+ lift $ copyBytes mem (castPtr @CChar @Word32 unalignedCode) len+ pure mem+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Word32))) pCode''+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ unless (Data.ByteString.length (mempty) .&. 3 == 0) $+ throwIO $ IOError Nothing InvalidArgument "" "code size must be a multiple of 4" Nothing Nothing+ unalignedCode <- ContT $ unsafeUseAsCString (mempty)+ pCode'' <- if ptrToWordPtr unalignedCode .&. 3 == 0+ -- If this pointer is already aligned properly then use it+ then pure $ castPtr @CChar @Word32 unalignedCode+ -- Otherwise allocate and copy the bytes+ else do+ let len = Data.ByteString.length (mempty)+ mem <- ContT $ allocaBytesAligned @Word32 len 4+ lift $ copyBytes mem (castPtr @CChar @Word32 unalignedCode) len+ pure mem+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Word32))) pCode''+ lift $ f++instance PeekChain es => FromCStruct (ShaderModuleCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @ShaderModuleCreateFlags ((p `plusPtr` 16 :: Ptr ShaderModuleCreateFlags))+ codeSize <- peek @CSize ((p `plusPtr` 24 :: Ptr CSize))+ pCode <- peek @(Ptr Word32) ((p `plusPtr` 32 :: Ptr (Ptr Word32)))+ code <- packCStringLen (castPtr @Word32 @CChar pCode, fromIntegral $ ((\(CSize a) -> a) codeSize) * 4)+ pure $ ShaderModuleCreateInfo+ next flags code++instance es ~ '[] => Zero (ShaderModuleCreateInfo es) where+ zero = ShaderModuleCreateInfo+ ()+ zero+ mempty+
+ src/Graphics/Vulkan/Core10/Shader.hs-boot view
@@ -0,0 +1,17 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.Shader (ShaderModuleCreateInfo) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+type role ShaderModuleCreateInfo nominal+data ShaderModuleCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (ShaderModuleCreateInfo es)+instance Show (Chain es) => Show (ShaderModuleCreateInfo es)++instance PeekChain es => FromCStruct (ShaderModuleCreateInfo es)+
@@ -0,0 +1,665 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.SharedTypes ( Offset2D(..)+ , Offset3D(..)+ , Extent2D(..)+ , Extent3D(..)+ , ImageSubresourceLayers(..)+ , ImageSubresourceRange(..)+ , ClearDepthStencilValue(..)+ , ClearColorValue(..)+ , ClearValue(..)+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Ptr (castPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (runContT)+import Data.Typeable (Typeable)+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CFloat(CFloat))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Data.Int (Int32)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import qualified Data.Vector.Storable.Sized (Vector)+import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlags)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+-- | VkOffset2D - Structure specifying a two-dimensional offset+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplayPlaneCapabilitiesKHR',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D',+-- 'Graphics.Vulkan.Extensions.VK_KHR_incremental_present.RectLayerKHR'+data Offset2D = Offset2D+ { -- | @x@ is the x offset.+ x :: Int32+ , -- | @y@ is the y offset.+ y :: Int32+ }+ deriving (Typeable)+deriving instance Show Offset2D++instance ToCStruct Offset2D where+ withCStruct x f = allocaBytesAligned 8 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p Offset2D{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Int32)) (x)+ poke ((p `plusPtr` 4 :: Ptr Int32)) (y)+ f+ cStructSize = 8+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Int32)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Int32)) (zero)+ f++instance FromCStruct Offset2D where+ peekCStruct p = do+ x <- peek @Int32 ((p `plusPtr` 0 :: Ptr Int32))+ y <- peek @Int32 ((p `plusPtr` 4 :: Ptr Int32))+ pure $ Offset2D+ x y++instance Storable Offset2D where+ sizeOf ~_ = 8+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero Offset2D where+ zero = Offset2D+ zero+ zero+++-- | VkOffset3D - Structure specifying a three-dimensional offset+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.ImageBlit',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.ImageCopy',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.ImageResolve',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind'+data Offset3D = Offset3D+ { -- | @x@ is the x offset.+ x :: Int32+ , -- | @y@ is the y offset.+ y :: Int32+ , -- | @z@ is the z offset.+ z :: Int32+ }+ deriving (Typeable)+deriving instance Show Offset3D++instance ToCStruct Offset3D where+ withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p Offset3D{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Int32)) (x)+ poke ((p `plusPtr` 4 :: Ptr Int32)) (y)+ poke ((p `plusPtr` 8 :: Ptr Int32)) (z)+ f+ cStructSize = 12+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Int32)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Int32)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Int32)) (zero)+ f++instance FromCStruct Offset3D where+ peekCStruct p = do+ x <- peek @Int32 ((p `plusPtr` 0 :: Ptr Int32))+ y <- peek @Int32 ((p `plusPtr` 4 :: Ptr Int32))+ z <- peek @Int32 ((p `plusPtr` 8 :: Ptr Int32))+ pure $ Offset3D+ x y z++instance Storable Offset3D where+ sizeOf ~_ = 12+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero Offset3D where+ zero = Offset3D+ zero+ zero+ zero+++-- | VkExtent2D - Structure specifying a two-dimensional extent+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplayModeParametersKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplayPlaneCapabilitiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplayPropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplaySurfaceCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.MultisamplePropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImagePropertiesNV',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D',+-- 'Graphics.Vulkan.Extensions.VK_KHR_incremental_present.RectLayerKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCapabilities2EXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',+-- 'Graphics.Vulkan.Core10.Pass.getRenderAreaGranularity'+data Extent2D = Extent2D+ { -- | @width@ is the width of the extent.+ width :: Word32+ , -- | @height@ is the height of the extent.+ height :: Word32+ }+ deriving (Typeable)+deriving instance Show Extent2D++instance ToCStruct Extent2D where+ withCStruct x f = allocaBytesAligned 8 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p Extent2D{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (width)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (height)+ f+ cStructSize = 8+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ f++instance FromCStruct Extent2D where+ peekCStruct p = do+ width <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ height <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ pure $ Extent2D+ width height++instance Storable Extent2D where+ sizeOf ~_ = 8+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero Extent2D where+ zero = Extent2D+ zero+ zero+++-- | VkExtent3D - Structure specifying a three-dimensional extent+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.ImageCopy',+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.ImageResolve',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.QueueFamilyProperties',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties',+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind'+data Extent3D = Extent3D+ { -- | @width@ is the width of the extent.+ width :: Word32+ , -- | @height@ is the height of the extent.+ height :: Word32+ , -- | @depth@ is the depth of the extent.+ depth :: Word32+ }+ deriving (Typeable)+deriving instance Show Extent3D++instance ToCStruct Extent3D where+ withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p Extent3D{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (width)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (height)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (depth)+ f+ cStructSize = 12+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+ f++instance FromCStruct Extent3D where+ peekCStruct p = do+ width <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ height <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ depth <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ pure $ Extent3D+ width height depth++instance Storable Extent3D where+ sizeOf ~_ = 12+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero Extent3D where+ zero = Extent3D+ zero+ zero+ zero+++-- | VkImageSubresourceLayers - Structure specifying an image subresource+-- layers+--+-- == Valid Usage+--+-- - If @aspectMask@ contains+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',+-- it /must/ not contain either of+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+--+-- - @aspectMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_METADATA_BIT'+--+-- - @aspectMask@ /must/ not include+-- @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ for any index @i@.+--+-- - @layerCount@ /must/ be greater than 0+--+-- == Valid Usage (Implicit)+--+-- - @aspectMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits'+-- values+--+-- - @aspectMask@ /must/ not be @0@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.ImageBlit',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.ImageCopy',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.ImageResolve'+data ImageSubresourceLayers = ImageSubresourceLayers+ { -- | @aspectMask@ is a combination of+ -- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits',+ -- selecting the color, depth and\/or stencil aspects to be copied.+ aspectMask :: ImageAspectFlags+ , -- | @mipLevel@ is the mipmap level to copy from.+ mipLevel :: Word32+ , -- | @baseArrayLayer@ and @layerCount@ are the starting layer and number of+ -- layers to copy.+ baseArrayLayer :: Word32+ , -- No documentation found for Nested "VkImageSubresourceLayers" "layerCount"+ layerCount :: Word32+ }+ deriving (Typeable)+deriving instance Show ImageSubresourceLayers++instance ToCStruct ImageSubresourceLayers where+ withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageSubresourceLayers{..} f = do+ poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (aspectMask)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (mipLevel)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (baseArrayLayer)+ poke ((p `plusPtr` 12 :: Ptr Word32)) (layerCount)+ f+ cStructSize = 16+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)+ f++instance FromCStruct ImageSubresourceLayers where+ peekCStruct p = do+ aspectMask <- peek @ImageAspectFlags ((p `plusPtr` 0 :: Ptr ImageAspectFlags))+ mipLevel <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ baseArrayLayer <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ layerCount <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))+ pure $ ImageSubresourceLayers+ aspectMask mipLevel baseArrayLayer layerCount++instance Storable ImageSubresourceLayers where+ sizeOf ~_ = 16+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImageSubresourceLayers where+ zero = ImageSubresourceLayers+ zero+ zero+ zero+ zero+++-- | VkImageSubresourceRange - Structure specifying an image subresource+-- range+--+-- = Description+--+-- The number of mipmap levels and array layers /must/ be a subset of the+-- image subresources in the image. If an application wants to use all mip+-- levels or layers in an image after the @baseMipLevel@ or+-- @baseArrayLayer@, it /can/ set @levelCount@ and @layerCount@ to the+-- special values+-- 'Graphics.Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS' and+-- 'Graphics.Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS' without+-- knowing the exact number of mip levels or layers.+--+-- For cube and cube array image views, the layers of the image view+-- starting at @baseArrayLayer@ correspond to faces in the order +X, -X,+-- +Y, -Y, +Z, -Z. For cube arrays, each set of six sequential layers is a+-- single cube, so the number of cube maps in a cube map array view is+-- /@layerCount@ \/ 6/, and image array layer (@baseArrayLayer@ + i) is+-- face index (i mod 6) of cube /i \/ 6/. If the number of layers in the+-- view, whether set explicitly in @layerCount@ or implied by+-- 'Graphics.Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', is not a+-- multiple of 6, the last cube map in the array /must/ not be accessed.+--+-- @aspectMask@ /must/ be only+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+-- if 'Graphics.Vulkan.Core10.Enums.Format.Format' is a color, depth-only+-- or stencil-only format, respectively, except if+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' is a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>.+-- If using a depth\/stencil format with both depth and stencil components,+-- @aspectMask@ /must/ include at least one of+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'+-- and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',+-- and /can/ include both.+--+-- When the 'ImageSubresourceRange' structure is used to select a subset of+-- the slices of a 3D image’s mip level in order to create a 2D or 2D array+-- image view of a 3D image created with+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT',+-- @baseArrayLayer@ and @layerCount@ specify the first slice index and the+-- number of slices to include in the created image view. Such an image+-- view /can/ be used as a framebuffer attachment that refers only to the+-- specified range of slices of the selected mip level. However, any layout+-- transitions performed on such an attachment view during a render pass+-- instance still apply to the entire subresource referenced which includes+-- all the slices of the selected mip level.+--+-- When using an image view of a depth\/stencil image to populate a+-- descriptor set (e.g. for sampling in the shader, or for use as an input+-- attachment), the @aspectMask@ /must/ only include one bit and selects+-- whether the image view is used for depth reads (i.e. using a+-- floating-point sampler or input attachment in the shader) or stencil+-- reads (i.e. using an unsigned integer sampler or input attachment in the+-- shader). When an image view of a depth\/stencil image is used as a+-- depth\/stencil framebuffer attachment, the @aspectMask@ is ignored and+-- both depth and stencil image subresources are used.+--+-- The 'Graphics.Vulkan.Core10.ImageView.ComponentMapping' @components@+-- member describes a remapping from components of the image to components+-- of the vector returned by shader image instructions. This remapping+-- /must/ be identity for storage image descriptors, input attachment+-- descriptors, framebuffer attachments, and any+-- 'Graphics.Vulkan.Core10.Handles.ImageView' used with a combined image+-- sampler that enables+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>.+--+-- When creating a 'Graphics.Vulkan.Core10.Handles.ImageView', if+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>+-- is enabled in the sampler, the @aspectMask@ of a @subresourceRange@ used+-- by the 'Graphics.Vulkan.Core10.Handles.ImageView' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'.+--+-- When creating a 'Graphics.Vulkan.Core10.Handles.ImageView', if sampler+-- Y′CBCR conversion is not enabled in the sampler and the image+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>,+-- the image /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT',+-- and the @aspectMask@ of the 'Graphics.Vulkan.Core10.Handles.ImageView'’s+-- @subresourceRange@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'.+--+-- == Valid Usage+--+-- - If @levelCount@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS', it+-- /must/ be greater than @0@+--+-- - If @layerCount@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', it+-- /must/ be greater than @0@+--+-- - If @aspectMask@ includes+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',+-- then it /must/ not include any of+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+--+-- - @aspectMask@ /must/ not include+-- @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ for any index @i@+--+-- == Valid Usage (Implicit)+--+-- - @aspectMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits'+-- values+--+-- - @aspectMask@ /must/ not be @0@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags',+-- 'Graphics.Vulkan.Core10.OtherTypes.ImageMemoryBarrier',+-- 'Graphics.Vulkan.Core10.ImageView.ImageViewCreateInfo',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdClearColorImage',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdClearDepthStencilImage'+data ImageSubresourceRange = ImageSubresourceRange+ { -- | @aspectMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits'+ -- specifying which aspect(s) of the image are included in the view.+ aspectMask :: ImageAspectFlags+ , -- | @baseMipLevel@ is the first mipmap level accessible to the view.+ baseMipLevel :: Word32+ , -- | @levelCount@ is the number of mipmap levels (starting from+ -- @baseMipLevel@) accessible to the view.+ levelCount :: Word32+ , -- | @baseArrayLayer@ is the first array layer accessible to the view.+ baseArrayLayer :: Word32+ , -- | @layerCount@ is the number of array layers (starting from+ -- @baseArrayLayer@) accessible to the view.+ layerCount :: Word32+ }+ deriving (Typeable)+deriving instance Show ImageSubresourceRange++instance ToCStruct ImageSubresourceRange where+ withCStruct x f = allocaBytesAligned 20 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageSubresourceRange{..} f = do+ poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (aspectMask)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (baseMipLevel)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (levelCount)+ poke ((p `plusPtr` 12 :: Ptr Word32)) (baseArrayLayer)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (layerCount)+ f+ cStructSize = 20+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ f++instance FromCStruct ImageSubresourceRange where+ peekCStruct p = do+ aspectMask <- peek @ImageAspectFlags ((p `plusPtr` 0 :: Ptr ImageAspectFlags))+ baseMipLevel <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ levelCount <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ baseArrayLayer <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))+ layerCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pure $ ImageSubresourceRange+ aspectMask baseMipLevel levelCount baseArrayLayer layerCount++instance Storable ImageSubresourceRange where+ sizeOf ~_ = 20+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImageSubresourceRange where+ zero = ImageSubresourceRange+ zero+ zero+ zero+ zero+ zero+++-- | VkClearDepthStencilValue - Structure specifying a clear depth stencil+-- value+--+-- == Valid Usage+--+-- - Unless the+-- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_depth_range_unrestricted@+-- extension is enabled @depth@ /must/ be between @0.0@ and @1.0@,+-- inclusive+--+-- = See Also+--+-- 'ClearValue',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdClearDepthStencilImage'+data ClearDepthStencilValue = ClearDepthStencilValue+ { -- | @depth@ is the clear value for the depth aspect of the depth\/stencil+ -- attachment. It is a floating-point value which is automatically+ -- converted to the attachment’s format.+ depth :: Float+ , -- | @stencil@ is the clear value for the stencil aspect of the+ -- depth\/stencil attachment. It is a 32-bit integer value which is+ -- converted to the attachment’s format by taking the appropriate number of+ -- LSBs.+ stencil :: Word32+ }+ deriving (Typeable)+deriving instance Show ClearDepthStencilValue++instance ToCStruct ClearDepthStencilValue where+ withCStruct x f = allocaBytesAligned 8 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ClearDepthStencilValue{..} f = do+ poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (depth))+ poke ((p `plusPtr` 4 :: Ptr Word32)) (stencil)+ f+ cStructSize = 8+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (zero))+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ f++instance FromCStruct ClearDepthStencilValue where+ peekCStruct p = do+ depth <- peek @CFloat ((p `plusPtr` 0 :: Ptr CFloat))+ stencil <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ pure $ ClearDepthStencilValue+ ((\(CFloat a) -> a) depth) stencil++instance Storable ClearDepthStencilValue where+ sizeOf ~_ = 8+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ClearDepthStencilValue where+ zero = ClearDepthStencilValue+ zero+ zero+++data ClearColorValue+ = Float32 ((Float, Float, Float, Float))+ | Int32 ((Int32, Int32, Int32, Int32))+ | Uint32 ((Word32, Word32, Word32, Word32))+ deriving (Show)++instance ToCStruct ClearColorValue where+ withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct :: Ptr ClearColorValue -> ClearColorValue -> IO a -> IO a+ pokeCStruct p = (. const) . runContT . \case+ Float32 v -> lift $ do+ let pFloat32 = lowerArrayPtr (castPtr @_ @(Data.Vector.Storable.Sized.Vector 4 CFloat) p)+ case (v) of+ (e0, e1, e2, e3) -> do+ poke (pFloat32 :: Ptr CFloat) (CFloat (e0))+ poke (pFloat32 `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+ poke (pFloat32 `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))+ poke (pFloat32 `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))+ Int32 v -> lift $ do+ let pInt32 = lowerArrayPtr (castPtr @_ @(Data.Vector.Storable.Sized.Vector 4 Int32) p)+ case (v) of+ (e0, e1, e2, e3) -> do+ poke (pInt32 :: Ptr Int32) (e0)+ poke (pInt32 `plusPtr` 4 :: Ptr Int32) (e1)+ poke (pInt32 `plusPtr` 8 :: Ptr Int32) (e2)+ poke (pInt32 `plusPtr` 12 :: Ptr Int32) (e3)+ Uint32 v -> lift $ do+ let pUint32 = lowerArrayPtr (castPtr @_ @(Data.Vector.Storable.Sized.Vector 4 Word32) p)+ case (v) of+ (e0, e1, e2, e3) -> do+ poke (pUint32 :: Ptr Word32) (e0)+ poke (pUint32 `plusPtr` 4 :: Ptr Word32) (e1)+ poke (pUint32 `plusPtr` 8 :: Ptr Word32) (e2)+ poke (pUint32 `plusPtr` 12 :: Ptr Word32) (e3)+ pokeZeroCStruct :: Ptr ClearColorValue -> IO b -> IO b+ pokeZeroCStruct _ f = f+ cStructSize = 16+ cStructAlignment = 4++instance Zero ClearColorValue where+ zero = Float32 (zero, zero, zero, zero)+++data ClearValue+ = Color ClearColorValue+ | DepthStencil ClearDepthStencilValue+ deriving (Show)++instance ToCStruct ClearValue where+ withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct :: Ptr ClearValue -> ClearValue -> IO a -> IO a+ pokeCStruct p = (. const) . runContT . \case+ Color v -> ContT $ pokeCStruct (castPtr @_ @ClearColorValue p) (v) . ($ ())+ DepthStencil v -> ContT $ pokeCStruct (castPtr @_ @ClearDepthStencilValue p) (v) . ($ ())+ pokeZeroCStruct :: Ptr ClearValue -> IO b -> IO b+ pokeZeroCStruct _ f = f+ cStructSize = 16+ cStructAlignment = 4++instance Zero ClearValue where+ zero = Color zero+
@@ -0,0 +1,72 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.SharedTypes ( ClearDepthStencilValue+ , Extent2D+ , Extent3D+ , ImageSubresourceLayers+ , ImageSubresourceRange+ , Offset2D+ , Offset3D+ , ClearColorValue+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ClearDepthStencilValue++instance ToCStruct ClearDepthStencilValue+instance Show ClearDepthStencilValue++instance FromCStruct ClearDepthStencilValue+++data Extent2D++instance ToCStruct Extent2D+instance Show Extent2D++instance FromCStruct Extent2D+++data Extent3D++instance ToCStruct Extent3D+instance Show Extent3D++instance FromCStruct Extent3D+++data ImageSubresourceLayers++instance ToCStruct ImageSubresourceLayers+instance Show ImageSubresourceLayers++instance FromCStruct ImageSubresourceLayers+++data ImageSubresourceRange++instance ToCStruct ImageSubresourceRange+instance Show ImageSubresourceRange++instance FromCStruct ImageSubresourceRange+++data Offset2D++instance ToCStruct Offset2D+instance Show Offset2D++instance FromCStruct Offset2D+++data Offset3D++instance ToCStruct Offset3D+instance Show Offset3D++instance FromCStruct Offset3D+++data ClearColorValue+
src/Graphics/Vulkan/Core10/SparseResourceMemoryManagement.hs view
@@ -1,1198 +1,1321 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core10.SparseResourceMemoryManagement- ( VkImageAspectFlagBits(..)- , pattern VK_IMAGE_ASPECT_COLOR_BIT- , pattern VK_IMAGE_ASPECT_DEPTH_BIT- , pattern VK_IMAGE_ASPECT_STENCIL_BIT- , pattern VK_IMAGE_ASPECT_METADATA_BIT- , VkSparseMemoryBindFlagBits(..)- , pattern VK_SPARSE_MEMORY_BIND_METADATA_BIT- , VkSparseImageFormatFlagBits(..)- , pattern VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT- , pattern VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT- , pattern VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT- , vkGetImageSparseMemoryRequirements- , vkGetPhysicalDeviceSparseImageFormatProperties- , vkQueueBindSparse- , VkOffset3D(..)- , VkSparseImageFormatProperties(..)- , VkSparseImageMemoryRequirements(..)- , VkImageSubresource(..)- , VkSparseMemoryBind(..)- , VkSparseImageMemoryBind(..)- , VkSparseBufferMemoryBindInfo(..)- , VkSparseImageOpaqueMemoryBindInfo(..)- , VkSparseImageMemoryBindInfo(..)- , VkBindSparseInfo(..)- , VkImageAspectFlags- , VkSparseMemoryBindFlags- , VkSparseImageFormatFlags- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Int- ( Int32- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkFormat(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkExtent3D(..)- , VkImageTiling(..)- , VkImageType(..)- , VkImageUsageFlagBits(..)- , VkSampleCountFlagBits(..)- , VkDevice- , VkDeviceSize- , VkImageUsageFlags- , VkPhysicalDevice- )-import Graphics.Vulkan.Core10.Memory- ( VkDeviceMemory- )-import Graphics.Vulkan.Core10.MemoryManagement- ( VkBuffer- , VkImage- )-import Graphics.Vulkan.Core10.Queue- ( VkFence- , VkQueue- , VkSemaphore- )----- ** VkImageAspectFlagBits---- | VkImageAspectFlagBits - Bitmask specifying which aspects of an image are--- included in a view------ = See Also------ 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkBindImagePlaneMemoryInfo',--- 'VkImageAspectFlags',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkImagePlaneMemoryRequirementsInfo'-newtype VkImageAspectFlagBits = VkImageAspectFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkImageAspectFlagBits where- showsPrec _ VK_IMAGE_ASPECT_COLOR_BIT = showString "VK_IMAGE_ASPECT_COLOR_BIT"- showsPrec _ VK_IMAGE_ASPECT_DEPTH_BIT = showString "VK_IMAGE_ASPECT_DEPTH_BIT"- showsPrec _ VK_IMAGE_ASPECT_STENCIL_BIT = showString "VK_IMAGE_ASPECT_STENCIL_BIT"- showsPrec _ VK_IMAGE_ASPECT_METADATA_BIT = showString "VK_IMAGE_ASPECT_METADATA_BIT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkImageAspectFlagBits 0x00000010) = showString "VK_IMAGE_ASPECT_PLANE_0_BIT"- showsPrec _ (VkImageAspectFlagBits 0x00000020) = showString "VK_IMAGE_ASPECT_PLANE_1_BIT"- showsPrec _ (VkImageAspectFlagBits 0x00000040) = showString "VK_IMAGE_ASPECT_PLANE_2_BIT"- showsPrec p (VkImageAspectFlagBits x) = showParen (p >= 11) (showString "VkImageAspectFlagBits " . showsPrec 11 x)--instance Read VkImageAspectFlagBits where- readPrec = parens ( choose [ ("VK_IMAGE_ASPECT_COLOR_BIT", pure VK_IMAGE_ASPECT_COLOR_BIT)- , ("VK_IMAGE_ASPECT_DEPTH_BIT", pure VK_IMAGE_ASPECT_DEPTH_BIT)- , ("VK_IMAGE_ASPECT_STENCIL_BIT", pure VK_IMAGE_ASPECT_STENCIL_BIT)- , ("VK_IMAGE_ASPECT_METADATA_BIT", pure VK_IMAGE_ASPECT_METADATA_BIT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_IMAGE_ASPECT_PLANE_0_BIT", pure (VkImageAspectFlagBits 0x00000010))- , ("VK_IMAGE_ASPECT_PLANE_1_BIT", pure (VkImageAspectFlagBits 0x00000020))- , ("VK_IMAGE_ASPECT_PLANE_2_BIT", pure (VkImageAspectFlagBits 0x00000040))- ] +++- prec 10 (do- expectP (Ident "VkImageAspectFlagBits")- v <- step readPrec- pure (VkImageAspectFlagBits v)- )- )---- | @VK_IMAGE_ASPECT_COLOR_BIT@ specifies the color aspect.-pattern VK_IMAGE_ASPECT_COLOR_BIT :: VkImageAspectFlagBits-pattern VK_IMAGE_ASPECT_COLOR_BIT = VkImageAspectFlagBits 0x00000001---- | @VK_IMAGE_ASPECT_DEPTH_BIT@ specifies the depth aspect.-pattern VK_IMAGE_ASPECT_DEPTH_BIT :: VkImageAspectFlagBits-pattern VK_IMAGE_ASPECT_DEPTH_BIT = VkImageAspectFlagBits 0x00000002---- | @VK_IMAGE_ASPECT_STENCIL_BIT@ specifies the stencil aspect.-pattern VK_IMAGE_ASPECT_STENCIL_BIT :: VkImageAspectFlagBits-pattern VK_IMAGE_ASPECT_STENCIL_BIT = VkImageAspectFlagBits 0x00000004---- | @VK_IMAGE_ASPECT_METADATA_BIT@ specifies the metadata aspect, used for--- sparse [sparse--- resource](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#sparsememory)--- operations.-pattern VK_IMAGE_ASPECT_METADATA_BIT :: VkImageAspectFlagBits-pattern VK_IMAGE_ASPECT_METADATA_BIT = VkImageAspectFlagBits 0x00000008--- ** VkSparseMemoryBindFlagBits---- | VkSparseMemoryBindFlagBits - Bitmask specifying usage of a sparse memory--- binding operation------ = See Also------ 'VkSparseMemoryBindFlags'-newtype VkSparseMemoryBindFlagBits = VkSparseMemoryBindFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkSparseMemoryBindFlagBits where- showsPrec _ VK_SPARSE_MEMORY_BIND_METADATA_BIT = showString "VK_SPARSE_MEMORY_BIND_METADATA_BIT"- showsPrec p (VkSparseMemoryBindFlagBits x) = showParen (p >= 11) (showString "VkSparseMemoryBindFlagBits " . showsPrec 11 x)--instance Read VkSparseMemoryBindFlagBits where- readPrec = parens ( choose [ ("VK_SPARSE_MEMORY_BIND_METADATA_BIT", pure VK_SPARSE_MEMORY_BIND_METADATA_BIT)- ] +++- prec 10 (do- expectP (Ident "VkSparseMemoryBindFlagBits")- v <- step readPrec- pure (VkSparseMemoryBindFlagBits v)- )- )---- | @VK_SPARSE_MEMORY_BIND_METADATA_BIT@ specifies that the memory being--- bound is only for the metadata aspect.-pattern VK_SPARSE_MEMORY_BIND_METADATA_BIT :: VkSparseMemoryBindFlagBits-pattern VK_SPARSE_MEMORY_BIND_METADATA_BIT = VkSparseMemoryBindFlagBits 0x00000001--- ** VkSparseImageFormatFlagBits---- | VkSparseImageFormatFlagBits - Bitmask specifying additional information--- about a sparse image resource------ = See Also------ 'VkSparseImageFormatFlags'-newtype VkSparseImageFormatFlagBits = VkSparseImageFormatFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkSparseImageFormatFlagBits where- showsPrec _ VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = showString "VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT"- showsPrec _ VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = showString "VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT"- showsPrec _ VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = showString "VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT"- showsPrec p (VkSparseImageFormatFlagBits x) = showParen (p >= 11) (showString "VkSparseImageFormatFlagBits " . showsPrec 11 x)--instance Read VkSparseImageFormatFlagBits where- readPrec = parens ( choose [ ("VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT", pure VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT)- , ("VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT", pure VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT)- , ("VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT", pure VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT)- ] +++- prec 10 (do- expectP (Ident "VkSparseImageFormatFlagBits")- v <- step readPrec- pure (VkSparseImageFormatFlagBits v)- )- )---- | @VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT@ specifies that the image--- uses a single mip tail region for all array layers.-pattern VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT :: VkSparseImageFormatFlagBits-pattern VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = VkSparseImageFormatFlagBits 0x00000001---- | @VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT@ specifies that the first--- mip level whose dimensions are not integer multiples of the--- corresponding dimensions of the sparse image block begins the mip tail--- region.-pattern VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT :: VkSparseImageFormatFlagBits-pattern VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = VkSparseImageFormatFlagBits 0x00000002---- | @VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT@ specifies that the--- image uses non-standard sparse image block dimensions, and the--- @imageGranularity@ values do not match the standard sparse image block--- dimensions for the given format.-pattern VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT :: VkSparseImageFormatFlagBits-pattern VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = VkSparseImageFormatFlagBits 0x00000004--- | vkGetImageSparseMemoryRequirements - Query the memory requirements for a--- sparse image------ = Parameters------ - @device@ is the logical device that owns the image.------ - @image@ is the @VkImage@ object to get the memory requirements for.------ - @pSparseMemoryRequirementCount@ is a pointer to an integer related--- to the number of sparse memory requirements available or queried, as--- described below.------ - @pSparseMemoryRequirements@ is either @NULL@ or a pointer to an--- array of @VkSparseImageMemoryRequirements@ structures.------ = Description------ If @pSparseMemoryRequirements@ is @NULL@, then the number of sparse--- memory requirements available is returned in--- @pSparseMemoryRequirementCount@. Otherwise,--- @pSparseMemoryRequirementCount@ /must/ point to a variable set by the--- user to the number of elements in the @pSparseMemoryRequirements@ array,--- and on return the variable is overwritten with the number of structures--- actually written to @pSparseMemoryRequirements@. If--- @pSparseMemoryRequirementCount@ is less than the number of sparse memory--- requirements available, at most @pSparseMemoryRequirementCount@--- structures will be written.------ If the image was not created with @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@--- then @pSparseMemoryRequirementCount@ will be set to zero and--- @pSparseMemoryRequirements@ will not be written to.------ __Note__------ It is legal for an implementation to report a larger value in--- @VkMemoryRequirements@::@size@ than would be obtained by adding together--- memory sizes for all @VkSparseImageMemoryRequirements@ returned by--- @vkGetImageSparseMemoryRequirements@. This /may/ occur when the--- implementation requires unused padding in the address range describing--- the resource.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @image@ /must/ be a valid @VkImage@ handle------ - @pSparseMemoryRequirementCount@ /must/ be a valid pointer to a--- @uint32_t@ value------ - If the value referenced by @pSparseMemoryRequirementCount@ is not--- @0@, and @pSparseMemoryRequirements@ is not @NULL@,--- @pSparseMemoryRequirements@ /must/ be a valid pointer to an array of--- @pSparseMemoryRequirementCount@ @VkSparseImageMemoryRequirements@--- structures------ - @image@ /must/ have been created, allocated, or retrieved from--- @device@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'VkSparseImageMemoryRequirements'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetImageSparseMemoryRequirements" vkGetImageSparseMemoryRequirements :: ("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements) -> IO ()--- | vkGetPhysicalDeviceSparseImageFormatProperties - Retrieve properties of--- an image format applied to sparse images------ = Parameters------ - @physicalDevice@ is the physical device from which to query the--- sparse image capabilities.------ - @format@ is the image format.------ - @type@ is the dimensionality of image.------ - @samples@ is the number of samples per texel as defined in--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'.------ - @usage@ is a bitmask describing the intended usage of the image.------ - @tiling@ is the tiling arrangement of the data elements in memory.------ - @pPropertyCount@ is a pointer to an integer related to the number of--- sparse format properties available or queried, as described below.------ - @pProperties@ is either @NULL@ or a pointer to an array of--- 'VkSparseImageFormatProperties' structures.------ = Description------ If @pProperties@ is @NULL@, then the number of sparse format properties--- available is returned in @pPropertyCount@. Otherwise, @pPropertyCount@--- /must/ point to a variable set by the user to the number of elements in--- the @pProperties@ array, and on return the variable is overwritten with--- the number of structures actually written to @pProperties@. If--- @pPropertyCount@ is less than the number of sparse format properties--- available, at most @pPropertyCount@ structures will be written.------ If @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@ is not supported for the given--- arguments, @pPropertyCount@ will be set to zero upon return, and no data--- will be written to @pProperties@.------ Multiple aspects are returned for depth\/stencil images that are--- implemented as separate planes by the implementation. The depth and--- stencil data planes each have unique @VkSparseImageFormatProperties@--- data.------ Depth\/stencil images with depth and stencil data interleaved into a--- single plane will return a single @VkSparseImageFormatProperties@--- structure with the @aspectMask@ set to @VK_IMAGE_ASPECT_DEPTH_BIT@ |--- @VK_IMAGE_ASPECT_STENCIL_BIT@.------ == Valid Usage------ - @samples@ /must/ be a bit value that is set in--- @VkImageFormatProperties@::@sampleCounts@ returned by--- @vkGetPhysicalDeviceImageFormatProperties@ with @format@, @type@,--- @tiling@, and @usage@ equal to those in this command and @flags@--- equal to the value that is set in @VkImageCreateInfo@::@flags@ when--- the image is created------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'--- value------ - @type@ /must/ be a valid--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType' value------ - @samples@ /must/ be a valid--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'--- value------ - @usage@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits'--- values------ - @usage@ /must/ not be @0@------ - @tiling@ /must/ be a valid--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageTiling' value------ - @pPropertyCount@ /must/ be a valid pointer to a @uint32_t@ value------ - If the value referenced by @pPropertyCount@ is not @0@, and--- @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer--- to an array of @pPropertyCount@ @VkSparseImageFormatProperties@--- structures------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkFormat',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageTiling',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlags',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits',--- 'VkSparseImageFormatProperties'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceSparseImageFormatProperties" vkGetPhysicalDeviceSparseImageFormatProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("samples" ::: VkSampleCountFlagBits) -> ("usage" ::: VkImageUsageFlags) -> ("tiling" ::: VkImageTiling) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties) -> IO ()--- | vkQueueBindSparse - Bind device memory to a sparse resource object------ = Parameters------ - @queue@ is the queue that the sparse binding operations will be--- submitted to.------ - @bindInfoCount@ is the number of elements in the @pBindInfo@ array.------ - @pBindInfo@ is an array of 'VkBindSparseInfo' structures, each--- specifying a sparse binding submission batch.------ - @fence@ is an /optional/ handle to a fence to be signaled. If--- @fence@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', it--- defines a [fence signal--- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences-signaling).------ = Description------ @vkQueueBindSparse@ is a [queue submission--- command](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#devsandqueues-submission),--- with each batch defined by an element of @pBindInfo@ as an instance of--- the 'VkBindSparseInfo' structure. Batches begin execution in the order--- they appear in @pBindInfo@, but /may/ complete out of order.------ Within a batch, a given range of a resource /must/ not be bound more--- than once. Across batches, if a range is to be bound to one allocation--- and offset and then to another allocation and offset, then the--- application /must/ guarantee (usually using semaphores) that the binding--- operations are executed in the correct order, as well as to order--- binding operations against the execution of command buffer submissions.------ As no operation to 'vkQueueBindSparse' causes any pipeline stage to--- access memory, synchronization primitives used in this command--- effectively only define execution dependencies.------ Additional information about fence and semaphore operation is described--- in [the synchronization--- chapter](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization).------ == Valid Usage------ - If @fence@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @fence@ /must/ be unsignaled------ - If @fence@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @fence@ /must/ not be associated with any other queue command that--- has not yet completed execution on that queue------ - Each element of the @pSignalSemaphores@ member of each element of--- @pBindInfo@ /must/ be unsignaled when the semaphore signal operation--- it defines is executed on the device------ - When a semaphore unsignal operation defined by any element of the--- @pWaitSemaphores@ member of any element of @pBindInfo@ executes on--- @queue@, no other queue /must/ be waiting on the same semaphore.------ - All elements of the @pWaitSemaphores@ member of all elements of--- @pBindInfo@ /must/ be semaphores that are signaled, or have--- [semaphore signal--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-signaling)--- previously submitted for execution.------ == Valid Usage (Implicit)------ - @queue@ /must/ be a valid @VkQueue@ handle------ - If @bindInfoCount@ is not @0@, @pBindInfo@ /must/ be a valid pointer--- to an array of @bindInfoCount@ valid @VkBindSparseInfo@ structures------ - If @fence@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @fence@ /must/ be a valid @VkFence@ handle------ - The @queue@ /must/ support sparse binding operations------ - Both of @fence@, and @queue@ that are valid handles /must/ have been--- created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @queue@ /must/ be externally synchronized------ - Host access to @pBindInfo@[].pWaitSemaphores[] /must/ be externally--- synchronized------ - Host access to @pBindInfo@[].pSignalSemaphores[] /must/ be--- externally synchronized------ - Host access to @pBindInfo@[].pBufferBinds[].buffer /must/ be--- externally synchronized------ - Host access to @pBindInfo@[].pImageOpaqueBinds[].image /must/ be--- externally synchronized------ - Host access to @pBindInfo@[].pImageBinds[].image /must/ be--- externally synchronized------ - Host access to @fence@ /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | - | - | SPARSE_BINDING | - |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_DEVICE_LOST@------ = See Also------ 'VkBindSparseInfo', 'Graphics.Vulkan.Core10.Queue.VkFence',--- 'Graphics.Vulkan.Core10.Queue.VkQueue'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkQueueBindSparse" vkQueueBindSparse :: ("queue" ::: VkQueue) -> ("bindInfoCount" ::: Word32) -> ("pBindInfo" ::: Ptr VkBindSparseInfo) -> ("fence" ::: VkFence) -> IO VkResult--- | VkOffset3D - Structure specifying a three-dimensional offset------ = See Also------ 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkBufferImageCopy',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkImageBlit',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkImageCopy',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkImageResolve',--- 'VkSparseImageMemoryBind'-data VkOffset3D = VkOffset3D- { -- | @x@ is the x offset.- vkX :: Int32- , -- | @y@ is the y offset.- vkY :: Int32- , -- | @z@ is the z offset.- vkZ :: Int32- }- deriving (Eq, Show)--instance Storable VkOffset3D where- sizeOf ~_ = 12- alignment ~_ = 4- peek ptr = VkOffset3D <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkX (poked :: VkOffset3D))- *> poke (ptr `plusPtr` 4) (vkY (poked :: VkOffset3D))- *> poke (ptr `plusPtr` 8) (vkZ (poked :: VkOffset3D))--- | VkSparseImageFormatProperties - Structure specifying sparse image format--- properties------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkExtent3D',--- 'VkImageAspectFlags', 'VkSparseImageFormatFlags',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkSparseImageFormatProperties2',--- 'VkSparseImageMemoryRequirements',--- 'vkGetPhysicalDeviceSparseImageFormatProperties'-data VkSparseImageFormatProperties = VkSparseImageFormatProperties- { -- | @aspectMask@ is a bitmask 'VkImageAspectFlagBits' specifying which- -- aspects of the image the properties apply to.- vkAspectMask :: VkImageAspectFlags- , -- | @imageGranularity@ is the width, height, and depth of the sparse image- -- block in texels or compressed texel blocks.- vkImageGranularity :: VkExtent3D- , -- | @flags@ is a bitmask of 'VkSparseImageFormatFlagBits' specifying- -- additional information about the sparse resource.- vkFlags :: VkSparseImageFormatFlags- }- deriving (Eq, Show)--instance Storable VkSparseImageFormatProperties where- sizeOf ~_ = 20- alignment ~_ = 4- peek ptr = VkSparseImageFormatProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkAspectMask (poked :: VkSparseImageFormatProperties))- *> poke (ptr `plusPtr` 4) (vkImageGranularity (poked :: VkSparseImageFormatProperties))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkSparseImageFormatProperties))--- | VkSparseImageMemoryRequirements - Structure specifying sparse image--- memory requirements------ = Members------ - @formatProperties.aspectMask@ is the set of aspects of the image--- that this sparse memory requirement applies to. This will usually--- have a single aspect specified. However, depth\/stencil images /may/--- have depth and stencil data interleaved in the same sparse block, in--- which case both @VK_IMAGE_ASPECT_DEPTH_BIT@ and--- @VK_IMAGE_ASPECT_STENCIL_BIT@ would be present.------ - @formatProperties.imageGranularity@ describes the dimensions of a--- single bindable sparse image block in texel units. For aspect--- @VK_IMAGE_ASPECT_METADATA_BIT@, all dimensions will be zero. All--- metadata is located in the mip tail region.------ - @formatProperties.flags@ is a bitmask of--- 'VkSparseImageFormatFlagBits':------ - If @VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT@ is set the image--- uses a single mip tail region for all array layers.------ - If @VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT@ is set the--- dimensions of mip levels /must/ be integer multiples of the--- corresponding dimensions of the sparse image block for levels--- not located in the mip tail.------ - If @VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT@ is set--- the image uses non-standard sparse image block dimensions. The--- @formatProperties.imageGranularity@ values do not match the--- standard sparse image block dimension corresponding to the--- image’s format.------ - @imageMipTailFirstLod@ is the first mip level at which image--- subresources are included in the mip tail region.------ - @imageMipTailSize@ is the memory size (in bytes) of the mip tail--- region. If @formatProperties.flags@ contains--- @VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT@, this is the size of the--- whole mip tail, otherwise this is the size of the mip tail of a--- single array layer. This value is guaranteed to be a multiple of the--- sparse block size in bytes.------ - @imageMipTailOffset@ is the opaque memory offset used with--- 'VkSparseImageOpaqueMemoryBindInfo' to bind the mip tail region(s).------ - @imageMipTailStride@ is the offset stride between each array-layer’s--- mip tail, if @formatProperties.flags@ does not contain--- @VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT@ (otherwise the value is--- undefined).------ = See Also------ @VkDeviceSize@, 'VkSparseImageFormatProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.VkSparseImageMemoryRequirements2',--- 'vkGetImageSparseMemoryRequirements'-data VkSparseImageMemoryRequirements = VkSparseImageMemoryRequirements- { -- No documentation found for Nested "VkSparseImageMemoryRequirements" "formatProperties"- vkFormatProperties :: VkSparseImageFormatProperties- , -- No documentation found for Nested "VkSparseImageMemoryRequirements" "imageMipTailFirstLod"- vkImageMipTailFirstLod :: Word32- , -- No documentation found for Nested "VkSparseImageMemoryRequirements" "imageMipTailSize"- vkImageMipTailSize :: VkDeviceSize- , -- No documentation found for Nested "VkSparseImageMemoryRequirements" "imageMipTailOffset"- vkImageMipTailOffset :: VkDeviceSize- , -- No documentation found for Nested "VkSparseImageMemoryRequirements" "imageMipTailStride"- vkImageMipTailStride :: VkDeviceSize- }- deriving (Eq, Show)--instance Storable VkSparseImageMemoryRequirements where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkSparseImageMemoryRequirements <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- poke ptr poked = poke (ptr `plusPtr` 0) (vkFormatProperties (poked :: VkSparseImageMemoryRequirements))- *> poke (ptr `plusPtr` 20) (vkImageMipTailFirstLod (poked :: VkSparseImageMemoryRequirements))- *> poke (ptr `plusPtr` 24) (vkImageMipTailSize (poked :: VkSparseImageMemoryRequirements))- *> poke (ptr `plusPtr` 32) (vkImageMipTailOffset (poked :: VkSparseImageMemoryRequirements))- *> poke (ptr `plusPtr` 40) (vkImageMipTailStride (poked :: VkSparseImageMemoryRequirements))--- | VkImageSubresource - Structure specifying a image subresource------ == Valid Usage (Implicit)------ - @aspectMask@ /must/ be a valid combination of--- 'VkImageAspectFlagBits' values------ - @aspectMask@ /must/ not be @0@------ = See Also------ 'VkImageAspectFlags', 'VkSparseImageMemoryBind',--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout'-data VkImageSubresource = VkImageSubresource- { -- | @aspectMask@ is a 'VkImageAspectFlags' selecting the image /aspect/.- vkAspectMask :: VkImageAspectFlags- , -- | @mipLevel@ selects the mipmap level.- vkMipLevel :: Word32- , -- | @arrayLayer@ selects the array layer.- vkArrayLayer :: Word32- }- deriving (Eq, Show)--instance Storable VkImageSubresource where- sizeOf ~_ = 12- alignment ~_ = 4- peek ptr = VkImageSubresource <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkAspectMask (poked :: VkImageSubresource))- *> poke (ptr `plusPtr` 4) (vkMipLevel (poked :: VkImageSubresource))- *> poke (ptr `plusPtr` 8) (vkArrayLayer (poked :: VkImageSubresource))--- | VkSparseMemoryBind - Structure specifying a sparse memory bind operation------ = Description------ The /binding range/ [@resourceOffset@, @resourceOffset@ + @size@) has--- different constraints based on @flags@. If @flags@ contains--- @VK_SPARSE_MEMORY_BIND_METADATA_BIT@, the binding range /must/ be within--- the mip tail region of the metadata aspect. This metadata region is--- defined by:------ - metadataRegion = [base, base + @imageMipTailSize@)------ - base = @imageMipTailOffset@ + @imageMipTailStride@ × n------ and @imageMipTailOffset@, @imageMipTailSize@, and @imageMipTailStride@--- values are from the 'VkSparseImageMemoryRequirements' corresponding to--- the metadata aspect of the image, and n is a valid array layer index for--- the image,------ @imageMipTailStride@ is considered to be zero for aspects where--- @VkSparseImageMemoryRequirements@::@formatProperties.flags@ contains--- @VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT@.------ If @flags@ does not contain @VK_SPARSE_MEMORY_BIND_METADATA_BIT@, the--- binding range /must/ be within the range--- [0,'Graphics.Vulkan.Core10.MemoryManagement.VkMemoryRequirements'::@size@).------ == Valid Usage------ - If @memory@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @memory@ and--- @memoryOffset@ /must/ match the memory requirements of the resource,--- as described in section--- [{html_spec_relative}#resources-association](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-association)------ - If @memory@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @memory@ /must/--- not have been created with a memory type that reports--- @VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT@ bit set------ - @size@ /must/ be greater than @0@------ - @resourceOffset@ /must/ be less than the size of the resource------ - @size@ /must/ be less than or equal to the size of the resource--- minus @resourceOffset@------ - @memoryOffset@ /must/ be less than the size of @memory@------ - @size@ /must/ be less than or equal to the size of @memory@ minus--- @memoryOffset@------ == Valid Usage (Implicit)------ - If @memory@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @memory@ /must/--- be a valid @VkDeviceMemory@ handle------ - @flags@ /must/ be a valid combination of--- 'VkSparseMemoryBindFlagBits' values------ = See Also------ 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory', @VkDeviceSize@,--- 'VkSparseBufferMemoryBindInfo', 'VkSparseImageOpaqueMemoryBindInfo',--- 'VkSparseMemoryBindFlags'-data VkSparseMemoryBind = VkSparseMemoryBind- { -- | @resourceOffset@ is the offset into the resource.- vkResourceOffset :: VkDeviceSize- , -- | @size@ is the size of the memory region to be bound.- vkSize :: VkDeviceSize- , -- | @memory@ is the @VkDeviceMemory@ object that the range of the resource- -- is bound to. If @memory@ is- -- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', the range is unbound.- vkMemory :: VkDeviceMemory- , -- | @memoryOffset@ is the offset into the @VkDeviceMemory@ object to bind- -- the resource range to. If @memory@ is- -- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', this value is- -- ignored.- vkMemoryOffset :: VkDeviceSize- , -- | @flags@ is a bitmask of 'VkSparseMemoryBindFlagBits' specifying usage of- -- the binding operation.- vkFlags :: VkSparseMemoryBindFlags- }- deriving (Eq, Show)--instance Storable VkSparseMemoryBind where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkSparseMemoryBind <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkResourceOffset (poked :: VkSparseMemoryBind))- *> poke (ptr `plusPtr` 8) (vkSize (poked :: VkSparseMemoryBind))- *> poke (ptr `plusPtr` 16) (vkMemory (poked :: VkSparseMemoryBind))- *> poke (ptr `plusPtr` 24) (vkMemoryOffset (poked :: VkSparseMemoryBind))- *> poke (ptr `plusPtr` 32) (vkFlags (poked :: VkSparseMemoryBind))--- | VkSparseImageMemoryBind - Structure specifying sparse image memory bind------ == Valid Usage------ - If the [sparse aliased--- residency](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sparseResidencyAliased)--- feature is not enabled, and if any other resources are bound to--- ranges of @memory@, the range of @memory@ being bound /must/ not--- overlap with those bound ranges------ - @memory@ and @memoryOffset@ /must/ match the memory requirements of--- the calling command’s @image@, as described in section--- [{html_spec_relative}#resources-association](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-association)------ - @subresource@ /must/ be a valid image subresource for @image@ (see--- [{html_spec_relative}#resources-image-views](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-image-views))------ - @offset.x@ /must/ be a multiple of the sparse image block width--- (@VkSparseImageFormatProperties@::@imageGranularity.width@) of the--- image------ - @extent.width@ /must/ either be a multiple of the sparse image block--- width of the image, or else (@extent.width@ + @offset.x@) /must/--- equal the width of the image subresource------ - @offset.y@ /must/ be a multiple of the sparse image block height--- (@VkSparseImageFormatProperties@::@imageGranularity.height@) of the--- image------ - @extent.height@ /must/ either be a multiple of the sparse image--- block height of the image, or else (@extent.height@ + @offset.y@)--- /must/ equal the height of the image subresource------ - @offset.z@ /must/ be a multiple of the sparse image block depth--- (@VkSparseImageFormatProperties@::@imageGranularity.depth@) of the--- image------ - @extent.depth@ /must/ either be a multiple of the sparse image block--- depth of the image, or else (@extent.depth@ + @offset.z@) /must/--- equal the depth of the image subresource------ == Valid Usage (Implicit)------ - @subresource@ /must/ be a valid @VkImageSubresource@ structure------ - If @memory@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @memory@ /must/--- be a valid @VkDeviceMemory@ handle------ - @flags@ /must/ be a valid combination of--- 'VkSparseMemoryBindFlagBits' values------ = See Also------ 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory', @VkDeviceSize@,--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkExtent3D',--- 'VkImageSubresource', 'VkOffset3D', 'VkSparseImageMemoryBindInfo',--- 'VkSparseMemoryBindFlags'-data VkSparseImageMemoryBind = VkSparseImageMemoryBind- { -- | @subresource@ is the aspectMask and region of interest in the image.- vkSubresource :: VkImageSubresource- , -- | @offset@ are the coordinates of the first texel within the image- -- subresource to bind.- vkOffset :: VkOffset3D- , -- | @extent@ is the size in texels of the region within the image- -- subresource to bind. The extent /must/ be a multiple of the sparse image- -- block dimensions, except when binding sparse image blocks along the edge- -- of an image subresource it /can/ instead be such that any coordinate of- -- @offset@ + @extent@ equals the corresponding dimensions of the image- -- subresource.- vkExtent :: VkExtent3D- , -- | @memory@ is the @VkDeviceMemory@ object that the sparse image blocks of- -- the image are bound to. If @memory@ is- -- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', the sparse image- -- blocks are unbound.- vkMemory :: VkDeviceMemory- , -- | @memoryOffset@ is an offset into @VkDeviceMemory@ object. If @memory@ is- -- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', this value is- -- ignored.- vkMemoryOffset :: VkDeviceSize- , -- | @flags@ are sparse memory binding flags.- vkFlags :: VkSparseMemoryBindFlags- }- deriving (Eq, Show)--instance Storable VkSparseImageMemoryBind where- sizeOf ~_ = 64- alignment ~_ = 8- peek ptr = VkSparseImageMemoryBind <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSubresource (poked :: VkSparseImageMemoryBind))- *> poke (ptr `plusPtr` 12) (vkOffset (poked :: VkSparseImageMemoryBind))- *> poke (ptr `plusPtr` 24) (vkExtent (poked :: VkSparseImageMemoryBind))- *> poke (ptr `plusPtr` 40) (vkMemory (poked :: VkSparseImageMemoryBind))- *> poke (ptr `plusPtr` 48) (vkMemoryOffset (poked :: VkSparseImageMemoryBind))- *> poke (ptr `plusPtr` 56) (vkFlags (poked :: VkSparseImageMemoryBind))--- | VkSparseBufferMemoryBindInfo - Structure specifying a sparse buffer--- memory bind operation------ == Valid Usage (Implicit)------ - @buffer@ /must/ be a valid @VkBuffer@ handle------ - @pBinds@ /must/ be a valid pointer to an array of @bindCount@ valid--- @VkSparseMemoryBind@ structures------ - @bindCount@ /must/ be greater than @0@------ = See Also------ 'VkBindSparseInfo', 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'VkSparseMemoryBind'-data VkSparseBufferMemoryBindInfo = VkSparseBufferMemoryBindInfo- { -- | @buffer@ is the @VkBuffer@ object to be bound.- vkBuffer :: VkBuffer- , -- | @bindCount@ is the number of @VkSparseMemoryBind@ structures in the- -- @pBinds@ array.- vkBindCount :: Word32- , -- | @pBinds@ is a pointer to array of @VkSparseMemoryBind@ structures.- vkPBinds :: Ptr VkSparseMemoryBind- }- deriving (Eq, Show)--instance Storable VkSparseBufferMemoryBindInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkSparseBufferMemoryBindInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkBuffer (poked :: VkSparseBufferMemoryBindInfo))- *> poke (ptr `plusPtr` 8) (vkBindCount (poked :: VkSparseBufferMemoryBindInfo))- *> poke (ptr `plusPtr` 16) (vkPBinds (poked :: VkSparseBufferMemoryBindInfo))--- | VkSparseImageOpaqueMemoryBindInfo - Structure specifying sparse image--- opaque memory bind info------ == Valid Usage------ - If the @flags@ member of any element of @pBinds@ contains--- @VK_SPARSE_MEMORY_BIND_METADATA_BIT@, the binding range defined--- /must/ be within the mip tail region of the metadata aspect of--- @image@------ == Valid Usage (Implicit)------ - @image@ /must/ be a valid @VkImage@ handle------ - @pBinds@ /must/ be a valid pointer to an array of @bindCount@ valid--- @VkSparseMemoryBind@ structures------ - @bindCount@ /must/ be greater than @0@------ = See Also------ 'VkBindSparseInfo', 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'VkSparseMemoryBind'-data VkSparseImageOpaqueMemoryBindInfo = VkSparseImageOpaqueMemoryBindInfo- { -- | @image@ is the @VkImage@ object to be bound.- vkImage :: VkImage- , -- | @bindCount@ is the number of @VkSparseMemoryBind@ structures in the- -- @pBinds@ array.- vkBindCount :: Word32- , -- | @pBinds@ is a pointer to array of @VkSparseMemoryBind@ structures.- vkPBinds :: Ptr VkSparseMemoryBind- }- deriving (Eq, Show)--instance Storable VkSparseImageOpaqueMemoryBindInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkSparseImageOpaqueMemoryBindInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkImage (poked :: VkSparseImageOpaqueMemoryBindInfo))- *> poke (ptr `plusPtr` 8) (vkBindCount (poked :: VkSparseImageOpaqueMemoryBindInfo))- *> poke (ptr `plusPtr` 16) (vkPBinds (poked :: VkSparseImageOpaqueMemoryBindInfo))--- | VkSparseImageMemoryBindInfo - Structure specifying sparse image memory--- bind info------ == Valid Usage------ - The @subresource.mipLevel@ member of each element of @pBinds@ /must/--- be less than the @mipLevels@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ - The @subresource.arrayLayer@ member of each element of @pBinds@--- /must/ be less than the @arrayLayers@ specified in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' when @image@ was--- created------ == Valid Usage (Implicit)------ - @image@ /must/ be a valid @VkImage@ handle------ - @pBinds@ /must/ be a valid pointer to an array of @bindCount@ valid--- @VkSparseImageMemoryBind@ structures------ - @bindCount@ /must/ be greater than @0@------ = See Also------ 'VkBindSparseInfo', 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'VkSparseImageMemoryBind'-data VkSparseImageMemoryBindInfo = VkSparseImageMemoryBindInfo- { -- | @image@ is the @VkImage@ object to be bound- vkImage :: VkImage- , -- | @bindCount@ is the number of @VkSparseImageMemoryBind@ structures in- -- pBinds array- vkBindCount :: Word32- , -- | @pBinds@ is a pointer to array of @VkSparseImageMemoryBind@ structures- vkPBinds :: Ptr VkSparseImageMemoryBind- }- deriving (Eq, Show)--instance Storable VkSparseImageMemoryBindInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkSparseImageMemoryBindInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkImage (poked :: VkSparseImageMemoryBindInfo))- *> poke (ptr `plusPtr` 8) (vkBindCount (poked :: VkSparseImageMemoryBindInfo))- *> poke (ptr `plusPtr` 16) (vkPBinds (poked :: VkSparseImageMemoryBindInfo))--- | VkBindSparseInfo - Structure specifying a sparse binding operation------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_BIND_SPARSE_INFO@------ - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.VkDeviceGroupBindSparseInfo'------ - If @waitSemaphoreCount@ is not @0@, @pWaitSemaphores@ /must/ be a--- valid pointer to an array of @waitSemaphoreCount@ valid--- @VkSemaphore@ handles------ - If @bufferBindCount@ is not @0@, @pBufferBinds@ /must/ be a valid--- pointer to an array of @bufferBindCount@ valid--- @VkSparseBufferMemoryBindInfo@ structures------ - If @imageOpaqueBindCount@ is not @0@, @pImageOpaqueBinds@ /must/ be--- a valid pointer to an array of @imageOpaqueBindCount@ valid--- @VkSparseImageOpaqueMemoryBindInfo@ structures------ - If @imageBindCount@ is not @0@, @pImageBinds@ /must/ be a valid--- pointer to an array of @imageBindCount@ valid--- @VkSparseImageMemoryBindInfo@ structures------ - If @signalSemaphoreCount@ is not @0@, @pSignalSemaphores@ /must/ be--- a valid pointer to an array of @signalSemaphoreCount@ valid--- @VkSemaphore@ handles------ - Both of the elements of @pSignalSemaphores@, and the elements of--- @pWaitSemaphores@ that are valid handles /must/ have been created,--- allocated, or retrieved from the same @VkDevice@------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkSemaphore',--- 'VkSparseBufferMemoryBindInfo', 'VkSparseImageMemoryBindInfo',--- 'VkSparseImageOpaqueMemoryBindInfo',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkQueueBindSparse'-data VkBindSparseInfo = VkBindSparseInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @waitSemaphoreCount@ is the number of semaphores upon which to wait- -- before executing the sparse binding operations for the batch.- vkWaitSemaphoreCount :: Word32- , -- | @pWaitSemaphores@ is a pointer to an array of semaphores upon which to- -- wait on before the sparse binding operations for this batch begin- -- execution. If semaphores to wait on are provided, they define a- -- [semaphore wait- -- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-waiting).- vkPWaitSemaphores :: Ptr VkSemaphore- , -- | @bufferBindCount@ is the number of sparse buffer bindings to perform in- -- the batch.- vkBufferBindCount :: Word32- , -- | @pBufferBinds@ is a pointer to an array of- -- 'VkSparseBufferMemoryBindInfo' structures.- vkPBufferBinds :: Ptr VkSparseBufferMemoryBindInfo- , -- | @imageOpaqueBindCount@ is the number of opaque sparse image bindings to- -- perform.- vkImageOpaqueBindCount :: Word32- , -- | @pImageOpaqueBinds@ is a pointer to an array of- -- 'VkSparseImageOpaqueMemoryBindInfo' structures, indicating opaque sparse- -- image bindings to perform.- vkPImageOpaqueBinds :: Ptr VkSparseImageOpaqueMemoryBindInfo- , -- | @imageBindCount@ is the number of sparse image bindings to perform.- vkImageBindCount :: Word32- , -- | @pImageBinds@ is a pointer to an array of 'VkSparseImageMemoryBindInfo'- -- structures, indicating sparse image bindings to perform.- vkPImageBinds :: Ptr VkSparseImageMemoryBindInfo- , -- | @signalSemaphoreCount@ is the number of semaphores to be signaled once- -- the sparse binding operations specified by the structure have completed- -- execution.- vkSignalSemaphoreCount :: Word32- , -- | @pSignalSemaphores@ is a pointer to an array of semaphores which will be- -- signaled when the sparse binding operations for this batch have- -- completed execution. If semaphores to be signaled are provided, they- -- define a [semaphore signal- -- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-signaling).- vkPSignalSemaphores :: Ptr VkSemaphore- }- deriving (Eq, Show)--instance Storable VkBindSparseInfo where- sizeOf ~_ = 96- alignment ~_ = 8- peek ptr = VkBindSparseInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 64)- <*> peek (ptr `plusPtr` 72)- <*> peek (ptr `plusPtr` 80)- <*> peek (ptr `plusPtr` 88)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkBindSparseInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkBindSparseInfo))- *> poke (ptr `plusPtr` 16) (vkWaitSemaphoreCount (poked :: VkBindSparseInfo))- *> poke (ptr `plusPtr` 24) (vkPWaitSemaphores (poked :: VkBindSparseInfo))- *> poke (ptr `plusPtr` 32) (vkBufferBindCount (poked :: VkBindSparseInfo))- *> poke (ptr `plusPtr` 40) (vkPBufferBinds (poked :: VkBindSparseInfo))- *> poke (ptr `plusPtr` 48) (vkImageOpaqueBindCount (poked :: VkBindSparseInfo))- *> poke (ptr `plusPtr` 56) (vkPImageOpaqueBinds (poked :: VkBindSparseInfo))- *> poke (ptr `plusPtr` 64) (vkImageBindCount (poked :: VkBindSparseInfo))- *> poke (ptr `plusPtr` 72) (vkPImageBinds (poked :: VkBindSparseInfo))- *> poke (ptr `plusPtr` 80) (vkSignalSemaphoreCount (poked :: VkBindSparseInfo))- *> poke (ptr `plusPtr` 88) (vkPSignalSemaphores (poked :: VkBindSparseInfo))--- | VkImageAspectFlags - Bitmask of VkImageAspectFlagBits------ = Description------ @VkImageAspectFlags@ is a bitmask type for setting a mask of zero or--- more 'VkImageAspectFlagBits'.------ = See Also------ 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkClearAttachment',--- 'VkImageAspectFlagBits', 'VkImageSubresource',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkImageSubresourceLayers',--- 'Graphics.Vulkan.Core10.ImageView.VkImageSubresourceRange',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkInputAttachmentAspectReference',--- 'VkSparseImageFormatProperties'-type VkImageAspectFlags = VkImageAspectFlagBits--- | VkSparseMemoryBindFlags - Bitmask of VkSparseMemoryBindFlagBits------ = Description------ @VkSparseMemoryBindFlags@ is a bitmask type for setting a mask of zero--- or more 'VkSparseMemoryBindFlagBits'.------ = See Also------ 'VkSparseImageMemoryBind', 'VkSparseMemoryBind',--- 'VkSparseMemoryBindFlagBits'-type VkSparseMemoryBindFlags = VkSparseMemoryBindFlagBits--- | VkSparseImageFormatFlags - Bitmask of VkSparseImageFormatFlagBits------ = Description------ @VkSparseImageFormatFlags@ is a bitmask type for setting a mask of zero--- or more 'VkSparseImageFormatFlagBits'.------ = See Also------ 'VkSparseImageFormatFlagBits', 'VkSparseImageFormatProperties'-type VkSparseImageFormatFlags = VkSparseImageFormatFlagBits+{-# language CPP #-}+module Graphics.Vulkan.Core10.SparseResourceMemoryManagement ( getImageSparseMemoryRequirements+ , getPhysicalDeviceSparseImageFormatProperties+ , queueBindSparse+ , SparseImageFormatProperties(..)+ , SparseImageMemoryRequirements(..)+ , SparseMemoryBind(..)+ , SparseImageMemoryBind(..)+ , SparseBufferMemoryBindInfo(..)+ , SparseImageOpaqueMemoryBindInfo(..)+ , SparseImageMemoryBindInfo(..)+ , BindSparseInfo(..)+ ) where++import Control.Exception.Base (bracket)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetImageSparseMemoryRequirements))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkQueueBindSparse))+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupBindSparseInfo)+import Graphics.Vulkan.Core10.Handles (DeviceMemory)+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.Core10.SharedTypes (Extent3D)+import Graphics.Vulkan.Core10.Handles (Fence)+import Graphics.Vulkan.Core10.Handles (Fence(..))+import Graphics.Vulkan.Core10.Enums.Format (Format)+import Graphics.Vulkan.Core10.Enums.Format (Format(..))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Image)+import Graphics.Vulkan.Core10.Handles (Image(..))+import Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlags)+import Graphics.Vulkan.Core10.Image (ImageSubresource)+import Graphics.Vulkan.Core10.Enums.ImageTiling (ImageTiling)+import Graphics.Vulkan.Core10.Enums.ImageTiling (ImageTiling(..))+import Graphics.Vulkan.Core10.Enums.ImageType (ImageType)+import Graphics.Vulkan.Core10.Enums.ImageType (ImageType(..))+import Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)+import Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)+import Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlagBits(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceSparseImageFormatProperties))+import Graphics.Vulkan.Core10.SharedTypes (Offset3D)+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Handles (Queue)+import Graphics.Vulkan.Core10.Handles (Queue(..))+import Graphics.Vulkan.Core10.Handles (Queue_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)+import Graphics.Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits(..))+import Graphics.Vulkan.Core10.Handles (Semaphore)+import Graphics.Vulkan.Core10.Enums.SparseImageFormatFlagBits (SparseImageFormatFlags)+import Graphics.Vulkan.Core10.Enums.SparseMemoryBindFlagBits (SparseMemoryBindFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (TimelineSemaphoreSubmitInfo)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_SPARSE_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetImageSparseMemoryRequirements+ :: FunPtr (Ptr Device_T -> Image -> Ptr Word32 -> Ptr SparseImageMemoryRequirements -> IO ()) -> Ptr Device_T -> Image -> Ptr Word32 -> Ptr SparseImageMemoryRequirements -> IO ()++-- | vkGetImageSparseMemoryRequirements - Query the memory requirements for a+-- sparse image+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the image.+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' is the+-- 'Graphics.Vulkan.Core10.Handles.Image' object to get the memory+-- requirements for.+--+-- - @pSparseMemoryRequirementCount@ is a pointer to an integer related+-- to the number of sparse memory requirements available or queried, as+-- described below.+--+-- - @pSparseMemoryRequirements@ is either @NULL@ or a pointer to an+-- array of 'SparseImageMemoryRequirements' structures.+--+-- = Description+--+-- If @pSparseMemoryRequirements@ is @NULL@, then the number of sparse+-- memory requirements available is returned in+-- @pSparseMemoryRequirementCount@. Otherwise,+-- @pSparseMemoryRequirementCount@ /must/ point to a variable set by the+-- user to the number of elements in the @pSparseMemoryRequirements@ array,+-- and on return the variable is overwritten with the number of structures+-- actually written to @pSparseMemoryRequirements@. If+-- @pSparseMemoryRequirementCount@ is less than the number of sparse memory+-- requirements available, at most @pSparseMemoryRequirementCount@+-- structures will be written.+--+-- If the image was not created with+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+-- then @pSparseMemoryRequirementCount@ will be set to zero and+-- @pSparseMemoryRequirements@ will not be written to.+--+-- Note+--+-- It is legal for an implementation to report a larger value in+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'::@size@+-- than would be obtained by adding together memory sizes for all+-- 'SparseImageMemoryRequirements' returned by+-- 'getImageSparseMemoryRequirements'. This /may/ occur when the+-- implementation requires unused padding in the address range describing+-- the resource.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Image' handle+--+-- - @pSparseMemoryRequirementCount@ /must/ be a valid pointer to a+-- @uint32_t@ value+--+-- - If the value referenced by @pSparseMemoryRequirementCount@ is not+-- @0@, and @pSparseMemoryRequirements@ is not @NULL@,+-- @pSparseMemoryRequirements@ /must/ be a valid pointer to an array of+-- @pSparseMemoryRequirementCount@ 'SparseImageMemoryRequirements'+-- structures+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ have been created,+-- allocated, or retrieved from 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Image', 'SparseImageMemoryRequirements'+getImageSparseMemoryRequirements :: Device -> Image -> IO (("sparseMemoryRequirements" ::: Vector SparseImageMemoryRequirements))+getImageSparseMemoryRequirements device image = evalContT $ do+ let vkGetImageSparseMemoryRequirements' = mkVkGetImageSparseMemoryRequirements (pVkGetImageSparseMemoryRequirements (deviceCmds (device :: Device)))+ let device' = deviceHandle (device)+ pPSparseMemoryRequirementCount <- ContT $ bracket (callocBytes @Word32 4) free+ lift $ vkGetImageSparseMemoryRequirements' device' (image) (pPSparseMemoryRequirementCount) (nullPtr)+ pSparseMemoryRequirementCount <- lift $ peek @Word32 pPSparseMemoryRequirementCount+ pPSparseMemoryRequirements <- ContT $ bracket (callocBytes @SparseImageMemoryRequirements ((fromIntegral (pSparseMemoryRequirementCount)) * 48)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPSparseMemoryRequirements `advancePtrBytes` (i * 48) :: Ptr SparseImageMemoryRequirements) . ($ ())) [0..(fromIntegral (pSparseMemoryRequirementCount)) - 1]+ lift $ vkGetImageSparseMemoryRequirements' device' (image) (pPSparseMemoryRequirementCount) ((pPSparseMemoryRequirements))+ pSparseMemoryRequirementCount' <- lift $ peek @Word32 pPSparseMemoryRequirementCount+ pSparseMemoryRequirements' <- lift $ generateM (fromIntegral (pSparseMemoryRequirementCount')) (\i -> peekCStruct @SparseImageMemoryRequirements (((pPSparseMemoryRequirements) `advancePtrBytes` (48 * (i)) :: Ptr SparseImageMemoryRequirements)))+ pure $ (pSparseMemoryRequirements')+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceSparseImageFormatProperties+ :: FunPtr (Ptr PhysicalDevice_T -> Format -> ImageType -> SampleCountFlagBits -> ImageUsageFlags -> ImageTiling -> Ptr Word32 -> Ptr SparseImageFormatProperties -> IO ()) -> Ptr PhysicalDevice_T -> Format -> ImageType -> SampleCountFlagBits -> ImageUsageFlags -> ImageTiling -> Ptr Word32 -> Ptr SparseImageFormatProperties -> IO ()++-- | vkGetPhysicalDeviceSparseImageFormatProperties - Retrieve properties of+-- an image format applied to sparse images+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device from which to query the sparse image capabilities.+--+-- - 'Graphics.Vulkan.Core10.Enums.Format.Format' is the image format.+--+-- - @type@ is the dimensionality of image.+--+-- - @samples@ is the number of samples per texel as defined in+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'.+--+-- - @usage@ is a bitmask describing the intended usage of the image.+--+-- - @tiling@ is the tiling arrangement of the texel blocks in memory.+--+-- - @pPropertyCount@ is a pointer to an integer related to the number of+-- sparse format properties available or queried, as described below.+--+-- - @pProperties@ is either @NULL@ or a pointer to an array of+-- 'SparseImageFormatProperties' structures.+--+-- = Description+--+-- If @pProperties@ is @NULL@, then the number of sparse format properties+-- available is returned in @pPropertyCount@. Otherwise, @pPropertyCount@+-- /must/ point to a variable set by the user to the number of elements in+-- the @pProperties@ array, and on return the variable is overwritten with+-- the number of structures actually written to @pProperties@. If+-- @pPropertyCount@ is less than the number of sparse format properties+-- available, at most @pPropertyCount@ structures will be written.+--+-- If+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'+-- is not supported for the given arguments, @pPropertyCount@ will be set+-- to zero upon return, and no data will be written to @pProperties@.+--+-- Multiple aspects are returned for depth\/stencil images that are+-- implemented as separate planes by the implementation. The depth and+-- stencil data planes each have unique 'SparseImageFormatProperties' data.+--+-- Depth\/stencil images with depth and stencil data interleaved into a+-- single plane will return a single 'SparseImageFormatProperties'+-- structure with the @aspectMask@ set to+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'+-- |+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'.+--+-- == Valid Usage+--+-- - @samples@ /must/ be a bit value that is set in+-- 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties'::@sampleCounts@+-- returned by+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties'+-- with 'Graphics.Vulkan.Core10.Enums.Format.Format', @type@, @tiling@,+-- and @usage@ equal to those in this command and+-- 'Graphics.Vulkan.Core10.BaseType.Flags' equal to the value that is+-- set in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- when the image is created+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' value+--+-- - @type@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' value+--+-- - @samples@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+-- value+--+-- - @usage@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits'+-- values+--+-- - @usage@ /must/ not be @0@+--+-- - @tiling@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.ImageTiling' value+--+-- - @pPropertyCount@ /must/ be a valid pointer to a @uint32_t@ value+--+-- - If the value referenced by @pPropertyCount@ is not @0@, and+-- @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer+-- to an array of @pPropertyCount@ 'SparseImageFormatProperties'+-- structures+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.ImageTiling',+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',+-- 'SparseImageFormatProperties'+getPhysicalDeviceSparseImageFormatProperties :: PhysicalDevice -> Format -> ImageType -> ("samples" ::: SampleCountFlagBits) -> ImageUsageFlags -> ImageTiling -> IO (("properties" ::: Vector SparseImageFormatProperties))+getPhysicalDeviceSparseImageFormatProperties physicalDevice format type' samples usage tiling = evalContT $ do+ let vkGetPhysicalDeviceSparseImageFormatProperties' = mkVkGetPhysicalDeviceSparseImageFormatProperties (pVkGetPhysicalDeviceSparseImageFormatProperties (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pPPropertyCount <- ContT $ bracket (callocBytes @Word32 4) free+ lift $ vkGetPhysicalDeviceSparseImageFormatProperties' physicalDevice' (format) (type') (samples) (usage) (tiling) (pPPropertyCount) (nullPtr)+ pPropertyCount <- lift $ peek @Word32 pPPropertyCount+ pPProperties <- ContT $ bracket (callocBytes @SparseImageFormatProperties ((fromIntegral (pPropertyCount)) * 20)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPProperties `advancePtrBytes` (i * 20) :: Ptr SparseImageFormatProperties) . ($ ())) [0..(fromIntegral (pPropertyCount)) - 1]+ lift $ vkGetPhysicalDeviceSparseImageFormatProperties' physicalDevice' (format) (type') (samples) (usage) (tiling) (pPPropertyCount) ((pPProperties))+ pPropertyCount' <- lift $ peek @Word32 pPPropertyCount+ pProperties' <- lift $ generateM (fromIntegral (pPropertyCount')) (\i -> peekCStruct @SparseImageFormatProperties (((pPProperties) `advancePtrBytes` (20 * (i)) :: Ptr SparseImageFormatProperties)))+ pure $ (pProperties')+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkQueueBindSparse+ :: FunPtr (Ptr Queue_T -> Word32 -> Ptr (BindSparseInfo a) -> Fence -> IO Result) -> Ptr Queue_T -> Word32 -> Ptr (BindSparseInfo a) -> Fence -> IO Result++-- | vkQueueBindSparse - Bind device memory to a sparse resource object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Queue' is the queue that the sparse+-- binding operations will be submitted to.+--+-- - @bindInfoCount@ is the number of elements in the @pBindInfo@ array.+--+-- - @pBindInfo@ is a pointer to an array of 'BindSparseInfo' structures,+-- each specifying a sparse binding submission batch.+--+-- - 'Graphics.Vulkan.Core10.Handles.Fence' is an /optional/ handle to a+-- fence to be signaled. If 'Graphics.Vulkan.Core10.Handles.Fence' is+-- not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', it defines a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signaling fence signal operation>.+--+-- = Description+--+-- 'queueBindSparse' is a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submission queue submission command>,+-- with each batch defined by an element of @pBindInfo@ as a+-- 'BindSparseInfo' structure. Batches begin execution in the order they+-- appear in @pBindInfo@, but /may/ complete out of order.+--+-- Within a batch, a given range of a resource /must/ not be bound more+-- than once. Across batches, if a range is to be bound to one allocation+-- and offset and then to another allocation and offset, then the+-- application /must/ guarantee (usually using semaphores) that the binding+-- operations are executed in the correct order, as well as to order+-- binding operations against the execution of command buffer submissions.+--+-- As no operation to 'queueBindSparse' causes any pipeline stage to access+-- memory, synchronization primitives used in this command effectively only+-- define execution dependencies.+--+-- Additional information about fence and semaphore operation is described+-- in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization the synchronization chapter>.+--+-- == Valid Usage+--+-- - If 'Graphics.Vulkan.Core10.Handles.Fence' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Fence' /must/ be unsignaled+--+-- - If 'Graphics.Vulkan.Core10.Handles.Fence' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Fence' /must/ not be associated with+-- any other queue command that has not yet completed execution on that+-- queue+--+-- - Each element of the @pSignalSemaphores@ member of each element of+-- @pBindInfo@ /must/ be unsignaled when the semaphore signal operation+-- it defines is executed on the device+--+-- - When a semaphore wait operation referring to a binary semaphore+-- defined by any element of the @pWaitSemaphores@ member of any+-- element of @pBindInfo@ executes on+-- 'Graphics.Vulkan.Core10.Handles.Queue', there /must/ be no other+-- queues waiting on the same semaphore.+--+-- - All elements of the @pWaitSemaphores@ member of all elements of+-- @pBindInfo@ member referring to a binary semaphore /must/ be+-- semaphores that are signaled, or have+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>+-- previously submitted for execution.+--+-- - All elements of the @pWaitSemaphores@ member of all elements of+-- @pBindInfo@ created with a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY'+-- /must/ reference a semaphore signal operation that has been+-- submitted for execution and any semaphore signal operations on which+-- it depends (if any) /must/ have also been submitted for execution.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Queue' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Queue' handle+--+-- - If @bindInfoCount@ is not @0@, @pBindInfo@ /must/ be a valid pointer+-- to an array of @bindInfoCount@ valid 'BindSparseInfo' structures+--+-- - If 'Graphics.Vulkan.Core10.Handles.Fence' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Fence' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Fence' handle+--+-- - The 'Graphics.Vulkan.Core10.Handles.Queue' /must/ support sparse+-- binding operations+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.Fence', and+-- 'Graphics.Vulkan.Core10.Handles.Queue' that are valid handles of+-- non-ignored parameters /must/ have been created, allocated, or+-- retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Queue' /must/ be+-- externally synchronized+--+-- - Host access to @pBindInfo@[].pBufferBinds[].buffer /must/ be+-- externally synchronized+--+-- - Host access to @pBindInfo@[].pImageOpaqueBinds[].image /must/ be+-- externally synchronized+--+-- - Host access to @pBindInfo@[].pImageBinds[].image /must/ be+-- externally synchronized+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Fence' /must/ be+-- externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | - | - | SPARSE_BINDING | - |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'+--+-- = See Also+--+-- 'BindSparseInfo', 'Graphics.Vulkan.Core10.Handles.Fence',+-- 'Graphics.Vulkan.Core10.Handles.Queue'+queueBindSparse :: PokeChain a => Queue -> ("bindInfo" ::: Vector (BindSparseInfo a)) -> Fence -> IO ()+queueBindSparse queue bindInfo fence = evalContT $ do+ let vkQueueBindSparse' = mkVkQueueBindSparse (pVkQueueBindSparse (deviceCmds (queue :: Queue)))+ pPBindInfo <- ContT $ allocaBytesAligned @(BindSparseInfo _) ((Data.Vector.length (bindInfo)) * 96) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBindInfo `plusPtr` (96 * (i)) :: Ptr (BindSparseInfo _)) (e) . ($ ())) (bindInfo)+ r <- lift $ vkQueueBindSparse' (queueHandle (queue)) ((fromIntegral (Data.Vector.length $ (bindInfo)) :: Word32)) (pPBindInfo) (fence)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+++-- | VkSparseImageFormatProperties - Structure specifying sparse image format+-- properties+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent3D',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags',+-- 'Graphics.Vulkan.Core10.Enums.SparseImageFormatFlagBits.SparseImageFormatFlags',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.SparseImageFormatProperties2',+-- 'SparseImageMemoryRequirements',+-- 'getPhysicalDeviceSparseImageFormatProperties'+data SparseImageFormatProperties = SparseImageFormatProperties+ { -- | @aspectMask@ is a bitmask+ -- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits'+ -- specifying which aspects of the image the properties apply to.+ aspectMask :: ImageAspectFlags+ , -- | @imageGranularity@ is the width, height, and depth of the sparse image+ -- block in texels or compressed texel blocks.+ imageGranularity :: Extent3D+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.SparseImageFormatFlagBits.SparseImageFormatFlagBits'+ -- specifying additional information about the sparse resource.+ flags :: SparseImageFormatFlags+ }+ deriving (Typeable)+deriving instance Show SparseImageFormatProperties++instance ToCStruct SparseImageFormatProperties where+ withCStruct x f = allocaBytesAligned 20 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SparseImageFormatProperties{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (aspectMask)+ ContT $ pokeCStruct ((p `plusPtr` 4 :: Ptr Extent3D)) (imageGranularity) . ($ ())+ lift $ poke ((p `plusPtr` 16 :: Ptr SparseImageFormatFlags)) (flags)+ lift $ f+ cStructSize = 20+ cStructAlignment = 4+ pokeZeroCStruct p f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 4 :: Ptr Extent3D)) (zero) . ($ ())+ lift $ f++instance FromCStruct SparseImageFormatProperties where+ peekCStruct p = do+ aspectMask <- peek @ImageAspectFlags ((p `plusPtr` 0 :: Ptr ImageAspectFlags))+ imageGranularity <- peekCStruct @Extent3D ((p `plusPtr` 4 :: Ptr Extent3D))+ flags <- peek @SparseImageFormatFlags ((p `plusPtr` 16 :: Ptr SparseImageFormatFlags))+ pure $ SparseImageFormatProperties+ aspectMask imageGranularity flags++instance Zero SparseImageFormatProperties where+ zero = SparseImageFormatProperties+ zero+ zero+ zero+++-- | VkSparseImageMemoryRequirements - Structure specifying sparse image+-- memory requirements+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'SparseImageFormatProperties',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.SparseImageMemoryRequirements2',+-- 'getImageSparseMemoryRequirements'+data SparseImageMemoryRequirements = SparseImageMemoryRequirements+ { -- No documentation found for Nested "VkSparseImageMemoryRequirements" "formatProperties"+ formatProperties :: SparseImageFormatProperties+ , -- | @imageMipTailFirstLod@ is the first mip level at which image+ -- subresources are included in the mip tail region.+ imageMipTailFirstLod :: Word32+ , -- | @imageMipTailSize@ is the memory size (in bytes) of the mip tail region.+ -- If @formatProperties.flags@ contains+ -- 'Graphics.Vulkan.Core10.Enums.SparseImageFormatFlagBits.SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT',+ -- this is the size of the whole mip tail, otherwise this is the size of+ -- the mip tail of a single array layer. This value is guaranteed to be a+ -- multiple of the sparse block size in bytes.+ imageMipTailSize :: DeviceSize+ , -- | @imageMipTailOffset@ is the opaque memory offset used with+ -- 'SparseImageOpaqueMemoryBindInfo' to bind the mip tail region(s).+ imageMipTailOffset :: DeviceSize+ , -- | @imageMipTailStride@ is the offset stride between each array-layer’s mip+ -- tail, if @formatProperties.flags@ does not contain+ -- 'Graphics.Vulkan.Core10.Enums.SparseImageFormatFlagBits.SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT'+ -- (otherwise the value is undefined).+ imageMipTailStride :: DeviceSize+ }+ deriving (Typeable)+deriving instance Show SparseImageMemoryRequirements++instance ToCStruct SparseImageMemoryRequirements where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SparseImageMemoryRequirements{..} f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr SparseImageFormatProperties)) (formatProperties) . ($ ())+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (imageMipTailFirstLod)+ lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (imageMipTailSize)+ lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (imageMipTailOffset)+ lift $ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (imageMipTailStride)+ lift $ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr SparseImageFormatProperties)) (zero) . ($ ())+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)+ lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)+ lift $ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)+ lift $ f++instance FromCStruct SparseImageMemoryRequirements where+ peekCStruct p = do+ formatProperties <- peekCStruct @SparseImageFormatProperties ((p `plusPtr` 0 :: Ptr SparseImageFormatProperties))+ imageMipTailFirstLod <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ imageMipTailSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))+ imageMipTailOffset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))+ imageMipTailStride <- peek @DeviceSize ((p `plusPtr` 40 :: Ptr DeviceSize))+ pure $ SparseImageMemoryRequirements+ formatProperties imageMipTailFirstLod imageMipTailSize imageMipTailOffset imageMipTailStride++instance Zero SparseImageMemoryRequirements where+ zero = SparseImageMemoryRequirements+ zero+ zero+ zero+ zero+ zero+++-- | VkSparseMemoryBind - Structure specifying a sparse memory bind operation+--+-- = Description+--+-- The /binding range/ [@resourceOffset@, @resourceOffset@ + @size@) has+-- different constraints based on 'Graphics.Vulkan.Core10.BaseType.Flags'.+-- If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.SparseMemoryBindFlagBits.SPARSE_MEMORY_BIND_METADATA_BIT',+-- the binding range /must/ be within the mip tail region of the metadata+-- aspect. This metadata region is defined by:+--+-- - metadataRegion = [base, base + @imageMipTailSize@)+--+-- - base = @imageMipTailOffset@ + @imageMipTailStride@ × n+--+-- and @imageMipTailOffset@, @imageMipTailSize@, and @imageMipTailStride@+-- values are from the 'SparseImageMemoryRequirements' corresponding to the+-- metadata aspect of the image, and n is a valid array layer index for the+-- image,+--+-- @imageMipTailStride@ is considered to be zero for aspects where+-- 'SparseImageMemoryRequirements'::@formatProperties.flags@ contains+-- 'Graphics.Vulkan.Core10.Enums.SparseImageFormatFlagBits.SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT'.+--+-- If 'Graphics.Vulkan.Core10.BaseType.Flags' does not contain+-- 'Graphics.Vulkan.Core10.Enums.SparseMemoryBindFlagBits.SPARSE_MEMORY_BIND_METADATA_BIT',+-- the binding range /must/ be within the range+-- [0,'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'::@size@).+--+-- == Valid Usage+--+-- - If @memory@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @memory@ and+-- @memoryOffset@ /must/ match the memory requirements of the resource,+-- as described in section+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-association>+--+-- - If @memory@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @memory@ /must/+-- not have been created with a memory type that reports+-- 'Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT'+-- bit set+--+-- - @size@ /must/ be greater than @0@+--+-- - @resourceOffset@ /must/ be less than the size of the resource+--+-- - @size@ /must/ be less than or equal to the size of the resource+-- minus @resourceOffset@+--+-- - @memoryOffset@ /must/ be less than the size of @memory@+--+-- - @size@ /must/ be less than or equal to the size of @memory@ minus+-- @memoryOffset@+--+-- - If @memory@ was created with+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'::@handleTypes@+-- not equal to @0@, at least one handle type it contained /must/ also+-- have been set in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@+-- or+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@+-- when the resource was created.+--+-- - If @memory@ was created by a memory import operation, the external+-- handle type of the imported memory /must/ also have been set in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@+-- or+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@+-- when the resource was created.+--+-- == Valid Usage (Implicit)+--+-- - If @memory@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @memory@ /must/+-- be a valid 'Graphics.Vulkan.Core10.Handles.DeviceMemory' handle+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.SparseMemoryBindFlagBits.SparseMemoryBindFlagBits'+-- values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'SparseBufferMemoryBindInfo', 'SparseImageOpaqueMemoryBindInfo',+-- 'Graphics.Vulkan.Core10.Enums.SparseMemoryBindFlagBits.SparseMemoryBindFlags'+data SparseMemoryBind = SparseMemoryBind+ { -- | @resourceOffset@ is the offset into the resource.+ resourceOffset :: DeviceSize+ , -- | @size@ is the size of the memory region to be bound.+ size :: DeviceSize+ , -- | @memory@ is the 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+ -- that the range of the resource is bound to. If @memory@ is+ -- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', the range is unbound.+ memory :: DeviceMemory+ , -- | @memoryOffset@ is the offset into the+ -- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object to bind the+ -- resource range to. If @memory@ is+ -- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', this value is+ -- ignored.+ memoryOffset :: DeviceSize+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.SparseMemoryBindFlagBits.SparseMemoryBindFlagBits'+ -- specifying usage of the binding operation.+ flags :: SparseMemoryBindFlags+ }+ deriving (Typeable)+deriving instance Show SparseMemoryBind++instance ToCStruct SparseMemoryBind where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SparseMemoryBind{..} f = do+ poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (resourceOffset)+ poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (size)+ poke ((p `plusPtr` 16 :: Ptr DeviceMemory)) (memory)+ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (memoryOffset)+ poke ((p `plusPtr` 32 :: Ptr SparseMemoryBindFlags)) (flags)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)+ f++instance FromCStruct SparseMemoryBind where+ peekCStruct p = do+ resourceOffset <- peek @DeviceSize ((p `plusPtr` 0 :: Ptr DeviceSize))+ size <- peek @DeviceSize ((p `plusPtr` 8 :: Ptr DeviceSize))+ memory <- peek @DeviceMemory ((p `plusPtr` 16 :: Ptr DeviceMemory))+ memoryOffset <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))+ flags <- peek @SparseMemoryBindFlags ((p `plusPtr` 32 :: Ptr SparseMemoryBindFlags))+ pure $ SparseMemoryBind+ resourceOffset size memory memoryOffset flags++instance Storable SparseMemoryBind where+ sizeOf ~_ = 40+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SparseMemoryBind where+ zero = SparseMemoryBind+ zero+ zero+ zero+ zero+ zero+++-- | VkSparseImageMemoryBind - Structure specifying sparse image memory bind+--+-- == Valid Usage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyAliased sparse aliased residency>+-- feature is not enabled, and if any other resources are bound to+-- ranges of @memory@, the range of @memory@ being bound /must/ not+-- overlap with those bound ranges+--+-- - @memory@ and @memoryOffset@ /must/ match the memory requirements of+-- the calling command’s 'Graphics.Vulkan.Core10.Handles.Image', as+-- described in section+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-association>+--+-- - @subresource@ /must/ be a valid image subresource for+-- 'Graphics.Vulkan.Core10.Handles.Image' (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views>)+--+-- - @offset.x@ /must/ be a multiple of the sparse image block width+-- ('SparseImageFormatProperties'::@imageGranularity.width@) of the+-- image+--+-- - @extent.width@ /must/ either be a multiple of the sparse image block+-- width of the image, or else (@extent.width@ + @offset.x@) /must/+-- equal the width of the image subresource+--+-- - @offset.y@ /must/ be a multiple of the sparse image block height+-- ('SparseImageFormatProperties'::@imageGranularity.height@) of the+-- image+--+-- - @extent.height@ /must/ either be a multiple of the sparse image+-- block height of the image, or else (@extent.height@ + @offset.y@)+-- /must/ equal the height of the image subresource+--+-- - @offset.z@ /must/ be a multiple of the sparse image block depth+-- ('SparseImageFormatProperties'::@imageGranularity.depth@) of the+-- image+--+-- - @extent.depth@ /must/ either be a multiple of the sparse image block+-- depth of the image, or else (@extent.depth@ + @offset.z@) /must/+-- equal the depth of the image subresource+--+-- - If @memory@ was created with+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'::@handleTypes@+-- not equal to @0@, at least one handle type it contained /must/ also+-- have been set in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@+-- when the image was created.+--+-- - If @memory@ was created by a memory import operation, the external+-- handle type of the imported memory /must/ also have been set in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@+-- when 'Graphics.Vulkan.Core10.Handles.Image' was created.+--+-- == Valid Usage (Implicit)+--+-- - @subresource@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Image.ImageSubresource' structure+--+-- - If @memory@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @memory@ /must/+-- be a valid 'Graphics.Vulkan.Core10.Handles.DeviceMemory' handle+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.SparseMemoryBindFlagBits.SparseMemoryBindFlagBits'+-- values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent3D',+-- 'Graphics.Vulkan.Core10.Image.ImageSubresource',+-- 'Graphics.Vulkan.Core10.SharedTypes.Offset3D',+-- 'SparseImageMemoryBindInfo',+-- 'Graphics.Vulkan.Core10.Enums.SparseMemoryBindFlagBits.SparseMemoryBindFlags'+data SparseImageMemoryBind = SparseImageMemoryBind+ { -- | @subresource@ is the image /aspect/ and region of interest in the image.+ subresource :: ImageSubresource+ , -- | @offset@ are the coordinates of the first texel within the image+ -- subresource to bind.+ offset :: Offset3D+ , -- | @extent@ is the size in texels of the region within the image+ -- subresource to bind. The extent /must/ be a multiple of the sparse image+ -- block dimensions, except when binding sparse image blocks along the edge+ -- of an image subresource it /can/ instead be such that any coordinate of+ -- @offset@ + @extent@ equals the corresponding dimensions of the image+ -- subresource.+ extent :: Extent3D+ , -- | @memory@ is the 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+ -- that the sparse image blocks of the image are bound to. If @memory@ is+ -- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', the sparse image+ -- blocks are unbound.+ memory :: DeviceMemory+ , -- | @memoryOffset@ is an offset into+ -- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object. If @memory@ is+ -- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', this value is+ -- ignored.+ memoryOffset :: DeviceSize+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' are sparse memory binding flags.+ flags :: SparseMemoryBindFlags+ }+ deriving (Typeable)+deriving instance Show SparseImageMemoryBind++instance ToCStruct SparseImageMemoryBind where+ withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SparseImageMemoryBind{..} f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageSubresource)) (subresource) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 12 :: Ptr Offset3D)) (offset) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent3D)) (extent) . ($ ())+ lift $ poke ((p `plusPtr` 40 :: Ptr DeviceMemory)) (memory)+ lift $ poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (memoryOffset)+ lift $ poke ((p `plusPtr` 56 :: Ptr SparseMemoryBindFlags)) (flags)+ lift $ f+ cStructSize = 64+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageSubresource)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 12 :: Ptr Offset3D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent3D)) (zero) . ($ ())+ lift $ poke ((p `plusPtr` 48 :: Ptr DeviceSize)) (zero)+ lift $ f++instance FromCStruct SparseImageMemoryBind where+ peekCStruct p = do+ subresource <- peekCStruct @ImageSubresource ((p `plusPtr` 0 :: Ptr ImageSubresource))+ offset <- peekCStruct @Offset3D ((p `plusPtr` 12 :: Ptr Offset3D))+ extent <- peekCStruct @Extent3D ((p `plusPtr` 24 :: Ptr Extent3D))+ memory <- peek @DeviceMemory ((p `plusPtr` 40 :: Ptr DeviceMemory))+ memoryOffset <- peek @DeviceSize ((p `plusPtr` 48 :: Ptr DeviceSize))+ flags <- peek @SparseMemoryBindFlags ((p `plusPtr` 56 :: Ptr SparseMemoryBindFlags))+ pure $ SparseImageMemoryBind+ subresource offset extent memory memoryOffset flags++instance Zero SparseImageMemoryBind where+ zero = SparseImageMemoryBind+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkSparseBufferMemoryBindInfo - Structure specifying a sparse buffer+-- memory bind operation+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'BindSparseInfo', 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'SparseMemoryBind'+data SparseBufferMemoryBindInfo = SparseBufferMemoryBindInfo+ { -- | 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+ buffer :: Buffer+ , -- | @pBinds@ /must/ be a valid pointer to an array of @bindCount@ valid+ -- 'SparseMemoryBind' structures+ binds :: Vector SparseMemoryBind+ }+ deriving (Typeable)+deriving instance Show SparseBufferMemoryBindInfo++instance ToCStruct SparseBufferMemoryBindInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SparseBufferMemoryBindInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr Buffer)) (buffer)+ lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (binds)) :: Word32))+ pPBinds' <- ContT $ allocaBytesAligned @SparseMemoryBind ((Data.Vector.length (binds)) * 40) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBinds' `plusPtr` (40 * (i)) :: Ptr SparseMemoryBind) (e) . ($ ())) (binds)+ lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr SparseMemoryBind))) (pPBinds')+ lift $ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr Buffer)) (zero)+ pPBinds' <- ContT $ allocaBytesAligned @SparseMemoryBind ((Data.Vector.length (mempty)) * 40) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBinds' `plusPtr` (40 * (i)) :: Ptr SparseMemoryBind) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr SparseMemoryBind))) (pPBinds')+ lift $ f++instance FromCStruct SparseBufferMemoryBindInfo where+ peekCStruct p = do+ buffer <- peek @Buffer ((p `plusPtr` 0 :: Ptr Buffer))+ bindCount <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ pBinds <- peek @(Ptr SparseMemoryBind) ((p `plusPtr` 16 :: Ptr (Ptr SparseMemoryBind)))+ pBinds' <- generateM (fromIntegral bindCount) (\i -> peekCStruct @SparseMemoryBind ((pBinds `advancePtrBytes` (40 * (i)) :: Ptr SparseMemoryBind)))+ pure $ SparseBufferMemoryBindInfo+ buffer pBinds'++instance Zero SparseBufferMemoryBindInfo where+ zero = SparseBufferMemoryBindInfo+ zero+ mempty+++-- | VkSparseImageOpaqueMemoryBindInfo - Structure specifying sparse image+-- opaque memory bind info+--+-- == Valid Usage+--+-- - If the 'Graphics.Vulkan.Core10.BaseType.Flags' member of any element+-- of @pBinds@ contains+-- 'Graphics.Vulkan.Core10.Enums.SparseMemoryBindFlagBits.SPARSE_MEMORY_BIND_METADATA_BIT',+-- the binding range defined /must/ be within the mip tail region of+-- the metadata aspect of 'Graphics.Vulkan.Core10.Handles.Image'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Image' handle+--+-- - @pBinds@ /must/ be a valid pointer to an array of @bindCount@ valid+-- 'SparseMemoryBind' structures+--+-- - @bindCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'BindSparseInfo', 'Graphics.Vulkan.Core10.Handles.Image',+-- 'SparseMemoryBind'+data SparseImageOpaqueMemoryBindInfo = SparseImageOpaqueMemoryBindInfo+ { -- | 'Graphics.Vulkan.Core10.Handles.Image' is the+ -- 'Graphics.Vulkan.Core10.Handles.Image' object to be bound.+ image :: Image+ , -- | @pBinds@ is a pointer to an array of 'SparseMemoryBind' structures.+ binds :: Vector SparseMemoryBind+ }+ deriving (Typeable)+deriving instance Show SparseImageOpaqueMemoryBindInfo++instance ToCStruct SparseImageOpaqueMemoryBindInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SparseImageOpaqueMemoryBindInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr Image)) (image)+ lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (binds)) :: Word32))+ pPBinds' <- ContT $ allocaBytesAligned @SparseMemoryBind ((Data.Vector.length (binds)) * 40) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBinds' `plusPtr` (40 * (i)) :: Ptr SparseMemoryBind) (e) . ($ ())) (binds)+ lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr SparseMemoryBind))) (pPBinds')+ lift $ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr Image)) (zero)+ pPBinds' <- ContT $ allocaBytesAligned @SparseMemoryBind ((Data.Vector.length (mempty)) * 40) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBinds' `plusPtr` (40 * (i)) :: Ptr SparseMemoryBind) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr SparseMemoryBind))) (pPBinds')+ lift $ f++instance FromCStruct SparseImageOpaqueMemoryBindInfo where+ peekCStruct p = do+ image <- peek @Image ((p `plusPtr` 0 :: Ptr Image))+ bindCount <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ pBinds <- peek @(Ptr SparseMemoryBind) ((p `plusPtr` 16 :: Ptr (Ptr SparseMemoryBind)))+ pBinds' <- generateM (fromIntegral bindCount) (\i -> peekCStruct @SparseMemoryBind ((pBinds `advancePtrBytes` (40 * (i)) :: Ptr SparseMemoryBind)))+ pure $ SparseImageOpaqueMemoryBindInfo+ image pBinds'++instance Zero SparseImageOpaqueMemoryBindInfo where+ zero = SparseImageOpaqueMemoryBindInfo+ zero+ mempty+++-- | VkSparseImageMemoryBindInfo - Structure specifying sparse image memory+-- bind info+--+-- == Valid Usage+--+-- - The @subresource.mipLevel@ member of each element of @pBinds@ /must/+-- be less than the @mipLevels@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- - The @subresource.arrayLayer@ member of each element of @pBinds@+-- /must/ be less than the @arrayLayers@ specified in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' when+-- 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Image' handle+--+-- - @pBinds@ /must/ be a valid pointer to an array of @bindCount@ valid+-- 'SparseImageMemoryBind' structures+--+-- - @bindCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'BindSparseInfo', 'Graphics.Vulkan.Core10.Handles.Image',+-- 'SparseImageMemoryBind'+data SparseImageMemoryBindInfo = SparseImageMemoryBindInfo+ { -- | 'Graphics.Vulkan.Core10.Handles.Image' is the+ -- 'Graphics.Vulkan.Core10.Handles.Image' object to be bound+ image :: Image+ , -- | @pBinds@ is a pointer to an array of 'SparseImageMemoryBind' structures+ binds :: Vector SparseImageMemoryBind+ }+ deriving (Typeable)+deriving instance Show SparseImageMemoryBindInfo++instance ToCStruct SparseImageMemoryBindInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SparseImageMemoryBindInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr Image)) (image)+ lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (binds)) :: Word32))+ pPBinds' <- ContT $ allocaBytesAligned @SparseImageMemoryBind ((Data.Vector.length (binds)) * 64) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBinds' `plusPtr` (64 * (i)) :: Ptr SparseImageMemoryBind) (e) . ($ ())) (binds)+ lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr SparseImageMemoryBind))) (pPBinds')+ lift $ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr Image)) (zero)+ pPBinds' <- ContT $ allocaBytesAligned @SparseImageMemoryBind ((Data.Vector.length (mempty)) * 64) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBinds' `plusPtr` (64 * (i)) :: Ptr SparseImageMemoryBind) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr SparseImageMemoryBind))) (pPBinds')+ lift $ f++instance FromCStruct SparseImageMemoryBindInfo where+ peekCStruct p = do+ image <- peek @Image ((p `plusPtr` 0 :: Ptr Image))+ bindCount <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ pBinds <- peek @(Ptr SparseImageMemoryBind) ((p `plusPtr` 16 :: Ptr (Ptr SparseImageMemoryBind)))+ pBinds' <- generateM (fromIntegral bindCount) (\i -> peekCStruct @SparseImageMemoryBind ((pBinds `advancePtrBytes` (64 * (i)) :: Ptr SparseImageMemoryBind)))+ pure $ SparseImageMemoryBindInfo+ image pBinds'++instance Zero SparseImageMemoryBindInfo where+ zero = SparseImageMemoryBindInfo+ zero+ mempty+++-- | VkBindSparseInfo - Structure specifying a sparse binding operation+--+-- == Valid Usage+--+-- - If any element of @pWaitSemaphores@ or @pSignalSemaphores@ was+-- created with a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE'+-- then the @pNext@ chain /must/ include a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'+-- structure+--+-- - If the @pNext@ chain of this structure includes a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'+-- structure and any element of @pWaitSemaphores@ was created with a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE'+-- then its @waitSemaphoreValueCount@ member /must/ equal+-- @waitSemaphoreCount@+--+-- - If the @pNext@ chain of this structure includes a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'+-- structure and any element of @pSignalSemaphores@ was created with a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE'+-- then its @signalSemaphoreValueCount@ member /must/ equal+-- @signalSemaphoreCount@+--+-- - For each element of @pSignalSemaphores@ created with a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE'+-- the corresponding element of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'::pSignalSemaphoreValues+-- /must/ have a value greater than the current value of the semaphore+-- when the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>+-- is executed+--+-- - For each element of @pWaitSemaphores@ created with a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE'+-- the corresponding element of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'::pWaitSemaphoreValues+-- /must/ have a value which does not differ from the current value of+-- the semaphore or from the value of any outstanding semaphore wait or+-- signal operation on that semaphore by more than+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>.+--+-- - For each element of @pSignalSemaphores@ created with a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE'+-- the corresponding element of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'::pSignalSemaphoreValues+-- /must/ have a value which does not differ from the current value of+-- the semaphore or from the value of any outstanding semaphore wait or+-- signal operation on that semaphore by more than+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_SPARSE_INFO'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupBindSparseInfo'+-- or+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - If @waitSemaphoreCount@ is not @0@, @pWaitSemaphores@ /must/ be a+-- valid pointer to an array of @waitSemaphoreCount@ valid+-- 'Graphics.Vulkan.Core10.Handles.Semaphore' handles+--+-- - If @bufferBindCount@ is not @0@, @pBufferBinds@ /must/ be a valid+-- pointer to an array of @bufferBindCount@ valid+-- 'SparseBufferMemoryBindInfo' structures+--+-- - If @imageOpaqueBindCount@ is not @0@, @pImageOpaqueBinds@ /must/ be+-- a valid pointer to an array of @imageOpaqueBindCount@ valid+-- 'SparseImageOpaqueMemoryBindInfo' structures+--+-- - If @imageBindCount@ is not @0@, @pImageBinds@ /must/ be a valid+-- pointer to an array of @imageBindCount@ valid+-- 'SparseImageMemoryBindInfo' structures+--+-- - If @signalSemaphoreCount@ is not @0@, @pSignalSemaphores@ /must/ be+-- a valid pointer to an array of @signalSemaphoreCount@ valid+-- 'Graphics.Vulkan.Core10.Handles.Semaphore' handles+--+-- - Both of the elements of @pSignalSemaphores@, and the elements of+-- @pWaitSemaphores@ that are valid handles of non-ignored parameters+-- /must/ have been created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Semaphore',+-- 'SparseBufferMemoryBindInfo', 'SparseImageMemoryBindInfo',+-- 'SparseImageOpaqueMemoryBindInfo',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'queueBindSparse'+data BindSparseInfo (es :: [Type]) = BindSparseInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | @pWaitSemaphores@ is a pointer to an array of semaphores upon which to+ -- wait on before the sparse binding operations for this batch begin+ -- execution. If semaphores to wait on are provided, they define a+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>.+ waitSemaphores :: Vector Semaphore+ , -- | @pBufferBinds@ is a pointer to an array of 'SparseBufferMemoryBindInfo'+ -- structures.+ bufferBinds :: Vector SparseBufferMemoryBindInfo+ , -- | @pImageOpaqueBinds@ is a pointer to an array of+ -- 'SparseImageOpaqueMemoryBindInfo' structures, indicating opaque sparse+ -- image bindings to perform.+ imageOpaqueBinds :: Vector SparseImageOpaqueMemoryBindInfo+ , -- | @pImageBinds@ is a pointer to an array of 'SparseImageMemoryBindInfo'+ -- structures, indicating sparse image bindings to perform.+ imageBinds :: Vector SparseImageMemoryBindInfo+ , -- | @pSignalSemaphores@ is a pointer to an array of semaphores which will be+ -- signaled when the sparse binding operations for this batch have+ -- completed execution. If semaphores to be signaled are provided, they+ -- define a+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>.+ signalSemaphores :: Vector Semaphore+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (BindSparseInfo es)++instance Extensible BindSparseInfo where+ extensibleType = STRUCTURE_TYPE_BIND_SPARSE_INFO+ setNext x next = x{next = next}+ getNext BindSparseInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends BindSparseInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @TimelineSemaphoreSubmitInfo = Just f+ | Just Refl <- eqT @e @DeviceGroupBindSparseInfo = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (BindSparseInfo es) where+ withCStruct x f = allocaBytesAligned 96 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p BindSparseInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_SPARSE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (waitSemaphores)) :: Word32))+ pPWaitSemaphores' <- ContT $ allocaBytesAligned @Semaphore ((Data.Vector.length (waitSemaphores)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPWaitSemaphores' `plusPtr` (8 * (i)) :: Ptr Semaphore) (e)) (waitSemaphores)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Semaphore))) (pPWaitSemaphores')+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (bufferBinds)) :: Word32))+ pPBufferBinds' <- ContT $ allocaBytesAligned @SparseBufferMemoryBindInfo ((Data.Vector.length (bufferBinds)) * 24) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBufferBinds' `plusPtr` (24 * (i)) :: Ptr SparseBufferMemoryBindInfo) (e) . ($ ())) (bufferBinds)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr SparseBufferMemoryBindInfo))) (pPBufferBinds')+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (imageOpaqueBinds)) :: Word32))+ pPImageOpaqueBinds' <- ContT $ allocaBytesAligned @SparseImageOpaqueMemoryBindInfo ((Data.Vector.length (imageOpaqueBinds)) * 24) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPImageOpaqueBinds' `plusPtr` (24 * (i)) :: Ptr SparseImageOpaqueMemoryBindInfo) (e) . ($ ())) (imageOpaqueBinds)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr SparseImageOpaqueMemoryBindInfo))) (pPImageOpaqueBinds')+ lift $ poke ((p `plusPtr` 64 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (imageBinds)) :: Word32))+ pPImageBinds' <- ContT $ allocaBytesAligned @SparseImageMemoryBindInfo ((Data.Vector.length (imageBinds)) * 24) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPImageBinds' `plusPtr` (24 * (i)) :: Ptr SparseImageMemoryBindInfo) (e) . ($ ())) (imageBinds)+ lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr SparseImageMemoryBindInfo))) (pPImageBinds')+ lift $ poke ((p `plusPtr` 80 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (signalSemaphores)) :: Word32))+ pPSignalSemaphores' <- ContT $ allocaBytesAligned @Semaphore ((Data.Vector.length (signalSemaphores)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPSignalSemaphores' `plusPtr` (8 * (i)) :: Ptr Semaphore) (e)) (signalSemaphores)+ lift $ poke ((p `plusPtr` 88 :: Ptr (Ptr Semaphore))) (pPSignalSemaphores')+ lift $ f+ cStructSize = 96+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_SPARSE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ pPWaitSemaphores' <- ContT $ allocaBytesAligned @Semaphore ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPWaitSemaphores' `plusPtr` (8 * (i)) :: Ptr Semaphore) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Semaphore))) (pPWaitSemaphores')+ pPBufferBinds' <- ContT $ allocaBytesAligned @SparseBufferMemoryBindInfo ((Data.Vector.length (mempty)) * 24) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBufferBinds' `plusPtr` (24 * (i)) :: Ptr SparseBufferMemoryBindInfo) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr SparseBufferMemoryBindInfo))) (pPBufferBinds')+ pPImageOpaqueBinds' <- ContT $ allocaBytesAligned @SparseImageOpaqueMemoryBindInfo ((Data.Vector.length (mempty)) * 24) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPImageOpaqueBinds' `plusPtr` (24 * (i)) :: Ptr SparseImageOpaqueMemoryBindInfo) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr SparseImageOpaqueMemoryBindInfo))) (pPImageOpaqueBinds')+ pPImageBinds' <- ContT $ allocaBytesAligned @SparseImageMemoryBindInfo ((Data.Vector.length (mempty)) * 24) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPImageBinds' `plusPtr` (24 * (i)) :: Ptr SparseImageMemoryBindInfo) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr SparseImageMemoryBindInfo))) (pPImageBinds')+ pPSignalSemaphores' <- ContT $ allocaBytesAligned @Semaphore ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPSignalSemaphores' `plusPtr` (8 * (i)) :: Ptr Semaphore) (e)) (mempty)+ lift $ poke ((p `plusPtr` 88 :: Ptr (Ptr Semaphore))) (pPSignalSemaphores')+ lift $ f++instance PeekChain es => FromCStruct (BindSparseInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ waitSemaphoreCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pWaitSemaphores <- peek @(Ptr Semaphore) ((p `plusPtr` 24 :: Ptr (Ptr Semaphore)))+ pWaitSemaphores' <- generateM (fromIntegral waitSemaphoreCount) (\i -> peek @Semaphore ((pWaitSemaphores `advancePtrBytes` (8 * (i)) :: Ptr Semaphore)))+ bufferBindCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pBufferBinds <- peek @(Ptr SparseBufferMemoryBindInfo) ((p `plusPtr` 40 :: Ptr (Ptr SparseBufferMemoryBindInfo)))+ pBufferBinds' <- generateM (fromIntegral bufferBindCount) (\i -> peekCStruct @SparseBufferMemoryBindInfo ((pBufferBinds `advancePtrBytes` (24 * (i)) :: Ptr SparseBufferMemoryBindInfo)))+ imageOpaqueBindCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+ pImageOpaqueBinds <- peek @(Ptr SparseImageOpaqueMemoryBindInfo) ((p `plusPtr` 56 :: Ptr (Ptr SparseImageOpaqueMemoryBindInfo)))+ pImageOpaqueBinds' <- generateM (fromIntegral imageOpaqueBindCount) (\i -> peekCStruct @SparseImageOpaqueMemoryBindInfo ((pImageOpaqueBinds `advancePtrBytes` (24 * (i)) :: Ptr SparseImageOpaqueMemoryBindInfo)))+ imageBindCount <- peek @Word32 ((p `plusPtr` 64 :: Ptr Word32))+ pImageBinds <- peek @(Ptr SparseImageMemoryBindInfo) ((p `plusPtr` 72 :: Ptr (Ptr SparseImageMemoryBindInfo)))+ pImageBinds' <- generateM (fromIntegral imageBindCount) (\i -> peekCStruct @SparseImageMemoryBindInfo ((pImageBinds `advancePtrBytes` (24 * (i)) :: Ptr SparseImageMemoryBindInfo)))+ signalSemaphoreCount <- peek @Word32 ((p `plusPtr` 80 :: Ptr Word32))+ pSignalSemaphores <- peek @(Ptr Semaphore) ((p `plusPtr` 88 :: Ptr (Ptr Semaphore)))+ pSignalSemaphores' <- generateM (fromIntegral signalSemaphoreCount) (\i -> peek @Semaphore ((pSignalSemaphores `advancePtrBytes` (8 * (i)) :: Ptr Semaphore)))+ pure $ BindSparseInfo+ next pWaitSemaphores' pBufferBinds' pImageOpaqueBinds' pImageBinds' pSignalSemaphores'++instance es ~ '[] => Zero (BindSparseInfo es) where+ zero = BindSparseInfo+ ()+ mempty+ mempty+ mempty+ mempty+ mempty+
+ src/Graphics/Vulkan/Core10/SparseResourceMemoryManagement.hs-boot view
@@ -0,0 +1,81 @@+{-# language CPP #-}+module Graphics.Vulkan.Core10.SparseResourceMemoryManagement ( BindSparseInfo+ , SparseBufferMemoryBindInfo+ , SparseImageFormatProperties+ , SparseImageMemoryBind+ , SparseImageMemoryBindInfo+ , SparseImageMemoryRequirements+ , SparseImageOpaqueMemoryBindInfo+ , SparseMemoryBind+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+type role BindSparseInfo nominal+data BindSparseInfo (es :: [Type])++instance PokeChain es => ToCStruct (BindSparseInfo es)+instance Show (Chain es) => Show (BindSparseInfo es)++instance PeekChain es => FromCStruct (BindSparseInfo es)+++data SparseBufferMemoryBindInfo++instance ToCStruct SparseBufferMemoryBindInfo+instance Show SparseBufferMemoryBindInfo++instance FromCStruct SparseBufferMemoryBindInfo+++data SparseImageFormatProperties++instance ToCStruct SparseImageFormatProperties+instance Show SparseImageFormatProperties++instance FromCStruct SparseImageFormatProperties+++data SparseImageMemoryBind++instance ToCStruct SparseImageMemoryBind+instance Show SparseImageMemoryBind++instance FromCStruct SparseImageMemoryBind+++data SparseImageMemoryBindInfo++instance ToCStruct SparseImageMemoryBindInfo+instance Show SparseImageMemoryBindInfo++instance FromCStruct SparseImageMemoryBindInfo+++data SparseImageMemoryRequirements++instance ToCStruct SparseImageMemoryRequirements+instance Show SparseImageMemoryRequirements++instance FromCStruct SparseImageMemoryRequirements+++data SparseImageOpaqueMemoryBindInfo++instance ToCStruct SparseImageOpaqueMemoryBindInfo+instance Show SparseImageOpaqueMemoryBindInfo++instance FromCStruct SparseImageOpaqueMemoryBindInfo+++data SparseMemoryBind++instance ToCStruct SparseMemoryBind+instance Show SparseMemoryBind++instance FromCStruct SparseMemoryBind+
− src/Graphics/Vulkan/Core10/Version.hs
@@ -1,97 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language ViewPatterns #-}--module Graphics.Vulkan.Core10.Version- ( pattern VK_HEADER_VERSION- , pattern VK_MAKE_VERSION- , pattern VK_API_VERSION_1_0- , pattern VK_API_VERSION_1_1- , _VK_VERSION_MAJOR- , _VK_VERSION_MINOR- , _VK_VERSION_PATCH- ) where--import Data.Bits- ( (.&.)- , (.|.)- , shiftL- , shiftR- )-import Data.Word- ( Word32- )-------- | VK_HEADER_VERSION - Vulkan header file version number------ = See Also------ No cross-references are available-pattern VK_HEADER_VERSION :: Integral a => a-pattern VK_HEADER_VERSION = 73--- | VK_MAKE_VERSION - Construct an API version number------ = Description------ - @major@ is the major version number.------ - @minor@ is the minor version number.------ - @patch@ is the patch version number.------ This macro /can/ be used when constructing the--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkApplicationInfo'::@apiVersion@--- parameter passed to--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkCreateInstance'.------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkApplicationInfo',--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkCreateInstance'-pattern VK_MAKE_VERSION :: Word32 -> Word32 -> Word32 -> Word32-pattern VK_MAKE_VERSION major minor patch <-- (\v -> (_VK_VERSION_MAJOR v, _VK_VERSION_MINOR v, _VK_VERSION_PATCH v) -> (major, minor, patch))- where VK_MAKE_VERSION major minor patch = major `shiftL` 22 .|. minor `shiftL` 12 .|. patch---- | VK_API_VERSION_1_0 - Return API version number for Vulkan 1.0------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.vkCreateInstance',--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceProperties'-pattern VK_API_VERSION_1_0 :: Word32-pattern VK_API_VERSION_1_0 = VK_MAKE_VERSION 1 0 0---- | VK_API_VERSION_1_1 - Return API version number for Vulkan 1.1------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.vkCreateInstance',--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceProperties'-pattern VK_API_VERSION_1_1 :: Word32-pattern VK_API_VERSION_1_1 = VK_MAKE_VERSION 1 1 0---- | VK_VERSION_MAJOR - Extract API major version number------ = See Also------ No cross-references are available-_VK_VERSION_MAJOR :: Word32 -> Word32-_VK_VERSION_MAJOR v = v `shiftR` 22---- | VK_VERSION_MINOR - Extract API minor version number------ = See Also------ No cross-references are available-_VK_VERSION_MINOR :: Word32 -> Word32-_VK_VERSION_MINOR v = v `shiftR` 12 .&. 0x3ff---- No documentation found for TopLevel "VK_VERSION_PATCh"-_VK_VERSION_PATCH :: Word32 -> Word32-_VK_VERSION_PATCH v = v .&. 0xfff
src/Graphics/Vulkan/Core11.hs view
@@ -1,61 +1,62 @@-{-# language Strict #-} {-# language CPP #-}---module Graphics.Vulkan.Core11- ( module Graphics.Vulkan.Core11.DeviceInitialization- , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_subgroup- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_16bit_storage- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance1- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_variable_pointers- , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance3- , module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_shader_draw_parameters- ) where--+module Graphics.Vulkan.Core11 ( pattern API_VERSION_1_1+ , module Graphics.Vulkan.Core11.DeviceInitialization+ , module Graphics.Vulkan.Core11.Enums+ , module Graphics.Vulkan.Core11.Handles+ , module Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory+ , module Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance1+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters+ , module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers+ ) where import Graphics.Vulkan.Core11.DeviceInitialization-import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_subgroup-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_16bit_storage-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance1-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_variable_pointers-import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance3-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_shader_draw_parameters--+import Graphics.Vulkan.Core11.Enums+import Graphics.Vulkan.Core11.Handles+import Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory+import Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance1+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers+import Data.Word (Word32)+import Graphics.Vulkan.Version (pattern MAKE_VERSION)+pattern API_VERSION_1_1 :: Word32+pattern API_VERSION_1_1 = MAKE_VERSION 1 1 0
src/Graphics/Vulkan/Core11/DeviceInitialization.hs view
@@ -1,53 +1,54 @@-{-# language Strict #-} {-# language CPP #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}--module Graphics.Vulkan.Core11.DeviceInitialization- ( vkEnumerateInstanceVersion- ) where--import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- )+module Graphics.Vulkan.Core11.DeviceInitialization (enumerateInstanceVersion) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Ptr (castFunPtr)+import Foreign.Ptr (nullPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Foreign.Storable (Storable(peek))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Ptr (Ptr(Ptr))+import Data.Word (Word32)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Dynamic (getInstanceProcAddr')+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkEnumerateInstanceVersion+ :: FunPtr (Ptr Word32 -> IO Result) -> Ptr Word32 -> IO Result -- | vkEnumerateInstanceVersion - Query instance-level version before -- instance creation -- -- = Parameters ----- - @pApiVersion@ points to a @uint32_t@, which is the version of Vulkan--- supported by instance-level functionality, encoded as described in--- the [API Version Numbers and--- Semantics](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-versionnum)--- section.------ == Valid Usage (Implicit)------ - @pApiVersion@ /must/ be a valid pointer to a @uint32_t@ value+-- - @pApiVersion@ is a pointer to a @uint32_t@, which is the version of+-- Vulkan supported by instance-level functionality, encoded as+-- described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-coreversions-versionnumbers>. -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+-- -- = See Also -- -- No cross-references are available-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkEnumerateInstanceVersion" vkEnumerateInstanceVersion :: ("pApiVersion" ::: Ptr Word32) -> IO VkResult+enumerateInstanceVersion :: IO (("apiVersion" ::: Word32))+enumerateInstanceVersion = evalContT $ do+ vkEnumerateInstanceVersion' <- lift $ mkVkEnumerateInstanceVersion . castFunPtr @_ @(("pApiVersion" ::: Ptr Word32) -> IO Result) <$> getInstanceProcAddr' nullPtr (Ptr "vkEnumerateInstanceVersion"#)+ pPApiVersion <- ContT $ bracket (callocBytes @Word32 4) free+ _ <- lift $ vkEnumerateInstanceVersion' (pPApiVersion)+ pApiVersion <- lift $ peek @Word32 pPApiVersion+ pure $ (pApiVersion)+
+ src/Graphics/Vulkan/Core11/Enums.hs view
@@ -0,0 +1,41 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums ( module Graphics.Vulkan.Core11.Enums.ChromaLocation+ , module Graphics.Vulkan.Core11.Enums.CommandPoolTrimFlags+ , module Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateCreateFlags+ , module Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateType+ , module Graphics.Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits+ , module Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits+ , module Graphics.Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits+ , module Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits+ , module Graphics.Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits+ , module Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits+ , module Graphics.Vulkan.Core11.Enums.FenceImportFlagBits+ , module Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits+ , module Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits+ , module Graphics.Vulkan.Core11.Enums.PointClippingBehavior+ , module Graphics.Vulkan.Core11.Enums.SamplerYcbcrModelConversion+ , module Graphics.Vulkan.Core11.Enums.SamplerYcbcrRange+ , module Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits+ , module Graphics.Vulkan.Core11.Enums.SubgroupFeatureFlagBits+ , module Graphics.Vulkan.Core11.Enums.TessellationDomainOrigin+ ) where+import Graphics.Vulkan.Core11.Enums.ChromaLocation+import Graphics.Vulkan.Core11.Enums.CommandPoolTrimFlags+import Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateCreateFlags+import Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateType+import Graphics.Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits+import Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits+import Graphics.Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits+import Graphics.Vulkan.Core11.Enums.FenceImportFlagBits+import Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits+import Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits+import Graphics.Vulkan.Core11.Enums.PointClippingBehavior+import Graphics.Vulkan.Core11.Enums.SamplerYcbcrModelConversion+import Graphics.Vulkan.Core11.Enums.SamplerYcbcrRange+import Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits+import Graphics.Vulkan.Core11.Enums.SubgroupFeatureFlagBits+import Graphics.Vulkan.Core11.Enums.TessellationDomainOrigin+
+ src/Graphics/Vulkan/Core11/Enums/ChromaLocation.hs view
@@ -0,0 +1,54 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.ChromaLocation (ChromaLocation( CHROMA_LOCATION_COSITED_EVEN+ , CHROMA_LOCATION_MIDPOINT+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkChromaLocation - Position of downsampled chroma samples+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'+newtype ChromaLocation = ChromaLocation Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'CHROMA_LOCATION_COSITED_EVEN' specifies that downsampled chroma samples+-- are aligned with luma samples with even coordinates.+pattern CHROMA_LOCATION_COSITED_EVEN = ChromaLocation 0+-- | 'CHROMA_LOCATION_MIDPOINT' specifies that downsampled chroma samples are+-- located half way between each even luma sample and the nearest higher+-- odd luma sample.+pattern CHROMA_LOCATION_MIDPOINT = ChromaLocation 1+{-# complete CHROMA_LOCATION_COSITED_EVEN,+ CHROMA_LOCATION_MIDPOINT :: ChromaLocation #-}++instance Show ChromaLocation where+ showsPrec p = \case+ CHROMA_LOCATION_COSITED_EVEN -> showString "CHROMA_LOCATION_COSITED_EVEN"+ CHROMA_LOCATION_MIDPOINT -> showString "CHROMA_LOCATION_MIDPOINT"+ ChromaLocation x -> showParen (p >= 11) (showString "ChromaLocation " . showsPrec 11 x)++instance Read ChromaLocation where+ readPrec = parens (choose [("CHROMA_LOCATION_COSITED_EVEN", pure CHROMA_LOCATION_COSITED_EVEN)+ , ("CHROMA_LOCATION_MIDPOINT", pure CHROMA_LOCATION_MIDPOINT)]+ ++++ prec 10 (do+ expectP (Ident "ChromaLocation")+ v <- step readPrec+ pure (ChromaLocation v)))+
+ src/Graphics/Vulkan/Core11/Enums/ChromaLocation.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.ChromaLocation (ChromaLocation) where++++data ChromaLocation+
+ src/Graphics/Vulkan/Core11/Enums/CommandPoolTrimFlags.hs view
@@ -0,0 +1,46 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.CommandPoolTrimFlags (CommandPoolTrimFlags(..)) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkCommandPoolTrimFlags - Reserved for future use+--+-- = Description+--+-- 'CommandPoolTrimFlags' is a bitmask type for setting a mask, but is+-- currently reserved for future use.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance1.trimCommandPool',+-- 'Graphics.Vulkan.Extensions.VK_KHR_maintenance1.trimCommandPoolKHR'+newtype CommandPoolTrimFlags = CommandPoolTrimFlags Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show CommandPoolTrimFlags where+ showsPrec p = \case+ CommandPoolTrimFlags x -> showParen (p >= 11) (showString "CommandPoolTrimFlags 0x" . showHex x)++instance Read CommandPoolTrimFlags where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "CommandPoolTrimFlags")+ v <- step readPrec+ pure (CommandPoolTrimFlags v)))+
+ src/Graphics/Vulkan/Core11/Enums/CommandPoolTrimFlags.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.CommandPoolTrimFlags (CommandPoolTrimFlags) where++++data CommandPoolTrimFlags+
+ src/Graphics/Vulkan/Core11/Enums/DescriptorUpdateTemplateCreateFlags.hs view
@@ -0,0 +1,45 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateCreateFlags (DescriptorUpdateTemplateCreateFlags(..)) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkDescriptorUpdateTemplateCreateFlags - Reserved for future use+--+-- = Description+--+-- 'DescriptorUpdateTemplateCreateFlags' is a bitmask type for setting a+-- mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateCreateInfo'+newtype DescriptorUpdateTemplateCreateFlags = DescriptorUpdateTemplateCreateFlags Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show DescriptorUpdateTemplateCreateFlags where+ showsPrec p = \case+ DescriptorUpdateTemplateCreateFlags x -> showParen (p >= 11) (showString "DescriptorUpdateTemplateCreateFlags 0x" . showHex x)++instance Read DescriptorUpdateTemplateCreateFlags where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "DescriptorUpdateTemplateCreateFlags")+ v <- step readPrec+ pure (DescriptorUpdateTemplateCreateFlags v)))+
+ src/Graphics/Vulkan/Core11/Enums/DescriptorUpdateTemplateCreateFlags.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateCreateFlags (DescriptorUpdateTemplateCreateFlags) where++++data DescriptorUpdateTemplateCreateFlags+
+ src/Graphics/Vulkan/Core11/Enums/DescriptorUpdateTemplateType.hs view
@@ -0,0 +1,54 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateType (DescriptorUpdateTemplateType( DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET+ , DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkDescriptorUpdateTemplateType - Indicates the valid usage of the+-- descriptor update template+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateCreateInfo'+newtype DescriptorUpdateTemplateType = DescriptorUpdateTemplateType Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET' specifies that the+-- descriptor update template will be used for descriptor set updates only.+pattern DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = DescriptorUpdateTemplateType 0+-- | 'DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR' specifies that+-- the descriptor update template will be used for push descriptor updates+-- only.+pattern DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = DescriptorUpdateTemplateType 1+{-# complete DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET,+ DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR :: DescriptorUpdateTemplateType #-}++instance Show DescriptorUpdateTemplateType where+ showsPrec p = \case+ DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET -> showString "DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET"+ DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR -> showString "DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR"+ DescriptorUpdateTemplateType x -> showParen (p >= 11) (showString "DescriptorUpdateTemplateType " . showsPrec 11 x)++instance Read DescriptorUpdateTemplateType where+ readPrec = parens (choose [("DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET", pure DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET)+ , ("DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR", pure DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR)]+ ++++ prec 10 (do+ expectP (Ident "DescriptorUpdateTemplateType")+ v <- step readPrec+ pure (DescriptorUpdateTemplateType v)))+
+ src/Graphics/Vulkan/Core11/Enums/DescriptorUpdateTemplateType.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateType (DescriptorUpdateTemplateType) where++++data DescriptorUpdateTemplateType+
+ src/Graphics/Vulkan/Core11/Enums/ExternalFenceFeatureFlagBits.hs view
@@ -0,0 +1,56 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits ( ExternalFenceFeatureFlagBits( EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT+ , EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT+ , ..+ )+ , ExternalFenceFeatureFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkExternalFenceFeatureFlagBits - Bitfield describing features of an+-- external fence handle type+--+-- = See Also+--+-- 'ExternalFenceFeatureFlags'+newtype ExternalFenceFeatureFlagBits = ExternalFenceFeatureFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT' specifies handles of this type+-- /can/ be exported from Vulkan fence objects.+pattern EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = ExternalFenceFeatureFlagBits 0x00000001+-- | 'EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT' specifies handles of this type+-- /can/ be imported to Vulkan fence objects.+pattern EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = ExternalFenceFeatureFlagBits 0x00000002++type ExternalFenceFeatureFlags = ExternalFenceFeatureFlagBits++instance Show ExternalFenceFeatureFlagBits where+ showsPrec p = \case+ EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT -> showString "EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"+ EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT -> showString "EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"+ ExternalFenceFeatureFlagBits x -> showParen (p >= 11) (showString "ExternalFenceFeatureFlagBits 0x" . showHex x)++instance Read ExternalFenceFeatureFlagBits where+ readPrec = parens (choose [("EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT", pure EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT)+ , ("EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT", pure EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT)]+ ++++ prec 10 (do+ expectP (Ident "ExternalFenceFeatureFlagBits")+ v <- step readPrec+ pure (ExternalFenceFeatureFlagBits v)))+
+ src/Graphics/Vulkan/Core11/Enums/ExternalFenceFeatureFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits ( ExternalFenceFeatureFlagBits+ , ExternalFenceFeatureFlags+ ) where++++data ExternalFenceFeatureFlagBits++type ExternalFenceFeatureFlags = ExternalFenceFeatureFlagBits+
+ src/Graphics/Vulkan/Core11/Enums/ExternalFenceHandleTypeFlagBits.hs view
@@ -0,0 +1,111 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits ( ExternalFenceHandleTypeFlagBits( EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT+ , EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT+ , EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT+ , EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT+ , ..+ )+ , ExternalFenceHandleTypeFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkExternalFenceHandleTypeFlagBits - Bitmask of valid external fence+-- handle types+--+-- = Description+--+-- Some external fence handle types can only be shared within the same+-- underlying physical device and\/or the same driver version, as defined+-- in the following table:+--+-- +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | Handle type | 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties'::@driverUUID@ | 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties'::@deviceUUID@ |+-- +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | 'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT' | Must match | Must match |+-- +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | 'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT' | Must match | Must match |+-- +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | 'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT' | Must match | Must match |+-- +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | 'EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT' | No restriction | No restriction |+-- +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++--+-- External fence handle types compatibility+--+-- = See Also+--+-- 'ExternalFenceHandleTypeFlags',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.FenceGetFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.FenceGetWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.ImportFenceFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.ImportFenceWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.PhysicalDeviceExternalFenceInfo'+newtype ExternalFenceHandleTypeFlagBits = ExternalFenceHandleTypeFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT' specifies a POSIX file+-- descriptor handle that has only limited valid usage outside of Vulkan+-- and other compatible APIs. It /must/ be compatible with the POSIX system+-- calls @dup@, @dup2@, @close@, and the non-standard system call @dup3@.+-- Additionally, it /must/ be transportable over a socket using an+-- @SCM_RIGHTS@ control message. It owns a reference to the underlying+-- synchronization primitive represented by its Vulkan fence object.+pattern EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = ExternalFenceHandleTypeFlagBits 0x00000001+-- | 'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT' specifies an NT handle+-- that has only limited valid usage outside of Vulkan and other compatible+-- APIs. It /must/ be compatible with the functions @DuplicateHandle@,+-- @CloseHandle@, @CompareObjectHandles@, @GetHandleInformation@, and+-- @SetHandleInformation@. It owns a reference to the underlying+-- synchronization primitive represented by its Vulkan fence object.+pattern EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = ExternalFenceHandleTypeFlagBits 0x00000002+-- | 'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT' specifies a global+-- share handle that has only limited valid usage outside of Vulkan and+-- other compatible APIs. It is not compatible with any native APIs. It+-- does not own a reference to the underlying synchronization primitive+-- represented by its Vulkan fence object, and will therefore become+-- invalid when all Vulkan fence objects associated with it are destroyed.+pattern EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = ExternalFenceHandleTypeFlagBits 0x00000004+-- | 'EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT' specifies a POSIX file+-- descriptor handle to a Linux Sync File or Android Fence. It can be used+-- with any native API accepting a valid sync file or fence as input. It+-- owns a reference to the underlying synchronization primitive associated+-- with the file descriptor. Implementations which support importing this+-- handle type /must/ accept any type of sync or fence FD supported by the+-- native system they are running on.+pattern EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = ExternalFenceHandleTypeFlagBits 0x00000008++type ExternalFenceHandleTypeFlags = ExternalFenceHandleTypeFlagBits++instance Show ExternalFenceHandleTypeFlagBits where+ showsPrec p = \case+ EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT -> showString "EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"+ EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT -> showString "EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"+ EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT -> showString "EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"+ EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT -> showString "EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"+ ExternalFenceHandleTypeFlagBits x -> showParen (p >= 11) (showString "ExternalFenceHandleTypeFlagBits 0x" . showHex x)++instance Read ExternalFenceHandleTypeFlagBits where+ readPrec = parens (choose [("EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT", pure EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT)+ , ("EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT", pure EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT)+ , ("EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT", pure EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT)+ , ("EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT", pure EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT)]+ ++++ prec 10 (do+ expectP (Ident "ExternalFenceHandleTypeFlagBits")+ v <- step readPrec+ pure (ExternalFenceHandleTypeFlagBits v)))+
+ src/Graphics/Vulkan/Core11/Enums/ExternalFenceHandleTypeFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits ( ExternalFenceHandleTypeFlagBits+ , ExternalFenceHandleTypeFlags+ ) where++++data ExternalFenceHandleTypeFlagBits++type ExternalFenceHandleTypeFlags = ExternalFenceHandleTypeFlagBits+
+ src/Graphics/Vulkan/Core11/Enums/ExternalMemoryFeatureFlagBits.hs view
@@ -0,0 +1,85 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits ( ExternalMemoryFeatureFlagBits( EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT+ , EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT+ , EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT+ , ..+ )+ , ExternalMemoryFeatureFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkExternalMemoryFeatureFlagBits - Bitmask specifying features of an+-- external memory handle type+--+-- = Description+--+-- Because their semantics in external APIs roughly align with that of an+-- image or buffer with a dedicated allocation in Vulkan, implementations+-- are /required/ to report 'EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT'+-- for the following external handle types:+--+-- Implementations /must/ not report+-- 'EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT' for buffers with external+-- handle type+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'.+-- Implementations /must/ not report+-- 'EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT' for images or buffers with+-- external handle type+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT',+-- or+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT'.+--+-- = See Also+--+-- 'ExternalMemoryFeatureFlags'+newtype ExternalMemoryFeatureFlagBits = ExternalMemoryFeatureFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT' specifies that images or+-- buffers created with the specified parameters and handle type /must/ use+-- the mechanisms defined by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements'+-- and+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'+-- to create (or import) a dedicated allocation for the image or buffer.+pattern EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = ExternalMemoryFeatureFlagBits 0x00000001+-- | 'EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT' specifies that handles of this+-- type /can/ be exported from Vulkan memory objects.+pattern EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = ExternalMemoryFeatureFlagBits 0x00000002+-- | 'EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT' specifies that handles of this+-- type /can/ be imported as Vulkan memory objects.+pattern EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = ExternalMemoryFeatureFlagBits 0x00000004++type ExternalMemoryFeatureFlags = ExternalMemoryFeatureFlagBits++instance Show ExternalMemoryFeatureFlagBits where+ showsPrec p = \case+ EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT -> showString "EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"+ EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT -> showString "EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"+ EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT -> showString "EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"+ ExternalMemoryFeatureFlagBits x -> showParen (p >= 11) (showString "ExternalMemoryFeatureFlagBits 0x" . showHex x)++instance Read ExternalMemoryFeatureFlagBits where+ readPrec = parens (choose [("EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT", pure EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT)+ , ("EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT", pure EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT)+ , ("EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT", pure EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT)]+ ++++ prec 10 (do+ expectP (Ident "ExternalMemoryFeatureFlagBits")+ v <- step readPrec+ pure (ExternalMemoryFeatureFlagBits v)))+
+ src/Graphics/Vulkan/Core11/Enums/ExternalMemoryFeatureFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits ( ExternalMemoryFeatureFlagBits+ , ExternalMemoryFeatureFlags+ ) where++++data ExternalMemoryFeatureFlagBits++type ExternalMemoryFeatureFlags = ExternalMemoryFeatureFlagBits+
+ src/Graphics/Vulkan/Core11/Enums/ExternalMemoryHandleTypeFlagBits.hs view
@@ -0,0 +1,207 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits ( ExternalMemoryHandleTypeFlagBits( EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT+ , EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT+ , EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT+ , EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT+ , 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_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT+ , EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT+ , EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID+ , EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT+ , ..+ )+ , ExternalMemoryHandleTypeFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkExternalMemoryHandleTypeFlagBits - Bit specifying external memory+-- handle types+--+-- = Description+--+-- Some external memory handle types can only be shared within the same+-- underlying physical device and\/or the same driver version, as defined+-- in the following table:+--+-- +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | Handle type | 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties'::@driverUUID@ | 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties'::@deviceUUID@ |+-- +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT' | Must match | Must match |+-- +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT' | Must match | Must match |+-- +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT' | Must match | Must match |+-- +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT' | Must match | Must match |+-- +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT' | Must match | Must match |+-- +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT' | Must match | Must match |+-- +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT' | Must match | Must match |+-- +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT' | No restriction | No restriction |+-- +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT' | No restriction | No restriction |+-- +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT' | No restriction | No restriction |+-- +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID' | No restriction | No restriction |+-- +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++--+-- External memory handle types compatibility+--+-- Note+--+-- The above table does not restrict the drivers and devices with which+-- 'EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT' and+-- 'EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT' /may/+-- be shared, as these handle types inherently mean memory that does not+-- come from the same device, as they import memory from the host or a+-- foreign device, respectively.+--+-- Note+--+-- Even though the above table does not restrict the drivers and devices+-- with which 'EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT' /may/ be+-- shared, query mechanisms exist in the Vulkan API that prevent the import+-- of incompatible dma-bufs (such as+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdPropertiesKHR')+-- and that prevent incompatible usage of dma-bufs (such as+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalBufferInfo'+-- and+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo').+--+-- = See Also+--+-- 'ExternalMemoryHandleTypeFlags',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.ImportMemoryFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.ImportMemoryHostPointerInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.ImportMemoryWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryGetFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryGetWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalBufferInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdPropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.getMemoryHostPointerPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.getMemoryWin32HandlePropertiesKHR'+newtype ExternalMemoryHandleTypeFlagBits = ExternalMemoryHandleTypeFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT' specifies a POSIX file+-- descriptor handle that has only limited valid usage outside of Vulkan+-- and other compatible APIs. It /must/ be compatible with the POSIX system+-- calls @dup@, @dup2@, @close@, and the non-standard system call @dup3@.+-- Additionally, it /must/ be transportable over a socket using an+-- @SCM_RIGHTS@ control message. It owns a reference to the underlying+-- memory resource represented by its Vulkan memory object.+pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = ExternalMemoryHandleTypeFlagBits 0x00000001+-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT' specifies an NT handle+-- that has only limited valid usage outside of Vulkan and other compatible+-- APIs. It /must/ be compatible with the functions @DuplicateHandle@,+-- @CloseHandle@, @CompareObjectHandles@, @GetHandleInformation@, and+-- @SetHandleInformation@. It owns a reference to the underlying memory+-- resource represented by its Vulkan memory object.+pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = ExternalMemoryHandleTypeFlagBits 0x00000002+-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT' specifies a global+-- share handle that has only limited valid usage outside of Vulkan and+-- other compatible APIs. It is not compatible with any native APIs. It+-- does not own a reference to the underlying memory resource represented+-- its Vulkan memory object, and will therefore become invalid when all+-- Vulkan memory objects associated with it are destroyed.+pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = ExternalMemoryHandleTypeFlagBits 0x00000004+-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT' specifies an NT handle+-- returned by @IDXGIResource1@::@CreateSharedHandle@ referring to a+-- Direct3D 10 or 11 texture resource. It owns a reference to the memory+-- used by the Direct3D resource.+pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = ExternalMemoryHandleTypeFlagBits 0x00000008+-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT' specifies a global+-- share handle returned by @IDXGIResource@::@GetSharedHandle@ referring to+-- a Direct3D 10 or 11 texture resource. It does not own a reference to the+-- underlying Direct3D resource, and will therefore become invalid when all+-- Vulkan memory objects and Direct3D resources associated with it are+-- destroyed.+pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = ExternalMemoryHandleTypeFlagBits 0x00000010+-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT' specifies an NT handle+-- returned by @ID3D12Device@::@CreateSharedHandle@ referring to a Direct3D+-- 12 heap resource. It owns a reference to the resources used by the+-- Direct3D heap.+pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = ExternalMemoryHandleTypeFlagBits 0x00000020+-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT' specifies an NT handle+-- returned by @ID3D12Device@::@CreateSharedHandle@ referring to a Direct3D+-- 12 committed resource. It owns a reference to the memory used by the+-- Direct3D resource.+pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = ExternalMemoryHandleTypeFlagBits 0x00000040+-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT'+-- specifies a host pointer to /host mapped foreign memory/. It does not+-- own a reference to the underlying memory resource, and will therefore+-- become invalid if the foreign memory is unmapped or otherwise becomes no+-- longer available.+pattern EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = ExternalMemoryHandleTypeFlagBits 0x00000100+-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT' specifies a host+-- pointer returned by a host memory allocation command. It does not own a+-- reference to the underlying memory resource, and will therefore become+-- invalid if the host memory is freed.+pattern EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = ExternalMemoryHandleTypeFlagBits 0x00000080+-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'+-- specifies an 'Graphics.Vulkan.Extensions.WSITypes.AHardwareBuffer'+-- object defined by the Android NDK. See+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer Android Hardware Buffers>+-- for more details of this handle type.+pattern EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = ExternalMemoryHandleTypeFlagBits 0x00000400+-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT' is a file descriptor for a+-- Linux dma_buf. It owns a reference to the underlying memory resource+-- represented by its Vulkan memory object.+pattern EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = ExternalMemoryHandleTypeFlagBits 0x00000200++type ExternalMemoryHandleTypeFlags = ExternalMemoryHandleTypeFlagBits++instance Show ExternalMemoryHandleTypeFlagBits where+ showsPrec p = \case+ EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"+ EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"+ EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"+ EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"+ EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"+ EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"+ EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"+ EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT"+ EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT"+ EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID"+ EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT"+ ExternalMemoryHandleTypeFlagBits x -> showParen (p >= 11) (showString "ExternalMemoryHandleTypeFlagBits 0x" . showHex x)++instance Read ExternalMemoryHandleTypeFlagBits where+ readPrec = parens (choose [("EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT", pure EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT)+ , ("EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT", pure EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT)+ , ("EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT", pure EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT)+ , ("EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT", pure EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT)+ , ("EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT", pure EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT)+ , ("EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT", pure EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT)+ , ("EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT", pure EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT)+ , ("EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT", pure EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT)+ , ("EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT", pure EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT)+ , ("EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID", pure EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID)+ , ("EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT", pure EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT)]+ ++++ prec 10 (do+ expectP (Ident "ExternalMemoryHandleTypeFlagBits")+ v <- step readPrec+ pure (ExternalMemoryHandleTypeFlagBits v)))+
+ src/Graphics/Vulkan/Core11/Enums/ExternalMemoryHandleTypeFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits ( ExternalMemoryHandleTypeFlagBits+ , ExternalMemoryHandleTypeFlags+ ) where++++data ExternalMemoryHandleTypeFlagBits++type ExternalMemoryHandleTypeFlags = ExternalMemoryHandleTypeFlagBits+
+ src/Graphics/Vulkan/Core11/Enums/ExternalSemaphoreFeatureFlagBits.hs view
@@ -0,0 +1,56 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits ( ExternalSemaphoreFeatureFlagBits( EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT+ , EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT+ , ..+ )+ , ExternalSemaphoreFeatureFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkExternalSemaphoreFeatureFlagBits - Bitfield describing features of an+-- external semaphore handle type+--+-- = See Also+--+-- 'ExternalSemaphoreFeatureFlags'+newtype ExternalSemaphoreFeatureFlagBits = ExternalSemaphoreFeatureFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT' specifies that handles of+-- this type /can/ be exported from Vulkan semaphore objects.+pattern EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = ExternalSemaphoreFeatureFlagBits 0x00000001+-- | 'EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT' specifies that handles of+-- this type /can/ be imported as Vulkan semaphore objects.+pattern EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = ExternalSemaphoreFeatureFlagBits 0x00000002++type ExternalSemaphoreFeatureFlags = ExternalSemaphoreFeatureFlagBits++instance Show ExternalSemaphoreFeatureFlagBits where+ showsPrec p = \case+ EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT -> showString "EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"+ EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT -> showString "EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"+ ExternalSemaphoreFeatureFlagBits x -> showParen (p >= 11) (showString "ExternalSemaphoreFeatureFlagBits 0x" . showHex x)++instance Read ExternalSemaphoreFeatureFlagBits where+ readPrec = parens (choose [("EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT", pure EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT)+ , ("EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT", pure EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT)]+ ++++ prec 10 (do+ expectP (Ident "ExternalSemaphoreFeatureFlagBits")+ v <- step readPrec+ pure (ExternalSemaphoreFeatureFlagBits v)))+
+ src/Graphics/Vulkan/Core11/Enums/ExternalSemaphoreFeatureFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits ( ExternalSemaphoreFeatureFlagBits+ , ExternalSemaphoreFeatureFlags+ ) where++++data ExternalSemaphoreFeatureFlagBits++type ExternalSemaphoreFeatureFlags = ExternalSemaphoreFeatureFlagBits+
+ src/Graphics/Vulkan/Core11/Enums/ExternalSemaphoreHandleTypeFlagBits.hs view
@@ -0,0 +1,132 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits ( ExternalSemaphoreHandleTypeFlagBits( EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT+ , EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT+ , EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT+ , EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT+ , EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT+ , ..+ )+ , ExternalSemaphoreHandleTypeFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkExternalSemaphoreHandleTypeFlagBits - Bitmask of valid external+-- semaphore handle types+--+-- = Description+--+-- Note+--+-- Handles of type 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT' generated+-- by the implementation may represent either Linux Sync Files or Android+-- Fences at the implementation’s discretion. Applications /should/ only+-- use operations defined for both types of file descriptors, unless they+-- know via means external to Vulkan the type of the file descriptor, or+-- are prepared to deal with the system-defined operation failures+-- resulting from using the wrong type.+--+-- Some external semaphore handle types can only be shared within the same+-- underlying physical device and\/or the same driver version, as defined+-- in the following table:+--+-- +-------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | Handle type | 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties'::@driverUUID@ | 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties'::@deviceUUID@ |+-- +-------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT' | Must match | Must match |+-- +-------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT' | Must match | Must match |+-- +-------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT' | Must match | Must match |+-- +-------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT' | Must match | Must match |+-- +-------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++-- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT' | No restriction | No restriction |+-- +-------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------++--+-- External semaphore handle types compatibility+--+-- = See Also+--+-- 'ExternalSemaphoreHandleTypeFlags',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.ImportSemaphoreFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.ImportSemaphoreWin32HandleInfoKHR',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.PhysicalDeviceExternalSemaphoreInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.SemaphoreGetFdInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.SemaphoreGetWin32HandleInfoKHR'+newtype ExternalSemaphoreHandleTypeFlagBits = ExternalSemaphoreHandleTypeFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT' specifies a POSIX file+-- descriptor handle that has only limited valid usage outside of Vulkan+-- and other compatible APIs. It /must/ be compatible with the POSIX system+-- calls @dup@, @dup2@, @close@, and the non-standard system call @dup3@.+-- Additionally, it /must/ be transportable over a socket using an+-- @SCM_RIGHTS@ control message. It owns a reference to the underlying+-- synchronization primitive represented by its Vulkan semaphore object.+pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = ExternalSemaphoreHandleTypeFlagBits 0x00000001+-- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT' specifies an NT handle+-- that has only limited valid usage outside of Vulkan and other compatible+-- APIs. It /must/ be compatible with the functions @DuplicateHandle@,+-- @CloseHandle@, @CompareObjectHandles@, @GetHandleInformation@, and+-- @SetHandleInformation@. It owns a reference to the underlying+-- synchronization primitive represented by its Vulkan semaphore object.+pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = ExternalSemaphoreHandleTypeFlagBits 0x00000002+-- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT' specifies a global+-- share handle that has only limited valid usage outside of Vulkan and+-- other compatible APIs. It is not compatible with any native APIs. It+-- does not own a reference to the underlying synchronization primitive+-- represented its Vulkan semaphore object, and will therefore become+-- invalid when all Vulkan semaphore objects associated with it are+-- destroyed.+pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = ExternalSemaphoreHandleTypeFlagBits 0x00000004+-- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT' specifies an NT handle+-- returned by @ID3D12Device@::@CreateSharedHandle@ referring to a Direct3D+-- 12 fence. It owns a reference to the underlying synchronization+-- primitive associated with the Direct3D fence.+pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = ExternalSemaphoreHandleTypeFlagBits 0x00000008+-- | 'EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT' specifies a POSIX file+-- descriptor handle to a Linux Sync File or Android Fence object. It can+-- be used with any native API accepting a valid sync file or fence as+-- input. It owns a reference to the underlying synchronization primitive+-- associated with the file descriptor. Implementations which support+-- importing this handle type /must/ accept any type of sync or fence FD+-- supported by the native system they are running on.+pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = ExternalSemaphoreHandleTypeFlagBits 0x00000010++type ExternalSemaphoreHandleTypeFlags = ExternalSemaphoreHandleTypeFlagBits++instance Show ExternalSemaphoreHandleTypeFlagBits where+ showsPrec p = \case+ EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT -> showString "EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"+ EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT -> showString "EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"+ EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT -> showString "EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"+ EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT -> showString "EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"+ EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT -> showString "EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"+ ExternalSemaphoreHandleTypeFlagBits x -> showParen (p >= 11) (showString "ExternalSemaphoreHandleTypeFlagBits 0x" . showHex x)++instance Read ExternalSemaphoreHandleTypeFlagBits where+ readPrec = parens (choose [("EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT", pure EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT)+ , ("EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT", pure EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT)+ , ("EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT", pure EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT)+ , ("EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT", pure EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT)+ , ("EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT", pure EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT)]+ ++++ prec 10 (do+ expectP (Ident "ExternalSemaphoreHandleTypeFlagBits")+ v <- step readPrec+ pure (ExternalSemaphoreHandleTypeFlagBits v)))+
+ src/Graphics/Vulkan/Core11/Enums/ExternalSemaphoreHandleTypeFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits ( ExternalSemaphoreHandleTypeFlagBits+ , ExternalSemaphoreHandleTypeFlags+ ) where++++data ExternalSemaphoreHandleTypeFlagBits++type ExternalSemaphoreHandleTypeFlags = ExternalSemaphoreHandleTypeFlagBits+
+ src/Graphics/Vulkan/Core11/Enums/FenceImportFlagBits.hs view
@@ -0,0 +1,52 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.FenceImportFlagBits ( FenceImportFlagBits( FENCE_IMPORT_TEMPORARY_BIT+ , ..+ )+ , FenceImportFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkFenceImportFlagBits - Bitmask specifying additional parameters of+-- fence payload import+--+-- = See Also+--+-- 'FenceImportFlags'+newtype FenceImportFlagBits = FenceImportFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'FENCE_IMPORT_TEMPORARY_BIT' specifies that the fence payload will be+-- imported only temporarily, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence Payloads>,+-- regardless of the permanence of @handleType@.+pattern FENCE_IMPORT_TEMPORARY_BIT = FenceImportFlagBits 0x00000001++type FenceImportFlags = FenceImportFlagBits++instance Show FenceImportFlagBits where+ showsPrec p = \case+ FENCE_IMPORT_TEMPORARY_BIT -> showString "FENCE_IMPORT_TEMPORARY_BIT"+ FenceImportFlagBits x -> showParen (p >= 11) (showString "FenceImportFlagBits 0x" . showHex x)++instance Read FenceImportFlagBits where+ readPrec = parens (choose [("FENCE_IMPORT_TEMPORARY_BIT", pure FENCE_IMPORT_TEMPORARY_BIT)]+ ++++ prec 10 (do+ expectP (Ident "FenceImportFlagBits")+ v <- step readPrec+ pure (FenceImportFlagBits v)))+
+ src/Graphics/Vulkan/Core11/Enums/FenceImportFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.FenceImportFlagBits ( FenceImportFlagBits+ , FenceImportFlags+ ) where++++data FenceImportFlagBits++type FenceImportFlags = FenceImportFlagBits+
+ src/Graphics/Vulkan/Core11/Enums/MemoryAllocateFlagBits.hs view
@@ -0,0 +1,70 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits ( MemoryAllocateFlagBits( MEMORY_ALLOCATE_DEVICE_MASK_BIT+ , MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT+ , MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT+ , ..+ )+ , MemoryAllocateFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkMemoryAllocateFlagBits - Bitmask specifying flags for a device memory+-- allocation+--+-- = See Also+--+-- 'MemoryAllocateFlags'+newtype MemoryAllocateFlagBits = MemoryAllocateFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'MEMORY_ALLOCATE_DEVICE_MASK_BIT' specifies that memory will be+-- allocated for the devices in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.MemoryAllocateFlagsInfo'::@deviceMask@.+pattern MEMORY_ALLOCATE_DEVICE_MASK_BIT = MemoryAllocateFlagBits 0x00000001+-- | 'MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT' specifies that the+-- memory’s address /can/ be saved and reused on a subsequent run (e.g. for+-- trace capture and replay), see+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferOpaqueCaptureAddressCreateInfo'+-- for more detail.+pattern MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = MemoryAllocateFlagBits 0x00000004+-- | 'MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT' specifies that the memory /can/ be+-- attached to a buffer object created with the+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT'+-- bit set in @usage@, and that the memory handle /can/ be used to retrieve+-- an opaque address via+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getDeviceMemoryOpaqueCaptureAddress'.+pattern MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = MemoryAllocateFlagBits 0x00000002++type MemoryAllocateFlags = MemoryAllocateFlagBits++instance Show MemoryAllocateFlagBits where+ showsPrec p = \case+ MEMORY_ALLOCATE_DEVICE_MASK_BIT -> showString "MEMORY_ALLOCATE_DEVICE_MASK_BIT"+ MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT -> showString "MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"+ MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT -> showString "MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT"+ MemoryAllocateFlagBits x -> showParen (p >= 11) (showString "MemoryAllocateFlagBits 0x" . showHex x)++instance Read MemoryAllocateFlagBits where+ readPrec = parens (choose [("MEMORY_ALLOCATE_DEVICE_MASK_BIT", pure MEMORY_ALLOCATE_DEVICE_MASK_BIT)+ , ("MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT", pure MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT)+ , ("MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT", pure MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT)]+ ++++ prec 10 (do+ expectP (Ident "MemoryAllocateFlagBits")+ v <- step readPrec+ pure (MemoryAllocateFlagBits v)))+
+ src/Graphics/Vulkan/Core11/Enums/MemoryAllocateFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits ( MemoryAllocateFlagBits+ , MemoryAllocateFlags+ ) where++++data MemoryAllocateFlagBits++type MemoryAllocateFlags = MemoryAllocateFlagBits+
+ src/Graphics/Vulkan/Core11/Enums/PeerMemoryFeatureFlagBits.hs view
@@ -0,0 +1,98 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits ( PeerMemoryFeatureFlagBits( PEER_MEMORY_FEATURE_COPY_SRC_BIT+ , PEER_MEMORY_FEATURE_COPY_DST_BIT+ , PEER_MEMORY_FEATURE_GENERIC_SRC_BIT+ , PEER_MEMORY_FEATURE_GENERIC_DST_BIT+ , ..+ )+ , PeerMemoryFeatureFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkPeerMemoryFeatureFlagBits - Bitmask specifying supported peer memory+-- features+--+-- = Description+--+-- Note+--+-- The peer memory features of a memory heap also apply to any accesses+-- that /may/ be performed during+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transitions>.+--+-- 'PEER_MEMORY_FEATURE_COPY_DST_BIT' /must/ be supported for all host+-- local heaps and for at least one device local heap.+--+-- If a device does not support a peer memory feature, it is still valid to+-- use a resource that includes both local and peer memory bindings with+-- the corresponding access type as long as only the local bindings are+-- actually accessed. For example, an application doing split-frame+-- rendering would use framebuffer attachments that include both local and+-- peer memory bindings, but would scissor the rendering to only update+-- local memory.+--+-- = See Also+--+-- 'PeerMemoryFeatureFlags'+newtype PeerMemoryFeatureFlagBits = PeerMemoryFeatureFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'PEER_MEMORY_FEATURE_COPY_SRC_BIT' specifies that the memory /can/ be+-- accessed as the source of a+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyBuffer',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyImage',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage', or+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer'+-- command.+pattern PEER_MEMORY_FEATURE_COPY_SRC_BIT = PeerMemoryFeatureFlagBits 0x00000001+-- | 'PEER_MEMORY_FEATURE_COPY_DST_BIT' specifies that the memory /can/ be+-- accessed as the destination of a+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyBuffer',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyImage',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage', or+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer'+-- command.+pattern PEER_MEMORY_FEATURE_COPY_DST_BIT = PeerMemoryFeatureFlagBits 0x00000002+-- | 'PEER_MEMORY_FEATURE_GENERIC_SRC_BIT' specifies that the memory /can/ be+-- read as any memory access type.+pattern PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = PeerMemoryFeatureFlagBits 0x00000004+-- | 'PEER_MEMORY_FEATURE_GENERIC_DST_BIT' specifies that the memory /can/ be+-- written as any memory access type. Shader atomics are considered to be+-- writes.+pattern PEER_MEMORY_FEATURE_GENERIC_DST_BIT = PeerMemoryFeatureFlagBits 0x00000008++type PeerMemoryFeatureFlags = PeerMemoryFeatureFlagBits++instance Show PeerMemoryFeatureFlagBits where+ showsPrec p = \case+ PEER_MEMORY_FEATURE_COPY_SRC_BIT -> showString "PEER_MEMORY_FEATURE_COPY_SRC_BIT"+ PEER_MEMORY_FEATURE_COPY_DST_BIT -> showString "PEER_MEMORY_FEATURE_COPY_DST_BIT"+ PEER_MEMORY_FEATURE_GENERIC_SRC_BIT -> showString "PEER_MEMORY_FEATURE_GENERIC_SRC_BIT"+ PEER_MEMORY_FEATURE_GENERIC_DST_BIT -> showString "PEER_MEMORY_FEATURE_GENERIC_DST_BIT"+ PeerMemoryFeatureFlagBits x -> showParen (p >= 11) (showString "PeerMemoryFeatureFlagBits 0x" . showHex x)++instance Read PeerMemoryFeatureFlagBits where+ readPrec = parens (choose [("PEER_MEMORY_FEATURE_COPY_SRC_BIT", pure PEER_MEMORY_FEATURE_COPY_SRC_BIT)+ , ("PEER_MEMORY_FEATURE_COPY_DST_BIT", pure PEER_MEMORY_FEATURE_COPY_DST_BIT)+ , ("PEER_MEMORY_FEATURE_GENERIC_SRC_BIT", pure PEER_MEMORY_FEATURE_GENERIC_SRC_BIT)+ , ("PEER_MEMORY_FEATURE_GENERIC_DST_BIT", pure PEER_MEMORY_FEATURE_GENERIC_DST_BIT)]+ ++++ prec 10 (do+ expectP (Ident "PeerMemoryFeatureFlagBits")+ v <- step readPrec+ pure (PeerMemoryFeatureFlagBits v)))+
+ src/Graphics/Vulkan/Core11/Enums/PeerMemoryFeatureFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits ( PeerMemoryFeatureFlagBits+ , PeerMemoryFeatureFlags+ ) where++++data PeerMemoryFeatureFlagBits++type PeerMemoryFeatureFlags = PeerMemoryFeatureFlagBits+
+ src/Graphics/Vulkan/Core11/Enums/PointClippingBehavior.hs view
@@ -0,0 +1,55 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.PointClippingBehavior (PointClippingBehavior( POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES+ , POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkPointClippingBehavior - Enum specifying the point clipping behavior+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PhysicalDevicePointClippingProperties',+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan11Properties'+newtype PointClippingBehavior = PointClippingBehavior Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES' specifies that the primitive+-- is discarded if the vertex lies outside any clip plane, including the+-- planes bounding the view volume.+pattern POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = PointClippingBehavior 0+-- | 'POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY' specifies that the+-- primitive is discarded only if the vertex lies outside any user clip+-- plane.+pattern POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = PointClippingBehavior 1+{-# complete POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES,+ POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY :: PointClippingBehavior #-}++instance Show PointClippingBehavior where+ showsPrec p = \case+ POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES -> showString "POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES"+ POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY -> showString "POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY"+ PointClippingBehavior x -> showParen (p >= 11) (showString "PointClippingBehavior " . showsPrec 11 x)++instance Read PointClippingBehavior where+ readPrec = parens (choose [("POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES", pure POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES)+ , ("POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY", pure POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY)]+ ++++ prec 10 (do+ expectP (Ident "PointClippingBehavior")+ v <- step readPrec+ pure (PointClippingBehavior v)))+
+ src/Graphics/Vulkan/Core11/Enums/PointClippingBehavior.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.PointClippingBehavior (PointClippingBehavior) where++++data PointClippingBehavior+
+ src/Graphics/Vulkan/Core11/Enums/SamplerYcbcrModelConversion.hs view
@@ -0,0 +1,130 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.SamplerYcbcrModelConversion (SamplerYcbcrModelConversion( SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY+ , SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY+ , SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709+ , SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601+ , SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkSamplerYcbcrModelConversion - Color model component of a color space+--+-- = Description+--+-- - 'SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY' specifies that the+-- input values to the conversion are unmodified.+--+-- - 'SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY' specifies no model+-- conversion but the inputs are range expanded as for Y′CBCR.+--+-- - 'SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709' specifies the color model+-- conversion from Y′CBCR to R′G′B′ defined in BT.709 and described in+-- the “BT.709 Y’CBCR conversion” section of the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#data-format Khronos Data Format Specification>.+--+-- - 'SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601' specifies the color model+-- conversion from Y′CBCR to R′G′B′ defined in BT.601 and described in+-- the “BT.601 Y’CBCR conversion” section of the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#data-format Khronos Data Format Specification>.+--+-- - 'SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020' specifies the color+-- model conversion from Y′CBCR to R′G′B′ defined in BT.2020 and+-- described in the “BT.2020 Y’CBCR conversion” section of the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#data-format Khronos Data Format Specification>.+--+-- In the @VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_*@ color models, for the+-- input to the sampler Y′CBCR range expansion and model conversion:+--+-- - the Y (Y′ luma) channel corresponds to the G channel of an RGB+-- image.+--+-- - the CB (CB or “U” blue color difference) channel corresponds to the+-- B channel of an RGB image.+--+-- - the CR (CR or “V” red color difference) channel corresponds to the R+-- channel of an RGB image.+--+-- - the alpha channel, if present, is not modified by color model+-- conversion.+--+-- These rules reflect the mapping of channels after the channel swizzle+-- operation (controlled by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'::@components@).+--+-- Note+--+-- For example, an “YUVA” 32-bit format comprising four 8-bit channels can+-- be implemented as+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R8G8B8A8_UNORM' with a+-- component mapping:+--+-- - @components.a@ =+-- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_IDENTITY'+--+-- - @components.r@ =+-- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_B'+--+-- - @components.g@ =+-- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_R'+--+-- - @components.b@ =+-- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_G'+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'+newtype SamplerYcbcrModelConversion = SamplerYcbcrModelConversion Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- No documentation found for Nested "VkSamplerYcbcrModelConversion" "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY"+pattern SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = SamplerYcbcrModelConversion 0+-- No documentation found for Nested "VkSamplerYcbcrModelConversion" "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY"+pattern SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = SamplerYcbcrModelConversion 1+-- No documentation found for Nested "VkSamplerYcbcrModelConversion" "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709"+pattern SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = SamplerYcbcrModelConversion 2+-- No documentation found for Nested "VkSamplerYcbcrModelConversion" "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601"+pattern SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = SamplerYcbcrModelConversion 3+-- No documentation found for Nested "VkSamplerYcbcrModelConversion" "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020"+pattern SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = SamplerYcbcrModelConversion 4+{-# complete SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY,+ SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY,+ SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709,+ SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601,+ SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 :: SamplerYcbcrModelConversion #-}++instance Show SamplerYcbcrModelConversion where+ showsPrec p = \case+ SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY -> showString "SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY"+ SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY -> showString "SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY"+ SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 -> showString "SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709"+ SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 -> showString "SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601"+ SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 -> showString "SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020"+ SamplerYcbcrModelConversion x -> showParen (p >= 11) (showString "SamplerYcbcrModelConversion " . showsPrec 11 x)++instance Read SamplerYcbcrModelConversion where+ readPrec = parens (choose [("SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY", pure SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY)+ , ("SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY", pure SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY)+ , ("SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709", pure SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709)+ , ("SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601", pure SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601)+ , ("SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020", pure SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020)]+ ++++ prec 10 (do+ expectP (Ident "SamplerYcbcrModelConversion")+ v <- step readPrec+ pure (SamplerYcbcrModelConversion v)))+
+ src/Graphics/Vulkan/Core11/Enums/SamplerYcbcrModelConversion.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.SamplerYcbcrModelConversion (SamplerYcbcrModelConversion) where++++data SamplerYcbcrModelConversion+
+ src/Graphics/Vulkan/Core11/Enums/SamplerYcbcrRange.hs view
@@ -0,0 +1,70 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.SamplerYcbcrRange (SamplerYcbcrRange( SAMPLER_YCBCR_RANGE_ITU_FULL+ , SAMPLER_YCBCR_RANGE_ITU_NARROW+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkSamplerYcbcrRange - Range of encoded values in a color space+--+-- = Description+--+-- The formulae for these conversions is described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion-rangeexpand Sampler Y′CBCR Range Expansion>+-- section of the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures Image Operations>+-- chapter.+--+-- No range modification takes place if @ycbcrModel@ is+-- 'Graphics.Vulkan.Core11.Enums.SamplerYcbcrModelConversion.SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY';+-- the @ycbcrRange@ field of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'+-- is ignored in this case.+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferFormatPropertiesANDROID',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'+newtype SamplerYcbcrRange = SamplerYcbcrRange Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'SAMPLER_YCBCR_RANGE_ITU_FULL' specifies that the full range of the+-- encoded values are valid and interpreted according to the ITU “full+-- range” quantization rules.+pattern SAMPLER_YCBCR_RANGE_ITU_FULL = SamplerYcbcrRange 0+-- | 'SAMPLER_YCBCR_RANGE_ITU_NARROW' specifies that headroom and foot room+-- are reserved in the numerical range of encoded values, and the remaining+-- values are expanded according to the ITU “narrow range” quantization+-- rules.+pattern SAMPLER_YCBCR_RANGE_ITU_NARROW = SamplerYcbcrRange 1+{-# complete SAMPLER_YCBCR_RANGE_ITU_FULL,+ SAMPLER_YCBCR_RANGE_ITU_NARROW :: SamplerYcbcrRange #-}++instance Show SamplerYcbcrRange where+ showsPrec p = \case+ SAMPLER_YCBCR_RANGE_ITU_FULL -> showString "SAMPLER_YCBCR_RANGE_ITU_FULL"+ SAMPLER_YCBCR_RANGE_ITU_NARROW -> showString "SAMPLER_YCBCR_RANGE_ITU_NARROW"+ SamplerYcbcrRange x -> showParen (p >= 11) (showString "SamplerYcbcrRange " . showsPrec 11 x)++instance Read SamplerYcbcrRange where+ readPrec = parens (choose [("SAMPLER_YCBCR_RANGE_ITU_FULL", pure SAMPLER_YCBCR_RANGE_ITU_FULL)+ , ("SAMPLER_YCBCR_RANGE_ITU_NARROW", pure SAMPLER_YCBCR_RANGE_ITU_NARROW)]+ ++++ prec 10 (do+ expectP (Ident "SamplerYcbcrRange")+ v <- step readPrec+ pure (SamplerYcbcrRange v)))+
+ src/Graphics/Vulkan/Core11/Enums/SamplerYcbcrRange.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.SamplerYcbcrRange (SamplerYcbcrRange) where++++data SamplerYcbcrRange+
+ src/Graphics/Vulkan/Core11/Enums/SemaphoreImportFlagBits.hs view
@@ -0,0 +1,56 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits ( SemaphoreImportFlagBits( SEMAPHORE_IMPORT_TEMPORARY_BIT+ , ..+ )+ , SemaphoreImportFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkSemaphoreImportFlagBits - Bitmask specifying additional parameters of+-- semaphore payload import+--+-- = Description+--+-- These bits have the following meanings:+--+-- = See Also+--+-- 'SemaphoreImportFlags'+newtype SemaphoreImportFlagBits = SemaphoreImportFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'SEMAPHORE_IMPORT_TEMPORARY_BIT' specifies that the semaphore payload+-- will be imported only temporarily, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>,+-- regardless of the permanence of @handleType@.+pattern SEMAPHORE_IMPORT_TEMPORARY_BIT = SemaphoreImportFlagBits 0x00000001++type SemaphoreImportFlags = SemaphoreImportFlagBits++instance Show SemaphoreImportFlagBits where+ showsPrec p = \case+ SEMAPHORE_IMPORT_TEMPORARY_BIT -> showString "SEMAPHORE_IMPORT_TEMPORARY_BIT"+ SemaphoreImportFlagBits x -> showParen (p >= 11) (showString "SemaphoreImportFlagBits 0x" . showHex x)++instance Read SemaphoreImportFlagBits where+ readPrec = parens (choose [("SEMAPHORE_IMPORT_TEMPORARY_BIT", pure SEMAPHORE_IMPORT_TEMPORARY_BIT)]+ ++++ prec 10 (do+ expectP (Ident "SemaphoreImportFlagBits")+ v <- step readPrec+ pure (SemaphoreImportFlagBits v)))+
+ src/Graphics/Vulkan/Core11/Enums/SemaphoreImportFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits ( SemaphoreImportFlagBits+ , SemaphoreImportFlags+ ) where++++data SemaphoreImportFlagBits++type SemaphoreImportFlags = SemaphoreImportFlagBits+
+ src/Graphics/Vulkan/Core11/Enums/SubgroupFeatureFlagBits.hs view
@@ -0,0 +1,101 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.SubgroupFeatureFlagBits ( SubgroupFeatureFlagBits( SUBGROUP_FEATURE_BASIC_BIT+ , SUBGROUP_FEATURE_VOTE_BIT+ , SUBGROUP_FEATURE_ARITHMETIC_BIT+ , SUBGROUP_FEATURE_BALLOT_BIT+ , SUBGROUP_FEATURE_SHUFFLE_BIT+ , SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT+ , SUBGROUP_FEATURE_CLUSTERED_BIT+ , SUBGROUP_FEATURE_QUAD_BIT+ , SUBGROUP_FEATURE_PARTITIONED_BIT_NV+ , ..+ )+ , SubgroupFeatureFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkSubgroupFeatureFlagBits - Enum describing what group operations are+-- supported with subgroup scope+--+-- = See Also+--+-- 'SubgroupFeatureFlags'+newtype SubgroupFeatureFlagBits = SubgroupFeatureFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'SUBGROUP_FEATURE_BASIC_BIT' specifies the device will accept SPIR-V+-- shader modules containing the @GroupNonUniform@ capability.+pattern SUBGROUP_FEATURE_BASIC_BIT = SubgroupFeatureFlagBits 0x00000001+-- | 'SUBGROUP_FEATURE_VOTE_BIT' specifies the device will accept SPIR-V+-- shader modules containing the @GroupNonUniformVote@ capability.+pattern SUBGROUP_FEATURE_VOTE_BIT = SubgroupFeatureFlagBits 0x00000002+-- | 'SUBGROUP_FEATURE_ARITHMETIC_BIT' specifies the device will accept+-- SPIR-V shader modules containing the @GroupNonUniformArithmetic@+-- capability.+pattern SUBGROUP_FEATURE_ARITHMETIC_BIT = SubgroupFeatureFlagBits 0x00000004+-- | 'SUBGROUP_FEATURE_BALLOT_BIT' specifies the device will accept SPIR-V+-- shader modules containing the @GroupNonUniformBallot@ capability.+pattern SUBGROUP_FEATURE_BALLOT_BIT = SubgroupFeatureFlagBits 0x00000008+-- | 'SUBGROUP_FEATURE_SHUFFLE_BIT' specifies the device will accept SPIR-V+-- shader modules containing the @GroupNonUniformShuffle@ capability.+pattern SUBGROUP_FEATURE_SHUFFLE_BIT = SubgroupFeatureFlagBits 0x00000010+-- | 'SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT' specifies the device will accept+-- SPIR-V shader modules containing the @GroupNonUniformShuffleRelative@+-- capability.+pattern SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = SubgroupFeatureFlagBits 0x00000020+-- | 'SUBGROUP_FEATURE_CLUSTERED_BIT' specifies the device will accept SPIR-V+-- shader modules containing the @GroupNonUniformClustered@ capability.+pattern SUBGROUP_FEATURE_CLUSTERED_BIT = SubgroupFeatureFlagBits 0x00000040+-- | 'SUBGROUP_FEATURE_QUAD_BIT' specifies the device will accept SPIR-V+-- shader modules containing the @GroupNonUniformQuad@ capability.+pattern SUBGROUP_FEATURE_QUAD_BIT = SubgroupFeatureFlagBits 0x00000080+-- | 'SUBGROUP_FEATURE_PARTITIONED_BIT_NV' specifies the device will accept+-- SPIR-V shader modules containing the @GroupNonUniformPartitionedNV@+-- capability.+pattern SUBGROUP_FEATURE_PARTITIONED_BIT_NV = SubgroupFeatureFlagBits 0x00000100++type SubgroupFeatureFlags = SubgroupFeatureFlagBits++instance Show SubgroupFeatureFlagBits where+ showsPrec p = \case+ SUBGROUP_FEATURE_BASIC_BIT -> showString "SUBGROUP_FEATURE_BASIC_BIT"+ SUBGROUP_FEATURE_VOTE_BIT -> showString "SUBGROUP_FEATURE_VOTE_BIT"+ SUBGROUP_FEATURE_ARITHMETIC_BIT -> showString "SUBGROUP_FEATURE_ARITHMETIC_BIT"+ SUBGROUP_FEATURE_BALLOT_BIT -> showString "SUBGROUP_FEATURE_BALLOT_BIT"+ SUBGROUP_FEATURE_SHUFFLE_BIT -> showString "SUBGROUP_FEATURE_SHUFFLE_BIT"+ SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT -> showString "SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"+ SUBGROUP_FEATURE_CLUSTERED_BIT -> showString "SUBGROUP_FEATURE_CLUSTERED_BIT"+ SUBGROUP_FEATURE_QUAD_BIT -> showString "SUBGROUP_FEATURE_QUAD_BIT"+ SUBGROUP_FEATURE_PARTITIONED_BIT_NV -> showString "SUBGROUP_FEATURE_PARTITIONED_BIT_NV"+ SubgroupFeatureFlagBits x -> showParen (p >= 11) (showString "SubgroupFeatureFlagBits 0x" . showHex x)++instance Read SubgroupFeatureFlagBits where+ readPrec = parens (choose [("SUBGROUP_FEATURE_BASIC_BIT", pure SUBGROUP_FEATURE_BASIC_BIT)+ , ("SUBGROUP_FEATURE_VOTE_BIT", pure SUBGROUP_FEATURE_VOTE_BIT)+ , ("SUBGROUP_FEATURE_ARITHMETIC_BIT", pure SUBGROUP_FEATURE_ARITHMETIC_BIT)+ , ("SUBGROUP_FEATURE_BALLOT_BIT", pure SUBGROUP_FEATURE_BALLOT_BIT)+ , ("SUBGROUP_FEATURE_SHUFFLE_BIT", pure SUBGROUP_FEATURE_SHUFFLE_BIT)+ , ("SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT", pure SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT)+ , ("SUBGROUP_FEATURE_CLUSTERED_BIT", pure SUBGROUP_FEATURE_CLUSTERED_BIT)+ , ("SUBGROUP_FEATURE_QUAD_BIT", pure SUBGROUP_FEATURE_QUAD_BIT)+ , ("SUBGROUP_FEATURE_PARTITIONED_BIT_NV", pure SUBGROUP_FEATURE_PARTITIONED_BIT_NV)]+ ++++ prec 10 (do+ expectP (Ident "SubgroupFeatureFlagBits")+ v <- step readPrec+ pure (SubgroupFeatureFlagBits v)))+
+ src/Graphics/Vulkan/Core11/Enums/TessellationDomainOrigin.hs view
@@ -0,0 +1,60 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.TessellationDomainOrigin (TessellationDomainOrigin( TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT+ , TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkTessellationDomainOrigin - Enum describing tessellation domain origin+--+-- = Description+--+-- This enum affects how the @VertexOrderCw@ and @VertexOrderCcw@+-- tessellation execution modes are interpreted, since the winding is+-- defined relative to the orientation of the domain.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PipelineTessellationDomainOriginStateCreateInfo'+newtype TessellationDomainOrigin = TessellationDomainOrigin Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT' specifies that the origin of the+-- domain space is in the upper left corner, as shown in figure+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#img-tessellation-topology-ul>.+pattern TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = TessellationDomainOrigin 0+-- | 'TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT' specifies that the origin of the+-- domain space is in the lower left corner, as shown in figure+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#img-tessellation-topology-ll>.+pattern TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = TessellationDomainOrigin 1+{-# complete TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT,+ TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT :: TessellationDomainOrigin #-}++instance Show TessellationDomainOrigin where+ showsPrec p = \case+ TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT -> showString "TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT"+ TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT -> showString "TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT"+ TessellationDomainOrigin x -> showParen (p >= 11) (showString "TessellationDomainOrigin " . showsPrec 11 x)++instance Read TessellationDomainOrigin where+ readPrec = parens (choose [("TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT", pure TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT)+ , ("TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT", pure TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT)]+ ++++ prec 10 (do+ expectP (Ident "TessellationDomainOrigin")+ v <- step readPrec+ pure (TessellationDomainOrigin v)))+
+ src/Graphics/Vulkan/Core11/Enums/TessellationDomainOrigin.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Enums.TessellationDomainOrigin (TessellationDomainOrigin) where++++data TessellationDomainOrigin+
+ src/Graphics/Vulkan/Core11/Handles.hs view
@@ -0,0 +1,72 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Handles ( DescriptorUpdateTemplate(..)+ , SamplerYcbcrConversion(..)+ , Instance(..)+ , PhysicalDevice(..)+ , Device(..)+ , Queue(..)+ , CommandBuffer(..)+ , DeviceMemory(..)+ , CommandPool(..)+ , Buffer(..)+ , Image(..)+ , PipelineLayout(..)+ , Sampler(..)+ , DescriptorSet(..)+ , DescriptorSetLayout(..)+ ) where++import GHC.Show (showParen)+import Numeric (showHex)+import Foreign.Storable (Storable)+import Data.Word (Word64)+import Graphics.Vulkan.Core10.APIConstants (IsHandle)+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Core10.Handles (Buffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandPool(..))+import Graphics.Vulkan.Core10.Handles (DescriptorSet(..))+import Graphics.Vulkan.Core10.Handles (DescriptorSetLayout(..))+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Core10.Handles (DeviceMemory(..))+import Graphics.Vulkan.Core10.Handles (Image(..))+import Graphics.Vulkan.Core10.Handles (Instance(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PipelineLayout(..))+import Graphics.Vulkan.Core10.Handles (Queue(..))+import Graphics.Vulkan.Core10.Handles (Sampler(..))+-- | VkDescriptorUpdateTemplate - Opaque handle to a descriptor update+-- template+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetWithTemplateKHR',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.createDescriptorUpdateTemplate',+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.createDescriptorUpdateTemplateKHR',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.destroyDescriptorUpdateTemplate',+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.destroyDescriptorUpdateTemplateKHR',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplate',+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplateKHR'+newtype DescriptorUpdateTemplate = DescriptorUpdateTemplate Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show DescriptorUpdateTemplate where+ showsPrec p (DescriptorUpdateTemplate x) = showParen (p >= 11) (showString "DescriptorUpdateTemplate 0x" . showHex x)+++-- | VkSamplerYcbcrConversion - Opaque handle to a device-specific sampler+-- Y′CBCR conversion description+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.createSamplerYcbcrConversion',+-- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.createSamplerYcbcrConversionKHR',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.destroySamplerYcbcrConversion',+-- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.destroySamplerYcbcrConversionKHR'+newtype SamplerYcbcrConversion = SamplerYcbcrConversion Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show SamplerYcbcrConversion where+ showsPrec p (SamplerYcbcrConversion x) = showParen (p >= 11) (showString "SamplerYcbcrConversion 0x" . showHex x)+
+ src/Graphics/Vulkan/Core11/Handles.hs-boot view
@@ -0,0 +1,12 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Handles ( DescriptorUpdateTemplate+ , SamplerYcbcrConversion+ ) where++++data DescriptorUpdateTemplate+++data SamplerYcbcrConversion+
+ src/Graphics/Vulkan/Core11/Originally_Based_On_VK_KHR_protected_memory.hs view
@@ -0,0 +1,376 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory ( getDeviceQueue2+ , ProtectedSubmitInfo(..)+ , PhysicalDeviceProtectedMemoryFeatures(..)+ , PhysicalDeviceProtectedMemoryProperties(..)+ , DeviceQueueInfo2(..)+ , StructureType(..)+ , QueueFlagBits(..)+ , QueueFlags+ , DeviceQueueCreateFlagBits(..)+ , DeviceQueueCreateFlags+ , MemoryPropertyFlagBits(..)+ , MemoryPropertyFlags+ , BufferCreateFlagBits(..)+ , BufferCreateFlags+ , ImageCreateFlagBits(..)+ , ImageCreateFlags+ , CommandPoolCreateFlagBits(..)+ , CommandPoolCreateFlags+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetDeviceQueue2))+import Graphics.Vulkan.Core10.Enums.DeviceQueueCreateFlagBits (DeviceQueueCreateFlags)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Queue)+import Graphics.Vulkan.Core10.Handles (Queue(Queue))+import Graphics.Vulkan.Core10.Handles (Queue_T)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO))+import Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits (BufferCreateFlagBits(..))+import Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits (BufferCreateFlags)+import Graphics.Vulkan.Core10.Enums.CommandPoolCreateFlagBits (CommandPoolCreateFlagBits(..))+import Graphics.Vulkan.Core10.Enums.CommandPoolCreateFlagBits (CommandPoolCreateFlags)+import Graphics.Vulkan.Core10.Enums.DeviceQueueCreateFlagBits (DeviceQueueCreateFlagBits(..))+import Graphics.Vulkan.Core10.Enums.DeviceQueueCreateFlagBits (DeviceQueueCreateFlags)+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(..))+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)+import Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits (MemoryPropertyFlagBits(..))+import Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits (MemoryPropertyFlags)+import Graphics.Vulkan.Core10.Enums.QueueFlagBits (QueueFlagBits(..))+import Graphics.Vulkan.Core10.Enums.QueueFlagBits (QueueFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetDeviceQueue2+ :: FunPtr (Ptr Device_T -> Ptr DeviceQueueInfo2 -> Ptr (Ptr Queue_T) -> IO ()) -> Ptr Device_T -> Ptr DeviceQueueInfo2 -> Ptr (Ptr Queue_T) -> IO ()++-- | vkGetDeviceQueue2 - Get a queue handle from a device+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the queue.+--+-- - @pQueueInfo@ is a pointer to a 'DeviceQueueInfo2' structure,+-- describing the parameters used to create the device queue.+--+-- - @pQueue@ is a pointer to a 'Graphics.Vulkan.Core10.Handles.Queue'+-- object that will be filled with the handle for the requested queue.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device', 'DeviceQueueInfo2',+-- 'Graphics.Vulkan.Core10.Handles.Queue'+getDeviceQueue2 :: Device -> DeviceQueueInfo2 -> IO (Queue)+getDeviceQueue2 device queueInfo = evalContT $ do+ let cmds = deviceCmds (device :: Device)+ let vkGetDeviceQueue2' = mkVkGetDeviceQueue2 (pVkGetDeviceQueue2 cmds)+ pQueueInfo <- ContT $ withCStruct (queueInfo)+ pPQueue <- ContT $ bracket (callocBytes @(Ptr Queue_T) 8) free+ lift $ vkGetDeviceQueue2' (deviceHandle (device)) pQueueInfo (pPQueue)+ pQueue <- lift $ peek @(Ptr Queue_T) pPQueue+ pure $ (((\h -> Queue h cmds ) pQueue))+++-- | VkProtectedSubmitInfo - Structure indicating whether the submission is+-- protected+--+-- == Valid Usage+--+-- - If the protected memory feature is not enabled, @protectedSubmit@+-- /must/ not be 'Graphics.Vulkan.Core10.BaseType.TRUE'.+--+-- - If @protectedSubmit@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', then+-- each element of the @pCommandBuffers@ array /must/ be a protected+-- command buffer.+--+-- - If @protectedSubmit@ is 'Graphics.Vulkan.Core10.BaseType.FALSE',+-- then each element of the @pCommandBuffers@ array /must/ be an+-- unprotected command buffer.+--+-- - If the 'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@pNext@ chain does+-- not include a 'ProtectedSubmitInfo' structure, then each element of+-- the command buffer of the @pCommandBuffers@ array /must/ be an+-- unprotected command buffer.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ProtectedSubmitInfo = ProtectedSubmitInfo+ { -- | @protectedSubmit@ specifies whether the batch is protected. If+ -- @protectedSubmit@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', the batch+ -- is protected. If @protectedSubmit@ is+ -- 'Graphics.Vulkan.Core10.BaseType.FALSE', the batch is unprotected. If+ -- the 'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@pNext@ chain does not+ -- include this structure, the batch is unprotected.+ protectedSubmit :: Bool }+ deriving (Typeable)+deriving instance Show ProtectedSubmitInfo++instance ToCStruct ProtectedSubmitInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ProtectedSubmitInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (protectedSubmit))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct ProtectedSubmitInfo where+ peekCStruct p = do+ protectedSubmit <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ ProtectedSubmitInfo+ (bool32ToBool protectedSubmit)++instance Storable ProtectedSubmitInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ProtectedSubmitInfo where+ zero = ProtectedSubmitInfo+ zero+++-- | VkPhysicalDeviceProtectedMemoryFeatures - Structure describing protected+-- memory features that can be supported by an implementation+--+-- = Description+--+-- If the 'PhysicalDeviceProtectedMemoryFeatures' structure is included in+-- the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with a value indicating whether the feature is supported.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceProtectedMemoryFeatures = PhysicalDeviceProtectedMemoryFeatures+ { -- | @protectedMemory@ specifies whether protected memory is supported.+ protectedMemory :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceProtectedMemoryFeatures++instance ToCStruct PhysicalDeviceProtectedMemoryFeatures where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceProtectedMemoryFeatures{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (protectedMemory))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceProtectedMemoryFeatures where+ peekCStruct p = do+ protectedMemory <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceProtectedMemoryFeatures+ (bool32ToBool protectedMemory)++instance Storable PhysicalDeviceProtectedMemoryFeatures where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceProtectedMemoryFeatures where+ zero = PhysicalDeviceProtectedMemoryFeatures+ zero+++-- | VkPhysicalDeviceProtectedMemoryProperties - Structure describing+-- protected memory properties that can be supported by an implementation+--+-- = Description+--+-- If the 'PhysicalDeviceProtectedMemoryProperties' structure is included+-- in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with a value indicating the implementation-dependent+-- behavior.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceProtectedMemoryProperties = PhysicalDeviceProtectedMemoryProperties+ { -- | @protectedNoFault@ specifies the behavior of the implementation when+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-protected-access-rules protected memory access rules>+ -- are broken. If @protectedNoFault@ is+ -- 'Graphics.Vulkan.Core10.BaseType.TRUE', breaking those rules will not+ -- result in process termination or device loss.+ protectedNoFault :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceProtectedMemoryProperties++instance ToCStruct PhysicalDeviceProtectedMemoryProperties where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceProtectedMemoryProperties{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (protectedNoFault))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceProtectedMemoryProperties where+ peekCStruct p = do+ protectedNoFault <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceProtectedMemoryProperties+ (bool32ToBool protectedNoFault)++instance Storable PhysicalDeviceProtectedMemoryProperties where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceProtectedMemoryProperties where+ zero = PhysicalDeviceProtectedMemoryProperties+ zero+++-- | VkDeviceQueueInfo2 - Structure specifying the parameters used for device+-- queue creation+--+-- = Description+--+-- The queue returned by 'getDeviceQueue2' /must/ have the same+-- 'Graphics.Vulkan.Core10.BaseType.Flags' value from this structure as+-- that used at device creation time in a+-- 'Graphics.Vulkan.Core10.Device.DeviceQueueCreateInfo' instance. If no+-- matching 'Graphics.Vulkan.Core10.BaseType.Flags' were specified at+-- device creation time then @pQueue@ will return+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DeviceQueueCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getDeviceQueue2'+data DeviceQueueInfo2 = DeviceQueueInfo2+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid combination of+ -- 'Graphics.Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DeviceQueueCreateFlagBits'+ -- values+ flags :: DeviceQueueCreateFlags+ , -- | @queueFamilyIndex@ /must/ be one of the queue family indices specified+ -- when 'Graphics.Vulkan.Core10.Handles.Device' was created, via the+ -- 'Graphics.Vulkan.Core10.Device.DeviceQueueCreateInfo' structure+ queueFamilyIndex :: Word32+ , -- | @queueIndex@ /must/ be less than the number of queues created for the+ -- specified queue family index and+ -- 'Graphics.Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DeviceQueueCreateFlags'+ -- member 'Graphics.Vulkan.Core10.BaseType.Flags' equal to this+ -- 'Graphics.Vulkan.Core10.BaseType.Flags' value when+ -- 'Graphics.Vulkan.Core10.Handles.Device' was created, via the+ -- @queueCount@ member of the+ -- 'Graphics.Vulkan.Core10.Device.DeviceQueueCreateInfo' structure+ queueIndex :: Word32+ }+ deriving (Typeable)+deriving instance Show DeviceQueueInfo2++instance ToCStruct DeviceQueueInfo2 where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DeviceQueueInfo2{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DeviceQueueCreateFlags)) (flags)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (queueFamilyIndex)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (queueIndex)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ f++instance FromCStruct DeviceQueueInfo2 where+ peekCStruct p = do+ flags <- peek @DeviceQueueCreateFlags ((p `plusPtr` 16 :: Ptr DeviceQueueCreateFlags))+ queueFamilyIndex <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ queueIndex <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ pure $ DeviceQueueInfo2+ flags queueFamilyIndex queueIndex++instance Storable DeviceQueueInfo2 where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DeviceQueueInfo2 where+ zero = DeviceQueueInfo2+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core11/Originally_Based_On_VK_KHR_protected_memory.hs-boot view
@@ -0,0 +1,41 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory ( DeviceQueueInfo2+ , PhysicalDeviceProtectedMemoryFeatures+ , PhysicalDeviceProtectedMemoryProperties+ , ProtectedSubmitInfo+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data DeviceQueueInfo2++instance ToCStruct DeviceQueueInfo2+instance Show DeviceQueueInfo2++instance FromCStruct DeviceQueueInfo2+++data PhysicalDeviceProtectedMemoryFeatures++instance ToCStruct PhysicalDeviceProtectedMemoryFeatures+instance Show PhysicalDeviceProtectedMemoryFeatures++instance FromCStruct PhysicalDeviceProtectedMemoryFeatures+++data PhysicalDeviceProtectedMemoryProperties++instance ToCStruct PhysicalDeviceProtectedMemoryProperties+instance Show PhysicalDeviceProtectedMemoryProperties++instance FromCStruct PhysicalDeviceProtectedMemoryProperties+++data ProtectedSubmitInfo++instance ToCStruct ProtectedSubmitInfo+instance Show ProtectedSubmitInfo++instance FromCStruct ProtectedSubmitInfo+
+ src/Graphics/Vulkan/Core11/Originally_Based_On_VK_KHR_subgroup.hs view
@@ -0,0 +1,142 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup ( PhysicalDeviceSubgroupProperties(..)+ , StructureType(..)+ , SubgroupFeatureFlagBits(..)+ , SubgroupFeatureFlags+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+import Graphics.Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlagBits(..))+import Graphics.Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)+-- | VkPhysicalDeviceSubgroupProperties - Structure describing subgroup+-- support for an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceSubgroupProperties' structure describe+-- the following implementation-dependent limits:+--+-- = Description+--+-- If the 'PhysicalDeviceSubgroupProperties' structure is included in the+-- @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- If @supportedOperations@ includes+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroup-quad >,+-- @subgroupSize@ /must/ be greater than or equal to 4.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SubgroupFeatureFlags'+data PhysicalDeviceSubgroupProperties = PhysicalDeviceSubgroupProperties+ { -- | @subgroupSize@ is the default number of invocations in each subgroup.+ -- @subgroupSize@ is at least 1 if any of the physical device’s queues+ -- support 'Graphics.Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT'+ -- or 'Graphics.Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'.+ -- @subgroupSize@ is a power-of-two.+ subgroupSize :: Word32+ , -- | @supportedStages@ is a bitfield of+ -- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits'+ -- describing the shader stages that+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operations group operations>+ -- with+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>+ -- are supported in. @supportedStages@ will have the+ -- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'+ -- bit set if any of the physical device’s queues support+ -- 'Graphics.Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'.+ supportedStages :: ShaderStageFlags+ , -- | @supportedOperations@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SubgroupFeatureFlagBits'+ -- specifying the sets of+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operations group operations>+ -- with+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>+ -- supported on this device. @supportedOperations@ will have the+ -- 'Graphics.Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_BASIC_BIT'+ -- bit set if any of the physical device’s queues support+ -- 'Graphics.Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or+ -- 'Graphics.Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'.+ supportedOperations :: SubgroupFeatureFlags+ , -- | @quadOperationsInAllStages@ is a boolean specifying whether+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-quad-operations quad group operations>+ -- are available in all stages, or are restricted to fragment and compute+ -- stages.+ quadOperationsInAllStages :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceSubgroupProperties++instance ToCStruct PhysicalDeviceSubgroupProperties where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceSubgroupProperties{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (subgroupSize)+ poke ((p `plusPtr` 20 :: Ptr ShaderStageFlags)) (supportedStages)+ poke ((p `plusPtr` 24 :: Ptr SubgroupFeatureFlags)) (supportedOperations)+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (quadOperationsInAllStages))+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 20 :: Ptr ShaderStageFlags)) (zero)+ poke ((p `plusPtr` 24 :: Ptr SubgroupFeatureFlags)) (zero)+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceSubgroupProperties where+ peekCStruct p = do+ subgroupSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ supportedStages <- peek @ShaderStageFlags ((p `plusPtr` 20 :: Ptr ShaderStageFlags))+ supportedOperations <- peek @SubgroupFeatureFlags ((p `plusPtr` 24 :: Ptr SubgroupFeatureFlags))+ quadOperationsInAllStages <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))+ pure $ PhysicalDeviceSubgroupProperties+ subgroupSize supportedStages supportedOperations (bool32ToBool quadOperationsInAllStages)++instance Storable PhysicalDeviceSubgroupProperties where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceSubgroupProperties where+ zero = PhysicalDeviceSubgroupProperties+ zero+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core11/Originally_Based_On_VK_KHR_subgroup.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup (PhysicalDeviceSubgroupProperties) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceSubgroupProperties++instance ToCStruct PhysicalDeviceSubgroupProperties+instance Show PhysicalDeviceSubgroupProperties++instance FromCStruct PhysicalDeviceSubgroupProperties+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_16bit_storage.hs view
@@ -0,0 +1,114 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage ( PhysicalDevice16BitStorageFeatures(..)+ , StructureType(..)+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- | VkPhysicalDevice16BitStorageFeatures - Structure describing features+-- supported by VK_KHR_16bit_storage+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDevice16BitStorageFeatures = PhysicalDevice16BitStorageFeatures+ { -- | @storageBuffer16BitAccess@ specifies whether objects in the+ -- @StorageBuffer@ or @PhysicalStorageBuffer@ storage class with the+ -- @Block@ decoration /can/ have 16-bit integer and 16-bit floating-point+ -- members. If this feature is not enabled, 16-bit integer or 16-bit+ -- floating-point members /must/ not be used in such objects. This also+ -- specifies whether shader modules /can/ declare the+ -- @StorageBuffer16BitAccess@ capability.+ storageBuffer16BitAccess :: Bool+ , -- | @uniformAndStorageBuffer16BitAccess@ specifies whether objects in the+ -- @Uniform@ storage class with the @Block@ decoration and in the+ -- @StorageBuffer@ or @PhysicalStorageBuffer@ storage class with the same+ -- decoration /can/ have 16-bit integer and 16-bit floating-point members.+ -- If this feature is not enabled, 16-bit integer or 16-bit floating-point+ -- members /must/ not be used in such objects. This also specifies whether+ -- shader modules /can/ declare the @UniformAndStorageBuffer16BitAccess@+ -- capability.+ uniformAndStorageBuffer16BitAccess :: Bool+ , -- | @storagePushConstant16@ specifies whether objects in the @PushConstant@+ -- storage class /can/ have 16-bit integer and 16-bit floating-point+ -- members. If this feature is not enabled, 16-bit integer or+ -- floating-point members /must/ not be used in such objects. This also+ -- specifies whether shader modules /can/ declare the+ -- @StoragePushConstant16@ capability.+ storagePushConstant16 :: Bool+ , -- | @storageInputOutput16@ specifies whether objects in the @Input@ and+ -- @Output@ storage classes /can/ have 16-bit integer and 16-bit+ -- floating-point members. If this feature is not enabled, 16-bit integer+ -- or 16-bit floating-point members /must/ not be used in such objects.+ -- This also specifies whether shader modules /can/ declare the+ -- @StorageInputOutput16@ capability.+ storageInputOutput16 :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDevice16BitStorageFeatures++instance ToCStruct PhysicalDevice16BitStorageFeatures where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDevice16BitStorageFeatures{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (storageBuffer16BitAccess))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (uniformAndStorageBuffer16BitAccess))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (storagePushConstant16))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (storageInputOutput16))+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDevice16BitStorageFeatures where+ peekCStruct p = do+ storageBuffer16BitAccess <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ uniformAndStorageBuffer16BitAccess <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ storagePushConstant16 <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ storageInputOutput16 <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))+ pure $ PhysicalDevice16BitStorageFeatures+ (bool32ToBool storageBuffer16BitAccess) (bool32ToBool uniformAndStorageBuffer16BitAccess) (bool32ToBool storagePushConstant16) (bool32ToBool storageInputOutput16)++instance Storable PhysicalDevice16BitStorageFeatures where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDevice16BitStorageFeatures where+ zero = PhysicalDevice16BitStorageFeatures+ zero+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_16bit_storage.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage (PhysicalDevice16BitStorageFeatures) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDevice16BitStorageFeatures++instance ToCStruct PhysicalDevice16BitStorageFeatures+instance Show PhysicalDevice16BitStorageFeatures++instance FromCStruct PhysicalDevice16BitStorageFeatures+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_bind_memory2.hs view
@@ -0,0 +1,673 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 ( bindBufferMemory2+ , bindImageMemory2+ , BindBufferMemoryInfo(..)+ , BindImageMemoryInfo(..)+ , StructureType(..)+ , ImageCreateFlagBits(..)+ , ImageCreateFlags+ ) where++import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.NamedType ((:::))+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2 (BindBufferMemoryDeviceGroupInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2 (BindImageMemoryDeviceGroupInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (BindImageMemorySwapchainInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (BindImagePlaneMemoryInfo)+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkBindBufferMemory2))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkBindImageMemory2))+import Graphics.Vulkan.Core10.Handles (DeviceMemory)+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Image)+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(..))+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkBindBufferMemory2+ :: FunPtr (Ptr Device_T -> Word32 -> Ptr (BindBufferMemoryInfo a) -> IO Result) -> Ptr Device_T -> Word32 -> Ptr (BindBufferMemoryInfo a) -> IO Result++-- | vkBindBufferMemory2 - Bind device memory to buffer objects+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the buffers and memory.+--+-- - @bindInfoCount@ is the number of elements in @pBindInfos@.+--+-- - @pBindInfos@ is a pointer to an array of @bindInfoCount@+-- 'BindBufferMemoryInfo' structures describing buffers and memory to+-- bind.+--+-- = Description+--+-- On some implementations, it /may/ be more efficient to batch memory+-- bindings into a single command.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR'+--+-- = See Also+--+-- 'BindBufferMemoryInfo', 'Graphics.Vulkan.Core10.Handles.Device'+bindBufferMemory2 :: PokeChain a => Device -> ("bindInfos" ::: Vector (BindBufferMemoryInfo a)) -> IO ()+bindBufferMemory2 device bindInfos = evalContT $ do+ let vkBindBufferMemory2' = mkVkBindBufferMemory2 (pVkBindBufferMemory2 (deviceCmds (device :: Device)))+ pPBindInfos <- ContT $ allocaBytesAligned @(BindBufferMemoryInfo _) ((Data.Vector.length (bindInfos)) * 40) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBindInfos `plusPtr` (40 * (i)) :: Ptr (BindBufferMemoryInfo _)) (e) . ($ ())) (bindInfos)+ r <- lift $ vkBindBufferMemory2' (deviceHandle (device)) ((fromIntegral (Data.Vector.length $ (bindInfos)) :: Word32)) (pPBindInfos)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkBindImageMemory2+ :: FunPtr (Ptr Device_T -> Word32 -> Ptr (BindImageMemoryInfo a) -> IO Result) -> Ptr Device_T -> Word32 -> Ptr (BindImageMemoryInfo a) -> IO Result++-- | vkBindImageMemory2 - Bind device memory to image objects+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the images and memory.+--+-- - @bindInfoCount@ is the number of elements in @pBindInfos@.+--+-- - @pBindInfos@ is a pointer to an array of 'BindImageMemoryInfo'+-- structures, describing images and memory to bind.+--+-- = Description+--+-- On some implementations, it /may/ be more efficient to batch memory+-- bindings into a single command.+--+-- == Valid Usage+--+-- - If any 'BindImageMemoryInfo'::image was created with+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'+-- then all planes of 'BindImageMemoryInfo'::image /must/ be bound+-- individually in separate @pBindInfos@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pBindInfos@ /must/ be a valid pointer to an array of+-- @bindInfoCount@ valid 'BindImageMemoryInfo' structures+--+-- - @bindInfoCount@ /must/ be greater than @0@+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'BindImageMemoryInfo', 'Graphics.Vulkan.Core10.Handles.Device'+bindImageMemory2 :: PokeChain a => Device -> ("bindInfos" ::: Vector (BindImageMemoryInfo a)) -> IO ()+bindImageMemory2 device bindInfos = evalContT $ do+ let vkBindImageMemory2' = mkVkBindImageMemory2 (pVkBindImageMemory2 (deviceCmds (device :: Device)))+ pPBindInfos <- ContT $ allocaBytesAligned @(BindImageMemoryInfo _) ((Data.Vector.length (bindInfos)) * 40) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBindInfos `plusPtr` (40 * (i)) :: Ptr (BindImageMemoryInfo _)) (e) . ($ ())) (bindInfos)+ r <- lift $ vkBindImageMemory2' (deviceHandle (device)) ((fromIntegral (Data.Vector.length $ (bindInfos)) :: Word32)) (pPBindInfos)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+++-- | VkBindBufferMemoryInfo - Structure specifying how to bind a buffer to+-- memory+--+-- == Valid Usage+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ not already be backed+-- by a memory object+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ not have been created+-- with any sparse memory binding flags+--+-- - @memoryOffset@ /must/ be less than the size of @memory@+--+-- - @memory@ /must/ have been allocated using one of the memory types+-- allowed in the @memoryTypeBits@ member of the+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'+-- structure returned from a call to+-- 'Graphics.Vulkan.Core10.MemoryManagement.getBufferMemoryRequirements'+-- with 'Graphics.Vulkan.Core10.Handles.Buffer'+--+-- - @memoryOffset@ /must/ be an integer multiple of the @alignment@+-- member of the+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'+-- structure returned from a call to+-- 'Graphics.Vulkan.Core10.MemoryManagement.getBufferMemoryRequirements'+-- with 'Graphics.Vulkan.Core10.Handles.Buffer'+--+-- - The @size@ member of the+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'+-- structure returned from a call to+-- 'Graphics.Vulkan.Core10.MemoryManagement.getBufferMemoryRequirements'+-- with 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be less than or+-- equal to the size of @memory@ minus @memoryOffset@+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' requires a dedicated+-- allocation(as reported by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2'+-- in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements'::requiresDedicatedAllocation+-- for 'Graphics.Vulkan.Core10.Handles.Buffer'), @memory@ /must/ have+-- been created with+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::'Graphics.Vulkan.Core10.Handles.Buffer'+-- equal to 'Graphics.Vulkan.Core10.Handles.Buffer' and @memoryOffset@+-- /must/ be zero+--+-- - If the 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' provided+-- when @memory@ was allocated included a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'+-- structure in its @pNext@ chain, and+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::'Graphics.Vulkan.Core10.Handles.Buffer'+-- was not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', then+-- 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ equal+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::'Graphics.Vulkan.Core10.Handles.Buffer'+-- and @memoryOffset@ /must/ be zero.+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' was created with+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV'::@dedicatedAllocation@+-- equal to 'Graphics.Vulkan.Core10.BaseType.TRUE', @memory@ /must/+-- have been created with+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV'::'Graphics.Vulkan.Core10.Handles.Buffer'+-- equal to 'Graphics.Vulkan.Core10.Handles.Buffer' and @memoryOffset@+-- /must/ be zero+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindBufferMemoryDeviceGroupInfo'+-- structure, all instances of @memory@ specified by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindBufferMemoryDeviceGroupInfo'::@pDeviceIndices@+-- /must/ have been allocated+--+-- - If the value of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'::@handleTypes@+-- used to allocate @memory@ is not @0@, it /must/ include at least one+-- of the handles set in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@+-- when 'Graphics.Vulkan.Core10.Handles.Buffer' was created+--+-- - If @memory@ was created by a memory import operation, the external+-- handle type of the imported memory /must/ also have been set in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@+-- when 'Graphics.Vulkan.Core10.Handles.Buffer' was created+--+-- - If the+-- 'Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeaturesKHR'::@bufferDeviceAddress@+-- feature is enabled and 'Graphics.Vulkan.Core10.Handles.Buffer' was+-- created with the+-- 'Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR'+-- bit set, @memory@ /must/ have been allocated with the+-- 'Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address.MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR'+-- bit set+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindBufferMemoryDeviceGroupInfo'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - @memory@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' handle+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.Buffer', and @memory@ /must/+-- have been created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'bindBufferMemory2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_bind_memory2.bindBufferMemory2KHR'+data BindBufferMemoryInfo (es :: [Type]) = BindBufferMemoryInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.Handles.Buffer' is the buffer to be attached to+ -- memory.+ buffer :: Buffer+ , -- | @memory@ is a 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+ -- describing the device memory to attach.+ memory :: DeviceMemory+ , -- | @memoryOffset@ is the start offset of the region of @memory@ which is to+ -- be bound to the buffer. The number of bytes returned in the+ -- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'::@size@+ -- member in @memory@, starting from @memoryOffset@ bytes, will be bound to+ -- the specified buffer.+ memoryOffset :: DeviceSize+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (BindBufferMemoryInfo es)++instance Extensible BindBufferMemoryInfo where+ extensibleType = STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO+ setNext x next = x{next = next}+ getNext BindBufferMemoryInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends BindBufferMemoryInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @BindBufferMemoryDeviceGroupInfo = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (BindBufferMemoryInfo es) where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p BindBufferMemoryInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr Buffer)) (buffer)+ lift $ poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (memory)+ lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (memoryOffset)+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 16 :: Ptr Buffer)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (zero)+ lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)+ lift $ f++instance PeekChain es => FromCStruct (BindBufferMemoryInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ buffer <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))+ memory <- peek @DeviceMemory ((p `plusPtr` 24 :: Ptr DeviceMemory))+ memoryOffset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))+ pure $ BindBufferMemoryInfo+ next buffer memory memoryOffset++instance es ~ '[] => Zero (BindBufferMemoryInfo es) where+ zero = BindBufferMemoryInfo+ ()+ zero+ zero+ zero+++-- | VkBindImageMemoryInfo - Structure specifying how to bind an image to+-- memory+--+-- == Valid Usage+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ not already be backed+-- by a memory object+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ not have been created+-- with any sparse memory binding flags+--+-- - @memoryOffset@ /must/ be less than the size of @memory@+--+-- - If the @pNext@ chain does not include a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo'+-- structure, @memory@ /must/ have been allocated using one of the+-- memory types allowed in the @memoryTypeBits@ member of the+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'+-- structure returned from a call to+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'+-- with 'Graphics.Vulkan.Core10.Handles.Image'+--+-- - If the @pNext@ chain does not include a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo'+-- structure, @memoryOffset@ /must/ be an integer multiple of the+-- @alignment@ member of the+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'+-- structure returned from a call to+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'+-- with 'Graphics.Vulkan.Core10.Handles.Image'+--+-- - If the @pNext@ chain does not include a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo'+-- structure, the difference of the size of @memory@ and @memoryOffset@+-- /must/ be greater than or equal to the @size@ member of the+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'+-- structure returned from a call to+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'+-- with the same 'Graphics.Vulkan.Core10.Handles.Image'+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo'+-- structure, 'Graphics.Vulkan.Core10.Handles.Image' /must/ have been+-- created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'+-- bit set.+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo'+-- structure, @memory@ /must/ have been allocated using one of the+-- memory types allowed in the @memoryTypeBits@ member of the+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'+-- structure returned from a call to+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'+-- with 'Graphics.Vulkan.Core10.Handles.Image' and where+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo'::@planeAspect@+-- corresponds to the+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.ImagePlaneMemoryRequirementsInfo'::@planeAspect@+-- in the+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.ImageMemoryRequirementsInfo2'+-- structure’s @pNext@ chain+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo'+-- structure, @memoryOffset@ /must/ be an integer multiple of the+-- @alignment@ member of the+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'+-- structure returned from a call to+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'+-- with 'Graphics.Vulkan.Core10.Handles.Image' and where+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo'::@planeAspect@+-- corresponds to the+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.ImagePlaneMemoryRequirementsInfo'::@planeAspect@+-- in the+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.ImageMemoryRequirementsInfo2'+-- structure’s @pNext@ chain+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo'+-- structure, the difference of the size of @memory@ and @memoryOffset@+-- /must/ be greater than or equal to the @size@ member of the+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'+-- structure returned from a call to+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'+-- with the same 'Graphics.Vulkan.Core10.Handles.Image' and where+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo'::@planeAspect@+-- corresponds to the+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.ImagePlaneMemoryRequirementsInfo'::@planeAspect@+-- in the+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.ImageMemoryRequirementsInfo2'+-- structure’s @pNext@ chain+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' requires a dedicated+-- allocation (as reported by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'+-- in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements'::requiresDedicatedAllocation+-- for 'Graphics.Vulkan.Core10.Handles.Image'), @memory@ /must/ have+-- been created with+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::'Graphics.Vulkan.Core10.Handles.Image'+-- equal to 'Graphics.Vulkan.Core10.Handles.Image' and @memoryOffset@+-- /must/ be zero+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dedicatedAllocationImageAliasing dedicated allocation image aliasing>+-- feature is not enabled, and the+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' provided when+-- @memory@ was allocated included a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'+-- structure in its @pNext@ chain, and+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::'Graphics.Vulkan.Core10.Handles.Image'+-- was not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', then+-- 'Graphics.Vulkan.Core10.Handles.Image' /must/ equal+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::'Graphics.Vulkan.Core10.Handles.Image'+-- and @memoryOffset@ /must/ be zero.+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dedicatedAllocationImageAliasing dedicated allocation image aliasing>+-- feature is enabled, and the+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' provided when+-- @memory@ was allocated included a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'+-- structure in its @pNext@ chain, and+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::'Graphics.Vulkan.Core10.Handles.Image'+-- was not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', then+-- @memoryOffset@ /must/ be zero, and+-- 'Graphics.Vulkan.Core10.Handles.Image' /must/ be either equal to+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'::'Graphics.Vulkan.Core10.Handles.Image'+-- or an image that was created using the same parameters in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo', with the exception+-- that @extent@ and @arrayLayers@ /may/ differ subject to the+-- following restrictions: every dimension in the @extent@ parameter of+-- the image being bound /must/ be equal to or smaller than the+-- original image for which the allocation was created; and the+-- @arrayLayers@ parameter of the image being bound /must/ be equal to+-- or smaller than the original image for which the allocation was+-- created.+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationImageCreateInfoNV'::@dedicatedAllocation@+-- equal to 'Graphics.Vulkan.Core10.BaseType.TRUE', @memory@ /must/+-- have been created with+-- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV'::'Graphics.Vulkan.Core10.Handles.Image'+-- equal to 'Graphics.Vulkan.Core10.Handles.Image' and @memoryOffset@+-- /must/ be zero+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo'+-- structure, all instances of @memory@ specified by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo'::@pDeviceIndices@+-- /must/ have been allocated+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo'+-- structure, and+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo'::@splitInstanceBindRegionCount@+-- is not zero, then 'Graphics.Vulkan.Core10.Handles.Image' /must/ have+-- been created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT'+-- bit set+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo'+-- structure, all elements of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo'::@pSplitInstanceBindRegions@+-- /must/ be valid rectangles contained within the dimensions of+-- 'Graphics.Vulkan.Core10.Handles.Image'+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo'+-- structure, the union of the areas of all elements of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo'::@pSplitInstanceBindRegions@+-- that correspond to the same instance of+-- 'Graphics.Vulkan.Core10.Handles.Image' /must/ cover the entire+-- image.+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with a valid+-- swapchain handle in+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR'::@swapchain@,+-- then the @pNext@ chain /must/ include a+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.BindImageMemorySwapchainInfoKHR'+-- structure containing the same swapchain handle.+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.BindImageMemorySwapchainInfoKHR'+-- structure, @memory@ /must/ be+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- - If the @pNext@ chain does not include a+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.BindImageMemorySwapchainInfoKHR'+-- structure, @memory@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' handle+--+-- - If the value of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'::@handleTypes@+-- used to allocate @memory@ is not @0@, it /must/ include at least one+-- of the handles set in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@+-- when 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- - If @memory@ was created by a memory import operation, the external+-- handle type of the imported memory /must/ also have been set in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@+-- when 'Graphics.Vulkan.Core10.Handles.Image' was created+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.BindImageMemorySwapchainInfoKHR',+-- or+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Image' handle+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.Image', and @memory@ that+-- are valid handles of non-ignored parameters /must/ have been+-- created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Handles.Image',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'bindImageMemory2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_bind_memory2.bindImageMemory2KHR'+data BindImageMemoryInfo (es :: [Type]) = BindImageMemoryInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.Handles.Image' is the image to be attached to+ -- memory.+ image :: Image+ , -- | @memory@ is a 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+ -- describing the device memory to attach.+ memory :: DeviceMemory+ , -- | @memoryOffset@ is the start offset of the region of @memory@ which is to+ -- be bound to the image. The number of bytes returned in the+ -- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'::@size@+ -- member in @memory@, starting from @memoryOffset@ bytes, will be bound to+ -- the specified image.+ memoryOffset :: DeviceSize+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (BindImageMemoryInfo es)++instance Extensible BindImageMemoryInfo where+ extensibleType = STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO+ setNext x next = x{next = next}+ getNext BindImageMemoryInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends BindImageMemoryInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @BindImagePlaneMemoryInfo = Just f+ | Just Refl <- eqT @e @BindImageMemorySwapchainInfoKHR = Just f+ | Just Refl <- eqT @e @BindImageMemoryDeviceGroupInfo = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (BindImageMemoryInfo es) where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p BindImageMemoryInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr Image)) (image)+ lift $ poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (memory)+ lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (memoryOffset)+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 16 :: Ptr Image)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (zero)+ lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)+ lift $ f++instance PeekChain es => FromCStruct (BindImageMemoryInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ image <- peek @Image ((p `plusPtr` 16 :: Ptr Image))+ memory <- peek @DeviceMemory ((p `plusPtr` 24 :: Ptr DeviceMemory))+ memoryOffset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))+ pure $ BindImageMemoryInfo+ next image memory memoryOffset++instance es ~ '[] => Zero (BindImageMemoryInfo es) where+ zero = BindImageMemoryInfo+ ()+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_bind_memory2.hs-boot view
@@ -0,0 +1,28 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 ( BindBufferMemoryInfo+ , BindImageMemoryInfo+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+type role BindBufferMemoryInfo nominal+data BindBufferMemoryInfo (es :: [Type])++instance PokeChain es => ToCStruct (BindBufferMemoryInfo es)+instance Show (Chain es) => Show (BindBufferMemoryInfo es)++instance PeekChain es => FromCStruct (BindBufferMemoryInfo es)+++type role BindImageMemoryInfo nominal+data BindImageMemoryInfo (es :: [Type])++instance PokeChain es => ToCStruct (BindImageMemoryInfo es)+instance Show (Chain es) => Show (BindImageMemoryInfo es)++instance PeekChain es => FromCStruct (BindImageMemoryInfo es)+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_dedicated_allocation.hs view
@@ -0,0 +1,354 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation ( MemoryDedicatedRequirements(..)+ , MemoryDedicatedAllocateInfo(..)+ , StructureType(..)+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Image)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- | VkMemoryDedicatedRequirements - Structure describing dedicated+-- allocation requirements of buffer and image resources+--+-- = Description+--+-- When the implementation sets @requiresDedicatedAllocation@ to+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', it /must/ also set+-- @prefersDedicatedAllocation@ to 'Graphics.Vulkan.Core10.BaseType.TRUE'.+--+-- If the 'MemoryDedicatedRequirements' structure is included in the+-- @pNext@ chain of the+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'+-- structure passed as the @pMemoryRequirements@ parameter of a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2'+-- call, @requiresDedicatedAllocation@ /may/ be+-- 'Graphics.Vulkan.Core10.BaseType.TRUE' under one of the following+-- conditions:+--+-- - The @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Buffer.BufferCreateInfo' for the call to+-- 'Graphics.Vulkan.Core10.Buffer.createBuffer' used to create the+-- buffer being queried included a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'+-- structure, and any of the handle types specified in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryBufferCreateInfo'::@handleTypes@+-- requires dedicated allocation, as reported by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.getPhysicalDeviceExternalBufferProperties'+-- in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties'::@externalMemoryProperties.externalMemoryFeatures@,+-- the @requiresDedicatedAllocation@ field will be set to+-- 'Graphics.Vulkan.Core10.BaseType.TRUE'.+--+-- In all other cases, @requiresDedicatedAllocation@ /must/ be set to+-- 'Graphics.Vulkan.Core10.BaseType.FALSE' by the implementation whenever a+-- 'MemoryDedicatedRequirements' structure is included in the @pNext@ chain+-- of the+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'+-- structure passed to a call to+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2'.+--+-- If the 'MemoryDedicatedRequirements' structure is included in the+-- @pNext@ chain of the+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'+-- structure passed as the @pMemoryRequirements@ parameter of a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2'+-- call and+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_BINDING_BIT'+-- was set in+-- 'Graphics.Vulkan.Core10.Buffer.BufferCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- when 'Graphics.Vulkan.Core10.Handles.Buffer' was created then the+-- implementation /must/ set both @prefersDedicatedAllocation@ and+-- @requiresDedicatedAllocation@ to+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'.+--+-- If the 'MemoryDedicatedRequirements' structure is included in the+-- @pNext@ chain of the+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'+-- structure passed as the @pMemoryRequirements@ parameter of a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'+-- call, @requiresDedicatedAllocation@ /may/ be+-- 'Graphics.Vulkan.Core10.BaseType.TRUE' under one of the following+-- conditions:+--+-- - The @pNext@ chain of 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'+-- for the call to 'Graphics.Vulkan.Core10.Image.createImage' used to+-- create the image being queried included a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'+-- structure, and any of the handle types specified in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'::@handleTypes@+-- requires dedicated allocation, as reported by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+-- in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties'::@externalMemoryProperties.externalMemoryFeatures@,+-- the @requiresDedicatedAllocation@ field will be set to+-- 'Graphics.Vulkan.Core10.BaseType.TRUE'.+--+-- In all other cases, @requiresDedicatedAllocation@ /must/ be set to+-- 'Graphics.Vulkan.Core10.BaseType.FALSE' by the implementation whenever a+-- 'MemoryDedicatedRequirements' structure is included in the @pNext@ chain+-- of the+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'+-- structure passed to a call to+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'.+--+-- If the 'MemoryDedicatedRequirements' structure is included in the+-- @pNext@ chain of the+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'+-- structure passed as the @pMemoryRequirements@ parameter of a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.getImageMemoryRequirements2'+-- call and+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT'+-- was set in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- when 'Graphics.Vulkan.Core10.Handles.Image' was created then the+-- implementation /must/ set both @prefersDedicatedAllocation@ and+-- @requiresDedicatedAllocation@ to+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data MemoryDedicatedRequirements = MemoryDedicatedRequirements+ { -- | @prefersDedicatedAllocation@ specifies that the implementation would+ -- prefer a dedicated allocation for this resource. The application is+ -- still free to suballocate the resource but it /may/ get better+ -- performance if a dedicated allocation is used.+ prefersDedicatedAllocation :: Bool+ , -- | @requiresDedicatedAllocation@ specifies that a dedicated allocation is+ -- required for this resource.+ requiresDedicatedAllocation :: Bool+ }+ deriving (Typeable)+deriving instance Show MemoryDedicatedRequirements++instance ToCStruct MemoryDedicatedRequirements where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p MemoryDedicatedRequirements{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (prefersDedicatedAllocation))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (requiresDedicatedAllocation))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct MemoryDedicatedRequirements where+ peekCStruct p = do+ prefersDedicatedAllocation <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ requiresDedicatedAllocation <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ pure $ MemoryDedicatedRequirements+ (bool32ToBool prefersDedicatedAllocation) (bool32ToBool requiresDedicatedAllocation)++instance Storable MemoryDedicatedRequirements where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MemoryDedicatedRequirements where+ zero = MemoryDedicatedRequirements+ zero+ zero+++-- | VkMemoryDedicatedAllocateInfo - Specify a dedicated memory allocation+-- resource+--+-- == Valid Usage+--+-- - At least one of 'Graphics.Vulkan.Core10.Handles.Image' and+-- 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo'::@allocationSize@+-- /must/ equal the+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'::@size@+-- of the image+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Image' /must/ have been created+-- without+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT'+-- set in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo'::@allocationSize@+-- /must/ equal the+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'::@size@+-- of the buffer+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ have been created+-- without+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_BINDING_BIT'+-- set in+-- 'Graphics.Vulkan.Core10.Buffer.BufferCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' and+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' defines a memory+-- import operation with handle type+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT',+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT',+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT',+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT',+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT',+-- or+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT',+-- and the external handle was created by the Vulkan API, then the+-- memory being imported /must/ also be a dedicated image allocation+-- and 'Graphics.Vulkan.Core10.Handles.Image' must be identical to the+-- image associated with the imported memory.+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' and+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' defines a memory+-- import operation with handle type+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT',+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT',+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT',+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT',+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT',+-- or+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT',+-- and the external handle was created by the Vulkan API, then the+-- memory being imported /must/ also be a dedicated buffer allocation+-- and 'Graphics.Vulkan.Core10.Handles.Buffer' must be identical to the+-- buffer associated with the imported memory.+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' and+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' defines a memory+-- import operation with handle type+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT',+-- the memory being imported /must/ also be a dedicated image+-- allocation and 'Graphics.Vulkan.Core10.Handles.Image' must be+-- identical to the image associated with the imported memory.+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' and+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' defines a memory+-- import operation with handle type+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT',+-- the memory being imported /must/ also be a dedicated buffer+-- allocation and 'Graphics.Vulkan.Core10.Handles.Buffer' must be+-- identical to the buffer associated with the imported memory.+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Image' /must/ not have been created+-- with+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'+-- set in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Image' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Image' handle+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.Buffer', and+-- 'Graphics.Vulkan.Core10.Handles.Image' that are valid handles of+-- non-ignored parameters /must/ have been created, allocated, or+-- retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.Image',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data MemoryDedicatedAllocateInfo = MemoryDedicatedAllocateInfo+ { -- | 'Graphics.Vulkan.Core10.Handles.Image' is+ -- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' or a handle of an+ -- image which this memory will be bound to.+ image :: Image+ , -- | 'Graphics.Vulkan.Core10.Handles.Buffer' is+ -- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' or a handle of a+ -- buffer which this memory will be bound to.+ buffer :: Buffer+ }+ deriving (Typeable)+deriving instance Show MemoryDedicatedAllocateInfo++instance ToCStruct MemoryDedicatedAllocateInfo where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p MemoryDedicatedAllocateInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Image)) (image)+ poke ((p `plusPtr` 24 :: Ptr Buffer)) (buffer)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct MemoryDedicatedAllocateInfo where+ peekCStruct p = do+ image <- peek @Image ((p `plusPtr` 16 :: Ptr Image))+ buffer <- peek @Buffer ((p `plusPtr` 24 :: Ptr Buffer))+ pure $ MemoryDedicatedAllocateInfo+ image buffer++instance Storable MemoryDedicatedAllocateInfo where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MemoryDedicatedAllocateInfo where+ zero = MemoryDedicatedAllocateInfo+ zero+ zero+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_dedicated_allocation.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation ( MemoryDedicatedAllocateInfo+ , MemoryDedicatedRequirements+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data MemoryDedicatedAllocateInfo++instance ToCStruct MemoryDedicatedAllocateInfo+instance Show MemoryDedicatedAllocateInfo++instance FromCStruct MemoryDedicatedAllocateInfo+++data MemoryDedicatedRequirements++instance ToCStruct MemoryDedicatedRequirements+instance Show MemoryDedicatedRequirements++instance FromCStruct MemoryDedicatedRequirements+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_descriptor_update_template.hs view
@@ -0,0 +1,685 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template ( createDescriptorUpdateTemplate+ , withDescriptorUpdateTemplate+ , destroyDescriptorUpdateTemplate+ , updateDescriptorSetWithTemplate+ , DescriptorUpdateTemplateEntry(..)+ , DescriptorUpdateTemplateCreateInfo(..)+ , DescriptorUpdateTemplate(..)+ , DescriptorUpdateTemplateCreateFlags(..)+ , StructureType(..)+ , DescriptorUpdateTemplateType(..)+ , ObjectType(..)+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Typeable (Typeable)+import Foreign.C.Types (CSize)+import Foreign.C.Types (CSize(CSize))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Word (Word64)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.Handles (DescriptorSet)+import Graphics.Vulkan.Core10.Handles (DescriptorSet(..))+import Graphics.Vulkan.Core10.Handles (DescriptorSetLayout)+import Graphics.Vulkan.Core10.Enums.DescriptorType (DescriptorType)+import Graphics.Vulkan.Core11.Handles (DescriptorUpdateTemplate)+import Graphics.Vulkan.Core11.Handles (DescriptorUpdateTemplate(..))+import Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateCreateFlags (DescriptorUpdateTemplateCreateFlags)+import Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateType (DescriptorUpdateTemplateType)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateDescriptorUpdateTemplate))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyDescriptorUpdateTemplate))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkUpdateDescriptorSetWithTemplate))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint)+import Graphics.Vulkan.Core10.Handles (PipelineLayout)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Core11.Handles (DescriptorUpdateTemplate(..))+import Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateCreateFlags (DescriptorUpdateTemplateCreateFlags(..))+import Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateType (DescriptorUpdateTemplateType(..))+import Graphics.Vulkan.Core10.Enums.ObjectType (ObjectType(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateDescriptorUpdateTemplate+ :: FunPtr (Ptr Device_T -> Ptr DescriptorUpdateTemplateCreateInfo -> Ptr AllocationCallbacks -> Ptr DescriptorUpdateTemplate -> IO Result) -> Ptr Device_T -> Ptr DescriptorUpdateTemplateCreateInfo -> Ptr AllocationCallbacks -> Ptr DescriptorUpdateTemplate -> IO Result++-- | vkCreateDescriptorUpdateTemplate - Create a new descriptor update+-- template+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the descriptor update template.+--+-- - @pCreateInfo@ is a pointer to a 'DescriptorUpdateTemplateCreateInfo'+-- structure specifying the set of descriptors to update with a single+-- call to+-- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetWithTemplateKHR'+-- or 'updateDescriptorSetWithTemplate'.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pDescriptorUpdateTemplate@ is a pointer to a+-- 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate' handle in+-- which the resulting descriptor update template object is returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'DescriptorUpdateTemplateCreateInfo' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pDescriptorUpdateTemplate@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate',+-- 'DescriptorUpdateTemplateCreateInfo',+-- 'Graphics.Vulkan.Core10.Handles.Device'+createDescriptorUpdateTemplate :: Device -> DescriptorUpdateTemplateCreateInfo -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (DescriptorUpdateTemplate)+createDescriptorUpdateTemplate device createInfo allocator = evalContT $ do+ let vkCreateDescriptorUpdateTemplate' = mkVkCreateDescriptorUpdateTemplate (pVkCreateDescriptorUpdateTemplate (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPDescriptorUpdateTemplate <- ContT $ bracket (callocBytes @DescriptorUpdateTemplate 8) free+ r <- lift $ vkCreateDescriptorUpdateTemplate' (deviceHandle (device)) pCreateInfo pAllocator (pPDescriptorUpdateTemplate)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pDescriptorUpdateTemplate <- lift $ peek @DescriptorUpdateTemplate pPDescriptorUpdateTemplate+ pure $ (pDescriptorUpdateTemplate)++-- | A safe wrapper for 'createDescriptorUpdateTemplate' and+-- 'destroyDescriptorUpdateTemplate' using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withDescriptorUpdateTemplate :: Device -> DescriptorUpdateTemplateCreateInfo -> Maybe AllocationCallbacks -> (DescriptorUpdateTemplate -> IO r) -> IO r+withDescriptorUpdateTemplate device descriptorUpdateTemplateCreateInfo allocationCallbacks =+ bracket+ (createDescriptorUpdateTemplate device descriptorUpdateTemplateCreateInfo allocationCallbacks)+ (\o -> destroyDescriptorUpdateTemplate device o allocationCallbacks)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDestroyDescriptorUpdateTemplate+ :: FunPtr (Ptr Device_T -> DescriptorUpdateTemplate -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> DescriptorUpdateTemplate -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyDescriptorUpdateTemplate - Destroy a descriptor update template+-- object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- has been used to create the descriptor update template+--+-- - 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate' is the+-- descriptor update template to destroy.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- == Valid Usage+--+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' was created, a+-- compatible set of callbacks /must/ be provided here+--+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' was created,+-- @pAllocator@ /must/ be @NULL@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - If 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate' /must/ be+-- a valid 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate'+-- handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - If 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate' is a+-- valid handle, it /must/ have been created, allocated, or retrieved+-- from 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to+-- 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate' /must/ be+-- externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate',+-- 'Graphics.Vulkan.Core10.Handles.Device'+destroyDescriptorUpdateTemplate :: Device -> DescriptorUpdateTemplate -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyDescriptorUpdateTemplate device descriptorUpdateTemplate allocator = evalContT $ do+ let vkDestroyDescriptorUpdateTemplate' = mkVkDestroyDescriptorUpdateTemplate (pVkDestroyDescriptorUpdateTemplate (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyDescriptorUpdateTemplate' (deviceHandle (device)) (descriptorUpdateTemplate) pAllocator+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkUpdateDescriptorSetWithTemplate+ :: FunPtr (Ptr Device_T -> DescriptorSet -> DescriptorUpdateTemplate -> Ptr () -> IO ()) -> Ptr Device_T -> DescriptorSet -> DescriptorUpdateTemplate -> Ptr () -> IO ()++-- | vkUpdateDescriptorSetWithTemplate - Update the contents of a descriptor+-- set object using an update template+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- updates the descriptor sets.+--+-- - 'Graphics.Vulkan.Core10.Handles.DescriptorSet' is the descriptor set+-- to update+--+-- - 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate' is a+-- 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate' object+-- specifying the update mapping between @pData@ and the descriptor set+-- to update.+--+-- - @pData@ is a pointer to memory containing one or more+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorImageInfo',+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorBufferInfo', or+-- 'Graphics.Vulkan.Core10.Handles.BufferView' structures used to write+-- the descriptors.+--+-- == Valid Usage+--+-- - @pData@ /must/ be a valid pointer to a memory containing one or more+-- valid instances of+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorImageInfo',+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorBufferInfo', or+-- 'Graphics.Vulkan.Core10.Handles.BufferView' in a layout defined by+-- 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate' when it+-- was created with 'createDescriptorUpdateTemplate'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.DescriptorSet' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' handle+--+-- - 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate' /must/ be+-- a valid 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate'+-- handle+--+-- - 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate' /must/+-- have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.DescriptorSet' /must/+-- be externally synchronized+--+-- __API example.__+--+-- > struct AppBufferView {+-- > VkBufferView bufferView;+-- > uint32_t applicationRelatedInformation;+-- > };+-- >+-- > struct AppDataStructure+-- > {+-- > VkDescriptorImageInfo imageInfo; // a single image info+-- > VkDescriptorBufferInfo bufferInfoArray[3]; // 3 buffer infos in an array+-- > AppBufferView bufferView[2]; // An application defined structure containing a bufferView+-- > // ... some more application related data+-- > };+-- >+-- > const VkDescriptorUpdateTemplateEntry descriptorUpdateTemplateEntries[] =+-- > {+-- > // binding to a single image descriptor+-- > {+-- > 0, // binding+-- > 0, // dstArrayElement+-- > 1, // descriptorCount+-- > VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, // descriptorType+-- > offsetof(AppDataStructure, imageInfo), // offset+-- > 0 // stride is not required if descriptorCount is 1+-- > },+-- >+-- > // binding to an array of buffer descriptors+-- > {+-- > 1, // binding+-- > 0, // dstArrayElement+-- > 3, // descriptorCount+-- > VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, // descriptorType+-- > offsetof(AppDataStructure, bufferInfoArray), // offset+-- > sizeof(VkDescriptorBufferInfo) // stride, descriptor buffer infos are compact+-- > },+-- >+-- > // binding to an array of buffer views+-- > {+-- > 2, // binding+-- > 0, // dstArrayElement+-- > 2, // descriptorCount+-- > VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, // descriptorType+-- > offsetof(AppDataStructure, bufferView) ++-- > offsetof(AppBufferView, bufferView), // offset+-- > sizeof(AppBufferView) // stride, bufferViews do not have to be compact+-- > },+-- > };+-- >+-- > // create a descriptor update template for descriptor set updates+-- > const VkDescriptorUpdateTemplateCreateInfo createInfo =+-- > {+-- > VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, // sType+-- > NULL, // pNext+-- > 0, // flags+-- > 3, // descriptorUpdateEntryCount+-- > descriptorUpdateTemplateEntries, // pDescriptorUpdateEntries+-- > VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, // templateType+-- > myLayout, // descriptorSetLayout+-- > 0, // pipelineBindPoint, ignored by given templateType+-- > 0, // pipelineLayout, ignored by given templateType+-- > 0, // set, ignored by given templateType+-- > };+-- >+-- > VkDescriptorUpdateTemplate myDescriptorUpdateTemplate;+-- > myResult = vkCreateDescriptorUpdateTemplate(+-- > myDevice,+-- > &createInfo,+-- > NULL,+-- > &myDescriptorUpdateTemplate);+-- > }+-- >+-- >+-- > AppDataStructure appData;+-- >+-- > // fill appData here or cache it in your engine+-- > vkUpdateDescriptorSetWithTemplate(myDevice, myDescriptorSet, myDescriptorUpdateTemplate, &appData);+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSet',+-- 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate',+-- 'Graphics.Vulkan.Core10.Handles.Device'+updateDescriptorSetWithTemplate :: Device -> DescriptorSet -> DescriptorUpdateTemplate -> ("data" ::: Ptr ()) -> IO ()+updateDescriptorSetWithTemplate device descriptorSet descriptorUpdateTemplate data' = do+ let vkUpdateDescriptorSetWithTemplate' = mkVkUpdateDescriptorSetWithTemplate (pVkUpdateDescriptorSetWithTemplate (deviceCmds (device :: Device)))+ vkUpdateDescriptorSetWithTemplate' (deviceHandle (device)) (descriptorSet) (descriptorUpdateTemplate) (data')+ pure $ ()+++-- | VkDescriptorUpdateTemplateEntry - Describes a single descriptor update+-- of the descriptor update template+--+-- == Valid Usage+--+-- - @dstBinding@ /must/ be a valid binding in the descriptor set layout+-- implicitly specified when using a descriptor update template to+-- update descriptors.+--+-- - @dstArrayElement@ and @descriptorCount@ /must/ be less than or equal+-- to the number of array elements in the descriptor set binding+-- implicitly specified when using a descriptor update template to+-- update descriptors, and all applicable consecutive bindings, as+-- described by+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive>+--+-- - If @descriptor@ type is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT',+-- @dstArrayElement@ /must/ be an integer multiple of @4@+--+-- - If @descriptor@ type is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT',+-- @descriptorCount@ /must/ be an integer multiple of @4@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' /must/+-- be a valid+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType',+-- 'DescriptorUpdateTemplateCreateInfo'+data DescriptorUpdateTemplateEntry = DescriptorUpdateTemplateEntry+ { -- | @dstBinding@ is the descriptor binding to update when using this+ -- descriptor update template.+ dstBinding :: Word32+ , -- | @dstArrayElement@ is the starting element in the array belonging to+ -- @dstBinding@. If the descriptor binding identified by @srcBinding@ has a+ -- descriptor type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+ -- then @dstArrayElement@ specifies the starting byte offset to update.+ dstArrayElement :: Word32+ , -- | @descriptorCount@ is the number of descriptors to update. If+ -- @descriptorCount@ is greater than the number of remaining array elements+ -- in the destination binding, those affect consecutive bindings in a+ -- manner similar to+ -- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet' above. If the+ -- descriptor binding identified by @dstBinding@ has a descriptor type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+ -- then @descriptorCount@ specifies the number of bytes to update and the+ -- remaining array elements in the destination binding refer to the+ -- remaining number of bytes in it.+ descriptorCount :: Word32+ , -- | 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is a+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' specifying+ -- the type of the descriptor.+ descriptorType :: DescriptorType+ , -- | @offset@ is the offset in bytes of the first binding in the raw data+ -- structure.+ offset :: Word64+ , -- | @stride@ is the stride in bytes between two consecutive array elements+ -- of the descriptor update informations in the raw data structure. The+ -- actual pointer ptr for each array element j of update entry i is+ -- computed using the following formula:+ --+ -- > const char *ptr = (const char *)pData + pDescriptorUpdateEntries[i].offset + j * pDescriptorUpdateEntries[i].stride+ --+ -- The stride is useful in case the bindings are stored in structs along+ -- with other data. If+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+ -- then the value of @stride@ is ignored and the stride is assumed to be+ -- @1@, i.e. the descriptor update information for them is always specified+ -- as a contiguous range.+ stride :: Word64+ }+ deriving (Typeable)+deriving instance Show DescriptorUpdateTemplateEntry++instance ToCStruct DescriptorUpdateTemplateEntry where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DescriptorUpdateTemplateEntry{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (dstBinding)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (dstArrayElement)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (descriptorCount)+ poke ((p `plusPtr` 12 :: Ptr DescriptorType)) (descriptorType)+ poke ((p `plusPtr` 16 :: Ptr CSize)) (CSize (offset))+ poke ((p `plusPtr` 24 :: Ptr CSize)) (CSize (stride))+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 12 :: Ptr DescriptorType)) (zero)+ poke ((p `plusPtr` 16 :: Ptr CSize)) (CSize (zero))+ poke ((p `plusPtr` 24 :: Ptr CSize)) (CSize (zero))+ f++instance FromCStruct DescriptorUpdateTemplateEntry where+ peekCStruct p = do+ dstBinding <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ dstArrayElement <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ descriptorCount <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ descriptorType <- peek @DescriptorType ((p `plusPtr` 12 :: Ptr DescriptorType))+ offset <- peek @CSize ((p `plusPtr` 16 :: Ptr CSize))+ stride <- peek @CSize ((p `plusPtr` 24 :: Ptr CSize))+ pure $ DescriptorUpdateTemplateEntry+ dstBinding dstArrayElement descriptorCount descriptorType ((\(CSize a) -> a) offset) ((\(CSize a) -> a) stride)++instance Storable DescriptorUpdateTemplateEntry where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DescriptorUpdateTemplateEntry where+ zero = DescriptorUpdateTemplateEntry+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkDescriptorUpdateTemplateCreateInfo - Structure specifying parameters+-- of a newly created descriptor update template+--+-- == Valid Usage+--+-- - If @templateType@ is+-- 'Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET',+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' /must/ be a+-- valid 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' handle+--+-- - If @templateType@ is+-- 'Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR',+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- value+--+-- - If @templateType@ is+-- 'Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR',+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' handle+--+-- - If @templateType@ is+-- 'Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR',+-- @set@ /must/ be the unique set number in the pipeline layout that+-- uses a descriptor set layout that was created with+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO'+--+-- - @pNext@ /must/ be @NULL@+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+--+-- - @pDescriptorUpdateEntries@ /must/ be a valid pointer to an array of+-- @descriptorUpdateEntryCount@ valid 'DescriptorUpdateTemplateEntry'+-- structures+--+-- - @templateType@ /must/ be a valid+-- 'Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DescriptorUpdateTemplateType'+-- value+--+-- - @descriptorUpdateEntryCount@ /must/ be greater than @0@+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout', and+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that are valid+-- handles of non-ignored parameters /must/ have been created,+-- allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout',+-- 'Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateCreateFlags.DescriptorUpdateTemplateCreateFlags',+-- 'DescriptorUpdateTemplateEntry',+-- 'Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DescriptorUpdateTemplateType',+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createDescriptorUpdateTemplate',+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.createDescriptorUpdateTemplateKHR'+data DescriptorUpdateTemplateCreateInfo = DescriptorUpdateTemplateCreateInfo+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: DescriptorUpdateTemplateCreateFlags+ , -- | @pDescriptorUpdateEntries@ is a pointer to an array of+ -- 'DescriptorUpdateTemplateEntry' structures describing the descriptors to+ -- be updated by the descriptor update template.+ descriptorUpdateEntries :: Vector DescriptorUpdateTemplateEntry+ , -- | @templateType@ Specifies the type of the descriptor update template. If+ -- set to+ -- 'Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET'+ -- it /can/ only be used to update descriptor sets with a fixed+ -- 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout'. If set to+ -- 'Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR'+ -- it /can/ only be used to push descriptor sets using the provided+ -- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',+ -- 'Graphics.Vulkan.Core10.Handles.PipelineLayout', and @set@ number.+ templateType :: DescriptorUpdateTemplateType+ , -- | 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' is the descriptor+ -- set layout the parameter update template will be used with. All+ -- descriptor sets which are going to be updated through the newly created+ -- descriptor update template /must/ be created with this layout.+ -- 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' is the descriptor+ -- set layout used to build the descriptor update template. All descriptor+ -- sets which are going to be updated through the newly created descriptor+ -- update template /must/ be created with a layout that matches (is the+ -- same as, or defined identically to) this layout. This parameter is+ -- ignored if @templateType@ is not+ -- 'Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET'.+ descriptorSetLayout :: DescriptorSetLayout+ , -- | 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' is a+ -- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+ -- indicating whether the descriptors will be used by graphics pipelines or+ -- compute pipelines. This parameter is ignored if @templateType@ is not+ -- 'Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR'+ pipelineBindPoint :: PipelineBindPoint+ , -- | 'Graphics.Vulkan.Core10.Handles.PipelineLayout' is a+ -- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' object used to program+ -- the bindings. This parameter is ignored if @templateType@ is not+ -- 'Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR'+ pipelineLayout :: PipelineLayout+ , -- | @set@ is the set number of the descriptor set in the pipeline layout+ -- that will be updated. This parameter is ignored if @templateType@ is not+ -- 'Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateType.DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR'+ set :: Word32+ }+ deriving (Typeable)+deriving instance Show DescriptorUpdateTemplateCreateInfo++instance ToCStruct DescriptorUpdateTemplateCreateInfo where+ withCStruct x f = allocaBytesAligned 72 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DescriptorUpdateTemplateCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr DescriptorUpdateTemplateCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (descriptorUpdateEntries)) :: Word32))+ pPDescriptorUpdateEntries' <- ContT $ allocaBytesAligned @DescriptorUpdateTemplateEntry ((Data.Vector.length (descriptorUpdateEntries)) * 32) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDescriptorUpdateEntries' `plusPtr` (32 * (i)) :: Ptr DescriptorUpdateTemplateEntry) (e) . ($ ())) (descriptorUpdateEntries)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DescriptorUpdateTemplateEntry))) (pPDescriptorUpdateEntries')+ lift $ poke ((p `plusPtr` 32 :: Ptr DescriptorUpdateTemplateType)) (templateType)+ lift $ poke ((p `plusPtr` 40 :: Ptr DescriptorSetLayout)) (descriptorSetLayout)+ lift $ poke ((p `plusPtr` 48 :: Ptr PipelineBindPoint)) (pipelineBindPoint)+ lift $ poke ((p `plusPtr` 56 :: Ptr PipelineLayout)) (pipelineLayout)+ lift $ poke ((p `plusPtr` 64 :: Ptr Word32)) (set)+ lift $ f+ cStructSize = 72+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPDescriptorUpdateEntries' <- ContT $ allocaBytesAligned @DescriptorUpdateTemplateEntry ((Data.Vector.length (mempty)) * 32) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDescriptorUpdateEntries' `plusPtr` (32 * (i)) :: Ptr DescriptorUpdateTemplateEntry) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DescriptorUpdateTemplateEntry))) (pPDescriptorUpdateEntries')+ lift $ poke ((p `plusPtr` 32 :: Ptr DescriptorUpdateTemplateType)) (zero)+ lift $ poke ((p `plusPtr` 40 :: Ptr DescriptorSetLayout)) (zero)+ lift $ poke ((p `plusPtr` 48 :: Ptr PipelineBindPoint)) (zero)+ lift $ poke ((p `plusPtr` 56 :: Ptr PipelineLayout)) (zero)+ lift $ poke ((p `plusPtr` 64 :: Ptr Word32)) (zero)+ lift $ f++instance FromCStruct DescriptorUpdateTemplateCreateInfo where+ peekCStruct p = do+ flags <- peek @DescriptorUpdateTemplateCreateFlags ((p `plusPtr` 16 :: Ptr DescriptorUpdateTemplateCreateFlags))+ descriptorUpdateEntryCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pDescriptorUpdateEntries <- peek @(Ptr DescriptorUpdateTemplateEntry) ((p `plusPtr` 24 :: Ptr (Ptr DescriptorUpdateTemplateEntry)))+ pDescriptorUpdateEntries' <- generateM (fromIntegral descriptorUpdateEntryCount) (\i -> peekCStruct @DescriptorUpdateTemplateEntry ((pDescriptorUpdateEntries `advancePtrBytes` (32 * (i)) :: Ptr DescriptorUpdateTemplateEntry)))+ templateType <- peek @DescriptorUpdateTemplateType ((p `plusPtr` 32 :: Ptr DescriptorUpdateTemplateType))+ descriptorSetLayout <- peek @DescriptorSetLayout ((p `plusPtr` 40 :: Ptr DescriptorSetLayout))+ pipelineBindPoint <- peek @PipelineBindPoint ((p `plusPtr` 48 :: Ptr PipelineBindPoint))+ pipelineLayout <- peek @PipelineLayout ((p `plusPtr` 56 :: Ptr PipelineLayout))+ set <- peek @Word32 ((p `plusPtr` 64 :: Ptr Word32))+ pure $ DescriptorUpdateTemplateCreateInfo+ flags pDescriptorUpdateEntries' templateType descriptorSetLayout pipelineBindPoint pipelineLayout set++instance Zero DescriptorUpdateTemplateCreateInfo where+ zero = DescriptorUpdateTemplateCreateInfo+ zero+ mempty+ zero+ zero+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_descriptor_update_template.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template ( DescriptorUpdateTemplateCreateInfo+ , DescriptorUpdateTemplateEntry+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data DescriptorUpdateTemplateCreateInfo++instance ToCStruct DescriptorUpdateTemplateCreateInfo+instance Show DescriptorUpdateTemplateCreateInfo++instance FromCStruct DescriptorUpdateTemplateCreateInfo+++data DescriptorUpdateTemplateEntry++instance ToCStruct DescriptorUpdateTemplateEntry+instance Show DescriptorUpdateTemplateEntry++instance FromCStruct DescriptorUpdateTemplateEntry+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_device_group.hs view
@@ -0,0 +1,935 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group ( getDeviceGroupPeerMemoryFeatures+ , cmdSetDeviceMask+ , cmdDispatchBase+ , pattern PIPELINE_CREATE_DISPATCH_BASE+ , MemoryAllocateFlagsInfo(..)+ , DeviceGroupRenderPassBeginInfo(..)+ , DeviceGroupCommandBufferBeginInfo(..)+ , DeviceGroupSubmitInfo(..)+ , DeviceGroupBindSparseInfo(..)+ , StructureType(..)+ , PipelineCreateFlagBits(..)+ , PipelineCreateFlags+ , DependencyFlagBits(..)+ , DependencyFlags+ , PeerMemoryFeatureFlagBits(..)+ , PeerMemoryFeatureFlags+ , MemoryAllocateFlagBits(..)+ , MemoryAllocateFlags+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdDispatchBase))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetDeviceMask))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetDeviceGroupPeerMemoryFeatures))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits (MemoryAllocateFlags)+import Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlags)+import Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlags)+import Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlagBits(..))+import Graphics.Vulkan.Core10.CommandBufferBuilding (Rect2D)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)+import Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(PIPELINE_CREATE_DISPATCH_BASE_BIT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO))+import Graphics.Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlagBits(..))+import Graphics.Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlags)+import Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits (MemoryAllocateFlagBits(..))+import Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits (MemoryAllocateFlags)+import Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlagBits(..))+import Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlags)+import Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(..))+import Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetDeviceGroupPeerMemoryFeatures+ :: FunPtr (Ptr Device_T -> Word32 -> Word32 -> Word32 -> Ptr PeerMemoryFeatureFlags -> IO ()) -> Ptr Device_T -> Word32 -> Word32 -> Word32 -> Ptr PeerMemoryFeatureFlags -> IO ()++-- | vkGetDeviceGroupPeerMemoryFeatures - Query supported peer memory+-- features of a device+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the memory.+--+-- - @heapIndex@ is the index of the memory heap from which the memory is+-- allocated.+--+-- - @localDeviceIndex@ is the device index of the physical device that+-- performs the memory access.+--+-- - @remoteDeviceIndex@ is the device index of the physical device that+-- the memory is allocated for.+--+-- - @pPeerMemoryFeatures@ is a pointer to a+-- 'Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits.PeerMemoryFeatureFlags'+-- bitmask indicating which types of memory accesses are supported for+-- the combination of heap, local, and remote devices.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits.PeerMemoryFeatureFlags'+getDeviceGroupPeerMemoryFeatures :: Device -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> IO (("peerMemoryFeatures" ::: PeerMemoryFeatureFlags))+getDeviceGroupPeerMemoryFeatures device heapIndex localDeviceIndex remoteDeviceIndex = evalContT $ do+ let vkGetDeviceGroupPeerMemoryFeatures' = mkVkGetDeviceGroupPeerMemoryFeatures (pVkGetDeviceGroupPeerMemoryFeatures (deviceCmds (device :: Device)))+ pPPeerMemoryFeatures <- ContT $ bracket (callocBytes @PeerMemoryFeatureFlags 4) free+ lift $ vkGetDeviceGroupPeerMemoryFeatures' (deviceHandle (device)) (heapIndex) (localDeviceIndex) (remoteDeviceIndex) (pPPeerMemoryFeatures)+ pPeerMemoryFeatures <- lift $ peek @PeerMemoryFeatureFlags pPPeerMemoryFeatures+ pure $ (pPeerMemoryFeatures)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetDeviceMask+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> IO ()++-- | vkCmdSetDeviceMask - Modify device mask of a command buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is command buffer+-- whose current device mask is modified.+--+-- - @deviceMask@ is the new value of the current device mask.+--+-- = Description+--+-- @deviceMask@ is used to filter out subsequent commands from executing on+-- all physical devices whose bit indices are not set in the mask, except+-- commands beginning a render pass instance, commands transitioning to the+-- next subpass in the render pass instance, and commands ending a render+-- pass instance, which always execute on the set of physical devices whose+-- bit indices are included in the @deviceMask@ member of the+-- 'DeviceGroupRenderPassBeginInfo' structure passed to the command+-- beginning the corresponding render pass instance.+--+-- == Valid Usage+--+-- - @deviceMask@ /must/ be a valid device mask value+--+-- - @deviceMask@ /must/ not be zero+--+-- - @deviceMask@ /must/ not include any set bits that were not in the+-- 'DeviceGroupCommandBufferBeginInfo'::@deviceMask@ value when the+-- command buffer began recording.+--+-- - If 'cmdSetDeviceMask' is called inside a render pass instance,+-- @deviceMask@ /must/ not include any set bits that were not in the+-- 'DeviceGroupRenderPassBeginInfo'::@deviceMask@ value when the render+-- pass instance began recording.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, compute, or transfer operations+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- | | | Transfer | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdSetDeviceMask :: CommandBuffer -> ("deviceMask" ::: Word32) -> IO ()+cmdSetDeviceMask commandBuffer deviceMask = do+ let vkCmdSetDeviceMask' = mkVkCmdSetDeviceMask (pVkCmdSetDeviceMask (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdSetDeviceMask' (commandBufferHandle (commandBuffer)) (deviceMask)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdDispatchBase+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> Word32 -> IO ()++-- | vkCmdDispatchBase - Dispatch compute work items+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @baseGroupX@ is the start value for the X component of+-- @WorkgroupId@.+--+-- - @baseGroupY@ is the start value for the Y component of+-- @WorkgroupId@.+--+-- - @baseGroupZ@ is the start value for the Z component of+-- @WorkgroupId@.+--+-- - @groupCountX@ is the number of local workgroups to dispatch in the X+-- dimension.+--+-- - @groupCountY@ is the number of local workgroups to dispatch in the Y+-- dimension.+--+-- - @groupCountZ@ is the number of local workgroups to dispatch in the Z+-- dimension.+--+-- = Description+--+-- When the command is executed, a global workgroup consisting of+-- @groupCountX@ × @groupCountY@ × @groupCountZ@ local workgroups is+-- assembled, with @WorkgroupId@ values ranging from [@baseGroup*@,+-- @baseGroup*@ + @groupCount*@) in each component.+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDispatch' is equivalent+-- to @vkCmdDispatchBase(0,0,0,groupCountX,groupCountY,groupCountZ)@.+--+-- == Valid Usage+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' as a result of+-- this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is accessed using+-- atomic operations as a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering, as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'+-- with a reduction mode of either+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+-- or+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+-- as a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering together with minmax filtering,+-- as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.Image' created with a+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- containing+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+-- sampled as a result of this command /must/ only be sampled using a+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+-- of+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--+-- - For each set /n/ that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a descriptor set /must/ have been bound+-- to /n/ at the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for set /n/, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - For each push constant that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a push constant value /must/ have been+-- set for the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for push constants, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - Descriptors in each bound descriptor set, specified via+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',+-- /must/ be valid if they are statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command+--+-- - A valid pipeline /must/ be bound to the pipeline bind point used by+-- this command+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command requires any dynamic state,+-- that state /must/ have been set for+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and done so after+-- any previously bound pipeline with the corresponding state not+-- specified as dynamic+--+-- - There /must/ not have been any calls to dynamic state setting+-- commands for any state not specified as dynamic in the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command, since that pipeline was+-- bound+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used to sample+-- from any 'Graphics.Vulkan.Core10.Handles.Image' with a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' of the type+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY',+-- in any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions with @ImplicitLod@, @Dref@ or @Proj@ in their name, in+-- any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions that includes a LOD bias or any offset values, in any+-- shader stage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a uniform buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a storage buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, any resource accessed by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command /must/ not be a protected+-- resource+--+-- - @baseGroupX@ /must/ be less than+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]+--+-- - @baseGroupX@ /must/ be less than+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]+--+-- - @baseGroupZ@ /must/ be less than+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]+--+-- - @groupCountX@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]+-- minus @baseGroupX@+--+-- - @groupCountY@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]+-- minus @baseGroupY@+--+-- - @groupCountZ@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]+-- minus @baseGroupZ@+--+-- - If any of @baseGroupX@, @baseGroupY@, or @baseGroupZ@ are not zero,+-- then the bound compute pipeline /must/ have been created with the+-- 'PIPELINE_CREATE_DISPATCH_BASE' flag.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Compute | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdDispatchBase :: CommandBuffer -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()+cmdDispatchBase commandBuffer baseGroupX baseGroupY baseGroupZ groupCountX groupCountY groupCountZ = do+ let vkCmdDispatchBase' = mkVkCmdDispatchBase (pVkCmdDispatchBase (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdDispatchBase' (commandBufferHandle (commandBuffer)) (baseGroupX) (baseGroupY) (baseGroupZ) (groupCountX) (groupCountY) (groupCountZ)+ pure $ ()+++-- No documentation found for TopLevel "VK_PIPELINE_CREATE_DISPATCH_BASE"+pattern PIPELINE_CREATE_DISPATCH_BASE = PIPELINE_CREATE_DISPATCH_BASE_BIT+++-- | VkMemoryAllocateFlagsInfo - Structure controlling how many instances of+-- memory will be allocated+--+-- = Description+--+-- If+-- 'Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_MASK_BIT'+-- is not set, the number of instances allocated depends on whether+-- 'Graphics.Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_MULTI_INSTANCE_BIT'+-- is set in the memory heap. If+-- 'Graphics.Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_MULTI_INSTANCE_BIT'+-- is set, then memory is allocated for every physical device in the+-- logical device (as if @deviceMask@ has bits set for all device indices).+-- If+-- 'Graphics.Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_MULTI_INSTANCE_BIT'+-- is not set, then a single instance of memory is allocated (as if+-- @deviceMask@ is set to one).+--+-- On some implementations, allocations from a multi-instance heap /may/+-- consume memory on all physical devices even if the @deviceMask@ excludes+-- some devices. If+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.PhysicalDeviceGroupProperties'::@subsetAllocation@+-- is 'Graphics.Vulkan.Core10.BaseType.TRUE', then memory is only consumed+-- for the devices in the device mask.+--+-- Note+--+-- In practice, most allocations on a multi-instance heap will be allocated+-- across all physical devices. Unicast allocation support is an optional+-- optimization for a minority of allocations.+--+-- == Valid Usage+--+-- - If+-- 'Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_MASK_BIT'+-- is set, @deviceMask@ /must/ be a valid device mask.+--+-- - If+-- 'Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_MASK_BIT'+-- is set, @deviceMask@ /must/ not be zero+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO'+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits.MemoryAllocateFlagBits'+-- values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits.MemoryAllocateFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data MemoryAllocateFlagsInfo = MemoryAllocateFlagsInfo+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits.MemoryAllocateFlagBits'+ -- controlling the allocation.+ flags :: MemoryAllocateFlags+ , -- | @deviceMask@ is a mask of physical devices in the logical device,+ -- indicating that memory /must/ be allocated on each device in the mask,+ -- if+ -- 'Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_MASK_BIT'+ -- is set in 'Graphics.Vulkan.Core10.BaseType.Flags'.+ deviceMask :: Word32+ }+ deriving (Typeable)+deriving instance Show MemoryAllocateFlagsInfo++instance ToCStruct MemoryAllocateFlagsInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p MemoryAllocateFlagsInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr MemoryAllocateFlags)) (flags)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (deviceMask)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ f++instance FromCStruct MemoryAllocateFlagsInfo where+ peekCStruct p = do+ flags <- peek @MemoryAllocateFlags ((p `plusPtr` 16 :: Ptr MemoryAllocateFlags))+ deviceMask <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pure $ MemoryAllocateFlagsInfo+ flags deviceMask++instance Storable MemoryAllocateFlagsInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MemoryAllocateFlagsInfo where+ zero = MemoryAllocateFlagsInfo+ zero+ zero+++-- | VkDeviceGroupRenderPassBeginInfo - Set the initial device mask and+-- render areas for a render pass instance+--+-- = Description+--+-- The @deviceMask@ serves several purposes. It is an upper bound on the+-- set of physical devices that /can/ be used during the render pass+-- instance, and the initial device mask when the render pass instance+-- begins. In addition, commands transitioning to the next subpass in the+-- render pass instance and commands ending the render pass instance, and,+-- accordingly render pass attachment load, store, and resolve operations+-- and subpass dependencies corresponding to the render pass instance, are+-- executed on the physical devices included in the device mask provided+-- here.+--+-- If @deviceRenderAreaCount@ is not zero, then the elements of+-- @pDeviceRenderAreas@ override the value of+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo'::@renderArea@,+-- and provide a render area specific to each physical device. These render+-- areas serve the same purpose as+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo'::@renderArea@,+-- including controlling the region of attachments that are cleared by+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'+-- and that are resolved into resolve attachments.+--+-- If this structure is not present, the render pass instance’s device mask+-- is the value of 'DeviceGroupCommandBufferBeginInfo'::@deviceMask@. If+-- this structure is not present or if @deviceRenderAreaCount@ is zero,+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo'::@renderArea@+-- is used for all physical devices.+--+-- == Valid Usage+--+-- - @deviceMask@ /must/ be a valid device mask value+--+-- - @deviceMask@ /must/ not be zero+--+-- - @deviceMask@ /must/ be a subset of the command buffer’s initial+-- device mask+--+-- - @deviceRenderAreaCount@ /must/ either be zero or equal to the number+-- of physical devices in the logical device.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO'+--+-- - If @deviceRenderAreaCount@ is not @0@, @pDeviceRenderAreas@ /must/+-- be a valid pointer to an array of @deviceRenderAreaCount@+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D' structures+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DeviceGroupRenderPassBeginInfo = DeviceGroupRenderPassBeginInfo+ { -- | @deviceMask@ is the device mask for the render pass instance.+ deviceMask :: Word32+ , -- | @pDeviceRenderAreas@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D' structures+ -- defining the render area for each physical device.+ deviceRenderAreas :: Vector Rect2D+ }+ deriving (Typeable)+deriving instance Show DeviceGroupRenderPassBeginInfo++instance ToCStruct DeviceGroupRenderPassBeginInfo where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DeviceGroupRenderPassBeginInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (deviceMask)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (deviceRenderAreas)) :: Word32))+ pPDeviceRenderAreas' <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (deviceRenderAreas)) * 16) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDeviceRenderAreas' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (deviceRenderAreas)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Rect2D))) (pPDeviceRenderAreas')+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ pPDeviceRenderAreas' <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (mempty)) * 16) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDeviceRenderAreas' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Rect2D))) (pPDeviceRenderAreas')+ lift $ f++instance FromCStruct DeviceGroupRenderPassBeginInfo where+ peekCStruct p = do+ deviceMask <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ deviceRenderAreaCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pDeviceRenderAreas <- peek @(Ptr Rect2D) ((p `plusPtr` 24 :: Ptr (Ptr Rect2D)))+ pDeviceRenderAreas' <- generateM (fromIntegral deviceRenderAreaCount) (\i -> peekCStruct @Rect2D ((pDeviceRenderAreas `advancePtrBytes` (16 * (i)) :: Ptr Rect2D)))+ pure $ DeviceGroupRenderPassBeginInfo+ deviceMask pDeviceRenderAreas'++instance Zero DeviceGroupRenderPassBeginInfo where+ zero = DeviceGroupRenderPassBeginInfo+ zero+ mempty+++-- | VkDeviceGroupCommandBufferBeginInfo - Set the initial device mask for a+-- command buffer+--+-- = Description+--+-- The initial device mask also acts as an upper bound on the set of+-- devices that /can/ ever be in the device mask in the command buffer.+--+-- If this structure is not present, the initial value of a command+-- buffer’s device mask is set to include all physical devices in the+-- logical device when the command buffer begins recording.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DeviceGroupCommandBufferBeginInfo = DeviceGroupCommandBufferBeginInfo+ { -- | @deviceMask@ /must/ not be zero+ deviceMask :: Word32 }+ deriving (Typeable)+deriving instance Show DeviceGroupCommandBufferBeginInfo++instance ToCStruct DeviceGroupCommandBufferBeginInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DeviceGroupCommandBufferBeginInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (deviceMask)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ f++instance FromCStruct DeviceGroupCommandBufferBeginInfo where+ peekCStruct p = do+ deviceMask <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pure $ DeviceGroupCommandBufferBeginInfo+ deviceMask++instance Storable DeviceGroupCommandBufferBeginInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DeviceGroupCommandBufferBeginInfo where+ zero = DeviceGroupCommandBufferBeginInfo+ zero+++-- | VkDeviceGroupSubmitInfo - Structure indicating which physical devices+-- execute semaphore operations and command buffers+--+-- = Description+--+-- If this structure is not present, semaphore operations and command+-- buffers execute on device index zero.+--+-- == Valid Usage+--+-- - @waitSemaphoreCount@ /must/ equal+-- 'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@waitSemaphoreCount@+--+-- - @commandBufferCount@ /must/ equal+-- 'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@commandBufferCount@+--+-- - @signalSemaphoreCount@ /must/ equal+-- 'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@signalSemaphoreCount@+--+-- - All elements of @pWaitSemaphoreDeviceIndices@ and+-- @pSignalSemaphoreDeviceIndices@ /must/ be valid device indices+--+-- - All elements of @pCommandBufferDeviceMasks@ /must/ be valid device+-- masks+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO'+--+-- - If @waitSemaphoreCount@ is not @0@, @pWaitSemaphoreDeviceIndices@+-- /must/ be a valid pointer to an array of @waitSemaphoreCount@+-- @uint32_t@ values+--+-- - If @commandBufferCount@ is not @0@, @pCommandBufferDeviceMasks@+-- /must/ be a valid pointer to an array of @commandBufferCount@+-- @uint32_t@ values+--+-- - If @signalSemaphoreCount@ is not @0@,+-- @pSignalSemaphoreDeviceIndices@ /must/ be a valid pointer to an+-- array of @signalSemaphoreCount@ @uint32_t@ values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DeviceGroupSubmitInfo = DeviceGroupSubmitInfo+ { -- | @pWaitSemaphoreDeviceIndices@ is a pointer to an array of+ -- @waitSemaphoreCount@ device indices indicating which physical device+ -- executes the semaphore wait operation in the corresponding element of+ -- 'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@pWaitSemaphores@.+ waitSemaphoreDeviceIndices :: Vector Word32+ , -- | @pCommandBufferDeviceMasks@ is a pointer to an array of+ -- @commandBufferCount@ device masks indicating which physical devices+ -- execute the command buffer in the corresponding element of+ -- 'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@pCommandBuffers@. A physical+ -- device executes the command buffer if the corresponding bit is set in+ -- the mask.+ commandBufferDeviceMasks :: Vector Word32+ , -- | @pSignalSemaphoreDeviceIndices@ is a pointer to an array of+ -- @signalSemaphoreCount@ device indices indicating which physical device+ -- executes the semaphore signal operation in the corresponding element of+ -- 'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@pSignalSemaphores@.+ signalSemaphoreDeviceIndices :: Vector Word32+ }+ deriving (Typeable)+deriving instance Show DeviceGroupSubmitInfo++instance ToCStruct DeviceGroupSubmitInfo where+ withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DeviceGroupSubmitInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (waitSemaphoreDeviceIndices)) :: Word32))+ pPWaitSemaphoreDeviceIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (waitSemaphoreDeviceIndices)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPWaitSemaphoreDeviceIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (waitSemaphoreDeviceIndices)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPWaitSemaphoreDeviceIndices')+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (commandBufferDeviceMasks)) :: Word32))+ pPCommandBufferDeviceMasks' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (commandBufferDeviceMasks)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPCommandBufferDeviceMasks' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (commandBufferDeviceMasks)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Word32))) (pPCommandBufferDeviceMasks')+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (signalSemaphoreDeviceIndices)) :: Word32))+ pPSignalSemaphoreDeviceIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (signalSemaphoreDeviceIndices)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPSignalSemaphoreDeviceIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (signalSemaphoreDeviceIndices)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr Word32))) (pPSignalSemaphoreDeviceIndices')+ lift $ f+ cStructSize = 64+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPWaitSemaphoreDeviceIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPWaitSemaphoreDeviceIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPWaitSemaphoreDeviceIndices')+ pPCommandBufferDeviceMasks' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPCommandBufferDeviceMasks' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Word32))) (pPCommandBufferDeviceMasks')+ pPSignalSemaphoreDeviceIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPSignalSemaphoreDeviceIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr Word32))) (pPSignalSemaphoreDeviceIndices')+ lift $ f++instance FromCStruct DeviceGroupSubmitInfo where+ peekCStruct p = do+ waitSemaphoreCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pWaitSemaphoreDeviceIndices <- peek @(Ptr Word32) ((p `plusPtr` 24 :: Ptr (Ptr Word32)))+ pWaitSemaphoreDeviceIndices' <- generateM (fromIntegral waitSemaphoreCount) (\i -> peek @Word32 ((pWaitSemaphoreDeviceIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ commandBufferCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pCommandBufferDeviceMasks <- peek @(Ptr Word32) ((p `plusPtr` 40 :: Ptr (Ptr Word32)))+ pCommandBufferDeviceMasks' <- generateM (fromIntegral commandBufferCount) (\i -> peek @Word32 ((pCommandBufferDeviceMasks `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ signalSemaphoreCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+ pSignalSemaphoreDeviceIndices <- peek @(Ptr Word32) ((p `plusPtr` 56 :: Ptr (Ptr Word32)))+ pSignalSemaphoreDeviceIndices' <- generateM (fromIntegral signalSemaphoreCount) (\i -> peek @Word32 ((pSignalSemaphoreDeviceIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ pure $ DeviceGroupSubmitInfo+ pWaitSemaphoreDeviceIndices' pCommandBufferDeviceMasks' pSignalSemaphoreDeviceIndices'++instance Zero DeviceGroupSubmitInfo where+ zero = DeviceGroupSubmitInfo+ mempty+ mempty+ mempty+++-- | VkDeviceGroupBindSparseInfo - Structure indicating which instances are+-- bound+--+-- = Description+--+-- These device indices apply to all buffer and image memory binds included+-- in the batch pointing to this structure. The semaphore waits and signals+-- for the batch are executed only by the physical device specified by the+-- @resourceDeviceIndex@.+--+-- If this structure is not present, @resourceDeviceIndex@ and+-- @memoryDeviceIndex@ are assumed to be zero.+--+-- == Valid Usage+--+-- - @resourceDeviceIndex@ and @memoryDeviceIndex@ /must/ both be valid+-- device indices.+--+-- - Each memory allocation bound in this batch /must/ have allocated an+-- instance for @memoryDeviceIndex@.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DeviceGroupBindSparseInfo = DeviceGroupBindSparseInfo+ { -- | @resourceDeviceIndex@ is a device index indicating which instance of the+ -- resource is bound.+ resourceDeviceIndex :: Word32+ , -- | @memoryDeviceIndex@ is a device index indicating which instance of the+ -- memory the resource instance is bound to.+ memoryDeviceIndex :: Word32+ }+ deriving (Typeable)+deriving instance Show DeviceGroupBindSparseInfo++instance ToCStruct DeviceGroupBindSparseInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DeviceGroupBindSparseInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (resourceDeviceIndex)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (memoryDeviceIndex)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ f++instance FromCStruct DeviceGroupBindSparseInfo where+ peekCStruct p = do+ resourceDeviceIndex <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ memoryDeviceIndex <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pure $ DeviceGroupBindSparseInfo+ resourceDeviceIndex memoryDeviceIndex++instance Storable DeviceGroupBindSparseInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DeviceGroupBindSparseInfo where+ zero = DeviceGroupBindSparseInfo+ zero+ zero+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_device_group.hs-boot view
@@ -0,0 +1,50 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group ( DeviceGroupBindSparseInfo+ , DeviceGroupCommandBufferBeginInfo+ , DeviceGroupRenderPassBeginInfo+ , DeviceGroupSubmitInfo+ , MemoryAllocateFlagsInfo+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data DeviceGroupBindSparseInfo++instance ToCStruct DeviceGroupBindSparseInfo+instance Show DeviceGroupBindSparseInfo++instance FromCStruct DeviceGroupBindSparseInfo+++data DeviceGroupCommandBufferBeginInfo++instance ToCStruct DeviceGroupCommandBufferBeginInfo+instance Show DeviceGroupCommandBufferBeginInfo++instance FromCStruct DeviceGroupCommandBufferBeginInfo+++data DeviceGroupRenderPassBeginInfo++instance ToCStruct DeviceGroupRenderPassBeginInfo+instance Show DeviceGroupRenderPassBeginInfo++instance FromCStruct DeviceGroupRenderPassBeginInfo+++data DeviceGroupSubmitInfo++instance ToCStruct DeviceGroupSubmitInfo+instance Show DeviceGroupSubmitInfo++instance FromCStruct DeviceGroupSubmitInfo+++data MemoryAllocateFlagsInfo++instance ToCStruct MemoryAllocateFlagsInfo+instance Show MemoryAllocateFlagsInfo++instance FromCStruct MemoryAllocateFlagsInfo+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.hs view
@@ -0,0 +1,307 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2 ( BindBufferMemoryDeviceGroupInfo(..)+ , BindImageMemoryDeviceGroupInfo(..)+ , StructureType(..)+ , ImageCreateFlagBits(..)+ , ImageCreateFlags+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.CommandBufferBuilding (Rect2D)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO))+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(..))+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- | VkBindBufferMemoryDeviceGroupInfo - Structure specifying device within a+-- group to bind to+--+-- = Members+--+-- If the @pNext@ list of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo'+-- includes a 'BindBufferMemoryDeviceGroupInfo' structure, then that+-- structure determines how memory is bound to buffers across multiple+-- devices in a device group.+--+-- = Description+--+-- The 'BindBufferMemoryDeviceGroupInfo' structure is defined as:+--+-- - @sType@ is the type of this structure.+--+-- - @pNext@ is @NULL@ or a pointer to an extension-specific structure.+--+-- - @deviceIndexCount@ is the number of elements in @pDeviceIndices@.+--+-- - @pDeviceIndices@ is a pointer to an array of device indices.+--+-- If @deviceIndexCount@ is greater than zero, then on device index i the+-- buffer is attached to the instance of @memory@ on the physical device+-- with device index pDeviceIndices[i].+--+-- If @deviceIndexCount@ is zero and @memory@ comes from a memory heap with+-- the+-- 'Graphics.Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_MULTI_INSTANCE_BIT'+-- bit set, then it is as if @pDeviceIndices@ contains consecutive indices+-- from zero to the number of physical devices in the logical device, minus+-- one. In other words, by default each physical device attaches to its own+-- instance of @memory@.+--+-- If @deviceIndexCount@ is zero and @memory@ comes from a memory heap+-- without the+-- 'Graphics.Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_MULTI_INSTANCE_BIT'+-- bit set, then it is as if @pDeviceIndices@ contains an array of zeros.+-- In other words, by default each physical device attaches to instance+-- zero.+--+-- == Valid Usage+--+-- - @deviceIndexCount@ /must/ either be zero or equal to the number of+-- physical devices in the logical device+--+-- - All elements of @pDeviceIndices@ /must/ be valid device indices+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO'+--+-- - If @deviceIndexCount@ is not @0@, @pDeviceIndices@ /must/ be a valid+-- pointer to an array of @deviceIndexCount@ @uint32_t@ values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data BindBufferMemoryDeviceGroupInfo = BindBufferMemoryDeviceGroupInfo+ { -- No documentation found for Nested "VkBindBufferMemoryDeviceGroupInfo" "pDeviceIndices"+ deviceIndices :: Vector Word32 }+ deriving (Typeable)+deriving instance Show BindBufferMemoryDeviceGroupInfo++instance ToCStruct BindBufferMemoryDeviceGroupInfo where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p BindBufferMemoryDeviceGroupInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (deviceIndices)) :: Word32))+ pPDeviceIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (deviceIndices)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (deviceIndices)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPDeviceIndices')+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPDeviceIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPDeviceIndices')+ lift $ f++instance FromCStruct BindBufferMemoryDeviceGroupInfo where+ peekCStruct p = do+ deviceIndexCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pDeviceIndices <- peek @(Ptr Word32) ((p `plusPtr` 24 :: Ptr (Ptr Word32)))+ pDeviceIndices' <- generateM (fromIntegral deviceIndexCount) (\i -> peek @Word32 ((pDeviceIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ pure $ BindBufferMemoryDeviceGroupInfo+ pDeviceIndices'++instance Zero BindBufferMemoryDeviceGroupInfo where+ zero = BindBufferMemoryDeviceGroupInfo+ mempty+++-- | VkBindImageMemoryDeviceGroupInfo - Structure specifying device within a+-- group to bind to+--+-- = Members+--+-- If the @pNext@ list of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo'+-- includes a 'BindImageMemoryDeviceGroupInfo' structure, then that+-- structure determines how memory is bound to images across multiple+-- devices in a device group.+--+-- = Description+--+-- The 'BindImageMemoryDeviceGroupInfo' structure is defined as:+--+-- - @sType@ is the type of this structure.+--+-- - @pNext@ is @NULL@ or a pointer to an extension-specific structure.+--+-- - @deviceIndexCount@ is the number of elements in @pDeviceIndices@.+--+-- - @pDeviceIndices@ is a pointer to an array of device indices.+--+-- - @splitInstanceBindRegionCount@ is the number of elements in+-- @pSplitInstanceBindRegions@.+--+-- - @pSplitInstanceBindRegions@ is a pointer to an array of+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D' structures+-- describing which regions of the image are attached to each instance+-- of memory.+--+-- If @deviceIndexCount@ is greater than zero, then on device index i+-- 'Graphics.Vulkan.Core10.Handles.Image' is attached to the instance of+-- the memory on the physical device with device index pDeviceIndices[i].+--+-- Let N be the number of physical devices in the logical device. If+-- @splitInstanceBindRegionCount@ is greater than zero, then+-- @pSplitInstanceBindRegions@ is an array of N2 rectangles, where the+-- image region specified by the rectangle at element i*N+j in resource+-- instance i is bound to the memory instance j. The blocks of the memory+-- that are bound to each sparse image block region use an offset in+-- memory, relative to @memoryOffset@, computed as if the whole image were+-- being bound to a contiguous range of memory. In other words,+-- horizontally adjacent image blocks use consecutive blocks of memory,+-- vertically adjacent image blocks are separated by the number of bytes+-- per block multiplied by the width in blocks of+-- 'Graphics.Vulkan.Core10.Handles.Image', and the block at (0,0)+-- corresponds to memory starting at @memoryOffset@.+--+-- If @splitInstanceBindRegionCount@ and @deviceIndexCount@ are zero and+-- the memory comes from a memory heap with the+-- 'Graphics.Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_MULTI_INSTANCE_BIT'+-- bit set, then it is as if @pDeviceIndices@ contains consecutive indices+-- from zero to the number of physical devices in the logical device, minus+-- one. In other words, by default each physical device attaches to its own+-- instance of the memory.+--+-- If @splitInstanceBindRegionCount@ and @deviceIndexCount@ are zero and+-- the memory comes from a memory heap without the+-- 'Graphics.Vulkan.Core10.Enums.MemoryHeapFlagBits.MEMORY_HEAP_MULTI_INSTANCE_BIT'+-- bit set, then it is as if @pDeviceIndices@ contains an array of zeros.+-- In other words, by default each physical device attaches to instance+-- zero.+--+-- == Valid Usage+--+-- - At least one of @deviceIndexCount@ and+-- @splitInstanceBindRegionCount@ /must/ be zero.+--+-- - @deviceIndexCount@ /must/ either be zero or equal to the number of+-- physical devices in the logical device+--+-- - All elements of @pDeviceIndices@ /must/ be valid device indices.+--+-- - @splitInstanceBindRegionCount@ /must/ either be zero or equal to the+-- number of physical devices in the logical device squared+--+-- - Elements of @pSplitInstanceBindRegions@ that correspond to the same+-- instance of an image /must/ not overlap.+--+-- - The @offset.x@ member of any element of @pSplitInstanceBindRegions@+-- /must/ be a multiple of the sparse image block width+-- ('Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties'::@imageGranularity.width@)+-- of all non-metadata aspects of the image+--+-- - The @offset.y@ member of any element of @pSplitInstanceBindRegions@+-- /must/ be a multiple of the sparse image block height+-- ('Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties'::@imageGranularity.height@)+-- of all non-metadata aspects of the image+--+-- - The @extent.width@ member of any element of+-- @pSplitInstanceBindRegions@ /must/ either be a multiple of the+-- sparse image block width of all non-metadata aspects of the image,+-- or else @extent.width@ + @offset.x@ /must/ equal the width of the+-- image subresource+--+-- - The @extent.height@ member of any element of+-- @pSplitInstanceBindRegions@ /must/ either be a multiple of the+-- sparse image block height of all non-metadata aspects of the image,+-- or else @extent.height@ + @offset.y@ /must/ equal the width of the+-- image subresource+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO'+--+-- - If @deviceIndexCount@ is not @0@, @pDeviceIndices@ /must/ be a valid+-- pointer to an array of @deviceIndexCount@ @uint32_t@ values+--+-- - If @splitInstanceBindRegionCount@ is not @0@,+-- @pSplitInstanceBindRegions@ /must/ be a valid pointer to an array of+-- @splitInstanceBindRegionCount@+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D' structures+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data BindImageMemoryDeviceGroupInfo = BindImageMemoryDeviceGroupInfo+ { -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "pDeviceIndices"+ deviceIndices :: Vector Word32+ , -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "pSplitInstanceBindRegions"+ splitInstanceBindRegions :: Vector Rect2D+ }+ deriving (Typeable)+deriving instance Show BindImageMemoryDeviceGroupInfo++instance ToCStruct BindImageMemoryDeviceGroupInfo where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p BindImageMemoryDeviceGroupInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (deviceIndices)) :: Word32))+ pPDeviceIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (deviceIndices)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (deviceIndices)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPDeviceIndices')+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (splitInstanceBindRegions)) :: Word32))+ pPSplitInstanceBindRegions' <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (splitInstanceBindRegions)) * 16) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPSplitInstanceBindRegions' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (splitInstanceBindRegions)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Rect2D))) (pPSplitInstanceBindRegions')+ lift $ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPDeviceIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPDeviceIndices')+ pPSplitInstanceBindRegions' <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (mempty)) * 16) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPSplitInstanceBindRegions' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Rect2D))) (pPSplitInstanceBindRegions')+ lift $ f++instance FromCStruct BindImageMemoryDeviceGroupInfo where+ peekCStruct p = do+ deviceIndexCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pDeviceIndices <- peek @(Ptr Word32) ((p `plusPtr` 24 :: Ptr (Ptr Word32)))+ pDeviceIndices' <- generateM (fromIntegral deviceIndexCount) (\i -> peek @Word32 ((pDeviceIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ splitInstanceBindRegionCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pSplitInstanceBindRegions <- peek @(Ptr Rect2D) ((p `plusPtr` 40 :: Ptr (Ptr Rect2D)))+ pSplitInstanceBindRegions' <- generateM (fromIntegral splitInstanceBindRegionCount) (\i -> peekCStruct @Rect2D ((pSplitInstanceBindRegions `advancePtrBytes` (16 * (i)) :: Ptr Rect2D)))+ pure $ BindImageMemoryDeviceGroupInfo+ pDeviceIndices' pSplitInstanceBindRegions'++instance Zero BindImageMemoryDeviceGroupInfo where+ zero = BindImageMemoryDeviceGroupInfo+ mempty+ mempty+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2 ( BindBufferMemoryDeviceGroupInfo+ , BindImageMemoryDeviceGroupInfo+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data BindBufferMemoryDeviceGroupInfo++instance ToCStruct BindBufferMemoryDeviceGroupInfo+instance Show BindBufferMemoryDeviceGroupInfo++instance FromCStruct BindBufferMemoryDeviceGroupInfo+++data BindImageMemoryDeviceGroupInfo++instance ToCStruct BindImageMemoryDeviceGroupInfo+instance Show BindImageMemoryDeviceGroupInfo++instance FromCStruct BindImageMemoryDeviceGroupInfo+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_device_group_creation.hs view
@@ -0,0 +1,324 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation ( enumeratePhysicalDeviceGroups+ , PhysicalDeviceGroupProperties(..)+ , DeviceGroupDeviceCreateInfo(..)+ , StructureType(..)+ , MemoryHeapFlagBits(..)+ , MemoryHeapFlags+ , MAX_DEVICE_GROUP_SIZE+ , pattern MAX_DEVICE_GROUP_SIZE+ ) where++import Control.Exception.Base (bracket)+import Control.Monad (unless)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+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.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import qualified Data.Vector.Storable.Sized (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Instance)+import Graphics.Vulkan.Core10.Handles (Instance(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkEnumeratePhysicalDeviceGroups))+import Graphics.Vulkan.Core10.Handles (Instance_T)+import Graphics.Vulkan.Core10.APIConstants (MAX_DEVICE_GROUP_SIZE)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.APIConstants (pattern MAX_DEVICE_GROUP_SIZE)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Core10.APIConstants (MAX_DEVICE_GROUP_SIZE)+import Graphics.Vulkan.Core10.Enums.MemoryHeapFlagBits (MemoryHeapFlagBits(..))+import Graphics.Vulkan.Core10.Enums.MemoryHeapFlagBits (MemoryHeapFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+import Graphics.Vulkan.Core10.APIConstants (pattern MAX_DEVICE_GROUP_SIZE)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkEnumeratePhysicalDeviceGroups+ :: FunPtr (Ptr Instance_T -> Ptr Word32 -> Ptr PhysicalDeviceGroupProperties -> IO Result) -> Ptr Instance_T -> Ptr Word32 -> Ptr PhysicalDeviceGroupProperties -> IO Result++-- | vkEnumeratePhysicalDeviceGroups - Enumerates groups of physical devices+-- that can be used to create a single logical device+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' is a handle to a Vulkan+-- instance previously created with+-- 'Graphics.Vulkan.Core10.DeviceInitialization.createInstance'.+--+-- - @pPhysicalDeviceGroupCount@ is a pointer to an integer related to+-- the number of device groups available or queried, as described+-- below.+--+-- - @pPhysicalDeviceGroupProperties@ is either @NULL@ or a pointer to an+-- array of 'PhysicalDeviceGroupProperties' structures.+--+-- = Description+--+-- If @pPhysicalDeviceGroupProperties@ is @NULL@, then the number of device+-- groups available is returned in @pPhysicalDeviceGroupCount@. Otherwise,+-- @pPhysicalDeviceGroupCount@ /must/ point to a variable set by the user+-- to the number of elements in the @pPhysicalDeviceGroupProperties@ array,+-- and on return the variable is overwritten with the number of structures+-- actually written to @pPhysicalDeviceGroupProperties@. If+-- @pPhysicalDeviceGroupCount@ is less than the number of device groups+-- available, at most @pPhysicalDeviceGroupCount@ structures will be+-- written. If @pPhysicalDeviceGroupCount@ is smaller than the number of+-- device groups available,+-- 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned+-- instead of 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS', to indicate+-- that not all the available device groups were returned.+--+-- Every physical device /must/ be in exactly one device group.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle+--+-- - @pPhysicalDeviceGroupCount@ /must/ be a valid pointer to a+-- @uint32_t@ value+--+-- - If the value referenced by @pPhysicalDeviceGroupCount@ is not @0@,+-- and @pPhysicalDeviceGroupProperties@ is not @NULL@,+-- @pPhysicalDeviceGroupProperties@ /must/ be a valid pointer to an+-- array of @pPhysicalDeviceGroupCount@ 'PhysicalDeviceGroupProperties'+-- structures+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Instance',+-- 'PhysicalDeviceGroupProperties'+enumeratePhysicalDeviceGroups :: Instance -> IO (Result, ("physicalDeviceGroupProperties" ::: Vector PhysicalDeviceGroupProperties))+enumeratePhysicalDeviceGroups instance' = evalContT $ do+ let vkEnumeratePhysicalDeviceGroups' = mkVkEnumeratePhysicalDeviceGroups (pVkEnumeratePhysicalDeviceGroups (instanceCmds (instance' :: Instance)))+ let instance'' = instanceHandle (instance')+ pPPhysicalDeviceGroupCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkEnumeratePhysicalDeviceGroups' instance'' (pPPhysicalDeviceGroupCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pPhysicalDeviceGroupCount <- lift $ peek @Word32 pPPhysicalDeviceGroupCount+ pPPhysicalDeviceGroupProperties <- ContT $ bracket (callocBytes @PhysicalDeviceGroupProperties ((fromIntegral (pPhysicalDeviceGroupCount)) * 288)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPPhysicalDeviceGroupProperties `advancePtrBytes` (i * 288) :: Ptr PhysicalDeviceGroupProperties) . ($ ())) [0..(fromIntegral (pPhysicalDeviceGroupCount)) - 1]+ r' <- lift $ vkEnumeratePhysicalDeviceGroups' instance'' (pPPhysicalDeviceGroupCount) ((pPPhysicalDeviceGroupProperties))+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pPhysicalDeviceGroupCount' <- lift $ peek @Word32 pPPhysicalDeviceGroupCount+ pPhysicalDeviceGroupProperties' <- lift $ generateM (fromIntegral (pPhysicalDeviceGroupCount')) (\i -> peekCStruct @PhysicalDeviceGroupProperties (((pPPhysicalDeviceGroupProperties) `advancePtrBytes` (288 * (i)) :: Ptr PhysicalDeviceGroupProperties)))+ pure $ ((r'), pPhysicalDeviceGroupProperties')+++-- | VkPhysicalDeviceGroupProperties - Structure specifying physical device+-- group properties+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'enumeratePhysicalDeviceGroups',+-- 'Graphics.Vulkan.Extensions.VK_KHR_device_group_creation.enumeratePhysicalDeviceGroupsKHR'+data PhysicalDeviceGroupProperties = PhysicalDeviceGroupProperties+ { -- | @physicalDeviceCount@ is the number of physical devices in the group.+ physicalDeviceCount :: Word32+ , -- | @physicalDevices@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.MAX_DEVICE_GROUP_SIZE'+ -- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handles representing all+ -- physical devices in the group. The first @physicalDeviceCount@ elements+ -- of the array will be valid.+ physicalDevices :: Vector (Ptr PhysicalDevice_T)+ , -- | @subsetAllocation@ specifies whether logical devices created from the+ -- group support allocating device memory on a subset of devices, via the+ -- @deviceMask@ member of the+ -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group.MemoryAllocateFlagsInfo'.+ -- If this is 'Graphics.Vulkan.Core10.BaseType.FALSE', then all device+ -- memory allocations are made across all physical devices in the group. If+ -- @physicalDeviceCount@ is @1@, then @subsetAllocation@ /must/ be+ -- 'Graphics.Vulkan.Core10.BaseType.FALSE'.+ subsetAllocation :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceGroupProperties++instance ToCStruct PhysicalDeviceGroupProperties where+ withCStruct x f = allocaBytesAligned 288 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceGroupProperties{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (physicalDeviceCount)+ unless ((Data.Vector.length $ (physicalDevices)) <= MAX_DEVICE_GROUP_SIZE) $+ throwIO $ IOError Nothing InvalidArgument "" "physicalDevices is too long, a maximum of MAX_DEVICE_GROUP_SIZE elements are allowed" Nothing Nothing+ Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 24 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DEVICE_GROUP_SIZE (Ptr PhysicalDevice_T))))) `plusPtr` (8 * (i)) :: Ptr (Ptr PhysicalDevice_T)) (e)) (physicalDevices)+ poke ((p `plusPtr` 280 :: Ptr Bool32)) (boolToBool32 (subsetAllocation))+ f+ cStructSize = 288+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ unless ((Data.Vector.length $ (mempty)) <= MAX_DEVICE_GROUP_SIZE) $+ throwIO $ IOError Nothing InvalidArgument "" "physicalDevices is too long, a maximum of MAX_DEVICE_GROUP_SIZE elements are allowed" Nothing Nothing+ Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 24 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DEVICE_GROUP_SIZE (Ptr PhysicalDevice_T))))) `plusPtr` (8 * (i)) :: Ptr (Ptr PhysicalDevice_T)) (e)) (mempty)+ poke ((p `plusPtr` 280 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceGroupProperties where+ peekCStruct p = do+ physicalDeviceCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ physicalDevices <- generateM (MAX_DEVICE_GROUP_SIZE) (\i -> peek @(Ptr PhysicalDevice_T) (((lowerArrayPtr @(Ptr PhysicalDevice_T) ((p `plusPtr` 24 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DEVICE_GROUP_SIZE (Ptr PhysicalDevice_T))))) `advancePtrBytes` (8 * (i)) :: Ptr (Ptr PhysicalDevice_T))))+ subsetAllocation <- peek @Bool32 ((p `plusPtr` 280 :: Ptr Bool32))+ pure $ PhysicalDeviceGroupProperties+ physicalDeviceCount physicalDevices (bool32ToBool subsetAllocation)++instance Storable PhysicalDeviceGroupProperties where+ sizeOf ~_ = 288+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceGroupProperties where+ zero = PhysicalDeviceGroupProperties+ zero+ mempty+ zero+++-- | VkDeviceGroupDeviceCreateInfo - Create a logical device from multiple+-- physical devices+--+-- = Description+--+-- The elements of the @pPhysicalDevices@ array are an ordered list of the+-- physical devices that the logical device represents. These /must/ be a+-- subset of a single device group, and need not be in the same order as+-- they were enumerated. The order of the physical devices in the+-- @pPhysicalDevices@ array determines the /device index/ of each physical+-- device, with element i being assigned a device index of i. Certain+-- commands and structures refer to one or more physical devices by using+-- device indices or /device masks/ formed using device indices.+--+-- A logical device created without using 'DeviceGroupDeviceCreateInfo', or+-- with @physicalDeviceCount@ equal to zero, is equivalent to a+-- @physicalDeviceCount@ of one and @pPhysicalDevices@ pointing to the+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' parameter to+-- 'Graphics.Vulkan.Core10.Device.createDevice'. In particular, the device+-- index of that physical device is zero.+--+-- == Valid Usage+--+-- - Each element of @pPhysicalDevices@ /must/ be unique+--+-- - All elements of @pPhysicalDevices@ /must/ be in the same device+-- group as enumerated by 'enumeratePhysicalDeviceGroups'+--+-- - If @physicalDeviceCount@ is not @0@, the+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' parameter of+-- 'Graphics.Vulkan.Core10.Device.createDevice' /must/ be an element of+-- @pPhysicalDevices@.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO'+--+-- - If @physicalDeviceCount@ is not @0@, @pPhysicalDevices@ /must/ be a+-- valid pointer to an array of @physicalDeviceCount@ valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handles+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DeviceGroupDeviceCreateInfo = DeviceGroupDeviceCreateInfo+ { -- | @pPhysicalDevices@ is a pointer to an array of physical device handles+ -- belonging to the same device group.+ physicalDevices :: Vector (Ptr PhysicalDevice_T) }+ deriving (Typeable)+deriving instance Show DeviceGroupDeviceCreateInfo++instance ToCStruct DeviceGroupDeviceCreateInfo where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DeviceGroupDeviceCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (physicalDevices)) :: Word32))+ pPPhysicalDevices' <- ContT $ allocaBytesAligned @(Ptr PhysicalDevice_T) ((Data.Vector.length (physicalDevices)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPPhysicalDevices' `plusPtr` (8 * (i)) :: Ptr (Ptr PhysicalDevice_T)) (e)) (physicalDevices)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (Ptr PhysicalDevice_T)))) (pPPhysicalDevices')+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPPhysicalDevices' <- ContT $ allocaBytesAligned @(Ptr PhysicalDevice_T) ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPPhysicalDevices' `plusPtr` (8 * (i)) :: Ptr (Ptr PhysicalDevice_T)) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (Ptr PhysicalDevice_T)))) (pPPhysicalDevices')+ lift $ f++instance FromCStruct DeviceGroupDeviceCreateInfo where+ peekCStruct p = do+ physicalDeviceCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pPhysicalDevices <- peek @(Ptr (Ptr PhysicalDevice_T)) ((p `plusPtr` 24 :: Ptr (Ptr (Ptr PhysicalDevice_T))))+ pPhysicalDevices' <- generateM (fromIntegral physicalDeviceCount) (\i -> peek @(Ptr PhysicalDevice_T) ((pPhysicalDevices `advancePtrBytes` (8 * (i)) :: Ptr (Ptr PhysicalDevice_T))))+ pure $ DeviceGroupDeviceCreateInfo+ pPhysicalDevices'++instance Zero DeviceGroupDeviceCreateInfo where+ zero = DeviceGroupDeviceCreateInfo+ mempty+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_device_group_creation.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation ( DeviceGroupDeviceCreateInfo+ , PhysicalDeviceGroupProperties+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data DeviceGroupDeviceCreateInfo++instance ToCStruct DeviceGroupDeviceCreateInfo+instance Show DeviceGroupDeviceCreateInfo++instance FromCStruct DeviceGroupDeviceCreateInfo+++data PhysicalDeviceGroupProperties++instance ToCStruct PhysicalDeviceGroupProperties+instance Show PhysicalDeviceGroupProperties++instance FromCStruct PhysicalDeviceGroupProperties+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_fence.hs view
@@ -0,0 +1,90 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence ( ExportFenceCreateInfo(..)+ , StructureType(..)+ , FenceImportFlagBits(..)+ , FenceImportFlags+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits (ExternalFenceHandleTypeFlags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO))+import Graphics.Vulkan.Core11.Enums.FenceImportFlagBits (FenceImportFlagBits(..))+import Graphics.Vulkan.Core11.Enums.FenceImportFlagBits (FenceImportFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- | VkExportFenceCreateInfo - Structure specifying handle types that can be+-- exported from a fence+--+-- == Valid Usage+--+-- - The bits in @handleTypes@ must be supported and compatible, as+-- reported by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.ExternalFenceProperties'.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO'+--+-- - @handleTypes@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits'+-- values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ExportFenceCreateInfo = ExportFenceCreateInfo+ { -- | @handleTypes@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits'+ -- specifying one or more fence handle types the application /can/ export+ -- from the resulting fence. The application /can/ request multiple handle+ -- types for the same fence.+ handleTypes :: ExternalFenceHandleTypeFlags }+ deriving (Typeable)+deriving instance Show ExportFenceCreateInfo++instance ToCStruct ExportFenceCreateInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ExportFenceCreateInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ExternalFenceHandleTypeFlags)) (handleTypes)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct ExportFenceCreateInfo where+ peekCStruct p = do+ handleTypes <- peek @ExternalFenceHandleTypeFlags ((p `plusPtr` 16 :: Ptr ExternalFenceHandleTypeFlags))+ pure $ ExportFenceCreateInfo+ handleTypes++instance Storable ExportFenceCreateInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ExportFenceCreateInfo where+ zero = ExportFenceCreateInfo+ zero+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_fence.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence (ExportFenceCreateInfo) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ExportFenceCreateInfo++instance ToCStruct ExportFenceCreateInfo+instance Show ExportFenceCreateInfo++instance FromCStruct ExportFenceCreateInfo+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_fence_capabilities.hs view
@@ -0,0 +1,224 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities ( getPhysicalDeviceExternalFenceProperties+ , PhysicalDeviceExternalFenceInfo(..)+ , ExternalFenceProperties(..)+ , StructureType(..)+ , ExternalFenceHandleTypeFlagBits(..)+ , ExternalFenceHandleTypeFlags+ , ExternalFenceFeatureFlagBits(..)+ , ExternalFenceFeatureFlags+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits (ExternalFenceFeatureFlags)+import Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits (ExternalFenceHandleTypeFlagBits)+import Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits (ExternalFenceHandleTypeFlags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceExternalFenceProperties))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO))+import Graphics.Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits (ExternalFenceFeatureFlagBits(..))+import Graphics.Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits (ExternalFenceFeatureFlags)+import Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits (ExternalFenceHandleTypeFlagBits(..))+import Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits (ExternalFenceHandleTypeFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceExternalFenceProperties+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr PhysicalDeviceExternalFenceInfo -> Ptr ExternalFenceProperties -> IO ()) -> Ptr PhysicalDevice_T -> Ptr PhysicalDeviceExternalFenceInfo -> Ptr ExternalFenceProperties -> IO ()++-- | vkGetPhysicalDeviceExternalFenceProperties - Function for querying+-- external fence handle capabilities.+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device from which to query the fence capabilities.+--+-- - @pExternalFenceInfo@ is a pointer to a+-- 'PhysicalDeviceExternalFenceInfo' structure describing the+-- parameters that would be consumed by+-- 'Graphics.Vulkan.Core10.Fence.createFence'.+--+-- - @pExternalFenceProperties@ is a pointer to a+-- 'ExternalFenceProperties' structure in which capabilities are+-- returned.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'ExternalFenceProperties',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'PhysicalDeviceExternalFenceInfo'+getPhysicalDeviceExternalFenceProperties :: PhysicalDevice -> PhysicalDeviceExternalFenceInfo -> IO (ExternalFenceProperties)+getPhysicalDeviceExternalFenceProperties physicalDevice externalFenceInfo = evalContT $ do+ let vkGetPhysicalDeviceExternalFenceProperties' = mkVkGetPhysicalDeviceExternalFenceProperties (pVkGetPhysicalDeviceExternalFenceProperties (instanceCmds (physicalDevice :: PhysicalDevice)))+ pExternalFenceInfo <- ContT $ withCStruct (externalFenceInfo)+ pPExternalFenceProperties <- ContT (withZeroCStruct @ExternalFenceProperties)+ lift $ vkGetPhysicalDeviceExternalFenceProperties' (physicalDeviceHandle (physicalDevice)) pExternalFenceInfo (pPExternalFenceProperties)+ pExternalFenceProperties <- lift $ peekCStruct @ExternalFenceProperties pPExternalFenceProperties+ pure $ (pExternalFenceProperties)+++-- | VkPhysicalDeviceExternalFenceInfo - Structure specifying fence creation+-- parameters.+--+-- = Description+--+-- Note+--+-- Handles of type+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT'+-- generated by the implementation may represent either Linux Sync Files or+-- Android Fences at the implementation’s discretion. Applications /should/+-- only use operations defined for both types of file descriptors, unless+-- they know via means external to Vulkan the type of the file descriptor,+-- or are prepared to deal with the system-defined operation failures+-- resulting from using the wrong type.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceExternalFenceProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_capabilities.getPhysicalDeviceExternalFencePropertiesKHR'+data PhysicalDeviceExternalFenceInfo = PhysicalDeviceExternalFenceInfo+ { -- | @handleType@ /must/ be a valid+ -- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits'+ -- value+ handleType :: ExternalFenceHandleTypeFlagBits }+ deriving (Typeable)+deriving instance Show PhysicalDeviceExternalFenceInfo++instance ToCStruct PhysicalDeviceExternalFenceInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceExternalFenceInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ExternalFenceHandleTypeFlagBits)) (handleType)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ExternalFenceHandleTypeFlagBits)) (zero)+ f++instance FromCStruct PhysicalDeviceExternalFenceInfo where+ peekCStruct p = do+ handleType <- peek @ExternalFenceHandleTypeFlagBits ((p `plusPtr` 16 :: Ptr ExternalFenceHandleTypeFlagBits))+ pure $ PhysicalDeviceExternalFenceInfo+ handleType++instance Storable PhysicalDeviceExternalFenceInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceExternalFenceInfo where+ zero = PhysicalDeviceExternalFenceInfo+ zero+++-- | VkExternalFenceProperties - Structure describing supported external+-- fence handle features+--+-- = Description+--+-- If @handleType@ is not supported by the implementation, then+-- 'ExternalFenceProperties'::@externalFenceFeatures@ will be set to zero.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits.ExternalFenceFeatureFlags',+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceExternalFenceProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_capabilities.getPhysicalDeviceExternalFencePropertiesKHR'+data ExternalFenceProperties = ExternalFenceProperties+ { -- | @exportFromImportedHandleTypes@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits'+ -- indicating which types of imported handle @handleType@ /can/ be exported+ -- from.+ exportFromImportedHandleTypes :: ExternalFenceHandleTypeFlags+ , -- | @compatibleHandleTypes@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits'+ -- specifying handle types which /can/ be specified at the same time as+ -- @handleType@ when creating a fence.+ compatibleHandleTypes :: ExternalFenceHandleTypeFlags+ , -- | @externalFenceFeatures@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits.ExternalFenceFeatureFlagBits'+ -- indicating the features of @handleType@.+ externalFenceFeatures :: ExternalFenceFeatureFlags+ }+ deriving (Typeable)+deriving instance Show ExternalFenceProperties++instance ToCStruct ExternalFenceProperties where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ExternalFenceProperties{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ExternalFenceHandleTypeFlags)) (exportFromImportedHandleTypes)+ poke ((p `plusPtr` 20 :: Ptr ExternalFenceHandleTypeFlags)) (compatibleHandleTypes)+ poke ((p `plusPtr` 24 :: Ptr ExternalFenceFeatureFlags)) (externalFenceFeatures)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ExternalFenceHandleTypeFlags)) (zero)+ poke ((p `plusPtr` 20 :: Ptr ExternalFenceHandleTypeFlags)) (zero)+ f++instance FromCStruct ExternalFenceProperties where+ peekCStruct p = do+ exportFromImportedHandleTypes <- peek @ExternalFenceHandleTypeFlags ((p `plusPtr` 16 :: Ptr ExternalFenceHandleTypeFlags))+ compatibleHandleTypes <- peek @ExternalFenceHandleTypeFlags ((p `plusPtr` 20 :: Ptr ExternalFenceHandleTypeFlags))+ externalFenceFeatures <- peek @ExternalFenceFeatureFlags ((p `plusPtr` 24 :: Ptr ExternalFenceFeatureFlags))+ pure $ ExternalFenceProperties+ exportFromImportedHandleTypes compatibleHandleTypes externalFenceFeatures++instance Storable ExternalFenceProperties where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ExternalFenceProperties where+ zero = ExternalFenceProperties+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_fence_capabilities.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities ( ExternalFenceProperties+ , PhysicalDeviceExternalFenceInfo+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ExternalFenceProperties++instance ToCStruct ExternalFenceProperties+instance Show ExternalFenceProperties++instance FromCStruct ExternalFenceProperties+++data PhysicalDeviceExternalFenceInfo++instance ToCStruct PhysicalDeviceExternalFenceInfo+instance Show PhysicalDeviceExternalFenceInfo++instance FromCStruct PhysicalDeviceExternalFenceInfo+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_memory.hs view
@@ -0,0 +1,209 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory ( ExternalMemoryImageCreateInfo(..)+ , ExternalMemoryBufferCreateInfo(..)+ , ExportMemoryAllocateInfo(..)+ , StructureType(..)+ , Result(..)+ , QUEUE_FAMILY_EXTERNAL+ , pattern QUEUE_FAMILY_EXTERNAL+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO))+import Graphics.Vulkan.Core10.APIConstants (QUEUE_FAMILY_EXTERNAL)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+import Graphics.Vulkan.Core10.APIConstants (pattern QUEUE_FAMILY_EXTERNAL)+-- | VkExternalMemoryImageCreateInfo - Specify that an image may be backed by+-- external memory+--+-- = Members+--+-- Note+--+-- A 'ExternalMemoryImageCreateInfo' structure must be included in the+-- creation parameters for an image that will be bound to memory that is+-- either exported or imported.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ExternalMemoryImageCreateInfo = ExternalMemoryImageCreateInfo+ { -- | @handleTypes@ /must/ not be @0@+ handleTypes :: ExternalMemoryHandleTypeFlags }+ deriving (Typeable)+deriving instance Show ExternalMemoryImageCreateInfo++instance ToCStruct ExternalMemoryImageCreateInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ExternalMemoryImageCreateInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlags)) (handleTypes)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlags)) (zero)+ f++instance FromCStruct ExternalMemoryImageCreateInfo where+ peekCStruct p = do+ handleTypes <- peek @ExternalMemoryHandleTypeFlags ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlags))+ pure $ ExternalMemoryImageCreateInfo+ handleTypes++instance Storable ExternalMemoryImageCreateInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ExternalMemoryImageCreateInfo where+ zero = ExternalMemoryImageCreateInfo+ zero+++-- | VkExternalMemoryBufferCreateInfo - Specify that a buffer may be backed+-- by external memory+--+-- = Members+--+-- Note+--+-- A 'ExternalMemoryBufferCreateInfo' structure must be included in the+-- creation parameters for a buffer that will be bound to memory that is+-- either exported or imported.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ExternalMemoryBufferCreateInfo = ExternalMemoryBufferCreateInfo+ { -- | @handleTypes@ /must/ be a valid combination of+ -- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'+ -- values+ handleTypes :: ExternalMemoryHandleTypeFlags }+ deriving (Typeable)+deriving instance Show ExternalMemoryBufferCreateInfo++instance ToCStruct ExternalMemoryBufferCreateInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ExternalMemoryBufferCreateInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlags)) (handleTypes)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct ExternalMemoryBufferCreateInfo where+ peekCStruct p = do+ handleTypes <- peek @ExternalMemoryHandleTypeFlags ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlags))+ pure $ ExternalMemoryBufferCreateInfo+ handleTypes++instance Storable ExternalMemoryBufferCreateInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ExternalMemoryBufferCreateInfo where+ zero = ExternalMemoryBufferCreateInfo+ zero+++-- | VkExportMemoryAllocateInfo - Specify exportable handle types for a+-- device memory object+--+-- == Valid Usage+--+-- - The bits in @handleTypes@ /must/ be supported and compatible, as+-- reported by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties'+-- or+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties'.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO'+--+-- - @handleTypes@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'+-- values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ExportMemoryAllocateInfo = ExportMemoryAllocateInfo+ { -- | @handleTypes@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'+ -- specifying one or more memory handle types the application /can/ export+ -- from the resulting allocation. The application /can/ request multiple+ -- handle types for the same allocation.+ handleTypes :: ExternalMemoryHandleTypeFlags }+ deriving (Typeable)+deriving instance Show ExportMemoryAllocateInfo++instance ToCStruct ExportMemoryAllocateInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ExportMemoryAllocateInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlags)) (handleTypes)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct ExportMemoryAllocateInfo where+ peekCStruct p = do+ handleTypes <- peek @ExternalMemoryHandleTypeFlags ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlags))+ pure $ ExportMemoryAllocateInfo+ handleTypes++instance Storable ExportMemoryAllocateInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ExportMemoryAllocateInfo where+ zero = ExportMemoryAllocateInfo+ zero+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_memory.hs-boot view
@@ -0,0 +1,32 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory ( ExportMemoryAllocateInfo+ , ExternalMemoryBufferCreateInfo+ , ExternalMemoryImageCreateInfo+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ExportMemoryAllocateInfo++instance ToCStruct ExportMemoryAllocateInfo+instance Show ExportMemoryAllocateInfo++instance FromCStruct ExportMemoryAllocateInfo+++data ExternalMemoryBufferCreateInfo++instance ToCStruct ExternalMemoryBufferCreateInfo+instance Show ExternalMemoryBufferCreateInfo++instance FromCStruct ExternalMemoryBufferCreateInfo+++data ExternalMemoryImageCreateInfo++instance ToCStruct ExternalMemoryImageCreateInfo+instance Show ExternalMemoryImageCreateInfo++instance FromCStruct ExternalMemoryImageCreateInfo+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_memory_capabilities.hs view
@@ -0,0 +1,568 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities ( getPhysicalDeviceExternalBufferProperties+ , ExternalMemoryProperties(..)+ , PhysicalDeviceExternalImageFormatInfo(..)+ , ExternalImageFormatProperties(..)+ , PhysicalDeviceExternalBufferInfo(..)+ , ExternalBufferProperties(..)+ , PhysicalDeviceIDProperties(..)+ , StructureType(..)+ , ExternalMemoryHandleTypeFlagBits(..)+ , ExternalMemoryHandleTypeFlags+ , ExternalMemoryFeatureFlagBits(..)+ , ExternalMemoryFeatureFlags+ , LUID_SIZE+ , pattern LUID_SIZE+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+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 qualified Data.Vector.Storable.Sized (Vector)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)+import Graphics.Vulkan.CStruct.Utils (pokeFixedLengthByteString)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits (BufferCreateFlags)+import Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlags)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits (ExternalMemoryFeatureFlags)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceExternalBufferProperties))+import Graphics.Vulkan.Core10.APIConstants (LUID_SIZE)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Core10.APIConstants (UUID_SIZE)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES))+import Graphics.Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits (ExternalMemoryFeatureFlagBits(..))+import Graphics.Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits (ExternalMemoryFeatureFlags)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits(..))+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlags)+import Graphics.Vulkan.Core10.APIConstants (LUID_SIZE)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+import Graphics.Vulkan.Core10.APIConstants (pattern LUID_SIZE)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceExternalBufferProperties+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr PhysicalDeviceExternalBufferInfo -> Ptr ExternalBufferProperties -> IO ()) -> Ptr PhysicalDevice_T -> Ptr PhysicalDeviceExternalBufferInfo -> Ptr ExternalBufferProperties -> IO ()++-- | vkGetPhysicalDeviceExternalBufferProperties - Query external handle+-- types supported by buffers+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device from which to query the buffer capabilities.+--+-- - @pExternalBufferInfo@ is a pointer to a+-- 'PhysicalDeviceExternalBufferInfo' structure describing the+-- parameters that would be consumed by+-- 'Graphics.Vulkan.Core10.Buffer.createBuffer'.+--+-- - @pExternalBufferProperties@ is a pointer to a+-- 'ExternalBufferProperties' structure in which capabilities are+-- returned.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'ExternalBufferProperties',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'PhysicalDeviceExternalBufferInfo'+getPhysicalDeviceExternalBufferProperties :: PhysicalDevice -> PhysicalDeviceExternalBufferInfo -> IO (ExternalBufferProperties)+getPhysicalDeviceExternalBufferProperties physicalDevice externalBufferInfo = evalContT $ do+ let vkGetPhysicalDeviceExternalBufferProperties' = mkVkGetPhysicalDeviceExternalBufferProperties (pVkGetPhysicalDeviceExternalBufferProperties (instanceCmds (physicalDevice :: PhysicalDevice)))+ pExternalBufferInfo <- ContT $ withCStruct (externalBufferInfo)+ pPExternalBufferProperties <- ContT (withZeroCStruct @ExternalBufferProperties)+ lift $ vkGetPhysicalDeviceExternalBufferProperties' (physicalDeviceHandle (physicalDevice)) pExternalBufferInfo (pPExternalBufferProperties)+ pExternalBufferProperties <- lift $ peekCStruct @ExternalBufferProperties pPExternalBufferProperties+ pure $ (pExternalBufferProperties)+++-- | VkExternalMemoryProperties - Structure specifying external memory handle+-- type capabilities+--+-- = Description+--+-- @compatibleHandleTypes@ /must/ include at least @handleType@. Inclusion+-- of a handle type in @compatibleHandleTypes@ does not imply the values+-- returned in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2'+-- will be the same when+-- 'PhysicalDeviceExternalImageFormatInfo'::@handleType@ is set to that+-- type. The application is responsible for querying the capabilities of+-- all handle types intended for concurrent use in a single image and+-- intersecting them to obtain the compatible set of capabilities.+--+-- = See Also+--+-- 'ExternalBufferProperties', 'ExternalImageFormatProperties',+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits.ExternalMemoryFeatureFlags',+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlags'+data ExternalMemoryProperties = ExternalMemoryProperties+ { -- | @externalMemoryFeatures@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits.ExternalMemoryFeatureFlagBits'+ -- specifying the features of @handleType@.+ externalMemoryFeatures :: ExternalMemoryFeatureFlags+ , -- | @exportFromImportedHandleTypes@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'+ -- specifying which types of imported handle @handleType@ /can/ be exported+ -- from.+ exportFromImportedHandleTypes :: ExternalMemoryHandleTypeFlags+ , -- | @compatibleHandleTypes@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'+ -- specifying handle types which /can/ be specified at the same time as+ -- @handleType@ when creating an image compatible with external memory.+ compatibleHandleTypes :: ExternalMemoryHandleTypeFlags+ }+ deriving (Typeable)+deriving instance Show ExternalMemoryProperties++instance ToCStruct ExternalMemoryProperties where+ withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ExternalMemoryProperties{..} f = do+ poke ((p `plusPtr` 0 :: Ptr ExternalMemoryFeatureFlags)) (externalMemoryFeatures)+ poke ((p `plusPtr` 4 :: Ptr ExternalMemoryHandleTypeFlags)) (exportFromImportedHandleTypes)+ poke ((p `plusPtr` 8 :: Ptr ExternalMemoryHandleTypeFlags)) (compatibleHandleTypes)+ f+ cStructSize = 12+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr ExternalMemoryFeatureFlags)) (zero)+ poke ((p `plusPtr` 8 :: Ptr ExternalMemoryHandleTypeFlags)) (zero)+ f++instance FromCStruct ExternalMemoryProperties where+ peekCStruct p = do+ externalMemoryFeatures <- peek @ExternalMemoryFeatureFlags ((p `plusPtr` 0 :: Ptr ExternalMemoryFeatureFlags))+ exportFromImportedHandleTypes <- peek @ExternalMemoryHandleTypeFlags ((p `plusPtr` 4 :: Ptr ExternalMemoryHandleTypeFlags))+ compatibleHandleTypes <- peek @ExternalMemoryHandleTypeFlags ((p `plusPtr` 8 :: Ptr ExternalMemoryHandleTypeFlags))+ pure $ ExternalMemoryProperties+ externalMemoryFeatures exportFromImportedHandleTypes compatibleHandleTypes++instance Storable ExternalMemoryProperties where+ sizeOf ~_ = 12+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ExternalMemoryProperties where+ zero = ExternalMemoryProperties+ zero+ zero+ zero+++-- | VkPhysicalDeviceExternalImageFormatInfo - Structure specifying external+-- image creation parameters+--+-- = Description+--+-- If @handleType@ is 0,+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+-- will behave as if 'PhysicalDeviceExternalImageFormatInfo' was not+-- present, and 'ExternalImageFormatProperties' will be ignored.+--+-- If @handleType@ is not compatible with the+-- 'Graphics.Vulkan.Core10.Enums.Format.Format', @type@, @tiling@, @usage@,+-- and 'Graphics.Vulkan.Core10.BaseType.Flags' specified in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2',+-- then+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+-- returns+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_FORMAT_NOT_SUPPORTED'.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO'+--+-- - If @handleType@ is not @0@, @handleType@ /must/ be a valid+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'+-- value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceExternalImageFormatInfo = PhysicalDeviceExternalImageFormatInfo+ { -- | @handleType@ is a+ -- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'+ -- value specifying the memory handle type that will be used with the+ -- memory associated with the image.+ handleType :: ExternalMemoryHandleTypeFlagBits }+ deriving (Typeable)+deriving instance Show PhysicalDeviceExternalImageFormatInfo++instance ToCStruct PhysicalDeviceExternalImageFormatInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceExternalImageFormatInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlagBits)) (handleType)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct PhysicalDeviceExternalImageFormatInfo where+ peekCStruct p = do+ handleType <- peek @ExternalMemoryHandleTypeFlagBits ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlagBits))+ pure $ PhysicalDeviceExternalImageFormatInfo+ handleType++instance Storable PhysicalDeviceExternalImageFormatInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceExternalImageFormatInfo where+ zero = PhysicalDeviceExternalImageFormatInfo+ zero+++-- | VkExternalImageFormatProperties - Structure specifying supported+-- external handle properties+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'ExternalMemoryProperties',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ExternalImageFormatProperties = ExternalImageFormatProperties+ { -- | 'ExternalMemoryProperties' is a 'ExternalMemoryProperties' structure+ -- specifying various capabilities of the external handle type when used+ -- with the specified image creation parameters.+ externalMemoryProperties :: ExternalMemoryProperties }+ deriving (Typeable)+deriving instance Show ExternalImageFormatProperties++instance ToCStruct ExternalImageFormatProperties where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ExternalImageFormatProperties{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ExternalMemoryProperties)) (externalMemoryProperties) . ($ ())+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ExternalMemoryProperties)) (zero) . ($ ())+ lift $ f++instance FromCStruct ExternalImageFormatProperties where+ peekCStruct p = do+ externalMemoryProperties <- peekCStruct @ExternalMemoryProperties ((p `plusPtr` 16 :: Ptr ExternalMemoryProperties))+ pure $ ExternalImageFormatProperties+ externalMemoryProperties++instance Zero ExternalImageFormatProperties where+ zero = ExternalImageFormatProperties+ zero+++-- | VkPhysicalDeviceExternalBufferInfo - Structure specifying buffer+-- creation parameters+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BufferCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlags',+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceExternalBufferProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities.getPhysicalDeviceExternalBufferPropertiesKHR'+data PhysicalDeviceExternalBufferInfo = PhysicalDeviceExternalBufferInfo+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid combination of+ -- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BufferCreateFlagBits'+ -- values+ flags :: BufferCreateFlags+ , -- | @usage@ /must/ not be @0@+ usage :: BufferUsageFlags+ , -- | @handleType@ /must/ be a valid+ -- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'+ -- value+ handleType :: ExternalMemoryHandleTypeFlagBits+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceExternalBufferInfo++instance ToCStruct PhysicalDeviceExternalBufferInfo where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceExternalBufferInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr BufferCreateFlags)) (flags)+ poke ((p `plusPtr` 20 :: Ptr BufferUsageFlags)) (usage)+ poke ((p `plusPtr` 24 :: Ptr ExternalMemoryHandleTypeFlagBits)) (handleType)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 20 :: Ptr BufferUsageFlags)) (zero)+ poke ((p `plusPtr` 24 :: Ptr ExternalMemoryHandleTypeFlagBits)) (zero)+ f++instance FromCStruct PhysicalDeviceExternalBufferInfo where+ peekCStruct p = do+ flags <- peek @BufferCreateFlags ((p `plusPtr` 16 :: Ptr BufferCreateFlags))+ usage <- peek @BufferUsageFlags ((p `plusPtr` 20 :: Ptr BufferUsageFlags))+ handleType <- peek @ExternalMemoryHandleTypeFlagBits ((p `plusPtr` 24 :: Ptr ExternalMemoryHandleTypeFlagBits))+ pure $ PhysicalDeviceExternalBufferInfo+ flags usage handleType++instance Storable PhysicalDeviceExternalBufferInfo where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceExternalBufferInfo where+ zero = PhysicalDeviceExternalBufferInfo+ zero+ zero+ zero+++-- | VkExternalBufferProperties - Structure specifying supported external+-- handle capabilities+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'ExternalMemoryProperties',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceExternalBufferProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities.getPhysicalDeviceExternalBufferPropertiesKHR'+data ExternalBufferProperties = ExternalBufferProperties+ { -- | 'ExternalMemoryProperties' is a 'ExternalMemoryProperties' structure+ -- specifying various capabilities of the external handle type when used+ -- with the specified buffer creation parameters.+ externalMemoryProperties :: ExternalMemoryProperties }+ deriving (Typeable)+deriving instance Show ExternalBufferProperties++instance ToCStruct ExternalBufferProperties where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ExternalBufferProperties{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ExternalMemoryProperties)) (externalMemoryProperties) . ($ ())+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ExternalMemoryProperties)) (zero) . ($ ())+ lift $ f++instance FromCStruct ExternalBufferProperties where+ peekCStruct p = do+ externalMemoryProperties <- peekCStruct @ExternalMemoryProperties ((p `plusPtr` 16 :: Ptr ExternalMemoryProperties))+ pure $ ExternalBufferProperties+ externalMemoryProperties++instance Zero ExternalBufferProperties where+ zero = ExternalBufferProperties+ zero+++-- | VkPhysicalDeviceIDProperties - Structure specifying IDs related to the+-- physical device+--+-- = Description+--+-- - @deviceUUID@ is an array of+-- 'Graphics.Vulkan.Core10.APIConstants.UUID_SIZE' @uint8_t@ values+-- representing a universally unique identifier for the device.+--+-- - @driverUUID@ is an array of+-- 'Graphics.Vulkan.Core10.APIConstants.UUID_SIZE' @uint8_t@ values+-- representing a universally unique identifier for the driver build in+-- use by the device.+--+-- - @deviceLUID@ is an array of+-- 'Graphics.Vulkan.Core10.APIConstants.LUID_SIZE' @uint8_t@ values+-- representing a locally unique identifier for the device.+--+-- - @deviceNodeMask@ is a @uint32_t@ bitfield identifying the node+-- within a linked device adapter corresponding to the device.+--+-- - @deviceLUIDValid@ is a boolean value that will be+-- 'Graphics.Vulkan.Core10.BaseType.TRUE' if @deviceLUID@ contains a+-- valid LUID and @deviceNodeMask@ contains a valid node mask, and+-- 'Graphics.Vulkan.Core10.BaseType.FALSE' if they do not.+--+-- @deviceUUID@ /must/ be immutable for a given device across instances,+-- processes, driver APIs, driver versions, and system reboots.+--+-- Applications /can/ compare the @driverUUID@ value across instance and+-- process boundaries, and /can/ make similar queries in external APIs to+-- determine whether they are capable of sharing memory objects and+-- resources using them with the device.+--+-- @deviceUUID@ and\/or @driverUUID@ /must/ be used to determine whether a+-- particular external object can be shared between driver components,+-- where such a restriction exists as defined in the compatibility table+-- for the particular object type:+--+-- - <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility External memory handle types compatibility>+--+-- - <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility External semaphore handle types compatibility>+--+-- - <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility External fence handle types compatibility>+--+-- If @deviceLUIDValid@ is 'Graphics.Vulkan.Core10.BaseType.FALSE', the+-- values of @deviceLUID@ and @deviceNodeMask@ are undefined. If+-- @deviceLUIDValid@ is 'Graphics.Vulkan.Core10.BaseType.TRUE' and Vulkan+-- is running on the Windows operating system, the contents of @deviceLUID@+-- /can/ be cast to an @LUID@ object and /must/ be equal to the locally+-- unique identifier of a @IDXGIAdapter1@ object that corresponds to+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'. If @deviceLUIDValid@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', @deviceNodeMask@ /must/ contain+-- exactly one bit. If Vulkan is running on an operating system that+-- supports the Direct3D 12 API and+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' corresponds to an+-- individual device in a linked device adapter, @deviceNodeMask@+-- identifies the Direct3D 12 node corresponding to+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'. Otherwise,+-- @deviceNodeMask@ /must/ be @1@.+--+-- Note+--+-- Although they have identical descriptions,+-- 'PhysicalDeviceIDProperties'::@deviceUUID@ may differ from+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'::@pipelineCacheUUID@.+-- The former is intended to identify and correlate devices across API and+-- driver boundaries, while the latter is used to identify a compatible+-- device and driver combination to use when serializing and de-serializing+-- pipeline state.+--+-- Note+--+-- While 'PhysicalDeviceIDProperties'::@deviceUUID@ is specified to remain+-- consistent across driver versions and system reboots, it is not intended+-- to be usable as a serializable persistent identifier for a device. It+-- may change when a device is physically added to, removed from, or moved+-- to a different connector in a system while that system is powered down.+-- Further, there is no reasonable way to verify with conformance testing+-- that a given device retains the same UUID in a given system across all+-- driver versions supported in that system. While implementations should+-- make every effort to report consistent device UUIDs across driver+-- versions, applications should avoid relying on the persistence of this+-- value for uses other than identifying compatible devices for external+-- object sharing purposes.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceIDProperties = PhysicalDeviceIDProperties+ { -- No documentation found for Nested "VkPhysicalDeviceIDProperties" "deviceUUID"+ deviceUUID :: ByteString+ , -- No documentation found for Nested "VkPhysicalDeviceIDProperties" "driverUUID"+ driverUUID :: ByteString+ , -- No documentation found for Nested "VkPhysicalDeviceIDProperties" "deviceLUID"+ deviceLUID :: ByteString+ , -- No documentation found for Nested "VkPhysicalDeviceIDProperties" "deviceNodeMask"+ deviceNodeMask :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceIDProperties" "deviceLUIDValid"+ deviceLUIDValid :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceIDProperties++instance ToCStruct PhysicalDeviceIDProperties where+ withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceIDProperties{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pokeFixedLengthByteString ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (deviceUUID)+ pokeFixedLengthByteString ((p `plusPtr` 32 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (driverUUID)+ pokeFixedLengthByteString ((p `plusPtr` 48 :: Ptr (Data.Vector.Storable.Sized.Vector LUID_SIZE Word8))) (deviceLUID)+ poke ((p `plusPtr` 56 :: Ptr Word32)) (deviceNodeMask)+ poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (deviceLUIDValid))+ f+ cStructSize = 64+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pokeFixedLengthByteString ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (mempty)+ pokeFixedLengthByteString ((p `plusPtr` 32 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (mempty)+ pokeFixedLengthByteString ((p `plusPtr` 48 :: Ptr (Data.Vector.Storable.Sized.Vector LUID_SIZE Word8))) (mempty)+ poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceIDProperties where+ peekCStruct p = do+ deviceUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8)))+ driverUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 32 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8)))+ deviceLUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 48 :: Ptr (Data.Vector.Storable.Sized.Vector LUID_SIZE Word8)))+ deviceNodeMask <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))+ deviceLUIDValid <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))+ pure $ PhysicalDeviceIDProperties+ deviceUUID driverUUID deviceLUID deviceNodeMask (bool32ToBool deviceLUIDValid)++instance Storable PhysicalDeviceIDProperties where+ sizeOf ~_ = 64+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceIDProperties where+ zero = PhysicalDeviceIDProperties+ mempty+ mempty+ mempty+ zero+ zero+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_memory_capabilities.hs-boot view
@@ -0,0 +1,59 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities ( ExternalBufferProperties+ , ExternalImageFormatProperties+ , ExternalMemoryProperties+ , PhysicalDeviceExternalBufferInfo+ , PhysicalDeviceExternalImageFormatInfo+ , PhysicalDeviceIDProperties+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ExternalBufferProperties++instance ToCStruct ExternalBufferProperties+instance Show ExternalBufferProperties++instance FromCStruct ExternalBufferProperties+++data ExternalImageFormatProperties++instance ToCStruct ExternalImageFormatProperties+instance Show ExternalImageFormatProperties++instance FromCStruct ExternalImageFormatProperties+++data ExternalMemoryProperties++instance ToCStruct ExternalMemoryProperties+instance Show ExternalMemoryProperties++instance FromCStruct ExternalMemoryProperties+++data PhysicalDeviceExternalBufferInfo++instance ToCStruct PhysicalDeviceExternalBufferInfo+instance Show PhysicalDeviceExternalBufferInfo++instance FromCStruct PhysicalDeviceExternalBufferInfo+++data PhysicalDeviceExternalImageFormatInfo++instance ToCStruct PhysicalDeviceExternalImageFormatInfo+instance Show PhysicalDeviceExternalImageFormatInfo++instance FromCStruct PhysicalDeviceExternalImageFormatInfo+++data PhysicalDeviceIDProperties++instance ToCStruct PhysicalDeviceIDProperties+instance Show PhysicalDeviceIDProperties++instance FromCStruct PhysicalDeviceIDProperties+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore.hs view
@@ -0,0 +1,90 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore ( ExportSemaphoreCreateInfo(..)+ , StructureType(..)+ , SemaphoreImportFlagBits(..)+ , SemaphoreImportFlags+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO))+import Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits (SemaphoreImportFlagBits(..))+import Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits (SemaphoreImportFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- | VkExportSemaphoreCreateInfo - Structure specifying handle types that can+-- be exported from a semaphore+--+-- == Valid Usage+--+-- - The bits in @handleTypes@ /must/ be supported and compatible, as+-- reported by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.ExternalSemaphoreProperties'.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO'+--+-- - @handleTypes@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits'+-- values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ExportSemaphoreCreateInfo = ExportSemaphoreCreateInfo+ { -- | @handleTypes@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits'+ -- specifying one or more semaphore handle types the application /can/+ -- export from the resulting semaphore. The application /can/ request+ -- multiple handle types for the same semaphore.+ handleTypes :: ExternalSemaphoreHandleTypeFlags }+ deriving (Typeable)+deriving instance Show ExportSemaphoreCreateInfo++instance ToCStruct ExportSemaphoreCreateInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ExportSemaphoreCreateInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ExternalSemaphoreHandleTypeFlags)) (handleTypes)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct ExportSemaphoreCreateInfo where+ peekCStruct p = do+ handleTypes <- peek @ExternalSemaphoreHandleTypeFlags ((p `plusPtr` 16 :: Ptr ExternalSemaphoreHandleTypeFlags))+ pure $ ExportSemaphoreCreateInfo+ handleTypes++instance Storable ExportSemaphoreCreateInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ExportSemaphoreCreateInfo where+ zero = ExportSemaphoreCreateInfo+ zero+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore (ExportSemaphoreCreateInfo) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ExportSemaphoreCreateInfo++instance ToCStruct ExportSemaphoreCreateInfo+instance Show ExportSemaphoreCreateInfo++instance FromCStruct ExportSemaphoreCreateInfo+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore_capabilities.hs view
@@ -0,0 +1,248 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities ( getPhysicalDeviceExternalSemaphoreProperties+ , PhysicalDeviceExternalSemaphoreInfo(..)+ , ExternalSemaphoreProperties(..)+ , StructureType(..)+ , ExternalSemaphoreHandleTypeFlagBits(..)+ , ExternalSemaphoreHandleTypeFlags+ , ExternalSemaphoreFeatureFlagBits(..)+ , ExternalSemaphoreFeatureFlags+ ) where++import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits (ExternalSemaphoreFeatureFlags)+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlagBits)+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceExternalSemaphoreProperties))+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreTypeCreateInfo)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO))+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits (ExternalSemaphoreFeatureFlagBits(..))+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits (ExternalSemaphoreFeatureFlags)+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlagBits(..))+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceExternalSemaphoreProperties+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr (PhysicalDeviceExternalSemaphoreInfo a) -> Ptr ExternalSemaphoreProperties -> IO ()) -> Ptr PhysicalDevice_T -> Ptr (PhysicalDeviceExternalSemaphoreInfo a) -> Ptr ExternalSemaphoreProperties -> IO ()++-- | vkGetPhysicalDeviceExternalSemaphoreProperties - Function for querying+-- external semaphore handle capabilities.+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device from which to query the semaphore capabilities.+--+-- - @pExternalSemaphoreInfo@ is a pointer to a+-- 'PhysicalDeviceExternalSemaphoreInfo' structure describing the+-- parameters that would be consumed by+-- 'Graphics.Vulkan.Core10.QueueSemaphore.createSemaphore'.+--+-- - @pExternalSemaphoreProperties@ is a pointer to a+-- 'ExternalSemaphoreProperties' structure in which capabilities are+-- returned.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'ExternalSemaphoreProperties',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'PhysicalDeviceExternalSemaphoreInfo'+getPhysicalDeviceExternalSemaphoreProperties :: PokeChain a => PhysicalDevice -> PhysicalDeviceExternalSemaphoreInfo a -> IO (ExternalSemaphoreProperties)+getPhysicalDeviceExternalSemaphoreProperties physicalDevice externalSemaphoreInfo = evalContT $ do+ let vkGetPhysicalDeviceExternalSemaphoreProperties' = mkVkGetPhysicalDeviceExternalSemaphoreProperties (pVkGetPhysicalDeviceExternalSemaphoreProperties (instanceCmds (physicalDevice :: PhysicalDevice)))+ pExternalSemaphoreInfo <- ContT $ withCStruct (externalSemaphoreInfo)+ pPExternalSemaphoreProperties <- ContT (withZeroCStruct @ExternalSemaphoreProperties)+ lift $ vkGetPhysicalDeviceExternalSemaphoreProperties' (physicalDeviceHandle (physicalDevice)) pExternalSemaphoreInfo (pPExternalSemaphoreProperties)+ pExternalSemaphoreProperties <- lift $ peekCStruct @ExternalSemaphoreProperties pPExternalSemaphoreProperties+ pure $ (pExternalSemaphoreProperties)+++-- | VkPhysicalDeviceExternalSemaphoreInfo - Structure specifying semaphore+-- creation parameters.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - @handleType@ /must/ be a valid+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits'+-- value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceExternalSemaphoreProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_capabilities.getPhysicalDeviceExternalSemaphorePropertiesKHR'+data PhysicalDeviceExternalSemaphoreInfo (es :: [Type]) = PhysicalDeviceExternalSemaphoreInfo+ { -- | @pNext@ is NULL or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | @handleType@ is a+ -- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits'+ -- value specifying the external semaphore handle type for which+ -- capabilities will be returned.+ handleType :: ExternalSemaphoreHandleTypeFlagBits+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (PhysicalDeviceExternalSemaphoreInfo es)++instance Extensible PhysicalDeviceExternalSemaphoreInfo where+ extensibleType = STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO+ setNext x next = x{next = next}+ getNext PhysicalDeviceExternalSemaphoreInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceExternalSemaphoreInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @SemaphoreTypeCreateInfo = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (PhysicalDeviceExternalSemaphoreInfo es) where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceExternalSemaphoreInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr ExternalSemaphoreHandleTypeFlagBits)) (handleType)+ lift $ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 16 :: Ptr ExternalSemaphoreHandleTypeFlagBits)) (zero)+ lift $ f++instance PeekChain es => FromCStruct (PhysicalDeviceExternalSemaphoreInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ handleType <- peek @ExternalSemaphoreHandleTypeFlagBits ((p `plusPtr` 16 :: Ptr ExternalSemaphoreHandleTypeFlagBits))+ pure $ PhysicalDeviceExternalSemaphoreInfo+ next handleType++instance es ~ '[] => Zero (PhysicalDeviceExternalSemaphoreInfo es) where+ zero = PhysicalDeviceExternalSemaphoreInfo+ ()+ zero+++-- | VkExternalSemaphoreProperties - Structure describing supported external+-- semaphore handle features+--+-- = Description+--+-- If @handleType@ is not supported by the implementation, then+-- 'ExternalSemaphoreProperties'::@externalSemaphoreFeatures@ will be set+-- to zero.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits.ExternalSemaphoreFeatureFlags',+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceExternalSemaphoreProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_capabilities.getPhysicalDeviceExternalSemaphorePropertiesKHR'+data ExternalSemaphoreProperties = ExternalSemaphoreProperties+ { -- | @exportFromImportedHandleTypes@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits'+ -- specifying which types of imported handle @handleType@ /can/ be exported+ -- from.+ exportFromImportedHandleTypes :: ExternalSemaphoreHandleTypeFlags+ , -- | @compatibleHandleTypes@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits'+ -- specifying handle types which /can/ be specified at the same time as+ -- @handleType@ when creating a semaphore.+ compatibleHandleTypes :: ExternalSemaphoreHandleTypeFlags+ , -- | @externalSemaphoreFeatures@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits.ExternalSemaphoreFeatureFlagBits'+ -- describing the features of @handleType@.+ externalSemaphoreFeatures :: ExternalSemaphoreFeatureFlags+ }+ deriving (Typeable)+deriving instance Show ExternalSemaphoreProperties++instance ToCStruct ExternalSemaphoreProperties where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ExternalSemaphoreProperties{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ExternalSemaphoreHandleTypeFlags)) (exportFromImportedHandleTypes)+ poke ((p `plusPtr` 20 :: Ptr ExternalSemaphoreHandleTypeFlags)) (compatibleHandleTypes)+ poke ((p `plusPtr` 24 :: Ptr ExternalSemaphoreFeatureFlags)) (externalSemaphoreFeatures)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ExternalSemaphoreHandleTypeFlags)) (zero)+ poke ((p `plusPtr` 20 :: Ptr ExternalSemaphoreHandleTypeFlags)) (zero)+ f++instance FromCStruct ExternalSemaphoreProperties where+ peekCStruct p = do+ exportFromImportedHandleTypes <- peek @ExternalSemaphoreHandleTypeFlags ((p `plusPtr` 16 :: Ptr ExternalSemaphoreHandleTypeFlags))+ compatibleHandleTypes <- peek @ExternalSemaphoreHandleTypeFlags ((p `plusPtr` 20 :: Ptr ExternalSemaphoreHandleTypeFlags))+ externalSemaphoreFeatures <- peek @ExternalSemaphoreFeatureFlags ((p `plusPtr` 24 :: Ptr ExternalSemaphoreFeatureFlags))+ pure $ ExternalSemaphoreProperties+ exportFromImportedHandleTypes compatibleHandleTypes externalSemaphoreFeatures++instance Storable ExternalSemaphoreProperties where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ExternalSemaphoreProperties where+ zero = ExternalSemaphoreProperties+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_external_semaphore_capabilities.hs-boot view
@@ -0,0 +1,27 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities ( ExternalSemaphoreProperties+ , PhysicalDeviceExternalSemaphoreInfo+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+data ExternalSemaphoreProperties++instance ToCStruct ExternalSemaphoreProperties+instance Show ExternalSemaphoreProperties++instance FromCStruct ExternalSemaphoreProperties+++type role PhysicalDeviceExternalSemaphoreInfo nominal+data PhysicalDeviceExternalSemaphoreInfo (es :: [Type])++instance PokeChain es => ToCStruct (PhysicalDeviceExternalSemaphoreInfo es)+instance Show (Chain es) => Show (PhysicalDeviceExternalSemaphoreInfo es)++instance PeekChain es => FromCStruct (PhysicalDeviceExternalSemaphoreInfo es)+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs view
@@ -0,0 +1,535 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 ( getBufferMemoryRequirements2+ , getImageMemoryRequirements2+ , getImageSparseMemoryRequirements2+ , BufferMemoryRequirementsInfo2(..)+ , ImageMemoryRequirementsInfo2(..)+ , ImageSparseMemoryRequirementsInfo2(..)+ , MemoryRequirements2(..)+ , SparseImageMemoryRequirements2(..)+ , MemoryRequirements2KHR+ , StructureType(..)+ ) where++import Control.Exception.Base (bracket)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetBufferMemoryRequirements2))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetImageMemoryRequirements2))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetImageSparseMemoryRequirements2))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Image)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (ImagePlaneMemoryRequirementsInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation (MemoryDedicatedRequirements)+import Graphics.Vulkan.Core10.MemoryManagement (MemoryRequirements)+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.SparseResourceMemoryManagement (SparseImageMemoryRequirements)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetBufferMemoryRequirements2+ :: FunPtr (Ptr Device_T -> Ptr BufferMemoryRequirementsInfo2 -> Ptr (MemoryRequirements2 a) -> IO ()) -> Ptr Device_T -> Ptr BufferMemoryRequirementsInfo2 -> Ptr (MemoryRequirements2 a) -> IO ()++-- | vkGetBufferMemoryRequirements2 - Returns the memory requirements for+-- specified Vulkan object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the buffer.+--+-- - @pInfo@ is a pointer to a 'BufferMemoryRequirementsInfo2' structure+-- containing parameters required for the memory requirements query.+--+-- - @pMemoryRequirements@ is a pointer to a 'MemoryRequirements2'+-- structure in which the memory requirements of the buffer object are+-- returned.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'BufferMemoryRequirementsInfo2',+-- 'Graphics.Vulkan.Core10.Handles.Device', 'MemoryRequirements2'+getBufferMemoryRequirements2 :: (PokeChain a, PeekChain a) => Device -> BufferMemoryRequirementsInfo2 -> IO (MemoryRequirements2 a)+getBufferMemoryRequirements2 device info = evalContT $ do+ let vkGetBufferMemoryRequirements2' = mkVkGetBufferMemoryRequirements2 (pVkGetBufferMemoryRequirements2 (deviceCmds (device :: Device)))+ pInfo <- ContT $ withCStruct (info)+ pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2 _))+ lift $ vkGetBufferMemoryRequirements2' (deviceHandle (device)) pInfo (pPMemoryRequirements)+ pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2 _) pPMemoryRequirements+ pure $ (pMemoryRequirements)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetImageMemoryRequirements2+ :: FunPtr (Ptr Device_T -> Ptr (ImageMemoryRequirementsInfo2 a) -> Ptr (MemoryRequirements2 b) -> IO ()) -> Ptr Device_T -> Ptr (ImageMemoryRequirementsInfo2 a) -> Ptr (MemoryRequirements2 b) -> IO ()++-- | vkGetImageMemoryRequirements2 - Returns the memory requirements for+-- specified Vulkan object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the image.+--+-- - @pInfo@ is a pointer to a 'ImageMemoryRequirementsInfo2' structure+-- containing parameters required for the memory requirements query.+--+-- - @pMemoryRequirements@ is a pointer to a 'MemoryRequirements2'+-- structure in which the memory requirements of the image object are+-- returned.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device', 'ImageMemoryRequirementsInfo2',+-- 'MemoryRequirements2'+getImageMemoryRequirements2 :: (PokeChain a, PokeChain b, PeekChain b) => Device -> ImageMemoryRequirementsInfo2 a -> IO (MemoryRequirements2 b)+getImageMemoryRequirements2 device info = evalContT $ do+ let vkGetImageMemoryRequirements2' = mkVkGetImageMemoryRequirements2 (pVkGetImageMemoryRequirements2 (deviceCmds (device :: Device)))+ pInfo <- ContT $ withCStruct (info)+ pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2 _))+ lift $ vkGetImageMemoryRequirements2' (deviceHandle (device)) pInfo (pPMemoryRequirements)+ pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2 _) pPMemoryRequirements+ pure $ (pMemoryRequirements)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetImageSparseMemoryRequirements2+ :: FunPtr (Ptr Device_T -> Ptr ImageSparseMemoryRequirementsInfo2 -> Ptr Word32 -> Ptr SparseImageMemoryRequirements2 -> IO ()) -> Ptr Device_T -> Ptr ImageSparseMemoryRequirementsInfo2 -> Ptr Word32 -> Ptr SparseImageMemoryRequirements2 -> IO ()++-- | vkGetImageSparseMemoryRequirements2 - Query the memory requirements for+-- a sparse image+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the image.+--+-- - @pInfo@ is a pointer to a 'ImageSparseMemoryRequirementsInfo2'+-- structure containing parameters required for the memory requirements+-- query.+--+-- - @pSparseMemoryRequirementCount@ is a pointer to an integer related+-- to the number of sparse memory requirements available or queried, as+-- described below.+--+-- - @pSparseMemoryRequirements@ is either @NULL@ or a pointer to an+-- array of 'SparseImageMemoryRequirements2' structures.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pInfo@ /must/ be a valid pointer to a valid+-- 'ImageSparseMemoryRequirementsInfo2' structure+--+-- - @pSparseMemoryRequirementCount@ /must/ be a valid pointer to a+-- @uint32_t@ value+--+-- - If the value referenced by @pSparseMemoryRequirementCount@ is not+-- @0@, and @pSparseMemoryRequirements@ is not @NULL@,+-- @pSparseMemoryRequirements@ /must/ be a valid pointer to an array of+-- @pSparseMemoryRequirementCount@ 'SparseImageMemoryRequirements2'+-- structures+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'ImageSparseMemoryRequirementsInfo2', 'SparseImageMemoryRequirements2'+getImageSparseMemoryRequirements2 :: Device -> ImageSparseMemoryRequirementsInfo2 -> IO (("sparseMemoryRequirements" ::: Vector SparseImageMemoryRequirements2))+getImageSparseMemoryRequirements2 device info = evalContT $ do+ let vkGetImageSparseMemoryRequirements2' = mkVkGetImageSparseMemoryRequirements2 (pVkGetImageSparseMemoryRequirements2 (deviceCmds (device :: Device)))+ let device' = deviceHandle (device)+ pInfo <- ContT $ withCStruct (info)+ pPSparseMemoryRequirementCount <- ContT $ bracket (callocBytes @Word32 4) free+ lift $ vkGetImageSparseMemoryRequirements2' device' pInfo (pPSparseMemoryRequirementCount) (nullPtr)+ pSparseMemoryRequirementCount <- lift $ peek @Word32 pPSparseMemoryRequirementCount+ pPSparseMemoryRequirements <- ContT $ bracket (callocBytes @SparseImageMemoryRequirements2 ((fromIntegral (pSparseMemoryRequirementCount)) * 64)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPSparseMemoryRequirements `advancePtrBytes` (i * 64) :: Ptr SparseImageMemoryRequirements2) . ($ ())) [0..(fromIntegral (pSparseMemoryRequirementCount)) - 1]+ lift $ vkGetImageSparseMemoryRequirements2' device' pInfo (pPSparseMemoryRequirementCount) ((pPSparseMemoryRequirements))+ pSparseMemoryRequirementCount' <- lift $ peek @Word32 pPSparseMemoryRequirementCount+ pSparseMemoryRequirements' <- lift $ generateM (fromIntegral (pSparseMemoryRequirementCount')) (\i -> peekCStruct @SparseImageMemoryRequirements2 (((pPSparseMemoryRequirements) `advancePtrBytes` (64 * (i)) :: Ptr SparseImageMemoryRequirements2)))+ pure $ (pSparseMemoryRequirements')+++-- | VkBufferMemoryRequirementsInfo2 - (None)+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getBufferMemoryRequirements2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2KHR'+data BufferMemoryRequirementsInfo2 = BufferMemoryRequirementsInfo2+ { -- | 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+ buffer :: Buffer }+ deriving (Typeable)+deriving instance Show BufferMemoryRequirementsInfo2++instance ToCStruct BufferMemoryRequirementsInfo2 where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p BufferMemoryRequirementsInfo2{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Buffer)) (buffer)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Buffer)) (zero)+ f++instance FromCStruct BufferMemoryRequirementsInfo2 where+ peekCStruct p = do+ buffer <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))+ pure $ BufferMemoryRequirementsInfo2+ buffer++instance Storable BufferMemoryRequirementsInfo2 where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero BufferMemoryRequirementsInfo2 where+ zero = BufferMemoryRequirementsInfo2+ zero+++-- | VkImageMemoryRequirementsInfo2 - (None)+--+-- == Valid Usage+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with a+-- /multi-planar/ format and the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'+-- flag, there /must/ be a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.ImagePlaneMemoryRequirementsInfo'+-- included in the @pNext@ chain of the 'ImageMemoryRequirementsInfo2'+-- structure+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'+-- and with+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',+-- then there /must/ be a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.ImagePlaneMemoryRequirementsInfo'+-- included in the @pNext@ chain of the 'ImageMemoryRequirementsInfo2'+-- structure+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was not created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'+-- flag, there /must/ not be a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.ImagePlaneMemoryRequirementsInfo'+-- included in the @pNext@ chain of the 'ImageMemoryRequirementsInfo2'+-- structure+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with a+-- single-plane format and with any @tiling@ other than+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',+-- then there /must/ not be a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.ImagePlaneMemoryRequirementsInfo'+-- included in the @pNext@ chain of the 'ImageMemoryRequirementsInfo2'+-- structure+--+-- - If 'Graphics.Vulkan.Core10.Handles.Image' was created with the+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'+-- external memory handle type, then+-- 'Graphics.Vulkan.Core10.Handles.Image' /must/ be bound to memory.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.ImagePlaneMemoryRequirementsInfo'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Image' handle+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Image',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getImageMemoryRequirements2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.getImageMemoryRequirements2KHR'+data ImageMemoryRequirementsInfo2 (es :: [Type]) = ImageMemoryRequirementsInfo2+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.Handles.Image' is the image to query.+ image :: Image+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (ImageMemoryRequirementsInfo2 es)++instance Extensible ImageMemoryRequirementsInfo2 where+ extensibleType = STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2+ setNext x next = x{next = next}+ getNext ImageMemoryRequirementsInfo2{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends ImageMemoryRequirementsInfo2 e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @ImagePlaneMemoryRequirementsInfo = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (ImageMemoryRequirementsInfo2 es) where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageMemoryRequirementsInfo2{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr Image)) (image)+ lift $ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 16 :: Ptr Image)) (zero)+ lift $ f++instance PeekChain es => FromCStruct (ImageMemoryRequirementsInfo2 es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ image <- peek @Image ((p `plusPtr` 16 :: Ptr Image))+ pure $ ImageMemoryRequirementsInfo2+ next image++instance es ~ '[] => Zero (ImageMemoryRequirementsInfo2 es) where+ zero = ImageMemoryRequirementsInfo2+ ()+ zero+++-- | VkImageSparseMemoryRequirementsInfo2 - (None)+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Image',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getImageSparseMemoryRequirements2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.getImageSparseMemoryRequirements2KHR'+data ImageSparseMemoryRequirementsInfo2 = ImageSparseMemoryRequirementsInfo2+ { -- | 'Graphics.Vulkan.Core10.Handles.Image' /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Handles.Image' handle+ image :: Image }+ deriving (Typeable)+deriving instance Show ImageSparseMemoryRequirementsInfo2++instance ToCStruct ImageSparseMemoryRequirementsInfo2 where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageSparseMemoryRequirementsInfo2{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Image)) (image)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Image)) (zero)+ f++instance FromCStruct ImageSparseMemoryRequirementsInfo2 where+ peekCStruct p = do+ image <- peek @Image ((p `plusPtr` 16 :: Ptr Image))+ pure $ ImageSparseMemoryRequirementsInfo2+ image++instance Storable ImageSparseMemoryRequirementsInfo2 where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImageSparseMemoryRequirementsInfo2 where+ zero = ImageSparseMemoryRequirementsInfo2+ zero+++-- | VkMemoryRequirements2 - Structure specifying memory requirements+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getBufferMemoryRequirements2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2KHR',+-- 'getImageMemoryRequirements2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.getImageMemoryRequirements2KHR'+data MemoryRequirements2 (es :: [Type]) = MemoryRequirements2+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements' is a+ -- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements' structure+ -- describing the memory requirements of the resource.+ memoryRequirements :: MemoryRequirements+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (MemoryRequirements2 es)++instance Extensible MemoryRequirements2 where+ extensibleType = STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2+ setNext x next = x{next = next}+ getNext MemoryRequirements2{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends MemoryRequirements2 e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @MemoryDedicatedRequirements = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (MemoryRequirements2 es) where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p MemoryRequirements2{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr MemoryRequirements)) (memoryRequirements) . ($ ())+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr MemoryRequirements)) (zero) . ($ ())+ lift $ f++instance PeekChain es => FromCStruct (MemoryRequirements2 es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ memoryRequirements <- peekCStruct @MemoryRequirements ((p `plusPtr` 16 :: Ptr MemoryRequirements))+ pure $ MemoryRequirements2+ next memoryRequirements++instance es ~ '[] => Zero (MemoryRequirements2 es) where+ zero = MemoryRequirements2+ ()+ zero+++-- | VkSparseImageMemoryRequirements2 - (None)+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryRequirements',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getImageSparseMemoryRequirements2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.getImageSparseMemoryRequirements2KHR'+data SparseImageMemoryRequirements2 = SparseImageMemoryRequirements2+ { -- | 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements' is a+ -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryRequirements'+ -- structure describing the memory requirements of the sparse image.+ memoryRequirements :: SparseImageMemoryRequirements }+ deriving (Typeable)+deriving instance Show SparseImageMemoryRequirements2++instance ToCStruct SparseImageMemoryRequirements2 where+ withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SparseImageMemoryRequirements2{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr SparseImageMemoryRequirements)) (memoryRequirements) . ($ ())+ lift $ f+ cStructSize = 64+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr SparseImageMemoryRequirements)) (zero) . ($ ())+ lift $ f++instance FromCStruct SparseImageMemoryRequirements2 where+ peekCStruct p = do+ memoryRequirements <- peekCStruct @SparseImageMemoryRequirements ((p `plusPtr` 16 :: Ptr SparseImageMemoryRequirements))+ pure $ SparseImageMemoryRequirements2+ memoryRequirements++instance Zero SparseImageMemoryRequirements2 where+ zero = SparseImageMemoryRequirements2+ zero+++-- No documentation found for TopLevel "VkMemoryRequirements2KHR"+type MemoryRequirements2KHR = MemoryRequirements2+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs-boot view
@@ -0,0 +1,60 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 ( BufferMemoryRequirementsInfo2+ , ImageMemoryRequirementsInfo2+ , ImageSparseMemoryRequirementsInfo2+ , MemoryRequirements2+ , SparseImageMemoryRequirements2+ , MemoryRequirements2KHR+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+data BufferMemoryRequirementsInfo2++instance ToCStruct BufferMemoryRequirementsInfo2+instance Show BufferMemoryRequirementsInfo2++instance FromCStruct BufferMemoryRequirementsInfo2+++type role ImageMemoryRequirementsInfo2 nominal+data ImageMemoryRequirementsInfo2 (es :: [Type])++instance PokeChain es => ToCStruct (ImageMemoryRequirementsInfo2 es)+instance Show (Chain es) => Show (ImageMemoryRequirementsInfo2 es)++instance PeekChain es => FromCStruct (ImageMemoryRequirementsInfo2 es)+++data ImageSparseMemoryRequirementsInfo2++instance ToCStruct ImageSparseMemoryRequirementsInfo2+instance Show ImageSparseMemoryRequirementsInfo2++instance FromCStruct ImageSparseMemoryRequirementsInfo2+++type role MemoryRequirements2 nominal+data MemoryRequirements2 (es :: [Type])++instance PokeChain es => ToCStruct (MemoryRequirements2 es)+instance Show (Chain es) => Show (MemoryRequirements2 es)++instance PeekChain es => FromCStruct (MemoryRequirements2 es)+++data SparseImageMemoryRequirements2++instance ToCStruct SparseImageMemoryRequirements2+instance Show SparseImageMemoryRequirements2++instance FromCStruct SparseImageMemoryRequirements2+++-- No documentation found for TopLevel "VkMemoryRequirements2KHR"+type MemoryRequirements2KHR = MemoryRequirements2+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs view
@@ -0,0 +1,1469 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 ( getPhysicalDeviceFeatures2+ , getPhysicalDeviceProperties2+ , getPhysicalDeviceFormatProperties2+ , getPhysicalDeviceImageFormatProperties2+ , getPhysicalDeviceQueueFamilyProperties2+ , getPhysicalDeviceMemoryProperties2+ , getPhysicalDeviceSparseImageFormatProperties2+ , PhysicalDeviceFeatures2(..)+ , PhysicalDeviceProperties2(..)+ , FormatProperties2(..)+ , ImageFormatProperties2(..)+ , PhysicalDeviceImageFormatInfo2(..)+ , QueueFamilyProperties2(..)+ , PhysicalDeviceMemoryProperties2(..)+ , SparseImageFormatProperties2(..)+ , PhysicalDeviceSparseImageFormatInfo2(..)+ , StructureType(..)+ ) where++import Control.Exception.Base (bracket)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.NamedType ((:::))+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (AndroidHardwareBufferUsageANDROID)+import Graphics.Vulkan.CStruct.Extends (Chain)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier (DrmFormatModifierPropertiesListEXT)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (ExternalImageFormatProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_filter_cubic (FilterCubicImageViewImageFormatPropertiesEXT)+import Graphics.Vulkan.Core10.Enums.Format (Format)+import Graphics.Vulkan.Core10.Enums.Format (Format(..))+import Graphics.Vulkan.Core10.DeviceInitialization (FormatProperties)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list (ImageFormatListCreateInfo)+import Graphics.Vulkan.Core10.DeviceInitialization (ImageFormatProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage (ImageStencilUsageCreateInfo)+import Graphics.Vulkan.Core10.Enums.ImageTiling (ImageTiling)+import Graphics.Vulkan.Core10.Enums.ImageType (ImageType)+import Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceFeatures2))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceFormatProperties2))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceImageFormatProperties2))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceMemoryProperties2))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceProperties2))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceQueueFamilyProperties2))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceSparseImageFormatProperties2))+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage (PhysicalDevice16BitStorageFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage (PhysicalDevice8BitStorageFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_astc_decode_mode (PhysicalDeviceASTCDecodeFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced (PhysicalDeviceBlendOperationAdvancedFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced (PhysicalDeviceBlendOperationAdvancedPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_device_coherent_memory (PhysicalDeviceCoherentMemoryFeaturesAMD)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering (PhysicalDeviceConditionalRenderingFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization (PhysicalDeviceConservativeRasterizationPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix (PhysicalDeviceCooperativeMatrixFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix (PhysicalDeviceCooperativeMatrixPropertiesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_corner_sampled_image (PhysicalDeviceCornerSampledImageFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode (PhysicalDeviceCoverageReductionModeFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing (PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable (PhysicalDeviceDepthClipEnableFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve (PhysicalDeviceDepthStencilResolveProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles (PhysicalDeviceDiscardRectanglePropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (PhysicalDeviceDriverProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive (PhysicalDeviceExclusiveScissorFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceExternalImageFormatInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_external_memory_host (PhysicalDeviceExternalMemoryHostPropertiesEXT)+import Graphics.Vulkan.Core10.DeviceInitialization (PhysicalDeviceFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls (PhysicalDeviceFloatControlsProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map (PhysicalDeviceFragmentDensityMapFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map (PhysicalDeviceFragmentDensityMapPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_fragment_shader_barycentric (PhysicalDeviceFragmentShaderBarycentricFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_fragment_shader_interlock (PhysicalDeviceFragmentShaderInterlockFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset (PhysicalDeviceHostQueryResetFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceIDProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier (PhysicalDeviceImageDrmFormatModifierInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_filter_cubic (PhysicalDeviceImageViewImageFormatInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (PhysicalDeviceImagelessFramebufferFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_index_type_uint8 (PhysicalDeviceIndexTypeUint8FeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_line_rasterization (PhysicalDeviceLineRasterizationFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_line_rasterization (PhysicalDeviceLineRasterizationPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3 (PhysicalDeviceMaintenance3Properties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_memory_budget (PhysicalDeviceMemoryBudgetPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_memory_priority (PhysicalDeviceMemoryPriorityFeaturesEXT)+import Graphics.Vulkan.Core10.DeviceInitialization (PhysicalDeviceMemoryProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_mesh_shader (PhysicalDeviceMeshShaderFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_mesh_shader (PhysicalDeviceMeshShaderPropertiesNV)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview (PhysicalDeviceMultiviewFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes (PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview (PhysicalDeviceMultiviewProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_pci_bus_info (PhysicalDevicePCIBusInfoPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryFeaturesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryPropertiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PhysicalDevicePipelineExecutablePropertiesFeaturesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (PhysicalDevicePointClippingProperties)+import Graphics.Vulkan.Core10.DeviceInitialization (PhysicalDeviceProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_push_descriptor (PhysicalDevicePushDescriptorPropertiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (PhysicalDeviceRayTracingPropertiesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test (PhysicalDeviceRepresentativeFragmentTestFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_sample_locations (PhysicalDeviceSampleLocationsPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax (PhysicalDeviceSamplerFilterMinmaxProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (PhysicalDeviceSamplerYcbcrConversionFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout (PhysicalDeviceScalarBlockLayoutFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (PhysicalDeviceSeparateDepthStencilLayoutsFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64 (PhysicalDeviceShaderAtomicInt64Features)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_shader_clock (PhysicalDeviceShaderClockFeaturesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties2 (PhysicalDeviceShaderCoreProperties2AMD)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties (PhysicalDeviceShaderCorePropertiesAMD)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation (PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters (PhysicalDeviceShaderDrawParametersFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8 (PhysicalDeviceShaderFloat16Int8Features)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shader_image_footprint (PhysicalDeviceShaderImageFootprintFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_shader_integer_functions2 (PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shader_sm_builtins (PhysicalDeviceShaderSMBuiltinsFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shader_sm_builtins (PhysicalDeviceShaderSMBuiltinsPropertiesNV)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types (PhysicalDeviceShaderSubgroupExtendedTypesFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (PhysicalDeviceShadingRateImageFeaturesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (PhysicalDeviceShadingRateImagePropertiesNV)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup (PhysicalDeviceSubgroupProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control (PhysicalDeviceSubgroupSizeControlFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control (PhysicalDeviceSubgroupSizeControlPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment (PhysicalDeviceTexelBufferAlignmentFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment (PhysicalDeviceTexelBufferAlignmentPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr (PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (PhysicalDeviceTimelineSemaphoreFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (PhysicalDeviceTimelineSemaphoreProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_transform_feedback (PhysicalDeviceTransformFeedbackFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_transform_feedback (PhysicalDeviceTransformFeedbackPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout (PhysicalDeviceUniformBufferStandardLayoutFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers (PhysicalDeviceVariablePointersFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorFeaturesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (PhysicalDeviceVertexAttributeDivisorPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core12 (PhysicalDeviceVulkan11Features)+import {-# SOURCE #-} Graphics.Vulkan.Core12 (PhysicalDeviceVulkan11Properties)+import {-# SOURCE #-} Graphics.Vulkan.Core12 (PhysicalDeviceVulkan12Features)+import {-# SOURCE #-} Graphics.Vulkan.Core12 (PhysicalDeviceVulkan12Properties)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model (PhysicalDeviceVulkanMemoryModelFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_ycbcr_image_arrays (PhysicalDeviceYcbcrImageArraysFeaturesEXT)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints (QueueFamilyCheckpointPropertiesNV)+import Graphics.Vulkan.Core10.DeviceInitialization (QueueFamilyProperties)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionImageFormatProperties)+import Graphics.Vulkan.Core10.SparseResourceMemoryManagement (SparseImageFormatProperties)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_texture_gather_bias_lod (TextureLODGatherFormatPropertiesAMD)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FORMAT_PROPERTIES_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceFeatures2+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr (PhysicalDeviceFeatures2 a) -> IO ()) -> Ptr PhysicalDevice_T -> Ptr (PhysicalDeviceFeatures2 a) -> IO ()++-- | vkGetPhysicalDeviceFeatures2 - Reports capabilities of a physical device+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device from which to query the supported features.+--+-- - @pFeatures@ is a pointer to a 'PhysicalDeviceFeatures2' structure in+-- which the physical device features are returned.+--+-- = Description+--+-- Each structure in @pFeatures@ and its @pNext@ chain contains members+-- corresponding to fine-grained features. 'getPhysicalDeviceFeatures2'+-- writes each member to a boolean value indicating whether that feature is+-- supported.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'PhysicalDeviceFeatures2'+getPhysicalDeviceFeatures2 :: (PokeChain a, PeekChain a) => PhysicalDevice -> IO (PhysicalDeviceFeatures2 a)+getPhysicalDeviceFeatures2 physicalDevice = evalContT $ do+ let vkGetPhysicalDeviceFeatures2' = mkVkGetPhysicalDeviceFeatures2 (pVkGetPhysicalDeviceFeatures2 (instanceCmds (physicalDevice :: PhysicalDevice)))+ pPFeatures <- ContT (withZeroCStruct @(PhysicalDeviceFeatures2 _))+ lift $ vkGetPhysicalDeviceFeatures2' (physicalDeviceHandle (physicalDevice)) (pPFeatures)+ pFeatures <- lift $ peekCStruct @(PhysicalDeviceFeatures2 _) pPFeatures+ pure $ (pFeatures)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceProperties2+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr (PhysicalDeviceProperties2 a) -> IO ()) -> Ptr PhysicalDevice_T -> Ptr (PhysicalDeviceProperties2 a) -> IO ()++-- | vkGetPhysicalDeviceProperties2 - Returns properties of a physical device+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the handle to the+-- physical device whose properties will be queried.+--+-- - @pProperties@ is a pointer to a 'PhysicalDeviceProperties2'+-- structure in which properties are returned.+--+-- = Description+--+-- Each structure in @pProperties@ and its @pNext@ chain contain members+-- corresponding to properties or implementation-dependent limits.+-- 'getPhysicalDeviceProperties2' writes each member to a value indicating+-- the value of that property or limit.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'PhysicalDeviceProperties2'+getPhysicalDeviceProperties2 :: (PokeChain a, PeekChain a) => PhysicalDevice -> IO (PhysicalDeviceProperties2 a)+getPhysicalDeviceProperties2 physicalDevice = evalContT $ do+ let vkGetPhysicalDeviceProperties2' = mkVkGetPhysicalDeviceProperties2 (pVkGetPhysicalDeviceProperties2 (instanceCmds (physicalDevice :: PhysicalDevice)))+ pPProperties <- ContT (withZeroCStruct @(PhysicalDeviceProperties2 _))+ lift $ vkGetPhysicalDeviceProperties2' (physicalDeviceHandle (physicalDevice)) (pPProperties)+ pProperties <- lift $ peekCStruct @(PhysicalDeviceProperties2 _) pPProperties+ pure $ (pProperties)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceFormatProperties2+ :: FunPtr (Ptr PhysicalDevice_T -> Format -> Ptr (FormatProperties2 a) -> IO ()) -> Ptr PhysicalDevice_T -> Format -> Ptr (FormatProperties2 a) -> IO ()++-- | vkGetPhysicalDeviceFormatProperties2 - Lists physical device’s format+-- capabilities+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device from which to query the format properties.+--+-- - 'Graphics.Vulkan.Core10.Enums.Format.Format' is the format whose+-- properties are queried.+--+-- - @pFormatProperties@ is a pointer to a 'FormatProperties2' structure+-- in which physical device properties for+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' are returned.+--+-- = Description+--+-- 'getPhysicalDeviceFormatProperties2' behaves similarly to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties',+-- with the ability to return extended information in a @pNext@ chain of+-- output structures.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.Format.Format', 'FormatProperties2',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+getPhysicalDeviceFormatProperties2 :: (PokeChain a, PeekChain a) => PhysicalDevice -> Format -> IO (FormatProperties2 a)+getPhysicalDeviceFormatProperties2 physicalDevice format = evalContT $ do+ let vkGetPhysicalDeviceFormatProperties2' = mkVkGetPhysicalDeviceFormatProperties2 (pVkGetPhysicalDeviceFormatProperties2 (instanceCmds (physicalDevice :: PhysicalDevice)))+ pPFormatProperties <- ContT (withZeroCStruct @(FormatProperties2 _))+ lift $ vkGetPhysicalDeviceFormatProperties2' (physicalDeviceHandle (physicalDevice)) (format) (pPFormatProperties)+ pFormatProperties <- lift $ peekCStruct @(FormatProperties2 _) pPFormatProperties+ pure $ (pFormatProperties)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceImageFormatProperties2+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr (PhysicalDeviceImageFormatInfo2 a) -> Ptr (ImageFormatProperties2 b) -> IO Result) -> Ptr PhysicalDevice_T -> Ptr (PhysicalDeviceImageFormatInfo2 a) -> Ptr (ImageFormatProperties2 b) -> IO Result++-- | vkGetPhysicalDeviceImageFormatProperties2 - Lists physical device’s+-- image format capabilities+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device from which to query the image capabilities.+--+-- - @pImageFormatInfo@ is a pointer to a+-- 'PhysicalDeviceImageFormatInfo2' structure describing the parameters+-- that would be consumed by+-- 'Graphics.Vulkan.Core10.Image.createImage'.+--+-- - @pImageFormatProperties@ is a pointer to a 'ImageFormatProperties2'+-- structure in which capabilities are returned.+--+-- = Description+--+-- 'getPhysicalDeviceImageFormatProperties2' behaves similarly to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties',+-- with the ability to return extended information in a @pNext@ chain of+-- output structures.+--+-- == Valid Usage+--+-- - If the @pNext@ chain of @pImageFormatProperties@ includes a+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferUsageANDROID'+-- structure, the @pNext@ chain of @pImageFormatInfo@ /must/ include a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo'+-- structure with @handleType@ set to+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @pImageFormatInfo@ /must/ be a valid pointer to a valid+-- 'PhysicalDeviceImageFormatInfo2' structure+--+-- - @pImageFormatProperties@ /must/ be a valid pointer to a+-- 'ImageFormatProperties2' structure+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_FORMAT_NOT_SUPPORTED'+--+-- = See Also+--+-- 'ImageFormatProperties2',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'PhysicalDeviceImageFormatInfo2'+getPhysicalDeviceImageFormatProperties2 :: (PokeChain a, PokeChain b, PeekChain b) => PhysicalDevice -> PhysicalDeviceImageFormatInfo2 a -> IO (ImageFormatProperties2 b)+getPhysicalDeviceImageFormatProperties2 physicalDevice imageFormatInfo = evalContT $ do+ let vkGetPhysicalDeviceImageFormatProperties2' = mkVkGetPhysicalDeviceImageFormatProperties2 (pVkGetPhysicalDeviceImageFormatProperties2 (instanceCmds (physicalDevice :: PhysicalDevice)))+ pImageFormatInfo <- ContT $ withCStruct (imageFormatInfo)+ pPImageFormatProperties <- ContT (withZeroCStruct @(ImageFormatProperties2 _))+ r <- lift $ vkGetPhysicalDeviceImageFormatProperties2' (physicalDeviceHandle (physicalDevice)) pImageFormatInfo (pPImageFormatProperties)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pImageFormatProperties <- lift $ peekCStruct @(ImageFormatProperties2 _) pPImageFormatProperties+ pure $ (pImageFormatProperties)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceQueueFamilyProperties2+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr (QueueFamilyProperties2 a) -> IO ()) -> Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr (QueueFamilyProperties2 a) -> IO ()++-- | vkGetPhysicalDeviceQueueFamilyProperties2 - Reports properties of the+-- queues of the specified physical device+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the handle to the+-- physical device whose properties will be queried.+--+-- - @pQueueFamilyPropertyCount@ is a pointer to an integer related to+-- the number of queue families available or queried, as described in+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceQueueFamilyProperties'.+--+-- - @pQueueFamilyProperties@ is either @NULL@ or a pointer to an array+-- of 'QueueFamilyProperties2' structures.+--+-- = Description+--+-- 'getPhysicalDeviceQueueFamilyProperties2' behaves similarly to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceQueueFamilyProperties',+-- with the ability to return extended information in a @pNext@ chain of+-- output structures.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @pQueueFamilyPropertyCount@ /must/ be a valid pointer to a+-- @uint32_t@ value+--+-- - If the value referenced by @pQueueFamilyPropertyCount@ is not @0@,+-- and @pQueueFamilyProperties@ is not @NULL@, @pQueueFamilyProperties@+-- /must/ be a valid pointer to an array of @pQueueFamilyPropertyCount@+-- 'QueueFamilyProperties2' structures+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'QueueFamilyProperties2'+getPhysicalDeviceQueueFamilyProperties2 :: (PokeChain a, PeekChain a) => PhysicalDevice -> IO (("queueFamilyProperties" ::: Vector (QueueFamilyProperties2 a)))+getPhysicalDeviceQueueFamilyProperties2 physicalDevice = evalContT $ do+ let vkGetPhysicalDeviceQueueFamilyProperties2' = mkVkGetPhysicalDeviceQueueFamilyProperties2 (pVkGetPhysicalDeviceQueueFamilyProperties2 (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pPQueueFamilyPropertyCount <- ContT $ bracket (callocBytes @Word32 4) free+ lift $ vkGetPhysicalDeviceQueueFamilyProperties2' physicalDevice' (pPQueueFamilyPropertyCount) (nullPtr)+ pQueueFamilyPropertyCount <- lift $ peek @Word32 pPQueueFamilyPropertyCount+ pPQueueFamilyProperties <- ContT $ bracket (callocBytes @(QueueFamilyProperties2 _) ((fromIntegral (pQueueFamilyPropertyCount)) * 40)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPQueueFamilyProperties `advancePtrBytes` (i * 40) :: Ptr (QueueFamilyProperties2 _)) . ($ ())) [0..(fromIntegral (pQueueFamilyPropertyCount)) - 1]+ lift $ vkGetPhysicalDeviceQueueFamilyProperties2' physicalDevice' (pPQueueFamilyPropertyCount) ((pPQueueFamilyProperties))+ pQueueFamilyPropertyCount' <- lift $ peek @Word32 pPQueueFamilyPropertyCount+ pQueueFamilyProperties' <- lift $ generateM (fromIntegral (pQueueFamilyPropertyCount')) (\i -> peekCStruct @(QueueFamilyProperties2 _) (((pPQueueFamilyProperties) `advancePtrBytes` (40 * (i)) :: Ptr (QueueFamilyProperties2 _))))+ pure $ (pQueueFamilyProperties')+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceMemoryProperties2+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr (PhysicalDeviceMemoryProperties2 a) -> IO ()) -> Ptr PhysicalDevice_T -> Ptr (PhysicalDeviceMemoryProperties2 a) -> IO ()++-- | vkGetPhysicalDeviceMemoryProperties2 - Reports memory information for+-- the specified physical device+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the handle to the+-- device to query.+--+-- - @pMemoryProperties@ is a pointer to a+-- 'PhysicalDeviceMemoryProperties2' structure in which the properties+-- are returned.+--+-- = Description+--+-- 'getPhysicalDeviceMemoryProperties2' behaves similarly to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceMemoryProperties',+-- with the ability to return extended information in a @pNext@ chain of+-- output structures.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'PhysicalDeviceMemoryProperties2'+getPhysicalDeviceMemoryProperties2 :: (PokeChain a, PeekChain a) => PhysicalDevice -> IO (PhysicalDeviceMemoryProperties2 a)+getPhysicalDeviceMemoryProperties2 physicalDevice = evalContT $ do+ let vkGetPhysicalDeviceMemoryProperties2' = mkVkGetPhysicalDeviceMemoryProperties2 (pVkGetPhysicalDeviceMemoryProperties2 (instanceCmds (physicalDevice :: PhysicalDevice)))+ pPMemoryProperties <- ContT (withZeroCStruct @(PhysicalDeviceMemoryProperties2 _))+ lift $ vkGetPhysicalDeviceMemoryProperties2' (physicalDeviceHandle (physicalDevice)) (pPMemoryProperties)+ pMemoryProperties <- lift $ peekCStruct @(PhysicalDeviceMemoryProperties2 _) pPMemoryProperties+ pure $ (pMemoryProperties)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceSparseImageFormatProperties2+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr PhysicalDeviceSparseImageFormatInfo2 -> Ptr Word32 -> Ptr SparseImageFormatProperties2 -> IO ()) -> Ptr PhysicalDevice_T -> Ptr PhysicalDeviceSparseImageFormatInfo2 -> Ptr Word32 -> Ptr SparseImageFormatProperties2 -> IO ()++-- | vkGetPhysicalDeviceSparseImageFormatProperties2 - Retrieve properties of+-- an image format applied to sparse images+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device from which to query the sparse image capabilities.+--+-- - @pFormatInfo@ is a pointer to a+-- 'PhysicalDeviceSparseImageFormatInfo2' structure containing input+-- parameters to the command.+--+-- - @pPropertyCount@ is a pointer to an integer related to the number of+-- sparse format properties available or queried, as described below.+--+-- - @pProperties@ is either @NULL@ or a pointer to an array of+-- 'SparseImageFormatProperties2' structures.+--+-- = Description+--+-- 'getPhysicalDeviceSparseImageFormatProperties2' behaves identically to+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.getPhysicalDeviceSparseImageFormatProperties',+-- with the ability to return extended information by adding extension+-- structures to the @pNext@ chain of its @pProperties@ parameter.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @pFormatInfo@ /must/ be a valid pointer to a valid+-- 'PhysicalDeviceSparseImageFormatInfo2' structure+--+-- - @pPropertyCount@ /must/ be a valid pointer to a @uint32_t@ value+--+-- - If the value referenced by @pPropertyCount@ is not @0@, and+-- @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer+-- to an array of @pPropertyCount@ 'SparseImageFormatProperties2'+-- structures+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'PhysicalDeviceSparseImageFormatInfo2', 'SparseImageFormatProperties2'+getPhysicalDeviceSparseImageFormatProperties2 :: PhysicalDevice -> PhysicalDeviceSparseImageFormatInfo2 -> IO (("properties" ::: Vector SparseImageFormatProperties2))+getPhysicalDeviceSparseImageFormatProperties2 physicalDevice formatInfo = evalContT $ do+ let vkGetPhysicalDeviceSparseImageFormatProperties2' = mkVkGetPhysicalDeviceSparseImageFormatProperties2 (pVkGetPhysicalDeviceSparseImageFormatProperties2 (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pFormatInfo <- ContT $ withCStruct (formatInfo)+ pPPropertyCount <- ContT $ bracket (callocBytes @Word32 4) free+ lift $ vkGetPhysicalDeviceSparseImageFormatProperties2' physicalDevice' pFormatInfo (pPPropertyCount) (nullPtr)+ pPropertyCount <- lift $ peek @Word32 pPPropertyCount+ pPProperties <- ContT $ bracket (callocBytes @SparseImageFormatProperties2 ((fromIntegral (pPropertyCount)) * 40)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPProperties `advancePtrBytes` (i * 40) :: Ptr SparseImageFormatProperties2) . ($ ())) [0..(fromIntegral (pPropertyCount)) - 1]+ lift $ vkGetPhysicalDeviceSparseImageFormatProperties2' physicalDevice' pFormatInfo (pPPropertyCount) ((pPProperties))+ pPropertyCount' <- lift $ peek @Word32 pPPropertyCount+ pProperties' <- lift $ generateM (fromIntegral (pPropertyCount')) (\i -> peekCStruct @SparseImageFormatProperties2 (((pPProperties) `advancePtrBytes` (40 * (i)) :: Ptr SparseImageFormatProperties2)))+ pure $ (pProperties')+++-- | VkPhysicalDeviceFeatures2 - Structure describing the fine-grained+-- features that can be supported by an implementation+--+-- = Members+--+-- The 'PhysicalDeviceFeatures2' structure is defined as:+--+-- = Description+--+-- The @pNext@ chain of this structure is used to extend the structure with+-- features defined by extensions. This structure /can/ be used in+-- 'getPhysicalDeviceFeatures2' or /can/ be included in the @pNext@ chain+-- of a 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' structure, in+-- which case it controls which features are enabled in the device in lieu+-- of @pEnabledFeatures@.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceFeatures2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2KHR'+data PhysicalDeviceFeatures2 (es :: [Type]) = PhysicalDeviceFeatures2+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | @features@ is a+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures'+ -- structure describing the fine-grained features of the Vulkan 1.0 API.+ features :: PhysicalDeviceFeatures+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (PhysicalDeviceFeatures2 es)++instance Extensible PhysicalDeviceFeatures2 where+ extensibleType = STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2+ setNext x next = x{next = next}+ getNext PhysicalDeviceFeatures2{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceFeatures2 e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @PhysicalDeviceCoherentMemoryFeaturesAMD = Just f+ | Just Refl <- eqT @e @PhysicalDeviceVulkan12Features = Just f+ | Just Refl <- eqT @e @PhysicalDeviceVulkan11Features = Just f+ | Just Refl <- eqT @e @PhysicalDeviceLineRasterizationFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceSubgroupSizeControlFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceTexelBufferAlignmentFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDevicePipelineExecutablePropertiesFeaturesKHR = Just f+ | Just Refl <- eqT @e @PhysicalDeviceSeparateDepthStencilLayoutsFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceFragmentShaderInterlockFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShaderSMBuiltinsFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceIndexTypeUint8FeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShaderClockFeaturesKHR = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL = Just f+ | Just Refl <- eqT @e @PhysicalDeviceCoverageReductionModeFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDevicePerformanceQueryFeaturesKHR = Just f+ | Just Refl <- eqT @e @PhysicalDeviceYcbcrImageArraysFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceCooperativeMatrixFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceImagelessFramebufferFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceBufferDeviceAddressFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceBufferDeviceAddressFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceMemoryPriorityFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceDepthClipEnableFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceUniformBufferStandardLayoutFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceScalarBlockLayoutFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMapFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceMeshShaderFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShadingRateImageFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShaderImageFootprintFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceFragmentShaderBarycentricFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceComputeShaderDerivativesFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceCornerSampledImageFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceExclusiveScissorFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceRepresentativeFragmentTestFeaturesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceTransformFeedbackFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceASTCDecodeFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceVertexAttributeDivisorFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShaderAtomicInt64Features = Just f+ | Just Refl <- eqT @e @PhysicalDeviceVulkanMemoryModelFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceConditionalRenderingFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDevice8BitStorageFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceTimelineSemaphoreFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceDescriptorIndexingFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceHostQueryResetFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShaderFloat16Int8Features = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShaderDrawParametersFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceInlineUniformBlockFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceBlendOperationAdvancedFeaturesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceProtectedMemoryFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceSamplerYcbcrConversionFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShaderSubgroupExtendedTypesFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDevice16BitStorageFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceMultiviewFeatures = Just f+ | Just Refl <- eqT @e @PhysicalDeviceVariablePointersFeatures = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (PhysicalDeviceFeatures2 es) where+ withCStruct x f = allocaBytesAligned 240 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceFeatures2{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr PhysicalDeviceFeatures)) (features) . ($ ())+ lift $ f+ cStructSize = 240+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr PhysicalDeviceFeatures)) (zero) . ($ ())+ lift $ f++instance PeekChain es => FromCStruct (PhysicalDeviceFeatures2 es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ features <- peekCStruct @PhysicalDeviceFeatures ((p `plusPtr` 16 :: Ptr PhysicalDeviceFeatures))+ pure $ PhysicalDeviceFeatures2+ next features++instance es ~ '[] => Zero (PhysicalDeviceFeatures2 es) where+ zero = PhysicalDeviceFeatures2+ ()+ zero+++-- | VkPhysicalDeviceProperties2 - Structure specifying physical device+-- properties+--+-- = Description+--+-- The @pNext@ chain of this structure is used to extend the structure with+-- properties defined by extensions.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization.PhysicalDeviceConservativeRasterizationPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix.PhysicalDeviceCooperativeMatrixPropertiesNV',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',+-- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.PhysicalDeviceDriverProperties',+-- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls.PhysicalDeviceFloatControlsProperties',+-- 'Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map.PhysicalDeviceFragmentDensityMapPropertiesEXT',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties',+-- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationPropertiesEXT',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',+-- 'Graphics.Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderPropertiesNV',+-- 'Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties',+-- 'Graphics.Vulkan.Extensions.VK_EXT_pci_bus_info.PhysicalDevicePCIBusInfoPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryPropertiesKHR',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PhysicalDevicePointClippingProperties',+-- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties',+-- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.PhysicalDevicePushDescriptorPropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.PhysicalDeviceRayTracingPropertiesNV',+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.PhysicalDeviceSamplerFilterMinmaxProperties',+-- 'Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties2.PhysicalDeviceShaderCoreProperties2AMD',+-- 'Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties.PhysicalDeviceShaderCorePropertiesAMD',+-- 'Graphics.Vulkan.Extensions.VK_NV_shader_sm_builtins.PhysicalDeviceShaderSMBuiltinsPropertiesNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImagePropertiesNV',+-- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties',+-- 'Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreProperties',+-- 'Graphics.Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesEXT',+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan11Properties', or+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan12Properties'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2KHR'+data PhysicalDeviceProperties2 (es :: [Type]) = PhysicalDeviceProperties2+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | @properties@ is a+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceProperties'+ -- structure describing properties of the physical device. This structure+ -- is written with the same values as if it were written by+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceProperties'.+ properties :: PhysicalDeviceProperties+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (PhysicalDeviceProperties2 es)++instance Extensible PhysicalDeviceProperties2 where+ extensibleType = STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2+ setNext x next = x{next = next}+ getNext PhysicalDeviceProperties2{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceProperties2 e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @PhysicalDeviceVulkan12Properties = Just f+ | Just Refl <- eqT @e @PhysicalDeviceVulkan11Properties = Just f+ | Just Refl <- eqT @e @PhysicalDeviceLineRasterizationPropertiesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceSubgroupSizeControlPropertiesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceTexelBufferAlignmentPropertiesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShaderSMBuiltinsPropertiesNV = Just f+ | Just Refl <- eqT @e @PhysicalDevicePerformanceQueryPropertiesKHR = Just f+ | Just Refl <- eqT @e @PhysicalDeviceCooperativeMatrixPropertiesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceFragmentDensityMapPropertiesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceRayTracingPropertiesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceMeshShaderPropertiesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShadingRateImagePropertiesNV = Just f+ | Just Refl <- eqT @e @PhysicalDeviceTransformFeedbackPropertiesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceDepthStencilResolveProperties = Just f+ | Just Refl <- eqT @e @PhysicalDevicePCIBusInfoPropertiesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceVertexAttributeDivisorPropertiesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceTimelineSemaphoreProperties = Just f+ | Just Refl <- eqT @e @PhysicalDeviceDescriptorIndexingProperties = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShaderCoreProperties2AMD = Just f+ | Just Refl <- eqT @e @PhysicalDeviceShaderCorePropertiesAMD = Just f+ | Just Refl <- eqT @e @PhysicalDeviceConservativeRasterizationPropertiesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceExternalMemoryHostPropertiesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceFloatControlsProperties = Just f+ | Just Refl <- eqT @e @PhysicalDeviceMaintenance3Properties = Just f+ | Just Refl <- eqT @e @PhysicalDeviceInlineUniformBlockPropertiesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceBlendOperationAdvancedPropertiesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceSampleLocationsPropertiesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceSamplerFilterMinmaxProperties = Just f+ | Just Refl <- eqT @e @PhysicalDeviceProtectedMemoryProperties = Just f+ | Just Refl <- eqT @e @PhysicalDevicePointClippingProperties = Just f+ | Just Refl <- eqT @e @PhysicalDeviceSubgroupProperties = Just f+ | Just Refl <- eqT @e @PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = Just f+ | Just Refl <- eqT @e @PhysicalDeviceDiscardRectanglePropertiesEXT = Just f+ | Just Refl <- eqT @e @PhysicalDeviceMultiviewProperties = Just f+ | Just Refl <- eqT @e @PhysicalDeviceIDProperties = Just f+ | Just Refl <- eqT @e @PhysicalDeviceDriverProperties = Just f+ | Just Refl <- eqT @e @PhysicalDevicePushDescriptorPropertiesKHR = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (PhysicalDeviceProperties2 es) where+ withCStruct x f = allocaBytesAligned 840 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceProperties2{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr PhysicalDeviceProperties)) (properties) . ($ ())+ lift $ f+ cStructSize = 840+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr PhysicalDeviceProperties)) (zero) . ($ ())+ lift $ f++instance PeekChain es => FromCStruct (PhysicalDeviceProperties2 es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ properties <- peekCStruct @PhysicalDeviceProperties ((p `plusPtr` 16 :: Ptr PhysicalDeviceProperties))+ pure $ PhysicalDeviceProperties2+ next properties++instance es ~ '[] => Zero (PhysicalDeviceProperties2 es) where+ zero = PhysicalDeviceProperties2+ ()+ zero+++-- | VkFormatProperties2 - Structure specifying image format properties+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FORMAT_PROPERTIES_2'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesListEXT'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.FormatProperties',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceFormatProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2KHR'+data FormatProperties2 (es :: [Type]) = FormatProperties2+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.DeviceInitialization.FormatProperties' is a+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.FormatProperties' structure+ -- describing features supported by the requested format.+ formatProperties :: FormatProperties+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (FormatProperties2 es)++instance Extensible FormatProperties2 where+ extensibleType = STRUCTURE_TYPE_FORMAT_PROPERTIES_2+ setNext x next = x{next = next}+ getNext FormatProperties2{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends FormatProperties2 e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @DrmFormatModifierPropertiesListEXT = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (FormatProperties2 es) where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p FormatProperties2{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FORMAT_PROPERTIES_2)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr FormatProperties)) (formatProperties) . ($ ())+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FORMAT_PROPERTIES_2)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr FormatProperties)) (zero) . ($ ())+ lift $ f++instance PeekChain es => FromCStruct (FormatProperties2 es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ formatProperties <- peekCStruct @FormatProperties ((p `plusPtr` 16 :: Ptr FormatProperties))+ pure $ FormatProperties2+ next formatProperties++instance es ~ '[] => Zero (FormatProperties2 es) where+ zero = FormatProperties2+ ()+ zero+++-- | VkImageFormatProperties2 - Structure specifying an image format+-- properties+--+-- = Description+--+-- If the combination of parameters to+-- 'getPhysicalDeviceImageFormatProperties2' is not supported by the+-- implementation for use in 'Graphics.Vulkan.Core10.Image.createImage',+-- then all members of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties' will+-- be filled with zero.+--+-- Note+--+-- Filling+-- 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties' with+-- zero for unsupported formats is an exception to the usual rule that+-- output structures have undefined contents on error. This exception was+-- unintentional, but is preserved for backwards compatibility. This+-- exeption only applies to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties', not+-- @sType@, @pNext@, or any structures chained from @pNext@.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AndroidHardwareBufferUsageANDROID',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties',+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionImageFormatProperties',+-- or+-- 'Graphics.Vulkan.Extensions.VK_AMD_texture_gather_bias_lod.TextureLODGatherFormatPropertiesAMD'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceImageFormatProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2KHR'+data ImageFormatProperties2 (es :: [Type]) = ImageFormatProperties2+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. The+ -- @pNext@ chain of 'ImageFormatProperties2' is used to allow the+ -- specification of additional capabilities to be returned from+ -- 'getPhysicalDeviceImageFormatProperties2'.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties' is a+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties'+ -- structure in which capabilities are returned.+ imageFormatProperties :: ImageFormatProperties+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (ImageFormatProperties2 es)++instance Extensible ImageFormatProperties2 where+ extensibleType = STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2+ setNext x next = x{next = next}+ getNext ImageFormatProperties2{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends ImageFormatProperties2 e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @FilterCubicImageViewImageFormatPropertiesEXT = Just f+ | Just Refl <- eqT @e @AndroidHardwareBufferUsageANDROID = Just f+ | Just Refl <- eqT @e @TextureLODGatherFormatPropertiesAMD = Just f+ | Just Refl <- eqT @e @SamplerYcbcrConversionImageFormatProperties = Just f+ | Just Refl <- eqT @e @ExternalImageFormatProperties = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (ImageFormatProperties2 es) where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageFormatProperties2{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ImageFormatProperties)) (imageFormatProperties) . ($ ())+ lift $ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr ImageFormatProperties)) (zero) . ($ ())+ lift $ f++instance PeekChain es => FromCStruct (ImageFormatProperties2 es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ imageFormatProperties <- peekCStruct @ImageFormatProperties ((p `plusPtr` 16 :: Ptr ImageFormatProperties))+ pure $ ImageFormatProperties2+ next imageFormatProperties++instance es ~ '[] => Zero (ImageFormatProperties2 es) where+ zero = ImageFormatProperties2+ ()+ zero+++-- | VkPhysicalDeviceImageFormatInfo2 - Structure specifying image creation+-- parameters+--+-- = Description+--+-- The members of 'PhysicalDeviceImageFormatInfo2' correspond to the+-- arguments to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties',+-- with @sType@ and @pNext@ added for extensibility.+--+-- == Valid Usage+--+-- - @tiling@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'+-- if and only if the @pNext@ chain includes+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.PhysicalDeviceImageDrmFormatModifierInfoEXT'.+--+-- - If @tiling@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'+-- and 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT',+-- then the @pNext@ chain /must/ include a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'+-- structure with non-zero @viewFormatCount@.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier.PhysicalDeviceImageDrmFormatModifierInfoEXT',+-- or+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.PhysicalDeviceImageViewImageFormatInfoEXT'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' value+--+-- - @type@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' value+--+-- - @tiling@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.ImageTiling' value+--+-- - @usage@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits'+-- values+--+-- - @usage@ /must/ not be @0@+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits'+-- values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.ImageTiling',+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceImageFormatProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2KHR'+data PhysicalDeviceImageFormatInfo2 (es :: [Type]) = PhysicalDeviceImageFormatInfo2+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. The+ -- @pNext@ chain of 'PhysicalDeviceImageFormatInfo2' is used to provide+ -- additional image parameters to+ -- 'getPhysicalDeviceImageFormatProperties2'.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.Enums.Format.Format' is a+ -- 'Graphics.Vulkan.Core10.Enums.Format.Format' value indicating the image+ -- format, corresponding to+ -- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.Enums.Format.Format'.+ format :: Format+ , -- | @type@ is a 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' value+ -- indicating the image type, corresponding to+ -- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.Enums.ImageType.ImageType'.+ type' :: ImageType+ , -- | @tiling@ is a 'Graphics.Vulkan.Core10.Enums.ImageTiling.ImageTiling'+ -- value indicating the image tiling, corresponding to+ -- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@tiling@.+ tiling :: ImageTiling+ , -- | @usage@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits'+ -- indicating the intended usage of the image, corresponding to+ -- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@usage@.+ usage :: ImageUsageFlags+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits'+ -- indicating additional parameters of the image, corresponding to+ -- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'.+ flags :: ImageCreateFlags+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (PhysicalDeviceImageFormatInfo2 es)++instance Extensible PhysicalDeviceImageFormatInfo2 where+ extensibleType = STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2+ setNext x next = x{next = next}+ getNext PhysicalDeviceImageFormatInfo2{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceImageFormatInfo2 e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @PhysicalDeviceImageViewImageFormatInfoEXT = Just f+ | Just Refl <- eqT @e @ImageStencilUsageCreateInfo = Just f+ | Just Refl <- eqT @e @PhysicalDeviceImageDrmFormatModifierInfoEXT = Just f+ | Just Refl <- eqT @e @ImageFormatListCreateInfo = Just f+ | Just Refl <- eqT @e @PhysicalDeviceExternalImageFormatInfo = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (PhysicalDeviceImageFormatInfo2 es) where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceImageFormatInfo2{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (format)+ lift $ poke ((p `plusPtr` 20 :: Ptr ImageType)) (type')+ lift $ poke ((p `plusPtr` 24 :: Ptr ImageTiling)) (tiling)+ lift $ poke ((p `plusPtr` 28 :: Ptr ImageUsageFlags)) (usage)+ lift $ poke ((p `plusPtr` 32 :: Ptr ImageCreateFlags)) (flags)+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (zero)+ lift $ poke ((p `plusPtr` 20 :: Ptr ImageType)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr ImageTiling)) (zero)+ lift $ poke ((p `plusPtr` 28 :: Ptr ImageUsageFlags)) (zero)+ lift $ f++instance PeekChain es => FromCStruct (PhysicalDeviceImageFormatInfo2 es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ format <- peek @Format ((p `plusPtr` 16 :: Ptr Format))+ type' <- peek @ImageType ((p `plusPtr` 20 :: Ptr ImageType))+ tiling <- peek @ImageTiling ((p `plusPtr` 24 :: Ptr ImageTiling))+ usage <- peek @ImageUsageFlags ((p `plusPtr` 28 :: Ptr ImageUsageFlags))+ flags <- peek @ImageCreateFlags ((p `plusPtr` 32 :: Ptr ImageCreateFlags))+ pure $ PhysicalDeviceImageFormatInfo2+ next format type' tiling usage flags++instance es ~ '[] => Zero (PhysicalDeviceImageFormatInfo2 es) where+ zero = PhysicalDeviceImageFormatInfo2+ ()+ zero+ zero+ zero+ zero+ zero+++-- | VkQueueFamilyProperties2 - Structure providing information about a queue+-- family+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.QueueFamilyCheckpointPropertiesNV'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.QueueFamilyProperties',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceQueueFamilyProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2KHR'+data QueueFamilyProperties2 (es :: [Type]) = QueueFamilyProperties2+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.DeviceInitialization.QueueFamilyProperties' is a+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'+ -- structure which is populated with the same values as in+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceQueueFamilyProperties'.+ queueFamilyProperties :: QueueFamilyProperties+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (QueueFamilyProperties2 es)++instance Extensible QueueFamilyProperties2 where+ extensibleType = STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2+ setNext x next = x{next = next}+ getNext QueueFamilyProperties2{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends QueueFamilyProperties2 e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @QueueFamilyCheckpointPropertiesNV = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (QueueFamilyProperties2 es) where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p QueueFamilyProperties2{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr QueueFamilyProperties)) (queueFamilyProperties) . ($ ())+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr QueueFamilyProperties)) (zero) . ($ ())+ lift $ f++instance PeekChain es => FromCStruct (QueueFamilyProperties2 es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ queueFamilyProperties <- peekCStruct @QueueFamilyProperties ((p `plusPtr` 16 :: Ptr QueueFamilyProperties))+ pure $ QueueFamilyProperties2+ next queueFamilyProperties++instance es ~ '[] => Zero (QueueFamilyProperties2 es) where+ zero = QueueFamilyProperties2+ ()+ zero+++-- | VkPhysicalDeviceMemoryProperties2 - Structure specifying physical device+-- memory properties+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceMemoryProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceMemoryProperties2KHR'+data PhysicalDeviceMemoryProperties2 (es :: [Type]) = PhysicalDeviceMemoryProperties2+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | @memoryProperties@ is a+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties'+ -- structure which is populated with the same values as in+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceMemoryProperties'.+ memoryProperties :: PhysicalDeviceMemoryProperties+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (PhysicalDeviceMemoryProperties2 es)++instance Extensible PhysicalDeviceMemoryProperties2 where+ extensibleType = STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2+ setNext x next = x{next = next}+ getNext PhysicalDeviceMemoryProperties2{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceMemoryProperties2 e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @PhysicalDeviceMemoryBudgetPropertiesEXT = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (PhysicalDeviceMemoryProperties2 es) where+ withCStruct x f = allocaBytesAligned 536 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceMemoryProperties2{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr PhysicalDeviceMemoryProperties)) (memoryProperties) . ($ ())+ lift $ f+ cStructSize = 536+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr PhysicalDeviceMemoryProperties)) (zero) . ($ ())+ lift $ f++instance PeekChain es => FromCStruct (PhysicalDeviceMemoryProperties2 es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ memoryProperties <- peekCStruct @PhysicalDeviceMemoryProperties ((p `plusPtr` 16 :: Ptr PhysicalDeviceMemoryProperties))+ pure $ PhysicalDeviceMemoryProperties2+ next memoryProperties++instance es ~ '[] => Zero (PhysicalDeviceMemoryProperties2 es) where+ zero = PhysicalDeviceMemoryProperties2+ ()+ zero+++-- | VkSparseImageFormatProperties2 - Structure specifying sparse image+-- format properties+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceSparseImageFormatProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceSparseImageFormatProperties2KHR'+data SparseImageFormatProperties2 = SparseImageFormatProperties2+ { -- | @properties@ is a+ -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties'+ -- structure which is populated with the same values as in+ -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.getPhysicalDeviceSparseImageFormatProperties'.+ properties :: SparseImageFormatProperties }+ deriving (Typeable)+deriving instance Show SparseImageFormatProperties2++instance ToCStruct SparseImageFormatProperties2 where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SparseImageFormatProperties2{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr SparseImageFormatProperties)) (properties) . ($ ())+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr SparseImageFormatProperties)) (zero) . ($ ())+ lift $ f++instance FromCStruct SparseImageFormatProperties2 where+ peekCStruct p = do+ properties <- peekCStruct @SparseImageFormatProperties ((p `plusPtr` 16 :: Ptr SparseImageFormatProperties))+ pure $ SparseImageFormatProperties2+ properties++instance Zero SparseImageFormatProperties2 where+ zero = SparseImageFormatProperties2+ zero+++-- | VkPhysicalDeviceSparseImageFormatInfo2 - Structure specifying sparse+-- image format inputs+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.ImageTiling',+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceSparseImageFormatProperties2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.getPhysicalDeviceSparseImageFormatProperties2KHR'+data PhysicalDeviceSparseImageFormatInfo2 = PhysicalDeviceSparseImageFormatInfo2+ { -- | 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Enums.Format.Format' value+ format :: Format+ , -- | @type@ /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType' value+ type' :: ImageType+ , -- | @samples@ /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+ -- value+ samples :: SampleCountFlagBits+ , -- | @usage@ /must/ not be @0@+ usage :: ImageUsageFlags+ , -- | @tiling@ /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Enums.ImageTiling.ImageTiling' value+ tiling :: ImageTiling+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceSparseImageFormatInfo2++instance ToCStruct PhysicalDeviceSparseImageFormatInfo2 where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceSparseImageFormatInfo2{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Format)) (format)+ poke ((p `plusPtr` 20 :: Ptr ImageType)) (type')+ poke ((p `plusPtr` 24 :: Ptr SampleCountFlagBits)) (samples)+ poke ((p `plusPtr` 28 :: Ptr ImageUsageFlags)) (usage)+ poke ((p `plusPtr` 32 :: Ptr ImageTiling)) (tiling)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Format)) (zero)+ poke ((p `plusPtr` 20 :: Ptr ImageType)) (zero)+ poke ((p `plusPtr` 24 :: Ptr SampleCountFlagBits)) (zero)+ poke ((p `plusPtr` 28 :: Ptr ImageUsageFlags)) (zero)+ poke ((p `plusPtr` 32 :: Ptr ImageTiling)) (zero)+ f++instance FromCStruct PhysicalDeviceSparseImageFormatInfo2 where+ peekCStruct p = do+ format <- peek @Format ((p `plusPtr` 16 :: Ptr Format))+ type' <- peek @ImageType ((p `plusPtr` 20 :: Ptr ImageType))+ samples <- peek @SampleCountFlagBits ((p `plusPtr` 24 :: Ptr SampleCountFlagBits))+ usage <- peek @ImageUsageFlags ((p `plusPtr` 28 :: Ptr ImageUsageFlags))+ tiling <- peek @ImageTiling ((p `plusPtr` 32 :: Ptr ImageTiling))+ pure $ PhysicalDeviceSparseImageFormatInfo2+ format type' samples usage tiling++instance Storable PhysicalDeviceSparseImageFormatInfo2 where+ sizeOf ~_ = 40+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceSparseImageFormatInfo2 where+ zero = PhysicalDeviceSparseImageFormatInfo2+ zero+ zero+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_get_physical_device_properties2.hs-boot view
@@ -0,0 +1,96 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 ( FormatProperties2+ , ImageFormatProperties2+ , PhysicalDeviceFeatures2+ , PhysicalDeviceImageFormatInfo2+ , PhysicalDeviceMemoryProperties2+ , PhysicalDeviceProperties2+ , PhysicalDeviceSparseImageFormatInfo2+ , QueueFamilyProperties2+ , SparseImageFormatProperties2+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+type role FormatProperties2 nominal+data FormatProperties2 (es :: [Type])++instance PokeChain es => ToCStruct (FormatProperties2 es)+instance Show (Chain es) => Show (FormatProperties2 es)++instance PeekChain es => FromCStruct (FormatProperties2 es)+++type role ImageFormatProperties2 nominal+data ImageFormatProperties2 (es :: [Type])++instance PokeChain es => ToCStruct (ImageFormatProperties2 es)+instance Show (Chain es) => Show (ImageFormatProperties2 es)++instance PeekChain es => FromCStruct (ImageFormatProperties2 es)+++type role PhysicalDeviceFeatures2 nominal+data PhysicalDeviceFeatures2 (es :: [Type])++instance PokeChain es => ToCStruct (PhysicalDeviceFeatures2 es)+instance Show (Chain es) => Show (PhysicalDeviceFeatures2 es)++instance PeekChain es => FromCStruct (PhysicalDeviceFeatures2 es)+++type role PhysicalDeviceImageFormatInfo2 nominal+data PhysicalDeviceImageFormatInfo2 (es :: [Type])++instance PokeChain es => ToCStruct (PhysicalDeviceImageFormatInfo2 es)+instance Show (Chain es) => Show (PhysicalDeviceImageFormatInfo2 es)++instance PeekChain es => FromCStruct (PhysicalDeviceImageFormatInfo2 es)+++type role PhysicalDeviceMemoryProperties2 nominal+data PhysicalDeviceMemoryProperties2 (es :: [Type])++instance PokeChain es => ToCStruct (PhysicalDeviceMemoryProperties2 es)+instance Show (Chain es) => Show (PhysicalDeviceMemoryProperties2 es)++instance PeekChain es => FromCStruct (PhysicalDeviceMemoryProperties2 es)+++type role PhysicalDeviceProperties2 nominal+data PhysicalDeviceProperties2 (es :: [Type])++instance PokeChain es => ToCStruct (PhysicalDeviceProperties2 es)+instance Show (Chain es) => Show (PhysicalDeviceProperties2 es)++instance PeekChain es => FromCStruct (PhysicalDeviceProperties2 es)+++data PhysicalDeviceSparseImageFormatInfo2++instance ToCStruct PhysicalDeviceSparseImageFormatInfo2+instance Show PhysicalDeviceSparseImageFormatInfo2++instance FromCStruct PhysicalDeviceSparseImageFormatInfo2+++type role QueueFamilyProperties2 nominal+data QueueFamilyProperties2 (es :: [Type])++instance PokeChain es => ToCStruct (QueueFamilyProperties2 es)+instance Show (Chain es) => Show (QueueFamilyProperties2 es)++instance PeekChain es => FromCStruct (QueueFamilyProperties2 es)+++data SparseImageFormatProperties2++instance ToCStruct SparseImageFormatProperties2+instance Show SparseImageFormatProperties2++instance FromCStruct SparseImageFormatProperties2+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_maintenance1.hs view
@@ -0,0 +1,116 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance1 ( trimCommandPool+ , CommandPoolTrimFlags(..)+ , Result(..)+ , ImageCreateFlagBits(..)+ , ImageCreateFlags+ , FormatFeatureFlagBits(..)+ , FormatFeatureFlags+ ) where++import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Graphics.Vulkan.Core10.Handles (CommandPool)+import Graphics.Vulkan.Core10.Handles (CommandPool(..))+import Graphics.Vulkan.Core11.Enums.CommandPoolTrimFlags (CommandPoolTrimFlags)+import Graphics.Vulkan.Core11.Enums.CommandPoolTrimFlags (CommandPoolTrimFlags(..))+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkTrimCommandPool))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.Core11.Enums.CommandPoolTrimFlags (CommandPoolTrimFlags(..))+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlagBits(..))+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(..))+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkTrimCommandPool+ :: FunPtr (Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ()) -> Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ()++-- | vkTrimCommandPool - Trim a command pool+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the command pool.+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandPool' is the command pool to+-- trim.+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+--+-- = Description+--+-- Trimming a command pool recycles unused memory from the command pool+-- back to the system. Command buffers allocated from the pool are not+-- affected by the command.+--+-- Note+--+-- This command provides applications with some control over the internal+-- memory allocations used by command pools.+--+-- Unused memory normally arises from command buffers that have been+-- recorded and later reset, such that they are no longer using the memory.+-- On reset, a command buffer can return memory to its command pool, but+-- the only way to release memory from a command pool to the system+-- requires calling 'Graphics.Vulkan.Core10.CommandPool.resetCommandPool',+-- which cannot be executed while any command buffers from that pool are+-- still in use. Subsequent recording operations into command buffers will+-- re-use this memory but since total memory requirements fluctuate over+-- time, unused memory can accumulate.+--+-- In this situation, trimming a command pool /may/ be useful to return+-- unused memory back to the system, returning the total outstanding memory+-- allocated by the pool back to a more “average” value.+--+-- Implementations utilize many internal allocation strategies that make it+-- impossible to guarantee that all unused memory is released back to the+-- system. For instance, an implementation of a command pool /may/ involve+-- allocating memory in bulk from the system and sub-allocating from that+-- memory. In such an implementation any live command buffer that holds a+-- reference to a bulk allocation would prevent that allocation from being+-- freed, even if only a small proportion of the bulk allocation is in use.+--+-- In most cases trimming will result in a reduction in allocated but+-- unused memory, but it does not guarantee the “ideal” behavior.+--+-- Trimming /may/ be an expensive operation, and /should/ not be called+-- frequently. Trimming /should/ be treated as a way to relieve memory+-- pressure after application-known points when there exists enough unused+-- memory that the cost of trimming is “worth” it.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandPool' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandPool' handle+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandPool' /must/ have been+-- created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandPool' /must/+-- be externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandPool',+-- 'Graphics.Vulkan.Core11.Enums.CommandPoolTrimFlags.CommandPoolTrimFlags',+-- 'Graphics.Vulkan.Core10.Handles.Device'+trimCommandPool :: Device -> CommandPool -> CommandPoolTrimFlags -> IO ()+trimCommandPool device commandPool flags = do+ let vkTrimCommandPool' = mkVkTrimCommandPool (pVkTrimCommandPool (deviceCmds (device :: Device)))+ vkTrimCommandPool' (deviceHandle (device)) (commandPool) (flags)+ pure $ ()+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_maintenance2.hs view
@@ -0,0 +1,342 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 ( InputAttachmentAspectReference(..)+ , RenderPassInputAttachmentAspectCreateInfo(..)+ , PhysicalDevicePointClippingProperties(..)+ , ImageViewUsageCreateInfo(..)+ , PipelineTessellationDomainOriginStateCreateInfo(..)+ , ImageLayout(..)+ , StructureType(..)+ , ImageCreateFlagBits(..)+ , ImageCreateFlags+ , PointClippingBehavior(..)+ , TessellationDomainOrigin(..)+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlags)+import Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)+import Graphics.Vulkan.Core11.Enums.PointClippingBehavior (PointClippingBehavior)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Core11.Enums.TessellationDomainOrigin (TessellationDomainOrigin)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(..))+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)+import Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout(..))+import Graphics.Vulkan.Core11.Enums.PointClippingBehavior (PointClippingBehavior(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+import Graphics.Vulkan.Core11.Enums.TessellationDomainOrigin (TessellationDomainOrigin(..))+-- | VkInputAttachmentAspectReference - Structure specifying a subpass\/input+-- attachment pair and an aspect mask that /can/ be read.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags',+-- 'RenderPassInputAttachmentAspectCreateInfo'+data InputAttachmentAspectReference = InputAttachmentAspectReference+ { -- | @subpass@ is an index into the @pSubpasses@ array of the parent+ -- 'Graphics.Vulkan.Core10.Pass.RenderPassCreateInfo' structure.+ subpass :: Word32+ , -- | @inputAttachmentIndex@ is an index into the @pInputAttachments@ of the+ -- specified subpass.+ inputAttachmentIndex :: Word32+ , -- | @aspectMask@ /must/ not be @0@+ aspectMask :: ImageAspectFlags+ }+ deriving (Typeable)+deriving instance Show InputAttachmentAspectReference++instance ToCStruct InputAttachmentAspectReference where+ withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p InputAttachmentAspectReference{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (subpass)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (inputAttachmentIndex)+ poke ((p `plusPtr` 8 :: Ptr ImageAspectFlags)) (aspectMask)+ f+ cStructSize = 12+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 8 :: Ptr ImageAspectFlags)) (zero)+ f++instance FromCStruct InputAttachmentAspectReference where+ peekCStruct p = do+ subpass <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ inputAttachmentIndex <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ aspectMask <- peek @ImageAspectFlags ((p `plusPtr` 8 :: Ptr ImageAspectFlags))+ pure $ InputAttachmentAspectReference+ subpass inputAttachmentIndex aspectMask++instance Storable InputAttachmentAspectReference where+ sizeOf ~_ = 12+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero InputAttachmentAspectReference where+ zero = InputAttachmentAspectReference+ zero+ zero+ zero+++-- | VkRenderPassInputAttachmentAspectCreateInfo - Structure specifying, for+-- a given subpass\/input attachment pair, which aspect /can/ be read.+--+-- = Description+--+-- An application /can/ access any aspect of an input attachment that does+-- not have a specified aspect mask in the @pAspectReferences@ array.+-- Otherwise, an application /must/ not access aspect(s) of an input+-- attachment other than those in its specified aspect mask.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'InputAttachmentAspectReference',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data RenderPassInputAttachmentAspectCreateInfo = RenderPassInputAttachmentAspectCreateInfo+ { -- | @pAspectReferences@ /must/ be a valid pointer to an array of+ -- @aspectReferenceCount@ valid 'InputAttachmentAspectReference' structures+ aspectReferences :: Vector InputAttachmentAspectReference }+ deriving (Typeable)+deriving instance Show RenderPassInputAttachmentAspectCreateInfo++instance ToCStruct RenderPassInputAttachmentAspectCreateInfo where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p RenderPassInputAttachmentAspectCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (aspectReferences)) :: Word32))+ pPAspectReferences' <- ContT $ allocaBytesAligned @InputAttachmentAspectReference ((Data.Vector.length (aspectReferences)) * 12) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAspectReferences' `plusPtr` (12 * (i)) :: Ptr InputAttachmentAspectReference) (e) . ($ ())) (aspectReferences)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr InputAttachmentAspectReference))) (pPAspectReferences')+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPAspectReferences' <- ContT $ allocaBytesAligned @InputAttachmentAspectReference ((Data.Vector.length (mempty)) * 12) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAspectReferences' `plusPtr` (12 * (i)) :: Ptr InputAttachmentAspectReference) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr InputAttachmentAspectReference))) (pPAspectReferences')+ lift $ f++instance FromCStruct RenderPassInputAttachmentAspectCreateInfo where+ peekCStruct p = do+ aspectReferenceCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pAspectReferences <- peek @(Ptr InputAttachmentAspectReference) ((p `plusPtr` 24 :: Ptr (Ptr InputAttachmentAspectReference)))+ pAspectReferences' <- generateM (fromIntegral aspectReferenceCount) (\i -> peekCStruct @InputAttachmentAspectReference ((pAspectReferences `advancePtrBytes` (12 * (i)) :: Ptr InputAttachmentAspectReference)))+ pure $ RenderPassInputAttachmentAspectCreateInfo+ pAspectReferences'++instance Zero RenderPassInputAttachmentAspectCreateInfo where+ zero = RenderPassInputAttachmentAspectCreateInfo+ mempty+++-- | VkPhysicalDevicePointClippingProperties - Structure describing the point+-- clipping behavior supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDevicePointClippingProperties' structure+-- describe the following implementation-dependent limit:+--+-- = Description+--+-- If the 'PhysicalDevicePointClippingProperties' structure is included in+-- the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Enums.PointClippingBehavior.PointClippingBehavior',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDevicePointClippingProperties = PhysicalDevicePointClippingProperties+ { -- | 'Graphics.Vulkan.Core11.Enums.PointClippingBehavior.PointClippingBehavior'+ -- is a+ -- 'Graphics.Vulkan.Core11.Enums.PointClippingBehavior.PointClippingBehavior'+ -- value specifying the point clipping behavior supported by the+ -- implementation.+ pointClippingBehavior :: PointClippingBehavior }+ deriving (Typeable)+deriving instance Show PhysicalDevicePointClippingProperties++instance ToCStruct PhysicalDevicePointClippingProperties where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDevicePointClippingProperties{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr PointClippingBehavior)) (pointClippingBehavior)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr PointClippingBehavior)) (zero)+ f++instance FromCStruct PhysicalDevicePointClippingProperties where+ peekCStruct p = do+ pointClippingBehavior <- peek @PointClippingBehavior ((p `plusPtr` 16 :: Ptr PointClippingBehavior))+ pure $ PhysicalDevicePointClippingProperties+ pointClippingBehavior++instance Storable PhysicalDevicePointClippingProperties where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDevicePointClippingProperties where+ zero = PhysicalDevicePointClippingProperties+ zero+++-- | VkImageViewUsageCreateInfo - Specify the intended usage of an image view+--+-- = Description+--+-- When this structure is chained to+-- 'Graphics.Vulkan.Core10.ImageView.ImageViewCreateInfo' the @usage@ field+-- overrides the implicit @usage@ parameter inherited from image creation+-- time and its value is used instead for the purposes of determining the+-- valid usage conditions of+-- 'Graphics.Vulkan.Core10.ImageView.ImageViewCreateInfo'.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ImageViewUsageCreateInfo = ImageViewUsageCreateInfo+ { -- | @usage@ /must/ not be @0@+ usage :: ImageUsageFlags }+ deriving (Typeable)+deriving instance Show ImageViewUsageCreateInfo++instance ToCStruct ImageViewUsageCreateInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageViewUsageCreateInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ImageUsageFlags)) (usage)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ImageUsageFlags)) (zero)+ f++instance FromCStruct ImageViewUsageCreateInfo where+ peekCStruct p = do+ usage <- peek @ImageUsageFlags ((p `plusPtr` 16 :: Ptr ImageUsageFlags))+ pure $ ImageViewUsageCreateInfo+ usage++instance Storable ImageViewUsageCreateInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImageViewUsageCreateInfo where+ zero = ImageViewUsageCreateInfo+ zero+++-- | VkPipelineTessellationDomainOriginStateCreateInfo - Structure specifying+-- the orientation of the tessellation domain+--+-- = Description+--+-- If the 'PipelineTessellationDomainOriginStateCreateInfo' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo',+-- it controls the origin of the tessellation domain. If this structure is+-- not present, it is as if @domainOrigin@ were+-- 'Graphics.Vulkan.Core11.Enums.TessellationDomainOrigin.TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT'.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Core11.Enums.TessellationDomainOrigin.TessellationDomainOrigin'+data PipelineTessellationDomainOriginStateCreateInfo = PipelineTessellationDomainOriginStateCreateInfo+ { -- | @domainOrigin@ /must/ be a valid+ -- 'Graphics.Vulkan.Core11.Enums.TessellationDomainOrigin.TessellationDomainOrigin'+ -- value+ domainOrigin :: TessellationDomainOrigin }+ deriving (Typeable)+deriving instance Show PipelineTessellationDomainOriginStateCreateInfo++instance ToCStruct PipelineTessellationDomainOriginStateCreateInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineTessellationDomainOriginStateCreateInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr TessellationDomainOrigin)) (domainOrigin)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr TessellationDomainOrigin)) (zero)+ f++instance FromCStruct PipelineTessellationDomainOriginStateCreateInfo where+ peekCStruct p = do+ domainOrigin <- peek @TessellationDomainOrigin ((p `plusPtr` 16 :: Ptr TessellationDomainOrigin))+ pure $ PipelineTessellationDomainOriginStateCreateInfo+ domainOrigin++instance Storable PipelineTessellationDomainOriginStateCreateInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineTessellationDomainOriginStateCreateInfo where+ zero = PipelineTessellationDomainOriginStateCreateInfo+ zero+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_maintenance2.hs-boot view
@@ -0,0 +1,50 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 ( ImageViewUsageCreateInfo+ , InputAttachmentAspectReference+ , PhysicalDevicePointClippingProperties+ , PipelineTessellationDomainOriginStateCreateInfo+ , RenderPassInputAttachmentAspectCreateInfo+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ImageViewUsageCreateInfo++instance ToCStruct ImageViewUsageCreateInfo+instance Show ImageViewUsageCreateInfo++instance FromCStruct ImageViewUsageCreateInfo+++data InputAttachmentAspectReference++instance ToCStruct InputAttachmentAspectReference+instance Show InputAttachmentAspectReference++instance FromCStruct InputAttachmentAspectReference+++data PhysicalDevicePointClippingProperties++instance ToCStruct PhysicalDevicePointClippingProperties+instance Show PhysicalDevicePointClippingProperties++instance FromCStruct PhysicalDevicePointClippingProperties+++data PipelineTessellationDomainOriginStateCreateInfo++instance ToCStruct PipelineTessellationDomainOriginStateCreateInfo+instance Show PipelineTessellationDomainOriginStateCreateInfo++instance FromCStruct PipelineTessellationDomainOriginStateCreateInfo+++data RenderPassInputAttachmentAspectCreateInfo++instance ToCStruct RenderPassInputAttachmentAspectCreateInfo+instance Show RenderPassInputAttachmentAspectCreateInfo++instance FromCStruct RenderPassInputAttachmentAspectCreateInfo+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_maintenance3.hs view
@@ -0,0 +1,268 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3 ( getDescriptorSetLayoutSupport+ , PhysicalDeviceMaintenance3Properties(..)+ , DescriptorSetLayoutSupport(..)+ , StructureType(..)+ ) where++import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.DescriptorSet (DescriptorSetLayoutCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (DescriptorSetVariableDescriptorCountLayoutSupport)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetDescriptorSetLayoutSupport))+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetDescriptorSetLayoutSupport+ :: FunPtr (Ptr Device_T -> Ptr (DescriptorSetLayoutCreateInfo a) -> Ptr (DescriptorSetLayoutSupport b) -> IO ()) -> Ptr Device_T -> Ptr (DescriptorSetLayoutCreateInfo a) -> Ptr (DescriptorSetLayoutSupport b) -> IO ()++-- | vkGetDescriptorSetLayoutSupport - Query whether a descriptor set layout+-- can be created+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- would create the descriptor set layout.+--+-- - @pCreateInfo@ is a pointer to a+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo'+-- structure specifying the state of the descriptor set layout object.+--+-- - @pSupport@ is a pointer to a 'DescriptorSetLayoutSupport' structure,+-- in which information about support for the descriptor set layout+-- object is returned.+--+-- = Description+--+-- Some implementations have limitations on what fits in a descriptor set+-- which are not easily expressible in terms of existing limits like+-- @maxDescriptorSet@*, for example if all descriptor types share a limited+-- space in memory but each descriptor is a different size or alignment.+-- This command returns information about whether a descriptor set+-- satisfies this limit. If the descriptor set layout satisfies the+-- 'PhysicalDeviceMaintenance3Properties'::@maxPerSetDescriptors@ limit,+-- this command is guaranteed to return+-- 'Graphics.Vulkan.Core10.BaseType.TRUE' in+-- 'DescriptorSetLayoutSupport'::@supported@. If the descriptor set layout+-- exceeds the+-- 'PhysicalDeviceMaintenance3Properties'::@maxPerSetDescriptors@ limit,+-- whether the descriptor set layout is supported is+-- implementation-dependent and /may/ depend on whether the descriptor+-- sizes and alignments cause the layout to exceed an internal limit.+--+-- This command does not consider other limits such as+-- @maxPerStageDescriptor@*, and so a descriptor set layout that is+-- supported according to this command /must/ still satisfy the pipeline+-- layout limits such as @maxPerStageDescriptor@* in order to be used in a+-- pipeline layout.+--+-- Note+--+-- This is a 'Graphics.Vulkan.Core10.Handles.Device' query rather than+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' because the answer /may/+-- depend on enabled features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo',+-- 'DescriptorSetLayoutSupport', 'Graphics.Vulkan.Core10.Handles.Device'+getDescriptorSetLayoutSupport :: (PokeChain a, PokeChain b, PeekChain b) => Device -> DescriptorSetLayoutCreateInfo a -> IO (DescriptorSetLayoutSupport b)+getDescriptorSetLayoutSupport device createInfo = evalContT $ do+ let vkGetDescriptorSetLayoutSupport' = mkVkGetDescriptorSetLayoutSupport (pVkGetDescriptorSetLayoutSupport (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pPSupport <- ContT (withZeroCStruct @(DescriptorSetLayoutSupport _))+ lift $ vkGetDescriptorSetLayoutSupport' (deviceHandle (device)) pCreateInfo (pPSupport)+ pSupport <- lift $ peekCStruct @(DescriptorSetLayoutSupport _) pPSupport+ pure $ (pSupport)+++-- | VkPhysicalDeviceMaintenance3Properties - Structure describing descriptor+-- set properties+--+-- = Members+--+-- The members of the 'PhysicalDeviceMaintenance3Properties' structure+-- describe the following implementation-dependent limits:+--+-- = Description+--+-- If the 'PhysicalDeviceMaintenance3Properties' structure is included in+-- the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceMaintenance3Properties = PhysicalDeviceMaintenance3Properties+ { -- | @maxPerSetDescriptors@ is a maximum number of descriptors (summed over+ -- all descriptor types) in a single descriptor set that is guaranteed to+ -- satisfy any implementation-dependent constraints on the size of a+ -- descriptor set itself. Applications /can/ query whether a descriptor set+ -- that goes beyond this limit is supported using+ -- 'getDescriptorSetLayoutSupport'.+ maxPerSetDescriptors :: Word32+ , -- | @maxMemoryAllocationSize@ is the maximum size of a memory allocation+ -- that /can/ be created, even if there is more space available in the+ -- heap.+ maxMemoryAllocationSize :: DeviceSize+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceMaintenance3Properties++instance ToCStruct PhysicalDeviceMaintenance3Properties where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceMaintenance3Properties{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (maxPerSetDescriptors)+ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (maxMemoryAllocationSize)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)+ f++instance FromCStruct PhysicalDeviceMaintenance3Properties where+ peekCStruct p = do+ maxPerSetDescriptors <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ maxMemoryAllocationSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))+ pure $ PhysicalDeviceMaintenance3Properties+ maxPerSetDescriptors maxMemoryAllocationSize++instance Storable PhysicalDeviceMaintenance3Properties where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceMaintenance3Properties where+ zero = PhysicalDeviceMaintenance3Properties+ zero+ zero+++-- | VkDescriptorSetLayoutSupport - Structure returning information about+-- whether a descriptor set layout can be supported+--+-- = Description+--+-- @supported@ is set to 'Graphics.Vulkan.Core10.BaseType.TRUE' if the+-- descriptor set /can/ be created, or else is set to+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetVariableDescriptorCountLayoutSupport'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getDescriptorSetLayoutSupport',+-- 'Graphics.Vulkan.Extensions.VK_KHR_maintenance3.getDescriptorSetLayoutSupportKHR'+data DescriptorSetLayoutSupport (es :: [Type]) = DescriptorSetLayoutSupport+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | @supported@ specifies whether the descriptor set layout /can/ be+ -- created.+ supported :: Bool+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (DescriptorSetLayoutSupport es)++instance Extensible DescriptorSetLayoutSupport where+ extensibleType = STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT+ setNext x next = x{next = next}+ getNext DescriptorSetLayoutSupport{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends DescriptorSetLayoutSupport e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @DescriptorSetVariableDescriptorCountLayoutSupport = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (DescriptorSetLayoutSupport es) where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DescriptorSetLayoutSupport{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (supported))+ lift $ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ f++instance PeekChain es => FromCStruct (DescriptorSetLayoutSupport es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ supported <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ DescriptorSetLayoutSupport+ next (bool32ToBool supported)++instance es ~ '[] => Zero (DescriptorSetLayoutSupport es) where+ zero = DescriptorSetLayoutSupport+ ()+ zero+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_maintenance3.hs-boot view
@@ -0,0 +1,27 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3 ( DescriptorSetLayoutSupport+ , PhysicalDeviceMaintenance3Properties+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+type role DescriptorSetLayoutSupport nominal+data DescriptorSetLayoutSupport (es :: [Type])++instance PokeChain es => ToCStruct (DescriptorSetLayoutSupport es)+instance Show (Chain es) => Show (DescriptorSetLayoutSupport es)++instance PeekChain es => FromCStruct (DescriptorSetLayoutSupport es)+++data PhysicalDeviceMaintenance3Properties++instance ToCStruct PhysicalDeviceMaintenance3Properties+instance Show PhysicalDeviceMaintenance3Properties++instance FromCStruct PhysicalDeviceMaintenance3Properties+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_multiview.hs view
@@ -0,0 +1,403 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview ( PhysicalDeviceMultiviewFeatures(..)+ , PhysicalDeviceMultiviewProperties(..)+ , RenderPassMultiviewCreateInfo(..)+ , StructureType(..)+ , DependencyFlagBits(..)+ , DependencyFlags+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Data.Int (Int32)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlagBits(..))+import Graphics.Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- | VkPhysicalDeviceMultiviewFeatures - Structure describing multiview+-- features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceMultiviewFeatures' structure describe+-- the following features:+--+-- = Description+--+-- - @multiview@ specifies whether the implementation supports multiview+-- rendering within a render pass. If this feature is not enabled, the+-- view mask of each subpass /must/ always be zero.+--+-- - @multiviewGeometryShader@ specifies whether the implementation+-- supports multiview rendering within a render pass, with+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry geometry shaders>.+-- If this feature is not enabled, then a pipeline compiled against a+-- subpass with a non-zero view mask /must/ not include a geometry+-- shader.+--+-- - @multiviewTessellationShader@ specifies whether the implementation+-- supports multiview rendering within a render pass, with+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation tessellation shaders>.+-- If this feature is not enabled, then a pipeline compiled against a+-- subpass with a non-zero view mask /must/ not include any+-- tessellation shaders.+--+-- If the 'PhysicalDeviceMultiviewFeatures' structure is included in the+-- @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether each feature is supported.+-- 'PhysicalDeviceMultiviewFeatures' /can/ also be included in the @pNext@+-- chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to enable the+-- features.+--+-- == Valid Usage+--+-- - If @multiviewGeometryShader@ is enabled then @multiview@ /must/ also+-- be enabled.+--+-- - If @multiviewTessellationShader@ is enabled then @multiview@ /must/+-- also be enabled.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceMultiviewFeatures = PhysicalDeviceMultiviewFeatures+ { -- No documentation found for Nested "VkPhysicalDeviceMultiviewFeatures" "multiview"+ multiview :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceMultiviewFeatures" "multiviewGeometryShader"+ multiviewGeometryShader :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceMultiviewFeatures" "multiviewTessellationShader"+ multiviewTessellationShader :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceMultiviewFeatures++instance ToCStruct PhysicalDeviceMultiviewFeatures where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceMultiviewFeatures{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (multiview))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (multiviewGeometryShader))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (multiviewTessellationShader))+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceMultiviewFeatures where+ peekCStruct p = do+ multiview <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ multiviewGeometryShader <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ multiviewTessellationShader <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ pure $ PhysicalDeviceMultiviewFeatures+ (bool32ToBool multiview) (bool32ToBool multiviewGeometryShader) (bool32ToBool multiviewTessellationShader)++instance Storable PhysicalDeviceMultiviewFeatures where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceMultiviewFeatures where+ zero = PhysicalDeviceMultiviewFeatures+ zero+ zero+ zero+++-- | VkPhysicalDeviceMultiviewProperties - Structure describing multiview+-- limits that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceMultiviewProperties' structure+-- describe the following implementation-dependent limits:+--+-- = Description+--+-- If the 'PhysicalDeviceMultiviewProperties' structure is included in the+-- @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceMultiviewProperties = PhysicalDeviceMultiviewProperties+ { -- | @maxMultiviewViewCount@ is one greater than the maximum view index that+ -- /can/ be used in a subpass.+ maxMultiviewViewCount :: Word32+ , -- | @maxMultiviewInstanceIndex@ is the maximum valid value of instance index+ -- allowed to be generated by a drawing command recorded within a subpass+ -- of a multiview render pass instance.+ maxMultiviewInstanceIndex :: Word32+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceMultiviewProperties++instance ToCStruct PhysicalDeviceMultiviewProperties where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceMultiviewProperties{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (maxMultiviewViewCount)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (maxMultiviewInstanceIndex)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ f++instance FromCStruct PhysicalDeviceMultiviewProperties where+ peekCStruct p = do+ maxMultiviewViewCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ maxMultiviewInstanceIndex <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pure $ PhysicalDeviceMultiviewProperties+ maxMultiviewViewCount maxMultiviewInstanceIndex++instance Storable PhysicalDeviceMultiviewProperties where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceMultiviewProperties where+ zero = PhysicalDeviceMultiviewProperties+ zero+ zero+++-- | VkRenderPassMultiviewCreateInfo - Structure containing multiview info+-- for all subpasses+--+-- = Description+--+-- When a subpass uses a non-zero view mask, /multiview/ functionality is+-- considered to be enabled. Multiview is all-or-nothing for a render pass+-- - that is, either all subpasses /must/ have a non-zero view mask (though+-- some subpasses /may/ have only one view) or all /must/ be zero.+-- Multiview causes all drawing and clear commands in the subpass to behave+-- as if they were broadcast to each view, where a view is represented by+-- one layer of the framebuffer attachments. All draws and clears are+-- broadcast to each /view index/ whose bit is set in the view mask. The+-- view index is provided in the @ViewIndex@ shader input variable, and+-- color, depth\/stencil, and input attachments all read\/write the layer+-- of the framebuffer corresponding to the view index.+--+-- If the view mask is zero for all subpasses, multiview is considered to+-- be disabled and all drawing commands execute normally, without this+-- additional broadcasting.+--+-- Some implementations /may/ not support multiview in conjunction with+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview-gs geometry shaders>+-- or+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview-tess tessellation shaders>.+--+-- When multiview is enabled, the+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'+-- bit in a dependency /can/ be used to express a view-local dependency,+-- meaning that each view in the destination subpass depends on a single+-- view in the source subpass. Unlike pipeline barriers, a subpass+-- dependency /can/ potentially have a different view mask in the source+-- subpass and the destination subpass. If the dependency is view-local,+-- then each view (dstView) in the destination subpass depends on the view+-- dstView + @pViewOffsets@[dependency] in the source subpass. If there is+-- not such a view in the source subpass, then this dependency does not+-- affect that view in the destination subpass. If the dependency is not+-- view-local, then all views in the destination subpass depend on all+-- views in the source subpass, and the view offset is ignored. A non-zero+-- view offset is not allowed in a self-dependency.+--+-- The elements of @pCorrelationMasks@ are a set of masks of views+-- indicating that views in the same mask /may/ exhibit spatial coherency+-- between the views, making it more efficient to render them concurrently.+-- Correlation masks /must/ not have a functional effect on the results of+-- the multiview rendering.+--+-- When multiview is enabled, at the beginning of each subpass all+-- non-render pass state is undefined. In particular, each time+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBeginRenderPass' or+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdNextSubpass' is called+-- the graphics pipeline /must/ be bound, any relevant descriptor sets or+-- vertex\/index buffers /must/ be bound, and any relevant dynamic state or+-- push constants /must/ be set before they are used.+--+-- A multiview subpass /can/ declare that its shaders will write per-view+-- attributes for all views in a single invocation, by setting the+-- 'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX'+-- bit in the subpass description. The only supported per-view attributes+-- are position and viewport mask, and per-view position and viewport masks+-- are written to output array variables decorated with @PositionPerViewNV@+-- and @ViewportMaskPerViewNV@, respectively. If+-- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_NV_viewport_array2@+-- is not supported and enabled, @ViewportMaskPerViewNV@ /must/ not be+-- used. Values written to elements of @PositionPerViewNV@ and+-- @ViewportMaskPerViewNV@ /must/ not depend on the @ViewIndex@. The shader+-- /must/ also write to an output variable decorated with @Position@, and+-- the value written to @Position@ /must/ equal the value written to+-- @PositionPerViewNV@[@ViewIndex@]. Similarly, if @ViewportMaskPerViewNV@+-- is written to then the shader /must/ also write to an output variable+-- decorated with @ViewportMaskNV@, and the value written to+-- @ViewportMaskNV@ /must/ equal the value written to+-- @ViewportMaskPerViewNV@[@ViewIndex@]. Implementations will either use+-- values taken from @Position@ and @ViewportMaskNV@ and invoke the shader+-- once for each view, or will use values taken from @PositionPerViewNV@+-- and @ViewportMaskPerViewNV@ and invoke the shader fewer times. The+-- values written to @Position@ and @ViewportMaskNV@ /must/ not depend on+-- the values written to @PositionPerViewNV@ and @ViewportMaskPerViewNV@,+-- or vice versa (to allow compilers to eliminate the unused outputs). All+-- attributes that do not have @*PerViewNV@ counterparts /must/ not depend+-- on @ViewIndex@.+--+-- Per-view attributes are all-or-nothing for a subpass. That is, all+-- pipelines compiled against a subpass that includes the+-- 'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX'+-- bit /must/ write per-view attributes to the @*PerViewNV[]@ shader+-- outputs, in addition to the non-per-view (e.g. @Position@) outputs.+-- Pipelines compiled against a subpass that does not include this bit+-- /must/ not include the @*PerViewNV[]@ outputs in their interfaces.+--+-- == Valid Usage+--+-- - Each view index /must/ not be set in more than one element of+-- @pCorrelationMasks@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO'+--+-- - If @subpassCount@ is not @0@, @pViewMasks@ /must/ be a valid pointer+-- to an array of @subpassCount@ @uint32_t@ values+--+-- - If @dependencyCount@ is not @0@, @pViewOffsets@ /must/ be a valid+-- pointer to an array of @dependencyCount@ @int32_t@ values+--+-- - If @correlationMaskCount@ is not @0@, @pCorrelationMasks@ /must/ be+-- a valid pointer to an array of @correlationMaskCount@ @uint32_t@+-- values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data RenderPassMultiviewCreateInfo = RenderPassMultiviewCreateInfo+ { -- | @pViewMasks@ is a pointer to an array of @subpassCount@ view masks,+ -- where each mask is a bitfield of view indices describing which views+ -- rendering is broadcast to in each subpass, when multiview is enabled. If+ -- @subpassCount@ is zero, each view mask is treated as zero.+ viewMasks :: Vector Word32+ , -- | @pViewOffsets@ is a pointer to an array of @dependencyCount@ view+ -- offsets, one for each dependency. If @dependencyCount@ is zero, each+ -- dependency’s view offset is treated as zero. Each view offset controls+ -- which views in the source subpass the views in the destination subpass+ -- depend on.+ viewOffsets :: Vector Int32+ , -- | @pCorrelationMasks@ is a pointer to an array of @correlationMaskCount@+ -- view masks indicating sets of views that /may/ be more efficient to+ -- render concurrently.+ correlationMasks :: Vector Word32+ }+ deriving (Typeable)+deriving instance Show RenderPassMultiviewCreateInfo++instance ToCStruct RenderPassMultiviewCreateInfo where+ withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p RenderPassMultiviewCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (viewMasks)) :: Word32))+ pPViewMasks' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (viewMasks)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPViewMasks' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (viewMasks)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPViewMasks')+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (viewOffsets)) :: Word32))+ pPViewOffsets' <- ContT $ allocaBytesAligned @Int32 ((Data.Vector.length (viewOffsets)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPViewOffsets' `plusPtr` (4 * (i)) :: Ptr Int32) (e)) (viewOffsets)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Int32))) (pPViewOffsets')+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (correlationMasks)) :: Word32))+ pPCorrelationMasks' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (correlationMasks)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPCorrelationMasks' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (correlationMasks)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr Word32))) (pPCorrelationMasks')+ lift $ f+ cStructSize = 64+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPViewMasks' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPViewMasks' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPViewMasks')+ pPViewOffsets' <- ContT $ allocaBytesAligned @Int32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPViewOffsets' `plusPtr` (4 * (i)) :: Ptr Int32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Int32))) (pPViewOffsets')+ pPCorrelationMasks' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPCorrelationMasks' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr Word32))) (pPCorrelationMasks')+ lift $ f++instance FromCStruct RenderPassMultiviewCreateInfo where+ peekCStruct p = do+ subpassCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pViewMasks <- peek @(Ptr Word32) ((p `plusPtr` 24 :: Ptr (Ptr Word32)))+ pViewMasks' <- generateM (fromIntegral subpassCount) (\i -> peek @Word32 ((pViewMasks `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ dependencyCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pViewOffsets <- peek @(Ptr Int32) ((p `plusPtr` 40 :: Ptr (Ptr Int32)))+ pViewOffsets' <- generateM (fromIntegral dependencyCount) (\i -> peek @Int32 ((pViewOffsets `advancePtrBytes` (4 * (i)) :: Ptr Int32)))+ correlationMaskCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+ pCorrelationMasks <- peek @(Ptr Word32) ((p `plusPtr` 56 :: Ptr (Ptr Word32)))+ pCorrelationMasks' <- generateM (fromIntegral correlationMaskCount) (\i -> peek @Word32 ((pCorrelationMasks `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ pure $ RenderPassMultiviewCreateInfo+ pViewMasks' pViewOffsets' pCorrelationMasks'++instance Zero RenderPassMultiviewCreateInfo where+ zero = RenderPassMultiviewCreateInfo+ mempty+ mempty+ mempty+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_multiview.hs-boot view
@@ -0,0 +1,32 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview ( PhysicalDeviceMultiviewFeatures+ , PhysicalDeviceMultiviewProperties+ , RenderPassMultiviewCreateInfo+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceMultiviewFeatures++instance ToCStruct PhysicalDeviceMultiviewFeatures+instance Show PhysicalDeviceMultiviewFeatures++instance FromCStruct PhysicalDeviceMultiviewFeatures+++data PhysicalDeviceMultiviewProperties++instance ToCStruct PhysicalDeviceMultiviewProperties+instance Show PhysicalDeviceMultiviewProperties++instance FromCStruct PhysicalDeviceMultiviewProperties+++data RenderPassMultiviewCreateInfo++instance ToCStruct RenderPassMultiviewCreateInfo+instance Show RenderPassMultiviewCreateInfo++instance FromCStruct RenderPassMultiviewCreateInfo+
− src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_protected_memory.hs
@@ -1,328 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory- ( pattern VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES- , pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2- , pattern VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT- , pattern VK_QUEUE_PROTECTED_BIT- , pattern VK_MEMORY_PROPERTY_PROTECTED_BIT- , pattern VK_BUFFER_CREATE_PROTECTED_BIT- , pattern VK_IMAGE_CREATE_PROTECTED_BIT- , pattern VK_COMMAND_POOL_CREATE_PROTECTED_BIT- , vkGetDeviceQueue2- , VkProtectedSubmitInfo(..)- , VkPhysicalDeviceProtectedMemoryFeatures(..)- , VkPhysicalDeviceProtectedMemoryProperties(..)- , VkDeviceQueueInfo2(..)- ) where--import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Buffer- ( VkBufferCreateFlagBits(..)- )-import Graphics.Vulkan.Core10.CommandPool- ( VkCommandPoolCreateFlagBits(..)- )-import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.Device- ( VkDeviceQueueCreateFlagBits(..)- , VkDeviceQueueCreateFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkImageCreateFlagBits(..)- , VkMemoryPropertyFlagBits(..)- , VkQueueFlagBits(..)- , VkDevice- )-import Graphics.Vulkan.Core10.Queue- ( VkQueue- )----- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO"-pattern VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = VkStructureType 1000145000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = VkStructureType 1000145001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = VkStructureType 1000145002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2"-pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = VkStructureType 1000145003--- | @VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT@ specifies that the device queue--- is a protected-capable queue. If the protected memory feature is not--- enabled, the @VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT@ bit of @flags@--- /must/ not be set.-pattern VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT :: VkDeviceQueueCreateFlagBits-pattern VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = VkDeviceQueueCreateFlagBits 0x00000001--- No documentation found for Nested "VkQueueFlagBits" "VK_QUEUE_PROTECTED_BIT"-pattern VK_QUEUE_PROTECTED_BIT :: VkQueueFlagBits-pattern VK_QUEUE_PROTECTED_BIT = VkQueueFlagBits 0x00000010--- No documentation found for Nested "VkMemoryPropertyFlagBits" "VK_MEMORY_PROPERTY_PROTECTED_BIT"-pattern VK_MEMORY_PROPERTY_PROTECTED_BIT :: VkMemoryPropertyFlagBits-pattern VK_MEMORY_PROPERTY_PROTECTED_BIT = VkMemoryPropertyFlagBits 0x00000020--- No documentation found for Nested "VkBufferCreateFlagBits" "VK_BUFFER_CREATE_PROTECTED_BIT"-pattern VK_BUFFER_CREATE_PROTECTED_BIT :: VkBufferCreateFlagBits-pattern VK_BUFFER_CREATE_PROTECTED_BIT = VkBufferCreateFlagBits 0x00000008--- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_PROTECTED_BIT"-pattern VK_IMAGE_CREATE_PROTECTED_BIT :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_PROTECTED_BIT = VkImageCreateFlagBits 0x00000800--- No documentation found for Nested "VkCommandPoolCreateFlagBits" "VK_COMMAND_POOL_CREATE_PROTECTED_BIT"-pattern VK_COMMAND_POOL_CREATE_PROTECTED_BIT :: VkCommandPoolCreateFlagBits-pattern VK_COMMAND_POOL_CREATE_PROTECTED_BIT = VkCommandPoolCreateFlagBits 0x00000004--- | vkGetDeviceQueue2 - Get a queue handle from a device------ = Parameters------ - @device@ is the logical device that owns the queue.------ - @pQueueInfo@ points to an instance of the 'VkDeviceQueueInfo2'--- structure, describing the parameters used to create the device--- queue.------ - @pQueue@ is a pointer to a @VkQueue@ object that will be filled with--- the handle for the requested queue.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pQueueInfo@ /must/ be a valid pointer to a valid--- @VkDeviceQueueInfo2@ structure------ - @pQueue@ /must/ be a valid pointer to a @VkQueue@ handle------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkDeviceQueueInfo2', 'Graphics.Vulkan.Core10.Queue.VkQueue'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetDeviceQueue2" vkGetDeviceQueue2 :: ("device" ::: VkDevice) -> ("pQueueInfo" ::: Ptr VkDeviceQueueInfo2) -> ("pQueue" ::: Ptr VkQueue) -> IO ()--- | VkProtectedSubmitInfo - Structure indicating whether the submission is--- protected------ == Valid Usage------ - If the protected memory feature is not enabled, @protectedSubmit@--- /must/ not be @VK_TRUE@.------ - If @protectedSubmit@ is @VK_TRUE@, then each element of the--- @pCommandBuffers@ array /must/ be a protected command buffer.------ - If @protectedSubmit@ is @VK_FALSE@, then each element of the--- @pCommandBuffers@ array /must/ be an unprotected command buffer.------ - If the @VkSubmitInfo@::@pNext@ chain does not include a--- @VkProtectedSubmitInfo@ structure, then each element of the command--- buffer of the @pCommandBuffers@ array /must/ be an unprotected--- command buffer.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO@------ = See Also------ @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkProtectedSubmitInfo = VkProtectedSubmitInfo- { -- No documentation found for Nested "VkProtectedSubmitInfo" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkProtectedSubmitInfo" "pNext"- vkPNext :: Ptr ()- , -- | @protectedSubmit@ specifies whether the batch is protected. If- -- @protectedSubmit@ is @VK_TRUE@, the batch is protected. If- -- @protectedSubmit@ is @VK_FALSE@, the batch is unprotected. If the- -- @VkSubmitInfo@::@pNext@ chain does not contain this structure, the batch- -- is unprotected.- vkProtectedSubmit :: VkBool32- }- deriving (Eq, Show)--instance Storable VkProtectedSubmitInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkProtectedSubmitInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkProtectedSubmitInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkProtectedSubmitInfo))- *> poke (ptr `plusPtr` 16) (vkProtectedSubmit (poked :: VkProtectedSubmitInfo))--- | VkPhysicalDeviceProtectedMemoryFeatures - Structure describing protected--- memory features that can be supported by an implementation------ = Description------ If the @VkPhysicalDeviceProtectedMemoryFeatures@ structure is included--- in the @pNext@ chain of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceFeatures2',--- it is filled with a value indicating whether the feature is supported.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES@------ = See Also------ @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceProtectedMemoryFeatures = VkPhysicalDeviceProtectedMemoryFeatures- { -- No documentation found for Nested "VkPhysicalDeviceProtectedMemoryFeatures" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceProtectedMemoryFeatures" "pNext"- vkPNext :: Ptr ()- , -- | @protectedMemory@ specifies whether protected memory is supported.- vkProtectedMemory :: VkBool32- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceProtectedMemoryFeatures where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkPhysicalDeviceProtectedMemoryFeatures <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceProtectedMemoryFeatures))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceProtectedMemoryFeatures))- *> poke (ptr `plusPtr` 16) (vkProtectedMemory (poked :: VkPhysicalDeviceProtectedMemoryFeatures))--- | VkPhysicalDeviceProtectedMemoryProperties - Structure describing--- protected memory properties that can be supported by an implementation------ = Description------ If the @VkPhysicalDeviceProtectedMemoryProperties@ structure is included--- in the @pNext@ chain of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2',--- it is filled with a value indicating the implementation-dependent--- behavior.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES@------ = See Also------ @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceProtectedMemoryProperties = VkPhysicalDeviceProtectedMemoryProperties- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @protectedNoFault@ specifies whether the undefined behavior will not- -- include process termination or device loss. If @protectedNoFault@ is- -- @VK_FALSE@, undefined behavior /may/ include process termination or- -- device loss. If @protectedNoFault@ is @VK_TRUE@, undefined behavior will- -- not include process termination or device loss.- vkProtectedNoFault :: VkBool32- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceProtectedMemoryProperties where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkPhysicalDeviceProtectedMemoryProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceProtectedMemoryProperties))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceProtectedMemoryProperties))- *> poke (ptr `plusPtr` 16) (vkProtectedNoFault (poked :: VkPhysicalDeviceProtectedMemoryProperties))--- | VkDeviceQueueInfo2 - Structure specifying the parameters used for device--- queue creation------ = Description------ The queue returned by @vkGetDeviceQueue2@ /must/ have the same @flags@--- value from this structure as that used at device creation time in a--- @VkDeviceQueueCreateInfo@ instance. If no matching @flags@ were--- specified at device creation time then @pQueue@ will return--- @VK_NULL_HANDLE@.------ == Valid Usage------ - @queueFamilyIndex@ /must/ be one of the queue family indices--- specified when @device@ was created, via the--- @VkDeviceQueueCreateInfo@ structure------ - @queueIndex@ /must/ be less than the number of queues created for--- the specified queue family index and @VkDeviceQueueCreateFlags@--- member @flags@ equal to this @flags@ value when @device@ was--- created, via the @queueCount@ member of the--- @VkDeviceQueueCreateInfo@ structure------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Device.VkDeviceQueueCreateFlagBits' values------ - @flags@ /must/ not be @0@------ = See Also------ 'Graphics.Vulkan.Core10.Device.VkDeviceQueueCreateFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkGetDeviceQueue2'-data VkDeviceQueueInfo2 = VkDeviceQueueInfo2- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. The- -- @pNext@ chain of @VkDeviceQueueInfo2@ is used to provide additional- -- image parameters to @vkGetDeviceQueue2@.- vkPNext :: Ptr ()- , -- | @flags@ is a 'Graphics.Vulkan.Core10.Device.VkDeviceQueueCreateFlags'- -- value indicating the flags used to create the device queue.- vkFlags :: VkDeviceQueueCreateFlags- , -- | @queueFamilyIndex@ is the index of the queue family to which the queue- -- belongs.- vkQueueFamilyIndex :: Word32- , -- | @queueIndex@ is the index within this queue family of the queue to- -- retrieve.- vkQueueIndex :: Word32- }- deriving (Eq, Show)--instance Storable VkDeviceQueueInfo2 where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkDeviceQueueInfo2 <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDeviceQueueInfo2))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDeviceQueueInfo2))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkDeviceQueueInfo2))- *> poke (ptr `plusPtr` 20) (vkQueueFamilyIndex (poked :: VkDeviceQueueInfo2))- *> poke (ptr `plusPtr` 24) (vkQueueIndex (poked :: VkDeviceQueueInfo2))
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_sampler_ycbcr_conversion.hs view
@@ -0,0 +1,848 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion ( createSamplerYcbcrConversion+ , withSamplerYcbcrConversion+ , destroySamplerYcbcrConversion+ , SamplerYcbcrConversionInfo(..)+ , SamplerYcbcrConversionCreateInfo(..)+ , BindImagePlaneMemoryInfo(..)+ , ImagePlaneMemoryRequirementsInfo(..)+ , PhysicalDeviceSamplerYcbcrConversionFeatures(..)+ , SamplerYcbcrConversionImageFormatProperties(..)+ , SamplerYcbcrConversion(..)+ , Format(..)+ , StructureType(..)+ , ObjectType(..)+ , ImageCreateFlagBits(..)+ , ImageCreateFlags+ , FormatFeatureFlagBits(..)+ , FormatFeatureFlags+ , ImageAspectFlagBits(..)+ , ImageAspectFlags+ , SamplerYcbcrModelConversion(..)+ , SamplerYcbcrRange(..)+ , ChromaLocation(..)+ ) where++import Control.Exception.Base (bracket)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core11.Enums.ChromaLocation (ChromaLocation)+import Graphics.Vulkan.Core10.ImageView (ComponentMapping)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateSamplerYcbcrConversion))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroySamplerYcbcrConversion))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (ExternalFormatANDROID)+import Graphics.Vulkan.Core10.Enums.Filter (Filter)+import Graphics.Vulkan.Core10.Enums.Format (Format)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlagBits)+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core11.Handles (SamplerYcbcrConversion)+import Graphics.Vulkan.Core11.Handles (SamplerYcbcrConversion(..))+import Graphics.Vulkan.Core11.Enums.SamplerYcbcrModelConversion (SamplerYcbcrModelConversion)+import Graphics.Vulkan.Core11.Enums.SamplerYcbcrRange (SamplerYcbcrRange)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Core11.Enums.ChromaLocation (ChromaLocation(..))+import Graphics.Vulkan.Core10.Enums.Format (Format(..))+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlagBits(..))+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)+import Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlagBits(..))+import Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlags)+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(..))+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)+import Graphics.Vulkan.Core10.Enums.ObjectType (ObjectType(..))+import Graphics.Vulkan.Core11.Handles (SamplerYcbcrConversion(..))+import Graphics.Vulkan.Core11.Enums.SamplerYcbcrModelConversion (SamplerYcbcrModelConversion(..))+import Graphics.Vulkan.Core11.Enums.SamplerYcbcrRange (SamplerYcbcrRange(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateSamplerYcbcrConversion+ :: FunPtr (Ptr Device_T -> Ptr (SamplerYcbcrConversionCreateInfo a) -> Ptr AllocationCallbacks -> Ptr SamplerYcbcrConversion -> IO Result) -> Ptr Device_T -> Ptr (SamplerYcbcrConversionCreateInfo a) -> Ptr AllocationCallbacks -> Ptr SamplerYcbcrConversion -> IO Result++-- | vkCreateSamplerYcbcrConversion - Create a new Y′CBCR conversion+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the sampler Y′CBCR conversion.+--+-- - @pCreateInfo@ is a pointer to a 'SamplerYcbcrConversionCreateInfo'+-- structure specifying the requested sampler Y′CBCR conversion.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pYcbcrConversion@ is a pointer to a+-- 'Graphics.Vulkan.Core11.Handles.SamplerYcbcrConversion' handle in+-- which the resulting sampler Y′CBCR conversion is returned.+--+-- = Description+--+-- The interpretation of the configured sampler Y′CBCR conversion is+-- described in more detail in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion the description of sampler Y′CBCR conversion>+-- in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures Image Operations>+-- chapter.+--+-- == Valid Usage+--+-- - The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sampler-YCbCr-conversion sampler Y′CBCR conversion feature>+-- /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'SamplerYcbcrConversionCreateInfo' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pYcbcrConversion@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core11.Handles.SamplerYcbcrConversion' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core11.Handles.SamplerYcbcrConversion',+-- 'SamplerYcbcrConversionCreateInfo'+createSamplerYcbcrConversion :: PokeChain a => Device -> SamplerYcbcrConversionCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (SamplerYcbcrConversion)+createSamplerYcbcrConversion device createInfo allocator = evalContT $ do+ let vkCreateSamplerYcbcrConversion' = mkVkCreateSamplerYcbcrConversion (pVkCreateSamplerYcbcrConversion (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPYcbcrConversion <- ContT $ bracket (callocBytes @SamplerYcbcrConversion 8) free+ r <- lift $ vkCreateSamplerYcbcrConversion' (deviceHandle (device)) pCreateInfo pAllocator (pPYcbcrConversion)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pYcbcrConversion <- lift $ peek @SamplerYcbcrConversion pPYcbcrConversion+ pure $ (pYcbcrConversion)++-- | A safe wrapper for 'createSamplerYcbcrConversion' and+-- 'destroySamplerYcbcrConversion' using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withSamplerYcbcrConversion :: PokeChain a => Device -> SamplerYcbcrConversionCreateInfo a -> Maybe AllocationCallbacks -> (SamplerYcbcrConversion -> IO r) -> IO r+withSamplerYcbcrConversion device samplerYcbcrConversionCreateInfo allocationCallbacks =+ bracket+ (createSamplerYcbcrConversion device samplerYcbcrConversionCreateInfo allocationCallbacks)+ (\o -> destroySamplerYcbcrConversion device o allocationCallbacks)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDestroySamplerYcbcrConversion+ :: FunPtr (Ptr Device_T -> SamplerYcbcrConversion -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> SamplerYcbcrConversion -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroySamplerYcbcrConversion - Destroy a created Y′CBCR conversion+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the Y′CBCR conversion.+--+-- - @ycbcrConversion@ is the conversion to destroy.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - If @ycbcrConversion@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @ycbcrConversion@+-- /must/ be a valid+-- 'Graphics.Vulkan.Core11.Handles.SamplerYcbcrConversion' handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - If @ycbcrConversion@ is a valid handle, it /must/ have been created,+-- allocated, or retrieved from 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to @ycbcrConversion@ /must/ be externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core11.Handles.SamplerYcbcrConversion'+destroySamplerYcbcrConversion :: Device -> SamplerYcbcrConversion -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroySamplerYcbcrConversion device ycbcrConversion allocator = evalContT $ do+ let vkDestroySamplerYcbcrConversion' = mkVkDestroySamplerYcbcrConversion (pVkDestroySamplerYcbcrConversion (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroySamplerYcbcrConversion' (deviceHandle (device)) (ycbcrConversion) pAllocator+ pure $ ()+++-- | VkSamplerYcbcrConversionInfo - Structure specifying Y′CBCR conversion to+-- a sampler or image view+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core11.Handles.SamplerYcbcrConversion',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data SamplerYcbcrConversionInfo = SamplerYcbcrConversionInfo+ { -- | @conversion@ /must/ be a valid+ -- 'Graphics.Vulkan.Core11.Handles.SamplerYcbcrConversion' handle+ conversion :: SamplerYcbcrConversion }+ deriving (Typeable)+deriving instance Show SamplerYcbcrConversionInfo++instance ToCStruct SamplerYcbcrConversionInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SamplerYcbcrConversionInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr SamplerYcbcrConversion)) (conversion)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr SamplerYcbcrConversion)) (zero)+ f++instance FromCStruct SamplerYcbcrConversionInfo where+ peekCStruct p = do+ conversion <- peek @SamplerYcbcrConversion ((p `plusPtr` 16 :: Ptr SamplerYcbcrConversion))+ pure $ SamplerYcbcrConversionInfo+ conversion++instance Storable SamplerYcbcrConversionInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SamplerYcbcrConversionInfo where+ zero = SamplerYcbcrConversionInfo+ zero+++-- | VkSamplerYcbcrConversionCreateInfo - Structure specifying the parameters+-- of the newly created conversion+--+-- = Description+--+-- Note+--+-- Setting @forceExplicitReconstruction@ to+-- 'Graphics.Vulkan.Core10.BaseType.TRUE' /may/ have a performance penalty+-- on implementations where explicit reconstruction is not the default mode+-- of operation.+--+-- If 'Graphics.Vulkan.Core10.Enums.Format.Format' supports+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT'+-- the @forceExplicitReconstruction@ value behaves as if it was set to+-- 'Graphics.Vulkan.Core10.BaseType.TRUE'.+--+-- If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'+-- structure with non-zero @externalFormat@ member, the sampler Y′CBCR+-- conversion object represents an /external format conversion/, and+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'. Such conversions+-- /must/ only be used to sample image views with a matching+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external format>.+-- When creating an external format conversion, the value of @components@+-- is ignored.+--+-- == Valid Usage+--+-- - If an external format conversion is being created,+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', otherwise it+-- /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'.+--+-- - 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ support+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT'+--+-- - If the format does not support+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT',+-- @xChromaOffset@ and @yChromaOffset@ /must/ not be+-- 'Graphics.Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_COSITED_EVEN'+--+-- - If the format does not support+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT',+-- @xChromaOffset@ and @yChromaOffset@ /must/ not be+-- 'Graphics.Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_MIDPOINT'+--+-- - 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ represent+-- unsigned normalized values (i.e. the format must be a @UNORM@+-- format)+--+-- - If the format has a @_422@ or @_420@ suffix, then @components.g@+-- /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_IDENTITY'+--+-- - If the format has a @_422@ or @_420@ suffix, then @components.a@+-- /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_IDENTITY',+-- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ONE',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ZERO'+--+-- - If the format has a @_422@ or @_420@ suffix, then @components.r@+-- /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_IDENTITY'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_B'+--+-- - If the format has a @_422@ or @_420@ suffix, then @components.b@+-- /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_IDENTITY'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_R'+--+-- - If the format has a @_422@ or @_420@ suffix, and if either+-- @components.r@ or @components.b@ is+-- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_IDENTITY',+-- both values /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_IDENTITY'+--+-- - If @ycbcrModel@ is not+-- 'Graphics.Vulkan.Core11.Enums.SamplerYcbcrModelConversion.SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY',+-- then @components.r@, @components.g@, and @components.b@ /must/+-- correspond to channels of the+-- 'Graphics.Vulkan.Core10.Enums.Format.Format'; that is,+-- @components.r@, @components.g@, and @components.b@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ZERO'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ONE',+-- and /must/ not correspond to a channel which contains zero or one as+-- a consequence of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgba conversion to RGBA>+--+-- - If @ycbcrRange@ is+-- 'Graphics.Vulkan.Core11.Enums.SamplerYcbcrRange.SAMPLER_YCBCR_RANGE_ITU_NARROW'+-- then the R, G and B channels obtained by applying the @component@+-- swizzle to 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ each+-- have a bit-depth greater than or equal to 8.+--+-- - If the format does not support+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT'+-- @forceExplicitReconstruction@ /must/ be+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'+--+-- - If the format does not support+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT',+-- @chromaFilter@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.ExternalFormatANDROID'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' value+--+-- - @ycbcrModel@ /must/ be a valid+-- 'Graphics.Vulkan.Core11.Enums.SamplerYcbcrModelConversion.SamplerYcbcrModelConversion'+-- value+--+-- - @ycbcrRange@ /must/ be a valid+-- 'Graphics.Vulkan.Core11.Enums.SamplerYcbcrRange.SamplerYcbcrRange'+-- value+--+-- - @components@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.ImageView.ComponentMapping' structure+--+-- - @xChromaOffset@ /must/ be a valid+-- 'Graphics.Vulkan.Core11.Enums.ChromaLocation.ChromaLocation' value+--+-- - @yChromaOffset@ /must/ be a valid+-- 'Graphics.Vulkan.Core11.Enums.ChromaLocation.ChromaLocation' value+--+-- - @chromaFilter@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.Filter.Filter' value+--+-- If @chromaFilter@ is+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_NEAREST', chroma samples are+-- reconstructed to luma channel resolution using nearest-neighbour+-- sampling. Otherwise, chroma samples are reconstructed using+-- interpolation. More details can be found in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion the description of sampler Y′CBCR conversion>+-- in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures Image Operations>+-- chapter.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core11.Enums.ChromaLocation.ChromaLocation',+-- 'Graphics.Vulkan.Core10.ImageView.ComponentMapping',+-- 'Graphics.Vulkan.Core10.Enums.Filter.Filter',+-- 'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'Graphics.Vulkan.Core11.Enums.SamplerYcbcrModelConversion.SamplerYcbcrModelConversion',+-- 'Graphics.Vulkan.Core11.Enums.SamplerYcbcrRange.SamplerYcbcrRange',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createSamplerYcbcrConversion',+-- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.createSamplerYcbcrConversionKHR'+data SamplerYcbcrConversionCreateInfo (es :: [Type]) = SamplerYcbcrConversionCreateInfo+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.Enums.Format.Format' is the format of the image+ -- from which color information will be retrieved.+ format :: Format+ , -- | @ycbcrModel@ describes the color matrix for conversion between color+ -- models.+ ycbcrModel :: SamplerYcbcrModelConversion+ , -- | @ycbcrRange@ describes whether the encoded values have headroom and foot+ -- room, or whether the encoding uses the full numerical range.+ ycbcrRange :: SamplerYcbcrRange+ , -- | @components@ applies a /swizzle/ based on+ -- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.ComponentSwizzle' enums+ -- prior to range expansion and color model conversion.+ components :: ComponentMapping+ , -- | @xChromaOffset@ describes the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstruction sample location>+ -- associated with downsampled chroma channels in the x dimension.+ -- @xChromaOffset@ has no effect for formats in which chroma channels are+ -- the same resolution as the luma channel.+ xChromaOffset :: ChromaLocation+ , -- | @yChromaOffset@ describes the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstruction sample location>+ -- associated with downsampled chroma channels in the y dimension.+ -- @yChromaOffset@ has no effect for formats in which the chroma channels+ -- are not downsampled vertically.+ yChromaOffset :: ChromaLocation+ , -- | @chromaFilter@ is the filter for chroma reconstruction.+ chromaFilter :: Filter+ , -- | @forceExplicitReconstruction@ /can/ be used to ensure that+ -- reconstruction is done explicitly, if supported.+ forceExplicitReconstruction :: Bool+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (SamplerYcbcrConversionCreateInfo es)++instance Extensible SamplerYcbcrConversionCreateInfo where+ extensibleType = STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO+ setNext x next = x{next = next}+ getNext SamplerYcbcrConversionCreateInfo{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends SamplerYcbcrConversionCreateInfo e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @ExternalFormatANDROID = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (SamplerYcbcrConversionCreateInfo es) where+ withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SamplerYcbcrConversionCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (format)+ lift $ poke ((p `plusPtr` 20 :: Ptr SamplerYcbcrModelConversion)) (ycbcrModel)+ lift $ poke ((p `plusPtr` 24 :: Ptr SamplerYcbcrRange)) (ycbcrRange)+ ContT $ pokeCStruct ((p `plusPtr` 28 :: Ptr ComponentMapping)) (components) . ($ ())+ lift $ poke ((p `plusPtr` 44 :: Ptr ChromaLocation)) (xChromaOffset)+ lift $ poke ((p `plusPtr` 48 :: Ptr ChromaLocation)) (yChromaOffset)+ lift $ poke ((p `plusPtr` 52 :: Ptr Filter)) (chromaFilter)+ lift $ poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (forceExplicitReconstruction))+ lift $ f+ cStructSize = 64+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (zero)+ lift $ poke ((p `plusPtr` 20 :: Ptr SamplerYcbcrModelConversion)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr SamplerYcbcrRange)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 28 :: Ptr ComponentMapping)) (zero) . ($ ())+ lift $ poke ((p `plusPtr` 44 :: Ptr ChromaLocation)) (zero)+ lift $ poke ((p `plusPtr` 48 :: Ptr ChromaLocation)) (zero)+ lift $ poke ((p `plusPtr` 52 :: Ptr Filter)) (zero)+ lift $ poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ f++instance PeekChain es => FromCStruct (SamplerYcbcrConversionCreateInfo es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ format <- peek @Format ((p `plusPtr` 16 :: Ptr Format))+ ycbcrModel <- peek @SamplerYcbcrModelConversion ((p `plusPtr` 20 :: Ptr SamplerYcbcrModelConversion))+ ycbcrRange <- peek @SamplerYcbcrRange ((p `plusPtr` 24 :: Ptr SamplerYcbcrRange))+ components <- peekCStruct @ComponentMapping ((p `plusPtr` 28 :: Ptr ComponentMapping))+ xChromaOffset <- peek @ChromaLocation ((p `plusPtr` 44 :: Ptr ChromaLocation))+ yChromaOffset <- peek @ChromaLocation ((p `plusPtr` 48 :: Ptr ChromaLocation))+ chromaFilter <- peek @Filter ((p `plusPtr` 52 :: Ptr Filter))+ forceExplicitReconstruction <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))+ pure $ SamplerYcbcrConversionCreateInfo+ next format ycbcrModel ycbcrRange components xChromaOffset yChromaOffset chromaFilter (bool32ToBool forceExplicitReconstruction)++instance es ~ '[] => Zero (SamplerYcbcrConversionCreateInfo es) where+ zero = SamplerYcbcrConversionCreateInfo+ ()+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkBindImagePlaneMemoryInfo - Structure specifying how to bind an image+-- plane to memory+--+-- == Valid Usage+--+-- - If the image’s tiling is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' or+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL',+-- then @planeAspect@ /must/ be a single valid /format plane/ for the+-- image. (That is, @planeAspect@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- for “@_2PLANE@” formats and @planeAspect@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'+-- for “@_3PLANE@” formats.)+--+-- - If the image’s tiling is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',+-- then @planeAspect@ /must/ be a single valid /memory plane/ for the+-- image. (That is, @aspectMask@ /must/ specify a plane index that is+-- less than the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkDrmFormatModifierPropertiesEXT drmFormatModifierPlaneCount>+-- associated with the image’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageCreateInfo >+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageDrmFormatModifierPropertiesEXT drmFormatModifier>.)+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO'+--+-- - @planeAspect@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits'+-- value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data BindImagePlaneMemoryInfo = BindImagePlaneMemoryInfo+ { -- | @planeAspect@ is the aspect of the disjoint image plane to bind.+ planeAspect :: ImageAspectFlagBits }+ deriving (Typeable)+deriving instance Show BindImagePlaneMemoryInfo++instance ToCStruct BindImagePlaneMemoryInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p BindImagePlaneMemoryInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ImageAspectFlagBits)) (planeAspect)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ImageAspectFlagBits)) (zero)+ f++instance FromCStruct BindImagePlaneMemoryInfo where+ peekCStruct p = do+ planeAspect <- peek @ImageAspectFlagBits ((p `plusPtr` 16 :: Ptr ImageAspectFlagBits))+ pure $ BindImagePlaneMemoryInfo+ planeAspect++instance Storable BindImagePlaneMemoryInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero BindImagePlaneMemoryInfo where+ zero = BindImagePlaneMemoryInfo+ zero+++-- | VkImagePlaneMemoryRequirementsInfo - Structure specifying image plane+-- for memory requirements+--+-- == Valid Usage+--+-- - If the image’s tiling is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' or+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL',+-- then @planeAspect@ /must/ be a single valid /format plane/ for the+-- image. (That is, for a two-plane image @planeAspect@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',+-- and for a three-plane image @planeAspect@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT').+--+-- - If the image’s tiling is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',+-- then @planeAspect@ /must/ be a single valid /memory plane/ for the+-- image. (That is, @aspectMask@ /must/ specify a plane index that is+-- less than the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkDrmFormatModifierPropertiesEXT drmFormatModifierPlaneCount>+-- associated with the image’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageCreateInfo >+-- and+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkImageDrmFormatModifierPropertiesEXT drmFormatModifier>.)+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO'+--+-- - @planeAspect@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits'+-- value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ImagePlaneMemoryRequirementsInfo = ImagePlaneMemoryRequirementsInfo+ { -- | @planeAspect@ is the aspect corresponding to the image plane to query.+ planeAspect :: ImageAspectFlagBits }+ deriving (Typeable)+deriving instance Show ImagePlaneMemoryRequirementsInfo++instance ToCStruct ImagePlaneMemoryRequirementsInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImagePlaneMemoryRequirementsInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ImageAspectFlagBits)) (planeAspect)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ImageAspectFlagBits)) (zero)+ f++instance FromCStruct ImagePlaneMemoryRequirementsInfo where+ peekCStruct p = do+ planeAspect <- peek @ImageAspectFlagBits ((p `plusPtr` 16 :: Ptr ImageAspectFlagBits))+ pure $ ImagePlaneMemoryRequirementsInfo+ planeAspect++instance Storable ImagePlaneMemoryRequirementsInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImagePlaneMemoryRequirementsInfo where+ zero = ImagePlaneMemoryRequirementsInfo+ zero+++-- | VkPhysicalDeviceSamplerYcbcrConversionFeatures - Structure describing+-- Y’CbCr conversion features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceSamplerYcbcrConversionFeatures'+-- structure describe the following feature:+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceSamplerYcbcrConversionFeatures = PhysicalDeviceSamplerYcbcrConversionFeatures+ { -- | 'Graphics.Vulkan.Core11.Handles.SamplerYcbcrConversion' specifies+ -- whether the implementation supports+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>.+ -- If 'Graphics.Vulkan.Core11.Handles.SamplerYcbcrConversion' is+ -- 'Graphics.Vulkan.Core10.BaseType.FALSE', sampler Y′CBCR conversion is+ -- not supported, and samplers using sampler Y′CBCR conversion /must/ not+ -- be used.+ samplerYcbcrConversion :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceSamplerYcbcrConversionFeatures++instance ToCStruct PhysicalDeviceSamplerYcbcrConversionFeatures where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceSamplerYcbcrConversionFeatures{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (samplerYcbcrConversion))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceSamplerYcbcrConversionFeatures where+ peekCStruct p = do+ samplerYcbcrConversion <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceSamplerYcbcrConversionFeatures+ (bool32ToBool samplerYcbcrConversion)++instance Storable PhysicalDeviceSamplerYcbcrConversionFeatures where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceSamplerYcbcrConversionFeatures where+ zero = PhysicalDeviceSamplerYcbcrConversionFeatures+ zero+++-- | VkSamplerYcbcrConversionImageFormatProperties - Structure specifying+-- combined image sampler descriptor count for multi-planar images+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data SamplerYcbcrConversionImageFormatProperties = SamplerYcbcrConversionImageFormatProperties+ { -- | @combinedImageSamplerDescriptorCount@ is the number of combined image+ -- sampler descriptors that the implementation uses to access the format.+ combinedImageSamplerDescriptorCount :: Word32 }+ deriving (Typeable)+deriving instance Show SamplerYcbcrConversionImageFormatProperties++instance ToCStruct SamplerYcbcrConversionImageFormatProperties where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SamplerYcbcrConversionImageFormatProperties{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (combinedImageSamplerDescriptorCount)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ f++instance FromCStruct SamplerYcbcrConversionImageFormatProperties where+ peekCStruct p = do+ combinedImageSamplerDescriptorCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pure $ SamplerYcbcrConversionImageFormatProperties+ combinedImageSamplerDescriptorCount++instance Storable SamplerYcbcrConversionImageFormatProperties where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SamplerYcbcrConversionImageFormatProperties where+ zero = SamplerYcbcrConversionImageFormatProperties+ zero+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_sampler_ycbcr_conversion.hs-boot view
@@ -0,0 +1,63 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion ( BindImagePlaneMemoryInfo+ , ImagePlaneMemoryRequirementsInfo+ , PhysicalDeviceSamplerYcbcrConversionFeatures+ , SamplerYcbcrConversionCreateInfo+ , SamplerYcbcrConversionImageFormatProperties+ , SamplerYcbcrConversionInfo+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+data BindImagePlaneMemoryInfo++instance ToCStruct BindImagePlaneMemoryInfo+instance Show BindImagePlaneMemoryInfo++instance FromCStruct BindImagePlaneMemoryInfo+++data ImagePlaneMemoryRequirementsInfo++instance ToCStruct ImagePlaneMemoryRequirementsInfo+instance Show ImagePlaneMemoryRequirementsInfo++instance FromCStruct ImagePlaneMemoryRequirementsInfo+++data PhysicalDeviceSamplerYcbcrConversionFeatures++instance ToCStruct PhysicalDeviceSamplerYcbcrConversionFeatures+instance Show PhysicalDeviceSamplerYcbcrConversionFeatures++instance FromCStruct PhysicalDeviceSamplerYcbcrConversionFeatures+++type role SamplerYcbcrConversionCreateInfo nominal+data SamplerYcbcrConversionCreateInfo (es :: [Type])++instance PokeChain es => ToCStruct (SamplerYcbcrConversionCreateInfo es)+instance Show (Chain es) => Show (SamplerYcbcrConversionCreateInfo es)++instance PeekChain es => FromCStruct (SamplerYcbcrConversionCreateInfo es)+++data SamplerYcbcrConversionImageFormatProperties++instance ToCStruct SamplerYcbcrConversionImageFormatProperties+instance Show SamplerYcbcrConversionImageFormatProperties++instance FromCStruct SamplerYcbcrConversionImageFormatProperties+++data SamplerYcbcrConversionInfo++instance ToCStruct SamplerYcbcrConversionInfo+instance Show SamplerYcbcrConversionInfo++instance FromCStruct SamplerYcbcrConversionInfo+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_shader_draw_parameters.hs view
@@ -0,0 +1,91 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES+ , PhysicalDeviceShaderDrawParametersFeatures(..)+ , PhysicalDeviceShaderDrawParameterFeatures+ , StructureType(..)+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES+++-- | VkPhysicalDeviceShaderDrawParametersFeatures - Structure describing+-- shader draw parameter features that can be supported by an+-- implementation+--+-- = Description+--+-- If the 'PhysicalDeviceShaderDrawParametersFeatures' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with a value indicating whether the feature is supported.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceShaderDrawParametersFeatures = PhysicalDeviceShaderDrawParametersFeatures+ { -- | @shaderDrawParameters@ specifies whether shader draw parameters are+ -- supported.+ shaderDrawParameters :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceShaderDrawParametersFeatures++instance ToCStruct PhysicalDeviceShaderDrawParametersFeatures where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceShaderDrawParametersFeatures{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderDrawParameters))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceShaderDrawParametersFeatures where+ peekCStruct p = do+ shaderDrawParameters <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceShaderDrawParametersFeatures+ (bool32ToBool shaderDrawParameters)++instance Storable PhysicalDeviceShaderDrawParametersFeatures where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceShaderDrawParametersFeatures where+ zero = PhysicalDeviceShaderDrawParametersFeatures+ zero+++-- No documentation found for TopLevel "VkPhysicalDeviceShaderDrawParameterFeatures"+type PhysicalDeviceShaderDrawParameterFeatures = PhysicalDeviceShaderDrawParametersFeatures+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_shader_draw_parameters.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters (PhysicalDeviceShaderDrawParametersFeatures) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceShaderDrawParametersFeatures++instance ToCStruct PhysicalDeviceShaderDrawParametersFeatures+instance Show PhysicalDeviceShaderDrawParametersFeatures++instance FromCStruct PhysicalDeviceShaderDrawParametersFeatures+
− src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_subgroup.hs
@@ -1,249 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_subgroup- ( VkSubgroupFeatureFlagBits(..)- , pattern VK_SUBGROUP_FEATURE_BASIC_BIT- , pattern VK_SUBGROUP_FEATURE_VOTE_BIT- , pattern VK_SUBGROUP_FEATURE_ARITHMETIC_BIT- , pattern VK_SUBGROUP_FEATURE_BALLOT_BIT- , pattern VK_SUBGROUP_FEATURE_SHUFFLE_BIT- , pattern VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT- , pattern VK_SUBGROUP_FEATURE_CLUSTERED_BIT- , pattern VK_SUBGROUP_FEATURE_QUAD_BIT- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES- , VkPhysicalDeviceSubgroupProperties(..)- , VkSubgroupFeatureFlags- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.PipelineLayout- ( VkShaderStageFlags- )----- ** VkSubgroupFeatureFlagBits---- | VkSubgroupFeatureFlagBits - Enum describing what subgroup operations are--- supported------ = See Also------ 'VkSubgroupFeatureFlags'-newtype VkSubgroupFeatureFlagBits = VkSubgroupFeatureFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkSubgroupFeatureFlagBits where- showsPrec _ VK_SUBGROUP_FEATURE_BASIC_BIT = showString "VK_SUBGROUP_FEATURE_BASIC_BIT"- showsPrec _ VK_SUBGROUP_FEATURE_VOTE_BIT = showString "VK_SUBGROUP_FEATURE_VOTE_BIT"- showsPrec _ VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = showString "VK_SUBGROUP_FEATURE_ARITHMETIC_BIT"- showsPrec _ VK_SUBGROUP_FEATURE_BALLOT_BIT = showString "VK_SUBGROUP_FEATURE_BALLOT_BIT"- showsPrec _ VK_SUBGROUP_FEATURE_SHUFFLE_BIT = showString "VK_SUBGROUP_FEATURE_SHUFFLE_BIT"- showsPrec _ VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = showString "VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"- showsPrec _ VK_SUBGROUP_FEATURE_CLUSTERED_BIT = showString "VK_SUBGROUP_FEATURE_CLUSTERED_BIT"- showsPrec _ VK_SUBGROUP_FEATURE_QUAD_BIT = showString "VK_SUBGROUP_FEATURE_QUAD_BIT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkSubgroupFeatureFlagBits 0x00000100) = showString "VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV"- showsPrec p (VkSubgroupFeatureFlagBits x) = showParen (p >= 11) (showString "VkSubgroupFeatureFlagBits " . showsPrec 11 x)--instance Read VkSubgroupFeatureFlagBits where- readPrec = parens ( choose [ ("VK_SUBGROUP_FEATURE_BASIC_BIT", pure VK_SUBGROUP_FEATURE_BASIC_BIT)- , ("VK_SUBGROUP_FEATURE_VOTE_BIT", pure VK_SUBGROUP_FEATURE_VOTE_BIT)- , ("VK_SUBGROUP_FEATURE_ARITHMETIC_BIT", pure VK_SUBGROUP_FEATURE_ARITHMETIC_BIT)- , ("VK_SUBGROUP_FEATURE_BALLOT_BIT", pure VK_SUBGROUP_FEATURE_BALLOT_BIT)- , ("VK_SUBGROUP_FEATURE_SHUFFLE_BIT", pure VK_SUBGROUP_FEATURE_SHUFFLE_BIT)- , ("VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT", pure VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT)- , ("VK_SUBGROUP_FEATURE_CLUSTERED_BIT", pure VK_SUBGROUP_FEATURE_CLUSTERED_BIT)- , ("VK_SUBGROUP_FEATURE_QUAD_BIT", pure VK_SUBGROUP_FEATURE_QUAD_BIT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV", pure (VkSubgroupFeatureFlagBits 0x00000100))- ] +++- prec 10 (do- expectP (Ident "VkSubgroupFeatureFlagBits")- v <- step readPrec- pure (VkSubgroupFeatureFlagBits v)- )- )---- | @VK_SUBGROUP_FEATURE_BASIC_BIT@ specifies the device will accept SPIR-V--- shader modules that contain the @GroupNonUniform@ capability.-pattern VK_SUBGROUP_FEATURE_BASIC_BIT :: VkSubgroupFeatureFlagBits-pattern VK_SUBGROUP_FEATURE_BASIC_BIT = VkSubgroupFeatureFlagBits 0x00000001---- | @VK_SUBGROUP_FEATURE_VOTE_BIT@ specifies the device will accept SPIR-V--- shader modules that contain the @GroupNonUniformVote@ capability.-pattern VK_SUBGROUP_FEATURE_VOTE_BIT :: VkSubgroupFeatureFlagBits-pattern VK_SUBGROUP_FEATURE_VOTE_BIT = VkSubgroupFeatureFlagBits 0x00000002---- | @VK_SUBGROUP_FEATURE_ARITHMETIC_BIT@ specifies the device will accept--- SPIR-V shader modules that contain the @GroupNonUniformArithmetic@--- capability.-pattern VK_SUBGROUP_FEATURE_ARITHMETIC_BIT :: VkSubgroupFeatureFlagBits-pattern VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = VkSubgroupFeatureFlagBits 0x00000004---- | @VK_SUBGROUP_FEATURE_BALLOT_BIT@ specifies the device will accept SPIR-V--- shader modules that contain the @GroupNonUniformBallot@ capability.-pattern VK_SUBGROUP_FEATURE_BALLOT_BIT :: VkSubgroupFeatureFlagBits-pattern VK_SUBGROUP_FEATURE_BALLOT_BIT = VkSubgroupFeatureFlagBits 0x00000008---- | @VK_SUBGROUP_FEATURE_SHUFFLE_BIT@ specifies the device will accept--- SPIR-V shader modules that contain the @GroupNonUniformShuffle@--- capability.-pattern VK_SUBGROUP_FEATURE_SHUFFLE_BIT :: VkSubgroupFeatureFlagBits-pattern VK_SUBGROUP_FEATURE_SHUFFLE_BIT = VkSubgroupFeatureFlagBits 0x00000010---- | @VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT@ specifies the device will--- accept SPIR-V shader modules that contain the--- @GroupNonUniformShuffleRelative@ capability.-pattern VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT :: VkSubgroupFeatureFlagBits-pattern VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = VkSubgroupFeatureFlagBits 0x00000020---- | @VK_SUBGROUP_FEATURE_CLUSTERED_BIT@ specifies the device will accept--- SPIR-V shader modules that contain the @GroupNonUniformClustered@--- capability.-pattern VK_SUBGROUP_FEATURE_CLUSTERED_BIT :: VkSubgroupFeatureFlagBits-pattern VK_SUBGROUP_FEATURE_CLUSTERED_BIT = VkSubgroupFeatureFlagBits 0x00000040---- | @VK_SUBGROUP_FEATURE_QUAD_BIT@ specifies the device will accept SPIR-V--- shader modules that contain the @GroupNonUniformQuad@ capability.-pattern VK_SUBGROUP_FEATURE_QUAD_BIT :: VkSubgroupFeatureFlagBits-pattern VK_SUBGROUP_FEATURE_QUAD_BIT = VkSubgroupFeatureFlagBits 0x00000080--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = VkStructureType 1000094000--- | VkPhysicalDeviceSubgroupProperties - Structure describing subgroup--- support for an implementation------ = Members------ The members of the @VkPhysicalDeviceSubgroupProperties@ structure--- describe the following implementation-dependent limits:------ = Description------ - @sType@ is the type of this structure.------ - @pNext@ is @NULL@ or a pointer to an extension-specific structure.------ - @subgroupSize@ is the number of invocations in each subgroup. This--- will match any--- [@SubgroupSize@](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#interfaces-builtin-variables-sgs)--- decorated variable used in any shader module created on this device.--- @subgroupSize@ is at least 1 if any of the physical device’s queues--- support @VK_QUEUE_GRAPHICS_BIT@ or @VK_QUEUE_COMPUTE_BIT@.------ - @supportedStages@ is a bitfield of--- 'Graphics.Vulkan.Core10.Pipeline.VkShaderStageFlagBits' describing--- the shader stages that subgroup operations are supported in.--- @supportedStages@ will have the @VK_SHADER_STAGE_COMPUTE_BIT@ bit--- set if any of any of the physical device’s queues support--- @VK_QUEUE_COMPUTE_BIT@.------ - @supportedOperations@ is a bitmask of 'VkSubgroupFeatureFlagBits'--- specifying the sets of subgroup operations supported on this device.--- @supportedOperations@ will have the @VK_SUBGROUP_FEATURE_BASIC_BIT@--- bit set if any of the physical device’s queues support--- @VK_QUEUE_GRAPHICS_BIT@ or @VK_QUEUE_COMPUTE_BIT@.------ - @quadOperationsInAllStages@ is a boolean that specifies whether--- [quad subgroup--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-subgroup-quad)--- are available in all stages, or are restricted to fragment and--- compute stages.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES@------ If the @VkPhysicalDeviceSubgroupProperties@ structure is included in the--- @pNext@ chain of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2',--- it is filled with the implementation-dependent limits.------ = See Also------ @VkBool32@, 'Graphics.Vulkan.Core10.PipelineLayout.VkShaderStageFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkSubgroupFeatureFlags'-data VkPhysicalDeviceSubgroupProperties = VkPhysicalDeviceSubgroupProperties- { -- No documentation found for Nested "VkPhysicalDeviceSubgroupProperties" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceSubgroupProperties" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceSubgroupProperties" "subgroupSize"- vkSubgroupSize :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceSubgroupProperties" "supportedStages"- vkSupportedStages :: VkShaderStageFlags- , -- No documentation found for Nested "VkPhysicalDeviceSubgroupProperties" "supportedOperations"- vkSupportedOperations :: VkSubgroupFeatureFlags- , -- No documentation found for Nested "VkPhysicalDeviceSubgroupProperties" "quadOperationsInAllStages"- vkQuadOperationsInAllStages :: VkBool32- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceSubgroupProperties where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkPhysicalDeviceSubgroupProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceSubgroupProperties))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceSubgroupProperties))- *> poke (ptr `plusPtr` 16) (vkSubgroupSize (poked :: VkPhysicalDeviceSubgroupProperties))- *> poke (ptr `plusPtr` 20) (vkSupportedStages (poked :: VkPhysicalDeviceSubgroupProperties))- *> poke (ptr `plusPtr` 24) (vkSupportedOperations (poked :: VkPhysicalDeviceSubgroupProperties))- *> poke (ptr `plusPtr` 28) (vkQuadOperationsInAllStages (poked :: VkPhysicalDeviceSubgroupProperties))--- | VkSubgroupFeatureFlags - Bitmask of VkSubgroupFeatureFlagBits------ = Description------ @VkSubgroupFeatureFlags@ is a bitmask type for setting a mask of zero or--- more 'VkSubgroupFeatureFlagBits'.------ = See Also------ 'VkPhysicalDeviceSubgroupProperties', 'VkSubgroupFeatureFlagBits'-type VkSubgroupFeatureFlags = VkSubgroupFeatureFlagBits
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_variable_pointers.hs view
@@ -0,0 +1,123 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES+ , PhysicalDeviceVariablePointersFeatures(..)+ , PhysicalDeviceVariablePointerFeatures+ , StructureType(..)+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES+++-- | VkPhysicalDeviceVariablePointersFeatures - Structure describing variable+-- pointers features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceVariablePointersFeatures' structure+-- describe the following features:+--+-- = Description+--+-- - @variablePointersStorageBuffer@ specifies whether the implementation+-- supports the SPIR-V @VariablePointersStorageBuffer@ capability. When+-- this feature is not enabled, shader modules /must/ not declare the+-- @SPV_KHR_variable_pointers@ extension or the+-- @VariablePointersStorageBuffer@ capability.+--+-- - @variablePointers@ specifies whether the implementation supports the+-- SPIR-V @VariablePointers@ capability. When this feature is not+-- enabled, shader modules /must/ not declare the @VariablePointers@+-- capability.+--+-- If the 'PhysicalDeviceVariablePointersFeatures' structure is included in+-- the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether each feature is supported.+-- 'PhysicalDeviceVariablePointersFeatures' /can/ also be included in the+-- @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable the features.+--+-- == Valid Usage+--+-- - If @variablePointers@ is enabled then+-- @variablePointersStorageBuffer@ /must/ also be enabled.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceVariablePointersFeatures = PhysicalDeviceVariablePointersFeatures+ { -- No documentation found for Nested "VkPhysicalDeviceVariablePointersFeatures" "variablePointersStorageBuffer"+ variablePointersStorageBuffer :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVariablePointersFeatures" "variablePointers"+ variablePointers :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceVariablePointersFeatures++instance ToCStruct PhysicalDeviceVariablePointersFeatures where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceVariablePointersFeatures{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (variablePointersStorageBuffer))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (variablePointers))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceVariablePointersFeatures where+ peekCStruct p = do+ variablePointersStorageBuffer <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ variablePointers <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ pure $ PhysicalDeviceVariablePointersFeatures+ (bool32ToBool variablePointersStorageBuffer) (bool32ToBool variablePointers)++instance Storable PhysicalDeviceVariablePointersFeatures where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceVariablePointersFeatures where+ zero = PhysicalDeviceVariablePointersFeatures+ zero+ zero+++-- No documentation found for TopLevel "VkPhysicalDeviceVariablePointerFeatures"+type PhysicalDeviceVariablePointerFeatures = PhysicalDeviceVariablePointersFeatures+
+ src/Graphics/Vulkan/Core11/Promoted_From_VK_KHR_variable_pointers.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers (PhysicalDeviceVariablePointersFeatures) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceVariablePointersFeatures++instance ToCStruct PhysicalDeviceVariablePointersFeatures+instance Show PhysicalDeviceVariablePointersFeatures++instance FromCStruct PhysicalDeviceVariablePointersFeatures+
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_16bit_storage.hs
@@ -1,92 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_16bit_storage- ( pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES- , VkPhysicalDevice16BitStorageFeatures(..)- ) where--import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- )----- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = VkStructureType 1000083000--- | VkPhysicalDevice16BitStorageFeatures - Structure describing features--- supported by VK_KHR_16bit_storage------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES@------ = See Also------ @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDevice16BitStorageFeatures = VkPhysicalDevice16BitStorageFeatures- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @storageBuffer16BitAccess@ specifies whether objects in the- -- @StorageBuffer@ storage class with the @Block@ decoration /can/ have- -- 16-bit integer and 16-bit floating-point members. If this feature is not- -- enabled, 16-bit integer or 16-bit floating-point members /must/ not be- -- used in such objects. This also specifies whether shader modules /can/- -- declare the @StorageBuffer16BitAccess@ capability.- vkStorageBuffer16BitAccess :: VkBool32- , -- | @uniformAndStorageBuffer16BitAccess@ specifies whether objects in the- -- @Uniform@ storage class with the @Block@ decoration and in the- -- @StorageBuffer@ storage class with the same decoration /can/ have 16-bit- -- integer and 16-bit floating-point members. If this feature is not- -- enabled, 16-bit integer or 16-bit floating-point members /must/ not be- -- used in such objects. This also specifies whether shader modules /can/- -- declare the @UniformAndStorageBuffer16BitAccess@ capability.- vkUniformAndStorageBuffer16BitAccess :: VkBool32- , -- | @storagePushConstant16@ specifies whether objects in the @PushConstant@- -- storage class /can/ have 16-bit integer and 16-bit floating-point- -- members. If this feature is not enabled, 16-bit integer or- -- floating-point members /must/ not be used in such objects. This also- -- specifies whether shader modules /can/ declare the- -- @StoragePushConstant16@ capability.- vkStoragePushConstant16 :: VkBool32- , -- | @storageInputOutput16@ specifies whether objects in the @Input@ and- -- @Output@ storage classes /can/ have 16-bit integer and 16-bit- -- floating-point members. If this feature is not enabled, 16-bit integer- -- or 16-bit floating-point members /must/ not be used in such objects.- -- This also specifies whether shader modules /can/ declare the- -- @StorageInputOutput16@ capability.- vkStorageInputOutput16 :: VkBool32- }- deriving (Eq, Show)--instance Storable VkPhysicalDevice16BitStorageFeatures where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkPhysicalDevice16BitStorageFeatures <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDevice16BitStorageFeatures))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDevice16BitStorageFeatures))- *> poke (ptr `plusPtr` 16) (vkStorageBuffer16BitAccess (poked :: VkPhysicalDevice16BitStorageFeatures))- *> poke (ptr `plusPtr` 20) (vkUniformAndStorageBuffer16BitAccess (poked :: VkPhysicalDevice16BitStorageFeatures))- *> poke (ptr `plusPtr` 24) (vkStoragePushConstant16 (poked :: VkPhysicalDevice16BitStorageFeatures))- *> poke (ptr `plusPtr` 28) (vkStorageInputOutput16 (poked :: VkPhysicalDevice16BitStorageFeatures))
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_bind_memory2.hs
@@ -1,472 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2- ( pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO- , pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO- , pattern VK_IMAGE_CREATE_ALIAS_BIT- , vkBindBufferMemory2- , vkBindImageMemory2- , VkBindBufferMemoryInfo(..)- , VkBindImageMemoryInfo(..)- ) where--import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkImageCreateFlagBits(..)- , VkDevice- , VkDeviceSize- )-import Graphics.Vulkan.Core10.Memory- ( VkDeviceMemory- )-import Graphics.Vulkan.Core10.MemoryManagement- ( VkBuffer- , VkImage- )----- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO"-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = VkStructureType 1000157000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO"-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = VkStructureType 1000157001--- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_ALIAS_BIT"-pattern VK_IMAGE_CREATE_ALIAS_BIT :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_ALIAS_BIT = VkImageCreateFlagBits 0x00000400--- | vkBindBufferMemory2 - Bind device memory to buffer objects------ = Parameters------ - @device@ is the logical device that owns the buffers and memory.------ - @bindInfoCount@ is the number of elements in @pBindInfos@.------ - @pBindInfos@ is a pointer to an array of structures of type--- 'VkBindBufferMemoryInfo', describing buffers and memory to bind.------ = Description------ On some implementations, it /may/ be more efficient to batch memory--- bindings into a single command.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pBindInfos@ /must/ be a valid pointer to an array of--- @bindInfoCount@ valid @VkBindBufferMemoryInfo@ structures------ - @bindInfoCount@ /must/ be greater than @0@------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'VkBindBufferMemoryInfo',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkBindBufferMemory2" vkBindBufferMemory2 :: ("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindBufferMemoryInfo) -> IO VkResult--- | vkBindImageMemory2 - Bind device memory to image objects------ = Parameters------ - @device@ is the logical device that owns the images and memory.------ - @bindInfoCount@ is the number of elements in @pBindInfos@.------ - @pBindInfos@ is a pointer to an array of structures of type--- 'VkBindImageMemoryInfo', describing images and memory to bind.------ = Description------ On some implementations, it /may/ be more efficient to batch memory--- bindings into a single command.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pBindInfos@ /must/ be a valid pointer to an array of--- @bindInfoCount@ valid @VkBindImageMemoryInfo@ structures------ - @bindInfoCount@ /must/ be greater than @0@------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'VkBindImageMemoryInfo',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkBindImageMemory2" vkBindImageMemory2 :: ("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindImageMemoryInfo) -> IO VkResult--- | VkBindBufferMemoryInfo - Structure specifying how to bind a buffer to--- memory------ == Valid Usage------ - @buffer@ /must/ not already be backed by a memory object------ - @buffer@ /must/ not have been created with any sparse memory binding--- flags------ - @memoryOffset@ /must/ be less than the size of @memory@------ - If @buffer@ was created with the--- @VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT@ or--- @VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT@, @memoryOffset@ /must/ be--- a multiple of--- @VkPhysicalDeviceLimits@::@minTexelBufferOffsetAlignment@------ - If @buffer@ was created with the--- @VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT@, @memoryOffset@ /must/ be a--- multiple of--- @VkPhysicalDeviceLimits@::@minUniformBufferOffsetAlignment@------ - If @buffer@ was created with the--- @VK_BUFFER_USAGE_STORAGE_BUFFER_BIT@, @memoryOffset@ /must/ be a--- multiple of--- @VkPhysicalDeviceLimits@::@minStorageBufferOffsetAlignment@------ - @memory@ /must/ have been allocated using one of the memory types--- allowed in the @memoryTypeBits@ member of the @VkMemoryRequirements@--- structure returned from a call to @vkGetBufferMemoryRequirements@--- with @buffer@------ - @memoryOffset@ /must/ be an integer multiple of the @alignment@--- member of the @VkMemoryRequirements@ structure returned from a call--- to @vkGetBufferMemoryRequirements@ with @buffer@------ - The @size@ member of the @VkMemoryRequirements@ structure returned--- from a call to @vkGetBufferMemoryRequirements@ with @buffer@ /must/--- be less than or equal to the size of @memory@ minus @memoryOffset@------ - If @buffer@ requires a dedicated allocation(as reported by--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetBufferMemoryRequirements2'--- in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedRequirements'::requiresDedicatedAllocation--- for @buffer@), @memory@ /must/ have been created with--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@buffer@--- equal to @buffer@ and @memoryOffset@ /must/ be zero------ - If the @VkMemoryAllocateInfo@ provided when @memory@ was allocated--- included an instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'--- in its @pNext@ chain, and--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@buffer@--- was not @VK_NULL_HANDLE@, then @buffer@ /must/ equal--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@buffer@--- and @memoryOffset@ /must/ be zero.------ - If @buffer@ was created with--- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationBufferCreateInfoNV'::@dedicatedAllocation@--- equal to @VK_TRUE@, @memory@ /must/ have been created with--- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationMemoryAllocateInfoNV'::@buffer@--- equal to @buffer@ and @memoryOffset@ /must/ be zero------ - If the @pNext@ chain includes--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindBufferMemoryDeviceGroupInfo',--- all instances of @memory@ specified by--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindBufferMemoryDeviceGroupInfo'::@pDeviceIndices@--- /must/ have been allocated------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO@------ - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindBufferMemoryDeviceGroupInfo'------ - @buffer@ /must/ be a valid @VkBuffer@ handle------ - @memory@ /must/ be a valid @VkDeviceMemory@ handle------ - Both of @buffer@, and @memory@ /must/ have been created, allocated,--- or retrieved from the same @VkDevice@------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory', @VkDeviceSize@,--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkBindBufferMemory2',--- 'Graphics.Vulkan.Extensions.VK_KHR_bind_memory2.vkBindBufferMemory2KHR'-data VkBindBufferMemoryInfo = VkBindBufferMemoryInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @buffer@ is the buffer to be attached to memory.- vkBuffer :: VkBuffer- , -- | @memory@ is a @VkDeviceMemory@ object describing the device memory to- -- attach.- vkMemory :: VkDeviceMemory- , -- | @memoryOffset@ is the start offset of the region of @memory@ which is to- -- be bound to the buffer. The number of bytes returned in the- -- @VkMemoryRequirements@::@size@ member in @memory@, starting from- -- @memoryOffset@ bytes, will be bound to the specified buffer.- vkMemoryOffset :: VkDeviceSize- }- deriving (Eq, Show)--instance Storable VkBindBufferMemoryInfo where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkBindBufferMemoryInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkBindBufferMemoryInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkBindBufferMemoryInfo))- *> poke (ptr `plusPtr` 16) (vkBuffer (poked :: VkBindBufferMemoryInfo))- *> poke (ptr `plusPtr` 24) (vkMemory (poked :: VkBindBufferMemoryInfo))- *> poke (ptr `plusPtr` 32) (vkMemoryOffset (poked :: VkBindBufferMemoryInfo))--- | VkBindImageMemoryInfo - Structure specifying how to bind an image to--- memory------ == Valid Usage------ - @image@ /must/ not already be backed by a memory object------ - @image@ /must/ not have been created with any sparse memory binding--- flags------ - @memoryOffset@ /must/ be less than the size of @memory@------ - If the @pNext@ chain does not include an instance of the--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkBindImagePlaneMemoryInfo'--- structure, @memory@ /must/ have been allocated using one of the--- memory types allowed in the @memoryTypeBits@ member of the--- 'Graphics.Vulkan.Core10.MemoryManagement.VkMemoryRequirements'--- structure returned from a call to--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2'--- with @image@------ - If the @pNext@ chain does not include an instance of the--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkBindImagePlaneMemoryInfo'--- structure, @memoryOffset@ /must/ be an integer multiple of the--- @alignment@ member of the--- 'Graphics.Vulkan.Core10.MemoryManagement.VkMemoryRequirements'--- structure returned from a call to--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2'--- with @image@------ - If the @pNext@ chain does not include an instance of the--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkBindImagePlaneMemoryInfo'--- structure, the difference of the size of @memory@ and @memoryOffset@--- /must/ be greater than or equal to the @size@ member of the--- 'Graphics.Vulkan.Core10.MemoryManagement.VkMemoryRequirements'--- structure returned from a call to--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2'--- with the same @image@------ - If the @pNext@ chain includes an instance of the--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkBindImagePlaneMemoryInfo'--- structure, @image@ /must/ have been created with the--- @VK_IMAGE_CREATE_DISJOINT_BIT@ bit set.------ - If the @pNext@ chain includes an instance of the--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkBindImagePlaneMemoryInfo'--- structure, @memory@ /must/ have been allocated using one of the--- memory types allowed in the @memoryTypeBits@ member of the--- 'Graphics.Vulkan.Core10.MemoryManagement.VkMemoryRequirements'--- structure returned from a call to--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2'--- with @image@ and the correct @planeAspect@ for this plane in the--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkImagePlaneMemoryRequirementsInfo'--- structure attached to the--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.VkImageMemoryRequirementsInfo2'’s--- @pNext@ chain------ - If the @pNext@ chain includes an instance of the--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkBindImagePlaneMemoryInfo'--- structure, @memoryOffset@ /must/ be an integer multiple of the--- @alignment@ member of the--- 'Graphics.Vulkan.Core10.MemoryManagement.VkMemoryRequirements'--- structure returned from a call to--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2'--- with @image@ and the correct @planeAspect@ for this plane in the--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkImagePlaneMemoryRequirementsInfo'--- structure attached to the--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.VkImageMemoryRequirementsInfo2'’s--- @pNext@ chain------ - If the @pNext@ chain includes an instance of the--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkBindImagePlaneMemoryInfo'--- structure, the difference of the size of @memory@ and @memoryOffset@--- /must/ be greater than or equal to the @size@ member of the--- 'Graphics.Vulkan.Core10.MemoryManagement.VkMemoryRequirements'--- structure returned from a call to--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2'--- with the same @image@ and the correct @planeAspect@ for this plane--- in the--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkImagePlaneMemoryRequirementsInfo'--- structure attached to the--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.VkImageMemoryRequirementsInfo2'’s--- @pNext@ chain------ - If @image@ requires a dedicated allocation (as reported by--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2'--- in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedRequirements'::requiresDedicatedAllocation--- for @image@), @memory@ /must/ have been created with--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@image@--- equal to @image@ and @memoryOffset@ /must/ be zero------ - If the @VkMemoryAllocateInfo@ provided when @memory@ was allocated--- included an instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'--- in its @pNext@ chain, and--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@image@--- was not @VK_NULL_HANDLE@, then @image@ /must/ equal--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedAllocateInfo'::@image@--- and @memoryOffset@ /must/ be zero.------ - If @image@ was created with--- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationImageCreateInfoNV'::@dedicatedAllocation@--- equal to @VK_TRUE@, @memory@ /must/ have been created with--- 'Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation.VkDedicatedAllocationMemoryAllocateInfoNV'::@image@--- equal to @image@ and @memoryOffset@ /must/ be zero------ - If the @pNext@ chain includes--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo',--- all instances of @memory@ specified by--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo'::@pDeviceIndices@--- /must/ have been allocated------ - If the @pNext@ chain includes--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo',--- and--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo'::@splitInstanceBindRegionCount@--- is not zero, then @image@ /must/ have been created with the--- @VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT@ bit set------ - If the @pNext@ chain includes--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo',--- all elements of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo'::@pSplitInstanceBindRegions@--- /must/ be valid rectangles contained within the dimensions of--- @image@------ - If the @pNext@ chain includes--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo',--- the union of the areas of all elements of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo'::@pSplitInstanceBindRegions@--- that correspond to the same instance of @image@ /must/ cover the--- entire image.------ - If @image@ was created with a valid swapchain handle in--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkImageSwapchainCreateInfoKHR'::@swapchain@,--- then the @pNext@ chain /must/ include a valid instance of--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkBindImageMemorySwapchainInfoKHR'------ - If the @pNext@ chain includes an instance of--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkBindImageMemorySwapchainInfoKHR',--- @memory@ /must/ be 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'------ - If the @pNext@ chain does not include an instance of--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkBindImageMemorySwapchainInfoKHR',--- @memory@ /must/ be a valid @VkDeviceMemory@ handle------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkBindImageMemorySwapchainInfoKHR',--- or--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkBindImagePlaneMemoryInfo'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ - @image@ /must/ be a valid @VkImage@ handle------ - Both of @image@, and @memory@ that are valid handles /must/ have--- been created, allocated, or retrieved from the same @VkDevice@------ = See Also------ 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory', @VkDeviceSize@,--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkBindImageMemory2',--- 'Graphics.Vulkan.Extensions.VK_KHR_bind_memory2.vkBindImageMemory2KHR'-data VkBindImageMemoryInfo = VkBindImageMemoryInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @image@ is the image to be attached to memory.- vkImage :: VkImage- , -- | @memory@ is a @VkDeviceMemory@ object describing the device memory to- -- attach.- vkMemory :: VkDeviceMemory- , -- | @memoryOffset@ is the start offset of the region of @memory@ which is to- -- be bound to the image. The number of bytes returned in the- -- @VkMemoryRequirements@::@size@ member in @memory@, starting from- -- @memoryOffset@ bytes, will be bound to the specified image.- vkMemoryOffset :: VkDeviceSize- }- deriving (Eq, Show)--instance Storable VkBindImageMemoryInfo where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkBindImageMemoryInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkBindImageMemoryInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkBindImageMemoryInfo))- *> poke (ptr `plusPtr` 16) (vkImage (poked :: VkBindImageMemoryInfo))- *> poke (ptr `plusPtr` 24) (vkMemory (poked :: VkBindImageMemoryInfo))- *> poke (ptr `plusPtr` 32) (vkMemoryOffset (poked :: VkBindImageMemoryInfo))
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_dedicated_allocation.hs
@@ -1,255 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation- ( pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS- , pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO- , VkMemoryDedicatedRequirements(..)- , VkMemoryDedicatedAllocateInfo(..)- ) where--import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.MemoryManagement- ( VkBuffer- , VkImage- )----- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS"-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS :: VkStructureType-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = VkStructureType 1000127000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO"-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = VkStructureType 1000127001--- | VkMemoryDedicatedRequirements - Structure describing dedicated--- allocation requirements of buffer and image resources------ = Description------ If the @VkMemoryDedicatedRequirements@ structure is included in the--- @pNext@ chain of the--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2.VkMemoryRequirements2'--- structure passed as the @pMemoryRequirements@ parameter of a--- @vkGetBufferMemoryRequirements2@ call, @requiresDedicatedAllocation@--- /may/ be @VK_TRUE@ under one of the following conditions:------ - The @pNext@ chain of @VkBufferCreateInfo@ for the call to--- @vkCreateBuffer@ used to create the buffer being queried contained--- an instance of @VkExternalMemoryBufferCreateInfo@, and any of the--- handle types specified in--- @VkExternalMemoryBufferCreateInfo@::@handleTypes@ requires dedicated--- allocation, as reported by--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.vkGetPhysicalDeviceExternalBufferProperties'--- in--- @VkExternalBufferProperties@::@externalMemoryProperties@::@externalMemoryFeatures@,--- the @requiresDedicatedAllocation@ field will be set to @VK_TRUE@.------ In all other cases, @requiresDedicatedAllocation@ /must/ be set to--- @VK_FALSE@ by the implementation whenever a--- @VkMemoryDedicatedRequirements@ structure is included in the @pNext@--- chain of the @VkMemoryRequirements2@ structure passed to a call to--- @vkGetBufferMemoryRequirements2@.------ If the @VkMemoryDedicatedRequirements@ structure is included in the--- @pNext@ chain of the @VkMemoryRequirements2@ structure passed as the--- @pMemoryRequirements@ parameter of a @vkGetBufferMemoryRequirements2@--- call and @VK_BUFFER_CREATE_SPARSE_BINDING_BIT@ was set in--- @VkBufferCreateInfo@::@flags@ when @buffer@ was created then the--- implementation /must/ set both @prefersDedicatedAllocation@ and--- @requiresDedicatedAllocation@ to @VK_FALSE@.------ If the @VkMemoryDedicatedRequirements@ structure is included in the--- @pNext@ chain of the @VkMemoryRequirements2@ structure passed as the--- @pMemoryRequirements@ parameter of a @vkGetImageMemoryRequirements2@--- call, @requiresDedicatedAllocation@ /may/ be @VK_TRUE@ under one of the--- following conditions:------ - The @pNext@ chain of @VkImageCreateInfo@ for the call to--- @vkCreateImage@ used to create the image being queried contained an--- instance of @VkExternalMemoryImageCreateInfo@, and any of the handle--- types specified in @VkExternalMemoryImageCreateInfo@::@handleTypes@--- requires dedicated allocation, as reported by--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2'--- in--- @VkExternalImageFormatProperties@::@externalMemoryProperties@::@externalMemoryFeatures@,--- the @requiresDedicatedAllocation@ field will be set to @VK_TRUE@.------ In all other cases, @requiresDedicatedAllocation@ /must/ be set to--- @VK_FALSE@ by the implementation whenever a--- @VkMemoryDedicatedRequirements@ structure is included in the @pNext@--- chain of the @VkMemoryRequirements2@ structure passed to a call to--- @vkGetImageMemoryRequirements2@.------ If the @VkMemoryDedicatedRequirements@ structure is included in the--- @pNext@ chain of the @VkMemoryRequirements2@ structure passed as the--- @pMemoryRequirements@ parameter of a @vkGetImageMemoryRequirements2@--- call and @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@ was set in--- @VkImageCreateInfo@::@flags@ when @image@ was created then the--- implementation /must/ set both @prefersDedicatedAllocation@ and--- @requiresDedicatedAllocation@ to @VK_FALSE@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS@------ = See Also------ @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkMemoryDedicatedRequirements = VkMemoryDedicatedRequirements- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @prefersDedicatedAllocation@ specifies that the implementation would- -- prefer a dedicated allocation for this resource. The application is- -- still free to suballocate the resource but it /may/ get better- -- performance if a dedicated allocation is used.- vkPrefersDedicatedAllocation :: VkBool32- , -- | @requiresDedicatedAllocation@ specifies that a dedicated allocation is- -- required for this resource.- vkRequiresDedicatedAllocation :: VkBool32- }- deriving (Eq, Show)--instance Storable VkMemoryDedicatedRequirements where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkMemoryDedicatedRequirements <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkMemoryDedicatedRequirements))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkMemoryDedicatedRequirements))- *> poke (ptr `plusPtr` 16) (vkPrefersDedicatedAllocation (poked :: VkMemoryDedicatedRequirements))- *> poke (ptr `plusPtr` 20) (vkRequiresDedicatedAllocation (poked :: VkMemoryDedicatedRequirements))--- | VkMemoryDedicatedAllocateInfo - Specify a dedicated memory allocation--- resource------ == Valid Usage------ - At least one of @image@ and @buffer@ /must/ be--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'------ - If @image@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @VkMemoryAllocateInfo@::@allocationSize@ /must/ equal the--- @VkMemoryRequirements@::@size@ of the image------ - If @image@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @image@ /must/ have been created without--- @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@ set in--- @VkImageCreateInfo@::@flags@------ - If @buffer@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @VkMemoryAllocateInfo@::@allocationSize@ /must/ equal the--- @VkMemoryRequirements@::@size@ of the buffer------ - If @buffer@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @buffer@ /must/--- have been created without @VK_BUFFER_CREATE_SPARSE_BINDING_BIT@ set--- in 'Graphics.Vulkan.Core10.Buffer.VkBufferCreateInfo'::@flags@------ - If @image@ is not @VK_NULL_HANDLE@ and--- 'Graphics.Vulkan.Core10.Memory.VkMemoryAllocateInfo' defines a--- memory import operation with handle type--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT@,--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT@,--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT@,--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT@,--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT@, or--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT@, and the--- external handle was created by the Vulkan API, then the memory being--- imported /must/ also be a dedicated image allocation and @image@--- must be identical to the image associated with the imported memory.------ - If @buffer@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'--- and 'Graphics.Vulkan.Core10.Memory.VkMemoryAllocateInfo' defines a--- memory import operation with handle type--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT@,--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT@,--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT@,--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT@,--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT@, or--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT@, and the--- external handle was created by the Vulkan API, then the memory being--- imported /must/ also be a dedicated buffer allocation and @buffer@--- must be identical to the buffer associated with the imported memory.------ - If @image@ is not @VK_NULL_HANDLE@ and--- 'Graphics.Vulkan.Core10.Memory.VkMemoryAllocateInfo' defines a--- memory import operation with handle type--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT@, the memory being--- imported /must/ also be a dedicated image allocation and @image@--- must be identical to the image associated with the imported memory.------ - If @buffer@ is not @VK_NULL_HANDLE@ and--- 'Graphics.Vulkan.Core10.Memory.VkMemoryAllocateInfo' defines a--- memory import operation with handle type--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT@, the memory being--- imported /must/ also be a dedicated buffer allocation and @buffer@--- must be identical to the buffer associated with the imported memory.------ - If @image@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @image@ /must/ not have been created with--- @VK_IMAGE_CREATE_DISJOINT_BIT@ set in--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@flags@------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO@------ - If @image@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @image@ /must/ be a valid @VkImage@ handle------ - If @buffer@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @buffer@ /must/--- be a valid @VkBuffer@ handle------ - Both of @buffer@, and @image@ that are valid handles /must/ have--- been created, allocated, or retrieved from the same @VkDevice@------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkMemoryDedicatedAllocateInfo = VkMemoryDedicatedAllocateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @image@ is 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' or a handle- -- of an image which this memory will be bound to.- vkImage :: VkImage- , -- | @buffer@ is 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' or a- -- handle of a buffer which this memory will be bound to.- vkBuffer :: VkBuffer- }- deriving (Eq, Show)--instance Storable VkMemoryDedicatedAllocateInfo where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkMemoryDedicatedAllocateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkMemoryDedicatedAllocateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkMemoryDedicatedAllocateInfo))- *> poke (ptr `plusPtr` 16) (vkImage (poked :: VkMemoryDedicatedAllocateInfo))- *> poke (ptr `plusPtr` 24) (vkBuffer (poked :: VkMemoryDedicatedAllocateInfo))
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_descriptor_update_template.hs
@@ -1,637 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template- ( VkDescriptorUpdateTemplateType(..)- , pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET- , VkDescriptorUpdateTemplateCreateFlags(..)- , pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO- , pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE- , VkDescriptorUpdateTemplate- , vkCreateDescriptorUpdateTemplate- , vkDestroyDescriptorUpdateTemplate- , vkUpdateDescriptorSetWithTemplate- , VkDescriptorUpdateTemplateEntry(..)- , VkDescriptorUpdateTemplateCreateInfo(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Int- ( Int32- )-import Data.Word- ( Word32- )-import Foreign.C.Types- ( CSize(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkObjectType(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DescriptorSet- ( VkDescriptorType(..)- , VkDescriptorSet- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- )-import Graphics.Vulkan.Core10.Pass- ( VkPipelineBindPoint(..)- )-import Graphics.Vulkan.Core10.Pipeline- ( VkPipelineLayout- )-import Graphics.Vulkan.Core10.PipelineLayout- ( VkDescriptorSetLayout- )----- ** VkDescriptorUpdateTemplateType---- | VkDescriptorUpdateTemplateType - Indicates the valid usage of the--- descriptor update template------ = See Also------ 'VkDescriptorUpdateTemplateCreateInfo'-newtype VkDescriptorUpdateTemplateType = VkDescriptorUpdateTemplateType Int32- deriving (Eq, Ord, Storable)--instance Show VkDescriptorUpdateTemplateType where- showsPrec _ VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = showString "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkDescriptorUpdateTemplateType 1) = showString "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR"- showsPrec p (VkDescriptorUpdateTemplateType x) = showParen (p >= 11) (showString "VkDescriptorUpdateTemplateType " . showsPrec 11 x)--instance Read VkDescriptorUpdateTemplateType where- readPrec = parens ( choose [ ("VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET", pure VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR", pure (VkDescriptorUpdateTemplateType 1))- , ("VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR", pure (VkDescriptorUpdateTemplateType 1))- ] +++- prec 10 (do- expectP (Ident "VkDescriptorUpdateTemplateType")- v <- step readPrec- pure (VkDescriptorUpdateTemplateType v)- )- )---- | @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET@ specifies that the--- descriptor update template will be used for descriptor set updates only.-pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET :: VkDescriptorUpdateTemplateType-pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = VkDescriptorUpdateTemplateType 0--- ** VkDescriptorUpdateTemplateCreateFlags---- | VkDescriptorUpdateTemplateCreateFlags - Reserved for future use------ = Description------ @VkDescriptorUpdateTemplateCreateFlags@ is a bitmask type for setting a--- mask, but is currently reserved for future use.------ = See Also------ 'VkDescriptorUpdateTemplateCreateInfo'-newtype VkDescriptorUpdateTemplateCreateFlags = VkDescriptorUpdateTemplateCreateFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkDescriptorUpdateTemplateCreateFlags where- - showsPrec p (VkDescriptorUpdateTemplateCreateFlags x) = showParen (p >= 11) (showString "VkDescriptorUpdateTemplateCreateFlags " . showsPrec 11 x)--instance Read VkDescriptorUpdateTemplateCreateFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkDescriptorUpdateTemplateCreateFlags")- v <- step readPrec- pure (VkDescriptorUpdateTemplateCreateFlags v)- )- )----- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = VkStructureType 1000085000--- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"-pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE :: VkObjectType-pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = VkObjectType 1000085000--- | Dummy data to tag the 'Ptr' with-data VkDescriptorUpdateTemplate_T--- | VkDescriptorUpdateTemplate - Opaque handle to a descriptor update--- template------ = See Also------ 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.vkCmdPushDescriptorSetWithTemplateKHR',--- 'vkCreateDescriptorUpdateTemplate',--- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkCreateDescriptorUpdateTemplateKHR',--- 'vkDestroyDescriptorUpdateTemplate',--- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkDestroyDescriptorUpdateTemplateKHR',--- 'vkUpdateDescriptorSetWithTemplate',--- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkUpdateDescriptorSetWithTemplateKHR'-type VkDescriptorUpdateTemplate = Ptr VkDescriptorUpdateTemplate_T--- | vkCreateDescriptorUpdateTemplate - Create a new descriptor update--- template------ = Parameters------ - @device@ is the logical device that creates the descriptor update--- template.------ - @pCreateInfo@ is a pointer to an instance of the--- 'VkDescriptorUpdateTemplateCreateInfo' structure specifying the set--- of descriptors to update with a single call to--- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.vkCmdPushDescriptorSetWithTemplateKHR'--- or 'vkUpdateDescriptorSetWithTemplate'.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ - @pDescriptorUpdateTemplate@ points to a @VkDescriptorUpdateTemplate@--- handle in which the resulting descriptor update template object is--- returned.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkDescriptorUpdateTemplateCreateInfo@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pDescriptorUpdateTemplate@ /must/ be a valid pointer to a--- @VkDescriptorUpdateTemplate@ handle------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'VkDescriptorUpdateTemplate', 'VkDescriptorUpdateTemplateCreateInfo',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateDescriptorUpdateTemplate" vkCreateDescriptorUpdateTemplate :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorUpdateTemplateCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorUpdateTemplate" ::: Ptr VkDescriptorUpdateTemplate) -> IO VkResult--- | vkDestroyDescriptorUpdateTemplate - Destroy a descriptor update template--- object------ = Parameters------ - @device@ is the logical device that has been used to create the--- descriptor update template------ - @descriptorUpdateTemplate@ is the descriptor update template to--- destroy.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ == Valid Usage------ - If @VkAllocationCallbacks@ were provided when @descriptorSetLayout@--- was created, a compatible set of callbacks /must/ be provided here------ - If no @VkAllocationCallbacks@ were provided when--- @descriptorSetLayout@ was created, @pAllocator@ /must/ be @NULL@------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - If @descriptorUpdateTemplate@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @descriptorUpdateTemplate@ /must/ be a valid--- @VkDescriptorUpdateTemplate@ handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - If @descriptorUpdateTemplate@ is a valid handle, it /must/ have been--- created, allocated, or retrieved from @device@------ == Host Synchronization------ - Host access to @descriptorUpdateTemplate@ /must/ be externally--- synchronized------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'VkDescriptorUpdateTemplate',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroyDescriptorUpdateTemplate" vkDestroyDescriptorUpdateTemplate :: ("device" ::: VkDevice) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | vkUpdateDescriptorSetWithTemplate - Update the contents of a descriptor--- set object using an update template------ = Parameters------ - @device@ is the logical device that updates the descriptor sets.------ - @descriptorSet@ is the descriptor set to update------ - @descriptorUpdateTemplate@ is the @VkDescriptorUpdateTemplate@ which--- specifies the update mapping between @pData@ and the descriptor set--- to update.------ - @pData@ is a pointer to memory which contains one or more structures--- of 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorImageInfo',--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorBufferInfo', or--- 'Graphics.Vulkan.Core10.BufferView.VkBufferView' used to write the--- descriptors.------ == Valid Usage------ - @pData@ /must/ be a valid pointer to a memory that contains one or--- more valid instances of--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorImageInfo',--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorBufferInfo', or--- 'Graphics.Vulkan.Core10.BufferView.VkBufferView' in a layout defined--- by @descriptorUpdateTemplate@ when it was created with--- 'vkCreateDescriptorUpdateTemplate'------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @descriptorSet@ /must/ be a valid @VkDescriptorSet@ handle------ - @descriptorUpdateTemplate@ /must/ be a valid--- @VkDescriptorUpdateTemplate@ handle------ - @descriptorUpdateTemplate@ /must/ have been created, allocated, or--- retrieved from @device@------ == Host Synchronization------ - Host access to @descriptorSet@ /must/ be externally synchronized------ __API example.__------ > struct AppBufferView {--- > VkBufferView bufferView;--- > uint32_t applicationRelatedInformation;--- > };--- >--- > struct AppDataStructure--- > {--- > VkDescriptorImageInfo imageInfo; // a single image info--- > VkDescriptorBufferInfo bufferInfoArray[3]; // 3 buffer infos in an array--- > AppBufferView bufferView[2]; // An application defined structure containing a bufferView--- > // ... some more application related data--- > };--- >--- > const VkDescriptorUpdateTemplateEntry descriptorUpdateTemplateEntries[] =--- > {--- > // binding to a single image descriptor--- > {--- > 0, // binding--- > 0, // dstArrayElement--- > 1, // descriptorCount--- > VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, // descriptorType--- > offsetof(AppDataStructure, imageInfo), // offset--- > 0 // stride is not required if descriptorCount is 1.--- > },--- >--- > // binding to an array of buffer descriptors--- > {--- > 0, // binding--- > 0, // dstArrayElement--- > 3, // descriptorCount--- > VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, // descriptorType--- > offsetof(AppDataStructure, bufferInfoArray), // offset--- > sizeof(VkDescriptorBufferInfo) // stride, descriptor buffer infos are compact--- > },--- >--- > // binding to an array of buffer views--- > {--- > 0, // binding--- > 3, // dstArrayElement--- > 1, // descriptorCount--- > VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, // descriptorType--- > offsetof(AppDataStructure, bufferView), // offset--- > sizeof(AppBufferView) // stride, bufferViews do not have to be compact--- > },--- > };--- >--- > // create an descriptor update template for descriptor set updates--- > const VkDescriptorUpdateTemplateCreateInfo createInfo =--- > {--- > VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, // sType--- > NULL, // pNext--- > 0, // flags--- > 3, // descriptorUpdateEntryCount--- > descriptorUpdateTemplateEntries, // pDescriptorUpdateEntries--- > VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, // templateType--- > myLayout, // descriptorSetLayout--- > 0, // pipelineBindPoint, ignored by given templateType--- > 0, // pipelineLayout, ignored by given templateType--- > 0, // set, ignored by given templateType--- > };--- >--- > VkDescriptorUpdateTemplate myDescriptorUpdateTemplate;--- > myResult = vkCreateDescriptorUpdateTemplate(--- > myDevice,--- > &createInfo,--- > NULL,--- > &myDescriptorUpdateTemplate);--- > }--- >--- >--- > AppDataStructure appData;--- >--- > // fill appData here or cache it in your engine--- > vkUpdateDescriptorSetWithTemplate(myDevice, myDescriptorSet, myDescriptorUpdateTemplate, &appData);------ = See Also------ 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSet',--- 'VkDescriptorUpdateTemplate',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkUpdateDescriptorSetWithTemplate" vkUpdateDescriptorSetWithTemplate :: ("device" ::: VkDevice) -> ("descriptorSet" ::: VkDescriptorSet) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pData" ::: Ptr ()) -> IO ()--- | VkDescriptorUpdateTemplateEntry - Describes a single descriptor update--- of the descriptor update template------ = Members------ - @dstBinding@ is the descriptor binding to update when using this--- descriptor update template.------ - @dstArrayElement@ is the starting element in the array belonging to--- @dstBinding@.------ - @descriptorCount@ is the number of descriptors to update. If--- @descriptorCount@ is greater than the number of remaining array--- elements in the destination binding, those affect consecutive--- bindings in a manner similar to--- 'Graphics.Vulkan.Core10.DescriptorSet.VkWriteDescriptorSet' above.------ - @descriptorType@ is a--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorType' specifying--- the type of the descriptor.------ - @offset@ is the offset in bytes of the first binding in the raw data--- structure.------ - @stride@ is the stride in bytes between two consecutive array--- elements of the descriptor update informations in the raw data--- structure. The actual pointer ptr for each array element j of update--- entry i is computed using the following formula:------ > const char *ptr = (const char *)pData + pDescriptorUpdateEntries[i].offset + j * pDescriptorUpdateEntries[i].stride------ The stride is useful in case the bindings are stored in structs--- along with other data.------ == Valid Usage------ - @dstBinding@ /must/ be a valid binding in the descriptor set layout--- implicitly specified when using a descriptor update template to--- update descriptors.------ - @dstArrayElement@ and @descriptorCount@ /must/ be less than or equal--- to the number of array elements in the descriptor set binding--- implicitly specified when using a descriptor update template to--- update descriptors, and all applicable consecutive bindings, as--- described by--- [{html_spec_relative}#descriptorsets-updates-consecutive](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-updates-consecutive)------ == Valid Usage (Implicit)------ - @descriptorType@ /must/ be a valid--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorType' value------ = See Also------ 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorType',--- 'VkDescriptorUpdateTemplateCreateInfo'-data VkDescriptorUpdateTemplateEntry = VkDescriptorUpdateTemplateEntry- { -- No documentation found for Nested "VkDescriptorUpdateTemplateEntry" "dstBinding"- vkDstBinding :: Word32- , -- No documentation found for Nested "VkDescriptorUpdateTemplateEntry" "dstArrayElement"- vkDstArrayElement :: Word32- , -- No documentation found for Nested "VkDescriptorUpdateTemplateEntry" "descriptorCount"- vkDescriptorCount :: Word32- , -- No documentation found for Nested "VkDescriptorUpdateTemplateEntry" "descriptorType"- vkDescriptorType :: VkDescriptorType- , -- No documentation found for Nested "VkDescriptorUpdateTemplateEntry" "offset"- vkOffset :: CSize- , -- No documentation found for Nested "VkDescriptorUpdateTemplateEntry" "stride"- vkStride :: CSize- }- deriving (Eq, Show)--instance Storable VkDescriptorUpdateTemplateEntry where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkDescriptorUpdateTemplateEntry <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkDstBinding (poked :: VkDescriptorUpdateTemplateEntry))- *> poke (ptr `plusPtr` 4) (vkDstArrayElement (poked :: VkDescriptorUpdateTemplateEntry))- *> poke (ptr `plusPtr` 8) (vkDescriptorCount (poked :: VkDescriptorUpdateTemplateEntry))- *> poke (ptr `plusPtr` 12) (vkDescriptorType (poked :: VkDescriptorUpdateTemplateEntry))- *> poke (ptr `plusPtr` 16) (vkOffset (poked :: VkDescriptorUpdateTemplateEntry))- *> poke (ptr `plusPtr` 24) (vkStride (poked :: VkDescriptorUpdateTemplateEntry))--- | VkDescriptorUpdateTemplateCreateInfo - Structure specifying parameters--- of a newly created descriptor update template------ == Valid Usage------ - If @templateType@ is--- @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET@,--- @descriptorSetLayout@ /must/ be a valid @VkDescriptorSetLayout@--- handle------ - If @templateType@ is--- @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR@,--- @pipelineBindPoint@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint' value------ - If @templateType@ is--- @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR@,--- @pipelineLayout@ /must/ be a valid @VkPipelineLayout@ handle------ - If @templateType@ is--- @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR@, @set@--- /must/ be the unique set number in the pipeline layout that uses a--- descriptor set layout that was created with--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR@------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@------ - @pDescriptorUpdateEntries@ /must/ be a valid pointer to an array of--- @descriptorUpdateEntryCount@ valid @VkDescriptorUpdateTemplateEntry@--- structures------ - @templateType@ /must/ be a valid 'VkDescriptorUpdateTemplateType'--- value------ - If @descriptorSetLayout@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @descriptorSetLayout@ /must/ be a valid @VkDescriptorSetLayout@--- handle------ - @descriptorUpdateEntryCount@ /must/ be greater than @0@------ - Both of @descriptorSetLayout@, and @pipelineLayout@ that are valid--- handles /must/ have been created, allocated, or retrieved from the--- same @VkDevice@------ = See Also------ 'Graphics.Vulkan.Core10.PipelineLayout.VkDescriptorSetLayout',--- 'VkDescriptorUpdateTemplateCreateFlags',--- 'VkDescriptorUpdateTemplateEntry', 'VkDescriptorUpdateTemplateType',--- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkCreateDescriptorUpdateTemplate',--- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkCreateDescriptorUpdateTemplateKHR'-data VkDescriptorUpdateTemplateCreateInfo = VkDescriptorUpdateTemplateCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkDescriptorUpdateTemplateCreateFlags- , -- | @descriptorUpdateEntryCount@ is the number of elements in the- -- @pDescriptorUpdateEntries@ array.- vkDescriptorUpdateEntryCount :: Word32- , -- | @pDescriptorUpdateEntries@ is a pointer to an array of- -- 'VkDescriptorUpdateTemplateEntry' structures describing the descriptors- -- to be updated by the descriptor update template.- vkPDescriptorUpdateEntries :: Ptr VkDescriptorUpdateTemplateEntry- , -- | @templateType@ Specifies the type of the descriptor update template. If- -- set to @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET@ it /can/ only- -- be used to update descriptor sets with a fixed @descriptorSetLayout@. If- -- set to @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR@ it- -- /can/ only be used to push descriptor sets using the provided- -- @pipelineBindPoint@, @pipelineLayout@, and @set@ number.- vkTemplateType :: VkDescriptorUpdateTemplateType- , -- | @descriptorSetLayout@ is the descriptor set layout the parameter update- -- template will be used with. All descriptor sets which are going to be- -- updated through the newly created descriptor update template /must/ be- -- created with this layout. @descriptorSetLayout@ is the descriptor set- -- layout used to build the descriptor update template. All descriptor sets- -- which are going to be updated through the newly created descriptor- -- update template /must/ be created with a layout that matches (is the- -- same as, or defined identically to) this layout. This parameter is- -- ignored if @templateType@ is not- -- @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET@.- vkDescriptorSetLayout :: VkDescriptorSetLayout- , -- | @pipelineBindPoint@ is a- -- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint' indicating whether the- -- descriptors will be used by graphics pipelines or compute pipelines.- -- This parameter is ignored if @templateType@ is not- -- @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR@- vkPipelineBindPoint :: VkPipelineBindPoint- , -- | @pipelineLayout@ is a @VkPipelineLayout@ object used to program the- -- bindings. This parameter is ignored if @templateType@ is not- -- @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR@- vkPipelineLayout :: VkPipelineLayout- , -- | @set@ is the set number of the descriptor set in the pipeline layout- -- that will be updated. This parameter is ignored if @templateType@ is not- -- @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR@- vkSet :: Word32- }- deriving (Eq, Show)--instance Storable VkDescriptorUpdateTemplateCreateInfo where- sizeOf ~_ = 72- alignment ~_ = 8- peek ptr = VkDescriptorUpdateTemplateCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 64)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDescriptorUpdateTemplateCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDescriptorUpdateTemplateCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkDescriptorUpdateTemplateCreateInfo))- *> poke (ptr `plusPtr` 20) (vkDescriptorUpdateEntryCount (poked :: VkDescriptorUpdateTemplateCreateInfo))- *> poke (ptr `plusPtr` 24) (vkPDescriptorUpdateEntries (poked :: VkDescriptorUpdateTemplateCreateInfo))- *> poke (ptr `plusPtr` 32) (vkTemplateType (poked :: VkDescriptorUpdateTemplateCreateInfo))- *> poke (ptr `plusPtr` 40) (vkDescriptorSetLayout (poked :: VkDescriptorUpdateTemplateCreateInfo))- *> poke (ptr `plusPtr` 48) (vkPipelineBindPoint (poked :: VkDescriptorUpdateTemplateCreateInfo))- *> poke (ptr `plusPtr` 56) (vkPipelineLayout (poked :: VkDescriptorUpdateTemplateCreateInfo))- *> poke (ptr `plusPtr` 64) (vkSet (poked :: VkDescriptorUpdateTemplateCreateInfo))
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group.hs
@@ -1,819 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group- ( VkPeerMemoryFeatureFlagBits(..)- , pattern VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT- , pattern VK_PEER_MEMORY_FEATURE_COPY_DST_BIT- , pattern VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT- , pattern VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT- , VkMemoryAllocateFlagBits(..)- , pattern VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT- , pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO- , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO- , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO- , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO- , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO- , pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT- , pattern VK_PIPELINE_CREATE_DISPATCH_BASE- , pattern VK_DEPENDENCY_DEVICE_GROUP_BIT- , vkGetDeviceGroupPeerMemoryFeatures- , vkCmdSetDeviceMask- , vkCmdDispatchBase- , VkMemoryAllocateFlagsInfo(..)- , VkDeviceGroupRenderPassBeginInfo(..)- , VkDeviceGroupCommandBufferBeginInfo(..)- , VkDeviceGroupSubmitInfo(..)- , VkDeviceGroupBindSparseInfo(..)- , VkPeerMemoryFeatureFlags- , VkMemoryAllocateFlags- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- )-import Graphics.Vulkan.Core10.Pass- ( VkDependencyFlagBits(..)- )-import Graphics.Vulkan.Core10.Pipeline- ( VkPipelineCreateFlagBits(..)- , VkRect2D(..)- )-import Graphics.Vulkan.Core10.Queue- ( VkCommandBuffer- )----- ** VkPeerMemoryFeatureFlagBits---- | VkPeerMemoryFeatureFlagBits - Bitmask specifying supported peer memory--- features------ = Description------ - @VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT@ specifies that the memory--- /can/ be accessed as the source of a @vkCmdCopyBuffer@,--- @vkCmdCopyImage@, @vkCmdCopyBufferToImage@, or--- @vkCmdCopyImageToBuffer@ command.------ - @VK_PEER_MEMORY_FEATURE_COPY_DST_BIT@ specifies that the memory--- /can/ be accessed as the destination of a @vkCmdCopyBuffer@,--- @vkCmdCopyImage@, @vkCmdCopyBufferToImage@, or--- @vkCmdCopyImageToBuffer@ command.------ - @VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT@ specifies that the memory--- /can/ be read as any memory access type.------ - @VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT@ specifies that the memory--- /can/ be written as any memory access type. Shader atomics are--- considered to be writes.------ __Note__------ The peer memory features of a memory heap also apply to any accesses--- that /may/ be performed during [image layout--- transitions](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-image-layout-transitions).------ @VK_PEER_MEMORY_FEATURE_COPY_DST_BIT@ /must/ be supported for all host--- local heaps and for at least one device local heap.------ If a device does not support a peer memory feature, it is still valid to--- use a resource that includes both local and peer memory bindings with--- the corresponding access type as long as only the local bindings are--- actually accessed. For example, an application doing split-frame--- rendering would use framebuffer attachments that include both local and--- peer memory bindings, but would scissor the rendering to only update--- local memory.------ = See Also------ 'VkPeerMemoryFeatureFlags'-newtype VkPeerMemoryFeatureFlagBits = VkPeerMemoryFeatureFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPeerMemoryFeatureFlagBits where- showsPrec _ VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = showString "VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT"- showsPrec _ VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = showString "VK_PEER_MEMORY_FEATURE_COPY_DST_BIT"- showsPrec _ VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = showString "VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT"- showsPrec _ VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = showString "VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT"- showsPrec p (VkPeerMemoryFeatureFlagBits x) = showParen (p >= 11) (showString "VkPeerMemoryFeatureFlagBits " . showsPrec 11 x)--instance Read VkPeerMemoryFeatureFlagBits where- readPrec = parens ( choose [ ("VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT", pure VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT)- , ("VK_PEER_MEMORY_FEATURE_COPY_DST_BIT", pure VK_PEER_MEMORY_FEATURE_COPY_DST_BIT)- , ("VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT", pure VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT)- , ("VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT", pure VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT)- ] +++- prec 10 (do- expectP (Ident "VkPeerMemoryFeatureFlagBits")- v <- step readPrec- pure (VkPeerMemoryFeatureFlagBits v)- )- )---- No documentation found for Nested "VkPeerMemoryFeatureFlagBits" "VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT"-pattern VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT :: VkPeerMemoryFeatureFlagBits-pattern VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = VkPeerMemoryFeatureFlagBits 0x00000001---- No documentation found for Nested "VkPeerMemoryFeatureFlagBits" "VK_PEER_MEMORY_FEATURE_COPY_DST_BIT"-pattern VK_PEER_MEMORY_FEATURE_COPY_DST_BIT :: VkPeerMemoryFeatureFlagBits-pattern VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = VkPeerMemoryFeatureFlagBits 0x00000002---- No documentation found for Nested "VkPeerMemoryFeatureFlagBits" "VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT"-pattern VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT :: VkPeerMemoryFeatureFlagBits-pattern VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = VkPeerMemoryFeatureFlagBits 0x00000004---- No documentation found for Nested "VkPeerMemoryFeatureFlagBits" "VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT"-pattern VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT :: VkPeerMemoryFeatureFlagBits-pattern VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = VkPeerMemoryFeatureFlagBits 0x00000008--- ** VkMemoryAllocateFlagBits---- | VkMemoryAllocateFlagBits - Bitmask specifying flags for a device memory--- allocation------ = See Also------ 'VkMemoryAllocateFlags'-newtype VkMemoryAllocateFlagBits = VkMemoryAllocateFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkMemoryAllocateFlagBits where- showsPrec _ VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = showString "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"- showsPrec p (VkMemoryAllocateFlagBits x) = showParen (p >= 11) (showString "VkMemoryAllocateFlagBits " . showsPrec 11 x)--instance Read VkMemoryAllocateFlagBits where- readPrec = parens ( choose [ ("VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT", pure VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT)- ] +++- prec 10 (do- expectP (Ident "VkMemoryAllocateFlagBits")- v <- step readPrec- pure (VkMemoryAllocateFlagBits v)- )- )---- | @VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT@ specifies that memory will be--- allocated for the devices in 'VkMemoryAllocateFlagsInfo'::@deviceMask@.-pattern VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT :: VkMemoryAllocateFlagBits-pattern VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = VkMemoryAllocateFlagBits 0x00000001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"-pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = VkStructureType 1000060000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = VkStructureType 1000060003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = VkStructureType 1000060004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = VkStructureType 1000060005--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = VkStructureType 1000060006--- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"-pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT :: VkPipelineCreateFlagBits-pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = VkPipelineCreateFlagBits 0x00000008--- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DISPATCH_BASE"-pattern VK_PIPELINE_CREATE_DISPATCH_BASE :: VkPipelineCreateFlagBits-pattern VK_PIPELINE_CREATE_DISPATCH_BASE = VkPipelineCreateFlagBits 0x00000010--- | @VK_DEPENDENCY_DEVICE_GROUP_BIT@ specifies that dependencies are--- [non-device-local--- dependency](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-device-local-dependencies).-pattern VK_DEPENDENCY_DEVICE_GROUP_BIT :: VkDependencyFlagBits-pattern VK_DEPENDENCY_DEVICE_GROUP_BIT = VkDependencyFlagBits 0x00000004--- | vkGetDeviceGroupPeerMemoryFeatures - Query supported peer memory--- features of a device------ = Parameters------ - @device@ is the logical device that owns the memory.------ - @heapIndex@ is the index of the memory heap from which the memory is--- allocated.------ - @localDeviceIndex@ is the device index of the physical device that--- performs the memory access.------ - @remoteDeviceIndex@ is the device index of the physical device that--- the memory is allocated for.------ - @pPeerMemoryFeatures@ is a pointer to a bitmask of--- 'VkPeerMemoryFeatureFlagBits' indicating which types of memory--- accesses are supported for the combination of heap, local, and--- remote devices.------ == Valid Usage------ - @heapIndex@ /must/ be less than @memoryHeapCount@------ - @localDeviceIndex@ /must/ be a valid device index------ - @remoteDeviceIndex@ /must/ be a valid device index------ - @localDeviceIndex@ /must/ not equal remoteDeviceIndex------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pPeerMemoryFeatures@ /must/ be a valid pointer to a--- 'VkPeerMemoryFeatureFlags' value------ - @pPeerMemoryFeatures@ /must/ not be @0@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkPeerMemoryFeatureFlags'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetDeviceGroupPeerMemoryFeatures" vkGetDeviceGroupPeerMemoryFeatures :: ("device" ::: VkDevice) -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> ("pPeerMemoryFeatures" ::: Ptr VkPeerMemoryFeatureFlags) -> IO ()--- | vkCmdSetDeviceMask - Modify device mask of a command buffer------ = Parameters------ - @commandBuffer@ is command buffer whose current device mask is--- modified.------ - @deviceMask@ is the new value of the current device mask.------ = Description------ @deviceMask@ is used to filter out subsequent commands from executing on--- all physical devices whose bit indices are not set in the mask.------ == Valid Usage------ - @deviceMask@ /must/ be a valid device mask value------ - @deviceMask@ /must/ not be zero------ - @deviceMask@ /must/ not include any set bits that were not in the--- 'VkDeviceGroupCommandBufferBeginInfo'::@deviceMask@ value when the--- command buffer began recording.------ - If @vkCmdSetDeviceMask@ is called inside a render pass instance,--- @deviceMask@ /must/ not include any set bits that were not in the--- 'VkDeviceGroupRenderPassBeginInfo'::@deviceMask@ value when the--- render pass instance began recording.------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, compute, or transfer operations------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | Compute | |--- | | | Transfer | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdSetDeviceMask" vkCmdSetDeviceMask :: ("commandBuffer" ::: VkCommandBuffer) -> ("deviceMask" ::: Word32) -> IO ()--- | vkCmdDispatchBase - Dispatch compute work items------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @baseGroupX@ is the start value for the X component of--- @WorkgroupId@.------ - @baseGroupY@ is the start value for the Y component of--- @WorkgroupId@.------ - @baseGroupZ@ is the start value for the Z component of--- @WorkgroupId@.------ - @groupCountX@ is the number of local workgroups to dispatch in the X--- dimension.------ - @groupCountY@ is the number of local workgroups to dispatch in the Y--- dimension.------ - @groupCountZ@ is the number of local workgroups to dispatch in the Z--- dimension.------ = Description------ When the command is executed, a global workgroup consisting of--- groupCountX × groupCountY × groupCountZ local workgroups is assembled,--- with @WorkgroupId@ values ranging from [baseGroup, baseGroup +--- groupCount) in each component.--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDispatch' is--- equivalent to--- vkCmdDispatchBase(0,0,0,groupCountX,groupCountY,groupCountZ).------ == Valid Usage------ - All valid usage rules from--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDispatch' apply------ - @baseGroupX@ /must/ be less than--- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[0]------ - @baseGroupX@ /must/ be less than--- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[1]------ - @baseGroupZ@ /must/ be less than--- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[2]------ - @groupCountX@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[0] minus--- @baseGroupX@------ - @groupCountY@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[1] minus--- @baseGroupY@------ - @groupCountZ@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxComputeWorkGroupCount@[2] minus--- @baseGroupZ@------ - If any of @baseGroupX@, @baseGroupY@, or @baseGroupZ@ are not zero,--- then the bound compute pipeline /must/ have been created with the--- @VK_PIPELINE_CREATE_DISPATCH_BASE@ flag.------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support compute operations------ - This command /must/ only be called outside of a render pass instance------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Outside | Compute | |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdDispatchBase" vkCmdDispatchBase :: ("commandBuffer" ::: VkCommandBuffer) -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()--- | VkMemoryAllocateFlagsInfo - Structure controlling how many instances of--- memory will be allocated------ = Description------ If @VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT@ is not set, the number of--- instances allocated depends on whether--- @VK_MEMORY_HEAP_MULTI_INSTANCE_BIT@ is set in the memory heap. If--- @VK_MEMORY_HEAP_MULTI_INSTANCE_BIT@ is set, then memory is allocated for--- every physical device in the logical device (as if @deviceMask@ has bits--- set for all device indices). If @VK_MEMORY_HEAP_MULTI_INSTANCE_BIT@ is--- not set, then a single instance of memory is allocated (as if--- @deviceMask@ is set to one).------ On some implementations, allocations from a multi-instance heap /may/--- consume memory on all physical devices even if the @deviceMask@ excludes--- some devices. If--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation.VkPhysicalDeviceGroupProperties'::@subsetAllocation@--- is @VK_TRUE@, then memory is only consumed for the devices in the device--- mask.------ __Note__------ In practice, most allocations on a multi-instance heap will be allocated--- across all physical devices. Unicast allocation support is an optional--- optimization for a minority of allocations.------ == Valid Usage------ - If @VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT@ is set, @deviceMask@ /must/--- be a valid device mask.------ - If @VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT@ is set, @deviceMask@ /must/--- not be zero------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO@------ - @flags@ /must/ be a valid combination of 'VkMemoryAllocateFlagBits'--- values------ = See Also------ 'VkMemoryAllocateFlags', 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkMemoryAllocateFlagsInfo = VkMemoryAllocateFlagsInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is a bitmask of 'VkMemoryAllocateFlagBits' controlling the- -- allocation.- vkFlags :: VkMemoryAllocateFlags- , -- | @deviceMask@ is a mask of physical devices in the logical device,- -- indicating that memory /must/ be allocated on each device in the mask,- -- if @VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT@ is set in @flags@.- vkDeviceMask :: Word32- }- deriving (Eq, Show)--instance Storable VkMemoryAllocateFlagsInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkMemoryAllocateFlagsInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkMemoryAllocateFlagsInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkMemoryAllocateFlagsInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkMemoryAllocateFlagsInfo))- *> poke (ptr `plusPtr` 20) (vkDeviceMask (poked :: VkMemoryAllocateFlagsInfo))--- | VkDeviceGroupRenderPassBeginInfo - Set the initial device mask and--- render areas for a render pass instance------ = Description------ The @deviceMask@ serves several purposes. It is an upper bound on the--- set of physical devices that /can/ be used during the render pass--- instance, and the initial device mask when the render pass instance--- begins. Render pass attachment load, store, and resolve operations only--- apply to physical devices included in the device mask. Subpass--- dependencies only apply to the physical devices in the device mask.------ If @deviceRenderAreaCount@ is not zero, then the elements of--- @pDeviceRenderAreas@ override the value of--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo'::@renderArea@,--- and provide a render area specific to each physical device. These render--- areas serve the same purpose as--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo'::@renderArea@,--- including controlling the region of attachments that are cleared by--- @VK_ATTACHMENT_LOAD_OP_CLEAR@ and that are resolved into resolve--- attachments.------ If this structure is not present, the render pass instance’s device mask--- is the value of 'VkDeviceGroupCommandBufferBeginInfo'::@deviceMask@. If--- this structure is not present or if @deviceRenderAreaCount@ is zero,--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo'::@renderArea@--- is used for all physical devices.------ == Valid Usage------ - @deviceMask@ /must/ be a valid device mask value------ - @deviceMask@ /must/ not be zero------ - @deviceMask@ /must/ be a subset of the command buffer’s initial--- device mask------ - @deviceRenderAreaCount@ /must/ either be zero or equal to the number--- of physical devices in the logical device.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO@------ - If @deviceRenderAreaCount@ is not @0@, @pDeviceRenderAreas@ /must/--- be a valid pointer to an array of @deviceRenderAreaCount@ @VkRect2D@--- structures------ = See Also------ 'Graphics.Vulkan.Core10.Pipeline.VkRect2D',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkDeviceGroupRenderPassBeginInfo = VkDeviceGroupRenderPassBeginInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @deviceMask@ is the device mask for the render pass instance.- vkDeviceMask :: Word32- , -- | @deviceRenderAreaCount@ is the number of elements in the- -- @pDeviceRenderAreas@ array.- vkDeviceRenderAreaCount :: Word32- , -- | @pDeviceRenderAreas@ is an array of structures of type- -- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D' defining the render area for- -- each physical device.- vkPDeviceRenderAreas :: Ptr VkRect2D- }- deriving (Eq, Show)--instance Storable VkDeviceGroupRenderPassBeginInfo where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkDeviceGroupRenderPassBeginInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDeviceGroupRenderPassBeginInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDeviceGroupRenderPassBeginInfo))- *> poke (ptr `plusPtr` 16) (vkDeviceMask (poked :: VkDeviceGroupRenderPassBeginInfo))- *> poke (ptr `plusPtr` 20) (vkDeviceRenderAreaCount (poked :: VkDeviceGroupRenderPassBeginInfo))- *> poke (ptr `plusPtr` 24) (vkPDeviceRenderAreas (poked :: VkDeviceGroupRenderPassBeginInfo))--- | VkDeviceGroupCommandBufferBeginInfo - Set the initial device mask for a--- command buffer------ = Description------ The initial device mask also acts as an upper bound on the set of--- devices that /can/ ever be in the device mask in the command buffer.------ If this structure is not present, the initial value of a command--- buffer’s device mask is set to include all physical devices in the--- logical device when the command buffer begins recording.------ == Valid Usage------ - @deviceMask@ /must/ be a valid device mask value------ - @deviceMask@ /must/ not be zero------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO@------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkDeviceGroupCommandBufferBeginInfo = VkDeviceGroupCommandBufferBeginInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @deviceMask@ is the initial value of the command buffer’s device mask.- vkDeviceMask :: Word32- }- deriving (Eq, Show)--instance Storable VkDeviceGroupCommandBufferBeginInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkDeviceGroupCommandBufferBeginInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDeviceGroupCommandBufferBeginInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDeviceGroupCommandBufferBeginInfo))- *> poke (ptr `plusPtr` 16) (vkDeviceMask (poked :: VkDeviceGroupCommandBufferBeginInfo))--- | VkDeviceGroupSubmitInfo - Structure indicating which physical devices--- execute semaphore operations and command buffers------ = Description------ If this structure is not present, semaphore operations and command--- buffers execute on device index zero.------ == Valid Usage------ - @waitSemaphoreCount@ /must/ equal--- 'Graphics.Vulkan.Core10.Queue.VkSubmitInfo'::@waitSemaphoreCount@------ - @commandBufferCount@ /must/ equal--- 'Graphics.Vulkan.Core10.Queue.VkSubmitInfo'::@commandBufferCount@------ - @signalSemaphoreCount@ /must/ equal--- 'Graphics.Vulkan.Core10.Queue.VkSubmitInfo'::@signalSemaphoreCount@------ - All elements of @pWaitSemaphoreDeviceIndices@ and--- @pSignalSemaphoreDeviceIndices@ /must/ be valid device indices------ - All elements of @pCommandBufferDeviceMasks@ /must/ be valid device--- masks------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO@------ - If @waitSemaphoreCount@ is not @0@, @pWaitSemaphoreDeviceIndices@--- /must/ be a valid pointer to an array of @waitSemaphoreCount@--- @uint32_t@ values------ - If @commandBufferCount@ is not @0@, @pCommandBufferDeviceMasks@--- /must/ be a valid pointer to an array of @commandBufferCount@--- @uint32_t@ values------ - If @signalSemaphoreCount@ is not @0@,--- @pSignalSemaphoreDeviceIndices@ /must/ be a valid pointer to an--- array of @signalSemaphoreCount@ @uint32_t@ values------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkDeviceGroupSubmitInfo = VkDeviceGroupSubmitInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @waitSemaphoreCount@ is the number of elements in the- -- @pWaitSemaphoreDeviceIndices@ array.- vkWaitSemaphoreCount :: Word32- , -- | @pWaitSemaphoreDeviceIndices@ is an array of device indices indicating- -- which physical device executes the semaphore wait operation in the- -- corresponding element of- -- 'Graphics.Vulkan.Core10.Queue.VkSubmitInfo'::@pWaitSemaphores@.- vkPWaitSemaphoreDeviceIndices :: Ptr Word32- , -- | @commandBufferCount@ is the number of elements in the- -- @pCommandBufferDeviceMasks@ array.- vkCommandBufferCount :: Word32- , -- | @pCommandBufferDeviceMasks@ is an array of device masks indicating which- -- physical devices execute the command buffer in the corresponding element- -- of 'Graphics.Vulkan.Core10.Queue.VkSubmitInfo'::@pCommandBuffers@. A- -- physical device executes the command buffer if the corresponding bit is- -- set in the mask.- vkPCommandBufferDeviceMasks :: Ptr Word32- , -- | @signalSemaphoreCount@ is the number of elements in the- -- @pSignalSemaphoreDeviceIndices@ array.- vkSignalSemaphoreCount :: Word32- , -- | @pSignalSemaphoreDeviceIndices@ is an array of device indices indicating- -- which physical device executes the semaphore signal operation in the- -- corresponding element of- -- 'Graphics.Vulkan.Core10.Queue.VkSubmitInfo'::@pSignalSemaphores@.- vkPSignalSemaphoreDeviceIndices :: Ptr Word32- }- deriving (Eq, Show)--instance Storable VkDeviceGroupSubmitInfo where- sizeOf ~_ = 64- alignment ~_ = 8- peek ptr = VkDeviceGroupSubmitInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDeviceGroupSubmitInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDeviceGroupSubmitInfo))- *> poke (ptr `plusPtr` 16) (vkWaitSemaphoreCount (poked :: VkDeviceGroupSubmitInfo))- *> poke (ptr `plusPtr` 24) (vkPWaitSemaphoreDeviceIndices (poked :: VkDeviceGroupSubmitInfo))- *> poke (ptr `plusPtr` 32) (vkCommandBufferCount (poked :: VkDeviceGroupSubmitInfo))- *> poke (ptr `plusPtr` 40) (vkPCommandBufferDeviceMasks (poked :: VkDeviceGroupSubmitInfo))- *> poke (ptr `plusPtr` 48) (vkSignalSemaphoreCount (poked :: VkDeviceGroupSubmitInfo))- *> poke (ptr `plusPtr` 56) (vkPSignalSemaphoreDeviceIndices (poked :: VkDeviceGroupSubmitInfo))--- | VkDeviceGroupBindSparseInfo - Structure indicating which instances are--- bound------ = Description------ These device indices apply to all buffer and image memory binds included--- in the batch that points to this structure. The semaphore waits and--- signals for the batch are executed only by the physical device specified--- by the @resourceDeviceIndex@.------ If this structure is not present, @resourceDeviceIndex@ and--- @memoryDeviceIndex@ are assumed to be zero.------ == Valid Usage------ - @resourceDeviceIndex@ and @memoryDeviceIndex@ /must/ both be valid--- device indices.------ - Each memory allocation bound in this batch /must/ have allocated an--- instance for @memoryDeviceIndex@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO@------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkDeviceGroupBindSparseInfo = VkDeviceGroupBindSparseInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @resourceDeviceIndex@ is a device index indicating which instance of the- -- resource is bound.- vkResourceDeviceIndex :: Word32- , -- | @memoryDeviceIndex@ is a device index indicating which instance of the- -- memory the resource instance is bound to.- vkMemoryDeviceIndex :: Word32- }- deriving (Eq, Show)--instance Storable VkDeviceGroupBindSparseInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkDeviceGroupBindSparseInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDeviceGroupBindSparseInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDeviceGroupBindSparseInfo))- *> poke (ptr `plusPtr` 16) (vkResourceDeviceIndex (poked :: VkDeviceGroupBindSparseInfo))- *> poke (ptr `plusPtr` 20) (vkMemoryDeviceIndex (poked :: VkDeviceGroupBindSparseInfo))--- | VkPeerMemoryFeatureFlags - Bitmask of VkPeerMemoryFeatureFlagBits------ = Description------ @VkPeerMemoryFeatureFlags@ is a bitmask type for setting a mask of zero--- or more 'VkPeerMemoryFeatureFlagBits'.------ = See Also------ 'VkPeerMemoryFeatureFlagBits', 'vkGetDeviceGroupPeerMemoryFeatures',--- 'Graphics.Vulkan.Extensions.VK_KHR_device_group.vkGetDeviceGroupPeerMemoryFeaturesKHR'-type VkPeerMemoryFeatureFlags = VkPeerMemoryFeatureFlagBits--- | VkMemoryAllocateFlags - Bitmask of VkMemoryAllocateFlagBits------ = Description------ @VkMemoryAllocateFlags@ is a bitmask type for setting a mask of zero or--- more 'VkMemoryAllocateFlagBits'.------ = See Also------ 'VkMemoryAllocateFlagBits', 'VkMemoryAllocateFlagsInfo'-type VkMemoryAllocateFlags = VkMemoryAllocateFlagBits
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.hs
@@ -1,270 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2- ( pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO- , pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO- , pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT- , VkBindBufferMemoryDeviceGroupInfo(..)- , VkBindImageMemoryDeviceGroupInfo(..)- ) where--import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )---import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkImageCreateFlagBits(..)- )-import Graphics.Vulkan.Core10.Pipeline- ( VkRect2D(..)- )----- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = VkStructureType 1000060013--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = VkStructureType 1000060014--- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"-pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = VkImageCreateFlagBits 0x00000040--- | VkBindBufferMemoryDeviceGroupInfo - Structure specifying device within a--- group to bind to------ = Members------ If the @pNext@ list of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.VkBindBufferMemoryInfo'--- includes a @VkBindBufferMemoryDeviceGroupInfo@ structure, then that--- structure determines how memory is bound to buffers across multiple--- devices in a device group.------ = Description------ The @VkBindBufferMemoryDeviceGroupInfo@ structure is defined as:------ - @sType@ is the type of this structure.------ - @pNext@ is @NULL@ or a pointer to an extension-specific structure.------ - @deviceIndexCount@ is the number of elements in @pDeviceIndices@.------ - @pDeviceIndices@ is a pointer to an array of device indices.------ If @deviceIndexCount@ is greater than zero, then on device index i the--- buffer is attached to the instance of @memory@ on the physical device--- with device index pDeviceIndices[i].------ If @deviceIndexCount@ is zero and @memory@ comes from a memory heap with--- the @VK_MEMORY_HEAP_MULTI_INSTANCE_BIT@ bit set, then it is as if--- @pDeviceIndices@ contains consecutive indices from zero to the number of--- physical devices in the logical device, minus one. In other words, by--- default each physical device attaches to its own instance of @memory@.------ If @deviceIndexCount@ is zero and @memory@ comes from a memory heap--- without the @VK_MEMORY_HEAP_MULTI_INSTANCE_BIT@ bit set, then it is as--- if @pDeviceIndices@ contains an array of zeros. In other words, by--- default each physical device attaches to instance zero.------ == Valid Usage------ - @deviceIndexCount@ /must/ either be zero or equal to the number of--- physical devices in the logical device------ - All elements of @pDeviceIndices@ /must/ be valid device indices------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO@------ - If @deviceIndexCount@ is not @0@, @pDeviceIndices@ /must/ be a valid--- pointer to an array of @deviceIndexCount@ @uint32_t@ values------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkBindBufferMemoryDeviceGroupInfo = VkBindBufferMemoryDeviceGroupInfo- { -- No documentation found for Nested "VkBindBufferMemoryDeviceGroupInfo" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkBindBufferMemoryDeviceGroupInfo" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkBindBufferMemoryDeviceGroupInfo" "deviceIndexCount"- vkDeviceIndexCount :: Word32- , -- No documentation found for Nested "VkBindBufferMemoryDeviceGroupInfo" "pDeviceIndices"- vkPDeviceIndices :: Ptr Word32- }- deriving (Eq, Show)--instance Storable VkBindBufferMemoryDeviceGroupInfo where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkBindBufferMemoryDeviceGroupInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkBindBufferMemoryDeviceGroupInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkBindBufferMemoryDeviceGroupInfo))- *> poke (ptr `plusPtr` 16) (vkDeviceIndexCount (poked :: VkBindBufferMemoryDeviceGroupInfo))- *> poke (ptr `plusPtr` 24) (vkPDeviceIndices (poked :: VkBindBufferMemoryDeviceGroupInfo))--- | VkBindImageMemoryDeviceGroupInfo - Structure specifying device within a--- group to bind to------ = Members------ If the @pNext@ list of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.VkBindImageMemoryInfo'--- includes a @VkBindImageMemoryDeviceGroupInfo@ structure, then that--- structure determines how memory is bound to images across multiple--- devices in a device group.------ = Description------ The @VkBindImageMemoryDeviceGroupInfo@ structure is defined as:------ - @sType@ is the type of this structure.------ - @pNext@ is @NULL@ or a pointer to an extension-specific structure.------ - @deviceIndexCount@ is the number of elements in @pDeviceIndices@.------ - @pDeviceIndices@ is a pointer to an array of device indices.------ - @splitInstanceBindRegionCount@ is the number of elements in--- @pSplitInstanceBindRegions@.------ - @pSplitInstanceBindRegions@ is a pointer to an array of rectangles--- describing which regions of the image are attached to each instance--- of memory.------ If @deviceIndexCount@ is greater than zero, then on device index i--- @image@ is attached to the instance of the memory on the physical device--- with device index pDeviceIndices[i].------ Let N be the number of physical devices in the logical device. If--- @splitInstanceBindRegionCount@ is greater than zero, then--- @pSplitInstanceBindRegions@ is an array of N2 rectangles, where the--- image region specified by the rectangle at element i*N+j in resource--- instance i is bound to the memory instance j. The blocks of the memory--- that are bound to each sparse image block region use an offset in--- memory, relative to @memoryOffset@, computed as if the whole image were--- being bound to a contiguous range of memory. In other words,--- horizontally adjacent image blocks use consecutive blocks of memory,--- vertically adjacent image blocks are separated by the number of bytes--- per block multiplied by the width in blocks of @image@, and the block at--- (0,0) corresponds to memory starting at @memoryOffset@.------ If @splitInstanceBindRegionCount@ and @deviceIndexCount@ are zero and--- the memory comes from a memory heap with the--- @VK_MEMORY_HEAP_MULTI_INSTANCE_BIT@ bit set, then it is as if--- @pDeviceIndices@ contains consecutive indices from zero to the number of--- physical devices in the logical device, minus one. In other words, by--- default each physical device attaches to its own instance of the memory.------ If @splitInstanceBindRegionCount@ and @deviceIndexCount@ are zero and--- the memory comes from a memory heap without the--- @VK_MEMORY_HEAP_MULTI_INSTANCE_BIT@ bit set, then it is as if--- @pDeviceIndices@ contains an array of zeros. In other words, by default--- each physical device attaches to instance zero.------ == Valid Usage------ - At least one of @deviceIndexCount@ and--- @splitInstanceBindRegionCount@ /must/ be zero.------ - @deviceIndexCount@ /must/ either be zero or equal to the number of--- physical devices in the logical device------ - All elements of @pDeviceIndices@ /must/ be valid device indices.------ - @splitInstanceBindRegionCount@ /must/ either be zero or equal to the--- number of physical devices in the logical device squared------ - Elements of @pSplitInstanceBindRegions@ that correspond to the same--- instance of an image /must/ not overlap.------ - The @offset.x@ member of any element of @pSplitInstanceBindRegions@--- /must/ be a multiple of the sparse image block width--- (@VkSparseImageFormatProperties@::@imageGranularity.width@) of all--- non-metadata aspects of the image------ - The @offset.y@ member of any element of @pSplitInstanceBindRegions@--- /must/ be a multiple of the sparse image block height--- (@VkSparseImageFormatProperties@::@imageGranularity.height@) of all--- non-metadata aspects of the image------ - The @extent.width@ member of any element of--- @pSplitInstanceBindRegions@ /must/ either be a multiple of the--- sparse image block width of all non-metadata aspects of the image,--- or else @extent.width@ + @offset.x@ /must/ equal the width of the--- image subresource------ - The @extent.height@ member of any element of--- @pSplitInstanceBindRegions@ /must/ either be a multiple of the--- sparse image block height of all non-metadata aspects of the image,--- or else @extent.height@--- @offset.y@ /must/ equal the width of the image subresource------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO@------ - If @deviceIndexCount@ is not @0@, @pDeviceIndices@ /must/ be a valid--- pointer to an array of @deviceIndexCount@ @uint32_t@ values------ - If @splitInstanceBindRegionCount@ is not @0@,--- @pSplitInstanceBindRegions@ /must/ be a valid pointer to an array of--- @splitInstanceBindRegionCount@ @VkRect2D@ structures------ = See Also------ 'Graphics.Vulkan.Core10.Pipeline.VkRect2D',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkBindImageMemoryDeviceGroupInfo = VkBindImageMemoryDeviceGroupInfo- { -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "deviceIndexCount"- vkDeviceIndexCount :: Word32- , -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "pDeviceIndices"- vkPDeviceIndices :: Ptr Word32- , -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "splitInstanceBindRegionCount"- vkSplitInstanceBindRegionCount :: Word32- , -- No documentation found for Nested "VkBindImageMemoryDeviceGroupInfo" "pSplitInstanceBindRegions"- vkPSplitInstanceBindRegions :: Ptr VkRect2D- }- deriving (Eq, Show)--instance Storable VkBindImageMemoryDeviceGroupInfo where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkBindImageMemoryDeviceGroupInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkBindImageMemoryDeviceGroupInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkBindImageMemoryDeviceGroupInfo))- *> poke (ptr `plusPtr` 16) (vkDeviceIndexCount (poked :: VkBindImageMemoryDeviceGroupInfo))- *> poke (ptr `plusPtr` 24) (vkPDeviceIndices (poked :: VkBindImageMemoryDeviceGroupInfo))- *> poke (ptr `plusPtr` 32) (vkSplitInstanceBindRegionCount (poked :: VkBindImageMemoryDeviceGroupInfo))- *> poke (ptr `plusPtr` 40) (vkPSplitInstanceBindRegions (poked :: VkBindImageMemoryDeviceGroupInfo))
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_device_group_creation.hs
@@ -1,250 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation- ( pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES- , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO- , pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT- , VK_MAX_DEVICE_GROUP_SIZE- , pattern VK_MAX_DEVICE_GROUP_SIZE- , vkEnumeratePhysicalDeviceGroups- , VkPhysicalDeviceGroupProperties(..)- , VkDeviceGroupDeviceCreateInfo(..)- ) where--import Data.Vector.Storable.Sized- ( Vector- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkMemoryHeapFlagBits(..)- , VkInstance- , VkPhysicalDevice- )----- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = VkStructureType 1000070000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = VkStructureType 1000070001--- | @VK_MEMORY_HEAP_MULTI_INSTANCE_BIT@ specifies that in a logical device--- representing more than one physical device, there is a per-physical--- device instance of the heap memory. By default, an allocation from such--- a heap will be replicated to each physical device’s instance of the--- heap.-pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT :: VkMemoryHeapFlagBits-pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = VkMemoryHeapFlagBits 0x00000002--- No documentation found for TopLevel "VK_MAX_DEVICE_GROUP_SIZE"-type VK_MAX_DEVICE_GROUP_SIZE = 32--- No documentation found for Nested "Integral a => a" "VK_MAX_DEVICE_GROUP_SIZE"-pattern VK_MAX_DEVICE_GROUP_SIZE :: Integral a => a-pattern VK_MAX_DEVICE_GROUP_SIZE = 32--- | vkEnumeratePhysicalDeviceGroups - Enumerates groups of physical devices--- that can be used to create a single logical device------ = Parameters------ - @instance@ is a handle to a Vulkan instance previously created with--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkCreateInstance'.------ - @pPhysicalDeviceGroupCount@ is a pointer to an integer related to--- the number of device groups available or queried, as described--- below.------ - @pPhysicalDeviceGroupProperties@ is either @NULL@ or a pointer to an--- array of 'VkPhysicalDeviceGroupProperties' structures.------ = Description------ If @pPhysicalDeviceGroupProperties@ is @NULL@, then the number of device--- groups available is returned in @pPhysicalDeviceGroupCount@. Otherwise,--- @pPhysicalDeviceGroupCount@ /must/ point to a variable set by the user--- to the number of elements in the @pPhysicalDeviceGroupProperties@ array,--- and on return the variable is overwritten with the number of structures--- actually written to @pPhysicalDeviceGroupProperties@. If--- @pPhysicalDeviceGroupCount@ is less than the number of device groups--- available, at most @pPhysicalDeviceGroupCount@ structures will be--- written. If @pPhysicalDeviceGroupCount@ is smaller than the number of--- device groups available, @VK_INCOMPLETE@ will be returned instead of--- @VK_SUCCESS@, to indicate that not all the available device groups were--- returned.------ Every physical device /must/ be in exactly one device group.------ == Valid Usage (Implicit)------ - @instance@ /must/ be a valid @VkInstance@ handle------ - @pPhysicalDeviceGroupCount@ /must/ be a valid pointer to a--- @uint32_t@ value------ - If the value referenced by @pPhysicalDeviceGroupCount@ is not @0@,--- and @pPhysicalDeviceGroupProperties@ is not @NULL@,--- @pPhysicalDeviceGroupProperties@ /must/ be a valid pointer to an--- array of @pPhysicalDeviceGroupCount@--- @VkPhysicalDeviceGroupProperties@ structures------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ - @VK_INCOMPLETE@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_INITIALIZATION_FAILED@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',--- 'VkPhysicalDeviceGroupProperties'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkEnumeratePhysicalDeviceGroups" vkEnumeratePhysicalDeviceGroups :: ("instance" ::: VkInstance) -> ("pPhysicalDeviceGroupCount" ::: Ptr Word32) -> ("pPhysicalDeviceGroupProperties" ::: Ptr VkPhysicalDeviceGroupProperties) -> IO VkResult--- | VkPhysicalDeviceGroupProperties - Structure specifying physical device--- group properties------ = See Also------ @VkBool32@,--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkEnumeratePhysicalDeviceGroups',--- 'Graphics.Vulkan.Extensions.VK_KHR_device_group_creation.vkEnumeratePhysicalDeviceGroupsKHR'-data VkPhysicalDeviceGroupProperties = VkPhysicalDeviceGroupProperties- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @physicalDeviceCount@ is the number of physical devices in the group.- vkPhysicalDeviceCount :: Word32- , -- | @physicalDevices@ is an array of physical device handles representing- -- all physical devices in the group. The first @physicalDeviceCount@- -- elements of the array will be valid.- vkPhysicalDevices :: Vector VK_MAX_DEVICE_GROUP_SIZE VkPhysicalDevice- , -- | @subsetAllocation@ specifies whether logical devices created from the- -- group support allocating device memory on a subset of devices, via the- -- @deviceMask@ member of the- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group.VkMemoryAllocateFlagsInfo'.- -- If this is @VK_FALSE@, then all device memory allocations are made- -- across all physical devices in the group. If @physicalDeviceCount@ is- -- @1@, then @subsetAllocation@ /must/ be @VK_FALSE@.- vkSubsetAllocation :: VkBool32- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceGroupProperties where- sizeOf ~_ = 288- alignment ~_ = 8- peek ptr = VkPhysicalDeviceGroupProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 280)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceGroupProperties))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceGroupProperties))- *> poke (ptr `plusPtr` 16) (vkPhysicalDeviceCount (poked :: VkPhysicalDeviceGroupProperties))- *> poke (ptr `plusPtr` 24) (vkPhysicalDevices (poked :: VkPhysicalDeviceGroupProperties))- *> poke (ptr `plusPtr` 280) (vkSubsetAllocation (poked :: VkPhysicalDeviceGroupProperties))--- | VkDeviceGroupDeviceCreateInfo - Create a logical device from multiple--- physical devices------ = Description------ The elements of the @pPhysicalDevices@ array are an ordered list of the--- physical devices that the logical device represents. These /must/ be a--- subset of a single device group, and need not be in the same order as--- they were enumerated. The order of the physical devices in the--- @pPhysicalDevices@ array determines the /device index/ of each physical--- device, with element i being assigned a device index of i. Certain--- commands and structures refer to one or more physical devices by using--- device indices or /device masks/ formed using device indices.------ A logical device created without using @VkDeviceGroupDeviceCreateInfo@,--- or with @physicalDeviceCount@ equal to zero, is equivalent to a--- @physicalDeviceCount@ of one and @pPhysicalDevices@ pointing to the--- @physicalDevice@ parameter to--- 'Graphics.Vulkan.Core10.Device.vkCreateDevice'. In particular, the--- device index of that physical device is zero.------ == Valid Usage------ - Each element of @pPhysicalDevices@ /must/ be unique------ - All elements of @pPhysicalDevices@ /must/ be in the same device--- group as enumerated by 'vkEnumeratePhysicalDeviceGroups'------ - If @physicalDeviceCount@ is not @0@, the @physicalDevice@ parameter--- of 'Graphics.Vulkan.Core10.Device.vkCreateDevice' /must/ be an--- element of @pPhysicalDevices@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO@------ - If @physicalDeviceCount@ is not @0@, @pPhysicalDevices@ /must/ be a--- valid pointer to an array of @physicalDeviceCount@ valid--- @VkPhysicalDevice@ handles------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkDeviceGroupDeviceCreateInfo = VkDeviceGroupDeviceCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @physicalDeviceCount@ is the number of elements in the- -- @pPhysicalDevices@ array.- vkPhysicalDeviceCount :: Word32- , -- | @pPhysicalDevices@ is an array of physical device handles belonging to- -- the same device group.- vkPPhysicalDevices :: Ptr VkPhysicalDevice- }- deriving (Eq, Show)--instance Storable VkDeviceGroupDeviceCreateInfo where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkDeviceGroupDeviceCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDeviceGroupDeviceCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDeviceGroupDeviceCreateInfo))- *> poke (ptr `plusPtr` 16) (vkPhysicalDeviceCount (poked :: VkDeviceGroupDeviceCreateInfo))- *> poke (ptr `plusPtr` 24) (vkPPhysicalDevices (poked :: VkDeviceGroupDeviceCreateInfo))
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_fence.hs
@@ -1,144 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence- ( VkFenceImportFlagBits(..)- , pattern VK_FENCE_IMPORT_TEMPORARY_BIT- , pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO- , VkExportFenceCreateInfo(..)- , VkFenceImportFlags- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities- ( VkExternalFenceHandleTypeFlags- )----- ** VkFenceImportFlagBits---- | VkFenceImportFlagBits - Bitmask specifying additional parameters of--- fence payload import------ = See Also------ 'VkFenceImportFlags'-newtype VkFenceImportFlagBits = VkFenceImportFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkFenceImportFlagBits where- showsPrec _ VK_FENCE_IMPORT_TEMPORARY_BIT = showString "VK_FENCE_IMPORT_TEMPORARY_BIT"- showsPrec p (VkFenceImportFlagBits x) = showParen (p >= 11) (showString "VkFenceImportFlagBits " . showsPrec 11 x)--instance Read VkFenceImportFlagBits where- readPrec = parens ( choose [ ("VK_FENCE_IMPORT_TEMPORARY_BIT", pure VK_FENCE_IMPORT_TEMPORARY_BIT)- ] +++- prec 10 (do- expectP (Ident "VkFenceImportFlagBits")- v <- step readPrec- pure (VkFenceImportFlagBits v)- )- )---- | @VK_FENCE_IMPORT_TEMPORARY_BIT@ specifies that the fence payload will be--- imported only temporarily, as described in [Importing Fence--- Payloads](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences-importing),--- regardless of the permanence of @handleType@.-pattern VK_FENCE_IMPORT_TEMPORARY_BIT :: VkFenceImportFlagBits-pattern VK_FENCE_IMPORT_TEMPORARY_BIT = VkFenceImportFlagBits 0x00000001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = VkStructureType 1000113000--- | VkExportFenceCreateInfo - Structure specifying handle types that can be--- exported from a fence------ == Valid Usage------ - The bits in @handleTypes@ must be supported and compatible, as--- reported by--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceProperties'.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO@------ - @handleTypes@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceHandleTypeFlagBits'--- values------ = See Also------ 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceHandleTypeFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkExportFenceCreateInfo = VkExportFenceCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @handleTypes@ is a bitmask of- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceHandleTypeFlagBits'- -- specifying one or more fence handle types the application /can/ export- -- from the resulting fence. The application /can/ request multiple handle- -- types for the same fence.- vkHandleTypes :: VkExternalFenceHandleTypeFlags- }- deriving (Eq, Show)--instance Storable VkExportFenceCreateInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkExportFenceCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkExportFenceCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkExportFenceCreateInfo))- *> poke (ptr `plusPtr` 16) (vkHandleTypes (poked :: VkExportFenceCreateInfo))--- | VkFenceImportFlags - Bitmask of VkFenceImportFlagBits------ = Description------ @VkFenceImportFlags@ is a bitmask type for setting a mask of zero or--- more 'VkFenceImportFlagBits'.------ = See Also------ 'VkFenceImportFlagBits',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.VkImportFenceFdInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.VkImportFenceWin32HandleInfoKHR'-type VkFenceImportFlags = VkFenceImportFlagBits
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_fence_capabilities.hs
@@ -1,379 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities- ( VkExternalFenceHandleTypeFlagBits(..)- , pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT- , pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT- , pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT- , pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT- , VkExternalFenceFeatureFlagBits(..)- , pattern VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT- , pattern VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO- , pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES- , vkGetPhysicalDeviceExternalFenceProperties- , VkPhysicalDeviceExternalFenceInfo(..)- , VkExternalFenceProperties(..)- , VkExternalFenceHandleTypeFlags- , VkExternalFenceFeatureFlags- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkPhysicalDevice- )----- ** VkExternalFenceHandleTypeFlagBits---- | VkExternalFenceHandleTypeFlagBits - Bitmask of valid external fence--- handle types------ = Description------ - @VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT@ specifies a POSIX file--- descriptor handle that has only limited valid usage outside of--- Vulkan and other compatible APIs. It /must/ be compatible with the--- POSIX system calls @dup@, @dup2@, @close@, and the non-standard--- system call @dup3@. Additionally, it /must/ be transportable over a--- socket using an @SCM_RIGHTS@ control message. It owns a reference to--- the underlying synchronization primitive represented by its Vulkan--- fence object.------ - @VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT@ specifies an NT--- handle that has only limited valid usage outside of Vulkan and other--- compatible APIs. It /must/ be compatible with the functions--- @DuplicateHandle@, @CloseHandle@, @CompareObjectHandles@,--- @GetHandleInformation@, and @SetHandleInformation@. It owns a--- reference to the underlying synchronization primitive represented by--- its Vulkan fence object.------ - @VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT@ specifies a--- global share handle that has only limited valid usage outside of--- Vulkan and other compatible APIs. It is not compatible with any--- native APIs. It does not own a reference to the underlying--- synchronization primitive represented by its Vulkan fence object,--- and will therefore become invalid when all Vulkan fence objects--- associated with it are destroyed.------ - @VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT@ specifies a POSIX file--- descriptor handle to a Linux Sync File or Android Fence. It can be--- used with any native API accepting a valid sync file or fence as--- input. It owns a reference to the underlying synchronization--- primitive associated with the file descriptor. Implementations which--- support importing this handle type /must/ accept any type of sync or--- fence FD supported by the native system they are running on.------ Some external fence handle types can only be shared within the same--- underlying physical device and\/or the same driver version, as defined--- in the following table:------ +------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | Handle type | @VkPhysicalDeviceIDProperties@::@driverUUID@ | @VkPhysicalDeviceIDProperties@::@deviceUUID@ |--- +------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | @VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT@ | Must match | Must match |--- +------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | @VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT@ | Must match | Must match |--- +------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | @VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT@ | Must match | Must match |--- +------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | @VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT@ | No restriction | No restriction |--- +------------------------------------------------------+----------------------------------------------+----------------------------------------------+------ External fence handle types compatibility------ = See Also------ 'VkExternalFenceHandleTypeFlags',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.VkFenceGetFdInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.VkFenceGetWin32HandleInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd.VkImportFenceFdInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32.VkImportFenceWin32HandleInfoKHR',--- 'VkPhysicalDeviceExternalFenceInfo'-newtype VkExternalFenceHandleTypeFlagBits = VkExternalFenceHandleTypeFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkExternalFenceHandleTypeFlagBits where- showsPrec _ VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = showString "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"- showsPrec _ VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = showString "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"- showsPrec _ VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = showString "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"- showsPrec _ VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = showString "VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"- showsPrec p (VkExternalFenceHandleTypeFlagBits x) = showParen (p >= 11) (showString "VkExternalFenceHandleTypeFlagBits " . showsPrec 11 x)--instance Read VkExternalFenceHandleTypeFlagBits where- readPrec = parens ( choose [ ("VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT", pure VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT)- , ("VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT", pure VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT)- , ("VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT", pure VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT)- , ("VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT", pure VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT)- ] +++- prec 10 (do- expectP (Ident "VkExternalFenceHandleTypeFlagBits")- v <- step readPrec- pure (VkExternalFenceHandleTypeFlagBits v)- )- )---- No documentation found for Nested "VkExternalFenceHandleTypeFlagBits" "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT :: VkExternalFenceHandleTypeFlagBits-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = VkExternalFenceHandleTypeFlagBits 0x00000001---- No documentation found for Nested "VkExternalFenceHandleTypeFlagBits" "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT :: VkExternalFenceHandleTypeFlagBits-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = VkExternalFenceHandleTypeFlagBits 0x00000002---- No documentation found for Nested "VkExternalFenceHandleTypeFlagBits" "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT :: VkExternalFenceHandleTypeFlagBits-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = VkExternalFenceHandleTypeFlagBits 0x00000004---- No documentation found for Nested "VkExternalFenceHandleTypeFlagBits" "VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT :: VkExternalFenceHandleTypeFlagBits-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = VkExternalFenceHandleTypeFlagBits 0x00000008--- ** VkExternalFenceFeatureFlagBits---- | VkExternalFenceFeatureFlagBits - Bitfield describing features of an--- external fence handle type------ = See Also------ 'VkExternalFenceFeatureFlags'-newtype VkExternalFenceFeatureFlagBits = VkExternalFenceFeatureFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkExternalFenceFeatureFlagBits where- showsPrec _ VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = showString "VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"- showsPrec _ VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = showString "VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"- showsPrec p (VkExternalFenceFeatureFlagBits x) = showParen (p >= 11) (showString "VkExternalFenceFeatureFlagBits " . showsPrec 11 x)--instance Read VkExternalFenceFeatureFlagBits where- readPrec = parens ( choose [ ("VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT", pure VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT)- , ("VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT", pure VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT)- ] +++- prec 10 (do- expectP (Ident "VkExternalFenceFeatureFlagBits")- v <- step readPrec- pure (VkExternalFenceFeatureFlagBits v)- )- )---- | @VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT@ specifies handles of this--- type /can/ be exported from Vulkan fence objects.-pattern VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT :: VkExternalFenceFeatureFlagBits-pattern VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = VkExternalFenceFeatureFlagBits 0x00000001---- | @VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT@ specifies handles of this--- type /can/ be imported to Vulkan fence objects.-pattern VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT :: VkExternalFenceFeatureFlagBits-pattern VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = VkExternalFenceFeatureFlagBits 0x00000002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = VkStructureType 1000112000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES"-pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = VkStructureType 1000112001--- | vkGetPhysicalDeviceExternalFenceProperties - Function for querying--- external fence handle capabilities.------ = Parameters------ - @physicalDevice@ is the physical device from which to query the--- fence capabilities.------ - @pExternalFenceInfo@ points to an instance of the--- 'VkPhysicalDeviceExternalFenceInfo' structure, describing the--- parameters that would be consumed by--- 'Graphics.Vulkan.Core10.Fence.vkCreateFence'.------ - @pExternalFenceProperties@ points to an instance of the--- 'VkExternalFenceProperties' structure in which capabilities are--- returned.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pExternalFenceInfo@ /must/ be a valid pointer to a valid--- @VkPhysicalDeviceExternalFenceInfo@ structure------ - @pExternalFenceProperties@ /must/ be a valid pointer to a--- @VkExternalFenceProperties@ structure------ = See Also------ 'VkExternalFenceProperties',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',--- 'VkPhysicalDeviceExternalFenceInfo'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceExternalFenceProperties" vkGetPhysicalDeviceExternalFenceProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalFenceInfo" ::: Ptr VkPhysicalDeviceExternalFenceInfo) -> ("pExternalFenceProperties" ::: Ptr VkExternalFenceProperties) -> IO ()--- | VkPhysicalDeviceExternalFenceInfo - Structure specifying fence creation--- parameters.------ = Description------ __Note__------ Handles of type @VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT@ generated by--- the implementation may represent either Linux Sync Files or Android--- Fences at the implementation’s discretion. Applications /should/ only--- use operations defined for both types of file descriptors, unless they--- know via means external to Vulkan the type of the file descriptor, or--- are prepared to deal with the system-defined operation failures--- resulting from using the wrong type.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO@------ - @pNext@ /must/ be @NULL@------ - @handleType@ /must/ be a valid 'VkExternalFenceHandleTypeFlagBits'--- value------ = See Also------ 'VkExternalFenceHandleTypeFlagBits',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetPhysicalDeviceExternalFenceProperties',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_capabilities.vkGetPhysicalDeviceExternalFencePropertiesKHR'-data VkPhysicalDeviceExternalFenceInfo = VkPhysicalDeviceExternalFenceInfo- { -- | @sType@ is the type of this structure- vkSType :: VkStructureType- , -- | @pNext@ is NULL or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @handleType@ is a 'VkExternalFenceHandleTypeFlagBits' value indicating- -- an external fence handle type for which capabilities will be returned.- vkHandleType :: VkExternalFenceHandleTypeFlagBits- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceExternalFenceInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkPhysicalDeviceExternalFenceInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceExternalFenceInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceExternalFenceInfo))- *> poke (ptr `plusPtr` 16) (vkHandleType (poked :: VkPhysicalDeviceExternalFenceInfo))--- | VkExternalFenceProperties - Structure describing supported external--- fence handle features------ = Description------ If @handleType@ is not supported by the implementation, then--- 'VkExternalFenceProperties'::@externalFenceFeatures@ will be set to--- zero.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES@------ - @pNext@ /must/ be @NULL@------ = See Also------ 'VkExternalFenceFeatureFlags', 'VkExternalFenceHandleTypeFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetPhysicalDeviceExternalFenceProperties',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_fence_capabilities.vkGetPhysicalDeviceExternalFencePropertiesKHR'-data VkExternalFenceProperties = VkExternalFenceProperties- { -- No documentation found for Nested "VkExternalFenceProperties" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkExternalFenceProperties" "pNext"- vkPNext :: Ptr ()- , -- | @exportFromImportedHandleTypes@ is a bitmask of- -- 'VkExternalFenceHandleTypeFlagBits' indicating which types of imported- -- handle @handleType@ /can/ be exported from.- vkExportFromImportedHandleTypes :: VkExternalFenceHandleTypeFlags- , -- | @compatibleHandleTypes@ is a bitmask of- -- 'VkExternalFenceHandleTypeFlagBits' specifying handle types which /can/- -- be specified at the same time as @handleType@ when creating a fence.- vkCompatibleHandleTypes :: VkExternalFenceHandleTypeFlags- , -- | @externalFenceFeatures@ is a bitmask of 'VkExternalFenceFeatureFlagBits'- -- indicating the features of @handleType@.- vkExternalFenceFeatures :: VkExternalFenceFeatureFlags- }- deriving (Eq, Show)--instance Storable VkExternalFenceProperties where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkExternalFenceProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkExternalFenceProperties))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkExternalFenceProperties))- *> poke (ptr `plusPtr` 16) (vkExportFromImportedHandleTypes (poked :: VkExternalFenceProperties))- *> poke (ptr `plusPtr` 20) (vkCompatibleHandleTypes (poked :: VkExternalFenceProperties))- *> poke (ptr `plusPtr` 24) (vkExternalFenceFeatures (poked :: VkExternalFenceProperties))--- | VkExternalFenceHandleTypeFlags - Bitmask of--- VkExternalFenceHandleTypeFlagBits------ = Description------ @VkExternalFenceHandleTypeFlags@ is a bitmask type for setting a mask of--- zero or more 'VkExternalFenceHandleTypeFlagBits'.------ = See Also------ 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence.VkExportFenceCreateInfo',--- 'VkExternalFenceHandleTypeFlagBits', 'VkExternalFenceProperties'-type VkExternalFenceHandleTypeFlags = VkExternalFenceHandleTypeFlagBits--- | VkExternalFenceFeatureFlags - Bitmask of VkExternalFenceFeatureFlagBits------ = Description------ @VkExternalFenceFeatureFlags@ is a bitmask type for setting a mask of--- zero or more 'VkExternalFenceFeatureFlagBits'.------ = See Also------ 'VkExternalFenceFeatureFlagBits', 'VkExternalFenceProperties'-type VkExternalFenceFeatureFlags = VkExternalFenceFeatureFlagBits
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_memory.hs
@@ -1,175 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory- ( pattern VK_ERROR_INVALID_EXTERNAL_HANDLE- , pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO- , pattern VK_QUEUE_FAMILY_EXTERNAL- , VkExternalMemoryImageCreateInfo(..)- , VkExternalMemoryBufferCreateInfo(..)- , VkExportMemoryAllocateInfo(..)- ) where--import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities- ( VkExternalMemoryHandleTypeFlags- )----- No documentation found for Nested "VkResult" "VK_ERROR_INVALID_EXTERNAL_HANDLE"-pattern VK_ERROR_INVALID_EXTERNAL_HANDLE :: VkResult-pattern VK_ERROR_INVALID_EXTERNAL_HANDLE = VkResult (-1000072003)--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = VkStructureType 1000072000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = VkStructureType 1000072001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO"-pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = VkStructureType 1000072002--- No documentation found for Nested "Word32" "VK_QUEUE_FAMILY_EXTERNAL"-pattern VK_QUEUE_FAMILY_EXTERNAL :: Word32-pattern VK_QUEUE_FAMILY_EXTERNAL = 0xfffffffe--- | VkExternalMemoryImageCreateInfo - Specify that an image may be backed by--- external memory------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO@------ - @handleTypes@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'--- values------ - @handleTypes@ /must/ not be @0@------ = See Also------ 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkExternalMemoryImageCreateInfo = VkExternalMemoryImageCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @handleTypes@ is a bitmask of- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'- -- specifying one or more external memory handle types.- vkHandleTypes :: VkExternalMemoryHandleTypeFlags- }- deriving (Eq, Show)--instance Storable VkExternalMemoryImageCreateInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkExternalMemoryImageCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkExternalMemoryImageCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkExternalMemoryImageCreateInfo))- *> poke (ptr `plusPtr` 16) (vkHandleTypes (poked :: VkExternalMemoryImageCreateInfo))--- | VkExternalMemoryBufferCreateInfo - Specify that a buffer may be backed--- by external memory------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO@------ - @handleTypes@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'--- values------ = See Also------ 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkExternalMemoryBufferCreateInfo = VkExternalMemoryBufferCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @handleTypes@ is a bitmask of- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'- -- specifying one or more external memory handle types.- vkHandleTypes :: VkExternalMemoryHandleTypeFlags- }- deriving (Eq, Show)--instance Storable VkExternalMemoryBufferCreateInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkExternalMemoryBufferCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkExternalMemoryBufferCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkExternalMemoryBufferCreateInfo))- *> poke (ptr `plusPtr` 16) (vkHandleTypes (poked :: VkExternalMemoryBufferCreateInfo))--- | VkExportMemoryAllocateInfo - Specify exportable handle types for a--- device memory object------ == Valid Usage------ - The bits in @handleTypes@ /must/ be supported and compatible, as--- reported by--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalImageFormatProperties'--- or--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalBufferProperties'.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO@------ - @handleTypes@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'--- values------ = See Also------ 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkExportMemoryAllocateInfo = VkExportMemoryAllocateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @handleTypes@ is a bitmask of- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'- -- specifying one or more memory handle types the application /can/ export- -- from the resulting allocation. The application /can/ request multiple- -- handle types for the same allocation.- vkHandleTypes :: VkExternalMemoryHandleTypeFlags- }- deriving (Eq, Show)--instance Storable VkExportMemoryAllocateInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkExportMemoryAllocateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkExportMemoryAllocateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkExportMemoryAllocateInfo))- *> poke (ptr `plusPtr` 16) (vkHandleTypes (poked :: VkExportMemoryAllocateInfo))
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_memory_capabilities.hs
@@ -1,802 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities- ( VkExternalMemoryHandleTypeFlagBits(..)- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT- , VkExternalMemoryFeatureFlagBits(..)- , pattern VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT- , pattern VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT- , pattern VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO- , pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO- , pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES- , VK_LUID_SIZE- , pattern VK_LUID_SIZE- , vkGetPhysicalDeviceExternalBufferProperties- , VkExternalMemoryProperties(..)- , VkPhysicalDeviceExternalImageFormatInfo(..)- , VkExternalImageFormatProperties(..)- , VkPhysicalDeviceExternalBufferInfo(..)- , VkExternalBufferProperties(..)- , VkPhysicalDeviceIDProperties(..)- , VkExternalMemoryHandleTypeFlags- , VkExternalMemoryFeatureFlags- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Vector.Storable.Sized- ( Vector- )-import Data.Word- ( Word32- , Word8- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Buffer- ( VkBufferCreateFlags- , VkBufferUsageFlags- )-import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VK_UUID_SIZE- , VkPhysicalDevice- )----- ** VkExternalMemoryHandleTypeFlagBits---- | VkExternalMemoryHandleTypeFlagBits - Bit specifying external memory--- handle types------ = Description------ - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT@ specifies a POSIX--- file descriptor handle that has only limited valid usage outside of--- Vulkan and other compatible APIs. It /must/ be compatible with the--- POSIX system calls @dup@, @dup2@, @close@, and the non-standard--- system call @dup3@. Additionally, it /must/ be transportable over a--- socket using an @SCM_RIGHTS@ control message. It owns a reference to--- the underlying memory resource represented by its Vulkan memory--- object.------ - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT@ specifies an NT--- handle that has only limited valid usage outside of Vulkan and other--- compatible APIs. It /must/ be compatible with the functions--- @DuplicateHandle@, @CloseHandle@, @CompareObjectHandles@,--- @GetHandleInformation@, and @SetHandleInformation@. It owns a--- reference to the underlying memory resource represented by its--- Vulkan memory object.------ - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT@ specifies a--- global share handle that has only limited valid usage outside of--- Vulkan and other compatible APIs. It is not compatible with any--- native APIs. It does not own a reference to the underlying memory--- resource represented its Vulkan memory object, and will therefore--- become invalid when all Vulkan memory objects associated with it are--- destroyed.------ - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT@ specifies an NT--- handle returned by @IDXGIResource1@::@CreateSharedHandle@ referring--- to a Direct3D 10 or 11 texture resource. It owns a reference to the--- memory used by the Direct3D resource.------ - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT@ specifies a--- global share handle returned by @IDXGIResource@::@GetSharedHandle@--- referring to a Direct3D 10 or 11 texture resource. It does not own a--- reference to the underlying Direct3D resource, and will therefore--- become invalid when all Vulkan memory objects and Direct3D resources--- associated with it are destroyed.------ - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT@ specifies an NT--- handle returned by @ID3D12Device@::@CreateSharedHandle@ referring to--- a Direct3D 12 heap resource. It owns a reference to the resources--- used by the Direct3D heap.------ - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT@ specifies an NT--- handle returned by @ID3D12Device@::@CreateSharedHandle@ referring to--- a Direct3D 12 committed resource. It owns a reference to the memory--- used by the Direct3D resource.------ - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT@ specifies a--- host pointer returned by a host memory allocation command. It does--- not own a reference to the underlying memory resource, and will--- therefore become invalid if the host memory is freed.------ - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT@--- specifies a host pointer to /host mapped foreign memory/. It does--- not own a reference to the underlying memory resource, and will--- therefore become invalid if the foreign memory is unmapped or--- otherwise becomes no longer available.------ - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT@ is a file--- descriptor for a Linux dma_buf. It owns a reference to the--- underlying memory resource represented by its Vulkan memory object.------ - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID@--- specifies an @AHardwareBuffer@ object defined by the Android NDK.--- See [Android Hardware--- Buffers](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-external-android-hardware-buffer)--- for more details of this handle type.------ Some external memory handle types can only be shared within the same--- underlying physical device and\/or the same driver version, as defined--- in the following table:------ +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | Handle type | @VkPhysicalDeviceIDProperties@::@driverUUID@ | @VkPhysicalDeviceIDProperties@::@deviceUUID@ |--- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT@ | Must match | Must match |--- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT@ | Must match | Must match |--- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT@ | Must match | Must match |--- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT@ | Must match | Must match |--- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT@ | Must match | Must match |--- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT@ | Must match | Must match |--- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT@ | Must match | Must match |--- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT@ | No restriction | No restriction |--- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT@ | No restriction | No restriction |--- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT@ | No restriction | No restriction |--- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID@ | No restriction | No restriction |--- +----------------------------------------------------------------------+----------------------------------------------+----------------------------------------------+------ External memory handle types compatibility------ __Note__------ The above table does not restrict the drivers and devices with which--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT@ and--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT@--- /may/ be shared, as these handle types inherently mean memory that does--- not come from the same device, as they import memory from the host or a--- foreign device, respectively.------ __Note__------ Even though the above table does not restrict the drivers and devices--- with which @VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT@ /may/ be--- shared, query mechanisms exist in the Vulkan API that prevent the import--- of incompatible dma-bufs (such as--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.vkGetMemoryFdPropertiesKHR')--- and that prevent incompatible usage of dma-bufs (such as--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities.VkPhysicalDeviceExternalBufferInfoKHR'--- and--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities.VkPhysicalDeviceExternalImageFormatInfoKHR').------ = See Also------ 'VkExternalMemoryHandleTypeFlags',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.VkImportMemoryFdInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.VkImportMemoryHostPointerInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.VkImportMemoryWin32HandleInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.VkMemoryGetFdInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.VkMemoryGetWin32HandleInfoKHR',--- 'VkPhysicalDeviceExternalBufferInfo',--- 'VkPhysicalDeviceExternalImageFormatInfo',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd.vkGetMemoryFdPropertiesKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.vkGetMemoryHostPointerPropertiesEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.vkGetMemoryWin32HandlePropertiesKHR'-newtype VkExternalMemoryHandleTypeFlagBits = VkExternalMemoryHandleTypeFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkExternalMemoryHandleTypeFlagBits where- showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"- showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"- showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"- showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"- showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"- showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"- showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkExternalMemoryHandleTypeFlagBits 0x00000200) = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT"- showsPrec _ (VkExternalMemoryHandleTypeFlagBits 0x00000400) = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID"- showsPrec _ (VkExternalMemoryHandleTypeFlagBits 0x00000080) = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT"- showsPrec _ (VkExternalMemoryHandleTypeFlagBits 0x00000100) = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT"- showsPrec p (VkExternalMemoryHandleTypeFlagBits x) = showParen (p >= 11) (showString "VkExternalMemoryHandleTypeFlagBits " . showsPrec 11 x)--instance Read VkExternalMemoryHandleTypeFlagBits where- readPrec = parens ( choose [ ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT", pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT)- , ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT", pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT)- , ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT", pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT)- , ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT", pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT)- , ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT", pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT)- , ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT", pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT)- , ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT", pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT", pure (VkExternalMemoryHandleTypeFlagBits 0x00000200))- , ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID", pure (VkExternalMemoryHandleTypeFlagBits 0x00000400))- , ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT", pure (VkExternalMemoryHandleTypeFlagBits 0x00000080))- , ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT", pure (VkExternalMemoryHandleTypeFlagBits 0x00000100))- ] +++- prec 10 (do- expectP (Ident "VkExternalMemoryHandleTypeFlagBits")- v <- step readPrec- pure (VkExternalMemoryHandleTypeFlagBits v)- )- )---- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT :: VkExternalMemoryHandleTypeFlagBits-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = VkExternalMemoryHandleTypeFlagBits 0x00000001---- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT :: VkExternalMemoryHandleTypeFlagBits-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = VkExternalMemoryHandleTypeFlagBits 0x00000002---- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT :: VkExternalMemoryHandleTypeFlagBits-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = VkExternalMemoryHandleTypeFlagBits 0x00000004---- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT :: VkExternalMemoryHandleTypeFlagBits-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = VkExternalMemoryHandleTypeFlagBits 0x00000008---- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT :: VkExternalMemoryHandleTypeFlagBits-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = VkExternalMemoryHandleTypeFlagBits 0x00000010---- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT :: VkExternalMemoryHandleTypeFlagBits-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = VkExternalMemoryHandleTypeFlagBits 0x00000020---- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT :: VkExternalMemoryHandleTypeFlagBits-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = VkExternalMemoryHandleTypeFlagBits 0x00000040--- ** VkExternalMemoryFeatureFlagBits---- | VkExternalMemoryFeatureFlagBits - Bitmask specifying features of an--- external memory handle type------ = Description------ - @VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT@ specifies that--- images or buffers created with the specified parameters and handle--- type /must/ use the mechanisms defined in the--- @{html_spec_relative}#VK_NV_dedicated_allocation@ extension to--- create (or import) a dedicated allocation for the image or buffer.------ - @VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT@ specifies that handles--- of this type /can/ be exported from Vulkan memory objects.------ - @VK_INTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT@ specifies that handles--- of this type /can/ be imported as Vulkan memory objects.------ Because their semantics in external APIs roughly align with that of an--- image or buffer with a dedicated allocation in Vulkan, implementations--- are /required/ to report @VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT@--- for the following external handle types:------ - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT@------ - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT@------ - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT@------ - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID@--- for images only------ Implementations /must/ not report--- @VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT@ for buffers with--- external handle type--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID@.------ = See Also------ 'VkExternalMemoryFeatureFlags'-newtype VkExternalMemoryFeatureFlagBits = VkExternalMemoryFeatureFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkExternalMemoryFeatureFlagBits where- showsPrec _ VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = showString "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"- showsPrec _ VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = showString "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"- showsPrec _ VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = showString "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"- showsPrec p (VkExternalMemoryFeatureFlagBits x) = showParen (p >= 11) (showString "VkExternalMemoryFeatureFlagBits " . showsPrec 11 x)--instance Read VkExternalMemoryFeatureFlagBits where- readPrec = parens ( choose [ ("VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT", pure VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT)- , ("VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT", pure VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT)- , ("VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT", pure VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT)- ] +++- prec 10 (do- expectP (Ident "VkExternalMemoryFeatureFlagBits")- v <- step readPrec- pure (VkExternalMemoryFeatureFlagBits v)- )- )---- No documentation found for Nested "VkExternalMemoryFeatureFlagBits" "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"-pattern VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT :: VkExternalMemoryFeatureFlagBits-pattern VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = VkExternalMemoryFeatureFlagBits 0x00000001---- No documentation found for Nested "VkExternalMemoryFeatureFlagBits" "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"-pattern VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT :: VkExternalMemoryFeatureFlagBits-pattern VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = VkExternalMemoryFeatureFlagBits 0x00000002---- No documentation found for Nested "VkExternalMemoryFeatureFlagBits" "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"-pattern VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT :: VkExternalMemoryFeatureFlagBits-pattern VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = VkExternalMemoryFeatureFlagBits 0x00000004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = VkStructureType 1000071000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES"-pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = VkStructureType 1000071001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = VkStructureType 1000071002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES"-pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = VkStructureType 1000071003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = VkStructureType 1000071004--- No documentation found for TopLevel "VK_LUID_SIZE"-type VK_LUID_SIZE = 8--- No documentation found for Nested "Integral a => a" "VK_LUID_SIZE"-pattern VK_LUID_SIZE :: Integral a => a-pattern VK_LUID_SIZE = 8--- | vkGetPhysicalDeviceExternalBufferProperties - Query external handle--- types supported by buffers------ = Parameters------ - @physicalDevice@ is the physical device from which to query the--- buffer capabilities.------ - @pExternalBufferInfo@ points to an instance of the--- 'VkPhysicalDeviceExternalBufferInfo' structure, describing the--- parameters that would be consumed by--- 'Graphics.Vulkan.Core10.Buffer.vkCreateBuffer'.------ - @pExternalBufferProperties@ points to an instance of the--- 'VkExternalBufferProperties' structure in which capabilities are--- returned.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pExternalBufferInfo@ /must/ be a valid pointer to a valid--- @VkPhysicalDeviceExternalBufferInfo@ structure------ - @pExternalBufferProperties@ /must/ be a valid pointer to a--- @VkExternalBufferProperties@ structure------ = See Also------ 'VkExternalBufferProperties',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',--- 'VkPhysicalDeviceExternalBufferInfo'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceExternalBufferProperties" vkGetPhysicalDeviceExternalBufferProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalBufferInfo" ::: Ptr VkPhysicalDeviceExternalBufferInfo) -> ("pExternalBufferProperties" ::: Ptr VkExternalBufferProperties) -> IO ()--- | VkExternalMemoryProperties - Structure specifying external memory handle--- type capabilities------ = Description------ @compatibleHandleTypes@ /must/ include at least @handleType@. Inclusion--- of a handle type in @compatibleHandleTypes@ does not imply the values--- returned in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkImageFormatProperties2'--- will be the same when--- 'VkPhysicalDeviceExternalImageFormatInfo'::@handleType@ is set to that--- type. The application is responsible for querying the capabilities of--- all handle types intended for concurrent use in a single image and--- intersecting them to obtain the compatible set of capabilities.------ = See Also------ 'VkExternalBufferProperties', 'VkExternalImageFormatProperties',--- 'VkExternalMemoryFeatureFlags', 'VkExternalMemoryHandleTypeFlags'-data VkExternalMemoryProperties = VkExternalMemoryProperties- { -- | @externalMemoryFeatures@ is a bitmask of- -- 'VkExternalMemoryFeatureFlagBits' specifying the features of- -- @handleType@.- vkExternalMemoryFeatures :: VkExternalMemoryFeatureFlags- , -- | @exportFromImportedHandleTypes@ is a bitmask of- -- 'VkExternalMemoryHandleTypeFlagBits' specifying which types of imported- -- handle @handleType@ /can/ be exported from.- vkExportFromImportedHandleTypes :: VkExternalMemoryHandleTypeFlags- , -- | @compatibleHandleTypes@ is a bitmask of- -- 'VkExternalMemoryHandleTypeFlagBits' specifying handle types which /can/- -- be specified at the same time as @handleType@ when creating an image- -- compatible with external memory.- vkCompatibleHandleTypes :: VkExternalMemoryHandleTypeFlags- }- deriving (Eq, Show)--instance Storable VkExternalMemoryProperties where- sizeOf ~_ = 12- alignment ~_ = 4- peek ptr = VkExternalMemoryProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkExternalMemoryFeatures (poked :: VkExternalMemoryProperties))- *> poke (ptr `plusPtr` 4) (vkExportFromImportedHandleTypes (poked :: VkExternalMemoryProperties))- *> poke (ptr `plusPtr` 8) (vkCompatibleHandleTypes (poked :: VkExternalMemoryProperties))--- | VkPhysicalDeviceExternalImageFormatInfo - Structure specifying external--- image creation parameters------ = Description------ If @handleType@ is 0,--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2'--- will behave as if 'VkPhysicalDeviceExternalImageFormatInfo' was not--- present, and 'VkExternalImageFormatProperties' will be ignored.------ If @handleType@ is not compatible with the @format@, @type@, @tiling@,--- @usage@, and @flags@ specified in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceImageFormatInfo2',--- then--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2'--- returns @VK_ERROR_FORMAT_NOT_SUPPORTED@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO@------ - If @handleType@ is not @0@, @handleType@ /must/ be a valid--- 'VkExternalMemoryHandleTypeFlagBits' value------ = See Also------ 'VkExternalMemoryHandleTypeFlagBits',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceExternalImageFormatInfo = VkPhysicalDeviceExternalImageFormatInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @handleType@ is a 'VkExternalMemoryHandleTypeFlagBits' value specifying- -- the memory handle type that will be used with the memory associated with- -- the image.- vkHandleType :: VkExternalMemoryHandleTypeFlagBits- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceExternalImageFormatInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkPhysicalDeviceExternalImageFormatInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceExternalImageFormatInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceExternalImageFormatInfo))- *> poke (ptr `plusPtr` 16) (vkHandleType (poked :: VkPhysicalDeviceExternalImageFormatInfo))--- | VkExternalImageFormatProperties - Structure specifying supported--- external handle properties------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES@------ = See Also------ 'VkExternalMemoryProperties',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkExternalImageFormatProperties = VkExternalImageFormatProperties- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @externalMemoryProperties@ is an instance of the- -- 'VkExternalMemoryProperties' structure specifying various capabilities- -- of the external handle type when used with the specified image creation- -- parameters.- vkExternalMemoryProperties :: VkExternalMemoryProperties- }- deriving (Eq, Show)--instance Storable VkExternalImageFormatProperties where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkExternalImageFormatProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkExternalImageFormatProperties))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkExternalImageFormatProperties))- *> poke (ptr `plusPtr` 16) (vkExternalMemoryProperties (poked :: VkExternalImageFormatProperties))--- | VkPhysicalDeviceExternalBufferInfo - Structure specifying buffer--- creation parameters------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Buffer.VkBufferCreateFlagBits' values------ - @usage@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Buffer.VkBufferUsageFlagBits' values------ - @usage@ /must/ not be @0@------ - @handleType@ /must/ be a valid 'VkExternalMemoryHandleTypeFlagBits'--- value------ = See Also------ 'Graphics.Vulkan.Core10.Buffer.VkBufferCreateFlags',--- 'Graphics.Vulkan.Core10.Buffer.VkBufferUsageFlags',--- 'VkExternalMemoryHandleTypeFlagBits',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetPhysicalDeviceExternalBufferProperties',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities.vkGetPhysicalDeviceExternalBufferPropertiesKHR'-data VkPhysicalDeviceExternalBufferInfo = VkPhysicalDeviceExternalBufferInfo- { -- | @sType@ is the type of this structure- vkSType :: VkStructureType- , -- | @pNext@ is NULL or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is a bitmask of- -- 'Graphics.Vulkan.Core10.Buffer.VkBufferCreateFlagBits' describing- -- additional parameters of the buffer, corresponding to- -- 'Graphics.Vulkan.Core10.Buffer.VkBufferCreateInfo'::@flags@.- vkFlags :: VkBufferCreateFlags- , -- | @usage@ is a bitmask of- -- 'Graphics.Vulkan.Core10.Buffer.VkBufferUsageFlagBits' describing the- -- intended usage of the buffer, corresponding to- -- 'Graphics.Vulkan.Core10.Buffer.VkBufferCreateInfo'::@usage@.- vkUsage :: VkBufferUsageFlags- , -- | @handleType@ is a 'VkExternalMemoryHandleTypeFlagBits' value specifying- -- the memory handle type that will be used with the memory associated with- -- the buffer.- vkHandleType :: VkExternalMemoryHandleTypeFlagBits- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceExternalBufferInfo where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkPhysicalDeviceExternalBufferInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceExternalBufferInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceExternalBufferInfo))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPhysicalDeviceExternalBufferInfo))- *> poke (ptr `plusPtr` 20) (vkUsage (poked :: VkPhysicalDeviceExternalBufferInfo))- *> poke (ptr `plusPtr` 24) (vkHandleType (poked :: VkPhysicalDeviceExternalBufferInfo))--- | VkExternalBufferProperties - Structure specifying supported external--- handle capabilities------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES@------ - @pNext@ /must/ be @NULL@------ = See Also------ 'VkExternalMemoryProperties',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetPhysicalDeviceExternalBufferProperties',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities.vkGetPhysicalDeviceExternalBufferPropertiesKHR'-data VkExternalBufferProperties = VkExternalBufferProperties- { -- | @sType@ is the type of this structure- vkSType :: VkStructureType- , -- | @pNext@ is NULL or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @externalMemoryProperties@ is an instance of the- -- 'VkExternalMemoryProperties' structure specifying various capabilities- -- of the external handle type when used with the specified buffer creation- -- parameters.- vkExternalMemoryProperties :: VkExternalMemoryProperties- }- deriving (Eq, Show)--instance Storable VkExternalBufferProperties where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkExternalBufferProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkExternalBufferProperties))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkExternalBufferProperties))- *> poke (ptr `plusPtr` 16) (vkExternalMemoryProperties (poked :: VkExternalBufferProperties))--- | VkPhysicalDeviceIDProperties - Structure specifying IDs related to the--- physical device------ = Description------ @deviceUUID@ /must/ be immutable for a given device across instances,--- processes, driver APIs, driver versions, and system reboots.------ Applications /can/ compare the @driverUUID@ value across instance and--- process boundaries, and /can/ make similar queries in external APIs to--- determine whether they are capable of sharing memory objects and--- resources using them with the device.------ @deviceUUID@ and\/or @driverUUID@ /must/ be used to determine whether a--- particular external object can be shared between driver components,--- where such a restriction exists as defined in the compatibility table--- for the particular object type:------ - [External memory handle types--- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-memory-handle-types-compatibility)------ - [External semaphore handle types--- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility)------ - [External fence handle types--- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-fence-handle-types-compatibility)------ If @deviceLUIDValid@ is @VK_FALSE@, the contents of @deviceLUID@ and--- @deviceNodeMask@ are undefined. If @deviceLUIDValid@ is @VK_TRUE@ and--- Vulkan is running on the Windows operating system, the contents of--- @deviceLUID@ /can/ be cast to an @LUID@ object and /must/ be equal to--- the locally unique identifier of a @IDXGIAdapter1@ object that--- corresponds to @physicalDevice@. If @deviceLUIDValid@ is @VK_TRUE@,--- @deviceNodeMask@ /must/ contain exactly one bit. If Vulkan is running on--- an operating system that supports the Direct3D 12 API and--- @physicalDevice@ corresponds to an individual device in a linked device--- adapter, @deviceNodeMask@ identifies the Direct3D 12 node corresponding--- to @physicalDevice@. Otherwise, @deviceNodeMask@ /must/ be @1@.------ __Note__------ Although they have identical descriptions,--- 'VkPhysicalDeviceIDProperties'::@deviceUUID@ may differ from--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2'::@pipelineCacheUUID@.--- The former is intended to identify and correlate devices across API and--- driver boundaries, while the latter is used to identify a compatible--- device and driver combination to use when serializing and de-serializing--- pipeline state.------ __Note__------ While 'VkPhysicalDeviceIDProperties'::@deviceUUID@ is specified to--- remain consistent across driver versions and system reboots, it is not--- intended to be usable as a serializable persistent identifier for a--- device. It may change when a device is physically added to, removed--- from, or moved to a different connector in a system while that system is--- powered down. Further, there is no reasonable way to verify with--- conformance testing that a given device retains the same UUID in a given--- system across all driver versions supported in that system. While--- implementations should make every effort to report consistent device--- UUIDs across driver versions, applications should avoid relying on the--- persistence of this value for uses other than identifying compatible--- devices for external object sharing purposes.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES@------ = See Also------ @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceIDProperties = VkPhysicalDeviceIDProperties- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @deviceUUID@ is an array of size @VK_UUID_SIZE@, containing 8-bit values- -- that represent a universally unique identifier for the device.- vkDeviceUUID :: Vector VK_UUID_SIZE Word8- , -- | @driverUUID@ is an array of size @VK_UUID_SIZE@, containing 8-bit values- -- that represent a universally unique identifier for the driver build in- -- use by the device.- vkDriverUUID :: Vector VK_UUID_SIZE Word8- , -- | @deviceLUID@ is an array of size @VK_LUID_SIZE@, containing 8-bit values- -- that represent a locally unique identifier for the device.- vkDeviceLUID :: Vector VK_LUID_SIZE Word8- , -- | @deviceNodeMask@ is a bitfield identifying the node within a linked- -- device adapter corresponding to the device.- vkDeviceNodeMask :: Word32- , -- | @deviceLUIDValid@ is a boolean value that will be @VK_TRUE@ if- -- @deviceLUID@ contains a valid LUID and @deviceNodeMask@ contains a valid- -- node mask, and @VK_FALSE@ if they do not.- vkDeviceLUIDValid :: VkBool32- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceIDProperties where- sizeOf ~_ = 64- alignment ~_ = 8- peek ptr = VkPhysicalDeviceIDProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 60)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceIDProperties))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceIDProperties))- *> poke (ptr `plusPtr` 16) (vkDeviceUUID (poked :: VkPhysicalDeviceIDProperties))- *> poke (ptr `plusPtr` 32) (vkDriverUUID (poked :: VkPhysicalDeviceIDProperties))- *> poke (ptr `plusPtr` 48) (vkDeviceLUID (poked :: VkPhysicalDeviceIDProperties))- *> poke (ptr `plusPtr` 56) (vkDeviceNodeMask (poked :: VkPhysicalDeviceIDProperties))- *> poke (ptr `plusPtr` 60) (vkDeviceLUIDValid (poked :: VkPhysicalDeviceIDProperties))--- | VkExternalMemoryHandleTypeFlags - Bitmask of--- VkExternalMemoryHandleTypeFlagBits------ = Description------ @VkExternalMemoryHandleTypeFlags@ is a bitmask type for setting a mask--- of zero or more 'VkExternalMemoryHandleTypeFlagBits'.------ = See Also------ 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExportMemoryAllocateInfo',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryBufferCreateInfo',--- 'VkExternalMemoryHandleTypeFlagBits',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExternalMemoryImageCreateInfo',--- 'VkExternalMemoryProperties'-type VkExternalMemoryHandleTypeFlags = VkExternalMemoryHandleTypeFlagBits--- | VkExternalMemoryFeatureFlags - Bitmask of--- VkExternalMemoryFeatureFlagBits------ = Description------ @VkExternalMemoryFeatureFlags@ is a bitmask type for setting a mask of--- zero or more 'VkExternalMemoryFeatureFlagBits'.------ = See Also------ 'VkExternalMemoryFeatureFlagBits', 'VkExternalMemoryProperties'-type VkExternalMemoryFeatureFlags = VkExternalMemoryFeatureFlagBits
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_semaphore.hs
@@ -1,151 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore- ( VkSemaphoreImportFlagBits(..)- , pattern VK_SEMAPHORE_IMPORT_TEMPORARY_BIT- , pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO- , VkExportSemaphoreCreateInfo(..)- , VkSemaphoreImportFlags- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities- ( VkExternalSemaphoreHandleTypeFlags- )----- ** VkSemaphoreImportFlagBits---- | VkSemaphoreImportFlagBits - Bitmask specifying additional parameters of--- semaphore payload import------ = Description------ These bits have the following meanings:------ - @VK_SEMAPHORE_IMPORT_TEMPORARY_BIT@ specifies that the semaphore--- payload will be imported only temporarily, as described in--- [Importing Semaphore--- Payloads](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-importing),--- regardless of the permanence of @handleType@.------ = See Also------ 'VkSemaphoreImportFlags'-newtype VkSemaphoreImportFlagBits = VkSemaphoreImportFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkSemaphoreImportFlagBits where- showsPrec _ VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = showString "VK_SEMAPHORE_IMPORT_TEMPORARY_BIT"- showsPrec p (VkSemaphoreImportFlagBits x) = showParen (p >= 11) (showString "VkSemaphoreImportFlagBits " . showsPrec 11 x)--instance Read VkSemaphoreImportFlagBits where- readPrec = parens ( choose [ ("VK_SEMAPHORE_IMPORT_TEMPORARY_BIT", pure VK_SEMAPHORE_IMPORT_TEMPORARY_BIT)- ] +++- prec 10 (do- expectP (Ident "VkSemaphoreImportFlagBits")- v <- step readPrec- pure (VkSemaphoreImportFlagBits v)- )- )---- No documentation found for Nested "VkSemaphoreImportFlagBits" "VK_SEMAPHORE_IMPORT_TEMPORARY_BIT"-pattern VK_SEMAPHORE_IMPORT_TEMPORARY_BIT :: VkSemaphoreImportFlagBits-pattern VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = VkSemaphoreImportFlagBits 0x00000001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = VkStructureType 1000077000--- | VkExportSemaphoreCreateInfo - Structure specifying handle types that can--- be exported from a semaphore------ == Valid Usage------ - The bits in @handleTypes@ /must/ be supported and compatible, as--- reported by--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreProperties'.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO@------ - @handleTypes@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreHandleTypeFlagBits'--- values------ = See Also------ 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreHandleTypeFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkExportSemaphoreCreateInfo = VkExportSemaphoreCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @handleTypes@ is a bitmask of- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreHandleTypeFlagBits'- -- specifying one or more semaphore handle types the application /can/- -- export from the resulting semaphore. The application /can/ request- -- multiple handle types for the same semaphore.- vkHandleTypes :: VkExternalSemaphoreHandleTypeFlags- }- deriving (Eq, Show)--instance Storable VkExportSemaphoreCreateInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkExportSemaphoreCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkExportSemaphoreCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkExportSemaphoreCreateInfo))- *> poke (ptr `plusPtr` 16) (vkHandleTypes (poked :: VkExportSemaphoreCreateInfo))--- | VkSemaphoreImportFlags - Bitmask of VkSemaphoreImportFlagBits------ = Description------ @VkSemaphoreImportFlags@ is a bitmask type for setting a mask of zero or--- more 'VkSemaphoreImportFlagBits'.------ = See Also------ 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.VkImportSemaphoreFdInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.VkImportSemaphoreWin32HandleInfoKHR',--- 'VkSemaphoreImportFlagBits'-type VkSemaphoreImportFlags = VkSemaphoreImportFlagBits
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_external_semaphore_capabilities.hs
@@ -1,396 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities- ( VkExternalSemaphoreHandleTypeFlagBits(..)- , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT- , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT- , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT- , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT- , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT- , VkExternalSemaphoreFeatureFlagBits(..)- , pattern VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT- , pattern VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO- , pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES- , vkGetPhysicalDeviceExternalSemaphoreProperties- , VkPhysicalDeviceExternalSemaphoreInfo(..)- , VkExternalSemaphoreProperties(..)- , VkExternalSemaphoreHandleTypeFlags- , VkExternalSemaphoreFeatureFlags- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkPhysicalDevice- )----- ** VkExternalSemaphoreHandleTypeFlagBits---- | VkExternalSemaphoreHandleTypeFlagBits - Bitmask of valid external--- semaphore handle types------ = Description------ - @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT@ specifies a POSIX--- file descriptor handle that has only limited valid usage outside of--- Vulkan and other compatible APIs. It /must/ be compatible with the--- POSIX system calls @dup@, @dup2@, @close@, and the non-standard--- system call @dup3@. Additionally, it /must/ be transportable over a--- socket using an @SCM_RIGHTS@ control message. It owns a reference to--- the underlying synchronization primitive represented by its Vulkan--- semaphore object.------ - @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT@ specifies an NT--- handle that has only limited valid usage outside of Vulkan and other--- compatible APIs. It /must/ be compatible with the functions--- @DuplicateHandle@, @CloseHandle@, @CompareObjectHandles@,--- @GetHandleInformation@, and @SetHandleInformation@. It owns a--- reference to the underlying synchronization primitive represented by--- its Vulkan semaphore object.------ - @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT@ specifies a--- global share handle that has only limited valid usage outside of--- Vulkan and other compatible APIs. It is not compatible with any--- native APIs. It does not own a reference to the underlying--- synchronization primitive represented its Vulkan semaphore object,--- and will therefore become invalid when all Vulkan semaphore objects--- associated with it are destroyed.------ - @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT@ specifies an NT--- handle returned by @ID3D12Device@::@CreateSharedHandle@ referring to--- a Direct3D 12 fence. It owns a reference to the underlying--- synchronization primitive associated with the Direct3D fence.------ - @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT@ specifies a POSIX--- file descriptor handle to a Linux Sync File or Android Fence object.--- It can be used with any native API accepting a valid sync file or--- fence as input. It owns a reference to the underlying--- synchronization primitive associated with the file descriptor.--- Implementations which support importing this handle type /must/--- accept any type of sync or fence FD supported by the native system--- they are running on.------ __Note__------ Handles of type @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT@--- generated by the implementation may represent either Linux Sync Files or--- Android Fences at the implementation’s discretion. Applications /should/--- only use operations defined for both types of file descriptors, unless--- they know via means external to Vulkan the type of the file descriptor,--- or are prepared to deal with the system-defined operation failures--- resulting from using the wrong type.------ Some external semaphore handle types can only be shared within the same--- underlying physical device and\/or the same driver version, as defined--- in the following table:------ +----------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | Handle type | @VkPhysicalDeviceIDProperties@::@driverUUID@ | @VkPhysicalDeviceIDProperties@::@deviceUUID@ |--- +----------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT@ | Must match | Must match |--- +----------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT@ | Must match | Must match |--- +----------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT@ | Must match | Must match |--- +----------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT@ | Must match | Must match |--- +----------------------------------------------------------+----------------------------------------------+----------------------------------------------+--- | @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT@ | No restriction | No restriction |--- +----------------------------------------------------------+----------------------------------------------+----------------------------------------------+------ External semaphore handle types compatibility------ = See Also------ 'VkExternalSemaphoreHandleTypeFlags',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.VkImportSemaphoreFdInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.VkImportSemaphoreWin32HandleInfoKHR',--- 'VkPhysicalDeviceExternalSemaphoreInfo',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd.VkSemaphoreGetFdInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32.VkSemaphoreGetWin32HandleInfoKHR'-newtype VkExternalSemaphoreHandleTypeFlagBits = VkExternalSemaphoreHandleTypeFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkExternalSemaphoreHandleTypeFlagBits where- showsPrec _ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = showString "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"- showsPrec _ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = showString "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"- showsPrec _ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = showString "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"- showsPrec _ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = showString "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"- showsPrec _ VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = showString "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"- showsPrec p (VkExternalSemaphoreHandleTypeFlagBits x) = showParen (p >= 11) (showString "VkExternalSemaphoreHandleTypeFlagBits " . showsPrec 11 x)--instance Read VkExternalSemaphoreHandleTypeFlagBits where- readPrec = parens ( choose [ ("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT", pure VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT)- , ("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT", pure VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT)- , ("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT", pure VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT)- , ("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT", pure VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT)- , ("VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT", pure VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT)- ] +++- prec 10 (do- expectP (Ident "VkExternalSemaphoreHandleTypeFlagBits")- v <- step readPrec- pure (VkExternalSemaphoreHandleTypeFlagBits v)- )- )---- No documentation found for Nested "VkExternalSemaphoreHandleTypeFlagBits" "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT :: VkExternalSemaphoreHandleTypeFlagBits-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = VkExternalSemaphoreHandleTypeFlagBits 0x00000001---- No documentation found for Nested "VkExternalSemaphoreHandleTypeFlagBits" "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT :: VkExternalSemaphoreHandleTypeFlagBits-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = VkExternalSemaphoreHandleTypeFlagBits 0x00000002---- No documentation found for Nested "VkExternalSemaphoreHandleTypeFlagBits" "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT :: VkExternalSemaphoreHandleTypeFlagBits-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = VkExternalSemaphoreHandleTypeFlagBits 0x00000004---- No documentation found for Nested "VkExternalSemaphoreHandleTypeFlagBits" "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT :: VkExternalSemaphoreHandleTypeFlagBits-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = VkExternalSemaphoreHandleTypeFlagBits 0x00000008---- No documentation found for Nested "VkExternalSemaphoreHandleTypeFlagBits" "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT :: VkExternalSemaphoreHandleTypeFlagBits-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = VkExternalSemaphoreHandleTypeFlagBits 0x00000010--- ** VkExternalSemaphoreFeatureFlagBits---- | VkExternalSemaphoreFeatureFlagBits - Bitfield describing features of an--- external semaphore handle type------ = See Also------ 'VkExternalSemaphoreFeatureFlags'-newtype VkExternalSemaphoreFeatureFlagBits = VkExternalSemaphoreFeatureFlagBits VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkExternalSemaphoreFeatureFlagBits where- showsPrec _ VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = showString "VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"- showsPrec _ VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = showString "VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"- showsPrec p (VkExternalSemaphoreFeatureFlagBits x) = showParen (p >= 11) (showString "VkExternalSemaphoreFeatureFlagBits " . showsPrec 11 x)--instance Read VkExternalSemaphoreFeatureFlagBits where- readPrec = parens ( choose [ ("VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT", pure VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT)- , ("VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT", pure VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT)- ] +++- prec 10 (do- expectP (Ident "VkExternalSemaphoreFeatureFlagBits")- v <- step readPrec- pure (VkExternalSemaphoreFeatureFlagBits v)- )- )---- | @VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT@ specifies that handles of--- this type /can/ be exported from Vulkan semaphore objects.-pattern VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT :: VkExternalSemaphoreFeatureFlagBits-pattern VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = VkExternalSemaphoreFeatureFlagBits 0x00000001---- | @VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT@ specifies that handles of--- this type /can/ be imported as Vulkan semaphore objects.-pattern VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT :: VkExternalSemaphoreFeatureFlagBits-pattern VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = VkExternalSemaphoreFeatureFlagBits 0x00000002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = VkStructureType 1000076000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES"-pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = VkStructureType 1000076001--- | vkGetPhysicalDeviceExternalSemaphoreProperties - Function for querying--- external semaphore handle capabilities.------ = Parameters------ - @physicalDevice@ is the physical device from which to query the--- semaphore capabilities.------ - @pExternalSemaphoreInfo@ points to an instance of the--- 'VkPhysicalDeviceExternalSemaphoreInfo' structure, describing the--- parameters that would be consumed by--- 'Graphics.Vulkan.Core10.QueueSemaphore.vkCreateSemaphore'.------ - @pExternalSemaphoreProperties@ points to an instance of the--- 'VkExternalSemaphoreProperties' structure in which capabilities are--- returned.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pExternalSemaphoreInfo@ /must/ be a valid pointer to a valid--- @VkPhysicalDeviceExternalSemaphoreInfo@ structure------ - @pExternalSemaphoreProperties@ /must/ be a valid pointer to a--- @VkExternalSemaphoreProperties@ structure------ = See Also------ 'VkExternalSemaphoreProperties',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',--- 'VkPhysicalDeviceExternalSemaphoreInfo'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceExternalSemaphoreProperties" vkGetPhysicalDeviceExternalSemaphoreProperties :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalSemaphoreInfo" ::: Ptr VkPhysicalDeviceExternalSemaphoreInfo) -> ("pExternalSemaphoreProperties" ::: Ptr VkExternalSemaphoreProperties) -> IO ()--- | VkPhysicalDeviceExternalSemaphoreInfo - Structure specifying semaphore--- creation parameters.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO@------ - @pNext@ /must/ be @NULL@------ - @handleType@ /must/ be a valid--- 'VkExternalSemaphoreHandleTypeFlagBits' value------ = See Also------ 'VkExternalSemaphoreHandleTypeFlagBits',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetPhysicalDeviceExternalSemaphoreProperties',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_capabilities.vkGetPhysicalDeviceExternalSemaphorePropertiesKHR'-data VkPhysicalDeviceExternalSemaphoreInfo = VkPhysicalDeviceExternalSemaphoreInfo- { -- | @sType@ is the type of this structure- vkSType :: VkStructureType- , -- | @pNext@ is NULL or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @handleType@ is a 'VkExternalSemaphoreHandleTypeFlagBits' value- -- specifying the external semaphore handle type for which capabilities- -- will be returned.- vkHandleType :: VkExternalSemaphoreHandleTypeFlagBits- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceExternalSemaphoreInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkPhysicalDeviceExternalSemaphoreInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceExternalSemaphoreInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceExternalSemaphoreInfo))- *> poke (ptr `plusPtr` 16) (vkHandleType (poked :: VkPhysicalDeviceExternalSemaphoreInfo))--- | VkExternalSemaphoreProperties - Structure describing supported external--- semaphore handle features------ = Description------ If @handleType@ is not supported by the implementation, then--- 'VkExternalSemaphoreProperties'::@externalSemaphoreFeatures@ will be set--- to zero.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES@------ - @pNext@ /must/ be @NULL@------ = See Also------ 'VkExternalSemaphoreFeatureFlags', 'VkExternalSemaphoreHandleTypeFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetPhysicalDeviceExternalSemaphoreProperties',--- 'Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_capabilities.vkGetPhysicalDeviceExternalSemaphorePropertiesKHR'-data VkExternalSemaphoreProperties = VkExternalSemaphoreProperties- { -- No documentation found for Nested "VkExternalSemaphoreProperties" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkExternalSemaphoreProperties" "pNext"- vkPNext :: Ptr ()- , -- | @exportFromImportedHandleTypes@ is a bitmask of- -- 'VkExternalSemaphoreHandleTypeFlagBits' specifying which types of- -- imported handle @handleType@ /can/ be exported from.- vkExportFromImportedHandleTypes :: VkExternalSemaphoreHandleTypeFlags- , -- | @compatibleHandleTypes@ is a bitmask of- -- 'VkExternalSemaphoreHandleTypeFlagBits' specifying handle types which- -- /can/ be specified at the same time as @handleType@ when creating a- -- semaphore.- vkCompatibleHandleTypes :: VkExternalSemaphoreHandleTypeFlags- , -- | @externalSemaphoreFeatures@ is a bitmask of- -- 'VkExternalSemaphoreFeatureFlagBits' describing the features of- -- @handleType@.- vkExternalSemaphoreFeatures :: VkExternalSemaphoreFeatureFlags- }- deriving (Eq, Show)--instance Storable VkExternalSemaphoreProperties where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkExternalSemaphoreProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkExternalSemaphoreProperties))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkExternalSemaphoreProperties))- *> poke (ptr `plusPtr` 16) (vkExportFromImportedHandleTypes (poked :: VkExternalSemaphoreProperties))- *> poke (ptr `plusPtr` 20) (vkCompatibleHandleTypes (poked :: VkExternalSemaphoreProperties))- *> poke (ptr `plusPtr` 24) (vkExternalSemaphoreFeatures (poked :: VkExternalSemaphoreProperties))--- | VkExternalSemaphoreHandleTypeFlags - Bitmask of--- VkExternalSemaphoreHandleTypeFlagBits------ = Description------ @VkExternalSemaphoreHandleTypeFlags@ is a bitmask type for setting a--- mask of zero or more 'VkExternalSemaphoreHandleTypeFlagBits'.------ = See Also------ 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore.VkExportSemaphoreCreateInfo',--- 'VkExternalSemaphoreHandleTypeFlagBits', 'VkExternalSemaphoreProperties'-type VkExternalSemaphoreHandleTypeFlags = VkExternalSemaphoreHandleTypeFlagBits--- | VkExternalSemaphoreFeatureFlags - Bitmask of--- VkExternalSemaphoreFeatureFlagBitsKHR------ = Description------ @VkExternalSemaphoreFeatureFlags@ is a bitmask type for setting a mask--- of zero or more 'VkExternalSemaphoreFeatureFlagBits'.------ = See Also------ 'VkExternalSemaphoreFeatureFlagBits', 'VkExternalSemaphoreProperties'-type VkExternalSemaphoreFeatureFlags = VkExternalSemaphoreFeatureFlagBits
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_get_memory_requirements2.hs
@@ -1,390 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2- ( pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2- , pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2- , pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2- , pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2- , pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2- , vkGetBufferMemoryRequirements2- , vkGetImageMemoryRequirements2- , vkGetImageSparseMemoryRequirements2- , VkBufferMemoryRequirementsInfo2(..)- , VkImageMemoryRequirementsInfo2(..)- , VkImageSparseMemoryRequirementsInfo2(..)- , VkMemoryRequirements2(..)- , VkSparseImageMemoryRequirements2(..)- ) where--import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- )-import Graphics.Vulkan.Core10.MemoryManagement- ( VkMemoryRequirements(..)- , VkBuffer- , VkImage- )-import Graphics.Vulkan.Core10.SparseResourceMemoryManagement- ( VkSparseImageMemoryRequirements(..)- )----- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2"-pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 :: VkStructureType-pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = VkStructureType 1000146000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2"-pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = VkStructureType 1000146001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"-pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = VkStructureType 1000146002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2"-pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 :: VkStructureType-pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = VkStructureType 1000146003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 :: VkStructureType-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = VkStructureType 1000146004--- | vkGetBufferMemoryRequirements2 - Returns the memory requirements for--- specified Vulkan object------ = Parameters------ - @device@ is the logical device that owns the buffer.------ - @pInfo@ is a pointer to an instance of the--- @VkBufferMemoryRequirementsInfo2@ structure containing parameters--- required for the memory requirements query.------ - @pMemoryRequirements@ points to an instance of the--- 'VkMemoryRequirements2' structure in which the memory requirements--- of the buffer object are returned.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pInfo@ /must/ be a valid pointer to a valid--- @VkBufferMemoryRequirementsInfo2@ structure------ - @pMemoryRequirements@ /must/ be a valid pointer to a--- @VkMemoryRequirements2@ structure------ = See Also------ 'VkBufferMemoryRequirementsInfo2',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkMemoryRequirements2'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetBufferMemoryRequirements2" vkGetBufferMemoryRequirements2 :: ("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkBufferMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ()--- | vkGetImageMemoryRequirements2 - Returns the memory requirements for--- specified Vulkan object------ = Parameters------ - @device@ is the logical device that owns the image.------ - @pInfo@ is a pointer to an instance of the--- @VkImageMemoryRequirementsInfo2@ structure containing parameters--- required for the memory requirements query.------ - @pMemoryRequirements@ points to an instance of the--- 'VkMemoryRequirements2' structure in which the memory requirements--- of the image object are returned.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pInfo@ /must/ be a valid pointer to a valid--- @VkImageMemoryRequirementsInfo2@ structure------ - @pMemoryRequirements@ /must/ be a valid pointer to a--- @VkMemoryRequirements2@ structure------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkImageMemoryRequirementsInfo2', 'VkMemoryRequirements2'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetImageMemoryRequirements2" vkGetImageMemoryRequirements2 :: ("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ()--- | vkGetImageSparseMemoryRequirements2 - Query the memory requirements for--- a sparse image------ = Parameters------ - @device@ is the logical device that owns the image.------ - @pInfo@ is a pointer to an instance of the--- @VkImageSparseMemoryRequirementsInfo2@ structure containing--- parameters required for the memory requirements query.------ - @pSparseMemoryRequirementCount@ is a pointer to an integer related--- to the number of sparse memory requirements available or queried, as--- described below.------ - @pSparseMemoryRequirements@ is either @NULL@ or a pointer to an--- array of @VkSparseImageMemoryRequirements2@ structures.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pInfo@ /must/ be a valid pointer to a valid--- @VkImageSparseMemoryRequirementsInfo2@ structure------ - @pSparseMemoryRequirementCount@ /must/ be a valid pointer to a--- @uint32_t@ value------ - If the value referenced by @pSparseMemoryRequirementCount@ is not--- @0@, and @pSparseMemoryRequirements@ is not @NULL@,--- @pSparseMemoryRequirements@ /must/ be a valid pointer to an array of--- @pSparseMemoryRequirementCount@ @VkSparseImageMemoryRequirements2@--- structures------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkImageSparseMemoryRequirementsInfo2',--- 'VkSparseImageMemoryRequirements2'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetImageSparseMemoryRequirements2" vkGetImageSparseMemoryRequirements2 :: ("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageSparseMemoryRequirementsInfo2) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements2) -> IO ()--- | VkBufferMemoryRequirementsInfo2 - (None)------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2@------ - @pNext@ /must/ be @NULL@------ - @buffer@ /must/ be a valid @VkBuffer@ handle------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetBufferMemoryRequirements2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.vkGetBufferMemoryRequirements2KHR'-data VkBufferMemoryRequirementsInfo2 = VkBufferMemoryRequirementsInfo2- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @buffer@ is the buffer to query.- vkBuffer :: VkBuffer- }- deriving (Eq, Show)--instance Storable VkBufferMemoryRequirementsInfo2 where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkBufferMemoryRequirementsInfo2 <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkBufferMemoryRequirementsInfo2))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkBufferMemoryRequirementsInfo2))- *> poke (ptr `plusPtr` 16) (vkBuffer (poked :: VkBufferMemoryRequirementsInfo2))--- | VkImageMemoryRequirementsInfo2 - (None)------ == Valid Usage------ - If @image@ was created with a /multi-planar/ format and the--- @VK_IMAGE_CREATE_DISJOINT_BIT@ flag, there /must/ be a--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkImagePlaneMemoryRequirementsInfo'--- in the @pNext@ chain of the 'VkImageMemoryRequirementsInfo2'--- structure------ - If @image@ was not created with the @VK_IMAGE_CREATE_DISJOINT_BIT@--- flag, there /must/ not be a--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkImagePlaneMemoryRequirementsInfo'--- in the @pNext@ chain of the 'VkImageMemoryRequirementsInfo2'--- structure------ - If @image@ was created with a single-plane format, there /must/ not--- be a--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkImagePlaneMemoryRequirementsInfo'--- in the @pNext@ chain of the 'VkImageMemoryRequirementsInfo2'--- structure------ - If @image@ was created with the--- VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID--- external memory handle type, then @image@ /must/ be bound to memory.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2@------ - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkImagePlaneMemoryRequirementsInfo'------ - @image@ /must/ be a valid @VkImage@ handle------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetImageMemoryRequirements2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2KHR'-data VkImageMemoryRequirementsInfo2 = VkImageMemoryRequirementsInfo2- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @image@ is the image to query.- vkImage :: VkImage- }- deriving (Eq, Show)--instance Storable VkImageMemoryRequirementsInfo2 where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkImageMemoryRequirementsInfo2 <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkImageMemoryRequirementsInfo2))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImageMemoryRequirementsInfo2))- *> poke (ptr `plusPtr` 16) (vkImage (poked :: VkImageMemoryRequirementsInfo2))--- | VkImageSparseMemoryRequirementsInfo2 - (None)------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2@------ - @pNext@ /must/ be @NULL@------ - @image@ /must/ be a valid @VkImage@ handle------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetImageSparseMemoryRequirements2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.vkGetImageSparseMemoryRequirements2KHR'-data VkImageSparseMemoryRequirementsInfo2 = VkImageSparseMemoryRequirementsInfo2- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @image@ is the image to query.- vkImage :: VkImage- }- deriving (Eq, Show)--instance Storable VkImageSparseMemoryRequirementsInfo2 where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkImageSparseMemoryRequirementsInfo2 <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkImageSparseMemoryRequirementsInfo2))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImageSparseMemoryRequirementsInfo2))- *> poke (ptr `plusPtr` 16) (vkImage (poked :: VkImageSparseMemoryRequirementsInfo2))--- | VkMemoryRequirements2 - Structure specifying memory requirements------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2@------ - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation.VkMemoryDedicatedRequirements'------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkMemoryRequirements',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetBufferMemoryRequirements2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.vkGetBufferMemoryRequirements2KHR',--- 'vkGetImageMemoryRequirements2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.vkGetImageMemoryRequirements2KHR'-data VkMemoryRequirements2 = VkMemoryRequirements2- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @memoryRequirements@ is a structure of type- -- 'Graphics.Vulkan.Core10.MemoryManagement.VkMemoryRequirements'- -- describing the memory requirements of the resource.- vkMemoryRequirements :: VkMemoryRequirements- }- deriving (Eq, Show)--instance Storable VkMemoryRequirements2 where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkMemoryRequirements2 <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkMemoryRequirements2))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkMemoryRequirements2))- *> poke (ptr `plusPtr` 16) (vkMemoryRequirements (poked :: VkMemoryRequirements2))--- | VkSparseImageMemoryRequirements2 - (None)------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2@------ - @pNext@ /must/ be @NULL@------ = See Also------ 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseImageMemoryRequirements',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetImageSparseMemoryRequirements2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2.vkGetImageSparseMemoryRequirements2KHR'-data VkSparseImageMemoryRequirements2 = VkSparseImageMemoryRequirements2- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @memoryRequirements@ is a structure of type- -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseImageMemoryRequirements'- -- describing the memory requirements of the sparse image.- vkMemoryRequirements :: VkSparseImageMemoryRequirements- }- deriving (Eq, Show)--instance Storable VkSparseImageMemoryRequirements2 where- sizeOf ~_ = 64- alignment ~_ = 8- peek ptr = VkSparseImageMemoryRequirements2 <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkSparseImageMemoryRequirements2))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkSparseImageMemoryRequirements2))- *> poke (ptr `plusPtr` 16) (vkMemoryRequirements (poked :: VkSparseImageMemoryRequirements2))
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_get_physical_device_properties2.hs
@@ -1,913 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2- ( pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2- , pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2- , pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2- , pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2- , pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2- , vkGetPhysicalDeviceFeatures2- , vkGetPhysicalDeviceProperties2- , vkGetPhysicalDeviceFormatProperties2- , vkGetPhysicalDeviceImageFormatProperties2- , vkGetPhysicalDeviceQueueFamilyProperties2- , vkGetPhysicalDeviceMemoryProperties2- , vkGetPhysicalDeviceSparseImageFormatProperties2- , VkPhysicalDeviceFeatures2(..)- , VkPhysicalDeviceProperties2(..)- , VkFormatProperties2(..)- , VkImageFormatProperties2(..)- , VkPhysicalDeviceImageFormatInfo2(..)- , VkQueueFamilyProperties2(..)- , VkPhysicalDeviceMemoryProperties2(..)- , VkSparseImageFormatProperties2(..)- , VkPhysicalDeviceSparseImageFormatInfo2(..)- ) where--import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkFormat(..)- , VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkFormatProperties(..)- , VkImageFormatProperties(..)- , VkImageTiling(..)- , VkImageType(..)- , VkPhysicalDeviceFeatures(..)- , VkPhysicalDeviceMemoryProperties(..)- , VkPhysicalDeviceProperties(..)- , VkQueueFamilyProperties(..)- , VkSampleCountFlagBits(..)- , VkImageCreateFlags- , VkImageUsageFlags- , VkPhysicalDevice- )-import Graphics.Vulkan.Core10.SparseResourceMemoryManagement- ( VkSparseImageFormatProperties(..)- )----- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = VkStructureType 1000059000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = VkStructureType 1000059001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2"-pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 :: VkStructureType-pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = VkStructureType 1000059002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2"-pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = VkStructureType 1000059003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = VkStructureType 1000059004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2"-pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 :: VkStructureType-pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = VkStructureType 1000059005--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = VkStructureType 1000059006--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2"-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 :: VkStructureType-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = VkStructureType 1000059007--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = VkStructureType 1000059008--- | vkGetPhysicalDeviceFeatures2 - Reports capabilities of a physical device------ = Parameters------ - @physicalDevice@ is the physical device from which to query the--- supported features.------ - @pFeatures@ is a pointer to a 'VkPhysicalDeviceFeatures2' structure--- in which the physical device features are returned.------ = Description------ Each structure in @pFeatures@ and its @pNext@ chain contain members--- corresponding to fine-grained features. @vkGetPhysicalDeviceFeatures2@--- writes each member to a boolean value indicating whether that feature is--- supported.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pFeatures@ /must/ be a valid pointer to a--- @VkPhysicalDeviceFeatures2@ structure------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',--- 'VkPhysicalDeviceFeatures2'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceFeatures2" vkGetPhysicalDeviceFeatures2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures2) -> IO ()--- | vkGetPhysicalDeviceProperties2 - Returns properties of a physical device------ = Parameters------ - @physicalDevice@ is the handle to the physical device whose--- properties will be queried.------ - @pProperties@ points to an instance of the--- 'VkPhysicalDeviceProperties2' structure, that will be filled with--- returned information.------ = Description------ Each structure in @pProperties@ and its @pNext@ chain contain members--- corresponding to properties or implementation-dependent limits.--- @vkGetPhysicalDeviceProperties2@ writes each member to a value--- indicating the value of that property or limit.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pProperties@ /must/ be a valid pointer to a--- @VkPhysicalDeviceProperties2@ structure------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',--- 'VkPhysicalDeviceProperties2'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceProperties2" vkGetPhysicalDeviceProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties2) -> IO ()--- | vkGetPhysicalDeviceFormatProperties2 - Lists physical device’s format--- capabilities------ = Parameters------ - @physicalDevice@ is the physical device from which to query the--- format properties.------ - @format@ is the format whose properties are queried.------ - @pFormatProperties@ is a pointer to a 'VkFormatProperties2'--- structure in which physical device properties for @format@ are--- returned.------ = Description------ @vkGetPhysicalDeviceFormatProperties2@ behaves similarly to--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceFormatProperties',--- with the ability to return extended information in a @pNext@ chain of--- output structures.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'--- value------ - @pFormatProperties@ /must/ be a valid pointer to a--- @VkFormatProperties2@ structure------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkFormat', 'VkFormatProperties2',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceFormatProperties2" vkGetPhysicalDeviceFormatProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties2) -> IO ()--- | vkGetPhysicalDeviceImageFormatProperties2 - Lists physical device’s--- image format capabilities------ = Parameters------ - @physicalDevice@ is the physical device from which to query the--- image capabilities.------ - @pImageFormatInfo@ points to an instance of the--- 'VkPhysicalDeviceImageFormatInfo2' structure, describing the--- parameters that would be consumed by--- 'Graphics.Vulkan.Core10.Image.vkCreateImage'.------ - @pImageFormatProperties@ points to an instance of the--- 'VkImageFormatProperties2' structure in which capabilities are--- returned.------ = Description------ @vkGetPhysicalDeviceImageFormatProperties2@ behaves similarly to--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceImageFormatProperties',--- with the ability to return extended information in a @pNext@ chain of--- output structures.------ == Valid Usage------ - If the @pNext@ chain of @pImageFormatProperties@ contains an--- instance of--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferUsageANDROID',--- the @pNext@ chain of @pImageFormatInfo@ /must/ contain an instance--- of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkPhysicalDeviceExternalImageFormatInfo'--- with @handleType@ set to--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID@.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pImageFormatInfo@ /must/ be a valid pointer to a valid--- @VkPhysicalDeviceImageFormatInfo2@ structure------ - @pImageFormatProperties@ /must/ be a valid pointer to a--- @VkImageFormatProperties2@ structure------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_FORMAT_NOT_SUPPORTED@------ = See Also------ 'VkImageFormatProperties2',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',--- 'VkPhysicalDeviceImageFormatInfo2'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceImageFormatProperties2" vkGetPhysicalDeviceImageFormatProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pImageFormatInfo" ::: Ptr VkPhysicalDeviceImageFormatInfo2) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties2) -> IO VkResult--- | vkGetPhysicalDeviceQueueFamilyProperties2 - Reports properties of the--- queues of the specified physical device------ = Parameters------ - @physicalDevice@ is the handle to the physical device whose--- properties will be queried.------ - @pQueueFamilyPropertyCount@ is a pointer to an integer related to--- the number of queue families available or queried, as described in--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceQueueFamilyProperties'.------ - @pQueueFamilyProperties@ is either @NULL@ or a pointer to an array--- of 'VkQueueFamilyProperties2' structures.------ = Description------ @vkGetPhysicalDeviceQueueFamilyProperties2@ behaves similarly to--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceQueueFamilyProperties',--- with the ability to return extended information in a @pNext@ chain of--- output structures.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pQueueFamilyPropertyCount@ /must/ be a valid pointer to a--- @uint32_t@ value------ - If the value referenced by @pQueueFamilyPropertyCount@ is not @0@,--- and @pQueueFamilyProperties@ is not @NULL@, @pQueueFamilyProperties@--- /must/ be a valid pointer to an array of @pQueueFamilyPropertyCount@--- @VkQueueFamilyProperties2@ structures------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',--- 'VkQueueFamilyProperties2'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceQueueFamilyProperties2" vkGetPhysicalDeviceQueueFamilyProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties2) -> IO ()--- | vkGetPhysicalDeviceMemoryProperties2 - Reports memory information for--- the specified physical device------ = Parameters------ - @physicalDevice@ is the handle to the device to query.------ - @pMemoryProperties@ points to an instance of--- @VkPhysicalDeviceMemoryProperties2@ structure in which the--- properties are returned.------ = Description------ @vkGetPhysicalDeviceMemoryProperties2@ behaves similarly to--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceMemoryProperties',--- with the ability to return extended information in a @pNext@ chain of--- output structures.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pMemoryProperties@ /must/ be a valid pointer to a--- @VkPhysicalDeviceMemoryProperties2@ structure------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',--- 'VkPhysicalDeviceMemoryProperties2'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceMemoryProperties2" vkGetPhysicalDeviceMemoryProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties2) -> IO ()--- | vkGetPhysicalDeviceSparseImageFormatProperties2 - Retrieve properties of--- an image format applied to sparse images------ = Parameters------ - @physicalDevice@ is the physical device from which to query the--- sparse image capabilities.------ - @pFormatInfo@ is a pointer to a structure of type--- 'VkPhysicalDeviceSparseImageFormatInfo2' containing input parameters--- to the command.------ - @pPropertyCount@ is a pointer to an integer related to the number of--- sparse format properties available or queried, as described below.------ - @pProperties@ is either @NULL@ or a pointer to an array of--- 'VkSparseImageFormatProperties2' structures.------ = Description------ @vkGetPhysicalDeviceSparseImageFormatProperties2@ behaves identically to--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetPhysicalDeviceSparseImageFormatProperties',--- with the ability to return extended information by adding extension--- structures to the @pNext@ chain of its @pProperties@ parameter.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pFormatInfo@ /must/ be a valid pointer to a valid--- @VkPhysicalDeviceSparseImageFormatInfo2@ structure------ - @pPropertyCount@ /must/ be a valid pointer to a @uint32_t@ value------ - If the value referenced by @pPropertyCount@ is not @0@, and--- @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer--- to an array of @pPropertyCount@ @VkSparseImageFormatProperties2@--- structures------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',--- 'VkPhysicalDeviceSparseImageFormatInfo2',--- 'VkSparseImageFormatProperties2'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceSparseImageFormatProperties2" vkGetPhysicalDeviceSparseImageFormatProperties2 :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pFormatInfo" ::: Ptr VkPhysicalDeviceSparseImageFormatInfo2) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties2) -> IO ()--- | VkPhysicalDeviceFeatures2 - Structure describing the fine-grained--- features that can be supported by an implementation------ = Members------ The @VkPhysicalDeviceFeatures2@ structure is defined as:------ = Description------ - @sType@ is the type of this structure.------ - @pNext@ is @NULL@ or a pointer to an extension-specific structure.------ - @features@ is a structure of type--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceFeatures'--- describing the fine-grained features of the Vulkan 1.0 API.------ The @pNext@ chain of this structure is used to extend the structure with--- features defined by extensions. This structure /can/ be used in--- 'vkGetPhysicalDeviceFeatures2' or /can/ be in the @pNext@ chain of a--- 'Graphics.Vulkan.Core10.Device.VkDeviceCreateInfo' structure, in which--- case it controls which features are enabled in the device in lieu of--- @pEnabledFeatures@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceFeatures',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetPhysicalDeviceFeatures2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceFeatures2KHR'-data VkPhysicalDeviceFeatures2 = VkPhysicalDeviceFeatures2- { -- No documentation found for Nested "VkPhysicalDeviceFeatures2" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceFeatures2" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceFeatures2" "features"- vkFeatures :: VkPhysicalDeviceFeatures- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceFeatures2 where- sizeOf ~_ = 240- alignment ~_ = 8- peek ptr = VkPhysicalDeviceFeatures2 <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceFeatures2))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceFeatures2))- *> poke (ptr `plusPtr` 16) (vkFeatures (poked :: VkPhysicalDeviceFeatures2))--- | VkPhysicalDeviceProperties2 - Structure specifying physical device--- properties------ = Description------ The @pNext@ chain of this structure is used to extend the structure with--- properties defined by extensions.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of--- 'Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced.VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization.VkPhysicalDeviceConservativeRasterizationPropertiesEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles.VkPhysicalDeviceDiscardRectanglePropertiesEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_external_memory_host.VkPhysicalDeviceExternalMemoryHostPropertiesEXT',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkPhysicalDeviceIDProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance3.VkPhysicalDeviceMaintenance3Properties',--- 'Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview.VkPhysicalDeviceMultiviewProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2.VkPhysicalDevicePointClippingProperties',--- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory.VkPhysicalDeviceProtectedMemoryProperties',--- 'Graphics.Vulkan.Extensions.VK_KHR_push_descriptor.VkPhysicalDevicePushDescriptorPropertiesKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPhysicalDeviceSampleLocationsPropertiesEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax.VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT',--- 'Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties.VkPhysicalDeviceShaderCorePropertiesAMD',--- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_subgroup.VkPhysicalDeviceSubgroupProperties',--- or--- 'Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceProperties',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetPhysicalDeviceProperties2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceProperties2KHR'-data VkPhysicalDeviceProperties2 = VkPhysicalDeviceProperties2- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @properties@ is a structure of type- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceProperties'- -- describing the properties of the physical device. This structure is- -- written with the same values as if it were written by- -- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceProperties'.- vkProperties :: VkPhysicalDeviceProperties- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceProperties2 where- sizeOf ~_ = 840- alignment ~_ = 8- peek ptr = VkPhysicalDeviceProperties2 <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceProperties2))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceProperties2))- *> poke (ptr `plusPtr` 16) (vkProperties (poked :: VkPhysicalDeviceProperties2))--- | VkFormatProperties2 - Structure specifying image format properties------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2@------ - @pNext@ /must/ be @NULL@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkFormatProperties',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetPhysicalDeviceFormatProperties2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceFormatProperties2KHR'-data VkFormatProperties2 = VkFormatProperties2- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @formatProperties@ is a structure of type- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkFormatProperties'- -- describing features supported by the requested format.- vkFormatProperties :: VkFormatProperties- }- deriving (Eq, Show)--instance Storable VkFormatProperties2 where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkFormatProperties2 <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkFormatProperties2))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkFormatProperties2))- *> poke (ptr `plusPtr` 16) (vkFormatProperties (poked :: VkFormatProperties2))--- | VkImageFormatProperties2 - Structure specifying a image format--- properties------ = Description------ If the combination of parameters to--- @vkGetPhysicalDeviceImageFormatProperties2@ is not supported by the--- implementation for use in 'Graphics.Vulkan.Core10.Image.vkCreateImage',--- then all members of @imageFormatProperties@ will be filled with zero.------ __Note__------ Filling @imageFormatProperties@ with zero for unsupported formats is an--- exception to the usual rule that output structures have undefined--- contents on error. This exception was unintentional, but is preserved--- for backwards compatibility. This exeption only applies to--- @imageFormatProperties@, not @sType@, @pNext@, or any structures chained--- from @pNext@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferUsageANDROID',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalImageFormatProperties',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionImageFormatProperties',--- or--- 'Graphics.Vulkan.Extensions.VK_AMD_texture_gather_bias_lod.VkTextureLODGatherFormatPropertiesAMD'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageFormatProperties',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetPhysicalDeviceImageFormatProperties2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2KHR'-data VkImageFormatProperties2 = VkImageFormatProperties2- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. The- -- @pNext@ chain of @VkImageFormatProperties2@ is used to allow the- -- specification of additional capabilities to be returned from- -- @vkGetPhysicalDeviceImageFormatProperties2@.- vkPNext :: Ptr ()- , -- | @imageFormatProperties@ is an instance of a- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageFormatProperties'- -- structure in which capabilities are returned.- vkImageFormatProperties :: VkImageFormatProperties- }- deriving (Eq, Show)--instance Storable VkImageFormatProperties2 where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkImageFormatProperties2 <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkImageFormatProperties2))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImageFormatProperties2))- *> poke (ptr `plusPtr` 16) (vkImageFormatProperties (poked :: VkImageFormatProperties2))--- | VkPhysicalDeviceImageFormatInfo2 - Structure specifying image creation--- parameters------ = Description------ The members of @VkPhysicalDeviceImageFormatInfo2@ correspond to the--- arguments to--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceImageFormatProperties',--- with @sType@ and @pNext@ added for extensibility.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2@------ - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkPhysicalDeviceExternalImageFormatInfo'------ - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'--- value------ - @type@ /must/ be a valid--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType' value------ - @tiling@ /must/ be a valid--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageTiling' value------ - @usage@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits'--- values------ - @usage@ /must/ not be @0@------ - @flags@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageCreateFlagBits'--- values------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkFormat',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageCreateFlags',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageTiling',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetPhysicalDeviceImageFormatProperties2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceImageFormatProperties2KHR'-data VkPhysicalDeviceImageFormatInfo2 = VkPhysicalDeviceImageFormatInfo2- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure. The- -- @pNext@ chain of @VkPhysicalDeviceImageFormatInfo2@ is used to provide- -- additional image parameters to- -- @vkGetPhysicalDeviceImageFormatProperties2@.- vkPNext :: Ptr ()- , -- | @format@ is a 'Graphics.Vulkan.Core10.Core.VkFormat' value indicating- -- the image format, corresponding to- -- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@format@.- vkFormat :: VkFormat- , -- | @type@ is a 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType'- -- value indicating the image type, corresponding to- -- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@imageType@.- vkType :: VkImageType- , -- | @tiling@ is a- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageTiling' value- -- indicating the image tiling, corresponding to- -- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@tiling@.- vkTiling :: VkImageTiling- , -- | @usage@ is a bitmask of- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits'- -- indicating the intended usage of the image, corresponding to- -- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@usage@.- vkUsage :: VkImageUsageFlags- , -- | @flags@ is a bitmask of- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageCreateFlagBits'- -- indicating additional parameters of the image, corresponding to- -- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@flags@.- vkFlags :: VkImageCreateFlags- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceImageFormatInfo2 where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkPhysicalDeviceImageFormatInfo2 <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceImageFormatInfo2))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceImageFormatInfo2))- *> poke (ptr `plusPtr` 16) (vkFormat (poked :: VkPhysicalDeviceImageFormatInfo2))- *> poke (ptr `plusPtr` 20) (vkType (poked :: VkPhysicalDeviceImageFormatInfo2))- *> poke (ptr `plusPtr` 24) (vkTiling (poked :: VkPhysicalDeviceImageFormatInfo2))- *> poke (ptr `plusPtr` 28) (vkUsage (poked :: VkPhysicalDeviceImageFormatInfo2))- *> poke (ptr `plusPtr` 32) (vkFlags (poked :: VkPhysicalDeviceImageFormatInfo2))--- | VkQueueFamilyProperties2 - Structure providing information about a queue--- family------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2@------ - @pNext@ /must/ be @NULL@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkQueueFamilyProperties',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetPhysicalDeviceQueueFamilyProperties2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceQueueFamilyProperties2KHR'-data VkQueueFamilyProperties2 = VkQueueFamilyProperties2- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @queueFamilyProperties@ is a structure of type- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkQueueFamilyProperties'- -- which is populated with the same values as in- -- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceQueueFamilyProperties'.- vkQueueFamilyProperties :: VkQueueFamilyProperties- }- deriving (Eq, Show)--instance Storable VkQueueFamilyProperties2 where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkQueueFamilyProperties2 <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkQueueFamilyProperties2))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkQueueFamilyProperties2))- *> poke (ptr `plusPtr` 16) (vkQueueFamilyProperties (poked :: VkQueueFamilyProperties2))--- | VkPhysicalDeviceMemoryProperties2 - Structure specifying physical device--- memory properties------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2@------ - @pNext@ /must/ be @NULL@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceMemoryProperties',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetPhysicalDeviceMemoryProperties2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceMemoryProperties2KHR'-data VkPhysicalDeviceMemoryProperties2 = VkPhysicalDeviceMemoryProperties2- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @memoryProperties@ is a structure of type- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceMemoryProperties'- -- which is populated with the same values as in- -- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceMemoryProperties'.- vkMemoryProperties :: VkPhysicalDeviceMemoryProperties- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceMemoryProperties2 where- sizeOf ~_ = 536- alignment ~_ = 8- peek ptr = VkPhysicalDeviceMemoryProperties2 <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceMemoryProperties2))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceMemoryProperties2))- *> poke (ptr `plusPtr` 16) (vkMemoryProperties (poked :: VkPhysicalDeviceMemoryProperties2))--- | VkSparseImageFormatProperties2 - Structure specifying sparse image--- format properties------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2@------ - @pNext@ /must/ be @NULL@------ = See Also------ 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseImageFormatProperties',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetPhysicalDeviceSparseImageFormatProperties2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceSparseImageFormatProperties2KHR'-data VkSparseImageFormatProperties2 = VkSparseImageFormatProperties2- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @properties@ is a structure of type- -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkSparseImageFormatProperties'- -- which is populated with the same values as in- -- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.vkGetPhysicalDeviceSparseImageFormatProperties'.- vkProperties :: VkSparseImageFormatProperties- }- deriving (Eq, Show)--instance Storable VkSparseImageFormatProperties2 where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkSparseImageFormatProperties2 <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkSparseImageFormatProperties2))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkSparseImageFormatProperties2))- *> poke (ptr `plusPtr` 16) (vkProperties (poked :: VkSparseImageFormatProperties2))--- | VkPhysicalDeviceSparseImageFormatInfo2 - Structure specifying sparse--- image format inputs------ == Valid Usage------ - @samples@ /must/ be a bit value that is set in--- @VkImageFormatProperties@::@sampleCounts@ returned by--- @vkGetPhysicalDeviceImageFormatProperties@ with @format@, @type@,--- @tiling@, and @usage@ equal to those in this command and @flags@--- equal to the value that is set in @VkImageCreateInfo@::@flags@ when--- the image is created------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2@------ - @pNext@ /must/ be @NULL@------ - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'--- value------ - @type@ /must/ be a valid--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType' value------ - @samples@ /must/ be a valid--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'--- value------ - @usage@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits'--- values------ - @usage@ /must/ not be @0@------ - @tiling@ /must/ be a valid--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageTiling' value------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkFormat',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageTiling',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlags',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetPhysicalDeviceSparseImageFormatProperties2',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceSparseImageFormatProperties2KHR'-data VkPhysicalDeviceSparseImageFormatInfo2 = VkPhysicalDeviceSparseImageFormatInfo2- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @format@ is the image format.- vkFormat :: VkFormat- , -- | @type@ is the dimensionality of image.- vkType :: VkImageType- , -- | @samples@ is the number of samples per texel as defined in- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'.- vkSamples :: VkSampleCountFlagBits- , -- | @usage@ is a bitmask describing the intended usage of the image.- vkUsage :: VkImageUsageFlags- , -- | @tiling@ is the tiling arrangement of the data elements in memory.- vkTiling :: VkImageTiling- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceSparseImageFormatInfo2 where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkPhysicalDeviceSparseImageFormatInfo2 <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceSparseImageFormatInfo2))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceSparseImageFormatInfo2))- *> poke (ptr `plusPtr` 16) (vkFormat (poked :: VkPhysicalDeviceSparseImageFormatInfo2))- *> poke (ptr `plusPtr` 20) (vkType (poked :: VkPhysicalDeviceSparseImageFormatInfo2))- *> poke (ptr `plusPtr` 24) (vkSamples (poked :: VkPhysicalDeviceSparseImageFormatInfo2))- *> poke (ptr `plusPtr` 28) (vkUsage (poked :: VkPhysicalDeviceSparseImageFormatInfo2))- *> poke (ptr `plusPtr` 32) (vkTiling (poked :: VkPhysicalDeviceSparseImageFormatInfo2))
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance1.hs
@@ -1,178 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance1- ( VkCommandPoolTrimFlags(..)- , pattern VK_ERROR_OUT_OF_POOL_MEMORY- , pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT- , pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT- , pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT- , vkTrimCommandPool- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Foreign.Storable- ( Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.CommandPool- ( VkCommandPool- )-import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkFormatFeatureFlagBits(..)- , VkImageCreateFlagBits(..)- , VkDevice- )----- ** VkCommandPoolTrimFlags---- | VkCommandPoolTrimFlags - Reserved for future use------ = Description------ @VkCommandPoolTrimFlags@ is a bitmask type for setting a mask, but is--- currently reserved for future use.------ = See Also------ 'vkTrimCommandPool',--- 'Graphics.Vulkan.Extensions.VK_KHR_maintenance1.vkTrimCommandPoolKHR'-newtype VkCommandPoolTrimFlags = VkCommandPoolTrimFlags VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkCommandPoolTrimFlags where- - showsPrec p (VkCommandPoolTrimFlags x) = showParen (p >= 11) (showString "VkCommandPoolTrimFlags " . showsPrec 11 x)--instance Read VkCommandPoolTrimFlags where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkCommandPoolTrimFlags")- v <- step readPrec- pure (VkCommandPoolTrimFlags v)- )- )----- No documentation found for Nested "VkResult" "VK_ERROR_OUT_OF_POOL_MEMORY"-pattern VK_ERROR_OUT_OF_POOL_MEMORY :: VkResult-pattern VK_ERROR_OUT_OF_POOL_MEMORY = VkResult (-1000069000)--- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT"-pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = VkImageCreateFlagBits 0x00000020--- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT"-pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = VkFormatFeatureFlagBits 0x00004000--- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_TRANSFER_DST_BIT"-pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT = VkFormatFeatureFlagBits 0x00008000--- | vkTrimCommandPool - Trim a command pool------ = Parameters------ - @device@ is the logical device that owns the command pool.------ - @commandPool@ is the command pool to trim.------ - @flags@ is reserved for future use.------ = Description------ Trimming a command pool recycles unused memory from the command pool--- back to the system. Command buffers allocated from the pool are not--- affected by the command.------ __Note__------ This command provides applications with some control over the internal--- memory allocations used by command pools.------ Unused memory normally arises from command buffers that have been--- recorded and later reset, such that they are no longer using the memory.--- On reset, a command buffer can return memory to its command pool, but--- the only way to release memory from a command pool to the system--- requires calling--- 'Graphics.Vulkan.Core10.CommandPool.vkResetCommandPool', which cannot be--- executed while any command buffers from that pool are still in use.--- Subsequent recording operations into command buffers will re-use this--- memory but since total memory requirements fluctuate over time, unused--- memory can accumulate.------ In this situation, trimming a command pool /may/ be useful to return--- unused memory back to the system, returning the total outstanding memory--- allocated by the pool back to a more “average” value.------ Implementations utilize many internal allocation strategies that make it--- impossible to guarantee that all unused memory is released back to the--- system. For instance, an implementation of a command pool /may/ involve--- allocating memory in bulk from the system and sub-allocating from that--- memory. In such an implementation any live command buffer that holds a--- reference to a bulk allocation would prevent that allocation from being--- freed, even if only a small proportion of the bulk allocation is in use.------ In most cases trimming will result in a reduction in allocated but--- unused memory, but it does not guarantee the “ideal” behaviour.------ Trimming /may/ be an expensive operation, and /should/ not be called--- frequently. Trimming /should/ be treated as a way to relieve memory--- pressure after application-known points when there exists enough unused--- memory that the cost of trimming is “worth” it.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @commandPool@ /must/ be a valid @VkCommandPool@ handle------ - @flags@ /must/ be @0@------ - @commandPool@ /must/ have been created, allocated, or retrieved from--- @device@------ == Host Synchronization------ - Host access to @commandPool@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Core10.CommandPool.VkCommandPool',--- 'VkCommandPoolTrimFlags',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkTrimCommandPool" vkTrimCommandPool :: ("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolTrimFlags) -> IO ()
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance2.hs
@@ -1,420 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2- ( VkPointClippingBehavior(..)- , pattern VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES- , pattern VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY- , VkTessellationDomainOrigin(..)- , pattern VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT- , pattern VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT- , pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL- , pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES- , pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO- , pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT- , pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT- , VkInputAttachmentAspectReference(..)- , VkRenderPassInputAttachmentAspectCreateInfo(..)- , VkPhysicalDevicePointClippingProperties(..)- , VkImageViewUsageCreateInfo(..)- , VkPipelineTessellationDomainOriginStateCreateInfo(..)- ) where--import Data.Int- ( Int32- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkImageCreateFlagBits(..)- , VkImageUsageFlags- )-import Graphics.Vulkan.Core10.Image- ( VkImageLayout(..)- )-import Graphics.Vulkan.Core10.SparseResourceMemoryManagement- ( VkImageAspectFlags- )----- ** VkPointClippingBehavior---- | VkPointClippingBehavior - Enum specifying the point clipping behaviour------ = See Also------ 'VkPhysicalDevicePointClippingProperties'-newtype VkPointClippingBehavior = VkPointClippingBehavior Int32- deriving (Eq, Ord, Storable)--instance Show VkPointClippingBehavior where- showsPrec _ VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = showString "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES"- showsPrec _ VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = showString "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY"- showsPrec p (VkPointClippingBehavior x) = showParen (p >= 11) (showString "VkPointClippingBehavior " . showsPrec 11 x)--instance Read VkPointClippingBehavior where- readPrec = parens ( choose [ ("VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES", pure VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES)- , ("VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY", pure VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY)- ] +++- prec 10 (do- expectP (Ident "VkPointClippingBehavior")- v <- step readPrec- pure (VkPointClippingBehavior v)- )- )---- | @VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES@ specifies that the--- primitive is discarded if the vertex lies outside any clip plane,--- including the planes bounding the view volume.-pattern VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES :: VkPointClippingBehavior-pattern VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = VkPointClippingBehavior 0---- | @VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY@ specifies that the--- primitive is discarded only if the vertex lies outside any user clip--- plane.-pattern VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY :: VkPointClippingBehavior-pattern VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = VkPointClippingBehavior 1--- ** VkTessellationDomainOrigin---- | VkTessellationDomainOrigin - Enum describing tessellation domain origin------ = Description------ - @VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT@ specifies that the origin--- of the domain space is in the upper left corner, as shown in figure--- [{html_spec_relative}#img-tessellation-topology-ul](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#img-tessellation-topology-ul).------ - @VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT@ specifies that the origin--- of the domain space is in the lower left corner, as shown in figure--- [{html_spec_relative}#img-tessellation-topology-ll](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#img-tessellation-topology-ll).------ This enum affects how the @VertexOrderCw@ and @VertexOrderCcw@--- tessellation execution modes are interpreted, since the winding is--- defined relative to the orientation of the domain.------ = See Also------ 'VkPipelineTessellationDomainOriginStateCreateInfo'-newtype VkTessellationDomainOrigin = VkTessellationDomainOrigin Int32- deriving (Eq, Ord, Storable)--instance Show VkTessellationDomainOrigin where- showsPrec _ VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = showString "VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT"- showsPrec _ VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = showString "VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT"- showsPrec p (VkTessellationDomainOrigin x) = showParen (p >= 11) (showString "VkTessellationDomainOrigin " . showsPrec 11 x)--instance Read VkTessellationDomainOrigin where- readPrec = parens ( choose [ ("VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT", pure VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT)- , ("VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT", pure VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT)- ] +++- prec 10 (do- expectP (Ident "VkTessellationDomainOrigin")- v <- step readPrec- pure (VkTessellationDomainOrigin v)- )- )---- No documentation found for Nested "VkTessellationDomainOrigin" "VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT"-pattern VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT :: VkTessellationDomainOrigin-pattern VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = VkTessellationDomainOrigin 0---- No documentation found for Nested "VkTessellationDomainOrigin" "VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT"-pattern VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT :: VkTessellationDomainOrigin-pattern VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = VkTessellationDomainOrigin 1--- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL"-pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL :: VkImageLayout-pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = VkImageLayout 1000117000--- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL"-pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL :: VkImageLayout-pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = VkImageLayout 1000117001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = VkStructureType 1000117000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = VkStructureType 1000117001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = VkStructureType 1000117002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = VkStructureType 1000117003--- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"-pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = VkImageCreateFlagBits 0x00000080--- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_EXTENDED_USAGE_BIT"-pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = VkImageCreateFlagBits 0x00000100--- | VkInputAttachmentAspectReference - Structure specifying a subpass\/input--- attachment pair and an aspect mask that /can/ be read.------ == Valid Usage------ - There /must/ be an input attachment at--- @pCreateInfo@::@pSubpasses@[@subpass@].@pInputAttachments@[@inputAttachmentIndex@].------ - The specified input attachment /must/ have more than one aspect--- mask.------ - @aspectMask@ /must/ be a subset of the aspect masks in the specified--- input attachment.------ == Valid Usage (Implicit)------ - @aspectMask@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlagBits'--- values------ - @aspectMask@ /must/ not be @0@------ = See Also------ 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlags',--- 'VkRenderPassInputAttachmentAspectCreateInfo'-data VkInputAttachmentAspectReference = VkInputAttachmentAspectReference- { -- | @subpass@ is an index into the @pSubpasses@ array of the parent- -- @VkRenderPassCreateInfo@ structure.- vkSubpass :: Word32- , -- | @inputAttachmentIndex@ is an index into the @pInputAttachments@ of the- -- specified subpass.- vkInputAttachmentIndex :: Word32- , -- | @aspectMask@ is a mask of which aspect(s) /can/ be accessed within the- -- specified subpass.- vkAspectMask :: VkImageAspectFlags- }- deriving (Eq, Show)--instance Storable VkInputAttachmentAspectReference where- sizeOf ~_ = 12- alignment ~_ = 4- peek ptr = VkInputAttachmentAspectReference <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSubpass (poked :: VkInputAttachmentAspectReference))- *> poke (ptr `plusPtr` 4) (vkInputAttachmentIndex (poked :: VkInputAttachmentAspectReference))- *> poke (ptr `plusPtr` 8) (vkAspectMask (poked :: VkInputAttachmentAspectReference))--- | VkRenderPassInputAttachmentAspectCreateInfo - Structure specifying, for--- a given subpass\/input attachment pair, which aspect /can/ be read.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO@------ - @pAspectReferences@ /must/ be a valid pointer to an array of--- @aspectReferenceCount@ valid @VkInputAttachmentAspectReference@--- structures------ - @aspectReferenceCount@ /must/ be greater than @0@------ = See Also------ 'VkInputAttachmentAspectReference',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkRenderPassInputAttachmentAspectCreateInfo = VkRenderPassInputAttachmentAspectCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @aspectReferenceCount@ is the number of elements in the- -- pAspectReferences array.- vkAspectReferenceCount :: Word32- , -- | @pAspectReferences@ points to an array of @aspectReferenceCount@ number- -- of 'VkInputAttachmentAspectReference' structures describing which- -- aspect(s) /can/ be accessed for a given input attachment within a given- -- subpass.- vkPAspectReferences :: Ptr VkInputAttachmentAspectReference- }- deriving (Eq, Show)--instance Storable VkRenderPassInputAttachmentAspectCreateInfo where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkRenderPassInputAttachmentAspectCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkRenderPassInputAttachmentAspectCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkRenderPassInputAttachmentAspectCreateInfo))- *> poke (ptr `plusPtr` 16) (vkAspectReferenceCount (poked :: VkRenderPassInputAttachmentAspectCreateInfo))- *> poke (ptr `plusPtr` 24) (vkPAspectReferences (poked :: VkRenderPassInputAttachmentAspectCreateInfo))--- | VkPhysicalDevicePointClippingProperties - Structure describing the point--- clipping behavior supported by an implementation------ = Members------ The members of the @VkPhysicalDevicePointClippingProperties@ structure--- describe the following implementation-dependent limit:------ = Description------ - @sType@ is the type of this structure.------ - @pNext@ is @NULL@ or a pointer to an extension-specific structure.------ - @pointClippingBehavior@ is the point clipping behavior supported by--- the implementation, and is of type 'VkPointClippingBehavior'.------ If the @VkPhysicalDevicePointClippingProperties@ structure is included--- in the @pNext@ chain of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2',--- it is filled with the implementation-dependent limits.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES@------ = See Also------ 'VkPointClippingBehavior', 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDevicePointClippingProperties = VkPhysicalDevicePointClippingProperties- { -- No documentation found for Nested "VkPhysicalDevicePointClippingProperties" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDevicePointClippingProperties" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDevicePointClippingProperties" "pointClippingBehavior"- vkPointClippingBehavior :: VkPointClippingBehavior- }- deriving (Eq, Show)--instance Storable VkPhysicalDevicePointClippingProperties where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkPhysicalDevicePointClippingProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDevicePointClippingProperties))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDevicePointClippingProperties))- *> poke (ptr `plusPtr` 16) (vkPointClippingBehavior (poked :: VkPhysicalDevicePointClippingProperties))--- | VkImageViewUsageCreateInfo - Specify the intended usage of an image view------ = Description------ When this structure is chained to @VkImageViewCreateInfo@ the @usage@--- field overrides the implicit @usage@ parameter inherited from image--- creation time and its value is used instead for the purposes of--- determining the valid usage conditions of--- 'Graphics.Vulkan.Core10.ImageView.VkImageViewCreateInfo'.------ == Valid Usage------ - @usage@ /must/ not include any set bits that were not set in the--- @usage@ member of the--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' structure used to--- create the image this image view is created from.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO@------ - @usage@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits'--- values------ - @usage@ /must/ not be @0@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkImageViewUsageCreateInfo = VkImageViewUsageCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @usage@ is a bitmask describing the allowed usages of the image view.- -- See 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits'- -- for a description of the supported bits.- vkUsage :: VkImageUsageFlags- }- deriving (Eq, Show)--instance Storable VkImageViewUsageCreateInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkImageViewUsageCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkImageViewUsageCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImageViewUsageCreateInfo))- *> poke (ptr `plusPtr` 16) (vkUsage (poked :: VkImageViewUsageCreateInfo))--- | VkPipelineTessellationDomainOriginStateCreateInfo - Structure specifying--- the orientation of the tessellation domain------ = Description------ If the @VkPipelineTessellationDomainOriginStateCreateInfo@ structure is--- included in the @pNext@ chain of--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineTessellationStateCreateInfo',--- it controls the origin of the tessellation domain. If this structure is--- not present, it is as if @domainOrigin@ were--- @VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO@------ - @domainOrigin@ /must/ be a valid 'VkTessellationDomainOrigin' value------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'VkTessellationDomainOrigin'-data VkPipelineTessellationDomainOriginStateCreateInfo = VkPipelineTessellationDomainOriginStateCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @domainOrigin@ controls the origin of the tessellation domain space, and- -- is of type 'VkTessellationDomainOrigin'.- vkDomainOrigin :: VkTessellationDomainOrigin- }- deriving (Eq, Show)--instance Storable VkPipelineTessellationDomainOriginStateCreateInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkPipelineTessellationDomainOriginStateCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineTessellationDomainOriginStateCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineTessellationDomainOriginStateCreateInfo))- *> poke (ptr `plusPtr` 16) (vkDomainOrigin (poked :: VkPipelineTessellationDomainOriginStateCreateInfo))
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_maintenance3.hs
@@ -1,211 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance3- ( pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES- , pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT- , vkGetDescriptorSetLayoutSupport- , VkPhysicalDeviceMaintenance3Properties(..)- , VkDescriptorSetLayoutSupport(..)- ) where--import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DescriptorSet- ( VkDescriptorSetLayoutCreateInfo(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- , VkDeviceSize- )----- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = VkStructureType 1000168000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT"-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT :: VkStructureType-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = VkStructureType 1000168001--- | vkGetDescriptorSetLayoutSupport - Query whether a descriptor set layout--- can be created------ = Parameters------ - @device@ is the logical device that would create the descriptor set--- layout.------ - @pCreateInfo@ is a pointer to an instance of the--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetLayoutCreateInfo'--- structure specifying the state of the descriptor set layout object.------ - @pSupport@ points to a 'VkDescriptorSetLayoutSupport' structure in--- which information about support for the descriptor set layout object--- is returned.------ = Description------ Some implementations have limitations on what fits in a descriptor set--- which are not easily expressible in terms of existing limits like--- @maxDescriptorSet@*, for example if all descriptor types share a limited--- space in memory but each descriptor is a different size or alignment.--- This command returns information about whether a descriptor set--- satisfies this limit. If the descriptor set layout satisfies the--- 'VkPhysicalDeviceMaintenance3Properties'::@maxPerSetDescriptors@ limit,--- this command is guaranteed to return @VK_TRUE@ in--- 'VkDescriptorSetLayoutSupport'::@supported@. If the descriptor set--- layout exceeds the--- 'VkPhysicalDeviceMaintenance3Properties'::@maxPerSetDescriptors@ limit,--- whether the descriptor set layout is supported is--- implementation-dependent and /may/ depend on whether the descriptor--- sizes and alignments cause the layout to exceed an internal limit.------ This command does not consider other limits such as--- @maxPerStageDescriptor@*, and so a descriptor set layout that is--- supported according to this command /must/ still satisfy the pipeline--- layout limits such as @maxPerStageDescriptor@* in order to be used in a--- pipeline layout.------ __Note__------ This is a @VkDevice@ query rather than @VkPhysicalDevice@ because the--- answer /may/ depend on enabled features.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkDescriptorSetLayoutCreateInfo@ structure------ - @pSupport@ /must/ be a valid pointer to a--- @VkDescriptorSetLayoutSupport@ structure------ = See Also------ 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetLayoutCreateInfo',--- 'VkDescriptorSetLayoutSupport',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetDescriptorSetLayoutSupport" vkGetDescriptorSetLayoutSupport :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pSupport" ::: Ptr VkDescriptorSetLayoutSupport) -> IO ()--- | VkPhysicalDeviceMaintenance3Properties - Structure describing descriptor--- set properties------ = Members------ The members of the @VkPhysicalDeviceMaintenance3Properties@ structure--- describe the following implementation-dependent limits:------ = Description------ - @maxPerSetDescriptors@ is a maximum number of descriptors (summed--- over all descriptor types) in a single descriptor set that is--- guaranteed to satisfy any implementation-dependent constraints on--- the size of a descriptor set itself. Applications /can/ query--- whether a descriptor set that goes beyond this limit is supported--- using 'vkGetDescriptorSetLayoutSupport'.------ - @maxMemoryAllocationSize@ is the maximum size of a memory allocation--- that /can/ be created, even if there is more space available in the--- heap.------ If the @VkPhysicalDeviceMaintenance3Properties@ structure is included in--- the @pNext@ chain of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2',--- it is filled with the implementation-dependent limits.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES@------ = See Also------ @VkDeviceSize@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceMaintenance3Properties = VkPhysicalDeviceMaintenance3Properties- { -- No documentation found for Nested "VkPhysicalDeviceMaintenance3Properties" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceMaintenance3Properties" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceMaintenance3Properties" "maxPerSetDescriptors"- vkMaxPerSetDescriptors :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceMaintenance3Properties" "maxMemoryAllocationSize"- vkMaxMemoryAllocationSize :: VkDeviceSize- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceMaintenance3Properties where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkPhysicalDeviceMaintenance3Properties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceMaintenance3Properties))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceMaintenance3Properties))- *> poke (ptr `plusPtr` 16) (vkMaxPerSetDescriptors (poked :: VkPhysicalDeviceMaintenance3Properties))- *> poke (ptr `plusPtr` 24) (vkMaxMemoryAllocationSize (poked :: VkPhysicalDeviceMaintenance3Properties))--- | VkDescriptorSetLayoutSupport - Structure returning information about--- whether a descriptor set layout can be supported------ = Description------ @supported@ is set to @VK_TRUE@ if the descriptor set /can/ be created,--- or else is set to @VK_FALSE@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT@------ - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing.VkDescriptorSetVariableDescriptorCountLayoutSupportEXT'------ = See Also------ @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetDescriptorSetLayoutSupport',--- 'Graphics.Vulkan.Extensions.VK_KHR_maintenance3.vkGetDescriptorSetLayoutSupportKHR'-data VkDescriptorSetLayoutSupport = VkDescriptorSetLayoutSupport- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @supported@ specifies whether the descriptor set layout /can/ be- -- created.- vkSupported :: VkBool32- }- deriving (Eq, Show)--instance Storable VkDescriptorSetLayoutSupport where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkDescriptorSetLayoutSupport <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDescriptorSetLayoutSupport))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDescriptorSetLayoutSupport))- *> poke (ptr `plusPtr` 16) (vkSupported (poked :: VkDescriptorSetLayoutSupport))
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_multiview.hs
@@ -1,358 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview- ( pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES- , pattern VK_DEPENDENCY_VIEW_LOCAL_BIT- , VkPhysicalDeviceMultiviewFeatures(..)- , VkPhysicalDeviceMultiviewProperties(..)- , VkRenderPassMultiviewCreateInfo(..)- ) where--import Data.Int- ( Int32- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.Pass- ( VkDependencyFlagBits(..)- )----- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = VkStructureType 1000053000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = VkStructureType 1000053001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = VkStructureType 1000053002--- | @VK_DEPENDENCY_VIEW_LOCAL_BIT@ specifies that a [subpass has more than--- one--- view](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependencies).-pattern VK_DEPENDENCY_VIEW_LOCAL_BIT :: VkDependencyFlagBits-pattern VK_DEPENDENCY_VIEW_LOCAL_BIT = VkDependencyFlagBits 0x00000002--- | VkPhysicalDeviceMultiviewFeatures - Structure describing multiview--- features that can be supported by an implementation------ = Members------ The members of the @VkPhysicalDeviceMultiviewFeatures@ structure--- describe the following features:------ = Description------ - @multiview@ specifies whether the implementation supports multiview--- rendering within a render pass. If this feature is not enabled, the--- view mask of each subpass /must/ always be zero.------ - @multiviewGeometryShader@ specifies whether the implementation--- supports multiview rendering within a render pass, with [geometry--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#geometry).--- If this feature is not enabled, then a pipeline compiled against a--- subpass with a non-zero view mask /must/ not include a geometry--- shader.------ - @multiviewTessellationShader@ specifies whether the implementation--- supports multiview rendering within a render pass, with--- [tessellation--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#tessellation).--- If this feature is not enabled, then a pipeline compiled against a--- subpass with a non-zero view mask /must/ not include any--- tessellation shaders.------ If the @VkPhysicalDeviceMultiviewFeatures@ structure is included in the--- @pNext@ chain of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceFeatures2',--- it is filled with values indicating whether each feature is supported.--- @VkPhysicalDeviceMultiviewFeatures@ /can/ also be used in the @pNext@--- chain of 'Graphics.Vulkan.Core10.Device.VkDeviceCreateInfo' to enable--- the features.------ == Valid Usage------ - If @multiviewGeometryShader@ is enabled then @multiview@ /must/ also--- be enabled.------ - If @multiviewTessellationShader@ is enabled then @multiview@ /must/--- also be enabled.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES@------ = See Also------ @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceMultiviewFeatures = VkPhysicalDeviceMultiviewFeatures- { -- No documentation found for Nested "VkPhysicalDeviceMultiviewFeatures" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceMultiviewFeatures" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceMultiviewFeatures" "multiview"- vkMultiview :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceMultiviewFeatures" "multiviewGeometryShader"- vkMultiviewGeometryShader :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceMultiviewFeatures" "multiviewTessellationShader"- vkMultiviewTessellationShader :: VkBool32- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceMultiviewFeatures where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkPhysicalDeviceMultiviewFeatures <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceMultiviewFeatures))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceMultiviewFeatures))- *> poke (ptr `plusPtr` 16) (vkMultiview (poked :: VkPhysicalDeviceMultiviewFeatures))- *> poke (ptr `plusPtr` 20) (vkMultiviewGeometryShader (poked :: VkPhysicalDeviceMultiviewFeatures))- *> poke (ptr `plusPtr` 24) (vkMultiviewTessellationShader (poked :: VkPhysicalDeviceMultiviewFeatures))--- | VkPhysicalDeviceMultiviewProperties - Structure describing multiview--- limits that can be supported by an implementation------ = Members------ The members of the @VkPhysicalDeviceMultiviewProperties@ structure--- describe the following implementation-dependent limits:------ = Description------ - @maxMultiviewViewCount@ is one greater than the maximum view index--- that /can/ be used in a subpass.------ - @maxMultiviewInstanceIndex@ is the maximum valid value of instance--- index allowed to be generated by a drawing command recorded within a--- subpass of a multiview render pass instance.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES@------ If the @VkPhysicalDeviceMultiviewProperties@ structure is included in--- the @pNext@ chain of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2',--- it is filled with the implementation-dependent limits.------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceMultiviewProperties = VkPhysicalDeviceMultiviewProperties- { -- No documentation found for Nested "VkPhysicalDeviceMultiviewProperties" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceMultiviewProperties" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceMultiviewProperties" "maxMultiviewViewCount"- vkMaxMultiviewViewCount :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceMultiviewProperties" "maxMultiviewInstanceIndex"- vkMaxMultiviewInstanceIndex :: Word32- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceMultiviewProperties where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkPhysicalDeviceMultiviewProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceMultiviewProperties))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceMultiviewProperties))- *> poke (ptr `plusPtr` 16) (vkMaxMultiviewViewCount (poked :: VkPhysicalDeviceMultiviewProperties))- *> poke (ptr `plusPtr` 20) (vkMaxMultiviewInstanceIndex (poked :: VkPhysicalDeviceMultiviewProperties))--- | VkRenderPassMultiviewCreateInfo - Structure containing multiview info--- for all subpasses------ = Description------ When a subpass uses a non-zero view mask, /multiview/ functionality is--- considered to be enabled. Multiview is all-or-nothing for a render pass--- - that is, either all subpasses /must/ have a non-zero view mask (though--- some subpasses /may/ have only one view) or all /must/ be zero.--- Multiview causes all drawing and clear commands in the subpass to behave--- as if they were broadcast to each view, where a view is represented by--- one layer of the framebuffer attachments. All draws and clears are--- broadcast to each /view index/ whose bit is set in the view mask. The--- view index is provided in the @ViewIndex@ shader input variable, and--- color, depth\/stencil, and input attachments all read\/write the layer--- of the framebuffer corresponding to the view index.------ If the view mask is zero for all subpasses, multiview is considered to--- be disabled and all drawing commands execute normally, without this--- additional broadcasting.------ Some implementations /may/ not support multiview in conjunction with--- [geometry--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiview-gs)--- or [tessellation--- shaders](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-multiview-tess).------ When multiview is enabled, the @VK_DEPENDENCY_VIEW_LOCAL_BIT@ bit in a--- dependency /can/ be used to express a view-local dependency, meaning--- that each view in the destination subpass depends on a single view in--- the source subpass. Unlike pipeline barriers, a subpass dependency /can/--- potentially have a different view mask in the source subpass and the--- destination subpass. If the dependency is view-local, then each view--- (dstView) in the destination subpass depends on the view dstView +--- pViewOffsets[dependency] in the source subpass. If there is not such a--- view in the source subpass, then this dependency does not affect that--- view in the destination subpass. If the dependency is not view-local,--- then all views in the destination subpass depend on all views in the--- source subpass, and the view offset is ignored. A non-zero view offset--- is not allowed in a self-dependency.------ The elements of @pCorrelationMasks@ are a set of masks of views--- indicating that views in the same mask /may/ exhibit spatial coherency--- between the views, making it more efficient to render them concurrently.--- Correlation masks /must/ not have a functional effect on the results of--- the multiview rendering.------ When multiview is enabled, at the beginning of each subpass all--- non-render pass state is undefined. In particular, each time--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdBeginRenderPass' or--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdNextSubpass' is--- called the graphics pipeline /must/ be bound, any relevant descriptor--- sets or vertex\/index buffers /must/ be bound, and any relevant dynamic--- state or push constants /must/ be set before they are used.------ A multiview subpass /can/ declare that its shaders will write per-view--- attributes for all views in a single invocation, by setting the--- @VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX@ bit in the subpass--- description. The only supported per-view attributes are position and--- viewport mask, and per-view position and viewport masks are written to--- output array variables decorated with @PositionPerViewNV@ and--- @ViewportMaskPerViewNV@, respectively. If--- @{html_spec_relative}#VK_NV_viewport_array2@ is not supported and--- enabled, @ViewportMaskPerViewNV@ /must/ not be used. Values written to--- elements of @PositionPerViewNV@ and @ViewportMaskPerViewNV@ /must/ not--- depend on the @ViewIndex@. The shader /must/ also write to an output--- variable decorated with @Position@, and the value written to @Position@--- /must/ equal the value written to @PositionPerViewNV@[@ViewIndex@].--- Similarly, if @ViewportMaskPerViewNV@ is written to then the shader--- /must/ also write to an output variable decorated with @ViewportMaskNV@,--- and the value written to @ViewportMaskNV@ /must/ equal the value written--- to @ViewportMaskPerViewNV@[@ViewIndex@]. Implementations will either use--- values taken from @Position@ and @ViewportMaskNV@ and invoke the shader--- once for each view, or will use values taken from @PositionPerViewNV@--- and @ViewportMaskPerViewNV@ and invoke the shader fewer times. The--- values written to @Position@ and @ViewportMaskNV@ /must/ not depend on--- the values written to @PositionPerViewNV@ and @ViewportMaskPerViewNV@,--- or vice versa (to allow compilers to eliminate the unused outputs). All--- attributes that do not have *PerViewNV counterparts /must/ not depend on--- @ViewIndex@.------ Per-view attributes are all-or-nothing for a subpass. That is, all--- pipelines compiled against a subpass that includes the--- @VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX@ bit /must/ write--- per-view attributes to the *PerViewNV[] shader outputs, in addition to--- the non-per-view (e.g. @Position@) outputs. Pipelines compiled against a--- subpass that does not include this bit /must/ not include the--- *PerViewNV[] outputs in their interfaces.------ == Valid Usage------ - If @subpassCount@ is not zero, @subpassCount@ /must/ be equal to the--- @subpassCount@ in the @VkRenderPassCreateInfo@ structure at the--- start of the chain------ - If @dependencyCount@ is not zero, @dependencyCount@ /must/ be equal--- to the @dependencyCount@ in the @VkRenderPassCreateInfo@ structure--- at the start of the chain------ - Each view index /must/ not be set in more than one element of--- @pCorrelationMasks@------ - If an element of @pViewOffsets@ is non-zero, the corresponding--- 'Graphics.Vulkan.Core10.Pass.VkSubpassDependency' structure /must/--- have different values of @srcSubpass@ and @dstSubpass@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO@------ - If @subpassCount@ is not @0@, @pViewMasks@ /must/ be a valid pointer--- to an array of @subpassCount@ @uint32_t@ values------ - If @dependencyCount@ is not @0@, @pViewOffsets@ /must/ be a valid--- pointer to an array of @dependencyCount@ @int32_t@ values------ - If @correlationMaskCount@ is not @0@, @pCorrelationMasks@ /must/ be--- a valid pointer to an array of @correlationMaskCount@ @uint32_t@--- values------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkRenderPassMultiviewCreateInfo = VkRenderPassMultiviewCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @subpassCount@ is zero or is the number of subpasses in the render pass.- vkSubpassCount :: Word32- , -- | @pViewMasks@ points to an array of @subpassCount@ number of view masks,- -- where each mask is a bitfield of view indices describing which views- -- rendering is broadcast to in each subpass, when multiview is enabled. If- -- @subpassCount@ is zero, each view mask is treated as zero.- vkPViewMasks :: Ptr Word32- , -- | @dependencyCount@ is zero or the number of dependencies in the render- -- pass.- vkDependencyCount :: Word32- , -- | @pViewOffsets@ points to an array of @dependencyCount@ view offsets, one- -- for each dependency. If @dependencyCount@ is zero, each dependency’s- -- view offset is treated as zero. Each view offset controls which views in- -- the source subpass the views in the destination subpass depend on.- vkPViewOffsets :: Ptr Int32- , -- | @correlationMaskCount@ is zero or a number of correlation masks.- vkCorrelationMaskCount :: Word32- , -- | @pCorrelationMasks@ is an array of view masks indicating sets of views- -- that /may/ be more efficient to render concurrently.- vkPCorrelationMasks :: Ptr Word32- }- deriving (Eq, Show)--instance Storable VkRenderPassMultiviewCreateInfo where- sizeOf ~_ = 64- alignment ~_ = 8- peek ptr = VkRenderPassMultiviewCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkRenderPassMultiviewCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkRenderPassMultiviewCreateInfo))- *> poke (ptr `plusPtr` 16) (vkSubpassCount (poked :: VkRenderPassMultiviewCreateInfo))- *> poke (ptr `plusPtr` 24) (vkPViewMasks (poked :: VkRenderPassMultiviewCreateInfo))- *> poke (ptr `plusPtr` 32) (vkDependencyCount (poked :: VkRenderPassMultiviewCreateInfo))- *> poke (ptr `plusPtr` 40) (vkPViewOffsets (poked :: VkRenderPassMultiviewCreateInfo))- *> poke (ptr `plusPtr` 48) (vkCorrelationMaskCount (poked :: VkRenderPassMultiviewCreateInfo))- *> poke (ptr `plusPtr` 56) (vkPCorrelationMasks (poked :: VkRenderPassMultiviewCreateInfo))
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_sampler_ycbcr_conversion.hs
@@ -1,1389 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion- ( VkSamplerYcbcrModelConversion(..)- , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY- , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY- , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709- , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601- , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020- , VkSamplerYcbcrRange(..)- , pattern VK_SAMPLER_YCBCR_RANGE_ITU_FULL- , pattern VK_SAMPLER_YCBCR_RANGE_ITU_NARROW- , VkChromaLocation(..)- , pattern VK_CHROMA_LOCATION_COSITED_EVEN- , pattern VK_CHROMA_LOCATION_MIDPOINT- , pattern VK_FORMAT_G8B8G8R8_422_UNORM- , pattern VK_FORMAT_B8G8R8G8_422_UNORM- , pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM- , pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM- , pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM- , pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM- , pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM- , pattern VK_FORMAT_R10X6_UNORM_PACK16- , pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16- , pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16- , pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16- , pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16- , pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16- , pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16- , pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16- , pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16- , pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16- , pattern VK_FORMAT_R12X4_UNORM_PACK16- , pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16- , pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16- , pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16- , pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16- , pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16- , pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16- , pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16- , pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16- , pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16- , pattern VK_FORMAT_G16B16G16R16_422_UNORM- , pattern VK_FORMAT_B16G16R16G16_422_UNORM- , pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM- , pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM- , pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM- , pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM- , pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM- , pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO- , pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO- , pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES- , pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES- , pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION- , pattern VK_IMAGE_CREATE_DISJOINT_BIT- , pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT- , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT- , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT- , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT- , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT- , pattern VK_FORMAT_FEATURE_DISJOINT_BIT- , pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT- , pattern VK_IMAGE_ASPECT_PLANE_0_BIT- , pattern VK_IMAGE_ASPECT_PLANE_1_BIT- , pattern VK_IMAGE_ASPECT_PLANE_2_BIT- , VkSamplerYcbcrConversion- , vkCreateSamplerYcbcrConversion- , vkDestroySamplerYcbcrConversion- , VkSamplerYcbcrConversionInfo(..)- , VkSamplerYcbcrConversionCreateInfo(..)- , VkBindImagePlaneMemoryInfo(..)- , VkImagePlaneMemoryRequirementsInfo(..)- , VkPhysicalDeviceSamplerYcbcrConversionFeatures(..)- , VkSamplerYcbcrConversionImageFormatProperties(..)- ) where--import Data.Int- ( Int32- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkFormat(..)- , VkObjectType(..)- , VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkFormatFeatureFlagBits(..)- , VkImageCreateFlagBits(..)- , VkDevice- )-import Graphics.Vulkan.Core10.ImageView- ( VkComponentMapping(..)- )-import Graphics.Vulkan.Core10.Sampler- ( VkFilter(..)- )-import Graphics.Vulkan.Core10.SparseResourceMemoryManagement- ( VkImageAspectFlagBits(..)- )----- ** VkSamplerYcbcrModelConversion---- | VkSamplerYcbcrModelConversion - Color model component of a color space------ = Description------ - @VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY@ specifies that the--- input values to the conversion are unmodified.------ - @VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY@ specifies no--- model conversion but the inputs are range expanded as for Y’CBCR.------ - @VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709@ specifies the color--- model conversion from Y’CBCR to R’G’B\' defined in BT.709 and--- described in the “BT.709 Y’CBCR conversion” section of the [Khronos--- Data Format--- Specification](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#data-format).------ - @VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601@ specifies the color--- model conversion from Y’CBCR to R’G’B\' defined in BT.601 and--- described in the “BT.601 Y’CBCR conversion” section of the [Khronos--- Data Format--- Specification](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#data-format).------ - @VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020@ specifies the color--- model conversion from Y’CBCR to R’G’B\' defined in BT.2020 and--- described in the “BT.2020 Y’CBCR conversion” section of the [Khronos--- Data Format--- Specification](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#data-format).------ In the @VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_*@ color models, for the--- input to the sampler Y’CBCR range expansion and model conversion:------ - the Y (Y\' luma) channel corresponds to the G channel of an RGB--- image.------ - the CB (CB or “U” blue color difference) channel corresponds to the--- B channel of an RGB image.------ - the CR (CR or “V” red color difference) channel corresponds to the R--- channel of an RGB image.------ - the alpha channel, if present, is not modified by color model--- conversion.------ These rules reflect the mapping of channels after the channel swizzle--- operation (controlled by--- 'VkSamplerYcbcrConversionCreateInfo'::@components@).------ __Note__------ For example, an “YUVA” 32-bit format comprising four 8-bit channels can--- be implemented as @VK_FORMAT_R8G8B8A8_UNORM@ with a component mapping:------ - @components.a@ = @VK_COMPONENT_SWIZZLE_IDENTITY@------ - @components.r@ = @VK_COMPONENT_SWIZZLE_B@------ - @components.g@ = @VK_COMPONENT_SWIZZLE_R@------ - @components.b@ = @VK_COMPONENT_SWIZZLE_G@------ = See Also------ 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferFormatPropertiesANDROID',--- 'VkSamplerYcbcrConversionCreateInfo'-newtype VkSamplerYcbcrModelConversion = VkSamplerYcbcrModelConversion Int32- deriving (Eq, Ord, Storable)--instance Show VkSamplerYcbcrModelConversion where- showsPrec _ VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = showString "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY"- showsPrec _ VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = showString "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY"- showsPrec _ VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = showString "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709"- showsPrec _ VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = showString "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601"- showsPrec _ VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = showString "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020"- showsPrec p (VkSamplerYcbcrModelConversion x) = showParen (p >= 11) (showString "VkSamplerYcbcrModelConversion " . showsPrec 11 x)--instance Read VkSamplerYcbcrModelConversion where- readPrec = parens ( choose [ ("VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY", pure VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY)- , ("VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY", pure VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY)- , ("VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709", pure VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709)- , ("VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601", pure VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601)- , ("VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020", pure VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020)- ] +++- prec 10 (do- expectP (Ident "VkSamplerYcbcrModelConversion")- v <- step readPrec- pure (VkSamplerYcbcrModelConversion v)- )- )---- No documentation found for Nested "VkSamplerYcbcrModelConversion" "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY"-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY :: VkSamplerYcbcrModelConversion-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = VkSamplerYcbcrModelConversion 0---- No documentation found for Nested "VkSamplerYcbcrModelConversion" "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY"-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY :: VkSamplerYcbcrModelConversion-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = VkSamplerYcbcrModelConversion 1---- No documentation found for Nested "VkSamplerYcbcrModelConversion" "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709"-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 :: VkSamplerYcbcrModelConversion-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = VkSamplerYcbcrModelConversion 2---- No documentation found for Nested "VkSamplerYcbcrModelConversion" "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601"-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 :: VkSamplerYcbcrModelConversion-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = VkSamplerYcbcrModelConversion 3---- No documentation found for Nested "VkSamplerYcbcrModelConversion" "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020"-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 :: VkSamplerYcbcrModelConversion-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = VkSamplerYcbcrModelConversion 4--- ** VkSamplerYcbcrRange---- | VkSamplerYcbcrRange - Range of encoded values in a color space------ = Description------ - @VK_SAMPLER_YCBCR_RANGE_ITU_FULL@ specifies that the full range of--- the encoded values are valid and interpreted according to the ITU--- “full range” quantization rules.------ - @VK_SAMPLER_YCBCR_RANGE_ITU_NARROW@ specifies that headroom and foot--- room are reserved in the numerical range of encoded values, and the--- remaining values are expanded according to the ITU “narrow range”--- quantization rules.------ The formulae for these conversions is described in the [Sampler Y’CBCR--- Range--- Expansion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion-rangeexpand)--- section of the [Image--- Operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures)--- chapter.------ No range modification takes place if @ycbcrModel@ is--- @VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY@; the @ycbcrRange@ field--- of @VkSamplerYcbcrConversionCreateInfo@ is ignored in this case.------ = See Also------ 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferFormatPropertiesANDROID',--- 'VkSamplerYcbcrConversionCreateInfo'-newtype VkSamplerYcbcrRange = VkSamplerYcbcrRange Int32- deriving (Eq, Ord, Storable)--instance Show VkSamplerYcbcrRange where- showsPrec _ VK_SAMPLER_YCBCR_RANGE_ITU_FULL = showString "VK_SAMPLER_YCBCR_RANGE_ITU_FULL"- showsPrec _ VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = showString "VK_SAMPLER_YCBCR_RANGE_ITU_NARROW"- showsPrec p (VkSamplerYcbcrRange x) = showParen (p >= 11) (showString "VkSamplerYcbcrRange " . showsPrec 11 x)--instance Read VkSamplerYcbcrRange where- readPrec = parens ( choose [ ("VK_SAMPLER_YCBCR_RANGE_ITU_FULL", pure VK_SAMPLER_YCBCR_RANGE_ITU_FULL)- , ("VK_SAMPLER_YCBCR_RANGE_ITU_NARROW", pure VK_SAMPLER_YCBCR_RANGE_ITU_NARROW)- ] +++- prec 10 (do- expectP (Ident "VkSamplerYcbcrRange")- v <- step readPrec- pure (VkSamplerYcbcrRange v)- )- )---- No documentation found for Nested "VkSamplerYcbcrRange" "VK_SAMPLER_YCBCR_RANGE_ITU_FULL"-pattern VK_SAMPLER_YCBCR_RANGE_ITU_FULL :: VkSamplerYcbcrRange-pattern VK_SAMPLER_YCBCR_RANGE_ITU_FULL = VkSamplerYcbcrRange 0---- No documentation found for Nested "VkSamplerYcbcrRange" "VK_SAMPLER_YCBCR_RANGE_ITU_NARROW"-pattern VK_SAMPLER_YCBCR_RANGE_ITU_NARROW :: VkSamplerYcbcrRange-pattern VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = VkSamplerYcbcrRange 1--- ** VkChromaLocation---- | VkChromaLocation - Position of downsampled chroma samples------ = See Also------ 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkAndroidHardwareBufferFormatPropertiesANDROID',--- 'VkSamplerYcbcrConversionCreateInfo'-newtype VkChromaLocation = VkChromaLocation Int32- deriving (Eq, Ord, Storable)--instance Show VkChromaLocation where- showsPrec _ VK_CHROMA_LOCATION_COSITED_EVEN = showString "VK_CHROMA_LOCATION_COSITED_EVEN"- showsPrec _ VK_CHROMA_LOCATION_MIDPOINT = showString "VK_CHROMA_LOCATION_MIDPOINT"- showsPrec p (VkChromaLocation x) = showParen (p >= 11) (showString "VkChromaLocation " . showsPrec 11 x)--instance Read VkChromaLocation where- readPrec = parens ( choose [ ("VK_CHROMA_LOCATION_COSITED_EVEN", pure VK_CHROMA_LOCATION_COSITED_EVEN)- , ("VK_CHROMA_LOCATION_MIDPOINT", pure VK_CHROMA_LOCATION_MIDPOINT)- ] +++- prec 10 (do- expectP (Ident "VkChromaLocation")- v <- step readPrec- pure (VkChromaLocation v)- )- )---- | @VK_CHROMA_LOCATION_COSITED_EVEN@ specifies that downsampled chroma--- samples are aligned with luma samples with even coordinates.-pattern VK_CHROMA_LOCATION_COSITED_EVEN :: VkChromaLocation-pattern VK_CHROMA_LOCATION_COSITED_EVEN = VkChromaLocation 0---- | @VK_CHROMA_LOCATION_MIDPOINT@ specifies that downsampled chroma samples--- are located half way between each even luma sample and the nearest--- higher odd luma sample.-pattern VK_CHROMA_LOCATION_MIDPOINT :: VkChromaLocation-pattern VK_CHROMA_LOCATION_MIDPOINT = VkChromaLocation 1--- | @VK_FORMAT_G8B8G8R8_422_UNORM@ specifies a four-component, 32-bit format--- containing a pair of G components, an R component, and a B component,--- collectively encoding a 2×1 rectangle of unsigned normalized RGB texel--- data. One G value is present at each /i/ coordinate, with the B and R--- values shared across both G values and thus recorded at half the--- horizontal resolution of the image. This format has an 8-bit G component--- for the even /i/ coordinate in byte 0, an 8-bit B component in byte 1,--- an 8-bit G component for the odd /i/ coordinate in byte 2, and an 8-bit--- R component in byte 3. Images in this format /must/ be defined with a--- width that is a multiple of two. For the purposes of the constraints on--- copy extents, this format is treated as a compressed format with a 2×1--- compressed texel block.-pattern VK_FORMAT_G8B8G8R8_422_UNORM :: VkFormat-pattern VK_FORMAT_G8B8G8R8_422_UNORM = VkFormat 1000156000--- | @VK_FORMAT_B8G8R8G8_422_UNORM@ specifies a four-component, 32-bit format--- containing a pair of G components, an R component, and a B component,--- collectively encoding a 2×1 rectangle of unsigned normalized RGB texel--- data. One G value is present at each /i/ coordinate, with the B and R--- values shared across both G values and thus recorded at half the--- horizontal resolution of the image. This format has an 8-bit B component--- in byte 0, an 8-bit G component for the even /i/ coordinate in byte 1,--- an 8-bit R component in byte 2, and an 8-bit G component for the odd /i/--- coordinate in byte 3. Images in this format /must/ be defined with a--- width that is a multiple of two. For the purposes of the constraints on--- copy extents, this format is treated as a compressed format with a 2×1--- compressed texel block.-pattern VK_FORMAT_B8G8R8G8_422_UNORM :: VkFormat-pattern VK_FORMAT_B8G8R8G8_422_UNORM = VkFormat 1000156001--- | @VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM@ specifies a unsigned normalized--- /multi-planar format/ that has an 8-bit G component in plane 0, an 8-bit--- B component in plane 1, and an 8-bit R component in plane 2. The--- horizontal and vertical dimensions of the R and B planes are halved--- relative to the image dimensions, and each R and B component is shared--- with the G components for which \(\lfloor i_G \times 0.5--- \rfloor = i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B--- = j_R\). The location of each plane when this image is in linear layout--- can be determined via--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,--- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and--- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane. Images in this format--- /must/ be defined with a width and height that is a multiple of two.-pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM :: VkFormat-pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = VkFormat 1000156002--- | @VK_FORMAT_G8_B8R8_2PLANE_420_UNORM@ specifies a unsigned normalized--- /multi-planar format/ that has an 8-bit G component in plane 0, and a--- two-component, 16-bit BR plane 1 consisting of an 8-bit B component in--- byte 0 and an 8-bit R component in byte 1. The horizontal and vertical--- dimensions of the BR plane is halved relative to the image dimensions,--- and each R and B value is shared with the G components for which--- \(\lfloor i_G \times 0.5 \rfloor =--- i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B = j_R\). The--- location of each plane when this image is in linear layout can be--- determined via--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane, and--- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the BR plane. Images in this format--- /must/ be defined with a width and height that is a multiple of two.-pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM :: VkFormat-pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = VkFormat 1000156003--- | @VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM@ specifies a unsigned normalized--- /multi-planar format/ that has an 8-bit G component in plane 0, an 8-bit--- B component in plane 1, and an 8-bit R component in plane 2. The--- horizontal dimension of the R and B plane is halved relative to the--- image dimensions, and each R and B value is shared with the G components--- for which \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location--- of each plane when this image is in linear layout can be determined via--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,--- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and--- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane. Images in this format--- /must/ be defined with a width that is a multiple of two.-pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM :: VkFormat-pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = VkFormat 1000156004--- | @VK_FORMAT_G8_B8R8_2PLANE_422_UNORM@ specifies a unsigned normalized--- /multi-planar format/ that has an 8-bit G component in plane 0, and a--- two-component, 16-bit BR plane 1 consisting of an 8-bit B component in--- byte 0 and an 8-bit R component in byte 1. The horizontal dimensions of--- the BR plane is halved relative to the image dimensions, and each R and--- B value is shared with the G components for which--- \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location of each--- plane when this image is in linear layout can be determined via--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane, and--- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the BR plane. Images in this format--- /must/ be defined with a width that is a multiple of two.-pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM :: VkFormat-pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = VkFormat 1000156005--- | @VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM@ specifies a unsigned normalized--- /multi-planar format/ that has an 8-bit G component in plane 0, an 8-bit--- B component in plane 1, and an 8-bit R component in plane 2. Each plane--- has the same dimensions and each R, G and B component contributes to a--- single texel. The location of each plane when this image is in linear--- layout can be determined via--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,--- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and--- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane.-pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM :: VkFormat-pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = VkFormat 1000156006--- | @VK_FORMAT_R10X6_UNORM_PACK16@ specifies a one-component, 16-bit--- unsigned normalized format that has a single 10-bit R component in the--- top 10 bits of a 16-bit word, with the bottom 6 bits set to 0.-pattern VK_FORMAT_R10X6_UNORM_PACK16 :: VkFormat-pattern VK_FORMAT_R10X6_UNORM_PACK16 = VkFormat 1000156007--- | @VK_FORMAT_R10X6G10X6_UNORM_2PACK16@ specifies a two-component, 32-bit--- unsigned normalized format that has a 10-bit R component in the top 10--- bits of the word in bytes 0..1, and a 10-bit G component in the top 10--- bits of the word in bytes 2..3, with the bottom 6 bits of each word set--- to 0.-pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16 :: VkFormat-pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = VkFormat 1000156008--- | @VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16@ specifies a--- four-component, 64-bit unsigned normalized format that has a 10-bit R--- component in the top 10 bits of the word in bytes 0..1, a 10-bit G--- component in the top 10 bits of the word in bytes 2..3, a 10-bit B--- component in the top 10 bits of the word in bytes 4..5, and a 10-bit A--- component in the top 10 bits of the word in bytes 6..7, with the bottom--- 6 bits of each word set to 0.-pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 :: VkFormat-pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = VkFormat 1000156009--- | @VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16@ specifies a--- four-component, 64-bit format containing a pair of G components, an R--- component, and a B component, collectively encoding a 2×1 rectangle of--- unsigned normalized RGB texel data. One G value is present at each /i/--- coordinate, with the B and R values shared across both G values and thus--- recorded at half the horizontal resolution of the image. This format has--- a 10-bit G component for the even /i/ coordinate in the top 10 bits of--- the word in bytes 0..1, a 10-bit B component in the top 10 bits of the--- word in bytes 2..3, a 10-bit G component for the odd /i/ coordinate in--- the top 10 bits of the word in bytes 4..5, and a 10-bit R component in--- the top 10 bits of the word in bytes 6..7, with the bottom 6 bits of--- each word set to 0. Images in this format /must/ be defined with a width--- that is a multiple of two. For the purposes of the constraints on copy--- extents, this format is treated as a compressed format with a 2×1--- compressed texel block.-pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 :: VkFormat-pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = VkFormat 1000156010--- | @VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16@ specifies a--- four-component, 64-bit format containing a pair of G components, an R--- component, and a B component, collectively encoding a 2×1 rectangle of--- unsigned normalized RGB texel data. One G value is present at each /i/--- coordinate, with the B and R values shared across both G values and thus--- recorded at half the horizontal resolution of the image. This format has--- a 10-bit B component in the top 10 bits of the word in bytes 0..1, a--- 10-bit G component for the even /i/ coordinate in the top 10 bits of the--- word in bytes 2..3, a 10-bit R component in the top 10 bits of the word--- in bytes 4..5, and a 10-bit G component for the odd /i/ coordinate in--- the top 10 bits of the word in bytes 6..7, with the bottom 6 bits of--- each word set to 0. Images in this format /must/ be defined with a width--- that is a multiple of two. For the purposes of the constraints on copy--- extents, this format is treated as a compressed format with a 2×1--- compressed texel block.-pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 :: VkFormat-pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = VkFormat 1000156011--- | @VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16@ specifies a--- unsigned normalized /multi-planar format/ that has a 10-bit G component--- in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component--- in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R--- component in the top 10 bits of each 16-bit word of plane 2, with the--- bottom 6 bits of each word set to 0. The horizontal and vertical--- dimensions of the R and B planes are halved relative to the image--- dimensions, and each R and B component is shared with the G components--- for which \(\lfloor i_G \times 0.5--- \rfloor = i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B--- = j_R\). The location of each plane when this image is in linear layout--- can be determined via--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,--- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and--- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane. Images in this format--- /must/ be defined with a width and height that is a multiple of two.-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 :: VkFormat-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = VkFormat 1000156012--- | @VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16@ specifies a--- unsigned normalized /multi-planar format/ that has a 10-bit G component--- in the top 10 bits of each 16-bit word of plane 0, and a two-component,--- 32-bit BR plane 1 consisting of a 10-bit B component in the top 10 bits--- of the word in bytes 0..1, and a 10-bit R component in the top 10 bits--- of the word in bytes 2..3, the bottom 6 bits of each word set to 0. The--- horizontal and vertical dimensions of the BR plane is halved relative to--- the image dimensions, and each R and B value is shared with the G--- components for which \(\lfloor i_G \times 0.5 \rfloor =--- i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B = j_R\). The--- location of each plane when this image is in linear layout can be--- determined via--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane, and--- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the BR plane. Images in this format--- /must/ be defined with a width and height that is a multiple of two.-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 :: VkFormat-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = VkFormat 1000156013--- | @VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16@ specifies a--- unsigned normalized /multi-planar format/ that has a 10-bit G component--- in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component--- in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R--- component in the top 10 bits of each 16-bit word of plane 2, with the--- bottom 6 bits of each word set to 0. The horizontal dimension of the R--- and B plane is halved relative to the image dimensions, and each R and B--- value is shared with the G components for which--- \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location of each--- plane when this image is in linear layout can be determined via--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,--- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and--- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane. Images in this format--- /must/ be defined with a width that is a multiple of two.-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 :: VkFormat-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = VkFormat 1000156014--- | @VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16@ specifies a--- unsigned normalized /multi-planar format/ that has a 10-bit G component--- in the top 10 bits of each 16-bit word of plane 0, and a two-component,--- 32-bit BR plane 1 consisting of a 10-bit B component in the top 10 bits--- of the word in bytes 0..1, and a 10-bit R component in the top 10 bits--- of the word in bytes 2..3, the bottom 6 bits of each word set to 0. The--- horizontal dimensions of the BR plane is halved relative to the image--- dimensions, and each R and B value is shared with the G components for--- which \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location of--- each plane when this image is in linear layout can be determined via--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane, and--- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the BR plane. Images in this format--- /must/ be defined with a width that is a multiple of two.-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 :: VkFormat-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = VkFormat 1000156015--- | @VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16@ specifies a--- unsigned normalized /multi-planar format/ that has a 10-bit G component--- in the top 10 bits of each 16-bit word of plane 0, a 10-bit B component--- in the top 10 bits of each 16-bit word of plane 1, and a 10-bit R--- component in the top 10 bits of each 16-bit word of plane 2, with the--- bottom 6 bits of each word set to 0. Each plane has the same dimensions--- and each R, G and B component contributes to a single texel. The--- location of each plane when this image is in linear layout can be--- determined via--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,--- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and--- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane.-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 :: VkFormat-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = VkFormat 1000156016--- | @VK_FORMAT_R12X4_UNORM_PACK16@ specifies a one-component, 16-bit--- unsigned normalized format that has a single 12-bit R component in the--- top 12 bits of a 16-bit word, with the bottom 4 bits set to 0.-pattern VK_FORMAT_R12X4_UNORM_PACK16 :: VkFormat-pattern VK_FORMAT_R12X4_UNORM_PACK16 = VkFormat 1000156017--- | @VK_FORMAT_R12X4G12X4_UNORM_2PACK16@ specifies a two-component, 32-bit--- unsigned normalized format that has a 12-bit R component in the top 12--- bits of the word in bytes 0..1, and a 12-bit G component in the top 12--- bits of the word in bytes 2..3, with the bottom 4 bits of each word set--- to 0.-pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16 :: VkFormat-pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = VkFormat 1000156018--- | @VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16@ specifies a--- four-component, 64-bit unsigned normalized format that has a 12-bit R--- component in the top 12 bits of the word in bytes 0..1, a 12-bit G--- component in the top 12 bits of the word in bytes 2..3, a 12-bit B--- component in the top 12 bits of the word in bytes 4..5, and a 12-bit A--- component in the top 12 bits of the word in bytes 6..7, with the bottom--- 4 bits of each word set to 0.-pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 :: VkFormat-pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = VkFormat 1000156019--- | @VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16@ specifies a--- four-component, 64-bit format containing a pair of G components, an R--- component, and a B component, collectively encoding a 2×1 rectangle of--- unsigned normalized RGB texel data. One G value is present at each /i/--- coordinate, with the B and R values shared across both G values and thus--- recorded at half the horizontal resolution of the image. This format has--- a 12-bit G component for the even /i/ coordinate in the top 12 bits of--- the word in bytes 0..1, a 12-bit B component in the top 12 bits of the--- word in bytes 2..3, a 12-bit G component for the odd /i/ coordinate in--- the top 12 bits of the word in bytes 4..5, and a 12-bit R component in--- the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of--- each word set to 0. Images in this format /must/ be defined with a width--- that is a multiple of two. For the purposes of the constraints on copy--- extents, this format is treated as a compressed format with a 2×1--- compressed texel block.-pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 :: VkFormat-pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = VkFormat 1000156020--- | @VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16@ specifies a--- four-component, 64-bit format containing a pair of G components, an R--- component, and a B component, collectively encoding a 2×1 rectangle of--- unsigned normalized RGB texel data. One G value is present at each /i/--- coordinate, with the B and R values shared across both G values and thus--- recorded at half the horizontal resolution of the image. This format has--- a 12-bit B component in the top 12 bits of the word in bytes 0..1, a--- 12-bit G component for the even /i/ coordinate in the top 12 bits of the--- word in bytes 2..3, a 12-bit R component in the top 12 bits of the word--- in bytes 4..5, and a 12-bit G component for the odd /i/ coordinate in--- the top 12 bits of the word in bytes 6..7, with the bottom 4 bits of--- each word set to 0. Images in this format /must/ be defined with a width--- that is a multiple of two. For the purposes of the constraints on copy--- extents, this format is treated as a compressed format with a 2×1--- compressed texel block.-pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 :: VkFormat-pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = VkFormat 1000156021--- | @VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16@ specifies a--- unsigned normalized /multi-planar format/ that has a 12-bit G component--- in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component--- in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R--- component in the top 12 bits of each 16-bit word of plane 2, with the--- bottom 4 bits of each word set to 0. The horizontal and vertical--- dimensions of the R and B planes are halved relative to the image--- dimensions, and each R and B component is shared with the G components--- for which \(\lfloor i_G \times 0.5--- \rfloor = i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B--- = j_R\). The location of each plane when this image is in linear layout--- can be determined via--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,--- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and--- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane. Images in this format--- /must/ be defined with a width and height that is a multiple of two.-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 :: VkFormat-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = VkFormat 1000156022--- | @VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16@ specifies a--- unsigned normalized /multi-planar format/ that has a 12-bit G component--- in the top 12 bits of each 16-bit word of plane 0, and a two-component,--- 32-bit BR plane 1 consisting of a 12-bit B component in the top 12 bits--- of the word in bytes 0..1, and a 12-bit R component in the top 12 bits--- of the word in bytes 2..3, the bottom 4 bits of each word set to 0. The--- horizontal and vertical dimensions of the BR plane is halved relative to--- the image dimensions, and each R and B value is shared with the G--- components for which \(\lfloor i_G \times 0.5 \rfloor =--- i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B = j_R\). The--- location of each plane when this image is in linear layout can be--- determined via--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane, and--- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the BR plane. Images in this format--- /must/ be defined with a width and height that is a multiple of two.-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 :: VkFormat-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = VkFormat 1000156023--- | @VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16@ specifies a--- unsigned normalized /multi-planar format/ that has a 12-bit G component--- in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component--- in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R--- component in the top 12 bits of each 16-bit word of plane 2, with the--- bottom 4 bits of each word set to 0. The horizontal dimension of the R--- and B plane is halved relative to the image dimensions, and each R and B--- value is shared with the G components for which--- \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location of each--- plane when this image is in linear layout can be determined via--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,--- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and--- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane. Images in this format--- /must/ be defined with a width that is a multiple of two.-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 :: VkFormat-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = VkFormat 1000156024--- | @VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16@ specifies a--- unsigned normalized /multi-planar format/ that has a 12-bit G component--- in the top 12 bits of each 16-bit word of plane 0, and a two-component,--- 32-bit BR plane 1 consisting of a 12-bit B component in the top 12 bits--- of the word in bytes 0..1, and a 12-bit R component in the top 12 bits--- of the word in bytes 2..3, the bottom 4 bits of each word set to 0. The--- horizontal dimensions of the BR plane is halved relative to the image--- dimensions, and each R and B value is shared with the G components for--- which \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location of--- each plane when this image is in linear layout can be determined via--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane, and--- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the BR plane. Images in this format--- /must/ be defined with a width that is a multiple of two.-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 :: VkFormat-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = VkFormat 1000156025--- | @VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16@ specifies a--- unsigned normalized /multi-planar format/ that has a 12-bit G component--- in the top 12 bits of each 16-bit word of plane 0, a 12-bit B component--- in the top 12 bits of each 16-bit word of plane 1, and a 12-bit R--- component in the top 12 bits of each 16-bit word of plane 2, with the--- bottom 4 bits of each word set to 0. Each plane has the same dimensions--- and each R, G and B component contributes to a single texel. The--- location of each plane when this image is in linear layout can be--- determined via--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,--- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and--- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane.-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 :: VkFormat-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = VkFormat 1000156026--- | @VK_FORMAT_G16B16G16R16_422_UNORM@ specifies a four-component, 64-bit--- format containing a pair of G components, an R component, and a B--- component, collectively encoding a 2×1 rectangle of unsigned normalized--- RGB texel data. One G value is present at each /i/ coordinate, with the--- B and R values shared across both G values and thus recorded at half the--- horizontal resolution of the image. This format has a 16-bit G component--- for the even /i/ coordinate in the word in bytes 0..1, a 16-bit B--- component in the word in bytes 2..3, a 16-bit G component for the odd--- /i/ coordinate in the word in bytes 4..5, and a 16-bit R component in--- the word in bytes 6..7. Images in this format /must/ be defined with a--- width that is a multiple of two. For the purposes of the constraints on--- copy extents, this format is treated as a compressed format with a 2×1--- compressed texel block.-pattern VK_FORMAT_G16B16G16R16_422_UNORM :: VkFormat-pattern VK_FORMAT_G16B16G16R16_422_UNORM = VkFormat 1000156027--- | @VK_FORMAT_B16G16R16G16_422_UNORM@ specifies a four-component, 64-bit--- format containing a pair of G components, an R component, and a B--- component, collectively encoding a 2×1 rectangle of unsigned normalized--- RGB texel data. One G value is present at each /i/ coordinate, with the--- B and R values shared across both G values and thus recorded at half the--- horizontal resolution of the image. This format has a 16-bit B component--- in the word in bytes 0..1, a 16-bit G component for the even /i/--- coordinate in the word in bytes 2..3, a 16-bit R component in the word--- in bytes 4..5, and a 16-bit G component for the odd /i/ coordinate in--- the word in bytes 6..7. Images in this format /must/ be defined with a--- width that is a multiple of two. For the purposes of the constraints on--- copy extents, this format is treated as a compressed format with a 2×1--- compressed texel block.-pattern VK_FORMAT_B16G16R16G16_422_UNORM :: VkFormat-pattern VK_FORMAT_B16G16R16G16_422_UNORM = VkFormat 1000156028--- | @VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM@ specifies a unsigned normalized--- /multi-planar format/ that has a 16-bit G component in each 16-bit word--- of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a--- 16-bit R component in each 16-bit word of plane 2. The horizontal and--- vertical dimensions of the R and B planes are halved relative to the--- image dimensions, and each R and B component is shared with the G--- components for which \(\lfloor i_G \times 0.5--- \rfloor = i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B--- = j_R\). The location of each plane when this image is in linear layout--- can be determined via--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,--- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and--- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane. Images in this format--- /must/ be defined with a width and height that is a multiple of two.-pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM :: VkFormat-pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = VkFormat 1000156029--- | @VK_FORMAT_G16_B16R16_2PLANE_420_UNORM@ specifies a unsigned normalized--- /multi-planar format/ that has a 16-bit G component in each 16-bit word--- of plane 0, and a two-component, 32-bit BR plane 1 consisting of a--- 16-bit B component in the word in bytes 0..1, and a 16-bit R component--- in the word in bytes 2..3. The horizontal and vertical dimensions of the--- BR plane is halved relative to the image dimensions, and each R and B--- value is shared with the G components for which--- \(\lfloor i_G \times 0.5 \rfloor =--- i_B = i_R\) and \(\lfloor j_G \times 0.5 \rfloor = j_B = j_R\). The--- location of each plane when this image is in linear layout can be--- determined via--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane, and--- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the BR plane. Images in this format--- /must/ be defined with a width and height that is a multiple of two.-pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM :: VkFormat-pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = VkFormat 1000156030--- | @VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM@ specifies a unsigned normalized--- /multi-planar format/ that has a 16-bit G component in each 16-bit word--- of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a--- 16-bit R component in each 16-bit word of plane 2. The horizontal--- dimension of the R and B plane is halved relative to the image--- dimensions, and each R and B value is shared with the G components for--- which \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location of--- each plane when this image is in linear layout can be determined via--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,--- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and--- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane. Images in this format--- /must/ be defined with a width that is a multiple of two.-pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM :: VkFormat-pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = VkFormat 1000156031--- | @VK_FORMAT_G16_B16R16_2PLANE_422_UNORM@ specifies a unsigned normalized--- /multi-planar format/ that has a 16-bit G component in each 16-bit word--- of plane 0, and a two-component, 32-bit BR plane 1 consisting of a--- 16-bit B component in the word in bytes 0..1, and a 16-bit R component--- in the word in bytes 2..3. The horizontal dimensions of the BR plane is--- halved relative to the image dimensions, and each R and B value is--- shared with the G components for which--- \(\lfloor i_G \times 0.5 \rfloor = i_B = i_R\). The location of each--- plane when this image is in linear layout can be determined via--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane, and--- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the BR plane. Images in this format--- /must/ be defined with a width that is a multiple of two.-pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM :: VkFormat-pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = VkFormat 1000156032--- | @VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM@ specifies a unsigned normalized--- /multi-planar format/ that has a 16-bit G component in each 16-bit word--- of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a--- 16-bit R component in each 16-bit word of plane 2. Each plane has the--- same dimensions and each R, G and B component contributes to a single--- texel. The location of each plane when this image is in linear layout--- can be determined via--- 'Graphics.Vulkan.Core10.Image.vkGetImageSubresourceLayout', using--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ for the G plane,--- @VK_IMAGE_ASPECT_PLANE_1_BIT@ for the B plane, and--- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for the R plane.-pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM :: VkFormat-pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = VkFormat 1000156033--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = VkStructureType 1000156000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = VkStructureType 1000156001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = VkStructureType 1000156002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"-pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = VkStructureType 1000156003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = VkStructureType 1000156004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES :: VkStructureType-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = VkStructureType 1000156005--- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION"-pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION :: VkObjectType-pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = VkObjectType 1000156000--- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_DISJOINT_BIT"-pattern VK_IMAGE_CREATE_DISJOINT_BIT :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_DISJOINT_BIT = VkImageCreateFlagBits 0x00000200--- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT"-pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = VkFormatFeatureFlagBits 0x00020000--- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = VkFormatFeatureFlagBits 0x00040000--- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = VkFormatFeatureFlagBits 0x00080000--- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = VkFormatFeatureFlagBits 0x00100000--- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = VkFormatFeatureFlagBits 0x00200000--- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_DISJOINT_BIT"-pattern VK_FORMAT_FEATURE_DISJOINT_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_DISJOINT_BIT = VkFormatFeatureFlagBits 0x00400000--- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT"-pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = VkFormatFeatureFlagBits 0x00800000--- No documentation found for Nested "VkImageAspectFlagBits" "VK_IMAGE_ASPECT_PLANE_0_BIT"-pattern VK_IMAGE_ASPECT_PLANE_0_BIT :: VkImageAspectFlagBits-pattern VK_IMAGE_ASPECT_PLANE_0_BIT = VkImageAspectFlagBits 0x00000010--- No documentation found for Nested "VkImageAspectFlagBits" "VK_IMAGE_ASPECT_PLANE_1_BIT"-pattern VK_IMAGE_ASPECT_PLANE_1_BIT :: VkImageAspectFlagBits-pattern VK_IMAGE_ASPECT_PLANE_1_BIT = VkImageAspectFlagBits 0x00000020--- No documentation found for Nested "VkImageAspectFlagBits" "VK_IMAGE_ASPECT_PLANE_2_BIT"-pattern VK_IMAGE_ASPECT_PLANE_2_BIT :: VkImageAspectFlagBits-pattern VK_IMAGE_ASPECT_PLANE_2_BIT = VkImageAspectFlagBits 0x00000040--- | Dummy data to tag the 'Ptr' with-data VkSamplerYcbcrConversion_T--- | VkSamplerYcbcrConversion - NO SHORT DESCRIPTION PROVIDED------ = See Also------ 'VkSamplerYcbcrConversionInfo', 'vkCreateSamplerYcbcrConversion',--- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.vkCreateSamplerYcbcrConversionKHR',--- 'vkDestroySamplerYcbcrConversion',--- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.vkDestroySamplerYcbcrConversionKHR'-type VkSamplerYcbcrConversion = Ptr VkSamplerYcbcrConversion_T--- | vkCreateSamplerYcbcrConversion - Create a new Ycbcr conversion------ = Parameters------ - @device@ is the logical device that creates the sampler Y’CBCR--- conversion.------ - @pCreateInfo@ is a pointer to an instance of the--- 'VkSamplerYcbcrConversionCreateInfo' specifying the requested--- sampler Y’CBCR conversion.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ - @pYcbcrConversion@ points to a 'VkSamplerYcbcrConversion' handle in--- which the resulting sampler Y’CBCR conversion is returned.------ = Description------ The interpretation of the configured sampler Y’CBCR conversion is--- described in more detail in [the description of sampler Y’CBCR--- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion)--- in the [Image--- Operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures)--- chapter.------ == Valid Usage------ - The [sampler Y’CBCR conversion--- feature](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-sampler-YCbCr-conversion)--- /must/ be enabled------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkSamplerYcbcrConversionCreateInfo@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pYcbcrConversion@ /must/ be a valid pointer to a--- @VkSamplerYcbcrConversion@ handle------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkSamplerYcbcrConversion', 'VkSamplerYcbcrConversionCreateInfo'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateSamplerYcbcrConversion" vkCreateSamplerYcbcrConversion :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerYcbcrConversionCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pYcbcrConversion" ::: Ptr VkSamplerYcbcrConversion) -> IO VkResult--- | vkDestroySamplerYcbcrConversion - Destroy a created Y’CbCr conversion------ = Parameters------ - @device@ is the logical device that destroys the Y’CBCR conversion.------ - @ycbcrConversion@ is the conversion to destroy.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - If @ycbcrConversion@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @ycbcrConversion@--- /must/ be a valid @VkSamplerYcbcrConversion@ handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - If @ycbcrConversion@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@------ == Host Synchronization------ - Host access to @ycbcrConversion@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkSamplerYcbcrConversion'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroySamplerYcbcrConversion" vkDestroySamplerYcbcrConversion :: ("device" ::: VkDevice) -> ("ycbcrConversion" ::: VkSamplerYcbcrConversion) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | VkSamplerYcbcrConversionInfo - Structure specifying Y’CbCr conversion to--- a sampler or image view------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO@------ - @conversion@ /must/ be a valid @VkSamplerYcbcrConversion@ handle------ = See Also------ 'VkSamplerYcbcrConversion',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkSamplerYcbcrConversionInfo = VkSamplerYcbcrConversionInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @conversion@ is a 'VkSamplerYcbcrConversion' handle created with- -- 'vkCreateSamplerYcbcrConversion'.- vkConversion :: VkSamplerYcbcrConversion- }- deriving (Eq, Show)--instance Storable VkSamplerYcbcrConversionInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkSamplerYcbcrConversionInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkSamplerYcbcrConversionInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkSamplerYcbcrConversionInfo))- *> poke (ptr `plusPtr` 16) (vkConversion (poked :: VkSamplerYcbcrConversionInfo))--- | VkSamplerYcbcrConversionCreateInfo - Structure specifying the parameters--- of the newly created conversion------ = Description------ __Note__------ Setting @forceExplicitReconstruction@ to @VK_TRUE@ /may/ have a--- performance penalty on implementations where explicit reconstruction is--- not the default mode of operation.------ If the @pNext@ chain has an instance of--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkExternalFormatANDROID'--- with non-zero @externalFormat@ member, the sampler Y’CBCR conversion--- object represents an /external format conversion/, and @format@ /must/--- be @VK_FORMAT_UNDEFINED@. Such conversions /must/ only be used to sample--- image views with a matching [external--- format](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats).--- When creating an external format conversion, the value of @components@--- is ignored.------ == Valid Usage------ - If an external format conversion is being created, @format@ /must/--- be @VK_FORMAT_UNDEFINED@, otherwise it /must/ not be--- @VK_FORMAT_UNDEFINED@.------ - @format@ /must/ support--- @VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT@ or--- @VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT@------ - If the format does not support--- @VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT@, @xChromaOffset@ and--- @yChromaOffset@ /must/ not be @VK_CHROMA_LOCATION_COSITED_EVEN@------ - If the format does not support--- @VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT@, @xChromaOffset@ and--- @yChromaOffset@ /must/ not be @VK_CHROMA_LOCATION_MIDPOINT@------ - @format@ /must/ represent unsigned normalized values (i.e. the--- format must be a @UNORM@ format)------ - If the format has a @_422@ or @_420@ suffix:------ - @components.g@ /must/ be @VK_COMPONENT_SWIZZLE_IDENTITY@------ - @components.a@ /must/ be @VK_COMPONENT_SWIZZLE_IDENTITY@,--- @VK_COMPONENT_SWIZZLE_ONE@, or @VK_COMPONENT_SWIZZLE_ZERO@------ - @components.r@ /must/ be @VK_COMPONENT_SWIZZLE_IDENTITY@ or--- @VK_COMPONENT_SWIZZLE_B@------ - @components.b@ /must/ be @VK_COMPONENT_SWIZZLE_IDENTITY@ or--- @VK_COMPONENT_SWIZZLE_R@------ - If either @components.r@ or @components.b@ is--- @VK_COMPONENT_SWIZZLE_IDENTITY@, both values /must/ be--- @VK_COMPONENT_SWIZZLE_IDENTITY@------ - If @ycbcrModel@ is not--- @VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY@, then--- @components.r@, @components.g@, and @components.b@ /must/ correspond--- to channels of the @format@; that is, @components.r@,--- @components.g@, and @components.b@ /must/ not be--- @VK_COMPONENT_SWIZZLE_ZERO@ or @VK_COMPONENT_SWIZZLE_ONE@, and--- /must/ not correspond to a channel which contains zero or one as a--- consequence of [conversion to--- RGBA](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-conversion-to-rgba)------ - If the format does not support--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT@,--- @forceExplicitReconstruction@ /must/ be FALSE------ - If the format does not support--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT@,--- @chromaFilter@ /must/ be @VK_FILTER_NEAREST@------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO@------ - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.VkExternalFormatANDROID'------ - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'--- value------ - @ycbcrModel@ /must/ be a valid 'VkSamplerYcbcrModelConversion' value------ - @ycbcrRange@ /must/ be a valid 'VkSamplerYcbcrRange' value------ - @components@ /must/ be a valid @VkComponentMapping@ structure------ - @xChromaOffset@ /must/ be a valid 'VkChromaLocation' value------ - @yChromaOffset@ /must/ be a valid 'VkChromaLocation' value------ - @chromaFilter@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Sampler.VkFilter' value------ If @chromaFilter@ is @VK_FILTER_NEAREST@, chroma samples are--- reconstructed to luma channel resolution using nearest-neighbour--- sampling. Otherwise, chroma samples are reconstructed using--- interpolation. More details can be found in [the description of sampler--- Y’CBCR--- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion)--- in the [Image--- Operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures)--- chapter.------ = See Also------ @VkBool32@, 'VkChromaLocation',--- 'Graphics.Vulkan.Core10.ImageView.VkComponentMapping',--- 'Graphics.Vulkan.Core10.Sampler.VkFilter',--- 'Graphics.Vulkan.Core10.Core.VkFormat', 'VkSamplerYcbcrModelConversion',--- 'VkSamplerYcbcrRange', 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkCreateSamplerYcbcrConversion',--- 'Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion.vkCreateSamplerYcbcrConversionKHR'-data VkSamplerYcbcrConversionCreateInfo = VkSamplerYcbcrConversionCreateInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @format@ is the format of the image from which color information will be- -- retrieved.- vkFormat :: VkFormat- , -- | @ycbcrModel@ describes the color matrix for conversion between color- -- models.- vkYcbcrModel :: VkSamplerYcbcrModelConversion- , -- | @ycbcrRange@ describes whether the encoded values have headroom and foot- -- room, or whether the encoding uses the full numerical range.- vkYcbcrRange :: VkSamplerYcbcrRange- , -- | @components@ applies a /swizzle/ based on- -- 'Graphics.Vulkan.Core10.ImageView.VkComponentSwizzle' enums prior to- -- range expansion and color model conversion.- vkComponents :: VkComponentMapping- , -- | @xChromaOffset@ describes the [sample- -- location](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-chroma-reconstruction)- -- associated with downsampled chroma channels in the x dimension.- -- @xChromaOffset@ has no effect for formats in which chroma channels are- -- the same resolution as the luma channel.- vkXChromaOffset :: VkChromaLocation- , -- | @yChromaOffset@ describes the [sample- -- location](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-chroma-reconstruction)- -- associated with downsampled chroma channels in the y dimension.- -- @yChromaOffset@ has no effect for formats in which the chroma channels- -- are not downsampled vertically.- vkYChromaOffset :: VkChromaLocation- , -- | @chromaFilter@ is the filter for chroma reconstruction.- vkChromaFilter :: VkFilter- , -- | @forceExplicitReconstruction@ /can/ be used to ensure that- -- reconstruction is done explicitly, if supported.- vkForceExplicitReconstruction :: VkBool32- }- deriving (Eq, Show)--instance Storable VkSamplerYcbcrConversionCreateInfo where- sizeOf ~_ = 64- alignment ~_ = 8- peek ptr = VkSamplerYcbcrConversionCreateInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 52)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkSamplerYcbcrConversionCreateInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkSamplerYcbcrConversionCreateInfo))- *> poke (ptr `plusPtr` 16) (vkFormat (poked :: VkSamplerYcbcrConversionCreateInfo))- *> poke (ptr `plusPtr` 20) (vkYcbcrModel (poked :: VkSamplerYcbcrConversionCreateInfo))- *> poke (ptr `plusPtr` 24) (vkYcbcrRange (poked :: VkSamplerYcbcrConversionCreateInfo))- *> poke (ptr `plusPtr` 28) (vkComponents (poked :: VkSamplerYcbcrConversionCreateInfo))- *> poke (ptr `plusPtr` 44) (vkXChromaOffset (poked :: VkSamplerYcbcrConversionCreateInfo))- *> poke (ptr `plusPtr` 48) (vkYChromaOffset (poked :: VkSamplerYcbcrConversionCreateInfo))- *> poke (ptr `plusPtr` 52) (vkChromaFilter (poked :: VkSamplerYcbcrConversionCreateInfo))- *> poke (ptr `plusPtr` 56) (vkForceExplicitReconstruction (poked :: VkSamplerYcbcrConversionCreateInfo))--- | VkBindImagePlaneMemoryInfo - Structure specifying how to bind an image--- plane to memory------ == Valid Usage------ - @planeAspect@ /must/ be a single valid plane aspect for the image--- format (that is, @planeAspect@ /must/ be--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ or @VK_IMAGE_ASPECT_PLANE_1_BIT@ for--- “@_2PLANE@” formats and @planeAspect@ /must/ be--- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@, or--- @VK_IMAGE_ASPECT_PLANE_2_BIT@ for “@_3PLANE@” formats)------ - A single call to--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.vkBindImageMemory2'--- /must/ bind all or none of the planes of an image (i.e. bindings to--- all planes of an image /must/ be made in a single--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2.vkBindImageMemory2'--- call), as separate bindings------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO@------ - @planeAspect@ /must/ be a valid--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlagBits'--- value------ = See Also------ 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlagBits',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkBindImagePlaneMemoryInfo = VkBindImagePlaneMemoryInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @planeAspect@ is the aspect of the disjoint image plane to bind.- vkPlaneAspect :: VkImageAspectFlagBits- }- deriving (Eq, Show)--instance Storable VkBindImagePlaneMemoryInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkBindImagePlaneMemoryInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkBindImagePlaneMemoryInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkBindImagePlaneMemoryInfo))- *> poke (ptr `plusPtr` 16) (vkPlaneAspect (poked :: VkBindImagePlaneMemoryInfo))--- | VkImagePlaneMemoryRequirementsInfo - Structure specifying image plane--- for memory requirements------ == Valid Usage------ - @planeAspect@ /must/ be an aspect that exists in the format; that--- is, for a two-plane image @planeAspect@ /must/ be--- @VK_IMAGE_ASPECT_PLANE_0_BIT@ or @VK_IMAGE_ASPECT_PLANE_1_BIT@, and--- for a three-plane image @planeAspect@ /must/ be--- @VK_IMAGE_ASPECT_PLANE_0_BIT@, @VK_IMAGE_ASPECT_PLANE_1_BIT@ or--- @VK_IMAGE_ASPECT_PLANE_2_BIT@------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO@------ - @planeAspect@ /must/ be a valid--- 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlagBits'--- value------ = See Also------ 'Graphics.Vulkan.Core10.SparseResourceMemoryManagement.VkImageAspectFlagBits',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkImagePlaneMemoryRequirementsInfo = VkImagePlaneMemoryRequirementsInfo- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @planeAspect@ is the aspect corresponding to the image plane to query.- vkPlaneAspect :: VkImageAspectFlagBits- }- deriving (Eq, Show)--instance Storable VkImagePlaneMemoryRequirementsInfo where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkImagePlaneMemoryRequirementsInfo <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkImagePlaneMemoryRequirementsInfo))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImagePlaneMemoryRequirementsInfo))- *> poke (ptr `plusPtr` 16) (vkPlaneAspect (poked :: VkImagePlaneMemoryRequirementsInfo))--- | VkPhysicalDeviceSamplerYcbcrConversionFeatures - Structure describing--- Y’CbCr conversion features that can be supported by an implementation------ = Members------ The members of the @VkPhysicalDeviceSamplerYcbcrConversionFeatures@--- structure describe the following feature:------ = Description------ - @samplerYcbcrConversion@ specifies whether the implementation--- supports [sampler Y’CBCR--- conversion](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#samplers-YCbCr-conversion).--- If @samplerYcbcrConversion@ is @VK_FALSE@, sampler Y’CBCR conversion--- is not supported, and samplers using sampler Y’CBCR conversion--- /must/ not be used.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES@------ = See Also------ @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceSamplerYcbcrConversionFeatures = VkPhysicalDeviceSamplerYcbcrConversionFeatures- { -- No documentation found for Nested "VkPhysicalDeviceSamplerYcbcrConversionFeatures" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceSamplerYcbcrConversionFeatures" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceSamplerYcbcrConversionFeatures" "samplerYcbcrConversion"- vkSamplerYcbcrConversion :: VkBool32- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceSamplerYcbcrConversionFeatures where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkPhysicalDeviceSamplerYcbcrConversionFeatures <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceSamplerYcbcrConversionFeatures))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceSamplerYcbcrConversionFeatures))- *> poke (ptr `plusPtr` 16) (vkSamplerYcbcrConversion (poked :: VkPhysicalDeviceSamplerYcbcrConversionFeatures))--- | VkSamplerYcbcrConversionImageFormatProperties - Structure specifying--- combined image sampler descriptor count for multi-planar images------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES@------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkSamplerYcbcrConversionImageFormatProperties = VkSamplerYcbcrConversionImageFormatProperties- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @combinedImageSamplerDescriptorCount@ is the number of combined image- -- sampler descriptors that the implementation uses to access the format.- vkCombinedImageSamplerDescriptorCount :: Word32- }- deriving (Eq, Show)--instance Storable VkSamplerYcbcrConversionImageFormatProperties where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkSamplerYcbcrConversionImageFormatProperties <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkSamplerYcbcrConversionImageFormatProperties))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkSamplerYcbcrConversionImageFormatProperties))- *> poke (ptr `plusPtr` 16) (vkCombinedImageSamplerDescriptorCount (poked :: VkSamplerYcbcrConversionImageFormatProperties))
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_shader_draw_parameters.hs
@@ -1,68 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_shader_draw_parameters- ( pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES- , VkPhysicalDeviceShaderDrawParameterFeatures(..)- ) where--import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- )----- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VkStructureType 1000063000--- | VkPhysicalDeviceShaderDrawParameterFeatures - Structure describing--- shader draw parameter features that can be supported by an--- implementation------ = Description------ If the @VkPhysicalDeviceShaderDrawParameterFeatures@ structure is--- included in the @pNext@ chain of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceFeatures2',--- it is filled with a value indicating whether the feature is supported.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES@------ = See Also------ @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParameterFeatures- { -- No documentation found for Nested "VkPhysicalDeviceShaderDrawParameterFeatures" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceShaderDrawParameterFeatures" "pNext"- vkPNext :: Ptr ()- , -- | @shaderDrawParameters@ specifies whether shader draw parameters are- -- supported.- vkShaderDrawParameters :: VkBool32- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceShaderDrawParameterFeatures where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkPhysicalDeviceShaderDrawParameterFeatures <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceShaderDrawParameterFeatures))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceShaderDrawParameterFeatures))- *> poke (ptr `plusPtr` 16) (vkShaderDrawParameters (poked :: VkPhysicalDeviceShaderDrawParameterFeatures))
− src/Graphics/Vulkan/Core11/Promoted_from_VK_KHR_variable_pointers.hs
@@ -1,94 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Core11.Promoted_from_VK_KHR_variable_pointers- ( pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES- , VkPhysicalDeviceVariablePointerFeatures(..)- ) where--import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- )----- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VkStructureType 1000120000--- | VkPhysicalDeviceVariablePointerFeatures - Structure describing variable--- pointers features that can be supported by an implementation------ = Members------ The members of the @VkPhysicalDeviceVariablePointerFeatures@ structure--- describe the following features:------ = Description------ - @variablePointersStorageBuffer@ specifies whether the implementation--- supports the SPIR-V @VariablePointersStorageBuffer@ capability. When--- this feature is not enabled, shader modules /must/ not declare the--- @SPV_KHR_variable_pointers@ extension or the--- @VariablePointersStorageBuffer@ capability.------ - @variablePointers@ specifies whether the implementation supports the--- SPIR-V @VariablePointers@ capability. When this feature is not--- enabled, shader modules /must/ not declare the @VariablePointers@--- capability.------ If the @VkPhysicalDeviceVariablePointerFeatures@ structure is included--- in the @pNext@ chain of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceFeatures2',--- it is filled with values indicating whether each feature is supported.--- @VkPhysicalDeviceVariablePointerFeatures@ /can/ also be used in the--- @pNext@ chain of 'Graphics.Vulkan.Core10.Device.VkDeviceCreateInfo' to--- enable the features.------ == Valid Usage------ - If @variablePointers@ is enabled then--- @variablePointersStorageBuffer@ /must/ also be enabled.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES@------ = See Also------ @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointerFeatures- { -- No documentation found for Nested "VkPhysicalDeviceVariablePointerFeatures" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceVariablePointerFeatures" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceVariablePointerFeatures" "variablePointersStorageBuffer"- vkVariablePointersStorageBuffer :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceVariablePointerFeatures" "variablePointers"- vkVariablePointers :: VkBool32- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceVariablePointerFeatures where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkPhysicalDeviceVariablePointerFeatures <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceVariablePointerFeatures))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceVariablePointerFeatures))- *> poke (ptr `plusPtr` 16) (vkVariablePointersStorageBuffer (poked :: VkPhysicalDeviceVariablePointerFeatures))- *> poke (ptr `plusPtr` 20) (vkVariablePointers (poked :: VkPhysicalDeviceVariablePointerFeatures))
+ src/Graphics/Vulkan/Core12.hs view
@@ -0,0 +1,1729 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12 ( pattern API_VERSION_1_2+ , PhysicalDeviceVulkan11Features(..)+ , PhysicalDeviceVulkan11Properties(..)+ , PhysicalDeviceVulkan12Features(..)+ , PhysicalDeviceVulkan12Properties(..)+ , StructureType(..)+ , module Graphics.Vulkan.Core12.Enums+ , module Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing+ , module Graphics.Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset+ , module Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax+ , module Graphics.Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout+ , module Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage+ , module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage+ , module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address+ , module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2+ , module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve+ , module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count+ , module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties+ , module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list+ , module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer+ , module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts+ , module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64+ , module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8+ , module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls+ , module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types+ , module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore+ , module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout+ , module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model+ ) where+import Graphics.Vulkan.Core12.Enums+import Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing+import Graphics.Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset+import Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax+import Graphics.Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout+import Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.ByteString (packCString)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Word (Word64)+import Data.Word (Word8)+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import qualified Data.Vector.Storable.Sized (Vector)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)+import Graphics.Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)+import Graphics.Vulkan.CStruct.Utils (pokeFixedLengthByteString)+import Graphics.Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (ConformanceVersion)+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core12.Enums.DriverId (DriverId)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.APIConstants (LUID_SIZE)+import Graphics.Vulkan.Core10.APIConstants (MAX_DRIVER_INFO_SIZE)+import Graphics.Vulkan.Core10.APIConstants (MAX_DRIVER_NAME_SIZE)+import Graphics.Vulkan.Core11.Enums.PointClippingBehavior (PointClippingBehavior)+import Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlags)+import Graphics.Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlags)+import Graphics.Vulkan.Core12.Enums.ShaderFloatControlsIndependence (ShaderFloatControlsIndependence)+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Core11.Enums.SubgroupFeatureFlagBits (SubgroupFeatureFlags)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Core10.APIConstants (UUID_SIZE)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Version (pattern MAKE_VERSION)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+pattern API_VERSION_1_2 :: Word32+pattern API_VERSION_1_2 = MAKE_VERSION 1 2 0+++-- | VkPhysicalDeviceVulkan11Features - Structure describing the Vulkan 1.1+-- features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceVulkan11Features' structure describe+-- the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceVulkan11Features' structure is included in the+-- @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether each feature is supported.+-- 'PhysicalDeviceVulkan11Features' /can/ also be used in the @pNext@ chain+-- of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to enable the+-- features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceVulkan11Features = PhysicalDeviceVulkan11Features+ { -- | @storageBuffer16BitAccess@ specifies whether objects in the+ -- @StorageBuffer@ or @PhysicalStorageBuffer@ storage class with the+ -- @Block@ decoration /can/ have 16-bit integer and 16-bit floating-point+ -- members. If this feature is not enabled, 16-bit integer or 16-bit+ -- floating-point members /must/ not be used in such objects. This also+ -- specifies whether shader modules /can/ declare the+ -- @StorageBuffer16BitAccess@ capability.+ storageBuffer16BitAccess :: Bool+ , -- | @uniformAndStorageBuffer16BitAccess@ specifies whether objects in the+ -- @Uniform@ storage class with the @Block@ decoration and in the+ -- @StorageBuffer@ or @PhysicalStorageBuffer@ storage class with the same+ -- decoration /can/ have 16-bit integer and 16-bit floating-point members.+ -- If this feature is not enabled, 16-bit integer or 16-bit floating-point+ -- members /must/ not be used in such objects. This also specifies whether+ -- shader modules /can/ declare the @UniformAndStorageBuffer16BitAccess@+ -- capability.+ uniformAndStorageBuffer16BitAccess :: Bool+ , -- | @storagePushConstant16@ specifies whether objects in the @PushConstant@+ -- storage class /can/ have 16-bit integer and 16-bit floating-point+ -- members. If this feature is not enabled, 16-bit integer or+ -- floating-point members /must/ not be used in such objects. This also+ -- specifies whether shader modules /can/ declare the+ -- @StoragePushConstant16@ capability.+ storagePushConstant16 :: Bool+ , -- | @storageInputOutput16@ specifies whether objects in the @Input@ and+ -- @Output@ storage classes /can/ have 16-bit integer and 16-bit+ -- floating-point members. If this feature is not enabled, 16-bit integer+ -- or 16-bit floating-point members /must/ not be used in such objects.+ -- This also specifies whether shader modules /can/ declare the+ -- @StorageInputOutput16@ capability.+ storageInputOutput16 :: Bool+ , -- | @multiview@ specifies whether the implementation supports multiview+ -- rendering within a render pass. If this feature is not enabled, the view+ -- mask of each subpass /must/ always be zero.+ multiview :: Bool+ , -- | @multiviewGeometryShader@ specifies whether the implementation supports+ -- multiview rendering within a render pass, with+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry geometry shaders>.+ -- If this feature is not enabled, then a pipeline compiled against a+ -- subpass with a non-zero view mask /must/ not include a geometry shader.+ multiviewGeometryShader :: Bool+ , -- | @multiviewTessellationShader@ specifies whether the implementation+ -- supports multiview rendering within a render pass, with+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation tessellation shaders>.+ -- If this feature is not enabled, then a pipeline compiled against a+ -- subpass with a non-zero view mask /must/ not include any tessellation+ -- shaders.+ multiviewTessellationShader :: Bool+ , -- | @variablePointersStorageBuffer@ specifies whether the implementation+ -- supports the SPIR-V @VariablePointersStorageBuffer@ capability. When+ -- this feature is not enabled, shader modules /must/ not declare the+ -- @SPV_KHR_variable_pointers@ extension or the+ -- @VariablePointersStorageBuffer@ capability.+ variablePointersStorageBuffer :: Bool+ , -- | @variablePointers@ specifies whether the implementation supports the+ -- SPIR-V @VariablePointers@ capability. When this feature is not enabled,+ -- shader modules /must/ not declare the @VariablePointers@ capability.+ variablePointers :: Bool+ , -- | @protectedMemory@ specifies whether protected memory is supported.+ protectedMemory :: Bool+ , -- | 'Graphics.Vulkan.Core11.Handles.SamplerYcbcrConversion' specifies+ -- whether the implementation supports+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>.+ -- If 'Graphics.Vulkan.Core11.Handles.SamplerYcbcrConversion' is+ -- 'Graphics.Vulkan.Core10.BaseType.FALSE', sampler Y′CBCR conversion is+ -- not supported, and samplers using sampler Y′CBCR conversion /must/ not+ -- be used.+ samplerYcbcrConversion :: Bool+ , -- | @shaderDrawParameters@ specifies whether shader draw parameters are+ -- supported.+ shaderDrawParameters :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceVulkan11Features++instance ToCStruct PhysicalDeviceVulkan11Features where+ withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceVulkan11Features{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (storageBuffer16BitAccess))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (uniformAndStorageBuffer16BitAccess))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (storagePushConstant16))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (storageInputOutput16))+ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (multiview))+ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (multiviewGeometryShader))+ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (multiviewTessellationShader))+ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (variablePointersStorageBuffer))+ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (variablePointers))+ poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (protectedMemory))+ poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (samplerYcbcrConversion))+ poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (shaderDrawParameters))+ f+ cStructSize = 64+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceVulkan11Features where+ peekCStruct p = do+ storageBuffer16BitAccess <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ uniformAndStorageBuffer16BitAccess <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ storagePushConstant16 <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ storageInputOutput16 <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))+ multiview <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))+ multiviewGeometryShader <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))+ multiviewTessellationShader <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))+ variablePointersStorageBuffer <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))+ variablePointers <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))+ protectedMemory <- peek @Bool32 ((p `plusPtr` 52 :: Ptr Bool32))+ samplerYcbcrConversion <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))+ shaderDrawParameters <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))+ pure $ PhysicalDeviceVulkan11Features+ (bool32ToBool storageBuffer16BitAccess) (bool32ToBool uniformAndStorageBuffer16BitAccess) (bool32ToBool storagePushConstant16) (bool32ToBool storageInputOutput16) (bool32ToBool multiview) (bool32ToBool multiviewGeometryShader) (bool32ToBool multiviewTessellationShader) (bool32ToBool variablePointersStorageBuffer) (bool32ToBool variablePointers) (bool32ToBool protectedMemory) (bool32ToBool samplerYcbcrConversion) (bool32ToBool shaderDrawParameters)++instance Storable PhysicalDeviceVulkan11Features where+ sizeOf ~_ = 64+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceVulkan11Features where+ zero = PhysicalDeviceVulkan11Features+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkPhysicalDeviceVulkan11Properties - Structure specifying physical+-- device properties for functionality promoted to Vulkan 1.1+--+-- = Description+--+-- The members of 'PhysicalDeviceVulkan11Properties' /must/ have the same+-- values as the corresponding members of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties',+-- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PhysicalDevicePointClippingProperties',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties',+-- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties',+-- and+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties'.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core11.Enums.PointClippingBehavior.PointClippingBehavior',+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SubgroupFeatureFlags'+data PhysicalDeviceVulkan11Properties = PhysicalDeviceVulkan11Properties+ { -- | @deviceUUID@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.UUID_SIZE' @uint8_t@ values+ -- representing a universally unique identifier for the device.+ deviceUUID :: ByteString+ , -- | @driverUUID@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.UUID_SIZE' @uint8_t@ values+ -- representing a universally unique identifier for the driver build in use+ -- by the device.+ driverUUID :: ByteString+ , -- | @deviceLUID@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.LUID_SIZE' @uint8_t@ values+ -- representing a locally unique identifier for the device.+ deviceLUID :: ByteString+ , -- | @deviceNodeMask@ is a @uint32_t@ bitfield identifying the node within a+ -- linked device adapter corresponding to the device.+ deviceNodeMask :: Word32+ , -- | @deviceLUIDValid@ is a boolean value that will be+ -- 'Graphics.Vulkan.Core10.BaseType.TRUE' if @deviceLUID@ contains a valid+ -- LUID and @deviceNodeMask@ contains a valid node mask, and+ -- 'Graphics.Vulkan.Core10.BaseType.FALSE' if they do not.+ deviceLUIDValid :: Bool+ , -- | @subgroupSize@ is the default number of invocations in each subgroup.+ -- @subgroupSize@ is at least 1 if any of the physical device’s queues+ -- support 'Graphics.Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT'+ -- or 'Graphics.Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'.+ -- @subgroupSize@ is a power-of-two.+ subgroupSize :: Word32+ , -- | @subgroupSupportedStages@ is a bitfield of+ -- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits'+ -- describing the shader stages that subgroup operations are supported in.+ -- @subgroupSupportedStages@ will have the+ -- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'+ -- bit set if any of the physical device’s queues support+ -- 'Graphics.Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'.+ subgroupSupportedStages :: ShaderStageFlags+ , -- | @subgroupSupportedOperations@ is a bitmask of+ -- 'Graphics.Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SubgroupFeatureFlagBits'+ -- specifying the sets of subgroup operations supported on this device.+ -- @subgroupSupportedOperations@ will have the+ -- 'Graphics.Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_BASIC_BIT'+ -- bit set if any of the physical device’s queues support+ -- 'Graphics.Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or+ -- 'Graphics.Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'.+ subgroupSupportedOperations :: SubgroupFeatureFlags+ , -- | @subgroupQuadOperationsInAllStages@ is a boolean specifying whether+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroup-quad quad subgroup operations>+ -- are available in all stages, or are restricted to fragment and compute+ -- stages.+ subgroupQuadOperationsInAllStages :: Bool+ , -- | 'Graphics.Vulkan.Core11.Enums.PointClippingBehavior.PointClippingBehavior'+ -- /must/ be a valid+ -- 'Graphics.Vulkan.Core11.Enums.PointClippingBehavior.PointClippingBehavior'+ -- value+ pointClippingBehavior :: PointClippingBehavior+ , -- | @maxMultiviewViewCount@ is one greater than the maximum view index that+ -- /can/ be used in a subpass.+ maxMultiviewViewCount :: Word32+ , -- | @maxMultiviewInstanceIndex@ is the maximum valid value of instance index+ -- allowed to be generated by a drawing command recorded within a subpass+ -- of a multiview render pass instance.+ maxMultiviewInstanceIndex :: Word32+ , -- | @protectedNoFault@ specifies the behavior of the implementation when+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-protected-access-rules protected memory access rules>+ -- are broken. If @protectedNoFault@ is+ -- 'Graphics.Vulkan.Core10.BaseType.TRUE', breaking those rules will not+ -- result in process termination or device loss.+ protectedNoFault :: Bool+ , -- | @maxPerSetDescriptors@ is a maximum number of descriptors (summed over+ -- all descriptor types) in a single descriptor set that is guaranteed to+ -- satisfy any implementation-dependent constraints on the size of a+ -- descriptor set itself. Applications /can/ query whether a descriptor set+ -- that goes beyond this limit is supported using+ -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.getDescriptorSetLayoutSupport'.+ maxPerSetDescriptors :: Word32+ , -- | @maxMemoryAllocationSize@ is the maximum size of a memory allocation+ -- that /can/ be created, even if there is more space available in the+ -- heap.+ maxMemoryAllocationSize :: DeviceSize+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceVulkan11Properties++instance ToCStruct PhysicalDeviceVulkan11Properties where+ withCStruct x f = allocaBytesAligned 112 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceVulkan11Properties{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pokeFixedLengthByteString ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (deviceUUID)+ pokeFixedLengthByteString ((p `plusPtr` 32 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (driverUUID)+ pokeFixedLengthByteString ((p `plusPtr` 48 :: Ptr (Data.Vector.Storable.Sized.Vector LUID_SIZE Word8))) (deviceLUID)+ poke ((p `plusPtr` 56 :: Ptr Word32)) (deviceNodeMask)+ poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (deviceLUIDValid))+ poke ((p `plusPtr` 64 :: Ptr Word32)) (subgroupSize)+ poke ((p `plusPtr` 68 :: Ptr ShaderStageFlags)) (subgroupSupportedStages)+ poke ((p `plusPtr` 72 :: Ptr SubgroupFeatureFlags)) (subgroupSupportedOperations)+ poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (subgroupQuadOperationsInAllStages))+ poke ((p `plusPtr` 80 :: Ptr PointClippingBehavior)) (pointClippingBehavior)+ poke ((p `plusPtr` 84 :: Ptr Word32)) (maxMultiviewViewCount)+ poke ((p `plusPtr` 88 :: Ptr Word32)) (maxMultiviewInstanceIndex)+ poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (protectedNoFault))+ poke ((p `plusPtr` 96 :: Ptr Word32)) (maxPerSetDescriptors)+ poke ((p `plusPtr` 104 :: Ptr DeviceSize)) (maxMemoryAllocationSize)+ f+ cStructSize = 112+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pokeFixedLengthByteString ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (mempty)+ pokeFixedLengthByteString ((p `plusPtr` 32 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (mempty)+ pokeFixedLengthByteString ((p `plusPtr` 48 :: Ptr (Data.Vector.Storable.Sized.Vector LUID_SIZE Word8))) (mempty)+ poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 64 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 68 :: Ptr ShaderStageFlags)) (zero)+ poke ((p `plusPtr` 72 :: Ptr SubgroupFeatureFlags)) (zero)+ poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 80 :: Ptr PointClippingBehavior)) (zero)+ poke ((p `plusPtr` 84 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 88 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 96 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 104 :: Ptr DeviceSize)) (zero)+ f++instance FromCStruct PhysicalDeviceVulkan11Properties where+ peekCStruct p = do+ deviceUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8)))+ driverUUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 32 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8)))+ deviceLUID <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 48 :: Ptr (Data.Vector.Storable.Sized.Vector LUID_SIZE Word8)))+ deviceNodeMask <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))+ deviceLUIDValid <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))+ subgroupSize <- peek @Word32 ((p `plusPtr` 64 :: Ptr Word32))+ subgroupSupportedStages <- peek @ShaderStageFlags ((p `plusPtr` 68 :: Ptr ShaderStageFlags))+ subgroupSupportedOperations <- peek @SubgroupFeatureFlags ((p `plusPtr` 72 :: Ptr SubgroupFeatureFlags))+ subgroupQuadOperationsInAllStages <- peek @Bool32 ((p `plusPtr` 76 :: Ptr Bool32))+ pointClippingBehavior <- peek @PointClippingBehavior ((p `plusPtr` 80 :: Ptr PointClippingBehavior))+ maxMultiviewViewCount <- peek @Word32 ((p `plusPtr` 84 :: Ptr Word32))+ maxMultiviewInstanceIndex <- peek @Word32 ((p `plusPtr` 88 :: Ptr Word32))+ protectedNoFault <- peek @Bool32 ((p `plusPtr` 92 :: Ptr Bool32))+ maxPerSetDescriptors <- peek @Word32 ((p `plusPtr` 96 :: Ptr Word32))+ maxMemoryAllocationSize <- peek @DeviceSize ((p `plusPtr` 104 :: Ptr DeviceSize))+ pure $ PhysicalDeviceVulkan11Properties+ deviceUUID driverUUID deviceLUID deviceNodeMask (bool32ToBool deviceLUIDValid) subgroupSize subgroupSupportedStages subgroupSupportedOperations (bool32ToBool subgroupQuadOperationsInAllStages) pointClippingBehavior maxMultiviewViewCount maxMultiviewInstanceIndex (bool32ToBool protectedNoFault) maxPerSetDescriptors maxMemoryAllocationSize++instance Storable PhysicalDeviceVulkan11Properties where+ sizeOf ~_ = 112+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceVulkan11Properties where+ zero = PhysicalDeviceVulkan11Properties+ mempty+ mempty+ mempty+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkPhysicalDeviceVulkan12Features - Structure describing the Vulkan 1.2+-- features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceVulkan12Features' structure describe+-- the following features:+--+-- = Description+--+-- - @samplerMirrorClampToEdge@ indicates whether the implementation+-- supports the+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE'+-- sampler address mode. If this feature is not enabled, the+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE'+-- sampler address mode /must/ not be used.+--+-- - @drawIndirectCount@ indicates whether the implementation supports+-- the+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndirectCount'+-- and+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count.cmdDrawIndexedIndirectCount'+-- functions. If this feature is not enabled, these functions /must/+-- not be used.+--+-- - @storageBuffer8BitAccess@ indicates whether objects in the+-- @StorageBuffer@ or @PhysicalStorageBuffer@ storage class with the+-- @Block@ decoration /can/ have 8-bit integer members. If this feature+-- is not enabled, 8-bit integer members /must/ not be used in such+-- objects. This also indicates whether shader modules /can/ declare+-- the @StorageBuffer8BitAccess@ capability.+--+-- - @uniformAndStorageBuffer8BitAccess@ indicates whether objects in the+-- @Uniform@ storage class with the @Block@ decoration and in the+-- @StorageBuffer@ or @PhysicalStorageBuffer@ storage class with the+-- same decoration /can/ have 8-bit integer members. If this feature is+-- not enabled, 8-bit integer members /must/ not be used in such+-- objects. This also indicates whether shader modules /can/ declare+-- the @UniformAndStorageBuffer8BitAccess@ capability.+--+-- - @storagePushConstant8@ indicates whether objects in the+-- @PushConstant@ storage class /can/ have 8-bit integer members. If+-- this feature is not enabled, 8-bit integer members /must/ not be+-- used in such objects. This also indicates whether shader modules+-- /can/ declare the @StoragePushConstant8@ capability.+--+-- - @shaderBufferInt64Atomics@ indicates whether shaders /can/ support+-- 64-bit unsigned and signed integer atomic operations on buffers.+--+-- - @shaderSharedInt64Atomics@ indicates whether shaders /can/ support+-- 64-bit unsigned and signed integer atomic operations on shared+-- memory.+--+-- - @shaderFloat16@ indicates whether 16-bit floats (halfs) are+-- supported in shader code. This also indicates whether shader modules+-- /can/ declare the @Float16@ capability. However, this only enables a+-- subset of the storage classes that SPIR-V allows for the @Float16@+-- SPIR-V capability: Declaring and using 16-bit floats in the+-- @Private@, @Workgroup@, and @Function@ storage classes is enabled,+-- while declaring them in the interface storage classes (e.g.,+-- @UniformConstant@, @Uniform@, @StorageBuffer@, @Input@, @Output@,+-- and @PushConstant@) is not enabled.+--+-- - @shaderInt8@ indicates whether 8-bit integers (signed and unsigned)+-- are supported in shader code. This also indicates whether shader+-- modules /can/ declare the @Int8@ capability. However, this only+-- enables a subset of the storage classes that SPIR-V allows for the+-- @Int8@ SPIR-V capability: Declaring and using 8-bit integers in the+-- @Private@, @Workgroup@, and @Function@ storage classes is enabled,+-- while declaring them in the interface storage classes (e.g.,+-- @UniformConstant@, @Uniform@, @StorageBuffer@, @Input@, @Output@,+-- and @PushConstant@) is not enabled.+--+-- - @descriptorIndexing@ indicates whether the implementation supports+-- the minimum set of descriptor indexing features as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-requirements Feature Requirements>+-- section. Enabling the @descriptorIndexing@ member when+-- 'Graphics.Vulkan.Core10.Device.createDevice' is called does not+-- imply the other minimum descriptor indexing features are also+-- enabled. Those other descriptor indexing features /must/ be enabled+-- individually as needed by the application.+--+-- - @shaderInputAttachmentArrayDynamicIndexing@ indicates whether arrays+-- of input attachments /can/ be indexed by dynamically uniform integer+-- expressions in shader code. If this feature is not enabled,+-- resources with a descriptor type of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'+-- /must/ be indexed only by constant integral expressions when+-- aggregated into arrays in shader code. This also indicates whether+-- shader modules /can/ declare the+-- @InputAttachmentArrayDynamicIndexing@ capability.+--+-- - @shaderUniformTexelBufferArrayDynamicIndexing@ indicates whether+-- arrays of uniform texel buffers /can/ be indexed by dynamically+-- uniform integer expressions in shader code. If this feature is not+-- enabled, resources with a descriptor type of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'+-- /must/ be indexed only by constant integral expressions when+-- aggregated into arrays in shader code. This also indicates whether+-- shader modules /can/ declare the+-- @UniformTexelBufferArrayDynamicIndexing@ capability.+--+-- - @shaderStorageTexelBufferArrayDynamicIndexing@ indicates whether+-- arrays of storage texel buffers /can/ be indexed by dynamically+-- uniform integer expressions in shader code. If this feature is not+-- enabled, resources with a descriptor type of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'+-- /must/ be indexed only by constant integral expressions when+-- aggregated into arrays in shader code. This also indicates whether+-- shader modules /can/ declare the+-- @StorageTexelBufferArrayDynamicIndexing@ capability.+--+-- - @shaderUniformBufferArrayNonUniformIndexing@ indicates whether+-- arrays of uniform buffers /can/ be indexed by non-uniform integer+-- expressions in shader code. If this feature is not enabled,+-- resources with a descriptor type of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'+-- /must/ not be indexed by non-uniform integer expressions when+-- aggregated into arrays in shader code. This also indicates whether+-- shader modules /can/ declare the+-- @UniformBufferArrayNonUniformIndexing@ capability.+--+-- - @shaderSampledImageArrayNonUniformIndexing@ indicates whether arrays+-- of samplers or sampled images /can/ be indexed by non-uniform+-- integer expressions in shader code. If this feature is not enabled,+-- resources with a descriptor type of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'+-- /must/ not be indexed by non-uniform integer expressions when+-- aggregated into arrays in shader code. This also indicates whether+-- shader modules /can/ declare the+-- @SampledImageArrayNonUniformIndexing@ capability.+--+-- - @shaderStorageBufferArrayNonUniformIndexing@ indicates whether+-- arrays of storage buffers /can/ be indexed by non-uniform integer+-- expressions in shader code. If this feature is not enabled,+-- resources with a descriptor type of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'+-- /must/ not be indexed by non-uniform integer expressions when+-- aggregated into arrays in shader code. This also indicates whether+-- shader modules /can/ declare the+-- @StorageBufferArrayNonUniformIndexing@ capability.+--+-- - @shaderStorageImageArrayNonUniformIndexing@ indicates whether arrays+-- of storage images /can/ be indexed by non-uniform integer+-- expressions in shader code. If this feature is not enabled,+-- resources with a descriptor type of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'+-- /must/ not be indexed by non-uniform integer expressions when+-- aggregated into arrays in shader code. This also indicates whether+-- shader modules /can/ declare the+-- @StorageImageArrayNonUniformIndexing@ capability.+--+-- - @shaderInputAttachmentArrayNonUniformIndexing@ indicates whether+-- arrays of input attachments /can/ be indexed by non-uniform integer+-- expressions in shader code. If this feature is not enabled,+-- resources with a descriptor type of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'+-- /must/ not be indexed by non-uniform integer expressions when+-- aggregated into arrays in shader code. This also indicates whether+-- shader modules /can/ declare the+-- @InputAttachmentArrayNonUniformIndexing@ capability.+--+-- - @shaderUniformTexelBufferArrayNonUniformIndexing@ indicates whether+-- arrays of uniform texel buffers /can/ be indexed by non-uniform+-- integer expressions in shader code. If this feature is not enabled,+-- resources with a descriptor type of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'+-- /must/ not be indexed by non-uniform integer expressions when+-- aggregated into arrays in shader code. This also indicates whether+-- shader modules /can/ declare the+-- @UniformTexelBufferArrayNonUniformIndexing@ capability.+--+-- - @shaderStorageTexelBufferArrayNonUniformIndexing@ indicates whether+-- arrays of storage texel buffers /can/ be indexed by non-uniform+-- integer expressions in shader code. If this feature is not enabled,+-- resources with a descriptor type of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'+-- /must/ not be indexed by non-uniform integer expressions when+-- aggregated into arrays in shader code. This also indicates whether+-- shader modules /can/ declare the+-- @StorageTexelBufferArrayNonUniformIndexing@ capability.+--+-- - @descriptorBindingUniformBufferUpdateAfterBind@ indicates whether+-- the implementation supports updating uniform buffer descriptors+-- after a set is bound. If this feature is not enabled,+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+-- /must/ not be used with+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'.+--+-- - @descriptorBindingSampledImageUpdateAfterBind@ indicates whether the+-- implementation supports updating sampled image descriptors after a+-- set is bound. If this feature is not enabled,+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+-- /must/ not be used with+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'.+--+-- - @descriptorBindingStorageImageUpdateAfterBind@ indicates whether the+-- implementation supports updating storage image descriptors after a+-- set is bound. If this feature is not enabled,+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+-- /must/ not be used with+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'.+--+-- - @descriptorBindingStorageBufferUpdateAfterBind@ indicates whether+-- the implementation supports updating storage buffer descriptors+-- after a set is bound. If this feature is not enabled,+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+-- /must/ not be used with+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'.+--+-- - @descriptorBindingUniformTexelBufferUpdateAfterBind@ indicates+-- whether the implementation supports updating uniform texel buffer+-- descriptors after a set is bound. If this feature is not enabled,+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+-- /must/ not be used with+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'.+--+-- - @descriptorBindingStorageTexelBufferUpdateAfterBind@ indicates+-- whether the implementation supports updating storage texel buffer+-- descriptors after a set is bound. If this feature is not enabled,+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+-- /must/ not be used with+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'.+--+-- - @descriptorBindingUpdateUnusedWhilePending@ indicates whether the+-- implementation supports updating descriptors while the set is in+-- use. If this feature is not enabled,+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT'+-- /must/ not be used.+--+-- - @descriptorBindingPartiallyBound@ indicates whether the+-- implementation supports statically using a descriptor set binding in+-- which some descriptors are not valid. If this feature is not+-- enabled,+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT'+-- /must/ not be used.+--+-- - @descriptorBindingVariableDescriptorCount@ indicates whether the+-- implementation supports descriptor sets with a variable-sized last+-- binding. If this feature is not enabled,+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT'+-- /must/ not be used.+--+-- - @runtimeDescriptorArray@ indicates whether the implementation+-- supports the SPIR-V @RuntimeDescriptorArray@ capability. If this+-- feature is not enabled, descriptors /must/ not be declared in+-- runtime arrays.+--+-- - @samplerFilterMinmax@ indicates whether the implementation supports+-- a minimum set of required formats supporting min\/max filtering as+-- defined by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-filterMinmaxSingleComponentFormats-minimum-requirements filterMinmaxSingleComponentFormats>+-- property minimum requirements. If this feature is not enabled, then+-- no 'Graphics.Vulkan.Core10.Sampler.SamplerCreateInfo' @pNext@ chain+-- can include a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'+-- structure.+--+-- - @scalarBlockLayout@ indicates that the implementation supports the+-- layout of resource blocks in shaders using+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-alignment-requirements scalar alignment>.+--+-- - @imagelessFramebuffer@ indicates that the implementation supports+-- specifying the image view for attachments at render pass begin time+-- via+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'.+--+-- - @uniformBufferStandardLayout@ indicates that the implementation+-- supports the same layouts for uniform buffers as for storage and+-- other kinds of buffers. See+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources-standard-layout Standard Buffer Layout>.+--+-- - @shaderSubgroupExtendedTypes@ is a boolean that specifies whether+-- subgroup operations can use 8-bit integer, 16-bit integer, 64-bit+-- integer, 16-bit floating-point, and vectors of these types in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operations group operations>+-- with+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>if+-- the implementation supports the types.+--+-- - @separateDepthStencilLayouts@ indicates whether the implementation+-- supports a 'Graphics.Vulkan.Core10.OtherTypes.ImageMemoryBarrier'+-- for a depth\/stencil image with only one of+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+-- set, and whether+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+-- can be used.+--+-- - @hostQueryReset@ indicates that the implementation supports+-- resetting queries from the host with+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.resetQueryPool'.+--+-- - @timelineSemaphore@ indicates whether semaphores created with a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE'+-- are supported.+--+-- - @bufferDeviceAddress@ indicates that the implementation supports+-- accessing buffer memory in shaders as storage buffers via an address+-- queried from+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getBufferDeviceAddress'.+--+-- - @bufferDeviceAddressCaptureReplay@ indicates that the implementation+-- supports saving and reusing buffer and device addresses, e.g. for+-- trace capture and replay.+--+-- - @bufferDeviceAddressMultiDevice@ indicates that the implementation+-- supports the @bufferDeviceAddress@ feature for logical devices+-- created with multiple physical devices. If this feature is not+-- supported, buffer addresses /must/ not be queried on a logical+-- device created with more than one physical device.+--+-- - @vulkanMemoryModel@ indicates whether the Vulkan Memory Model is+-- supported, as defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-model Vulkan Memory Model>.+-- This also indicates whether shader modules /can/ declare the+-- @VulkanMemoryModel@ capability.+--+-- - @vulkanMemoryModelDeviceScope@ indicates whether the Vulkan Memory+-- Model can use 'Graphics.Vulkan.Core10.Handles.Device' scope+-- synchronization. This also indicates whether shader modules /can/+-- declare the @VulkanMemoryModelDeviceScope@ capability.+--+-- - @vulkanMemoryModelAvailabilityVisibilityChains@ indicates whether+-- the Vulkan Memory Model can use+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-model-availability-visibility availability and visibility chains>+-- with more than one element.+--+-- - @shaderOutputViewportIndex@ indicates whether the implementation+-- supports the @ShaderViewportIndex@ SPIR-V capability enabling+-- variables decorated with the @ViewportIndex@ built-in to be exported+-- from vertex or tessellation evaluation shaders. If this feature is+-- not enabled, the @ViewportIndex@ built-in decoration /must/ not be+-- used on outputs in vertex or tessellation evaluation shaders.+--+-- - @shaderOutputLayer@ indicates whether the implementation supports+-- the @ShaderLayer@ SPIR-V capability enabling variables decorated+-- with the @Layer@ built-in to be exported from vertex or tessellation+-- evaluation shaders. If this feature is not enabled, the @Layer@+-- built-in decoration /must/ not be used on outputs in vertex or+-- tessellation evaluation shaders.+--+-- - If @subgroupBroadcastDynamicId@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', the “Id” operand of+-- @OpGroupNonUniformBroadcast@ /can/ be dynamically uniform within a+-- subgroup, and the “Index” operand of+-- @OpGroupNonUniformQuadBroadcast@ /can/ be dynamically uniform within+-- the derivative group. If it is+-- 'Graphics.Vulkan.Core10.BaseType.FALSE', these operands /must/ be+-- constants.+--+-- If the 'PhysicalDeviceVulkan12Features' structure is included in the+-- @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether each feature is supported.+-- 'PhysicalDeviceVulkan12Features' /can/ also be used in the @pNext@ chain+-- of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to enable the+-- features.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceVulkan12Features = PhysicalDeviceVulkan12Features+ { -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "samplerMirrorClampToEdge"+ samplerMirrorClampToEdge :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "drawIndirectCount"+ drawIndirectCount :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "storageBuffer8BitAccess"+ storageBuffer8BitAccess :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "uniformAndStorageBuffer8BitAccess"+ uniformAndStorageBuffer8BitAccess :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "storagePushConstant8"+ storagePushConstant8 :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderBufferInt64Atomics"+ shaderBufferInt64Atomics :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderSharedInt64Atomics"+ shaderSharedInt64Atomics :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderFloat16"+ shaderFloat16 :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderInt8"+ shaderInt8 :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "descriptorIndexing"+ descriptorIndexing :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderInputAttachmentArrayDynamicIndexing"+ shaderInputAttachmentArrayDynamicIndexing :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderUniformTexelBufferArrayDynamicIndexing"+ shaderUniformTexelBufferArrayDynamicIndexing :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderStorageTexelBufferArrayDynamicIndexing"+ shaderStorageTexelBufferArrayDynamicIndexing :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderUniformBufferArrayNonUniformIndexing"+ shaderUniformBufferArrayNonUniformIndexing :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderSampledImageArrayNonUniformIndexing"+ shaderSampledImageArrayNonUniformIndexing :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderStorageBufferArrayNonUniformIndexing"+ shaderStorageBufferArrayNonUniformIndexing :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderStorageImageArrayNonUniformIndexing"+ shaderStorageImageArrayNonUniformIndexing :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderInputAttachmentArrayNonUniformIndexing"+ shaderInputAttachmentArrayNonUniformIndexing :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderUniformTexelBufferArrayNonUniformIndexing"+ shaderUniformTexelBufferArrayNonUniformIndexing :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderStorageTexelBufferArrayNonUniformIndexing"+ shaderStorageTexelBufferArrayNonUniformIndexing :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "descriptorBindingUniformBufferUpdateAfterBind"+ descriptorBindingUniformBufferUpdateAfterBind :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "descriptorBindingSampledImageUpdateAfterBind"+ descriptorBindingSampledImageUpdateAfterBind :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "descriptorBindingStorageImageUpdateAfterBind"+ descriptorBindingStorageImageUpdateAfterBind :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "descriptorBindingStorageBufferUpdateAfterBind"+ descriptorBindingStorageBufferUpdateAfterBind :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "descriptorBindingUniformTexelBufferUpdateAfterBind"+ descriptorBindingUniformTexelBufferUpdateAfterBind :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "descriptorBindingStorageTexelBufferUpdateAfterBind"+ descriptorBindingStorageTexelBufferUpdateAfterBind :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "descriptorBindingUpdateUnusedWhilePending"+ descriptorBindingUpdateUnusedWhilePending :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "descriptorBindingPartiallyBound"+ descriptorBindingPartiallyBound :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "descriptorBindingVariableDescriptorCount"+ descriptorBindingVariableDescriptorCount :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "runtimeDescriptorArray"+ runtimeDescriptorArray :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "samplerFilterMinmax"+ samplerFilterMinmax :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "scalarBlockLayout"+ scalarBlockLayout :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "imagelessFramebuffer"+ imagelessFramebuffer :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "uniformBufferStandardLayout"+ uniformBufferStandardLayout :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderSubgroupExtendedTypes"+ shaderSubgroupExtendedTypes :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "separateDepthStencilLayouts"+ separateDepthStencilLayouts :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "hostQueryReset"+ hostQueryReset :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "timelineSemaphore"+ timelineSemaphore :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "bufferDeviceAddress"+ bufferDeviceAddress :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "bufferDeviceAddressCaptureReplay"+ bufferDeviceAddressCaptureReplay :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "bufferDeviceAddressMultiDevice"+ bufferDeviceAddressMultiDevice :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "vulkanMemoryModel"+ vulkanMemoryModel :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "vulkanMemoryModelDeviceScope"+ vulkanMemoryModelDeviceScope :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "vulkanMemoryModelAvailabilityVisibilityChains"+ vulkanMemoryModelAvailabilityVisibilityChains :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderOutputViewportIndex"+ shaderOutputViewportIndex :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "shaderOutputLayer"+ shaderOutputLayer :: Bool+ , -- No documentation found for Nested "VkPhysicalDeviceVulkan12Features" "subgroupBroadcastDynamicId"+ subgroupBroadcastDynamicId :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceVulkan12Features++instance ToCStruct PhysicalDeviceVulkan12Features where+ withCStruct x f = allocaBytesAligned 208 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceVulkan12Features{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (samplerMirrorClampToEdge))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (drawIndirectCount))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (storageBuffer8BitAccess))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (uniformAndStorageBuffer8BitAccess))+ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (storagePushConstant8))+ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (shaderBufferInt64Atomics))+ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (shaderSharedInt64Atomics))+ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (shaderFloat16))+ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (shaderInt8))+ poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (descriptorIndexing))+ poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (shaderInputAttachmentArrayDynamicIndexing))+ poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (shaderUniformTexelBufferArrayDynamicIndexing))+ poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (shaderStorageTexelBufferArrayDynamicIndexing))+ poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (shaderUniformBufferArrayNonUniformIndexing))+ poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (shaderSampledImageArrayNonUniformIndexing))+ poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (shaderStorageBufferArrayNonUniformIndexing))+ poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (shaderStorageImageArrayNonUniformIndexing))+ poke ((p `plusPtr` 84 :: Ptr Bool32)) (boolToBool32 (shaderInputAttachmentArrayNonUniformIndexing))+ poke ((p `plusPtr` 88 :: Ptr Bool32)) (boolToBool32 (shaderUniformTexelBufferArrayNonUniformIndexing))+ poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (shaderStorageTexelBufferArrayNonUniformIndexing))+ poke ((p `plusPtr` 96 :: Ptr Bool32)) (boolToBool32 (descriptorBindingUniformBufferUpdateAfterBind))+ poke ((p `plusPtr` 100 :: Ptr Bool32)) (boolToBool32 (descriptorBindingSampledImageUpdateAfterBind))+ poke ((p `plusPtr` 104 :: Ptr Bool32)) (boolToBool32 (descriptorBindingStorageImageUpdateAfterBind))+ poke ((p `plusPtr` 108 :: Ptr Bool32)) (boolToBool32 (descriptorBindingStorageBufferUpdateAfterBind))+ poke ((p `plusPtr` 112 :: Ptr Bool32)) (boolToBool32 (descriptorBindingUniformTexelBufferUpdateAfterBind))+ poke ((p `plusPtr` 116 :: Ptr Bool32)) (boolToBool32 (descriptorBindingStorageTexelBufferUpdateAfterBind))+ poke ((p `plusPtr` 120 :: Ptr Bool32)) (boolToBool32 (descriptorBindingUpdateUnusedWhilePending))+ poke ((p `plusPtr` 124 :: Ptr Bool32)) (boolToBool32 (descriptorBindingPartiallyBound))+ poke ((p `plusPtr` 128 :: Ptr Bool32)) (boolToBool32 (descriptorBindingVariableDescriptorCount))+ poke ((p `plusPtr` 132 :: Ptr Bool32)) (boolToBool32 (runtimeDescriptorArray))+ poke ((p `plusPtr` 136 :: Ptr Bool32)) (boolToBool32 (samplerFilterMinmax))+ poke ((p `plusPtr` 140 :: Ptr Bool32)) (boolToBool32 (scalarBlockLayout))+ poke ((p `plusPtr` 144 :: Ptr Bool32)) (boolToBool32 (imagelessFramebuffer))+ poke ((p `plusPtr` 148 :: Ptr Bool32)) (boolToBool32 (uniformBufferStandardLayout))+ poke ((p `plusPtr` 152 :: Ptr Bool32)) (boolToBool32 (shaderSubgroupExtendedTypes))+ poke ((p `plusPtr` 156 :: Ptr Bool32)) (boolToBool32 (separateDepthStencilLayouts))+ poke ((p `plusPtr` 160 :: Ptr Bool32)) (boolToBool32 (hostQueryReset))+ poke ((p `plusPtr` 164 :: Ptr Bool32)) (boolToBool32 (timelineSemaphore))+ poke ((p `plusPtr` 168 :: Ptr Bool32)) (boolToBool32 (bufferDeviceAddress))+ poke ((p `plusPtr` 172 :: Ptr Bool32)) (boolToBool32 (bufferDeviceAddressCaptureReplay))+ poke ((p `plusPtr` 176 :: Ptr Bool32)) (boolToBool32 (bufferDeviceAddressMultiDevice))+ poke ((p `plusPtr` 180 :: Ptr Bool32)) (boolToBool32 (vulkanMemoryModel))+ poke ((p `plusPtr` 184 :: Ptr Bool32)) (boolToBool32 (vulkanMemoryModelDeviceScope))+ poke ((p `plusPtr` 188 :: Ptr Bool32)) (boolToBool32 (vulkanMemoryModelAvailabilityVisibilityChains))+ poke ((p `plusPtr` 192 :: Ptr Bool32)) (boolToBool32 (shaderOutputViewportIndex))+ poke ((p `plusPtr` 196 :: Ptr Bool32)) (boolToBool32 (shaderOutputLayer))+ poke ((p `plusPtr` 200 :: Ptr Bool32)) (boolToBool32 (subgroupBroadcastDynamicId))+ f+ cStructSize = 208+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 84 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 88 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 96 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 100 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 104 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 108 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 112 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 116 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 120 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 124 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 128 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 132 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 136 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 140 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 144 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 148 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 152 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 156 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 160 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 164 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 168 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 172 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 176 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 180 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 184 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 188 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 192 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 196 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 200 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceVulkan12Features where+ peekCStruct p = do+ samplerMirrorClampToEdge <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ drawIndirectCount <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ storageBuffer8BitAccess <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ uniformAndStorageBuffer8BitAccess <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))+ storagePushConstant8 <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))+ shaderBufferInt64Atomics <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))+ shaderSharedInt64Atomics <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))+ shaderFloat16 <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))+ shaderInt8 <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))+ descriptorIndexing <- peek @Bool32 ((p `plusPtr` 52 :: Ptr Bool32))+ shaderInputAttachmentArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))+ shaderUniformTexelBufferArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))+ shaderStorageTexelBufferArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 64 :: Ptr Bool32))+ shaderUniformBufferArrayNonUniformIndexing <- peek @Bool32 ((p `plusPtr` 68 :: Ptr Bool32))+ shaderSampledImageArrayNonUniformIndexing <- peek @Bool32 ((p `plusPtr` 72 :: Ptr Bool32))+ shaderStorageBufferArrayNonUniformIndexing <- peek @Bool32 ((p `plusPtr` 76 :: Ptr Bool32))+ shaderStorageImageArrayNonUniformIndexing <- peek @Bool32 ((p `plusPtr` 80 :: Ptr Bool32))+ shaderInputAttachmentArrayNonUniformIndexing <- peek @Bool32 ((p `plusPtr` 84 :: Ptr Bool32))+ shaderUniformTexelBufferArrayNonUniformIndexing <- peek @Bool32 ((p `plusPtr` 88 :: Ptr Bool32))+ shaderStorageTexelBufferArrayNonUniformIndexing <- peek @Bool32 ((p `plusPtr` 92 :: Ptr Bool32))+ descriptorBindingUniformBufferUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 96 :: Ptr Bool32))+ descriptorBindingSampledImageUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 100 :: Ptr Bool32))+ descriptorBindingStorageImageUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 104 :: Ptr Bool32))+ descriptorBindingStorageBufferUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 108 :: Ptr Bool32))+ descriptorBindingUniformTexelBufferUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 112 :: Ptr Bool32))+ descriptorBindingStorageTexelBufferUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 116 :: Ptr Bool32))+ descriptorBindingUpdateUnusedWhilePending <- peek @Bool32 ((p `plusPtr` 120 :: Ptr Bool32))+ descriptorBindingPartiallyBound <- peek @Bool32 ((p `plusPtr` 124 :: Ptr Bool32))+ descriptorBindingVariableDescriptorCount <- peek @Bool32 ((p `plusPtr` 128 :: Ptr Bool32))+ runtimeDescriptorArray <- peek @Bool32 ((p `plusPtr` 132 :: Ptr Bool32))+ samplerFilterMinmax <- peek @Bool32 ((p `plusPtr` 136 :: Ptr Bool32))+ scalarBlockLayout <- peek @Bool32 ((p `plusPtr` 140 :: Ptr Bool32))+ imagelessFramebuffer <- peek @Bool32 ((p `plusPtr` 144 :: Ptr Bool32))+ uniformBufferStandardLayout <- peek @Bool32 ((p `plusPtr` 148 :: Ptr Bool32))+ shaderSubgroupExtendedTypes <- peek @Bool32 ((p `plusPtr` 152 :: Ptr Bool32))+ separateDepthStencilLayouts <- peek @Bool32 ((p `plusPtr` 156 :: Ptr Bool32))+ hostQueryReset <- peek @Bool32 ((p `plusPtr` 160 :: Ptr Bool32))+ timelineSemaphore <- peek @Bool32 ((p `plusPtr` 164 :: Ptr Bool32))+ bufferDeviceAddress <- peek @Bool32 ((p `plusPtr` 168 :: Ptr Bool32))+ bufferDeviceAddressCaptureReplay <- peek @Bool32 ((p `plusPtr` 172 :: Ptr Bool32))+ bufferDeviceAddressMultiDevice <- peek @Bool32 ((p `plusPtr` 176 :: Ptr Bool32))+ vulkanMemoryModel <- peek @Bool32 ((p `plusPtr` 180 :: Ptr Bool32))+ vulkanMemoryModelDeviceScope <- peek @Bool32 ((p `plusPtr` 184 :: Ptr Bool32))+ vulkanMemoryModelAvailabilityVisibilityChains <- peek @Bool32 ((p `plusPtr` 188 :: Ptr Bool32))+ shaderOutputViewportIndex <- peek @Bool32 ((p `plusPtr` 192 :: Ptr Bool32))+ shaderOutputLayer <- peek @Bool32 ((p `plusPtr` 196 :: Ptr Bool32))+ subgroupBroadcastDynamicId <- peek @Bool32 ((p `plusPtr` 200 :: Ptr Bool32))+ pure $ PhysicalDeviceVulkan12Features+ (bool32ToBool samplerMirrorClampToEdge) (bool32ToBool drawIndirectCount) (bool32ToBool storageBuffer8BitAccess) (bool32ToBool uniformAndStorageBuffer8BitAccess) (bool32ToBool storagePushConstant8) (bool32ToBool shaderBufferInt64Atomics) (bool32ToBool shaderSharedInt64Atomics) (bool32ToBool shaderFloat16) (bool32ToBool shaderInt8) (bool32ToBool descriptorIndexing) (bool32ToBool shaderInputAttachmentArrayDynamicIndexing) (bool32ToBool shaderUniformTexelBufferArrayDynamicIndexing) (bool32ToBool shaderStorageTexelBufferArrayDynamicIndexing) (bool32ToBool shaderUniformBufferArrayNonUniformIndexing) (bool32ToBool shaderSampledImageArrayNonUniformIndexing) (bool32ToBool shaderStorageBufferArrayNonUniformIndexing) (bool32ToBool shaderStorageImageArrayNonUniformIndexing) (bool32ToBool shaderInputAttachmentArrayNonUniformIndexing) (bool32ToBool shaderUniformTexelBufferArrayNonUniformIndexing) (bool32ToBool shaderStorageTexelBufferArrayNonUniformIndexing) (bool32ToBool descriptorBindingUniformBufferUpdateAfterBind) (bool32ToBool descriptorBindingSampledImageUpdateAfterBind) (bool32ToBool descriptorBindingStorageImageUpdateAfterBind) (bool32ToBool descriptorBindingStorageBufferUpdateAfterBind) (bool32ToBool descriptorBindingUniformTexelBufferUpdateAfterBind) (bool32ToBool descriptorBindingStorageTexelBufferUpdateAfterBind) (bool32ToBool descriptorBindingUpdateUnusedWhilePending) (bool32ToBool descriptorBindingPartiallyBound) (bool32ToBool descriptorBindingVariableDescriptorCount) (bool32ToBool runtimeDescriptorArray) (bool32ToBool samplerFilterMinmax) (bool32ToBool scalarBlockLayout) (bool32ToBool imagelessFramebuffer) (bool32ToBool uniformBufferStandardLayout) (bool32ToBool shaderSubgroupExtendedTypes) (bool32ToBool separateDepthStencilLayouts) (bool32ToBool hostQueryReset) (bool32ToBool timelineSemaphore) (bool32ToBool bufferDeviceAddress) (bool32ToBool bufferDeviceAddressCaptureReplay) (bool32ToBool bufferDeviceAddressMultiDevice) (bool32ToBool vulkanMemoryModel) (bool32ToBool vulkanMemoryModelDeviceScope) (bool32ToBool vulkanMemoryModelAvailabilityVisibilityChains) (bool32ToBool shaderOutputViewportIndex) (bool32ToBool shaderOutputLayer) (bool32ToBool subgroupBroadcastDynamicId)++instance Storable PhysicalDeviceVulkan12Features where+ sizeOf ~_ = 208+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceVulkan12Features where+ zero = PhysicalDeviceVulkan12Features+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkPhysicalDeviceVulkan12Properties - Structure specifying physical+-- device properties for functionality promoted to Vulkan 1.2+--+-- = Description+--+-- The members of 'PhysicalDeviceVulkan12Properties' /must/ have the same+-- values as the corresponding members of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.PhysicalDeviceDriverProperties',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls.PhysicalDeviceFloatControlsProperties',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.PhysicalDeviceDescriptorIndexingProperties',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.PhysicalDeviceSamplerFilterMinmaxProperties',+-- and+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreProperties'.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.ConformanceVersion',+-- 'Graphics.Vulkan.Core12.Enums.DriverId.DriverId',+-- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlags',+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlags',+-- 'Graphics.Vulkan.Core12.Enums.ShaderFloatControlsIndependence.ShaderFloatControlsIndependence',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceVulkan12Properties = PhysicalDeviceVulkan12Properties+ { -- | @driverID@ /must/ be a valid+ -- 'Graphics.Vulkan.Core12.Enums.DriverId.DriverId' value+ driverID :: DriverId+ , -- | @driverName@ /must/ be a null-terminated UTF-8 string whose length is+ -- less than or equal to VK_MAX_DRIVER_NAME_SIZE+ driverName :: ByteString+ , -- | @driverInfo@ /must/ be a null-terminated UTF-8 string whose length is+ -- less than or equal to VK_MAX_DRIVER_INFO_SIZE+ driverInfo :: ByteString+ , -- | 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.ConformanceVersion'+ -- is the version of the Vulkan conformance test this driver is conformant+ -- against (see+ -- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.ConformanceVersion').+ conformanceVersion :: ConformanceVersion+ , -- | @denormBehaviorIndependence@ /must/ be a valid+ -- 'Graphics.Vulkan.Core12.Enums.ShaderFloatControlsIndependence.ShaderFloatControlsIndependence'+ -- value+ denormBehaviorIndependence :: ShaderFloatControlsIndependence+ , -- | @roundingModeIndependence@ /must/ be a valid+ -- 'Graphics.Vulkan.Core12.Enums.ShaderFloatControlsIndependence.ShaderFloatControlsIndependence'+ -- value+ roundingModeIndependence :: ShaderFloatControlsIndependence+ , -- | @shaderSignedZeroInfNanPreserveFloat16@ is a boolean value indicating+ -- whether sign of a zero, Nans and \(\pm\infty\) /can/ be preserved in+ -- 16-bit floating-point computations. It also indicates whether the+ -- @SignedZeroInfNanPreserve@ execution mode /can/ be used for 16-bit+ -- floating-point types.+ shaderSignedZeroInfNanPreserveFloat16 :: Bool+ , -- | @shaderSignedZeroInfNanPreserveFloat32@ is a boolean value indicating+ -- whether sign of a zero, Nans and \(\pm\infty\) /can/ be preserved in+ -- 32-bit floating-point computations. It also indicates whether the+ -- @SignedZeroInfNanPreserve@ execution mode /can/ be used for 32-bit+ -- floating-point types.+ shaderSignedZeroInfNanPreserveFloat32 :: Bool+ , -- | @shaderSignedZeroInfNanPreserveFloat64@ is a boolean value indicating+ -- whether sign of a zero, Nans and \(\pm\infty\) /can/ be preserved in+ -- 64-bit floating-point computations. It also indicates whether the+ -- @SignedZeroInfNanPreserve@ execution mode /can/ be used for 64-bit+ -- floating-point types.+ shaderSignedZeroInfNanPreserveFloat64 :: Bool+ , -- | @shaderDenormPreserveFloat16@ is a boolean value indicating whether+ -- denormals /can/ be preserved in 16-bit floating-point computations. It+ -- also indicates whether the @DenormPreserve@ execution mode /can/ be used+ -- for 16-bit floating-point types.+ shaderDenormPreserveFloat16 :: Bool+ , -- | @shaderDenormPreserveFloat32@ is a boolean value indicating whether+ -- denormals /can/ be preserved in 32-bit floating-point computations. It+ -- also indicates whether the @DenormPreserve@ execution mode /can/ be used+ -- for 32-bit floating-point types.+ shaderDenormPreserveFloat32 :: Bool+ , -- | @shaderDenormPreserveFloat64@ is a boolean value indicating whether+ -- denormals /can/ be preserved in 64-bit floating-point computations. It+ -- also indicates whether the @DenormPreserve@ execution mode /can/ be used+ -- for 64-bit floating-point types.+ shaderDenormPreserveFloat64 :: Bool+ , -- | @shaderDenormFlushToZeroFloat16@ is a boolean value indicating whether+ -- denormals /can/ be flushed to zero in 16-bit floating-point+ -- computations. It also indicates whether the @DenormFlushToZero@+ -- execution mode /can/ be used for 16-bit floating-point types.+ shaderDenormFlushToZeroFloat16 :: Bool+ , -- | @shaderDenormFlushToZeroFloat32@ is a boolean value indicating whether+ -- denormals /can/ be flushed to zero in 32-bit floating-point+ -- computations. It also indicates whether the @DenormFlushToZero@+ -- execution mode /can/ be used for 32-bit floating-point types.+ shaderDenormFlushToZeroFloat32 :: Bool+ , -- | @shaderDenormFlushToZeroFloat64@ is a boolean value indicating whether+ -- denormals /can/ be flushed to zero in 64-bit floating-point+ -- computations. It also indicates whether the @DenormFlushToZero@+ -- execution mode /can/ be used for 64-bit floating-point types.+ shaderDenormFlushToZeroFloat64 :: Bool+ , -- | @shaderRoundingModeRTEFloat16@ is a boolean value indicating whether an+ -- implementation supports the round-to-nearest-even rounding mode for+ -- 16-bit floating-point arithmetic and conversion instructions. It also+ -- indicates whether the @RoundingModeRTE@ execution mode /can/ be used for+ -- 16-bit floating-point types.+ shaderRoundingModeRTEFloat16 :: Bool+ , -- | @shaderRoundingModeRTEFloat32@ is a boolean value indicating whether an+ -- implementation supports the round-to-nearest-even rounding mode for+ -- 32-bit floating-point arithmetic and conversion instructions. It also+ -- indicates whether the @RoundingModeRTE@ execution mode /can/ be used for+ -- 32-bit floating-point types.+ shaderRoundingModeRTEFloat32 :: Bool+ , -- | @shaderRoundingModeRTEFloat64@ is a boolean value indicating whether an+ -- implementation supports the round-to-nearest-even rounding mode for+ -- 64-bit floating-point arithmetic and conversion instructions. It also+ -- indicates whether the @RoundingModeRTE@ execution mode /can/ be used for+ -- 64-bit floating-point types.+ shaderRoundingModeRTEFloat64 :: Bool+ , -- | @shaderRoundingModeRTZFloat16@ is a boolean value indicating whether an+ -- implementation supports the round-towards-zero rounding mode for 16-bit+ -- floating-point arithmetic and conversion instructions. It also indicates+ -- whether the @RoundingModeRTZ@ execution mode /can/ be used for 16-bit+ -- floating-point types.+ shaderRoundingModeRTZFloat16 :: Bool+ , -- | @shaderRoundingModeRTZFloat32@ is a boolean value indicating whether an+ -- implementation supports the round-towards-zero rounding mode for 32-bit+ -- floating-point arithmetic and conversion instructions. It also indicates+ -- whether the @RoundingModeRTZ@ execution mode /can/ be used for 32-bit+ -- floating-point types.+ shaderRoundingModeRTZFloat32 :: Bool+ , -- | @shaderRoundingModeRTZFloat64@ is a boolean value indicating whether an+ -- implementation supports the round-towards-zero rounding mode for 64-bit+ -- floating-point arithmetic and conversion instructions. It also indicates+ -- whether the @RoundingModeRTZ@ execution mode /can/ be used for 64-bit+ -- floating-point types.+ shaderRoundingModeRTZFloat64 :: Bool+ , -- | @maxUpdateAfterBindDescriptorsInAllPools@ is the maximum number of+ -- descriptors (summed over all descriptor types) that /can/ be created+ -- across all pools that are created with the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT'+ -- bit set. Pool creation /may/ fail when this limit is exceeded, or when+ -- the space this limit represents is unable to satisfy a pool creation due+ -- to fragmentation.+ maxUpdateAfterBindDescriptorsInAllPools :: Word32+ , -- | @shaderUniformBufferArrayNonUniformIndexingNative@ is a boolean value+ -- indicating whether uniform buffer descriptors natively support+ -- nonuniform indexing. If this is 'Graphics.Vulkan.Core10.BaseType.FALSE',+ -- then a single dynamic instance of an instruction that nonuniformly+ -- indexes an array of uniform buffers /may/ execute multiple times in+ -- order to access all the descriptors.+ shaderUniformBufferArrayNonUniformIndexingNative :: Bool+ , -- | @shaderSampledImageArrayNonUniformIndexingNative@ is a boolean value+ -- indicating whether sampler and image descriptors natively support+ -- nonuniform indexing. If this is 'Graphics.Vulkan.Core10.BaseType.FALSE',+ -- then a single dynamic instance of an instruction that nonuniformly+ -- indexes an array of samplers or images /may/ execute multiple times in+ -- order to access all the descriptors.+ shaderSampledImageArrayNonUniformIndexingNative :: Bool+ , -- | @shaderStorageBufferArrayNonUniformIndexingNative@ is a boolean value+ -- indicating whether storage buffer descriptors natively support+ -- nonuniform indexing. If this is 'Graphics.Vulkan.Core10.BaseType.FALSE',+ -- then a single dynamic instance of an instruction that nonuniformly+ -- indexes an array of storage buffers /may/ execute multiple times in+ -- order to access all the descriptors.+ shaderStorageBufferArrayNonUniformIndexingNative :: Bool+ , -- | @shaderStorageImageArrayNonUniformIndexingNative@ is a boolean value+ -- indicating whether storage image descriptors natively support nonuniform+ -- indexing. If this is 'Graphics.Vulkan.Core10.BaseType.FALSE', then a+ -- single dynamic instance of an instruction that nonuniformly indexes an+ -- array of storage images /may/ execute multiple times in order to access+ -- all the descriptors.+ shaderStorageImageArrayNonUniformIndexingNative :: Bool+ , -- | @shaderInputAttachmentArrayNonUniformIndexingNative@ is a boolean value+ -- indicating whether input attachment descriptors natively support+ -- nonuniform indexing. If this is 'Graphics.Vulkan.Core10.BaseType.FALSE',+ -- then a single dynamic instance of an instruction that nonuniformly+ -- indexes an array of input attachments /may/ execute multiple times in+ -- order to access all the descriptors.+ shaderInputAttachmentArrayNonUniformIndexingNative :: Bool+ , -- | @robustBufferAccessUpdateAfterBind@ is a boolean value indicating+ -- whether+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>+ -- /can/ be enabled in a device simultaneously with+ -- @descriptorBindingUniformBufferUpdateAfterBind@,+ -- @descriptorBindingStorageBufferUpdateAfterBind@,+ -- @descriptorBindingUniformTexelBufferUpdateAfterBind@, and\/or+ -- @descriptorBindingStorageTexelBufferUpdateAfterBind@. If this is+ -- 'Graphics.Vulkan.Core10.BaseType.FALSE', then either+ -- @robustBufferAccess@ /must/ be disabled or all of these+ -- update-after-bind features /must/ be disabled.+ robustBufferAccessUpdateAfterBind :: Bool+ , -- | @quadDivergentImplicitLod@ is a boolean value indicating whether+ -- implicit level of detail calculations for image operations have+ -- well-defined results when the image and\/or sampler objects used for the+ -- instruction are not uniform within a quad. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-derivative-image-operations Derivative Image Operations>.+ quadDivergentImplicitLod :: Bool+ , -- | @maxPerStageDescriptorUpdateAfterBindSamplers@ is similar to+ -- @maxPerStageDescriptorSamplers@ but counts descriptors from descriptor+ -- sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxPerStageDescriptorUpdateAfterBindSamplers :: Word32+ , -- | @maxPerStageDescriptorUpdateAfterBindUniformBuffers@ is similar to+ -- @maxPerStageDescriptorUniformBuffers@ but counts descriptors from+ -- descriptor sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxPerStageDescriptorUpdateAfterBindUniformBuffers :: Word32+ , -- | @maxPerStageDescriptorUpdateAfterBindStorageBuffers@ is similar to+ -- @maxPerStageDescriptorStorageBuffers@ but counts descriptors from+ -- descriptor sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxPerStageDescriptorUpdateAfterBindStorageBuffers :: Word32+ , -- | @maxPerStageDescriptorUpdateAfterBindSampledImages@ is similar to+ -- @maxPerStageDescriptorSampledImages@ but counts descriptors from+ -- descriptor sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxPerStageDescriptorUpdateAfterBindSampledImages :: Word32+ , -- | @maxPerStageDescriptorUpdateAfterBindStorageImages@ is similar to+ -- @maxPerStageDescriptorStorageImages@ but counts descriptors from+ -- descriptor sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxPerStageDescriptorUpdateAfterBindStorageImages :: Word32+ , -- | @maxPerStageDescriptorUpdateAfterBindInputAttachments@ is similar to+ -- @maxPerStageDescriptorInputAttachments@ but counts descriptors from+ -- descriptor sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxPerStageDescriptorUpdateAfterBindInputAttachments :: Word32+ , -- | @maxPerStageUpdateAfterBindResources@ is similar to+ -- @maxPerStageResources@ but counts descriptors from descriptor sets+ -- created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxPerStageUpdateAfterBindResources :: Word32+ , -- | @maxDescriptorSetUpdateAfterBindSamplers@ is similar to+ -- @maxDescriptorSetSamplers@ but counts descriptors from descriptor sets+ -- created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxDescriptorSetUpdateAfterBindSamplers :: Word32+ , -- | @maxDescriptorSetUpdateAfterBindUniformBuffers@ is similar to+ -- @maxDescriptorSetUniformBuffers@ but counts descriptors from descriptor+ -- sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxDescriptorSetUpdateAfterBindUniformBuffers :: Word32+ , -- | @maxDescriptorSetUpdateAfterBindUniformBuffersDynamic@ is similar to+ -- @maxDescriptorSetUniformBuffersDynamic@ but counts descriptors from+ -- descriptor sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxDescriptorSetUpdateAfterBindUniformBuffersDynamic :: Word32+ , -- | @maxDescriptorSetUpdateAfterBindStorageBuffers@ is similar to+ -- @maxDescriptorSetStorageBuffers@ but counts descriptors from descriptor+ -- sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxDescriptorSetUpdateAfterBindStorageBuffers :: Word32+ , -- | @maxDescriptorSetUpdateAfterBindStorageBuffersDynamic@ is similar to+ -- @maxDescriptorSetStorageBuffersDynamic@ but counts descriptors from+ -- descriptor sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxDescriptorSetUpdateAfterBindStorageBuffersDynamic :: Word32+ , -- | @maxDescriptorSetUpdateAfterBindSampledImages@ is similar to+ -- @maxDescriptorSetSampledImages@ but counts descriptors from descriptor+ -- sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxDescriptorSetUpdateAfterBindSampledImages :: Word32+ , -- | @maxDescriptorSetUpdateAfterBindStorageImages@ is similar to+ -- @maxDescriptorSetStorageImages@ but counts descriptors from descriptor+ -- sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxDescriptorSetUpdateAfterBindStorageImages :: Word32+ , -- | @maxDescriptorSetUpdateAfterBindInputAttachments@ is similar to+ -- @maxDescriptorSetInputAttachments@ but counts descriptors from+ -- descriptor sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxDescriptorSetUpdateAfterBindInputAttachments :: Word32+ , -- | @supportedDepthResolveModes@ /must/ not be @0@+ supportedDepthResolveModes :: ResolveModeFlags+ , -- | @supportedStencilResolveModes@ /must/ not be @0@+ supportedStencilResolveModes :: ResolveModeFlags+ , -- | @independentResolveNone@ is 'Graphics.Vulkan.Core10.BaseType.TRUE' if+ -- the implementation supports setting the depth and stencil resolve modes+ -- to different values when one of those modes is+ -- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE'.+ -- Otherwise the implementation only supports setting both modes to the+ -- same value.+ independentResolveNone :: Bool+ , -- | @independentResolve@ is 'Graphics.Vulkan.Core10.BaseType.TRUE' if the+ -- implementation supports all combinations of the supported depth and+ -- stencil resolve modes, including setting either depth or stencil resolve+ -- mode to+ -- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE'. An+ -- implementation that supports @independentResolve@ /must/ also support+ -- @independentResolveNone@.+ independentResolve :: Bool+ , -- | @filterMinmaxSingleComponentFormats@ is a boolean value indicating+ -- whether a minimum set of required formats support min\/max filtering.+ filterMinmaxSingleComponentFormats :: Bool+ , -- | @filterMinmaxImageComponentMapping@ is a boolean value indicating+ -- whether the implementation supports non-identity component mapping of+ -- the image when doing min\/max filtering.+ filterMinmaxImageComponentMapping :: Bool+ , -- | @maxTimelineSemaphoreValueDifference@ indicates the maximum difference+ -- allowed by the implementation between the current value of a timeline+ -- semaphore and any pending signal or wait operations.+ maxTimelineSemaphoreValueDifference :: Word64+ , -- | @framebufferIntegerColorSampleCounts@ /must/ be a valid combination of+ -- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+ -- values+ framebufferIntegerColorSampleCounts :: SampleCountFlags+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceVulkan12Properties++instance ToCStruct PhysicalDeviceVulkan12Properties where+ withCStruct x f = allocaBytesAligned 736 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceVulkan12Properties{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr DriverId)) (driverID)+ lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_NAME_SIZE CChar))) (driverName)+ lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_INFO_SIZE CChar))) (driverInfo)+ ContT $ pokeCStruct ((p `plusPtr` 532 :: Ptr ConformanceVersion)) (conformanceVersion) . ($ ())+ lift $ poke ((p `plusPtr` 536 :: Ptr ShaderFloatControlsIndependence)) (denormBehaviorIndependence)+ lift $ poke ((p `plusPtr` 540 :: Ptr ShaderFloatControlsIndependence)) (roundingModeIndependence)+ lift $ poke ((p `plusPtr` 544 :: Ptr Bool32)) (boolToBool32 (shaderSignedZeroInfNanPreserveFloat16))+ lift $ poke ((p `plusPtr` 548 :: Ptr Bool32)) (boolToBool32 (shaderSignedZeroInfNanPreserveFloat32))+ lift $ poke ((p `plusPtr` 552 :: Ptr Bool32)) (boolToBool32 (shaderSignedZeroInfNanPreserveFloat64))+ lift $ poke ((p `plusPtr` 556 :: Ptr Bool32)) (boolToBool32 (shaderDenormPreserveFloat16))+ lift $ poke ((p `plusPtr` 560 :: Ptr Bool32)) (boolToBool32 (shaderDenormPreserveFloat32))+ lift $ poke ((p `plusPtr` 564 :: Ptr Bool32)) (boolToBool32 (shaderDenormPreserveFloat64))+ lift $ poke ((p `plusPtr` 568 :: Ptr Bool32)) (boolToBool32 (shaderDenormFlushToZeroFloat16))+ lift $ poke ((p `plusPtr` 572 :: Ptr Bool32)) (boolToBool32 (shaderDenormFlushToZeroFloat32))+ lift $ poke ((p `plusPtr` 576 :: Ptr Bool32)) (boolToBool32 (shaderDenormFlushToZeroFloat64))+ lift $ poke ((p `plusPtr` 580 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTEFloat16))+ lift $ poke ((p `plusPtr` 584 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTEFloat32))+ lift $ poke ((p `plusPtr` 588 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTEFloat64))+ lift $ poke ((p `plusPtr` 592 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTZFloat16))+ lift $ poke ((p `plusPtr` 596 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTZFloat32))+ lift $ poke ((p `plusPtr` 600 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTZFloat64))+ lift $ poke ((p `plusPtr` 604 :: Ptr Word32)) (maxUpdateAfterBindDescriptorsInAllPools)+ lift $ poke ((p `plusPtr` 608 :: Ptr Bool32)) (boolToBool32 (shaderUniformBufferArrayNonUniformIndexingNative))+ lift $ poke ((p `plusPtr` 612 :: Ptr Bool32)) (boolToBool32 (shaderSampledImageArrayNonUniformIndexingNative))+ lift $ poke ((p `plusPtr` 616 :: Ptr Bool32)) (boolToBool32 (shaderStorageBufferArrayNonUniformIndexingNative))+ lift $ poke ((p `plusPtr` 620 :: Ptr Bool32)) (boolToBool32 (shaderStorageImageArrayNonUniformIndexingNative))+ lift $ poke ((p `plusPtr` 624 :: Ptr Bool32)) (boolToBool32 (shaderInputAttachmentArrayNonUniformIndexingNative))+ lift $ poke ((p `plusPtr` 628 :: Ptr Bool32)) (boolToBool32 (robustBufferAccessUpdateAfterBind))+ lift $ poke ((p `plusPtr` 632 :: Ptr Bool32)) (boolToBool32 (quadDivergentImplicitLod))+ lift $ poke ((p `plusPtr` 636 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindSamplers)+ lift $ poke ((p `plusPtr` 640 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindUniformBuffers)+ lift $ poke ((p `plusPtr` 644 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindStorageBuffers)+ lift $ poke ((p `plusPtr` 648 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindSampledImages)+ lift $ poke ((p `plusPtr` 652 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindStorageImages)+ lift $ poke ((p `plusPtr` 656 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindInputAttachments)+ lift $ poke ((p `plusPtr` 660 :: Ptr Word32)) (maxPerStageUpdateAfterBindResources)+ lift $ poke ((p `plusPtr` 664 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindSamplers)+ lift $ poke ((p `plusPtr` 668 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindUniformBuffers)+ lift $ poke ((p `plusPtr` 672 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindUniformBuffersDynamic)+ lift $ poke ((p `plusPtr` 676 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindStorageBuffers)+ lift $ poke ((p `plusPtr` 680 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindStorageBuffersDynamic)+ lift $ poke ((p `plusPtr` 684 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindSampledImages)+ lift $ poke ((p `plusPtr` 688 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindStorageImages)+ lift $ poke ((p `plusPtr` 692 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindInputAttachments)+ lift $ poke ((p `plusPtr` 696 :: Ptr ResolveModeFlags)) (supportedDepthResolveModes)+ lift $ poke ((p `plusPtr` 700 :: Ptr ResolveModeFlags)) (supportedStencilResolveModes)+ lift $ poke ((p `plusPtr` 704 :: Ptr Bool32)) (boolToBool32 (independentResolveNone))+ lift $ poke ((p `plusPtr` 708 :: Ptr Bool32)) (boolToBool32 (independentResolve))+ lift $ poke ((p `plusPtr` 712 :: Ptr Bool32)) (boolToBool32 (filterMinmaxSingleComponentFormats))+ lift $ poke ((p `plusPtr` 716 :: Ptr Bool32)) (boolToBool32 (filterMinmaxImageComponentMapping))+ lift $ poke ((p `plusPtr` 720 :: Ptr Word64)) (maxTimelineSemaphoreValueDifference)+ lift $ poke ((p `plusPtr` 728 :: Ptr SampleCountFlags)) (framebufferIntegerColorSampleCounts)+ lift $ f+ cStructSize = 736+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr DriverId)) (zero)+ lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_NAME_SIZE CChar))) (mempty)+ lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_INFO_SIZE CChar))) (mempty)+ ContT $ pokeCStruct ((p `plusPtr` 532 :: Ptr ConformanceVersion)) (zero) . ($ ())+ lift $ poke ((p `plusPtr` 536 :: Ptr ShaderFloatControlsIndependence)) (zero)+ lift $ poke ((p `plusPtr` 540 :: Ptr ShaderFloatControlsIndependence)) (zero)+ lift $ poke ((p `plusPtr` 544 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 548 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 552 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 556 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 560 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 564 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 568 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 572 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 576 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 580 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 584 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 588 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 592 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 596 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 600 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 604 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 608 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 612 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 616 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 620 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 624 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 628 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 632 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 636 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 640 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 644 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 648 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 652 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 656 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 660 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 664 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 668 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 672 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 676 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 680 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 684 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 688 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 692 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 696 :: Ptr ResolveModeFlags)) (zero)+ lift $ poke ((p `plusPtr` 700 :: Ptr ResolveModeFlags)) (zero)+ lift $ poke ((p `plusPtr` 704 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 708 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 712 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 716 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 720 :: Ptr Word64)) (zero)+ lift $ f++instance FromCStruct PhysicalDeviceVulkan12Properties where+ peekCStruct p = do+ driverID <- peek @DriverId ((p `plusPtr` 16 :: Ptr DriverId))+ driverName <- packCString (lowerArrayPtr ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_NAME_SIZE CChar))))+ driverInfo <- packCString (lowerArrayPtr ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_INFO_SIZE CChar))))+ conformanceVersion <- peekCStruct @ConformanceVersion ((p `plusPtr` 532 :: Ptr ConformanceVersion))+ denormBehaviorIndependence <- peek @ShaderFloatControlsIndependence ((p `plusPtr` 536 :: Ptr ShaderFloatControlsIndependence))+ roundingModeIndependence <- peek @ShaderFloatControlsIndependence ((p `plusPtr` 540 :: Ptr ShaderFloatControlsIndependence))+ shaderSignedZeroInfNanPreserveFloat16 <- peek @Bool32 ((p `plusPtr` 544 :: Ptr Bool32))+ shaderSignedZeroInfNanPreserveFloat32 <- peek @Bool32 ((p `plusPtr` 548 :: Ptr Bool32))+ shaderSignedZeroInfNanPreserveFloat64 <- peek @Bool32 ((p `plusPtr` 552 :: Ptr Bool32))+ shaderDenormPreserveFloat16 <- peek @Bool32 ((p `plusPtr` 556 :: Ptr Bool32))+ shaderDenormPreserveFloat32 <- peek @Bool32 ((p `plusPtr` 560 :: Ptr Bool32))+ shaderDenormPreserveFloat64 <- peek @Bool32 ((p `plusPtr` 564 :: Ptr Bool32))+ shaderDenormFlushToZeroFloat16 <- peek @Bool32 ((p `plusPtr` 568 :: Ptr Bool32))+ shaderDenormFlushToZeroFloat32 <- peek @Bool32 ((p `plusPtr` 572 :: Ptr Bool32))+ shaderDenormFlushToZeroFloat64 <- peek @Bool32 ((p `plusPtr` 576 :: Ptr Bool32))+ shaderRoundingModeRTEFloat16 <- peek @Bool32 ((p `plusPtr` 580 :: Ptr Bool32))+ shaderRoundingModeRTEFloat32 <- peek @Bool32 ((p `plusPtr` 584 :: Ptr Bool32))+ shaderRoundingModeRTEFloat64 <- peek @Bool32 ((p `plusPtr` 588 :: Ptr Bool32))+ shaderRoundingModeRTZFloat16 <- peek @Bool32 ((p `plusPtr` 592 :: Ptr Bool32))+ shaderRoundingModeRTZFloat32 <- peek @Bool32 ((p `plusPtr` 596 :: Ptr Bool32))+ shaderRoundingModeRTZFloat64 <- peek @Bool32 ((p `plusPtr` 600 :: Ptr Bool32))+ maxUpdateAfterBindDescriptorsInAllPools <- peek @Word32 ((p `plusPtr` 604 :: Ptr Word32))+ shaderUniformBufferArrayNonUniformIndexingNative <- peek @Bool32 ((p `plusPtr` 608 :: Ptr Bool32))+ shaderSampledImageArrayNonUniformIndexingNative <- peek @Bool32 ((p `plusPtr` 612 :: Ptr Bool32))+ shaderStorageBufferArrayNonUniformIndexingNative <- peek @Bool32 ((p `plusPtr` 616 :: Ptr Bool32))+ shaderStorageImageArrayNonUniformIndexingNative <- peek @Bool32 ((p `plusPtr` 620 :: Ptr Bool32))+ shaderInputAttachmentArrayNonUniformIndexingNative <- peek @Bool32 ((p `plusPtr` 624 :: Ptr Bool32))+ robustBufferAccessUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 628 :: Ptr Bool32))+ quadDivergentImplicitLod <- peek @Bool32 ((p `plusPtr` 632 :: Ptr Bool32))+ maxPerStageDescriptorUpdateAfterBindSamplers <- peek @Word32 ((p `plusPtr` 636 :: Ptr Word32))+ maxPerStageDescriptorUpdateAfterBindUniformBuffers <- peek @Word32 ((p `plusPtr` 640 :: Ptr Word32))+ maxPerStageDescriptorUpdateAfterBindStorageBuffers <- peek @Word32 ((p `plusPtr` 644 :: Ptr Word32))+ maxPerStageDescriptorUpdateAfterBindSampledImages <- peek @Word32 ((p `plusPtr` 648 :: Ptr Word32))+ maxPerStageDescriptorUpdateAfterBindStorageImages <- peek @Word32 ((p `plusPtr` 652 :: Ptr Word32))+ maxPerStageDescriptorUpdateAfterBindInputAttachments <- peek @Word32 ((p `plusPtr` 656 :: Ptr Word32))+ maxPerStageUpdateAfterBindResources <- peek @Word32 ((p `plusPtr` 660 :: Ptr Word32))+ maxDescriptorSetUpdateAfterBindSamplers <- peek @Word32 ((p `plusPtr` 664 :: Ptr Word32))+ maxDescriptorSetUpdateAfterBindUniformBuffers <- peek @Word32 ((p `plusPtr` 668 :: Ptr Word32))+ maxDescriptorSetUpdateAfterBindUniformBuffersDynamic <- peek @Word32 ((p `plusPtr` 672 :: Ptr Word32))+ maxDescriptorSetUpdateAfterBindStorageBuffers <- peek @Word32 ((p `plusPtr` 676 :: Ptr Word32))+ maxDescriptorSetUpdateAfterBindStorageBuffersDynamic <- peek @Word32 ((p `plusPtr` 680 :: Ptr Word32))+ maxDescriptorSetUpdateAfterBindSampledImages <- peek @Word32 ((p `plusPtr` 684 :: Ptr Word32))+ maxDescriptorSetUpdateAfterBindStorageImages <- peek @Word32 ((p `plusPtr` 688 :: Ptr Word32))+ maxDescriptorSetUpdateAfterBindInputAttachments <- peek @Word32 ((p `plusPtr` 692 :: Ptr Word32))+ supportedDepthResolveModes <- peek @ResolveModeFlags ((p `plusPtr` 696 :: Ptr ResolveModeFlags))+ supportedStencilResolveModes <- peek @ResolveModeFlags ((p `plusPtr` 700 :: Ptr ResolveModeFlags))+ independentResolveNone <- peek @Bool32 ((p `plusPtr` 704 :: Ptr Bool32))+ independentResolve <- peek @Bool32 ((p `plusPtr` 708 :: Ptr Bool32))+ filterMinmaxSingleComponentFormats <- peek @Bool32 ((p `plusPtr` 712 :: Ptr Bool32))+ filterMinmaxImageComponentMapping <- peek @Bool32 ((p `plusPtr` 716 :: Ptr Bool32))+ maxTimelineSemaphoreValueDifference <- peek @Word64 ((p `plusPtr` 720 :: Ptr Word64))+ framebufferIntegerColorSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 728 :: Ptr SampleCountFlags))+ pure $ PhysicalDeviceVulkan12Properties+ driverID driverName driverInfo conformanceVersion denormBehaviorIndependence roundingModeIndependence (bool32ToBool shaderSignedZeroInfNanPreserveFloat16) (bool32ToBool shaderSignedZeroInfNanPreserveFloat32) (bool32ToBool shaderSignedZeroInfNanPreserveFloat64) (bool32ToBool shaderDenormPreserveFloat16) (bool32ToBool shaderDenormPreserveFloat32) (bool32ToBool shaderDenormPreserveFloat64) (bool32ToBool shaderDenormFlushToZeroFloat16) (bool32ToBool shaderDenormFlushToZeroFloat32) (bool32ToBool shaderDenormFlushToZeroFloat64) (bool32ToBool shaderRoundingModeRTEFloat16) (bool32ToBool shaderRoundingModeRTEFloat32) (bool32ToBool shaderRoundingModeRTEFloat64) (bool32ToBool shaderRoundingModeRTZFloat16) (bool32ToBool shaderRoundingModeRTZFloat32) (bool32ToBool shaderRoundingModeRTZFloat64) maxUpdateAfterBindDescriptorsInAllPools (bool32ToBool shaderUniformBufferArrayNonUniformIndexingNative) (bool32ToBool shaderSampledImageArrayNonUniformIndexingNative) (bool32ToBool shaderStorageBufferArrayNonUniformIndexingNative) (bool32ToBool shaderStorageImageArrayNonUniformIndexingNative) (bool32ToBool shaderInputAttachmentArrayNonUniformIndexingNative) (bool32ToBool robustBufferAccessUpdateAfterBind) (bool32ToBool quadDivergentImplicitLod) maxPerStageDescriptorUpdateAfterBindSamplers maxPerStageDescriptorUpdateAfterBindUniformBuffers maxPerStageDescriptorUpdateAfterBindStorageBuffers maxPerStageDescriptorUpdateAfterBindSampledImages maxPerStageDescriptorUpdateAfterBindStorageImages maxPerStageDescriptorUpdateAfterBindInputAttachments maxPerStageUpdateAfterBindResources maxDescriptorSetUpdateAfterBindSamplers maxDescriptorSetUpdateAfterBindUniformBuffers maxDescriptorSetUpdateAfterBindUniformBuffersDynamic maxDescriptorSetUpdateAfterBindStorageBuffers maxDescriptorSetUpdateAfterBindStorageBuffersDynamic maxDescriptorSetUpdateAfterBindSampledImages maxDescriptorSetUpdateAfterBindStorageImages maxDescriptorSetUpdateAfterBindInputAttachments supportedDepthResolveModes supportedStencilResolveModes (bool32ToBool independentResolveNone) (bool32ToBool independentResolve) (bool32ToBool filterMinmaxSingleComponentFormats) (bool32ToBool filterMinmaxImageComponentMapping) maxTimelineSemaphoreValueDifference framebufferIntegerColorSampleCounts++instance Zero PhysicalDeviceVulkan12Properties where+ zero = PhysicalDeviceVulkan12Properties+ zero+ mempty+ mempty+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core12.hs-boot view
@@ -0,0 +1,41 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12 ( PhysicalDeviceVulkan11Features+ , PhysicalDeviceVulkan11Properties+ , PhysicalDeviceVulkan12Features+ , PhysicalDeviceVulkan12Properties+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceVulkan11Features++instance ToCStruct PhysicalDeviceVulkan11Features+instance Show PhysicalDeviceVulkan11Features++instance FromCStruct PhysicalDeviceVulkan11Features+++data PhysicalDeviceVulkan11Properties++instance ToCStruct PhysicalDeviceVulkan11Properties+instance Show PhysicalDeviceVulkan11Properties++instance FromCStruct PhysicalDeviceVulkan11Properties+++data PhysicalDeviceVulkan12Features++instance ToCStruct PhysicalDeviceVulkan12Features+instance Show PhysicalDeviceVulkan12Features++instance FromCStruct PhysicalDeviceVulkan12Features+++data PhysicalDeviceVulkan12Properties++instance ToCStruct PhysicalDeviceVulkan12Properties+instance Show PhysicalDeviceVulkan12Properties++instance FromCStruct PhysicalDeviceVulkan12Properties+
+ src/Graphics/Vulkan/Core12/Enums.hs view
@@ -0,0 +1,17 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Enums ( module Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits+ , module Graphics.Vulkan.Core12.Enums.DriverId+ , module Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits+ , module Graphics.Vulkan.Core12.Enums.SamplerReductionMode+ , module Graphics.Vulkan.Core12.Enums.SemaphoreType+ , module Graphics.Vulkan.Core12.Enums.SemaphoreWaitFlagBits+ , module Graphics.Vulkan.Core12.Enums.ShaderFloatControlsIndependence+ ) where+import Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits+import Graphics.Vulkan.Core12.Enums.DriverId+import Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits+import Graphics.Vulkan.Core12.Enums.SamplerReductionMode+import Graphics.Vulkan.Core12.Enums.SemaphoreType+import Graphics.Vulkan.Core12.Enums.SemaphoreWaitFlagBits+import Graphics.Vulkan.Core12.Enums.ShaderFloatControlsIndependence+
+ src/Graphics/Vulkan/Core12/Enums/DescriptorBindingFlagBits.hs view
@@ -0,0 +1,115 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits ( DescriptorBindingFlagBits( DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT+ , DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT+ , DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT+ , DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT+ , ..+ )+ , DescriptorBindingFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkDescriptorBindingFlagBits - Bitmask specifying descriptor set layout+-- binding properties+--+-- = Description+--+-- Note+--+-- Note that while 'DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT' and+-- 'DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT' both involve+-- updates to descriptor sets after they are bound,+-- 'DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT' is a weaker+-- requirement since it is only about descriptors that are not used,+-- whereas 'DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT' requires the+-- implementation to observe updates to descriptors that are used.+--+-- = See Also+--+-- 'DescriptorBindingFlags'+newtype DescriptorBindingFlagBits = DescriptorBindingFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT' indicates that if descriptors+-- in this binding are updated between when the descriptor set is bound in+-- a command buffer and when that command buffer is submitted to a queue,+-- then the submission will use the most recently set descriptors for this+-- binding and the updates do not invalidate the command buffer. Descriptor+-- bindings created with this flag are also partially exempt from the+-- external synchronization requirement in+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.updateDescriptorSetWithTemplateKHR'+-- and 'Graphics.Vulkan.Core10.DescriptorSet.updateDescriptorSets'.+-- Multiple descriptors with this flag set /can/ be updated concurrently in+-- different threads, though the same descriptor /must/ not be updated+-- concurrently by two threads. Descriptors with this flag set /can/ be+-- updated concurrently with the set being bound to a command buffer in+-- another thread, but not concurrently with the set being reset or freed.+pattern DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = DescriptorBindingFlagBits 0x00000001+-- | 'DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT' indicates that+-- descriptors in this binding /can/ be updated after a command buffer has+-- bound this descriptor set, or while a command buffer that uses this+-- descriptor set is pending execution, as long as the descriptors that are+-- updated are not used by those command buffers. If+-- 'DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT' is also set, then descriptors+-- /can/ be updated as long as they are not dynamically used by any shader+-- invocations. If 'DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT' is not set,+-- then descriptors /can/ be updated as long as they are not statically+-- used by any shader invocations.+pattern DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = DescriptorBindingFlagBits 0x00000002+-- | 'DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT' indicates that descriptors in+-- this binding that are not /dynamically used/ need not contain valid+-- descriptors at the time the descriptors are consumed. A descriptor is+-- dynamically used if any shader invocation executes an instruction that+-- performs any memory access using the descriptor.+pattern DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = DescriptorBindingFlagBits 0x00000004+-- | 'DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT' indicates that this+-- descriptor binding has a variable size that will be specified when a+-- descriptor set is allocated using this layout. The value of+-- @descriptorCount@ is treated as an upper bound on the size of the+-- binding. This /must/ only be used for the last binding in the descriptor+-- set layout (i.e. the binding with the largest value of @binding@). For+-- the purposes of counting against limits such as @maxDescriptorSet@* and+-- @maxPerStageDescriptor@*, the full value of @descriptorCount@ is counted+-- , except for descriptor bindings with a descriptor type of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+-- where @descriptorCount@ specifies the upper bound on the byte size of+-- the binding, thus it counts against the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxInlineUniformBlockSize maxInlineUniformBlockSize>+-- limit instead. .+pattern DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = DescriptorBindingFlagBits 0x00000008++type DescriptorBindingFlags = DescriptorBindingFlagBits++instance Show DescriptorBindingFlagBits where+ showsPrec p = \case+ DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT -> showString "DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT"+ DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT -> showString "DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT"+ DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT -> showString "DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT"+ DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT -> showString "DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT"+ DescriptorBindingFlagBits x -> showParen (p >= 11) (showString "DescriptorBindingFlagBits 0x" . showHex x)++instance Read DescriptorBindingFlagBits where+ readPrec = parens (choose [("DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT", pure DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT)+ , ("DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT", pure DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT)+ , ("DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT", pure DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT)+ , ("DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT", pure DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT)]+ ++++ prec 10 (do+ expectP (Ident "DescriptorBindingFlagBits")+ v <- step readPrec+ pure (DescriptorBindingFlagBits v)))+
+ src/Graphics/Vulkan/Core12/Enums/DescriptorBindingFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits ( DescriptorBindingFlagBits+ , DescriptorBindingFlags+ ) where++++data DescriptorBindingFlagBits++type DescriptorBindingFlags = DescriptorBindingFlagBits+
+ src/Graphics/Vulkan/Core12/Enums/DriverId.hs view
@@ -0,0 +1,127 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Enums.DriverId (DriverId( DRIVER_ID_AMD_PROPRIETARY+ , DRIVER_ID_AMD_OPEN_SOURCE+ , DRIVER_ID_MESA_RADV+ , DRIVER_ID_NVIDIA_PROPRIETARY+ , DRIVER_ID_INTEL_PROPRIETARY_WINDOWS+ , DRIVER_ID_INTEL_OPEN_SOURCE_MESA+ , DRIVER_ID_IMAGINATION_PROPRIETARY+ , DRIVER_ID_QUALCOMM_PROPRIETARY+ , DRIVER_ID_ARM_PROPRIETARY+ , DRIVER_ID_GOOGLE_SWIFTSHADER+ , DRIVER_ID_GGP_PROPRIETARY+ , DRIVER_ID_BROADCOM_PROPRIETARY+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkDriverId - Khronos driver IDs+--+-- = Description+--+-- Note+--+-- Khronos driver IDs may be allocated by vendors at any time. There may be+-- multiple driver IDs for the same vendor, representing different drivers+-- (for e.g. different platforms, proprietary or open source, etc.). Only+-- the latest canonical versions of this Specification, of the+-- corresponding @vk.xml@ API Registry, and of the corresponding+-- @vulkan_core.h@ header file /must/ contain all reserved Khronos driver+-- IDs.+--+-- Only driver IDs registered with Khronos are given symbolic names. There+-- /may/ be unregistered driver IDs returned.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.PhysicalDeviceDriverProperties',+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan12Properties'+newtype DriverId = DriverId Int32+ deriving newtype (Eq, Ord, Storable, Zero)+-- Note that the zero instance does not produce a valid value, passing 'zero' to Vulkan will result in an error++-- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_AMD_PROPRIETARY"+pattern DRIVER_ID_AMD_PROPRIETARY = DriverId 1+-- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_AMD_OPEN_SOURCE"+pattern DRIVER_ID_AMD_OPEN_SOURCE = DriverId 2+-- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_MESA_RADV"+pattern DRIVER_ID_MESA_RADV = DriverId 3+-- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_NVIDIA_PROPRIETARY"+pattern DRIVER_ID_NVIDIA_PROPRIETARY = DriverId 4+-- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS"+pattern DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = DriverId 5+-- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA"+pattern DRIVER_ID_INTEL_OPEN_SOURCE_MESA = DriverId 6+-- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_IMAGINATION_PROPRIETARY"+pattern DRIVER_ID_IMAGINATION_PROPRIETARY = DriverId 7+-- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_QUALCOMM_PROPRIETARY"+pattern DRIVER_ID_QUALCOMM_PROPRIETARY = DriverId 8+-- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_ARM_PROPRIETARY"+pattern DRIVER_ID_ARM_PROPRIETARY = DriverId 9+-- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_GOOGLE_SWIFTSHADER"+pattern DRIVER_ID_GOOGLE_SWIFTSHADER = DriverId 10+-- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_GGP_PROPRIETARY"+pattern DRIVER_ID_GGP_PROPRIETARY = DriverId 11+-- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_BROADCOM_PROPRIETARY"+pattern DRIVER_ID_BROADCOM_PROPRIETARY = DriverId 12+{-# complete DRIVER_ID_AMD_PROPRIETARY,+ DRIVER_ID_AMD_OPEN_SOURCE,+ DRIVER_ID_MESA_RADV,+ DRIVER_ID_NVIDIA_PROPRIETARY,+ DRIVER_ID_INTEL_PROPRIETARY_WINDOWS,+ DRIVER_ID_INTEL_OPEN_SOURCE_MESA,+ DRIVER_ID_IMAGINATION_PROPRIETARY,+ DRIVER_ID_QUALCOMM_PROPRIETARY,+ DRIVER_ID_ARM_PROPRIETARY,+ DRIVER_ID_GOOGLE_SWIFTSHADER,+ DRIVER_ID_GGP_PROPRIETARY,+ DRIVER_ID_BROADCOM_PROPRIETARY :: DriverId #-}++instance Show DriverId where+ showsPrec p = \case+ DRIVER_ID_AMD_PROPRIETARY -> showString "DRIVER_ID_AMD_PROPRIETARY"+ DRIVER_ID_AMD_OPEN_SOURCE -> showString "DRIVER_ID_AMD_OPEN_SOURCE"+ DRIVER_ID_MESA_RADV -> showString "DRIVER_ID_MESA_RADV"+ DRIVER_ID_NVIDIA_PROPRIETARY -> showString "DRIVER_ID_NVIDIA_PROPRIETARY"+ DRIVER_ID_INTEL_PROPRIETARY_WINDOWS -> showString "DRIVER_ID_INTEL_PROPRIETARY_WINDOWS"+ DRIVER_ID_INTEL_OPEN_SOURCE_MESA -> showString "DRIVER_ID_INTEL_OPEN_SOURCE_MESA"+ DRIVER_ID_IMAGINATION_PROPRIETARY -> showString "DRIVER_ID_IMAGINATION_PROPRIETARY"+ DRIVER_ID_QUALCOMM_PROPRIETARY -> showString "DRIVER_ID_QUALCOMM_PROPRIETARY"+ DRIVER_ID_ARM_PROPRIETARY -> showString "DRIVER_ID_ARM_PROPRIETARY"+ DRIVER_ID_GOOGLE_SWIFTSHADER -> showString "DRIVER_ID_GOOGLE_SWIFTSHADER"+ DRIVER_ID_GGP_PROPRIETARY -> showString "DRIVER_ID_GGP_PROPRIETARY"+ DRIVER_ID_BROADCOM_PROPRIETARY -> showString "DRIVER_ID_BROADCOM_PROPRIETARY"+ DriverId x -> showParen (p >= 11) (showString "DriverId " . showsPrec 11 x)++instance Read DriverId where+ readPrec = parens (choose [("DRIVER_ID_AMD_PROPRIETARY", pure DRIVER_ID_AMD_PROPRIETARY)+ , ("DRIVER_ID_AMD_OPEN_SOURCE", pure DRIVER_ID_AMD_OPEN_SOURCE)+ , ("DRIVER_ID_MESA_RADV", pure DRIVER_ID_MESA_RADV)+ , ("DRIVER_ID_NVIDIA_PROPRIETARY", pure DRIVER_ID_NVIDIA_PROPRIETARY)+ , ("DRIVER_ID_INTEL_PROPRIETARY_WINDOWS", pure DRIVER_ID_INTEL_PROPRIETARY_WINDOWS)+ , ("DRIVER_ID_INTEL_OPEN_SOURCE_MESA", pure DRIVER_ID_INTEL_OPEN_SOURCE_MESA)+ , ("DRIVER_ID_IMAGINATION_PROPRIETARY", pure DRIVER_ID_IMAGINATION_PROPRIETARY)+ , ("DRIVER_ID_QUALCOMM_PROPRIETARY", pure DRIVER_ID_QUALCOMM_PROPRIETARY)+ , ("DRIVER_ID_ARM_PROPRIETARY", pure DRIVER_ID_ARM_PROPRIETARY)+ , ("DRIVER_ID_GOOGLE_SWIFTSHADER", pure DRIVER_ID_GOOGLE_SWIFTSHADER)+ , ("DRIVER_ID_GGP_PROPRIETARY", pure DRIVER_ID_GGP_PROPRIETARY)+ , ("DRIVER_ID_BROADCOM_PROPRIETARY", pure DRIVER_ID_BROADCOM_PROPRIETARY)]+ ++++ prec 10 (do+ expectP (Ident "DriverId")+ v <- step readPrec+ pure (DriverId v)))+
+ src/Graphics/Vulkan/Core12/Enums/DriverId.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Enums.DriverId (DriverId) where++++data DriverId+
+ src/Graphics/Vulkan/Core12/Enums/ResolveModeFlagBits.hs view
@@ -0,0 +1,74 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits ( ResolveModeFlagBits( RESOLVE_MODE_NONE+ , RESOLVE_MODE_SAMPLE_ZERO_BIT+ , RESOLVE_MODE_AVERAGE_BIT+ , RESOLVE_MODE_MIN_BIT+ , RESOLVE_MODE_MAX_BIT+ , ..+ )+ , ResolveModeFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkResolveModeFlagBits - Bitmask indicating supported depth and stencil+-- resolve modes+--+-- = See Also+--+-- 'ResolveModeFlags',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve'+newtype ResolveModeFlagBits = ResolveModeFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'RESOLVE_MODE_NONE' indicates that no resolve operation is done.+pattern RESOLVE_MODE_NONE = ResolveModeFlagBits 0x00000000+-- | 'RESOLVE_MODE_SAMPLE_ZERO_BIT' indicates that result of the resolve+-- operation is equal to the value of sample 0.+pattern RESOLVE_MODE_SAMPLE_ZERO_BIT = ResolveModeFlagBits 0x00000001+-- | 'RESOLVE_MODE_AVERAGE_BIT' indicates that result of the resolve+-- operation is the average of the sample values.+pattern RESOLVE_MODE_AVERAGE_BIT = ResolveModeFlagBits 0x00000002+-- | 'RESOLVE_MODE_MIN_BIT' indicates that result of the resolve operation is+-- the minimum of the sample values.+pattern RESOLVE_MODE_MIN_BIT = ResolveModeFlagBits 0x00000004+-- | 'RESOLVE_MODE_MAX_BIT' indicates that result of the resolve operation is+-- the maximum of the sample values.+pattern RESOLVE_MODE_MAX_BIT = ResolveModeFlagBits 0x00000008++type ResolveModeFlags = ResolveModeFlagBits++instance Show ResolveModeFlagBits where+ showsPrec p = \case+ RESOLVE_MODE_NONE -> showString "RESOLVE_MODE_NONE"+ RESOLVE_MODE_SAMPLE_ZERO_BIT -> showString "RESOLVE_MODE_SAMPLE_ZERO_BIT"+ RESOLVE_MODE_AVERAGE_BIT -> showString "RESOLVE_MODE_AVERAGE_BIT"+ RESOLVE_MODE_MIN_BIT -> showString "RESOLVE_MODE_MIN_BIT"+ RESOLVE_MODE_MAX_BIT -> showString "RESOLVE_MODE_MAX_BIT"+ ResolveModeFlagBits x -> showParen (p >= 11) (showString "ResolveModeFlagBits 0x" . showHex x)++instance Read ResolveModeFlagBits where+ readPrec = parens (choose [("RESOLVE_MODE_NONE", pure RESOLVE_MODE_NONE)+ , ("RESOLVE_MODE_SAMPLE_ZERO_BIT", pure RESOLVE_MODE_SAMPLE_ZERO_BIT)+ , ("RESOLVE_MODE_AVERAGE_BIT", pure RESOLVE_MODE_AVERAGE_BIT)+ , ("RESOLVE_MODE_MIN_BIT", pure RESOLVE_MODE_MIN_BIT)+ , ("RESOLVE_MODE_MAX_BIT", pure RESOLVE_MODE_MAX_BIT)]+ ++++ prec 10 (do+ expectP (Ident "ResolveModeFlagBits")+ v <- step readPrec+ pure (ResolveModeFlagBits v)))+
+ src/Graphics/Vulkan/Core12/Enums/ResolveModeFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits ( ResolveModeFlagBits+ , ResolveModeFlags+ ) where++++data ResolveModeFlagBits++type ResolveModeFlags = ResolveModeFlagBits+
+ src/Graphics/Vulkan/Core12/Enums/SamplerReductionMode.hs view
@@ -0,0 +1,63 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Enums.SamplerReductionMode (SamplerReductionMode( SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE+ , SAMPLER_REDUCTION_MODE_MIN+ , SAMPLER_REDUCTION_MODE_MAX+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkSamplerReductionMode - Specify reduction mode for texture filtering+--+-- = See Also+--+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.SamplerReductionModeCreateInfo'+newtype SamplerReductionMode = SamplerReductionMode Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE' specifies that texel values+-- are combined by computing a weighted average of values in the footprint,+-- using weights as specified in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-unnormalized-to-integer the image operations chapter>.+pattern SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = SamplerReductionMode 0+-- | 'SAMPLER_REDUCTION_MODE_MIN' specifies that texel values are combined by+-- taking the component-wise minimum of values in the footprint with+-- non-zero weights.+pattern SAMPLER_REDUCTION_MODE_MIN = SamplerReductionMode 1+-- | 'SAMPLER_REDUCTION_MODE_MAX' specifies that texel values are combined by+-- taking the component-wise maximum of values in the footprint with+-- non-zero weights.+pattern SAMPLER_REDUCTION_MODE_MAX = SamplerReductionMode 2+{-# complete SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE,+ SAMPLER_REDUCTION_MODE_MIN,+ SAMPLER_REDUCTION_MODE_MAX :: SamplerReductionMode #-}++instance Show SamplerReductionMode where+ showsPrec p = \case+ SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE -> showString "SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE"+ SAMPLER_REDUCTION_MODE_MIN -> showString "SAMPLER_REDUCTION_MODE_MIN"+ SAMPLER_REDUCTION_MODE_MAX -> showString "SAMPLER_REDUCTION_MODE_MAX"+ SamplerReductionMode x -> showParen (p >= 11) (showString "SamplerReductionMode " . showsPrec 11 x)++instance Read SamplerReductionMode where+ readPrec = parens (choose [("SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE", pure SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE)+ , ("SAMPLER_REDUCTION_MODE_MIN", pure SAMPLER_REDUCTION_MODE_MIN)+ , ("SAMPLER_REDUCTION_MODE_MAX", pure SAMPLER_REDUCTION_MODE_MAX)]+ ++++ prec 10 (do+ expectP (Ident "SamplerReductionMode")+ v <- step readPrec+ pure (SamplerReductionMode v)))+
+ src/Graphics/Vulkan/Core12/Enums/SamplerReductionMode.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Enums.SamplerReductionMode (SamplerReductionMode) where++++data SamplerReductionMode+
+ src/Graphics/Vulkan/Core12/Enums/SemaphoreType.hs view
@@ -0,0 +1,57 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Enums.SemaphoreType (SemaphoreType( SEMAPHORE_TYPE_BINARY+ , SEMAPHORE_TYPE_TIMELINE+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkSemaphoreType - Sepcifies the type of a semaphore object+--+-- = See Also+--+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo'+newtype SemaphoreType = SemaphoreType Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'SEMAPHORE_TYPE_BINARY' specifies a /binary semaphore/ type that has a+-- boolean payload indicating whether the semaphore is currently signaled+-- or unsignaled. When created, the semaphore is in the unsignaled state.+pattern SEMAPHORE_TYPE_BINARY = SemaphoreType 0+-- | 'SEMAPHORE_TYPE_TIMELINE' specifies a /timeline semaphore/ type that has+-- a monotonically increasing 64-bit unsigned integer payload indicating+-- whether the semaphore is signaled with respect to a particular reference+-- value. When created, the semaphore payload has the value given by the+-- @initialValue@ field of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo'.+pattern SEMAPHORE_TYPE_TIMELINE = SemaphoreType 1+{-# complete SEMAPHORE_TYPE_BINARY,+ SEMAPHORE_TYPE_TIMELINE :: SemaphoreType #-}++instance Show SemaphoreType where+ showsPrec p = \case+ SEMAPHORE_TYPE_BINARY -> showString "SEMAPHORE_TYPE_BINARY"+ SEMAPHORE_TYPE_TIMELINE -> showString "SEMAPHORE_TYPE_TIMELINE"+ SemaphoreType x -> showParen (p >= 11) (showString "SemaphoreType " . showsPrec 11 x)++instance Read SemaphoreType where+ readPrec = parens (choose [("SEMAPHORE_TYPE_BINARY", pure SEMAPHORE_TYPE_BINARY)+ , ("SEMAPHORE_TYPE_TIMELINE", pure SEMAPHORE_TYPE_TIMELINE)]+ ++++ prec 10 (do+ expectP (Ident "SemaphoreType")+ v <- step readPrec+ pure (SemaphoreType v)))+
+ src/Graphics/Vulkan/Core12/Enums/SemaphoreType.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Enums.SemaphoreType (SemaphoreType) where++++data SemaphoreType+
+ src/Graphics/Vulkan/Core12/Enums/SemaphoreWaitFlagBits.hs view
@@ -0,0 +1,58 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Enums.SemaphoreWaitFlagBits ( SemaphoreWaitFlagBits( SEMAPHORE_WAIT_ANY_BIT+ , ..+ )+ , SemaphoreWaitFlags+ ) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Foreign.Storable (Storable)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Zero (Zero)+-- | VkSemaphoreWaitFlagBits - Bitmask specifying additional parameters of a+-- semaphore wait operation+--+-- = See Also+--+-- 'SemaphoreWaitFlags'+newtype SemaphoreWaitFlagBits = SemaphoreWaitFlagBits Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'SEMAPHORE_WAIT_ANY_BIT' specifies that the semaphore wait condition is+-- that at least one of the semaphores in+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo'::@pSemaphores@+-- has reached the value specified by the corresponding element of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo'::@pValues@.+-- If 'SEMAPHORE_WAIT_ANY_BIT' is not set, the semaphore wait condition is+-- that all of the semaphores in+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo'::@pSemaphores@+-- have reached the value specified by the corresponding element of+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo'::@pValues@.+pattern SEMAPHORE_WAIT_ANY_BIT = SemaphoreWaitFlagBits 0x00000001++type SemaphoreWaitFlags = SemaphoreWaitFlagBits++instance Show SemaphoreWaitFlagBits where+ showsPrec p = \case+ SEMAPHORE_WAIT_ANY_BIT -> showString "SEMAPHORE_WAIT_ANY_BIT"+ SemaphoreWaitFlagBits x -> showParen (p >= 11) (showString "SemaphoreWaitFlagBits 0x" . showHex x)++instance Read SemaphoreWaitFlagBits where+ readPrec = parens (choose [("SEMAPHORE_WAIT_ANY_BIT", pure SEMAPHORE_WAIT_ANY_BIT)]+ ++++ prec 10 (do+ expectP (Ident "SemaphoreWaitFlagBits")+ v <- step readPrec+ pure (SemaphoreWaitFlagBits v)))+
+ src/Graphics/Vulkan/Core12/Enums/SemaphoreWaitFlagBits.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Enums.SemaphoreWaitFlagBits ( SemaphoreWaitFlagBits+ , SemaphoreWaitFlags+ ) where++++data SemaphoreWaitFlagBits++type SemaphoreWaitFlags = SemaphoreWaitFlagBits+
+ src/Graphics/Vulkan/Core12/Enums/ShaderFloatControlsIndependence.hs view
@@ -0,0 +1,62 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Enums.ShaderFloatControlsIndependence (ShaderFloatControlsIndependence( SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY+ , SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL+ , SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE+ , ..+ )) where++import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- | VkShaderFloatControlsIndependence - Enum specifying whether, and how,+-- shader float controls can be set separately+--+-- = See Also+--+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls.PhysicalDeviceFloatControlsProperties',+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan12Properties'+newtype ShaderFloatControlsIndependence = ShaderFloatControlsIndependence Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY' specifies that shader+-- float controls for 32-bit floating point /can/ be set independently;+-- other bit widths /must/ be set identically to each other.+pattern SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = ShaderFloatControlsIndependence 0+-- | 'SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL' specifies that shader float+-- controls for all bit widths /can/ be set independently.+pattern SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = ShaderFloatControlsIndependence 1+-- | 'SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE' specifies that shader float+-- controls for all bit widths /must/ be set identically.+pattern SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = ShaderFloatControlsIndependence 2+{-# complete SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY,+ SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL,+ SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE :: ShaderFloatControlsIndependence #-}++instance Show ShaderFloatControlsIndependence where+ showsPrec p = \case+ SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY -> showString "SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY"+ SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL -> showString "SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL"+ SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE -> showString "SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE"+ ShaderFloatControlsIndependence x -> showParen (p >= 11) (showString "ShaderFloatControlsIndependence " . showsPrec 11 x)++instance Read ShaderFloatControlsIndependence where+ readPrec = parens (choose [("SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY", pure SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY)+ , ("SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL", pure SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL)+ , ("SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE", pure SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE)]+ ++++ prec 10 (do+ expectP (Ident "ShaderFloatControlsIndependence")+ v <- step readPrec+ pure (ShaderFloatControlsIndependence v)))+
+ src/Graphics/Vulkan/Core12/Enums/ShaderFloatControlsIndependence.hs-boot view
@@ -0,0 +1,7 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Enums.ShaderFloatControlsIndependence (ShaderFloatControlsIndependence) where++++data ShaderFloatControlsIndependence+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_EXT_descriptor_indexing.hs view
@@ -0,0 +1,989 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing ( PhysicalDeviceDescriptorIndexingFeatures(..)+ , PhysicalDeviceDescriptorIndexingProperties(..)+ , DescriptorSetLayoutBindingFlagsCreateInfo(..)+ , DescriptorSetVariableDescriptorCountAllocateInfo(..)+ , DescriptorSetVariableDescriptorCountLayoutSupport(..)+ , StructureType(..)+ , Result(..)+ , DescriptorPoolCreateFlagBits(..)+ , DescriptorPoolCreateFlags+ , DescriptorSetLayoutCreateFlagBits(..)+ , DescriptorSetLayoutCreateFlags+ , DescriptorBindingFlagBits(..)+ , DescriptorBindingFlags+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Utils (maybePeek)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Either (Either)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits (DescriptorBindingFlags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES))+import Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits (DescriptorBindingFlagBits(..))+import Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits (DescriptorBindingFlags)+import Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits (DescriptorPoolCreateFlagBits(..))+import Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits (DescriptorPoolCreateFlags)+import Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits (DescriptorSetLayoutCreateFlagBits(..))+import Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits (DescriptorSetLayoutCreateFlags)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- | VkPhysicalDeviceDescriptorIndexingFeatures - Structure describing+-- descriptor indexing features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceDescriptorIndexingFeatures' structure+-- describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceDescriptorIndexingFeatures' structure is included+-- in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether each feature is supported.+-- 'PhysicalDeviceDescriptorIndexingFeatures' /can/ also be included in the+-- @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceDescriptorIndexingFeatures = PhysicalDeviceDescriptorIndexingFeatures+ { -- | @shaderInputAttachmentArrayDynamicIndexing@ indicates whether arrays of+ -- input attachments /can/ be indexed by dynamically uniform integer+ -- expressions in shader code. If this feature is not enabled, resources+ -- with a descriptor type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'+ -- /must/ be indexed only by constant integral expressions when aggregated+ -- into arrays in shader code. This also indicates whether shader modules+ -- /can/ declare the @InputAttachmentArrayDynamicIndexing@ capability.+ shaderInputAttachmentArrayDynamicIndexing :: Bool+ , -- | @shaderUniformTexelBufferArrayDynamicIndexing@ indicates whether arrays+ -- of uniform texel buffers /can/ be indexed by dynamically uniform integer+ -- expressions in shader code. If this feature is not enabled, resources+ -- with a descriptor type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'+ -- /must/ be indexed only by constant integral expressions when aggregated+ -- into arrays in shader code. This also indicates whether shader modules+ -- /can/ declare the @UniformTexelBufferArrayDynamicIndexing@ capability.+ shaderUniformTexelBufferArrayDynamicIndexing :: Bool+ , -- | @shaderStorageTexelBufferArrayDynamicIndexing@ indicates whether arrays+ -- of storage texel buffers /can/ be indexed by dynamically uniform integer+ -- expressions in shader code. If this feature is not enabled, resources+ -- with a descriptor type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'+ -- /must/ be indexed only by constant integral expressions when aggregated+ -- into arrays in shader code. This also indicates whether shader modules+ -- /can/ declare the @StorageTexelBufferArrayDynamicIndexing@ capability.+ shaderStorageTexelBufferArrayDynamicIndexing :: Bool+ , -- | @shaderUniformBufferArrayNonUniformIndexing@ indicates whether arrays of+ -- uniform buffers /can/ be indexed by non-uniform integer expressions in+ -- shader code. If this feature is not enabled, resources with a descriptor+ -- type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'+ -- /must/ not be indexed by non-uniform integer expressions when aggregated+ -- into arrays in shader code. This also indicates whether shader modules+ -- /can/ declare the @UniformBufferArrayNonUniformIndexing@ capability.+ shaderUniformBufferArrayNonUniformIndexing :: Bool+ , -- | @shaderSampledImageArrayNonUniformIndexing@ indicates whether arrays of+ -- samplers or sampled images /can/ be indexed by non-uniform integer+ -- expressions in shader code. If this feature is not enabled, resources+ -- with a descriptor type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'+ -- /must/ not be indexed by non-uniform integer expressions when aggregated+ -- into arrays in shader code. This also indicates whether shader modules+ -- /can/ declare the @SampledImageArrayNonUniformIndexing@ capability.+ shaderSampledImageArrayNonUniformIndexing :: Bool+ , -- | @shaderStorageBufferArrayNonUniformIndexing@ indicates whether arrays of+ -- storage buffers /can/ be indexed by non-uniform integer expressions in+ -- shader code. If this feature is not enabled, resources with a descriptor+ -- type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'+ -- /must/ not be indexed by non-uniform integer expressions when aggregated+ -- into arrays in shader code. This also indicates whether shader modules+ -- /can/ declare the @StorageBufferArrayNonUniformIndexing@ capability.+ shaderStorageBufferArrayNonUniformIndexing :: Bool+ , -- | @shaderStorageImageArrayNonUniformIndexing@ indicates whether arrays of+ -- storage images /can/ be indexed by non-uniform integer expressions in+ -- shader code. If this feature is not enabled, resources with a descriptor+ -- type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'+ -- /must/ not be indexed by non-uniform integer expressions when aggregated+ -- into arrays in shader code. This also indicates whether shader modules+ -- /can/ declare the @StorageImageArrayNonUniformIndexing@ capability.+ shaderStorageImageArrayNonUniformIndexing :: Bool+ , -- | @shaderInputAttachmentArrayNonUniformIndexing@ indicates whether arrays+ -- of input attachments /can/ be indexed by non-uniform integer expressions+ -- in shader code. If this feature is not enabled, resources with a+ -- descriptor type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'+ -- /must/ not be indexed by non-uniform integer expressions when aggregated+ -- into arrays in shader code. This also indicates whether shader modules+ -- /can/ declare the @InputAttachmentArrayNonUniformIndexing@ capability.+ shaderInputAttachmentArrayNonUniformIndexing :: Bool+ , -- | @shaderUniformTexelBufferArrayNonUniformIndexing@ indicates whether+ -- arrays of uniform texel buffers /can/ be indexed by non-uniform integer+ -- expressions in shader code. If this feature is not enabled, resources+ -- with a descriptor type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'+ -- /must/ not be indexed by non-uniform integer expressions when aggregated+ -- into arrays in shader code. This also indicates whether shader modules+ -- /can/ declare the @UniformTexelBufferArrayNonUniformIndexing@+ -- capability.+ shaderUniformTexelBufferArrayNonUniformIndexing :: Bool+ , -- | @shaderStorageTexelBufferArrayNonUniformIndexing@ indicates whether+ -- arrays of storage texel buffers /can/ be indexed by non-uniform integer+ -- expressions in shader code. If this feature is not enabled, resources+ -- with a descriptor type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'+ -- /must/ not be indexed by non-uniform integer expressions when aggregated+ -- into arrays in shader code. This also indicates whether shader modules+ -- /can/ declare the @StorageTexelBufferArrayNonUniformIndexing@+ -- capability.+ shaderStorageTexelBufferArrayNonUniformIndexing :: Bool+ , -- | @descriptorBindingUniformBufferUpdateAfterBind@ indicates whether the+ -- implementation supports updating uniform buffer descriptors after a set+ -- is bound. If this feature is not enabled,+ -- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+ -- /must/ not be used with+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'.+ descriptorBindingUniformBufferUpdateAfterBind :: Bool+ , -- | @descriptorBindingSampledImageUpdateAfterBind@ indicates whether the+ -- implementation supports updating sampled image descriptors after a set+ -- is bound. If this feature is not enabled,+ -- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+ -- /must/ not be used with+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'.+ descriptorBindingSampledImageUpdateAfterBind :: Bool+ , -- | @descriptorBindingStorageImageUpdateAfterBind@ indicates whether the+ -- implementation supports updating storage image descriptors after a set+ -- is bound. If this feature is not enabled,+ -- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+ -- /must/ not be used with+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'.+ descriptorBindingStorageImageUpdateAfterBind :: Bool+ , -- | @descriptorBindingStorageBufferUpdateAfterBind@ indicates whether the+ -- implementation supports updating storage buffer descriptors after a set+ -- is bound. If this feature is not enabled,+ -- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+ -- /must/ not be used with+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'.+ descriptorBindingStorageBufferUpdateAfterBind :: Bool+ , -- | @descriptorBindingUniformTexelBufferUpdateAfterBind@ indicates whether+ -- the implementation supports updating uniform texel buffer descriptors+ -- after a set is bound. If this feature is not enabled,+ -- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+ -- /must/ not be used with+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'.+ descriptorBindingUniformTexelBufferUpdateAfterBind :: Bool+ , -- | @descriptorBindingStorageTexelBufferUpdateAfterBind@ indicates whether+ -- the implementation supports updating storage texel buffer descriptors+ -- after a set is bound. If this feature is not enabled,+ -- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+ -- /must/ not be used with+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'.+ descriptorBindingStorageTexelBufferUpdateAfterBind :: Bool+ , -- | @descriptorBindingUpdateUnusedWhilePending@ indicates whether the+ -- implementation supports updating descriptors while the set is in use. If+ -- this feature is not enabled,+ -- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT'+ -- /must/ not be used.+ descriptorBindingUpdateUnusedWhilePending :: Bool+ , -- | @descriptorBindingPartiallyBound@ indicates whether the implementation+ -- supports statically using a descriptor set binding in which some+ -- descriptors are not valid. If this feature is not enabled,+ -- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT'+ -- /must/ not be used.+ descriptorBindingPartiallyBound :: Bool+ , -- | @descriptorBindingVariableDescriptorCount@ indicates whether the+ -- implementation supports descriptor sets with a variable-sized last+ -- binding. If this feature is not enabled,+ -- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT'+ -- /must/ not be used.+ descriptorBindingVariableDescriptorCount :: Bool+ , -- | @runtimeDescriptorArray@ indicates whether the implementation supports+ -- the SPIR-V @RuntimeDescriptorArray@ capability. If this feature is not+ -- enabled, descriptors /must/ not be declared in runtime arrays.+ runtimeDescriptorArray :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceDescriptorIndexingFeatures++instance ToCStruct PhysicalDeviceDescriptorIndexingFeatures where+ withCStruct x f = allocaBytesAligned 96 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceDescriptorIndexingFeatures{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderInputAttachmentArrayDynamicIndexing))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (shaderUniformTexelBufferArrayDynamicIndexing))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (shaderStorageTexelBufferArrayDynamicIndexing))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (shaderUniformBufferArrayNonUniformIndexing))+ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (shaderSampledImageArrayNonUniformIndexing))+ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (shaderStorageBufferArrayNonUniformIndexing))+ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (shaderStorageImageArrayNonUniformIndexing))+ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (shaderInputAttachmentArrayNonUniformIndexing))+ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (shaderUniformTexelBufferArrayNonUniformIndexing))+ poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (shaderStorageTexelBufferArrayNonUniformIndexing))+ poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (descriptorBindingUniformBufferUpdateAfterBind))+ poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (descriptorBindingSampledImageUpdateAfterBind))+ poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (descriptorBindingStorageImageUpdateAfterBind))+ poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (descriptorBindingStorageBufferUpdateAfterBind))+ poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (descriptorBindingUniformTexelBufferUpdateAfterBind))+ poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (descriptorBindingStorageTexelBufferUpdateAfterBind))+ poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (descriptorBindingUpdateUnusedWhilePending))+ poke ((p `plusPtr` 84 :: Ptr Bool32)) (boolToBool32 (descriptorBindingPartiallyBound))+ poke ((p `plusPtr` 88 :: Ptr Bool32)) (boolToBool32 (descriptorBindingVariableDescriptorCount))+ poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (runtimeDescriptorArray))+ f+ cStructSize = 96+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 84 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 88 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceDescriptorIndexingFeatures where+ peekCStruct p = do+ shaderInputAttachmentArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ shaderUniformTexelBufferArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ shaderStorageTexelBufferArrayDynamicIndexing <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ shaderUniformBufferArrayNonUniformIndexing <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))+ shaderSampledImageArrayNonUniformIndexing <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))+ shaderStorageBufferArrayNonUniformIndexing <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))+ shaderStorageImageArrayNonUniformIndexing <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))+ shaderInputAttachmentArrayNonUniformIndexing <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))+ shaderUniformTexelBufferArrayNonUniformIndexing <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))+ shaderStorageTexelBufferArrayNonUniformIndexing <- peek @Bool32 ((p `plusPtr` 52 :: Ptr Bool32))+ descriptorBindingUniformBufferUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))+ descriptorBindingSampledImageUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))+ descriptorBindingStorageImageUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 64 :: Ptr Bool32))+ descriptorBindingStorageBufferUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 68 :: Ptr Bool32))+ descriptorBindingUniformTexelBufferUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 72 :: Ptr Bool32))+ descriptorBindingStorageTexelBufferUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 76 :: Ptr Bool32))+ descriptorBindingUpdateUnusedWhilePending <- peek @Bool32 ((p `plusPtr` 80 :: Ptr Bool32))+ descriptorBindingPartiallyBound <- peek @Bool32 ((p `plusPtr` 84 :: Ptr Bool32))+ descriptorBindingVariableDescriptorCount <- peek @Bool32 ((p `plusPtr` 88 :: Ptr Bool32))+ runtimeDescriptorArray <- peek @Bool32 ((p `plusPtr` 92 :: Ptr Bool32))+ pure $ PhysicalDeviceDescriptorIndexingFeatures+ (bool32ToBool shaderInputAttachmentArrayDynamicIndexing) (bool32ToBool shaderUniformTexelBufferArrayDynamicIndexing) (bool32ToBool shaderStorageTexelBufferArrayDynamicIndexing) (bool32ToBool shaderUniformBufferArrayNonUniformIndexing) (bool32ToBool shaderSampledImageArrayNonUniformIndexing) (bool32ToBool shaderStorageBufferArrayNonUniformIndexing) (bool32ToBool shaderStorageImageArrayNonUniformIndexing) (bool32ToBool shaderInputAttachmentArrayNonUniformIndexing) (bool32ToBool shaderUniformTexelBufferArrayNonUniformIndexing) (bool32ToBool shaderStorageTexelBufferArrayNonUniformIndexing) (bool32ToBool descriptorBindingUniformBufferUpdateAfterBind) (bool32ToBool descriptorBindingSampledImageUpdateAfterBind) (bool32ToBool descriptorBindingStorageImageUpdateAfterBind) (bool32ToBool descriptorBindingStorageBufferUpdateAfterBind) (bool32ToBool descriptorBindingUniformTexelBufferUpdateAfterBind) (bool32ToBool descriptorBindingStorageTexelBufferUpdateAfterBind) (bool32ToBool descriptorBindingUpdateUnusedWhilePending) (bool32ToBool descriptorBindingPartiallyBound) (bool32ToBool descriptorBindingVariableDescriptorCount) (bool32ToBool runtimeDescriptorArray)++instance Storable PhysicalDeviceDescriptorIndexingFeatures where+ sizeOf ~_ = 96+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceDescriptorIndexingFeatures where+ zero = PhysicalDeviceDescriptorIndexingFeatures+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkPhysicalDeviceDescriptorIndexingProperties - Structure describing+-- descriptor indexing properties that can be supported by an+-- implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceDescriptorIndexingProperties'+-- structure describe the following implementation-dependent limits:+--+-- = Description+--+-- If the 'PhysicalDeviceDescriptorIndexingProperties' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceDescriptorIndexingProperties = PhysicalDeviceDescriptorIndexingProperties+ { -- | @maxUpdateAfterBindDescriptorsInAllPools@ is the maximum number of+ -- descriptors (summed over all descriptor types) that /can/ be created+ -- across all pools that are created with the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT'+ -- bit set. Pool creation /may/ fail when this limit is exceeded, or when+ -- the space this limit represents is unable to satisfy a pool creation due+ -- to fragmentation.+ maxUpdateAfterBindDescriptorsInAllPools :: Word32+ , -- | @shaderUniformBufferArrayNonUniformIndexingNative@ is a boolean value+ -- indicating whether uniform buffer descriptors natively support+ -- nonuniform indexing. If this is 'Graphics.Vulkan.Core10.BaseType.FALSE',+ -- then a single dynamic instance of an instruction that nonuniformly+ -- indexes an array of uniform buffers /may/ execute multiple times in+ -- order to access all the descriptors.+ shaderUniformBufferArrayNonUniformIndexingNative :: Bool+ , -- | @shaderSampledImageArrayNonUniformIndexingNative@ is a boolean value+ -- indicating whether sampler and image descriptors natively support+ -- nonuniform indexing. If this is 'Graphics.Vulkan.Core10.BaseType.FALSE',+ -- then a single dynamic instance of an instruction that nonuniformly+ -- indexes an array of samplers or images /may/ execute multiple times in+ -- order to access all the descriptors.+ shaderSampledImageArrayNonUniformIndexingNative :: Bool+ , -- | @shaderStorageBufferArrayNonUniformIndexingNative@ is a boolean value+ -- indicating whether storage buffer descriptors natively support+ -- nonuniform indexing. If this is 'Graphics.Vulkan.Core10.BaseType.FALSE',+ -- then a single dynamic instance of an instruction that nonuniformly+ -- indexes an array of storage buffers /may/ execute multiple times in+ -- order to access all the descriptors.+ shaderStorageBufferArrayNonUniformIndexingNative :: Bool+ , -- | @shaderStorageImageArrayNonUniformIndexingNative@ is a boolean value+ -- indicating whether storage image descriptors natively support nonuniform+ -- indexing. If this is 'Graphics.Vulkan.Core10.BaseType.FALSE', then a+ -- single dynamic instance of an instruction that nonuniformly indexes an+ -- array of storage images /may/ execute multiple times in order to access+ -- all the descriptors.+ shaderStorageImageArrayNonUniformIndexingNative :: Bool+ , -- | @shaderInputAttachmentArrayNonUniformIndexingNative@ is a boolean value+ -- indicating whether input attachment descriptors natively support+ -- nonuniform indexing. If this is 'Graphics.Vulkan.Core10.BaseType.FALSE',+ -- then a single dynamic instance of an instruction that nonuniformly+ -- indexes an array of input attachments /may/ execute multiple times in+ -- order to access all the descriptors.+ shaderInputAttachmentArrayNonUniformIndexingNative :: Bool+ , -- | @robustBufferAccessUpdateAfterBind@ is a boolean value indicating+ -- whether+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>+ -- /can/ be enabled in a device simultaneously with+ -- @descriptorBindingUniformBufferUpdateAfterBind@,+ -- @descriptorBindingStorageBufferUpdateAfterBind@,+ -- @descriptorBindingUniformTexelBufferUpdateAfterBind@, and\/or+ -- @descriptorBindingStorageTexelBufferUpdateAfterBind@. If this is+ -- 'Graphics.Vulkan.Core10.BaseType.FALSE', then either+ -- @robustBufferAccess@ /must/ be disabled or all of these+ -- update-after-bind features /must/ be disabled.+ robustBufferAccessUpdateAfterBind :: Bool+ , -- | @quadDivergentImplicitLod@ is a boolean value indicating whether+ -- implicit level of detail calculations for image operations have+ -- well-defined results when the image and\/or sampler objects used for the+ -- instruction are not uniform within a quad. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-derivative-image-operations Derivative Image Operations>.+ quadDivergentImplicitLod :: Bool+ , -- | @maxPerStageDescriptorUpdateAfterBindSamplers@ is similar to+ -- @maxPerStageDescriptorSamplers@ but counts descriptors from descriptor+ -- sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxPerStageDescriptorUpdateAfterBindSamplers :: Word32+ , -- | @maxPerStageDescriptorUpdateAfterBindUniformBuffers@ is similar to+ -- @maxPerStageDescriptorUniformBuffers@ but counts descriptors from+ -- descriptor sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxPerStageDescriptorUpdateAfterBindUniformBuffers :: Word32+ , -- | @maxPerStageDescriptorUpdateAfterBindStorageBuffers@ is similar to+ -- @maxPerStageDescriptorStorageBuffers@ but counts descriptors from+ -- descriptor sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxPerStageDescriptorUpdateAfterBindStorageBuffers :: Word32+ , -- | @maxPerStageDescriptorUpdateAfterBindSampledImages@ is similar to+ -- @maxPerStageDescriptorSampledImages@ but counts descriptors from+ -- descriptor sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxPerStageDescriptorUpdateAfterBindSampledImages :: Word32+ , -- | @maxPerStageDescriptorUpdateAfterBindStorageImages@ is similar to+ -- @maxPerStageDescriptorStorageImages@ but counts descriptors from+ -- descriptor sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxPerStageDescriptorUpdateAfterBindStorageImages :: Word32+ , -- | @maxPerStageDescriptorUpdateAfterBindInputAttachments@ is similar to+ -- @maxPerStageDescriptorInputAttachments@ but counts descriptors from+ -- descriptor sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxPerStageDescriptorUpdateAfterBindInputAttachments :: Word32+ , -- | @maxPerStageUpdateAfterBindResources@ is similar to+ -- @maxPerStageResources@ but counts descriptors from descriptor sets+ -- created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxPerStageUpdateAfterBindResources :: Word32+ , -- | @maxDescriptorSetUpdateAfterBindSamplers@ is similar to+ -- @maxDescriptorSetSamplers@ but counts descriptors from descriptor sets+ -- created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxDescriptorSetUpdateAfterBindSamplers :: Word32+ , -- | @maxDescriptorSetUpdateAfterBindUniformBuffers@ is similar to+ -- @maxDescriptorSetUniformBuffers@ but counts descriptors from descriptor+ -- sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxDescriptorSetUpdateAfterBindUniformBuffers :: Word32+ , -- | @maxDescriptorSetUpdateAfterBindUniformBuffersDynamic@ is similar to+ -- @maxDescriptorSetUniformBuffersDynamic@ but counts descriptors from+ -- descriptor sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxDescriptorSetUpdateAfterBindUniformBuffersDynamic :: Word32+ , -- | @maxDescriptorSetUpdateAfterBindStorageBuffers@ is similar to+ -- @maxDescriptorSetStorageBuffers@ but counts descriptors from descriptor+ -- sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxDescriptorSetUpdateAfterBindStorageBuffers :: Word32+ , -- | @maxDescriptorSetUpdateAfterBindStorageBuffersDynamic@ is similar to+ -- @maxDescriptorSetStorageBuffersDynamic@ but counts descriptors from+ -- descriptor sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxDescriptorSetUpdateAfterBindStorageBuffersDynamic :: Word32+ , -- | @maxDescriptorSetUpdateAfterBindSampledImages@ is similar to+ -- @maxDescriptorSetSampledImages@ but counts descriptors from descriptor+ -- sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxDescriptorSetUpdateAfterBindSampledImages :: Word32+ , -- | @maxDescriptorSetUpdateAfterBindStorageImages@ is similar to+ -- @maxDescriptorSetStorageImages@ but counts descriptors from descriptor+ -- sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxDescriptorSetUpdateAfterBindStorageImages :: Word32+ , -- | @maxDescriptorSetUpdateAfterBindInputAttachments@ is similar to+ -- @maxDescriptorSetInputAttachments@ but counts descriptors from+ -- descriptor sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxDescriptorSetUpdateAfterBindInputAttachments :: Word32+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceDescriptorIndexingProperties++instance ToCStruct PhysicalDeviceDescriptorIndexingProperties where+ withCStruct x f = allocaBytesAligned 112 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceDescriptorIndexingProperties{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (maxUpdateAfterBindDescriptorsInAllPools)+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (shaderUniformBufferArrayNonUniformIndexingNative))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (shaderSampledImageArrayNonUniformIndexingNative))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (shaderStorageBufferArrayNonUniformIndexingNative))+ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (shaderStorageImageArrayNonUniformIndexingNative))+ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (shaderInputAttachmentArrayNonUniformIndexingNative))+ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (robustBufferAccessUpdateAfterBind))+ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (quadDivergentImplicitLod))+ poke ((p `plusPtr` 48 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindSamplers)+ poke ((p `plusPtr` 52 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindUniformBuffers)+ poke ((p `plusPtr` 56 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindStorageBuffers)+ poke ((p `plusPtr` 60 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindSampledImages)+ poke ((p `plusPtr` 64 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindStorageImages)+ poke ((p `plusPtr` 68 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindInputAttachments)+ poke ((p `plusPtr` 72 :: Ptr Word32)) (maxPerStageUpdateAfterBindResources)+ poke ((p `plusPtr` 76 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindSamplers)+ poke ((p `plusPtr` 80 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindUniformBuffers)+ poke ((p `plusPtr` 84 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindUniformBuffersDynamic)+ poke ((p `plusPtr` 88 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindStorageBuffers)+ poke ((p `plusPtr` 92 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindStorageBuffersDynamic)+ poke ((p `plusPtr` 96 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindSampledImages)+ poke ((p `plusPtr` 100 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindStorageImages)+ poke ((p `plusPtr` 104 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindInputAttachments)+ f+ cStructSize = 112+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 60 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 64 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 68 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 72 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 76 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 80 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 84 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 88 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 92 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 96 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 100 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 104 :: Ptr Word32)) (zero)+ f++instance FromCStruct PhysicalDeviceDescriptorIndexingProperties where+ peekCStruct p = do+ maxUpdateAfterBindDescriptorsInAllPools <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ shaderUniformBufferArrayNonUniformIndexingNative <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ shaderSampledImageArrayNonUniformIndexingNative <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ shaderStorageBufferArrayNonUniformIndexingNative <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))+ shaderStorageImageArrayNonUniformIndexingNative <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))+ shaderInputAttachmentArrayNonUniformIndexingNative <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))+ robustBufferAccessUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))+ quadDivergentImplicitLod <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))+ maxPerStageDescriptorUpdateAfterBindSamplers <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+ maxPerStageDescriptorUpdateAfterBindUniformBuffers <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))+ maxPerStageDescriptorUpdateAfterBindStorageBuffers <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))+ maxPerStageDescriptorUpdateAfterBindSampledImages <- peek @Word32 ((p `plusPtr` 60 :: Ptr Word32))+ maxPerStageDescriptorUpdateAfterBindStorageImages <- peek @Word32 ((p `plusPtr` 64 :: Ptr Word32))+ maxPerStageDescriptorUpdateAfterBindInputAttachments <- peek @Word32 ((p `plusPtr` 68 :: Ptr Word32))+ maxPerStageUpdateAfterBindResources <- peek @Word32 ((p `plusPtr` 72 :: Ptr Word32))+ maxDescriptorSetUpdateAfterBindSamplers <- peek @Word32 ((p `plusPtr` 76 :: Ptr Word32))+ maxDescriptorSetUpdateAfterBindUniformBuffers <- peek @Word32 ((p `plusPtr` 80 :: Ptr Word32))+ maxDescriptorSetUpdateAfterBindUniformBuffersDynamic <- peek @Word32 ((p `plusPtr` 84 :: Ptr Word32))+ maxDescriptorSetUpdateAfterBindStorageBuffers <- peek @Word32 ((p `plusPtr` 88 :: Ptr Word32))+ maxDescriptorSetUpdateAfterBindStorageBuffersDynamic <- peek @Word32 ((p `plusPtr` 92 :: Ptr Word32))+ maxDescriptorSetUpdateAfterBindSampledImages <- peek @Word32 ((p `plusPtr` 96 :: Ptr Word32))+ maxDescriptorSetUpdateAfterBindStorageImages <- peek @Word32 ((p `plusPtr` 100 :: Ptr Word32))+ maxDescriptorSetUpdateAfterBindInputAttachments <- peek @Word32 ((p `plusPtr` 104 :: Ptr Word32))+ pure $ PhysicalDeviceDescriptorIndexingProperties+ maxUpdateAfterBindDescriptorsInAllPools (bool32ToBool shaderUniformBufferArrayNonUniformIndexingNative) (bool32ToBool shaderSampledImageArrayNonUniformIndexingNative) (bool32ToBool shaderStorageBufferArrayNonUniformIndexingNative) (bool32ToBool shaderStorageImageArrayNonUniformIndexingNative) (bool32ToBool shaderInputAttachmentArrayNonUniformIndexingNative) (bool32ToBool robustBufferAccessUpdateAfterBind) (bool32ToBool quadDivergentImplicitLod) maxPerStageDescriptorUpdateAfterBindSamplers maxPerStageDescriptorUpdateAfterBindUniformBuffers maxPerStageDescriptorUpdateAfterBindStorageBuffers maxPerStageDescriptorUpdateAfterBindSampledImages maxPerStageDescriptorUpdateAfterBindStorageImages maxPerStageDescriptorUpdateAfterBindInputAttachments maxPerStageUpdateAfterBindResources maxDescriptorSetUpdateAfterBindSamplers maxDescriptorSetUpdateAfterBindUniformBuffers maxDescriptorSetUpdateAfterBindUniformBuffersDynamic maxDescriptorSetUpdateAfterBindStorageBuffers maxDescriptorSetUpdateAfterBindStorageBuffersDynamic maxDescriptorSetUpdateAfterBindSampledImages maxDescriptorSetUpdateAfterBindStorageImages maxDescriptorSetUpdateAfterBindInputAttachments++instance Storable PhysicalDeviceDescriptorIndexingProperties where+ sizeOf ~_ = 112+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceDescriptorIndexingProperties where+ zero = PhysicalDeviceDescriptorIndexingProperties+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkDescriptorSetLayoutBindingFlagsCreateInfo - Structure specifying+-- creation flags for descriptor set layout bindings+--+-- = Description+--+-- If @bindingCount@ is zero or if this structure is not included in the+-- @pNext@ chain, the+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DescriptorBindingFlags'+-- for each descriptor set layout binding is considered to be zero.+-- Otherwise, the descriptor set layout binding at+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo'::@pBindings@[i]+-- uses the flags in @pBindingFlags@[i].+--+-- == Valid Usage+--+-- - If @bindingCount@ is not zero, @bindingCount@ /must/ equal+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo'::@bindingCount@+--+-- - If+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- includes+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR',+-- then all elements of @pBindingFlags@ /must/ not include+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT',+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT',+-- or+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT'+--+-- - If an element of @pBindingFlags@ includes+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT',+-- then all other elements of+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo'::@pBindings@+-- /must/ have a smaller value of @binding@+--+-- - If+-- 'PhysicalDeviceDescriptorIndexingFeatures'::@descriptorBindingUniformBufferUpdateAfterBind@+-- is not enabled, all bindings with descriptor type+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'+-- /must/ not use+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+--+-- - If+-- 'PhysicalDeviceDescriptorIndexingFeatures'::@descriptorBindingSampledImageUpdateAfterBind@+-- is not enabled, all bindings with descriptor type+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'+-- /must/ not use+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+--+-- - If+-- 'PhysicalDeviceDescriptorIndexingFeatures'::@descriptorBindingStorageImageUpdateAfterBind@+-- is not enabled, all bindings with descriptor type+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'+-- /must/ not use+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+--+-- - If+-- 'PhysicalDeviceDescriptorIndexingFeatures'::@descriptorBindingStorageBufferUpdateAfterBind@+-- is not enabled, all bindings with descriptor type+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'+-- /must/ not use+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+--+-- - If+-- 'PhysicalDeviceDescriptorIndexingFeatures'::@descriptorBindingUniformTexelBufferUpdateAfterBind@+-- is not enabled, all bindings with descriptor type+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'+-- /must/ not use+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+--+-- - If+-- 'PhysicalDeviceDescriptorIndexingFeatures'::@descriptorBindingStorageTexelBufferUpdateAfterBind@+-- is not enabled, all bindings with descriptor type+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'+-- /must/ not use+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+--+-- - If+-- 'Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeaturesEXT'::@descriptorBindingInlineUniformBlockUpdateAfterBind@+-- is not enabled, all bindings with descriptor type+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+-- /must/ not use+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+--+-- - All bindings with descriptor type+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC',+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'+-- /must/ not use+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+--+-- - If+-- 'PhysicalDeviceDescriptorIndexingFeatures'::@descriptorBindingUpdateUnusedWhilePending@+-- is not enabled, all elements of @pBindingFlags@ /must/ not include+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT'+--+-- - If+-- 'PhysicalDeviceDescriptorIndexingFeatures'::@descriptorBindingPartiallyBound@+-- is not enabled, all elements of @pBindingFlags@ /must/ not include+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT'+--+-- - If+-- 'PhysicalDeviceDescriptorIndexingFeatures'::@descriptorBindingVariableDescriptorCount@+-- is not enabled, all elements of @pBindingFlags@ /must/ not include+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT'+--+-- - If an element of @pBindingFlags@ includes+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT',+-- that element’s+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' /must/+-- not be+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO'+--+-- - If @bindingCount@ is not @0@, and @pBindingFlags@ is not @NULL@,+-- @pBindingFlags@ /must/ be a valid pointer to an array of+-- @bindingCount@ valid combinations of+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DescriptorBindingFlagBits'+-- values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DescriptorBindingFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DescriptorSetLayoutBindingFlagsCreateInfo = DescriptorSetLayoutBindingFlagsCreateInfo+ { -- | @pBindingFlags@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DescriptorBindingFlags'+ -- bitfields, one for each descriptor set layout binding.+ bindingFlags :: Either Word32 (Vector DescriptorBindingFlags) }+ deriving (Typeable)+deriving instance Show DescriptorSetLayoutBindingFlagsCreateInfo++instance ToCStruct DescriptorSetLayoutBindingFlagsCreateInfo where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DescriptorSetLayoutBindingFlagsCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (either id (fromIntegral . Data.Vector.length) (bindingFlags)) :: Word32))+ pBindingFlags'' <- case (bindingFlags) of+ Left _ -> pure nullPtr+ Right v -> do+ pPBindingFlags' <- ContT $ allocaBytesAligned @DescriptorBindingFlags ((Data.Vector.length (v)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPBindingFlags' `plusPtr` (4 * (i)) :: Ptr DescriptorBindingFlags) (e)) (v)+ pure $ pPBindingFlags'+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DescriptorBindingFlags))) pBindingFlags''+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct DescriptorSetLayoutBindingFlagsCreateInfo where+ peekCStruct p = do+ bindingCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pBindingFlags <- peek @(Ptr DescriptorBindingFlags) ((p `plusPtr` 24 :: Ptr (Ptr DescriptorBindingFlags)))+ pBindingFlags' <- maybePeek (\j -> generateM (fromIntegral bindingCount) (\i -> peek @DescriptorBindingFlags (((j) `advancePtrBytes` (4 * (i)) :: Ptr DescriptorBindingFlags)))) pBindingFlags+ let pBindingFlags'' = maybe (Left bindingCount) Right pBindingFlags'+ pure $ DescriptorSetLayoutBindingFlagsCreateInfo+ pBindingFlags''++instance Zero DescriptorSetLayoutBindingFlagsCreateInfo where+ zero = DescriptorSetLayoutBindingFlagsCreateInfo+ (Left 0)+++-- | VkDescriptorSetVariableDescriptorCountAllocateInfo - Structure+-- specifying additional allocation parameters for descriptor sets+--+-- = Description+--+-- If @descriptorSetCount@ is zero or this structure is not included in the+-- @pNext@ chain, then the variable lengths are considered to be zero.+-- Otherwise, @pDescriptorCounts@[i] is the number of descriptors in the+-- variable count descriptor binding in the corresponding descriptor set+-- layout. If the variable count descriptor binding in the corresponding+-- descriptor set layout has a descriptor type of+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+-- then @pDescriptorCounts@[i] specifies the binding’s capacity in bytes.+-- If+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo'::@pSetLayouts@[i]+-- does not include a variable count descriptor binding, then+-- @pDescriptorCounts@[i] is ignored.+--+-- == Valid Usage+--+-- - If @descriptorSetCount@ is not zero, @descriptorSetCount@ /must/+-- equal+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo'::@descriptorSetCount@+--+-- - If+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo'::@pSetLayouts@[i]+-- has a variable descriptor count binding, then @pDescriptorCounts@[i]+-- /must/ be less than or equal to the descriptor count specified for+-- that binding when the descriptor set layout was created.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO'+--+-- - If @descriptorSetCount@ is not @0@, @pDescriptorCounts@ /must/ be a+-- valid pointer to an array of @descriptorSetCount@ @uint32_t@ values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DescriptorSetVariableDescriptorCountAllocateInfo = DescriptorSetVariableDescriptorCountAllocateInfo+ { -- | @pDescriptorCounts@ is a pointer to an array of descriptor counts, with+ -- each member specifying the number of descriptors in a variable+ -- descriptor count binding in the corresponding descriptor set being+ -- allocated.+ descriptorCounts :: Vector Word32 }+ deriving (Typeable)+deriving instance Show DescriptorSetVariableDescriptorCountAllocateInfo++instance ToCStruct DescriptorSetVariableDescriptorCountAllocateInfo where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DescriptorSetVariableDescriptorCountAllocateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (descriptorCounts)) :: Word32))+ pPDescriptorCounts' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (descriptorCounts)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPDescriptorCounts' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (descriptorCounts)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPDescriptorCounts')+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPDescriptorCounts' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPDescriptorCounts' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPDescriptorCounts')+ lift $ f++instance FromCStruct DescriptorSetVariableDescriptorCountAllocateInfo where+ peekCStruct p = do+ descriptorSetCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pDescriptorCounts <- peek @(Ptr Word32) ((p `plusPtr` 24 :: Ptr (Ptr Word32)))+ pDescriptorCounts' <- generateM (fromIntegral descriptorSetCount) (\i -> peek @Word32 ((pDescriptorCounts `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ pure $ DescriptorSetVariableDescriptorCountAllocateInfo+ pDescriptorCounts'++instance Zero DescriptorSetVariableDescriptorCountAllocateInfo where+ zero = DescriptorSetVariableDescriptorCountAllocateInfo+ mempty+++-- | VkDescriptorSetVariableDescriptorCountLayoutSupport - Structure+-- returning information about whether a descriptor set layout can be+-- supported+--+-- = Description+--+-- If the create info includes a variable-sized descriptor, then+-- @supported@ is determined assuming the requested size of the+-- variable-sized descriptor, and @maxVariableDescriptorCount@ is set to+-- the maximum size of that descriptor that /can/ be successfully created+-- (which is greater than or equal to the requested size passed in). If the+-- create info does not include a variable-sized descriptor or if the+-- 'PhysicalDeviceDescriptorIndexingFeatures'::@descriptorBindingVariableDescriptorCount@+-- feature is not enabled, then @maxVariableDescriptorCount@ is set to+-- zero. For the purposes of this command, a variable-sized descriptor+-- binding with a @descriptorCount@ of zero is treated as if the+-- @descriptorCount@ is one, and thus the binding is not ignored and the+-- maximum descriptor count will be returned. If the layout is not+-- supported, then the value written to @maxVariableDescriptorCount@ is+-- undefined.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DescriptorSetVariableDescriptorCountLayoutSupport = DescriptorSetVariableDescriptorCountLayoutSupport+ { -- | @maxVariableDescriptorCount@ indicates the maximum number of descriptors+ -- supported in the highest numbered binding of the layout, if that binding+ -- is variable-sized. If the highest numbered binding of the layout has a+ -- descriptor type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+ -- then @maxVariableDescriptorCount@ indicates the maximum byte size+ -- supported for the binding, if that binding is variable-sized.+ maxVariableDescriptorCount :: Word32 }+ deriving (Typeable)+deriving instance Show DescriptorSetVariableDescriptorCountLayoutSupport++instance ToCStruct DescriptorSetVariableDescriptorCountLayoutSupport where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DescriptorSetVariableDescriptorCountLayoutSupport{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (maxVariableDescriptorCount)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ f++instance FromCStruct DescriptorSetVariableDescriptorCountLayoutSupport where+ peekCStruct p = do+ maxVariableDescriptorCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pure $ DescriptorSetVariableDescriptorCountLayoutSupport+ maxVariableDescriptorCount++instance Storable DescriptorSetVariableDescriptorCountLayoutSupport where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DescriptorSetVariableDescriptorCountLayoutSupport where+ zero = DescriptorSetVariableDescriptorCountLayoutSupport+ zero+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_EXT_descriptor_indexing.hs-boot view
@@ -0,0 +1,50 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing ( DescriptorSetLayoutBindingFlagsCreateInfo+ , DescriptorSetVariableDescriptorCountAllocateInfo+ , DescriptorSetVariableDescriptorCountLayoutSupport+ , PhysicalDeviceDescriptorIndexingFeatures+ , PhysicalDeviceDescriptorIndexingProperties+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data DescriptorSetLayoutBindingFlagsCreateInfo++instance ToCStruct DescriptorSetLayoutBindingFlagsCreateInfo+instance Show DescriptorSetLayoutBindingFlagsCreateInfo++instance FromCStruct DescriptorSetLayoutBindingFlagsCreateInfo+++data DescriptorSetVariableDescriptorCountAllocateInfo++instance ToCStruct DescriptorSetVariableDescriptorCountAllocateInfo+instance Show DescriptorSetVariableDescriptorCountAllocateInfo++instance FromCStruct DescriptorSetVariableDescriptorCountAllocateInfo+++data DescriptorSetVariableDescriptorCountLayoutSupport++instance ToCStruct DescriptorSetVariableDescriptorCountLayoutSupport+instance Show DescriptorSetVariableDescriptorCountLayoutSupport++instance FromCStruct DescriptorSetVariableDescriptorCountLayoutSupport+++data PhysicalDeviceDescriptorIndexingFeatures++instance ToCStruct PhysicalDeviceDescriptorIndexingFeatures+instance Show PhysicalDeviceDescriptorIndexingFeatures++instance FromCStruct PhysicalDeviceDescriptorIndexingFeatures+++data PhysicalDeviceDescriptorIndexingProperties++instance ToCStruct PhysicalDeviceDescriptorIndexingProperties+instance Show PhysicalDeviceDescriptorIndexingProperties++instance FromCStruct PhysicalDeviceDescriptorIndexingProperties+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_EXT_host_query_reset.hs view
@@ -0,0 +1,173 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset ( resetQueryPool+ , PhysicalDeviceHostQueryResetFeatures(..)+ , StructureType(..)+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkResetQueryPool))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (QueryPool)+import Graphics.Vulkan.Core10.Handles (QueryPool(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkResetQueryPool+ :: FunPtr (Ptr Device_T -> QueryPool -> Word32 -> Word32 -> IO ()) -> Ptr Device_T -> QueryPool -> Word32 -> Word32 -> IO ()++-- | vkResetQueryPool - Reset queries in a query pool+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the query pool.+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' is the handle of the+-- query pool managing the queries being reset.+--+-- - @firstQuery@ is the initial query index to reset.+--+-- - @queryCount@ is the number of queries to reset.+--+-- = Description+--+-- This command sets the status of query indices [@firstQuery@,+-- @firstQuery@ + @queryCount@ - 1] to unavailable.+--+-- If 'Graphics.Vulkan.Core10.Handles.QueryPool' is+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR'+-- this command sets the status of query indices [@firstQuery@,+-- @firstQuery@ + @queryCount@ - 1] to unavailable for each pass.+--+-- == Valid Usage+--+-- - The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-hostQueryReset hostQueryReset>+-- feature /must/ be enabled+--+-- - @firstQuery@ /must/ be less than the number of queries in+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+--+-- - The sum of @firstQuery@ and @queryCount@ /must/ be less than or+-- equal to the number of queries in+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+--+-- - Submitted commands that refer to the range specified by @firstQuery@+-- and @queryCount@ in 'Graphics.Vulkan.Core10.Handles.QueryPool'+-- /must/ have completed execution+--+-- - The range of queries specified by @firstQuery@ and @queryCount@ in+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ not be in use by+-- calls to 'Graphics.Vulkan.Core10.Query.getQueryPoolResults' or+-- 'resetQueryPool' in other threads+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ have been created,+-- allocated, or retrieved from 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+resetQueryPool :: Device -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ()+resetQueryPool device queryPool firstQuery queryCount = do+ let vkResetQueryPool' = mkVkResetQueryPool (pVkResetQueryPool (deviceCmds (device :: Device)))+ vkResetQueryPool' (deviceHandle (device)) (queryPool) (firstQuery) (queryCount)+ pure $ ()+++-- | VkPhysicalDeviceHostQueryResetFeatures - Structure describing whether+-- queries can be reset from the host+--+-- = Members+--+-- The members of the 'PhysicalDeviceHostQueryResetFeatures' structure+-- describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceHostQueryResetFeatures' structure is included in+-- the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceHostQueryResetFeatures' /can/ also be included in the+-- @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceHostQueryResetFeatures = PhysicalDeviceHostQueryResetFeatures+ { -- | @hostQueryReset@ indicates that the implementation supports resetting+ -- queries from the host with 'resetQueryPool'.+ hostQueryReset :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceHostQueryResetFeatures++instance ToCStruct PhysicalDeviceHostQueryResetFeatures where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceHostQueryResetFeatures{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (hostQueryReset))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceHostQueryResetFeatures where+ peekCStruct p = do+ hostQueryReset <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceHostQueryResetFeatures+ (bool32ToBool hostQueryReset)++instance Storable PhysicalDeviceHostQueryResetFeatures where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceHostQueryResetFeatures where+ zero = PhysicalDeviceHostQueryResetFeatures+ zero+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_EXT_host_query_reset.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset (PhysicalDeviceHostQueryResetFeatures) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceHostQueryResetFeatures++instance ToCStruct PhysicalDeviceHostQueryResetFeatures+instance Show PhysicalDeviceHostQueryResetFeatures++instance FromCStruct PhysicalDeviceHostQueryResetFeatures+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_EXT_sampler_filter_minmax.hs view
@@ -0,0 +1,187 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax ( PhysicalDeviceSamplerFilterMinmaxProperties(..)+ , SamplerReductionModeCreateInfo(..)+ , StructureType(..)+ , FormatFeatureFlagBits(..)+ , FormatFeatureFlags+ , SamplerReductionMode(..)+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core12.Enums.SamplerReductionMode (SamplerReductionMode)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlagBits(..))+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)+import Graphics.Vulkan.Core12.Enums.SamplerReductionMode (SamplerReductionMode(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- | VkPhysicalDeviceSamplerFilterMinmaxProperties - Structure describing+-- sampler filter minmax limits that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceSamplerFilterMinmaxProperties'+-- structure describe the following implementation-dependent limits:+--+-- = Description+--+-- If the 'PhysicalDeviceSamplerFilterMinmaxProperties' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- If @filterMinmaxSingleComponentFormats@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', the following formats /must/+-- support the+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT'+-- feature with+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', if they+-- support+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_BIT'.+--+-- If the format is a depth\/stencil format, this bit only specifies that+-- the depth aspect (not the stencil aspect) of an image of this format+-- supports min\/max filtering, and that min\/max filtering of the depth+-- aspect is supported when depth compare is disabled in the sampler.+--+-- If @filterMinmaxImageComponentMapping@ is+-- 'Graphics.Vulkan.Core10.BaseType.FALSE' the component mapping of the+-- image view used with min\/max filtering /must/ have been created with+-- the @r@ component set to+-- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_IDENTITY'.+-- Only the @r@ component of the sampled image value is defined and the+-- other component values are undefined. If+-- @filterMinmaxImageComponentMapping@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE' this restriction does not apply+-- and image component mapping works as normal.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceSamplerFilterMinmaxProperties = PhysicalDeviceSamplerFilterMinmaxProperties+ { -- | @filterMinmaxSingleComponentFormats@ is a boolean value indicating+ -- whether a minimum set of required formats support min\/max filtering.+ filterMinmaxSingleComponentFormats :: Bool+ , -- | @filterMinmaxImageComponentMapping@ is a boolean value indicating+ -- whether the implementation supports non-identity component mapping of+ -- the image when doing min\/max filtering.+ filterMinmaxImageComponentMapping :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceSamplerFilterMinmaxProperties++instance ToCStruct PhysicalDeviceSamplerFilterMinmaxProperties where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceSamplerFilterMinmaxProperties{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (filterMinmaxSingleComponentFormats))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (filterMinmaxImageComponentMapping))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceSamplerFilterMinmaxProperties where+ peekCStruct p = do+ filterMinmaxSingleComponentFormats <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ filterMinmaxImageComponentMapping <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ pure $ PhysicalDeviceSamplerFilterMinmaxProperties+ (bool32ToBool filterMinmaxSingleComponentFormats) (bool32ToBool filterMinmaxImageComponentMapping)++instance Storable PhysicalDeviceSamplerFilterMinmaxProperties where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceSamplerFilterMinmaxProperties where+ zero = PhysicalDeviceSamplerFilterMinmaxProperties+ zero+ zero+++-- | VkSamplerReductionModeCreateInfo - Structure specifying sampler+-- reduction mode+--+-- = Description+--+-- If the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Sampler.SamplerCreateInfo' includes a+-- 'SamplerReductionModeCreateInfo' structure, then that structure includes+-- a mode that controls how texture filtering combines texel values.+--+-- If this structure is not present, @reductionMode@ is considered to be+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE'.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SamplerReductionMode',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data SamplerReductionModeCreateInfo = SamplerReductionModeCreateInfo+ { -- | @reductionMode@ /must/ be a valid+ -- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SamplerReductionMode'+ -- value+ reductionMode :: SamplerReductionMode }+ deriving (Typeable)+deriving instance Show SamplerReductionModeCreateInfo++instance ToCStruct SamplerReductionModeCreateInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SamplerReductionModeCreateInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr SamplerReductionMode)) (reductionMode)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr SamplerReductionMode)) (zero)+ f++instance FromCStruct SamplerReductionModeCreateInfo where+ peekCStruct p = do+ reductionMode <- peek @SamplerReductionMode ((p `plusPtr` 16 :: Ptr SamplerReductionMode))+ pure $ SamplerReductionModeCreateInfo+ reductionMode++instance Storable SamplerReductionModeCreateInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SamplerReductionModeCreateInfo where+ zero = SamplerReductionModeCreateInfo+ zero+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_EXT_sampler_filter_minmax.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax ( PhysicalDeviceSamplerFilterMinmaxProperties+ , SamplerReductionModeCreateInfo+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceSamplerFilterMinmaxProperties++instance ToCStruct PhysicalDeviceSamplerFilterMinmaxProperties+instance Show PhysicalDeviceSamplerFilterMinmaxProperties++instance FromCStruct PhysicalDeviceSamplerFilterMinmaxProperties+++data SamplerReductionModeCreateInfo++instance ToCStruct SamplerReductionModeCreateInfo+instance Show SamplerReductionModeCreateInfo++instance FromCStruct SamplerReductionModeCreateInfo+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_EXT_scalar_block_layout.hs view
@@ -0,0 +1,89 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout ( PhysicalDeviceScalarBlockLayoutFeatures(..)+ , StructureType(..)+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- | VkPhysicalDeviceScalarBlockLayoutFeatures - Structure indicating support+-- for scalar block layouts+--+-- = Members+--+-- The members of the 'PhysicalDeviceScalarBlockLayoutFeatures' structure+-- describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceScalarBlockLayoutFeatures' structure is included+-- in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceScalarBlockLayoutFeatures' /can/ also be included in the+-- @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable this feature.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceScalarBlockLayoutFeatures = PhysicalDeviceScalarBlockLayoutFeatures+ { -- | @scalarBlockLayout@ indicates that the implementation supports the+ -- layout of resource blocks in shaders using+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-alignment-requirements scalar alignment>.+ scalarBlockLayout :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceScalarBlockLayoutFeatures++instance ToCStruct PhysicalDeviceScalarBlockLayoutFeatures where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceScalarBlockLayoutFeatures{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (scalarBlockLayout))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceScalarBlockLayoutFeatures where+ peekCStruct p = do+ scalarBlockLayout <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceScalarBlockLayoutFeatures+ (bool32ToBool scalarBlockLayout)++instance Storable PhysicalDeviceScalarBlockLayoutFeatures where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceScalarBlockLayoutFeatures where+ zero = PhysicalDeviceScalarBlockLayoutFeatures+ zero+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_EXT_scalar_block_layout.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout (PhysicalDeviceScalarBlockLayoutFeatures) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceScalarBlockLayoutFeatures++instance ToCStruct PhysicalDeviceScalarBlockLayoutFeatures+instance Show PhysicalDeviceScalarBlockLayoutFeatures++instance FromCStruct PhysicalDeviceScalarBlockLayoutFeatures+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_EXT_separate_stencil_usage.hs view
@@ -0,0 +1,118 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage ( ImageStencilUsageCreateInfo(..)+ , StructureType(..)+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- | VkImageStencilUsageCreateInfo - Specify separate usage flags for the+-- stencil aspect of a depth-stencil image+--+-- = Description+--+-- If the @pNext@ chain of 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'+-- includes a 'ImageStencilUsageCreateInfo' structure, then that structure+-- includes the usage flags specific to the stencil aspect of the image for+-- an image with a depth-stencil format.+--+-- This structure specifies image usages which only apply to the stencil+-- aspect of a depth\/stencil format image. When this structure is included+-- in the @pNext@ chain of 'Graphics.Vulkan.Core10.Image.ImageCreateInfo',+-- the stencil aspect of the image /must/ only be used as specified by+-- @stencilUsage@. When this structure is not included in the @pNext@ chain+-- of 'Graphics.Vulkan.Core10.Image.ImageCreateInfo', the stencil aspect of+-- an image /must/ only be used as specified+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@usage@. Use of other+-- aspects of an image are unaffected by this structure.+--+-- This structure /can/ also be included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'+-- to query additional capabilities specific to image creation parameter+-- combinations including a separate set of usage flags for the stencil+-- aspect of the image using+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'.+-- When this structure is not included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'+-- then the implicit value of @stencilUsage@ matches that of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'::@usage@.+--+-- == Valid Usage+--+-- - If @stencilUsage@ includes+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT',+-- it /must/ not include bits other than+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO'+--+-- - @stencilUsage@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits'+-- values+--+-- - @stencilUsage@ /must/ not be @0@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ImageStencilUsageCreateInfo = ImageStencilUsageCreateInfo+ { -- | @stencilUsage@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits'+ -- describing the intended usage of the stencil aspect of the image.+ stencilUsage :: ImageUsageFlags }+ deriving (Typeable)+deriving instance Show ImageStencilUsageCreateInfo++instance ToCStruct ImageStencilUsageCreateInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageStencilUsageCreateInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ImageUsageFlags)) (stencilUsage)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ImageUsageFlags)) (zero)+ f++instance FromCStruct ImageStencilUsageCreateInfo where+ peekCStruct p = do+ stencilUsage <- peek @ImageUsageFlags ((p `plusPtr` 16 :: Ptr ImageUsageFlags))+ pure $ ImageStencilUsageCreateInfo+ stencilUsage++instance Storable ImageStencilUsageCreateInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImageStencilUsageCreateInfo where+ zero = ImageStencilUsageCreateInfo+ zero+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_EXT_separate_stencil_usage.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage (ImageStencilUsageCreateInfo) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ImageStencilUsageCreateInfo++instance ToCStruct ImageStencilUsageCreateInfo+instance Show ImageStencilUsageCreateInfo++instance FromCStruct ImageStencilUsageCreateInfo+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_8bit_storage.hs view
@@ -0,0 +1,100 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage ( PhysicalDevice8BitStorageFeatures(..)+ , StructureType(..)+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- | VkPhysicalDevice8BitStorageFeatures - Structure describing features+-- supported by VK_KHR_8bit_storage+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDevice8BitStorageFeatures = PhysicalDevice8BitStorageFeatures+ { -- | @storageBuffer8BitAccess@ indicates whether objects in the+ -- @StorageBuffer@ or @PhysicalStorageBuffer@ storage class with the+ -- @Block@ decoration /can/ have 8-bit integer members. If this feature is+ -- not enabled, 8-bit integer members /must/ not be used in such objects.+ -- This also indicates whether shader modules /can/ declare the+ -- @StorageBuffer8BitAccess@ capability.+ storageBuffer8BitAccess :: Bool+ , -- | @uniformAndStorageBuffer8BitAccess@ indicates whether objects in the+ -- @Uniform@ storage class with the @Block@ decoration and in the+ -- @StorageBuffer@ or @PhysicalStorageBuffer@ storage class with the same+ -- decoration /can/ have 8-bit integer members. If this feature is not+ -- enabled, 8-bit integer members /must/ not be used in such objects. This+ -- also indicates whether shader modules /can/ declare the+ -- @UniformAndStorageBuffer8BitAccess@ capability.+ uniformAndStorageBuffer8BitAccess :: Bool+ , -- | @storagePushConstant8@ indicates whether objects in the @PushConstant@+ -- storage class /can/ have 8-bit integer members. If this feature is not+ -- enabled, 8-bit integer members /must/ not be used in such objects. This+ -- also indicates whether shader modules /can/ declare the+ -- @StoragePushConstant8@ capability.+ storagePushConstant8 :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDevice8BitStorageFeatures++instance ToCStruct PhysicalDevice8BitStorageFeatures where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDevice8BitStorageFeatures{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (storageBuffer8BitAccess))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (uniformAndStorageBuffer8BitAccess))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (storagePushConstant8))+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDevice8BitStorageFeatures where+ peekCStruct p = do+ storageBuffer8BitAccess <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ uniformAndStorageBuffer8BitAccess <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ storagePushConstant8 <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ pure $ PhysicalDevice8BitStorageFeatures+ (bool32ToBool storageBuffer8BitAccess) (bool32ToBool uniformAndStorageBuffer8BitAccess) (bool32ToBool storagePushConstant8)++instance Storable PhysicalDevice8BitStorageFeatures where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDevice8BitStorageFeatures where+ zero = PhysicalDevice8BitStorageFeatures+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_8bit_storage.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage (PhysicalDevice8BitStorageFeatures) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDevice8BitStorageFeatures++instance ToCStruct PhysicalDevice8BitStorageFeatures+instance Show PhysicalDevice8BitStorageFeatures++instance FromCStruct PhysicalDevice8BitStorageFeatures+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_buffer_device_address.hs view
@@ -0,0 +1,625 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address ( getBufferOpaqueCaptureAddress+ , getBufferDeviceAddress+ , getDeviceMemoryOpaqueCaptureAddress+ , PhysicalDeviceBufferDeviceAddressFeatures(..)+ , BufferDeviceAddressInfo(..)+ , BufferOpaqueCaptureAddressCreateInfo(..)+ , MemoryOpaqueCaptureAddressAllocateInfo(..)+ , DeviceMemoryOpaqueCaptureAddressInfo(..)+ , StructureType(..)+ , Result(..)+ , BufferUsageFlagBits(..)+ , BufferUsageFlags+ , BufferCreateFlagBits(..)+ , BufferCreateFlags+ , MemoryAllocateFlagBits(..)+ , MemoryAllocateFlags+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word64)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Core10.BaseType (DeviceAddress)+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetBufferDeviceAddress))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetBufferOpaqueCaptureAddress))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetDeviceMemoryOpaqueCaptureAddress))+import Graphics.Vulkan.Core10.Handles (DeviceMemory)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES))+import Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits (BufferCreateFlagBits(..))+import Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits (BufferCreateFlags)+import Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlagBits(..))+import Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlags)+import Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits (MemoryAllocateFlagBits(..))+import Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits (MemoryAllocateFlags)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetBufferOpaqueCaptureAddress+ :: FunPtr (Ptr Device_T -> Ptr BufferDeviceAddressInfo -> IO Word64) -> Ptr Device_T -> Ptr BufferDeviceAddressInfo -> IO Word64++-- | vkGetBufferOpaqueCaptureAddress - Query an opaque capture address of a+-- buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- the buffer was created on.+--+-- - @pInfo@ is a pointer to a 'BufferDeviceAddressInfo' structure+-- specifying the buffer to retrieve an address for.+--+-- = Description+--+-- The 64-bit return value is an opaque capture address of the start of+-- @pInfo->buffer@.+--+-- If the buffer was created with a non-zero value of+-- 'BufferOpaqueCaptureAddressCreateInfo'::@opaqueCaptureAddress@ the+-- return value /must/ be the same address.+--+-- == Valid Usage+--+-- - The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddress bufferDeviceAddress>+-- feature /must/ be enabled+--+-- - If 'Graphics.Vulkan.Core10.Handles.Device' was created with multiple+-- physical devices, then the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>+-- feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pInfo@ /must/ be a valid pointer to a valid+-- 'BufferDeviceAddressInfo' structure+--+-- = See Also+--+-- 'BufferDeviceAddressInfo', 'Graphics.Vulkan.Core10.Handles.Device'+getBufferOpaqueCaptureAddress :: Device -> BufferDeviceAddressInfo -> IO (Word64)+getBufferOpaqueCaptureAddress device info = evalContT $ do+ let vkGetBufferOpaqueCaptureAddress' = mkVkGetBufferOpaqueCaptureAddress (pVkGetBufferOpaqueCaptureAddress (deviceCmds (device :: Device)))+ pInfo <- ContT $ withCStruct (info)+ r <- lift $ vkGetBufferOpaqueCaptureAddress' (deviceHandle (device)) pInfo+ pure $ (r)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetBufferDeviceAddress+ :: FunPtr (Ptr Device_T -> Ptr BufferDeviceAddressInfo -> IO DeviceAddress) -> Ptr Device_T -> Ptr BufferDeviceAddressInfo -> IO DeviceAddress++-- | vkGetBufferDeviceAddress - Query an address of a buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- the buffer was created on.+--+-- - @pInfo@ is a pointer to a 'BufferDeviceAddressInfo' structure+-- specifying the buffer to retrieve an address for.+--+-- = Description+--+-- The 64-bit return value is an address of the start of @pInfo->buffer@.+-- The address range starting at this value and whose size is the size of+-- the buffer /can/ be used in a shader to access the memory bound to that+-- buffer, using the @SPV_KHR_physical_storage_buffer@ extension or the+-- equivalent @SPV_EXT_physical_storage_buffer@ extension and the+-- @PhysicalStorageBuffer@ storage class. For example, this value /can/ be+-- stored in a uniform buffer, and the shader /can/ read the value from the+-- uniform buffer and use it to do a dependent read\/write to this buffer.+-- A value of zero is reserved as a “null” pointer and /must/ not be+-- returned as a valid buffer device address. All loads, stores, and+-- atomics in a shader through @PhysicalStorageBuffer@ pointers /must/+-- access addresses in the address range of some buffer.+--+-- If the buffer was created with a non-zero value of+-- 'BufferOpaqueCaptureAddressCreateInfo'::@opaqueCaptureAddress@ or+-- 'Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT'::'Graphics.Vulkan.Core10.BaseType.DeviceAddress'+-- the return value will be the same address that was returned at capture+-- time.+--+-- == Valid Usage+--+-- - The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddress bufferDeviceAddress>+-- or+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressEXT ::bufferDeviceAddress>+-- feature /must/ be enabled+--+-- - If 'Graphics.Vulkan.Core10.Handles.Device' was created with multiple+-- physical devices, then the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>+-- or+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDeviceEXT ::bufferDeviceAddressMultiDevice>+-- feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pInfo@ /must/ be a valid pointer to a valid+-- 'BufferDeviceAddressInfo' structure+--+-- = See Also+--+-- 'BufferDeviceAddressInfo', 'Graphics.Vulkan.Core10.Handles.Device'+getBufferDeviceAddress :: Device -> BufferDeviceAddressInfo -> IO (DeviceAddress)+getBufferDeviceAddress device info = evalContT $ do+ let vkGetBufferDeviceAddress' = mkVkGetBufferDeviceAddress (pVkGetBufferDeviceAddress (deviceCmds (device :: Device)))+ pInfo <- ContT $ withCStruct (info)+ r <- lift $ vkGetBufferDeviceAddress' (deviceHandle (device)) pInfo+ pure $ (r)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetDeviceMemoryOpaqueCaptureAddress+ :: FunPtr (Ptr Device_T -> Ptr DeviceMemoryOpaqueCaptureAddressInfo -> IO Word64) -> Ptr Device_T -> Ptr DeviceMemoryOpaqueCaptureAddressInfo -> IO Word64++-- | vkGetDeviceMemoryOpaqueCaptureAddress - Query an opaque capture address+-- of a memory object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- the memory object was allocated on.+--+-- - @pInfo@ is a pointer to a 'DeviceMemoryOpaqueCaptureAddressInfo'+-- structure specifying the memory object to retrieve an address for.+--+-- = Description+--+-- The 64-bit return value is an opaque address representing the start of+-- @pInfo->memory@.+--+-- If the memory object was allocated with a non-zero value of+-- 'MemoryOpaqueCaptureAddressAllocateInfo'::@opaqueCaptureAddress@, the+-- return value /must/ be the same address.+--+-- Note+--+-- The expected usage for these opaque addresses is only for trace+-- capture\/replay tools to store these addresses in a trace and+-- subsequently specify them during replay.+--+-- == Valid Usage+--+-- - The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddress bufferDeviceAddress>+-- feature /must/ be enabled+--+-- - If 'Graphics.Vulkan.Core10.Handles.Device' was created with multiple+-- physical devices, then the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>+-- feature /must/ be enabled+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pInfo@ /must/ be a valid pointer to a valid+-- 'DeviceMemoryOpaqueCaptureAddressInfo' structure+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'DeviceMemoryOpaqueCaptureAddressInfo'+getDeviceMemoryOpaqueCaptureAddress :: Device -> DeviceMemoryOpaqueCaptureAddressInfo -> IO (Word64)+getDeviceMemoryOpaqueCaptureAddress device info = evalContT $ do+ let vkGetDeviceMemoryOpaqueCaptureAddress' = mkVkGetDeviceMemoryOpaqueCaptureAddress (pVkGetDeviceMemoryOpaqueCaptureAddress (deviceCmds (device :: Device)))+ pInfo <- ContT $ withCStruct (info)+ r <- lift $ vkGetDeviceMemoryOpaqueCaptureAddress' (deviceHandle (device)) pInfo+ pure $ (r)+++-- | VkPhysicalDeviceBufferDeviceAddressFeatures - Structure describing+-- buffer address features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceBufferDeviceAddressFeatures' structure+-- describe the following features:+--+-- = Description+--+-- Note+--+-- @bufferDeviceAddressMultiDevice@ exists to allow certain legacy+-- platforms to be able to support @bufferDeviceAddress@ without needing to+-- support shared GPU virtual addresses for multi-device configurations.+--+-- See 'getBufferDeviceAddress' for more information.+--+-- If the 'PhysicalDeviceBufferDeviceAddressFeatures' structure is included+-- in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceBufferDeviceAddressFeatures' /can/ also be included in+-- the @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceBufferDeviceAddressFeatures = PhysicalDeviceBufferDeviceAddressFeatures+ { -- | @bufferDeviceAddress@ indicates that the implementation supports+ -- accessing buffer memory in shaders as storage buffers via an address+ -- queried from 'getBufferDeviceAddress'.+ bufferDeviceAddress :: Bool+ , -- | @bufferDeviceAddressCaptureReplay@ indicates that the implementation+ -- supports saving and reusing buffer and device addresses, e.g. for trace+ -- capture and replay.+ bufferDeviceAddressCaptureReplay :: Bool+ , -- | @bufferDeviceAddressMultiDevice@ indicates that the implementation+ -- supports the @bufferDeviceAddress@ feature for logical devices created+ -- with multiple physical devices. If this feature is not supported, buffer+ -- addresses /must/ not be queried on a logical device created with more+ -- than one physical device.+ bufferDeviceAddressMultiDevice :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceBufferDeviceAddressFeatures++instance ToCStruct PhysicalDeviceBufferDeviceAddressFeatures where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceBufferDeviceAddressFeatures{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (bufferDeviceAddress))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (bufferDeviceAddressCaptureReplay))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (bufferDeviceAddressMultiDevice))+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceBufferDeviceAddressFeatures where+ peekCStruct p = do+ bufferDeviceAddress <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ bufferDeviceAddressCaptureReplay <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ bufferDeviceAddressMultiDevice <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ pure $ PhysicalDeviceBufferDeviceAddressFeatures+ (bool32ToBool bufferDeviceAddress) (bool32ToBool bufferDeviceAddressCaptureReplay) (bool32ToBool bufferDeviceAddressMultiDevice)++instance Storable PhysicalDeviceBufferDeviceAddressFeatures where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceBufferDeviceAddressFeatures where+ zero = PhysicalDeviceBufferDeviceAddressFeatures+ zero+ zero+ zero+++-- | VkBufferDeviceAddressInfo - Structure specifying the buffer to query an+-- address for+--+-- == Valid Usage+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is non-sparse and was not+-- created with the+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'+-- flag, then it /must/ be bound completely and contiguously to a+-- single 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ have been created+-- with+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO'+--+-- - @pNext@ /must/ be @NULL@+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getBufferDeviceAddress',+-- 'Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address.getBufferDeviceAddressEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address.getBufferDeviceAddressKHR',+-- 'getBufferOpaqueCaptureAddress',+-- 'Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address.getBufferOpaqueCaptureAddressKHR'+data BufferDeviceAddressInfo = BufferDeviceAddressInfo+ { -- | 'Graphics.Vulkan.Core10.Handles.Buffer' specifies the buffer whose+ -- address is being queried.+ buffer :: Buffer }+ deriving (Typeable)+deriving instance Show BufferDeviceAddressInfo++instance ToCStruct BufferDeviceAddressInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p BufferDeviceAddressInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Buffer)) (buffer)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Buffer)) (zero)+ f++instance FromCStruct BufferDeviceAddressInfo where+ peekCStruct p = do+ buffer <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))+ pure $ BufferDeviceAddressInfo+ buffer++instance Storable BufferDeviceAddressInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero BufferDeviceAddressInfo where+ zero = BufferDeviceAddressInfo+ zero+++-- | VkBufferOpaqueCaptureAddressCreateInfo - Request a specific address for+-- a buffer+--+-- = Description+--+-- If @opaqueCaptureAddress@ is zero, no specific address is requested.+--+-- If @opaqueCaptureAddress@ is not zero, then it /should/ be an address+-- retrieved from 'getBufferOpaqueCaptureAddress' for an identically+-- created buffer on the same implementation.+--+-- If this structure is not present, it is as if @opaqueCaptureAddress@ is+-- zero.+--+-- Apps /should/ avoid creating buffers with app-provided addresses and+-- implementation-provided addresses in the same process, to reduce the+-- likelihood of+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS'+-- errors.+--+-- Note+--+-- The expected usage for this is that a trace capture\/replay tool will+-- add the+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT'+-- flag to all buffers that use+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT',+-- and during capture will save the queried opaque device addresses in the+-- trace. During replay, the buffers will be created specifying the+-- original address so any address values stored in the trace data will+-- remain valid.+--+-- Implementations are expected to separate such buffers in the GPU address+-- space so normal allocations will avoid using these addresses.+-- Apps\/tools should avoid mixing app-provided and implementation-provided+-- addresses for buffers created with+-- 'Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT',+-- to avoid address space allocation conflicts.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data BufferOpaqueCaptureAddressCreateInfo = BufferOpaqueCaptureAddressCreateInfo+ { -- | @opaqueCaptureAddress@ is the opaque capture address requested for the+ -- buffer.+ opaqueCaptureAddress :: Word64 }+ deriving (Typeable)+deriving instance Show BufferOpaqueCaptureAddressCreateInfo++instance ToCStruct BufferOpaqueCaptureAddressCreateInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p BufferOpaqueCaptureAddressCreateInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word64)) (opaqueCaptureAddress)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word64)) (zero)+ f++instance FromCStruct BufferOpaqueCaptureAddressCreateInfo where+ peekCStruct p = do+ opaqueCaptureAddress <- peek @Word64 ((p `plusPtr` 16 :: Ptr Word64))+ pure $ BufferOpaqueCaptureAddressCreateInfo+ opaqueCaptureAddress++instance Storable BufferOpaqueCaptureAddressCreateInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero BufferOpaqueCaptureAddressCreateInfo where+ zero = BufferOpaqueCaptureAddressCreateInfo+ zero+++-- | VkMemoryOpaqueCaptureAddressAllocateInfo - Request a specific address+-- for a memory allocation+--+-- = Description+--+-- If @opaqueCaptureAddress@ is zero, no specific address is requested.+--+-- If @opaqueCaptureAddress@ is not zero, it /should/ be an address+-- retrieved from 'getDeviceMemoryOpaqueCaptureAddress' on an identically+-- created memory allocation on the same implementation.+--+-- Note+--+-- In most cases, it is expected that a non-zero @opaqueAddress@ is an+-- address retrieved from 'getDeviceMemoryOpaqueCaptureAddress' on an+-- identically created memory allocation. If this is not the case, it+-- likely that+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS'+-- errors will occur.+--+-- This is, however, not a strict requirement because trace capture\/replay+-- tools may need to adjust memory allocation parameters for imported+-- memory.+--+-- If this structure is not present, it is as if @opaqueCaptureAddress@ is+-- zero.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data MemoryOpaqueCaptureAddressAllocateInfo = MemoryOpaqueCaptureAddressAllocateInfo+ { -- | @opaqueCaptureAddress@ is the opaque capture address requested for the+ -- memory allocation.+ opaqueCaptureAddress :: Word64 }+ deriving (Typeable)+deriving instance Show MemoryOpaqueCaptureAddressAllocateInfo++instance ToCStruct MemoryOpaqueCaptureAddressAllocateInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p MemoryOpaqueCaptureAddressAllocateInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word64)) (opaqueCaptureAddress)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word64)) (zero)+ f++instance FromCStruct MemoryOpaqueCaptureAddressAllocateInfo where+ peekCStruct p = do+ opaqueCaptureAddress <- peek @Word64 ((p `plusPtr` 16 :: Ptr Word64))+ pure $ MemoryOpaqueCaptureAddressAllocateInfo+ opaqueCaptureAddress++instance Storable MemoryOpaqueCaptureAddressAllocateInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MemoryOpaqueCaptureAddressAllocateInfo where+ zero = MemoryOpaqueCaptureAddressAllocateInfo+ zero+++-- | VkDeviceMemoryOpaqueCaptureAddressInfo - Structure specifying the memory+-- object to query an address for+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getDeviceMemoryOpaqueCaptureAddress',+-- 'Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address.getDeviceMemoryOpaqueCaptureAddressKHR'+data DeviceMemoryOpaqueCaptureAddressInfo = DeviceMemoryOpaqueCaptureAddressInfo+ { -- | @memory@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.DeviceMemory'+ -- handle+ memory :: DeviceMemory }+ deriving (Typeable)+deriving instance Show DeviceMemoryOpaqueCaptureAddressInfo++instance ToCStruct DeviceMemoryOpaqueCaptureAddressInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DeviceMemoryOpaqueCaptureAddressInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DeviceMemory)) (memory)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DeviceMemory)) (zero)+ f++instance FromCStruct DeviceMemoryOpaqueCaptureAddressInfo where+ peekCStruct p = do+ memory <- peek @DeviceMemory ((p `plusPtr` 16 :: Ptr DeviceMemory))+ pure $ DeviceMemoryOpaqueCaptureAddressInfo+ memory++instance Storable DeviceMemoryOpaqueCaptureAddressInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DeviceMemoryOpaqueCaptureAddressInfo where+ zero = DeviceMemoryOpaqueCaptureAddressInfo+ zero+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_buffer_device_address.hs-boot view
@@ -0,0 +1,50 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address ( BufferDeviceAddressInfo+ , BufferOpaqueCaptureAddressCreateInfo+ , DeviceMemoryOpaqueCaptureAddressInfo+ , MemoryOpaqueCaptureAddressAllocateInfo+ , PhysicalDeviceBufferDeviceAddressFeatures+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data BufferDeviceAddressInfo++instance ToCStruct BufferDeviceAddressInfo+instance Show BufferDeviceAddressInfo++instance FromCStruct BufferDeviceAddressInfo+++data BufferOpaqueCaptureAddressCreateInfo++instance ToCStruct BufferOpaqueCaptureAddressCreateInfo+instance Show BufferOpaqueCaptureAddressCreateInfo++instance FromCStruct BufferOpaqueCaptureAddressCreateInfo+++data DeviceMemoryOpaqueCaptureAddressInfo++instance ToCStruct DeviceMemoryOpaqueCaptureAddressInfo+instance Show DeviceMemoryOpaqueCaptureAddressInfo++instance FromCStruct DeviceMemoryOpaqueCaptureAddressInfo+++data MemoryOpaqueCaptureAddressAllocateInfo++instance ToCStruct MemoryOpaqueCaptureAddressAllocateInfo+instance Show MemoryOpaqueCaptureAddressAllocateInfo++instance FromCStruct MemoryOpaqueCaptureAddressAllocateInfo+++data PhysicalDeviceBufferDeviceAddressFeatures++instance ToCStruct PhysicalDeviceBufferDeviceAddressFeatures+instance Show PhysicalDeviceBufferDeviceAddressFeatures++instance FromCStruct PhysicalDeviceBufferDeviceAddressFeatures+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs view
@@ -0,0 +1,1990 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 ( createRenderPass2+ , cmdBeginRenderPass2+ , cmdNextSubpass2+ , cmdEndRenderPass2+ , AttachmentDescription2(..)+ , AttachmentReference2(..)+ , SubpassDescription2(..)+ , SubpassDependency2(..)+ , RenderPassCreateInfo2(..)+ , SubpassBeginInfo(..)+ , SubpassEndInfo(..)+ , StructureType(..)+ ) where++import Control.Exception.Base (bracket)+import Control.Monad (unless)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Marshal.Utils (maybePeek)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import qualified Data.Vector (null)+import Data.Either (Either)+import Data.Type.Equality ((:~:)(Refl))+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.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.CStruct.Extends (forgetExtensions)+import Graphics.Vulkan.CStruct.Extends (peekSomeCStruct)+import Graphics.Vulkan.CStruct.Extends (pokeSomeCStruct)+import Graphics.Vulkan.CStruct.Extends (withSomeCStruct)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.Enums.AttachmentDescriptionFlagBits (AttachmentDescriptionFlags)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (AttachmentDescriptionStencilLayout)+import Graphics.Vulkan.Core10.Enums.AttachmentLoadOp (AttachmentLoadOp)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (AttachmentReferenceStencilLayout)+import Graphics.Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp)+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlags)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdBeginRenderPass2))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdEndRenderPass2))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdNextSubpass2))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateRenderPass2))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.Core10.Enums.Format (Format)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlags)+import Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout)+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint)+import Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Handles (RenderPass)+import Graphics.Vulkan.Core10.Handles (RenderPass(..))+import Graphics.Vulkan.Core10.CommandBufferBuilding (RenderPassBeginInfo)+import Graphics.Vulkan.Core10.Enums.RenderPassCreateFlagBits (RenderPassCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map (RenderPassFragmentDensityMapCreateInfoEXT)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)+import Graphics.Vulkan.CStruct.Extends (SomeStruct)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Core10.Enums.SubpassContents (SubpassContents)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve (SubpassDescriptionDepthStencilResolve)+import Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits (SubpassDescriptionFlags)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBPASS_BEGIN_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBPASS_END_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateRenderPass2+ :: FunPtr (Ptr Device_T -> Ptr (RenderPassCreateInfo2 a) -> Ptr AllocationCallbacks -> Ptr RenderPass -> IO Result) -> Ptr Device_T -> Ptr (RenderPassCreateInfo2 a) -> Ptr AllocationCallbacks -> Ptr RenderPass -> IO Result++-- | vkCreateRenderPass2 - Create a new render pass object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the render pass.+--+-- - @pCreateInfo@ is a pointer to a 'RenderPassCreateInfo2' structure+-- describing the parameters of the render pass.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pRenderPass@ is a pointer to a+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' handle in which the+-- resulting render pass object is returned.+--+-- = Description+--+-- This command is functionally identical to+-- 'Graphics.Vulkan.Core10.Pass.createRenderPass', but includes extensible+-- sub-structures that include @sType@ and @pNext@ parameters, allowing+-- them to be more easily extended.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'RenderPassCreateInfo2' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pRenderPass@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.RenderPass', 'RenderPassCreateInfo2'+createRenderPass2 :: PokeChain a => Device -> RenderPassCreateInfo2 a -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (RenderPass)+createRenderPass2 device createInfo allocator = evalContT $ do+ let vkCreateRenderPass2' = mkVkCreateRenderPass2 (pVkCreateRenderPass2 (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPRenderPass <- ContT $ bracket (callocBytes @RenderPass 8) free+ r <- lift $ vkCreateRenderPass2' (deviceHandle (device)) pCreateInfo pAllocator (pPRenderPass)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pRenderPass <- lift $ peek @RenderPass pPRenderPass+ pure $ (pRenderPass)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdBeginRenderPass2+ :: FunPtr (Ptr CommandBuffer_T -> Ptr (RenderPassBeginInfo a) -> Ptr SubpassBeginInfo -> IO ()) -> Ptr CommandBuffer_T -> Ptr (RenderPassBeginInfo a) -> Ptr SubpassBeginInfo -> IO ()++-- | vkCmdBeginRenderPass2 - Begin a new render pass+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- in which to record the command.+--+-- - @pRenderPassBegin@ is a pointer to a+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo'+-- structure specifying the render pass to begin an instance of, and+-- the framebuffer the instance uses.+--+-- - @pSubpassBeginInfo@ is a pointer to a 'SubpassBeginInfo' structure+-- containing information about the subpass which is about to begin+-- rendering.+--+-- = Description+--+-- After beginning a render pass instance, the command buffer is ready to+-- record the commands for the first subpass of that render pass.+--+-- == Valid Usage+--+-- - Both the 'Graphics.Vulkan.Core10.Handles.Framebuffer' and+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' members of+-- @pRenderPassBegin@ /must/ have been created on the same+-- 'Graphics.Vulkan.Core10.Handles.Device' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated on+--+-- - If any of the @initialLayout@ or @finalLayout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription' structures or+-- the @layout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentReference' structures+-- specified when creating the render pass specified in the+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' member of+-- @pRenderPassBegin@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'+-- then the corresponding attachment image view of the framebuffer+-- specified in the 'Graphics.Vulkan.Core10.Handles.Framebuffer' member+-- of @pRenderPassBegin@ /must/ have been created with a @usage@ value+-- including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'+--+-- - If any of the @initialLayout@ or @finalLayout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription' structures or+-- the @layout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentReference' structures+-- specified when creating the render pass specified in the+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' member of+-- @pRenderPassBegin@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'+-- then the corresponding attachment image view of the framebuffer+-- specified in the 'Graphics.Vulkan.Core10.Handles.Framebuffer' member+-- of @pRenderPassBegin@ /must/ have been created with a @usage@ value+-- including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- - If any of the @initialLayout@ or @finalLayout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription' structures or+-- the @layout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentReference' structures+-- specified when creating the render pass specified in the+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' member of+-- @pRenderPassBegin@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+-- then the corresponding attachment image view of the framebuffer+-- specified in the 'Graphics.Vulkan.Core10.Handles.Framebuffer' member+-- of @pRenderPassBegin@ /must/ have been created with a @usage@ value+-- including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- - If any of the @stencilInitialLayout@ or @stencilFinalLayout@ member+-- of the+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout'+-- structures or the @stencilLayout@ member of the+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentReferenceStencilLayout'+-- structures specified when creating the render pass specified in the+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' member of+-- @pRenderPassBegin@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+-- then the corresponding attachment image view of the framebuffer+-- specified in the 'Graphics.Vulkan.Core10.Handles.Framebuffer' member+-- of @pRenderPassBegin@ /must/ have been created with a @usage@ value+-- including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- - If any of the @initialLayout@ or @finalLayout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription' structures or+-- the @layout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentReference' structures+-- specified when creating the render pass specified in the+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' member of+-- @pRenderPassBegin@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL'+-- then the corresponding attachment image view of the framebuffer+-- specified in the 'Graphics.Vulkan.Core10.Handles.Framebuffer' member+-- of @pRenderPassBegin@ /must/ have been created with a @usage@ value+-- including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'+--+-- - If any of the @initialLayout@ or @finalLayout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription' structures or+-- the @layout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentReference' structures+-- specified when creating the render pass specified in the+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' member of+-- @pRenderPassBegin@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'+-- then the corresponding attachment image view of the framebuffer+-- specified in the 'Graphics.Vulkan.Core10.Handles.Framebuffer' member+-- of @pRenderPassBegin@ /must/ have been created with a @usage@ value+-- including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'+--+-- - If any of the @initialLayout@ or @finalLayout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription' structures or+-- the @layout@ member of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentReference' structures+-- specified when creating the render pass specified in the+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' member of+-- @pRenderPassBegin@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'+-- then the corresponding attachment image view of the framebuffer+-- specified in the 'Graphics.Vulkan.Core10.Handles.Framebuffer' member+-- of @pRenderPassBegin@ /must/ have been created with a @usage@ value+-- including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'+--+-- - If any of the @initialLayout@ members of the+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription' structures+-- specified when creating the render pass specified in the+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' member of+-- @pRenderPassBegin@ is not+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED',+-- then each such @initialLayout@ /must/ be equal to the current layout+-- of the corresponding attachment image subresource of the framebuffer+-- specified in the 'Graphics.Vulkan.Core10.Handles.Framebuffer' member+-- of @pRenderPassBegin@+--+-- - The @srcStageMask@ and @dstStageMask@ members of any element of the+-- @pDependencies@ member of+-- 'Graphics.Vulkan.Core10.Pass.RenderPassCreateInfo' used to create+-- 'Graphics.Vulkan.Core10.Handles.RenderPass' /must/ be supported by+-- the capabilities of the queue family identified by the+-- @queueFamilyIndex@ member of the+-- 'Graphics.Vulkan.Core10.CommandPool.CommandPoolCreateInfo' used to+-- create the command pool which+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+--+-- - For any attachment in 'Graphics.Vulkan.Core10.Handles.Framebuffer'+-- that is used by 'Graphics.Vulkan.Core10.Handles.RenderPass' and is+-- bound to memory locations that are also bound to another attachment+-- used by 'Graphics.Vulkan.Core10.Handles.RenderPass', and if at least+-- one of those uses causes either attachment to be written to, both+-- attachments /must/ have had the+-- 'Graphics.Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT'+-- set+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pRenderPassBegin@ /must/ be a valid pointer to a valid+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo'+-- structure+--+-- - @pSubpassBeginInfo@ /must/ be a valid pointer to a valid+-- 'SubpassBeginInfo' structure+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a primary+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Graphics | Graphics |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo',+-- 'SubpassBeginInfo'+cmdBeginRenderPass2 :: PokeChain a => CommandBuffer -> RenderPassBeginInfo a -> SubpassBeginInfo -> IO ()+cmdBeginRenderPass2 commandBuffer renderPassBegin subpassBeginInfo = evalContT $ do+ let vkCmdBeginRenderPass2' = mkVkCmdBeginRenderPass2 (pVkCmdBeginRenderPass2 (deviceCmds (commandBuffer :: CommandBuffer)))+ pRenderPassBegin <- ContT $ withCStruct (renderPassBegin)+ pSubpassBeginInfo <- ContT $ withCStruct (subpassBeginInfo)+ lift $ vkCmdBeginRenderPass2' (commandBufferHandle (commandBuffer)) pRenderPassBegin pSubpassBeginInfo+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdNextSubpass2+ :: FunPtr (Ptr CommandBuffer_T -> Ptr SubpassBeginInfo -> Ptr SubpassEndInfo -> IO ()) -> Ptr CommandBuffer_T -> Ptr SubpassBeginInfo -> Ptr SubpassEndInfo -> IO ()++-- | vkCmdNextSubpass2 - Transition to the next subpass of a render pass+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- in which to record the command.+--+-- - @pSubpassBeginInfo@ is a pointer to a 'SubpassBeginInfo' structure+-- containing information about the subpass which is about to begin+-- rendering.+--+-- - @pSubpassEndInfo@ is a pointer to a 'SubpassEndInfo' structure+-- containing information about how the previous subpass will be ended.+--+-- = Description+--+-- 'cmdNextSubpass2' is semantically identical to+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdNextSubpass', except+-- that it is extensible, and that @contents@ is provided as part of an+-- extensible structure instead of as a flat parameter.+--+-- == Valid Usage+--+-- - The current subpass index /must/ be less than the number of+-- subpasses in the render pass minus one+--+-- - This command /must/ not be recorded when transform feedback is+-- active+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pSubpassBeginInfo@ /must/ be a valid pointer to a valid+-- 'SubpassBeginInfo' structure+--+-- - @pSubpassEndInfo@ /must/ be a valid pointer to a valid+-- 'SubpassEndInfo' structure+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a primary+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', 'SubpassBeginInfo',+-- 'SubpassEndInfo'+cmdNextSubpass2 :: CommandBuffer -> SubpassBeginInfo -> SubpassEndInfo -> IO ()+cmdNextSubpass2 commandBuffer subpassBeginInfo subpassEndInfo = evalContT $ do+ let vkCmdNextSubpass2' = mkVkCmdNextSubpass2 (pVkCmdNextSubpass2 (deviceCmds (commandBuffer :: CommandBuffer)))+ pSubpassBeginInfo <- ContT $ withCStruct (subpassBeginInfo)+ pSubpassEndInfo <- ContT $ withCStruct (subpassEndInfo)+ lift $ vkCmdNextSubpass2' (commandBufferHandle (commandBuffer)) pSubpassBeginInfo pSubpassEndInfo+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdEndRenderPass2+ :: FunPtr (Ptr CommandBuffer_T -> Ptr SubpassEndInfo -> IO ()) -> Ptr CommandBuffer_T -> Ptr SubpassEndInfo -> IO ()++-- | vkCmdEndRenderPass2 - End the current render pass+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- in which to end the current render pass instance.+--+-- - @pSubpassEndInfo@ is a pointer to a 'SubpassEndInfo' structure+-- containing information about how the previous subpass will be ended.+--+-- = Description+--+-- 'cmdEndRenderPass2' is semantically identical to+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdEndRenderPass', except+-- that it is extensible.+--+-- == Valid Usage+--+-- - The current subpass index /must/ be equal to the number of subpasses+-- in the render pass minus one+--+-- - This command /must/ not be recorded when transform feedback is+-- active+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pSubpassEndInfo@ /must/ be a valid pointer to a valid+-- 'SubpassEndInfo' structure+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a primary+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', 'SubpassEndInfo'+cmdEndRenderPass2 :: CommandBuffer -> SubpassEndInfo -> IO ()+cmdEndRenderPass2 commandBuffer subpassEndInfo = evalContT $ do+ let vkCmdEndRenderPass2' = mkVkCmdEndRenderPass2 (pVkCmdEndRenderPass2 (deviceCmds (commandBuffer :: CommandBuffer)))+ pSubpassEndInfo <- ContT $ withCStruct (subpassEndInfo)+ lift $ vkCmdEndRenderPass2' (commandBufferHandle (commandBuffer)) pSubpassEndInfo+ pure $ ()+++-- | VkAttachmentDescription2 - Structure specifying an attachment+-- description+--+-- = Description+--+-- Parameters defined by this structure with the same name as those in+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription' have the identical+-- effect to those parameters.+--+-- If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>+-- feature is enabled, and 'Graphics.Vulkan.Core10.Enums.Format.Format' is+-- a depth\/stencil format, @initialLayout@ and @finalLayout@ /can/ be set+-- to a layout that only specifies the layout of the depth aspect.+--+-- If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth\/stencil+-- format, and @initialLayout@ only specifies the initial layout of the+-- depth aspect of the attachment, the initial layout of the stencil aspect+-- is specified by the @stencilInitialLayout@ member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout'+-- structure included in the @pNext@ chain. Otherwise, @initialLayout@+-- describes the initial layout for all relevant image aspects.+--+-- If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth\/stencil+-- format, and @finalLayout@ only specifies the final layout of the depth+-- aspect of the attachment, the final layout of the stencil aspect is+-- specified by the @stencilFinalLayout@ member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout'+-- structure included in the @pNext@ chain. Otherwise, @finalLayout@+-- describes the final layout for all relevant image aspects.+--+-- == Valid Usage+--+-- - @finalLayout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a color format,+-- @initialLayout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth\/stencil+-- format, @initialLayout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a color format,+-- @finalLayout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth\/stencil+-- format, @finalLayout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>+-- feature is not enabled, @initialLayout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>+-- feature is not enabled, @finalLayout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a color format,+-- @initialLayout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a color format,+-- @finalLayout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth\/stencil+-- format which includes both depth and stencil aspects, and+-- @initialLayout@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+-- the @pNext@ chain /must/ include a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout'+-- structure+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth\/stencil+-- format which includes both depth and stencil aspects, and+-- @finalLayout@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+-- the @pNext@ chain /must/ include a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout'+-- structure+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth\/stencil+-- format which includes only the depth aspect, @initialLayout@ /must/+-- not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth\/stencil+-- format which includes only the depth aspect, @finalLayout@ /must/+-- not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth\/stencil+-- format which includes only the stencil aspect, @initialLayout@+-- /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.Format.Format' is a depth\/stencil+-- format which includes only the stencil aspect, @finalLayout@ /must/+-- not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2'+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.AttachmentDescriptionFlagBits'+-- values+--+-- - 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' value+--+-- - @samples@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+-- value+--+-- - @loadOp@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp'+-- value+--+-- - @storeOp@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp'+-- value+--+-- - @stencilLoadOp@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp'+-- value+--+-- - @stencilStoreOp@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp'+-- value+--+-- - @initialLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- - @finalLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.AttachmentDescriptionFlags',+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp',+-- 'Graphics.Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp',+-- 'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout',+-- 'RenderPassCreateInfo2',+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data AttachmentDescription2 (es :: [Type]) = AttachmentDescription2+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.AttachmentDescriptionFlagBits'+ -- specifying additional properties of the attachment.+ flags :: AttachmentDescriptionFlags+ , -- | 'Graphics.Vulkan.Core10.Enums.Format.Format' is a+ -- 'Graphics.Vulkan.Core10.Enums.Format.Format' value specifying the format+ -- of the image that will be used for the attachment.+ format :: Format+ , -- | @samples@ is the number of samples of the image as defined in+ -- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'.+ samples :: SampleCountFlagBits+ , -- | @loadOp@ is a+ -- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp' value+ -- specifying how the contents of color and depth components of the+ -- attachment are treated at the beginning of the subpass where it is first+ -- used.+ loadOp :: AttachmentLoadOp+ , -- | @storeOp@ is a+ -- 'Graphics.Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp' value+ -- specifying how the contents of color and depth components of the+ -- attachment are treated at the end of the subpass where it is last used.+ storeOp :: AttachmentStoreOp+ , -- | @stencilLoadOp@ is a+ -- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp' value+ -- specifying how the contents of stencil components of the attachment are+ -- treated at the beginning of the subpass where it is first used.+ stencilLoadOp :: AttachmentLoadOp+ , -- | @stencilStoreOp@ is a+ -- 'Graphics.Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp' value+ -- specifying how the contents of stencil components of the attachment are+ -- treated at the end of the last subpass where it is used.+ stencilStoreOp :: AttachmentStoreOp+ , -- | @initialLayout@ is the layout the attachment image subresource will be+ -- in when a render pass instance begins.+ initialLayout :: ImageLayout+ , -- | @finalLayout@ is the layout the attachment image subresource will be+ -- transitioned to when a render pass instance ends.+ finalLayout :: ImageLayout+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (AttachmentDescription2 es)++instance Extensible AttachmentDescription2 where+ extensibleType = STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2+ setNext x next = x{next = next}+ getNext AttachmentDescription2{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends AttachmentDescription2 e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @AttachmentDescriptionStencilLayout = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (AttachmentDescription2 es) where+ withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p AttachmentDescription2{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr AttachmentDescriptionFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr Format)) (format)+ lift $ poke ((p `plusPtr` 24 :: Ptr SampleCountFlagBits)) (samples)+ lift $ poke ((p `plusPtr` 28 :: Ptr AttachmentLoadOp)) (loadOp)+ lift $ poke ((p `plusPtr` 32 :: Ptr AttachmentStoreOp)) (storeOp)+ lift $ poke ((p `plusPtr` 36 :: Ptr AttachmentLoadOp)) (stencilLoadOp)+ lift $ poke ((p `plusPtr` 40 :: Ptr AttachmentStoreOp)) (stencilStoreOp)+ lift $ poke ((p `plusPtr` 44 :: Ptr ImageLayout)) (initialLayout)+ lift $ poke ((p `plusPtr` 48 :: Ptr ImageLayout)) (finalLayout)+ lift $ f+ cStructSize = 56+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 20 :: Ptr Format)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr SampleCountFlagBits)) (zero)+ lift $ poke ((p `plusPtr` 28 :: Ptr AttachmentLoadOp)) (zero)+ lift $ poke ((p `plusPtr` 32 :: Ptr AttachmentStoreOp)) (zero)+ lift $ poke ((p `plusPtr` 36 :: Ptr AttachmentLoadOp)) (zero)+ lift $ poke ((p `plusPtr` 40 :: Ptr AttachmentStoreOp)) (zero)+ lift $ poke ((p `plusPtr` 44 :: Ptr ImageLayout)) (zero)+ lift $ poke ((p `plusPtr` 48 :: Ptr ImageLayout)) (zero)+ lift $ f++instance PeekChain es => FromCStruct (AttachmentDescription2 es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @AttachmentDescriptionFlags ((p `plusPtr` 16 :: Ptr AttachmentDescriptionFlags))+ format <- peek @Format ((p `plusPtr` 20 :: Ptr Format))+ samples <- peek @SampleCountFlagBits ((p `plusPtr` 24 :: Ptr SampleCountFlagBits))+ loadOp <- peek @AttachmentLoadOp ((p `plusPtr` 28 :: Ptr AttachmentLoadOp))+ storeOp <- peek @AttachmentStoreOp ((p `plusPtr` 32 :: Ptr AttachmentStoreOp))+ stencilLoadOp <- peek @AttachmentLoadOp ((p `plusPtr` 36 :: Ptr AttachmentLoadOp))+ stencilStoreOp <- peek @AttachmentStoreOp ((p `plusPtr` 40 :: Ptr AttachmentStoreOp))+ initialLayout <- peek @ImageLayout ((p `plusPtr` 44 :: Ptr ImageLayout))+ finalLayout <- peek @ImageLayout ((p `plusPtr` 48 :: Ptr ImageLayout))+ pure $ AttachmentDescription2+ next flags format samples loadOp storeOp stencilLoadOp stencilStoreOp initialLayout finalLayout++instance es ~ '[] => Zero (AttachmentDescription2 es) where+ zero = AttachmentDescription2+ ()+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkAttachmentReference2 - Structure specifying an attachment reference+--+-- = Description+--+-- Parameters defined by this structure with the same name as those in+-- 'Graphics.Vulkan.Core10.Pass.AttachmentReference' have the identical+-- effect to those parameters.+--+-- @aspectMask@ has the same effect for the described attachment as+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.InputAttachmentAspectReference'::@aspectMask@+-- has on each corresponding attachment. It is ignored when this structure+-- is used to describe anything other than an input attachment reference.+--+-- If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>+-- feature is enabled, and @attachment@ has a depth\/stencil format,+-- @layout@ /can/ be set to a layout that only specifies the layout of the+-- depth aspect.+--+-- If @layout@ only specifies the layout of the depth aspect of the+-- attachment, the layout of the stencil aspect is specified by the+-- @stencilLayout@ member of a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentReferenceStencilLayout'+-- structure included in the @pNext@ chain. Otherwise, @layout@ describes+-- the layout for all relevant image aspects.+--+-- == Valid Usage+--+-- - If @attachment@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', @layout@+-- /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR'+--+-- - If @attachment@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', and+-- @aspectMask@ does not include+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',+-- @layout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'+--+-- - If @attachment@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', and+-- @aspectMask@ does not include+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',+-- @layout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>+-- feature is not enabled, and @attachment@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', @layout@+-- /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL',+--+-- - If @attachment@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', and+-- @aspectMask@ includes+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',+-- @layout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL',+--+-- - If @attachment@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', and+-- @aspectMask@ includes both+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'+-- and+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',+-- and @layout@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+-- the @pNext@ chain /must/ include a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentReferenceStencilLayout'+-- structure+--+-- - If @attachment@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', and+-- @aspectMask@ includes only+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'+-- then @layout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+--+-- - If @attachment@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', and+-- @aspectMask@ includes only+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+-- then @layout@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2'+--+-- - @layout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'SubpassDescription2',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve'+data AttachmentReference2 (es :: [Type]) = AttachmentReference2+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | @attachment@ is either an integer value identifying an attachment at the+ -- corresponding index in+ -- 'Graphics.Vulkan.Core10.Pass.RenderPassCreateInfo'::@pAttachments@, or+ -- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' to signify that+ -- this attachment is not used.+ attachment :: Word32+ , -- | @layout@ is a 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout'+ -- value specifying the layout the attachment uses during the subpass.+ layout :: ImageLayout+ , -- | @aspectMask@ is a mask of which aspect(s) /can/ be accessed within the+ -- specified subpass as an input attachment.+ aspectMask :: ImageAspectFlags+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (AttachmentReference2 es)++instance Extensible AttachmentReference2 where+ extensibleType = STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2+ setNext x next = x{next = next}+ getNext AttachmentReference2{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends AttachmentReference2 e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @AttachmentReferenceStencilLayout = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (AttachmentReference2 es) where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p AttachmentReference2{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (attachment)+ lift $ poke ((p `plusPtr` 20 :: Ptr ImageLayout)) (layout)+ lift $ poke ((p `plusPtr` 24 :: Ptr ImageAspectFlags)) (aspectMask)+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 20 :: Ptr ImageLayout)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr ImageAspectFlags)) (zero)+ lift $ f++instance PeekChain es => FromCStruct (AttachmentReference2 es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ attachment <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ layout <- peek @ImageLayout ((p `plusPtr` 20 :: Ptr ImageLayout))+ aspectMask <- peek @ImageAspectFlags ((p `plusPtr` 24 :: Ptr ImageAspectFlags))+ pure $ AttachmentReference2+ next attachment layout aspectMask++instance es ~ '[] => Zero (AttachmentReference2 es) where+ zero = AttachmentReference2+ ()+ zero+ zero+ zero+++-- | VkSubpassDescription2 - Structure specifying a subpass description+--+-- = Description+--+-- Parameters defined by this structure with the same name as those in+-- 'Graphics.Vulkan.Core10.Pass.SubpassDescription' have the identical+-- effect to those parameters.+--+-- @viewMask@ has the same effect for the described subpass as+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'::@pViewMasks@+-- has on each corresponding subpass.+--+-- == Valid Usage+--+-- - 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- /must/ be+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'+--+-- - @colorAttachmentCount@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxColorAttachments@+--+-- - If the first use of an attachment in this render pass is as an input+-- attachment, and the attachment is not also used as a color or+-- depth\/stencil attachment in the same subpass, then @loadOp@ /must/+-- not be+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'+--+-- - If @pResolveAttachments@ is not @NULL@, for each resolve attachment+-- that does not have the value+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', the+-- corresponding color attachment /must/ not have the value+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'+--+-- - If @pResolveAttachments@ is not @NULL@, for each resolve attachment+-- that is not 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',+-- the corresponding color attachment /must/ not have a sample count of+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- - If @pResolveAttachments@ is not @NULL@, each resolve attachment that+-- is not 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'+-- /must/ have a sample count of+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- - Any given element of @pResolveAttachments@ /must/ have the same+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' as its corresponding+-- color attachment+--+-- - All attachments in @pColorAttachments@ that are not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have+-- the same sample count+--+-- - If the @VK_AMD_mixed_attachment_samples@ extension is enabled, all+-- attachments in @pColorAttachments@ that are not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have+-- a sample count that is smaller than or equal to the sample count of+-- @pDepthStencilAttachment@ if it is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'+--+-- - If neither the @VK_AMD_mixed_attachment_samples@ nor the+-- @VK_NV_framebuffer_mixed_samples@ extensions are enabled, and if+-- @pDepthStencilAttachment@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' and any+-- attachments in @pColorAttachments@ are not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', they /must/+-- have the same sample count+--+-- - The @attachment@ member of any element of @pPreserveAttachments@+-- /must/ not be+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'+--+-- - Any given element of @pPreserveAttachments@ /must/ not also be an+-- element of any other member of the subpass description+--+-- - If any attachment is used by more than one+-- 'Graphics.Vulkan.Core10.Pass.AttachmentReference' member, then each+-- use /must/ use the same @layout@+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' includes+-- 'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX',+-- it /must/ also include+-- 'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX'.+--+-- - If the @attachment@ member of any element of @pInputAttachments@ is+-- not 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', then+-- the @aspectMask@ member /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits'+--+-- - If the @attachment@ member of any element of @pInputAttachments@ is+-- not 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', then+-- the @aspectMask@ member /must/ not be @0@+--+-- - If the @attachment@ member of any element of @pInputAttachments@ is+-- not 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', then+-- the @aspectMask@ member /must/ not include+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_METADATA_BIT'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2'+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SubpassDescriptionFlagBits'+-- values+--+-- - 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- value+--+-- - If @inputAttachmentCount@ is not @0@, @pInputAttachments@ /must/ be+-- a valid pointer to an array of @inputAttachmentCount@ valid+-- 'AttachmentReference2' structures+--+-- - If @colorAttachmentCount@ is not @0@, @pColorAttachments@ /must/ be+-- a valid pointer to an array of @colorAttachmentCount@ valid+-- 'AttachmentReference2' structures+--+-- - If @colorAttachmentCount@ is not @0@, and @pResolveAttachments@ is+-- not @NULL@, @pResolveAttachments@ /must/ be a valid pointer to an+-- array of @colorAttachmentCount@ valid 'AttachmentReference2'+-- structures+--+-- - If @pDepthStencilAttachment@ is not @NULL@,+-- @pDepthStencilAttachment@ /must/ be a valid pointer to a valid+-- 'AttachmentReference2' structure+--+-- - If @preserveAttachmentCount@ is not @0@, @pPreserveAttachments@+-- /must/ be a valid pointer to an array of @preserveAttachmentCount@+-- @uint32_t@ values+--+-- = See Also+--+-- 'AttachmentReference2',+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',+-- 'RenderPassCreateInfo2',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SubpassDescriptionFlags'+data SubpassDescription2 (es :: [Type]) = SubpassDescription2+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SubpassDescriptionFlagBits'+ -- specifying usage of the subpass.+ flags :: SubpassDescriptionFlags+ , -- | 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' is a+ -- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value+ -- specifying the pipeline type supported for this subpass.+ pipelineBindPoint :: PipelineBindPoint+ , -- | @viewMask@ is a bitfield of view indices describing which views+ -- rendering is broadcast to in this subpass, when multiview is enabled.+ viewMask :: Word32+ , -- | @pInputAttachments@ is a pointer to an array of 'AttachmentReference2'+ -- structures defining the input attachments for this subpass and their+ -- layouts.+ inputAttachments :: Vector (SomeStruct AttachmentReference2)+ , -- | @pColorAttachments@ is a pointer to an array of 'AttachmentReference2'+ -- structures defining the color attachments for this subpass and their+ -- layouts.+ colorAttachments :: Vector (SomeStruct AttachmentReference2)+ , -- | @pResolveAttachments@ is an optional array of @colorAttachmentCount@+ -- 'AttachmentReference2' structures defining the resolve attachments for+ -- this subpass and their layouts.+ resolveAttachments :: Either Word32 (Vector (SomeStruct AttachmentReference2))+ , -- | @pDepthStencilAttachment@ is a pointer to a 'AttachmentReference2'+ -- structure specifying the depth\/stencil attachment for this subpass and+ -- its layout.+ depthStencilAttachment :: Maybe (SomeStruct AttachmentReference2)+ , -- | @pPreserveAttachments@ is a pointer to an array of+ -- @preserveAttachmentCount@ render pass attachment indices identifying+ -- attachments that are not used by this subpass, but whose contents /must/+ -- be preserved throughout the subpass.+ preserveAttachments :: Vector Word32+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (SubpassDescription2 es)++instance Extensible SubpassDescription2 where+ extensibleType = STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2+ setNext x next = x{next = next}+ getNext SubpassDescription2{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends SubpassDescription2 e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @SubpassDescriptionDepthStencilResolve = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (SubpassDescription2 es) where+ withCStruct x f = allocaBytesAligned 88 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SubpassDescription2{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr SubpassDescriptionFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr PipelineBindPoint)) (pipelineBindPoint)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (viewMask)+ lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (inputAttachments)) :: Word32))+ pPInputAttachments' <- ContT $ allocaBytesAligned @(AttachmentReference2 _) ((Data.Vector.length (inputAttachments)) * 32) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPInputAttachments' `plusPtr` (32 * (i)) :: Ptr (AttachmentReference2 _))) (e) . ($ ())) (inputAttachments)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr (AttachmentReference2 _)))) (pPInputAttachments')+ let pColorAttachmentsLength = Data.Vector.length $ (colorAttachments)+ let pResolveAttachmentsLength = either id (fromIntegral . Data.Vector.length) (resolveAttachments)+ lift $ unless (fromIntegral pResolveAttachmentsLength == pColorAttachmentsLength || pResolveAttachmentsLength == 0) $+ throwIO $ IOError Nothing InvalidArgument "" "pResolveAttachments and pColorAttachments must have the same length" Nothing Nothing+ lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral pColorAttachmentsLength :: Word32))+ pPColorAttachments' <- ContT $ allocaBytesAligned @(AttachmentReference2 _) ((Data.Vector.length (colorAttachments)) * 32) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPColorAttachments' `plusPtr` (32 * (i)) :: Ptr (AttachmentReference2 _))) (e) . ($ ())) (colorAttachments)+ lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr (AttachmentReference2 _)))) (pPColorAttachments')+ pResolveAttachments'' <- case (resolveAttachments) of+ Left _ -> pure nullPtr+ Right v -> do+ pPResolveAttachments' <- ContT $ allocaBytesAligned @(AttachmentReference2 _) ((Data.Vector.length (v)) * 32) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPResolveAttachments' `plusPtr` (32 * (i)) :: Ptr (AttachmentReference2 _))) (e) . ($ ())) (v)+ pure $ pPResolveAttachments'+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (AttachmentReference2 _)))) pResolveAttachments''+ pDepthStencilAttachment'' <- case (depthStencilAttachment) of+ Nothing -> pure nullPtr+ Just j -> ContT @_ @_ @(Ptr (AttachmentReference2 '[])) $ \cont -> withSomeCStruct @AttachmentReference2 (j) (cont . castPtr)+ lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr (AttachmentReference2 _)))) pDepthStencilAttachment''+ lift $ poke ((p `plusPtr` 72 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (preserveAttachments)) :: Word32))+ pPPreserveAttachments' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (preserveAttachments)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPPreserveAttachments' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (preserveAttachments)+ lift $ poke ((p `plusPtr` 80 :: Ptr (Ptr Word32))) (pPPreserveAttachments')+ lift $ f+ cStructSize = 88+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 20 :: Ptr PipelineBindPoint)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ pPInputAttachments' <- ContT $ allocaBytesAligned @(AttachmentReference2 _) ((Data.Vector.length (mempty)) * 32) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPInputAttachments' `plusPtr` (32 * (i)) :: Ptr (AttachmentReference2 _))) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr (AttachmentReference2 _)))) (pPInputAttachments')+ pPColorAttachments' <- ContT $ allocaBytesAligned @(AttachmentReference2 _) ((Data.Vector.length (mempty)) * 32) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPColorAttachments' `plusPtr` (32 * (i)) :: Ptr (AttachmentReference2 _))) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr (AttachmentReference2 _)))) (pPColorAttachments')+ pPPreserveAttachments' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPPreserveAttachments' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 80 :: Ptr (Ptr Word32))) (pPPreserveAttachments')+ lift $ f++instance PeekChain es => FromCStruct (SubpassDescription2 es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @SubpassDescriptionFlags ((p `plusPtr` 16 :: Ptr SubpassDescriptionFlags))+ pipelineBindPoint <- peek @PipelineBindPoint ((p `plusPtr` 20 :: Ptr PipelineBindPoint))+ viewMask <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ inputAttachmentCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+ pInputAttachments <- peek @(Ptr (AttachmentReference2 _)) ((p `plusPtr` 32 :: Ptr (Ptr (AttachmentReference2 a))))+ pInputAttachments' <- generateM (fromIntegral inputAttachmentCount) (\i -> peekSomeCStruct (forgetExtensions ((pInputAttachments `advancePtrBytes` (32 * (i)) :: Ptr (AttachmentReference2 _)))))+ colorAttachmentCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))+ pColorAttachments <- peek @(Ptr (AttachmentReference2 _)) ((p `plusPtr` 48 :: Ptr (Ptr (AttachmentReference2 a))))+ pColorAttachments' <- generateM (fromIntegral colorAttachmentCount) (\i -> peekSomeCStruct (forgetExtensions ((pColorAttachments `advancePtrBytes` (32 * (i)) :: Ptr (AttachmentReference2 _)))))+ pResolveAttachments <- peek @(Ptr (AttachmentReference2 _)) ((p `plusPtr` 56 :: Ptr (Ptr (AttachmentReference2 a))))+ pResolveAttachments' <- maybePeek (\j -> generateM (fromIntegral colorAttachmentCount) (\i -> peekSomeCStruct (forgetExtensions (((j) `advancePtrBytes` (32 * (i)) :: Ptr (AttachmentReference2 _)))))) pResolveAttachments+ let pResolveAttachments'' = maybe (Left colorAttachmentCount) Right pResolveAttachments'+ pDepthStencilAttachment <- peek @(Ptr (AttachmentReference2 _)) ((p `plusPtr` 64 :: Ptr (Ptr (AttachmentReference2 a))))+ pDepthStencilAttachment' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pDepthStencilAttachment+ preserveAttachmentCount <- peek @Word32 ((p `plusPtr` 72 :: Ptr Word32))+ pPreserveAttachments <- peek @(Ptr Word32) ((p `plusPtr` 80 :: Ptr (Ptr Word32)))+ pPreserveAttachments' <- generateM (fromIntegral preserveAttachmentCount) (\i -> peek @Word32 ((pPreserveAttachments `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ pure $ SubpassDescription2+ next flags pipelineBindPoint viewMask pInputAttachments' pColorAttachments' pResolveAttachments'' pDepthStencilAttachment' pPreserveAttachments'++instance es ~ '[] => Zero (SubpassDescription2 es) where+ zero = SubpassDescription2+ ()+ zero+ zero+ zero+ mempty+ mempty+ (Left 0)+ Nothing+ mempty+++-- | VkSubpassDependency2 - Structure specifying a subpass dependency+--+-- = Description+--+-- Parameters defined by this structure with the same name as those in+-- 'Graphics.Vulkan.Core10.Pass.SubpassDependency' have the identical+-- effect to those parameters.+--+-- @viewOffset@ has the same effect for the described subpass dependency as+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'::@pViewOffsets@+-- has on each corresponding subpass dependency.+--+-- == Valid Usage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>+-- feature is not enabled, @srcStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>+-- feature is not enabled, @dstStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+-- feature is not enabled, @srcStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>+-- feature is not enabled, @dstStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'+--+-- - @srcSubpass@ /must/ be less than or equal to @dstSubpass@, unless+-- one of them is+-- 'Graphics.Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL', to avoid+-- cyclic dependencies and ensure a valid execution order+--+-- - @srcSubpass@ and @dstSubpass@ /must/ not both be equal to+-- 'Graphics.Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL'+--+-- - If @srcSubpass@ is equal to @dstSubpass@ and not all of the stages+-- in @srcStageMask@ and @dstStageMask@ are+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>,+-- the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically latest>+-- pipeline stage in @srcStageMask@ /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically earlier>+-- than or equal to the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically earliest>+-- pipeline stage in @dstStageMask@+--+-- - Any access flag included in @srcAccessMask@ /must/ be supported by+-- one of the pipeline stages in @srcStageMask@, as specified in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- - Any access flag included in @dstAccessMask@ /must/ be supported by+-- one of the pipeline stages in @dstStageMask@, as specified in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>+--+-- - If 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags'+-- includes+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT',+-- @srcSubpass@ /must/ not be equal to+-- 'Graphics.Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL'+--+-- - If 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags'+-- includes+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT',+-- @dstSubpass@ /must/ not be equal to+-- 'Graphics.Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL'+--+-- - If @srcSubpass@ equals @dstSubpass@, and @srcStageMask@ and+-- @dstStageMask@ both include a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stage>,+-- then+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags'+-- /must/ include+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT'+--+-- - If @viewOffset@ is not equal to @0@, @srcSubpass@ /must/ not be+-- equal to @dstSubpass@+--+-- - If 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags'+-- does not include+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT',+-- @viewOffset@ /must/ be @0@+--+-- - If @viewOffset@ is not @0@, @srcSubpass@ /must/ not be equal to+-- @dstSubpass@.+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>+-- feature is not enabled, @srcStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>+-- feature is not enabled, @srcStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>+-- feature is not enabled, @dstStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>+-- feature is not enabled, @dstStageMask@ /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2'+--+-- - @srcStageMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+-- values+--+-- - @srcStageMask@ /must/ not be @0@+--+-- - @dstStageMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+-- values+--+-- - @dstStageMask@ /must/ not be @0@+--+-- - @srcAccessMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' values+--+-- - @dstAccessMask@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' values+--+-- - 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags'+-- /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits'+-- values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.AccessFlags',+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags',+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags',+-- 'RenderPassCreateInfo2',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data SubpassDependency2 = SubpassDependency2+ { -- | @srcSubpass@ is the subpass index of the first subpass in the+ -- dependency, or 'Graphics.Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL'.+ srcSubpass :: Word32+ , -- | @dstSubpass@ is the subpass index of the second subpass in the+ -- dependency, or 'Graphics.Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL'.+ dstSubpass :: Word32+ , -- | @srcStageMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+ -- specifying the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>.+ srcStageMask :: PipelineStageFlags+ , -- | @dstStageMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+ -- specifying the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>+ dstStageMask :: PipelineStageFlags+ , -- | @srcAccessMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying+ -- a+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks source access mask>.+ srcAccessMask :: AccessFlags+ , -- | @dstAccessMask@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying+ -- a+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks destination access mask>.+ dstAccessMask :: AccessFlags+ , -- | 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags' is a+ -- bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits'.+ dependencyFlags :: DependencyFlags+ , -- | @viewOffset@ controls which views in the source subpass the views in the+ -- destination subpass depend on.+ viewOffset :: Int32+ }+ deriving (Typeable)+deriving instance Show SubpassDependency2++instance ToCStruct SubpassDependency2 where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SubpassDependency2{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (srcSubpass)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (dstSubpass)+ poke ((p `plusPtr` 24 :: Ptr PipelineStageFlags)) (srcStageMask)+ poke ((p `plusPtr` 28 :: Ptr PipelineStageFlags)) (dstStageMask)+ poke ((p `plusPtr` 32 :: Ptr AccessFlags)) (srcAccessMask)+ poke ((p `plusPtr` 36 :: Ptr AccessFlags)) (dstAccessMask)+ poke ((p `plusPtr` 40 :: Ptr DependencyFlags)) (dependencyFlags)+ poke ((p `plusPtr` 44 :: Ptr Int32)) (viewOffset)+ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 24 :: Ptr PipelineStageFlags)) (zero)+ poke ((p `plusPtr` 28 :: Ptr PipelineStageFlags)) (zero)+ f++instance FromCStruct SubpassDependency2 where+ peekCStruct p = do+ srcSubpass <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ dstSubpass <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ srcStageMask <- peek @PipelineStageFlags ((p `plusPtr` 24 :: Ptr PipelineStageFlags))+ dstStageMask <- peek @PipelineStageFlags ((p `plusPtr` 28 :: Ptr PipelineStageFlags))+ srcAccessMask <- peek @AccessFlags ((p `plusPtr` 32 :: Ptr AccessFlags))+ dstAccessMask <- peek @AccessFlags ((p `plusPtr` 36 :: Ptr AccessFlags))+ dependencyFlags <- peek @DependencyFlags ((p `plusPtr` 40 :: Ptr DependencyFlags))+ viewOffset <- peek @Int32 ((p `plusPtr` 44 :: Ptr Int32))+ pure $ SubpassDependency2+ srcSubpass dstSubpass srcStageMask dstStageMask srcAccessMask dstAccessMask dependencyFlags viewOffset++instance Storable SubpassDependency2 where+ sizeOf ~_ = 48+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SubpassDependency2 where+ zero = SubpassDependency2+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkRenderPassCreateInfo2 - Structure specifying parameters of a newly+-- created render pass+--+-- = Description+--+-- Parameters defined by this structure with the same name as those in+-- 'Graphics.Vulkan.Core10.Pass.RenderPassCreateInfo' have the identical+-- effect to those parameters; the child structures are variants of those+-- used in 'Graphics.Vulkan.Core10.Pass.RenderPassCreateInfo' which add+-- @sType@ and @pNext@ parameters, allowing them to be extended.+--+-- If the 'SubpassDescription2'::@viewMask@ member of any element of+-- @pSubpasses@ is not zero, /multiview/ functionality is considered to be+-- enabled for this render pass.+--+-- @correlatedViewMaskCount@ and @pCorrelatedViewMasks@ have the same+-- effect as+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'::@correlationMaskCount@+-- and+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'::@pCorrelationMasks@,+-- respectively.+--+-- == Valid Usage+--+-- - If any two subpasses operate on attachments with overlapping ranges+-- of the same 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object,+-- and at least one subpass writes to that area of+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory', a subpass dependency+-- /must/ be included (either directly or via some intermediate+-- subpasses) between them+--+-- - If the @attachment@ member of any element of @pInputAttachments@,+-- @pColorAttachments@, @pResolveAttachments@ or+-- @pDepthStencilAttachment@, or the attachment indexed by any element+-- of @pPreserveAttachments@ in any given element of @pSubpasses@ is+-- bound to a range of a 'Graphics.Vulkan.Core10.Handles.DeviceMemory'+-- object that overlaps with any other attachment in any subpass+-- (including the same subpass), the 'AttachmentDescription2'+-- structures describing them /must/ include+-- 'Graphics.Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT'+-- in 'Graphics.Vulkan.Core10.BaseType.Flags'+--+-- - If the @attachment@ member of any element of @pInputAttachments@,+-- @pColorAttachments@, @pResolveAttachments@ or+-- @pDepthStencilAttachment@, or any element of @pPreserveAttachments@+-- in any given element of @pSubpasses@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', it /must/+-- be less than @attachmentCount@+--+-- - For any member of @pAttachments@ with a @loadOp@ equal to+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR',+-- the first use of that attachment /must/ not specify a @layout@ equal+-- to+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'+--+-- - For any member of @pAttachments@ with a @stencilLoadOp@ equal to+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR',+-- the first use of that attachment /must/ not specify a @layout@ equal+-- to+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'.+--+-- - For any element of @pDependencies@, if the @srcSubpass@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL', all stage+-- flags included in the @srcStageMask@ member of that dependency+-- /must/ be a pipeline stage supported by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types pipeline>+-- identified by the+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- member of the source subpass+--+-- - For any element of @pDependencies@, if the @dstSubpass@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL', all stage+-- flags included in the @dstStageMask@ member of that dependency+-- /must/ be a pipeline stage supported by the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types pipeline>+-- identified by the+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- member of the destination subpass+--+-- - The set of bits included in any element of @pCorrelatedViewMasks@+-- /must/ not overlap with the set of bits included in any other+-- element of @pCorrelatedViewMasks@+--+-- - If the 'SubpassDescription2'::@viewMask@ member of all elements of+-- @pSubpasses@ is @0@, @correlatedViewMaskCount@ /must/ be @0@+--+-- - The 'SubpassDescription2'::@viewMask@ member of all elements of+-- @pSubpasses@ /must/ either all be @0@, or all not be @0@+--+-- - If the 'SubpassDescription2'::@viewMask@ member of all elements of+-- @pSubpasses@ is @0@, the+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags'+-- member of any element of @pDependencies@ /must/ not include+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'+--+-- - For any element of @pDependencies@ where its @srcSubpass@ member+-- equals its @dstSubpass@ member, if the @viewMask@ member of the+-- corresponding element of @pSubpasses@ includes more than one bit,+-- its+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags'+-- member /must/ include+-- 'Graphics.Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'+--+-- - The @viewMask@ member /must/ not have a bit set at an index greater+-- than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxFramebufferLayers@+--+-- - If the @attachment@ member of any element of the @pInputAttachments@+-- member of any element of @pSubpasses@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', the+-- @aspectMask@ member of that element of @pInputAttachments@ /must/+-- only include aspects that are present in images of the format+-- specified by the element of @pAttachments@ specified by @attachment@+--+-- - The @srcSubpass@ member of each element of @pDependencies@ /must/ be+-- less than @subpassCount@+--+-- - The @dstSubpass@ member of each element of @pDependencies@ /must/ be+-- less than @subpassCount@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map.RenderPassFragmentDensityMapCreateInfoEXT'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.RenderPassCreateFlagBits.RenderPassCreateFlagBits'+-- values+--+-- - If @attachmentCount@ is not @0@, @pAttachments@ /must/ be a valid+-- pointer to an array of @attachmentCount@ valid+-- 'AttachmentDescription2' structures+--+-- - @pSubpasses@ /must/ be a valid pointer to an array of @subpassCount@+-- valid 'SubpassDescription2' structures+--+-- - If @dependencyCount@ is not @0@, @pDependencies@ /must/ be a valid+-- pointer to an array of @dependencyCount@ valid 'SubpassDependency2'+-- structures+--+-- - If @correlatedViewMaskCount@ is not @0@, @pCorrelatedViewMasks@+-- /must/ be a valid pointer to an array of @correlatedViewMaskCount@+-- @uint32_t@ values+--+-- - @subpassCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'AttachmentDescription2',+-- 'Graphics.Vulkan.Core10.Enums.RenderPassCreateFlagBits.RenderPassCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'SubpassDependency2', 'SubpassDescription2', 'createRenderPass2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_create_renderpass2.createRenderPass2KHR'+data RenderPassCreateInfo2 (es :: [Type]) = RenderPassCreateInfo2+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: RenderPassCreateFlags+ , -- | @pAttachments@ is a pointer to an array of @attachmentCount@+ -- 'AttachmentDescription2' structures describing the attachments used by+ -- the render pass.+ attachments :: Vector (SomeStruct AttachmentDescription2)+ , -- | @pSubpasses@ is a pointer to an array of @subpassCount@+ -- 'SubpassDescription2' structures describing each subpass.+ subpasses :: Vector (SomeStruct SubpassDescription2)+ , -- | @pDependencies@ is a pointer to an array of @dependencyCount@+ -- 'Graphics.Vulkan.Core10.Pass.SubpassDependency' structures describing+ -- dependencies between pairs of subpasses.+ dependencies :: Vector SubpassDependency2+ , -- | @pCorrelatedViewMasks@ is a pointer to an array of view masks indicating+ -- sets of views that /may/ be more efficient to render concurrently.+ correlatedViewMasks :: Vector Word32+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (RenderPassCreateInfo2 es)++instance Extensible RenderPassCreateInfo2 where+ extensibleType = STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2+ setNext x next = x{next = next}+ getNext RenderPassCreateInfo2{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends RenderPassCreateInfo2 e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @RenderPassFragmentDensityMapCreateInfoEXT = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (RenderPassCreateInfo2 es) where+ withCStruct x f = allocaBytesAligned 80 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p RenderPassCreateInfo2{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr RenderPassCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (attachments)) :: Word32))+ pPAttachments' <- ContT $ allocaBytesAligned @(AttachmentDescription2 _) ((Data.Vector.length (attachments)) * 56) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPAttachments' `plusPtr` (56 * (i)) :: Ptr (AttachmentDescription2 _))) (e) . ($ ())) (attachments)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (AttachmentDescription2 _)))) (pPAttachments')+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (subpasses)) :: Word32))+ pPSubpasses' <- ContT $ allocaBytesAligned @(SubpassDescription2 _) ((Data.Vector.length (subpasses)) * 88) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPSubpasses' `plusPtr` (88 * (i)) :: Ptr (SubpassDescription2 _))) (e) . ($ ())) (subpasses)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr (SubpassDescription2 _)))) (pPSubpasses')+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (dependencies)) :: Word32))+ pPDependencies' <- ContT $ allocaBytesAligned @SubpassDependency2 ((Data.Vector.length (dependencies)) * 48) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDependencies' `plusPtr` (48 * (i)) :: Ptr SubpassDependency2) (e) . ($ ())) (dependencies)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr SubpassDependency2))) (pPDependencies')+ lift $ poke ((p `plusPtr` 64 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (correlatedViewMasks)) :: Word32))+ pPCorrelatedViewMasks' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (correlatedViewMasks)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPCorrelatedViewMasks' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (correlatedViewMasks)+ lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr Word32))) (pPCorrelatedViewMasks')+ lift $ f+ cStructSize = 80+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ pPAttachments' <- ContT $ allocaBytesAligned @(AttachmentDescription2 _) ((Data.Vector.length (mempty)) * 56) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPAttachments' `plusPtr` (56 * (i)) :: Ptr (AttachmentDescription2 _))) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (AttachmentDescription2 _)))) (pPAttachments')+ pPSubpasses' <- ContT $ allocaBytesAligned @(SubpassDescription2 _) ((Data.Vector.length (mempty)) * 88) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPSubpasses' `plusPtr` (88 * (i)) :: Ptr (SubpassDescription2 _))) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr (SubpassDescription2 _)))) (pPSubpasses')+ pPDependencies' <- ContT $ allocaBytesAligned @SubpassDependency2 ((Data.Vector.length (mempty)) * 48) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDependencies' `plusPtr` (48 * (i)) :: Ptr SubpassDependency2) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr SubpassDependency2))) (pPDependencies')+ pPCorrelatedViewMasks' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPCorrelatedViewMasks' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr Word32))) (pPCorrelatedViewMasks')+ lift $ f++instance PeekChain es => FromCStruct (RenderPassCreateInfo2 es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @RenderPassCreateFlags ((p `plusPtr` 16 :: Ptr RenderPassCreateFlags))+ attachmentCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pAttachments <- peek @(Ptr (AttachmentDescription2 _)) ((p `plusPtr` 24 :: Ptr (Ptr (AttachmentDescription2 a))))+ pAttachments' <- generateM (fromIntegral attachmentCount) (\i -> peekSomeCStruct (forgetExtensions ((pAttachments `advancePtrBytes` (56 * (i)) :: Ptr (AttachmentDescription2 _)))))+ subpassCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pSubpasses <- peek @(Ptr (SubpassDescription2 _)) ((p `plusPtr` 40 :: Ptr (Ptr (SubpassDescription2 a))))+ pSubpasses' <- generateM (fromIntegral subpassCount) (\i -> peekSomeCStruct (forgetExtensions ((pSubpasses `advancePtrBytes` (88 * (i)) :: Ptr (SubpassDescription2 _)))))+ dependencyCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+ pDependencies <- peek @(Ptr SubpassDependency2) ((p `plusPtr` 56 :: Ptr (Ptr SubpassDependency2)))+ pDependencies' <- generateM (fromIntegral dependencyCount) (\i -> peekCStruct @SubpassDependency2 ((pDependencies `advancePtrBytes` (48 * (i)) :: Ptr SubpassDependency2)))+ correlatedViewMaskCount <- peek @Word32 ((p `plusPtr` 64 :: Ptr Word32))+ pCorrelatedViewMasks <- peek @(Ptr Word32) ((p `plusPtr` 72 :: Ptr (Ptr Word32)))+ pCorrelatedViewMasks' <- generateM (fromIntegral correlatedViewMaskCount) (\i -> peek @Word32 ((pCorrelatedViewMasks `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ pure $ RenderPassCreateInfo2+ next flags pAttachments' pSubpasses' pDependencies' pCorrelatedViewMasks'++instance es ~ '[] => Zero (RenderPassCreateInfo2 es) where+ zero = RenderPassCreateInfo2+ ()+ zero+ mempty+ mempty+ mempty+ mempty+++-- | VkSubpassBeginInfo - Structure specifying subpass begin info+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Core10.Enums.SubpassContents.SubpassContents',+-- 'cmdBeginRenderPass2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_create_renderpass2.cmdBeginRenderPass2KHR',+-- 'cmdNextSubpass2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_create_renderpass2.cmdNextSubpass2KHR'+data SubpassBeginInfo = SubpassBeginInfo+ { -- | @contents@ /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Enums.SubpassContents.SubpassContents' value+ contents :: SubpassContents }+ deriving (Typeable)+deriving instance Show SubpassBeginInfo++instance ToCStruct SubpassBeginInfo where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SubpassBeginInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBPASS_BEGIN_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr SubpassContents)) (contents)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBPASS_BEGIN_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr SubpassContents)) (zero)+ f++instance FromCStruct SubpassBeginInfo where+ peekCStruct p = do+ contents <- peek @SubpassContents ((p `plusPtr` 16 :: Ptr SubpassContents))+ pure $ SubpassBeginInfo+ contents++instance Storable SubpassBeginInfo where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SubpassBeginInfo where+ zero = SubpassBeginInfo+ zero+++-- | VkSubpassEndInfo - Structure specifying subpass end info+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'cmdEndRenderPass2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_create_renderpass2.cmdEndRenderPass2KHR',+-- 'cmdNextSubpass2',+-- 'Graphics.Vulkan.Extensions.VK_KHR_create_renderpass2.cmdNextSubpass2KHR'+data SubpassEndInfo = SubpassEndInfo+ {}+ deriving (Typeable)+deriving instance Show SubpassEndInfo++instance ToCStruct SubpassEndInfo where+ withCStruct x f = allocaBytesAligned 16 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SubpassEndInfo f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBPASS_END_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f+ cStructSize = 16+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBPASS_END_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct SubpassEndInfo where+ peekCStruct _ = pure $ SubpassEndInfo+ ++instance Storable SubpassEndInfo where+ sizeOf ~_ = 16+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SubpassEndInfo where+ zero = SubpassEndInfo+ +
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs-boot view
@@ -0,0 +1,75 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 ( AttachmentDescription2+ , AttachmentReference2+ , RenderPassCreateInfo2+ , SubpassBeginInfo+ , SubpassDependency2+ , SubpassDescription2+ , SubpassEndInfo+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+type role AttachmentDescription2 nominal+data AttachmentDescription2 (es :: [Type])++instance PokeChain es => ToCStruct (AttachmentDescription2 es)+instance Show (Chain es) => Show (AttachmentDescription2 es)++instance PeekChain es => FromCStruct (AttachmentDescription2 es)+++type role AttachmentReference2 nominal+data AttachmentReference2 (es :: [Type])++instance PokeChain es => ToCStruct (AttachmentReference2 es)+instance Show (Chain es) => Show (AttachmentReference2 es)++instance PeekChain es => FromCStruct (AttachmentReference2 es)+++type role RenderPassCreateInfo2 nominal+data RenderPassCreateInfo2 (es :: [Type])++instance PokeChain es => ToCStruct (RenderPassCreateInfo2 es)+instance Show (Chain es) => Show (RenderPassCreateInfo2 es)++instance PeekChain es => FromCStruct (RenderPassCreateInfo2 es)+++data SubpassBeginInfo++instance ToCStruct SubpassBeginInfo+instance Show SubpassBeginInfo++instance FromCStruct SubpassBeginInfo+++data SubpassDependency2++instance ToCStruct SubpassDependency2+instance Show SubpassDependency2++instance FromCStruct SubpassDependency2+++type role SubpassDescription2 nominal+data SubpassDescription2 (es :: [Type])++instance PokeChain es => ToCStruct (SubpassDescription2 es)+instance Show (Chain es) => Show (SubpassDescription2 es)++instance PeekChain es => FromCStruct (SubpassDescription2 es)+++data SubpassEndInfo++instance ToCStruct SubpassEndInfo+instance Show SubpassEndInfo++instance FromCStruct SubpassEndInfo+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_depth_stencil_resolve.hs view
@@ -0,0 +1,289 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve ( PhysicalDeviceDepthStencilResolveProperties(..)+ , SubpassDescriptionDepthStencilResolve(..)+ , StructureType(..)+ , ResolveModeFlagBits(..)+ , ResolveModeFlags+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Utils (maybePeek)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.CStruct.Extends (forgetExtensions)+import Graphics.Vulkan.CStruct.Extends (peekSomeCStruct)+import Graphics.Vulkan.CStruct.Extends (withSomeCStruct)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (AttachmentReference2)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlagBits)+import Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlags)+import Graphics.Vulkan.CStruct.Extends (SomeStruct)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE))+import Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlagBits(..))+import Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- | VkPhysicalDeviceDepthStencilResolveProperties - Structure describing+-- depth\/stencil resolve properties that can be supported by an+-- implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceDepthStencilResolveProperties'+-- structure describe the following implementation-dependent limits:+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceDepthStencilResolveProperties = PhysicalDeviceDepthStencilResolveProperties+ { -- | @supportedDepthResolveModes@ is a bitmask of+ -- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits'+ -- indicating the set of supported depth resolve modes.+ -- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_SAMPLE_ZERO_BIT'+ -- /must/ be included in the set but implementations /may/ support+ -- additional modes.+ supportedDepthResolveModes :: ResolveModeFlags+ , -- | @supportedStencilResolveModes@ is a bitmask of+ -- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits'+ -- indicating the set of supported stencil resolve modes.+ -- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_SAMPLE_ZERO_BIT'+ -- /must/ be included in the set but implementations /may/ support+ -- additional modes.+ -- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_AVERAGE_BIT'+ -- /must/ not be included in the set.+ supportedStencilResolveModes :: ResolveModeFlags+ , -- | @independentResolveNone@ is 'Graphics.Vulkan.Core10.BaseType.TRUE' if+ -- the implementation supports setting the depth and stencil resolve modes+ -- to different values when one of those modes is+ -- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE'.+ -- Otherwise the implementation only supports setting both modes to the+ -- same value.+ independentResolveNone :: Bool+ , -- | @independentResolve@ is 'Graphics.Vulkan.Core10.BaseType.TRUE' if the+ -- implementation supports all combinations of the supported depth and+ -- stencil resolve modes, including setting either depth or stencil resolve+ -- mode to+ -- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE'. An+ -- implementation that supports @independentResolve@ /must/ also support+ -- @independentResolveNone@.+ independentResolve :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceDepthStencilResolveProperties++instance ToCStruct PhysicalDeviceDepthStencilResolveProperties where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceDepthStencilResolveProperties{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ResolveModeFlags)) (supportedDepthResolveModes)+ poke ((p `plusPtr` 20 :: Ptr ResolveModeFlags)) (supportedStencilResolveModes)+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (independentResolveNone))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (independentResolve))+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ResolveModeFlags)) (zero)+ poke ((p `plusPtr` 20 :: Ptr ResolveModeFlags)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceDepthStencilResolveProperties where+ peekCStruct p = do+ supportedDepthResolveModes <- peek @ResolveModeFlags ((p `plusPtr` 16 :: Ptr ResolveModeFlags))+ supportedStencilResolveModes <- peek @ResolveModeFlags ((p `plusPtr` 20 :: Ptr ResolveModeFlags))+ independentResolveNone <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ independentResolve <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))+ pure $ PhysicalDeviceDepthStencilResolveProperties+ supportedDepthResolveModes supportedStencilResolveModes (bool32ToBool independentResolveNone) (bool32ToBool independentResolve)++instance Storable PhysicalDeviceDepthStencilResolveProperties where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceDepthStencilResolveProperties where+ zero = PhysicalDeviceDepthStencilResolveProperties+ zero+ zero+ zero+ zero+++-- | VkSubpassDescriptionDepthStencilResolve - Structure specifying+-- depth\/stencil resolve operations for a subpass+--+-- == Valid Usage+--+-- - If @pDepthStencilResolveAttachment@ is not @NULL@ and does not have+-- the value 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',+-- @pDepthStencilAttachment@ /must/ not have the value+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'+--+-- - If @pDepthStencilResolveAttachment@ is not @NULL@ and does not have+-- the value 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',+-- @depthResolveMode@ and @stencilResolveMode@ /must/ not both be+-- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE'+--+-- - If @pDepthStencilResolveAttachment@ is not @NULL@ and does not have+-- the value 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',+-- @pDepthStencilAttachment@ /must/ not have a sample count of+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- - If @pDepthStencilResolveAttachment@ is not @NULL@ and does not have+-- the value 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',+-- @pDepthStencilResolveAttachment@ /must/ have a sample count of+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'+--+-- - If @pDepthStencilResolveAttachment@ is not @NULL@ and does not have+-- the value 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'+-- then it /must/ have a format whose features contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'+--+-- - If the 'Graphics.Vulkan.Core10.Enums.Format.Format' of+-- @pDepthStencilResolveAttachment@ has a depth component, then the+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' of+-- @pDepthStencilAttachment@ /must/ have a depth component with the+-- same number of bits and numerical type+--+-- - If the 'Graphics.Vulkan.Core10.Enums.Format.Format' of+-- @pDepthStencilResolveAttachment@ has a stencil component, then the+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' of+-- @pDepthStencilAttachment@ /must/ have a stencil component with the+-- same number of bits and numerical type+--+-- - The value of @depthResolveMode@ /must/ be one of the bits set in+-- 'PhysicalDeviceDepthStencilResolveProperties'::@supportedDepthResolveModes@+-- or+-- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE'+--+-- - The value of @stencilResolveMode@ /must/ be one of the bits set in+-- 'PhysicalDeviceDepthStencilResolveProperties'::@supportedStencilResolveModes@+-- or+-- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE'+--+-- - If the 'Graphics.Vulkan.Core10.Enums.Format.Format' of+-- @pDepthStencilResolveAttachment@ has both depth and stencil+-- components,+-- 'PhysicalDeviceDepthStencilResolveProperties'::@independentResolve@+-- is 'Graphics.Vulkan.Core10.BaseType.FALSE', and+-- 'PhysicalDeviceDepthStencilResolveProperties'::@independentResolveNone@+-- is 'Graphics.Vulkan.Core10.BaseType.FALSE', then the values of+-- @depthResolveMode@ and @stencilResolveMode@ /must/ be identical+--+-- - If the 'Graphics.Vulkan.Core10.Enums.Format.Format' of+-- @pDepthStencilResolveAttachment@ has both depth and stencil+-- components,+-- 'PhysicalDeviceDepthStencilResolveProperties'::@independentResolve@+-- is 'Graphics.Vulkan.Core10.BaseType.FALSE' and+-- 'PhysicalDeviceDepthStencilResolveProperties'::@independentResolveNone@+-- is 'Graphics.Vulkan.Core10.BaseType.TRUE', then the values of+-- @depthResolveMode@ and @stencilResolveMode@ /must/ be identical or+-- one of them /must/ be+-- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE'+--+-- - @depthResolveMode@ /must/ be a valid+-- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits'+-- value+--+-- - @stencilResolveMode@ /must/ be a valid+-- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits'+-- value+--+-- - If @pDepthStencilResolveAttachment@ is not @NULL@,+-- @pDepthStencilResolveAttachment@ /must/ be a valid pointer to a+-- valid+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentReference2'+-- structure+--+-- = See Also+--+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentReference2',+-- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data SubpassDescriptionDepthStencilResolve = SubpassDescriptionDepthStencilResolve+ { -- | @depthResolveMode@ is a bitmask of+ -- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits'+ -- describing the depth resolve mode.+ depthResolveMode :: ResolveModeFlagBits+ , -- | @stencilResolveMode@ is a bitmask of+ -- 'Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits'+ -- describing the stencil resolve mode.+ stencilResolveMode :: ResolveModeFlagBits+ , -- | @pDepthStencilResolveAttachment@ is an optional+ -- 'Graphics.Vulkan.Core10.Pass.AttachmentReference' structure defining the+ -- depth\/stencil resolve attachment for this subpass and its layout.+ depthStencilResolveAttachment :: Maybe (SomeStruct AttachmentReference2)+ }+ deriving (Typeable)+deriving instance Show SubpassDescriptionDepthStencilResolve++instance ToCStruct SubpassDescriptionDepthStencilResolve where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SubpassDescriptionDepthStencilResolve{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr ResolveModeFlagBits)) (depthResolveMode)+ lift $ poke ((p `plusPtr` 20 :: Ptr ResolveModeFlagBits)) (stencilResolveMode)+ pDepthStencilResolveAttachment'' <- case (depthStencilResolveAttachment) of+ Nothing -> pure nullPtr+ Just j -> ContT @_ @_ @(Ptr (AttachmentReference2 '[])) $ \cont -> withSomeCStruct @AttachmentReference2 (j) (cont . castPtr)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (AttachmentReference2 _)))) pDepthStencilResolveAttachment''+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ResolveModeFlagBits)) (zero)+ poke ((p `plusPtr` 20 :: Ptr ResolveModeFlagBits)) (zero)+ f++instance FromCStruct SubpassDescriptionDepthStencilResolve where+ peekCStruct p = do+ depthResolveMode <- peek @ResolveModeFlagBits ((p `plusPtr` 16 :: Ptr ResolveModeFlagBits))+ stencilResolveMode <- peek @ResolveModeFlagBits ((p `plusPtr` 20 :: Ptr ResolveModeFlagBits))+ pDepthStencilResolveAttachment <- peek @(Ptr (AttachmentReference2 _)) ((p `plusPtr` 24 :: Ptr (Ptr (AttachmentReference2 a))))+ pDepthStencilResolveAttachment' <- maybePeek (\j -> peekSomeCStruct (forgetExtensions (j))) pDepthStencilResolveAttachment+ pure $ SubpassDescriptionDepthStencilResolve+ depthResolveMode stencilResolveMode pDepthStencilResolveAttachment'++instance Zero SubpassDescriptionDepthStencilResolve where+ zero = SubpassDescriptionDepthStencilResolve+ zero+ zero+ Nothing+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_depth_stencil_resolve.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve ( PhysicalDeviceDepthStencilResolveProperties+ , SubpassDescriptionDepthStencilResolve+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceDepthStencilResolveProperties++instance ToCStruct PhysicalDeviceDepthStencilResolveProperties+instance Show PhysicalDeviceDepthStencilResolveProperties++instance FromCStruct PhysicalDeviceDepthStencilResolveProperties+++data SubpassDescriptionDepthStencilResolve++instance ToCStruct SubpassDescriptionDepthStencilResolve+instance Show SubpassDescriptionDepthStencilResolve++instance FromCStruct SubpassDescriptionDepthStencilResolve+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_draw_indirect_count.hs view
@@ -0,0 +1,700 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count ( cmdDrawIndirectCount+ , cmdDrawIndexedIndirectCount+ ) where++import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.Core10.Handles (Buffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdDrawIndexedIndirectCount))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdDrawIndirectCount))+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdDrawIndirectCount+ :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()++-- | vkCmdDrawIndirectCount - Perform an indirect draw with the draw count+-- sourced from a buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded.+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' is the buffer containing+-- draw parameters.+--+-- - @offset@ is the byte offset into+-- 'Graphics.Vulkan.Core10.Handles.Buffer' where parameters begin.+--+-- - @countBuffer@ is the buffer containing the draw count.+--+-- - @countBufferOffset@ is the byte offset into @countBuffer@ where the+-- draw count begins.+--+-- - @maxDrawCount@ specifies the maximum number of draws that will be+-- executed. The actual number of executed draw calls is the minimum of+-- the count specified in @countBuffer@ and @maxDrawCount@.+--+-- - @stride@ is the byte stride between successive sets of draw+-- parameters.+--+-- = Description+--+-- 'cmdDrawIndirectCount' behaves similarly to+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect' except+-- that the draw count is read by the device from a buffer during+-- execution. The command will read an unsigned 32-bit integer from+-- @countBuffer@ located at @countBufferOffset@ and use this as the draw+-- count.+--+-- == Valid Usage+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' as a result of+-- this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is accessed using+-- atomic operations as a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering, as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'+-- with a reduction mode of either+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+-- or+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+-- as a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering together with minmax filtering,+-- as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.Image' created with a+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- containing+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+-- sampled as a result of this command /must/ only be sampled using a+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+-- of+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--+-- - For each set /n/ that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a descriptor set /must/ have been bound+-- to /n/ at the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for set /n/, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - For each push constant that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a push constant value /must/ have been+-- set for the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for push constants, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - Descriptors in each bound descriptor set, specified via+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',+-- /must/ be valid if they are statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command+--+-- - A valid pipeline /must/ be bound to the pipeline bind point used by+-- this command+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command requires any dynamic state,+-- that state /must/ have been set for+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and done so after+-- any previously bound pipeline with the corresponding state not+-- specified as dynamic+--+-- - There /must/ not have been any calls to dynamic state setting+-- commands for any state not specified as dynamic in the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command, since that pipeline was+-- bound+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used to sample+-- from any 'Graphics.Vulkan.Core10.Handles.Image' with a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' of the type+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY',+-- in any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions with @ImplicitLod@, @Dref@ or @Proj@ in their name, in+-- any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions that includes a LOD bias or any offset values, in any+-- shader stage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a uniform buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a storage buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, any resource accessed by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command /must/ not be a protected+-- resource+--+-- - The current render pass /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>+-- with the 'Graphics.Vulkan.Core10.Handles.RenderPass' member of the+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+-- structure specified when creating the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--+-- - The subpass index of the current render pass /must/ be equal to the+-- @subpass@ member of the+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+-- structure specified when creating the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--+-- - Every input attachment used by the current subpass /must/ be bound+-- to the pipeline via a descriptor set+--+-- - Image subresources used as attachments in the current render pass+-- /must/ not be accessed in any way other than as an attachment by+-- this command.+--+-- - If the draw is recorded in a render pass instance with multiview+-- enabled, the maximum instance index /must/ be less than or equal to+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--+-- - If the bound graphics pipeline was created with+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@+-- set to 'Graphics.Vulkan.Core10.BaseType.TRUE' and the current+-- subpass has a depth\/stencil attachment, then that attachment /must/+-- have been created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+-- bit set+--+-- - All vertex input bindings accessed via vertex input variables+-- declared in the vertex shader entry point’s interface /must/ have+-- valid buffers bound+--+-- - For a given vertex buffer binding, any attribute data fetched /must/+-- be entirely contained within the corresponding vertex buffer+-- binding, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is non-sparse then it+-- /must/ be bound completely and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ have been created+-- with the+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+-- bit set+--+-- - @offset@ /must/ be a multiple of @4@+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ not be a+-- protected command buffer+--+-- - If @countBuffer@ is non-sparse then it /must/ be bound completely+-- and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - @countBuffer@ /must/ have been created with the+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+-- bit set+--+-- - @countBufferOffset@ /must/ be a multiple of @4@+--+-- - The count stored in @countBuffer@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@+--+-- - @stride@ /must/ be a multiple of @4@ and /must/ be greater than or+-- equal to+-- sizeof('Graphics.Vulkan.Core10.OtherTypes.DrawIndirectCommand')+--+-- - If @maxDrawCount@ is greater than or equal to @1@, (@stride@ ×+-- (@maxDrawCount@ - 1) + @offset@ ++-- sizeof('Graphics.Vulkan.Core10.OtherTypes.DrawIndirectCommand'))+-- /must/ be less than or equal to the size of+-- 'Graphics.Vulkan.Core10.Handles.Buffer'+--+-- - If the count stored in @countBuffer@ is equal to @1@, (@offset@ ++-- sizeof('Graphics.Vulkan.Core10.OtherTypes.DrawIndirectCommand'))+-- /must/ be less than or equal to the size of+-- 'Graphics.Vulkan.Core10.Handles.Buffer'+--+-- - If the count stored in @countBuffer@ is greater than @1@, (@stride@+-- × (@drawCount@ - 1) + @offset@ ++-- sizeof('Graphics.Vulkan.Core10.OtherTypes.DrawIndirectCommand'))+-- /must/ be less than or equal to the size of+-- 'Graphics.Vulkan.Core10.Handles.Buffer'+--+-- - If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectCount drawIndirectCount>+-- is not enabled this function /must/ not be used+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - @countBuffer@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- - Each of 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and @countBuffer@+-- /must/ have been created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+cmdDrawIndirectCount :: CommandBuffer -> Buffer -> ("offset" ::: DeviceSize) -> ("countBuffer" ::: Buffer) -> ("countBufferOffset" ::: DeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()+cmdDrawIndirectCount commandBuffer buffer offset countBuffer countBufferOffset maxDrawCount stride = do+ let vkCmdDrawIndirectCount' = mkVkCmdDrawIndirectCount (pVkCmdDrawIndirectCount (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdDrawIndirectCount' (commandBufferHandle (commandBuffer)) (buffer) (offset) (countBuffer) (countBufferOffset) (maxDrawCount) (stride)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdDrawIndexedIndirectCount+ :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()++-- | vkCmdDrawIndexedIndirectCount - Perform an indexed indirect draw with+-- the draw count sourced from a buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded.+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' is the buffer containing+-- draw parameters.+--+-- - @offset@ is the byte offset into+-- 'Graphics.Vulkan.Core10.Handles.Buffer' where parameters begin.+--+-- - @countBuffer@ is the buffer containing the draw count.+--+-- - @countBufferOffset@ is the byte offset into @countBuffer@ where the+-- draw count begins.+--+-- - @maxDrawCount@ specifies the maximum number of draws that will be+-- executed. The actual number of executed draw calls is the minimum of+-- the count specified in @countBuffer@ and @maxDrawCount@.+--+-- - @stride@ is the byte stride between successive sets of draw+-- parameters.+--+-- = Description+--+-- 'cmdDrawIndexedIndirectCount' behaves similarly to+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect'+-- except that the draw count is read by the device from a buffer during+-- execution. The command will read an unsigned 32-bit integer from+-- @countBuffer@ located at @countBufferOffset@ and use this as the draw+-- count.+--+-- == Valid Usage+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' as a result of+-- this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is accessed using+-- atomic operations as a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering, as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'+-- with a reduction mode of either+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+-- or+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+-- as a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering together with minmax filtering,+-- as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.Image' created with a+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- containing+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+-- sampled as a result of this command /must/ only be sampled using a+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+-- of+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--+-- - For each set /n/ that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a descriptor set /must/ have been bound+-- to /n/ at the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for set /n/, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - For each push constant that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a push constant value /must/ have been+-- set for the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for push constants, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - Descriptors in each bound descriptor set, specified via+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',+-- /must/ be valid if they are statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command+--+-- - A valid pipeline /must/ be bound to the pipeline bind point used by+-- this command+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command requires any dynamic state,+-- that state /must/ have been set for+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and done so after+-- any previously bound pipeline with the corresponding state not+-- specified as dynamic+--+-- - There /must/ not have been any calls to dynamic state setting+-- commands for any state not specified as dynamic in the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command, since that pipeline was+-- bound+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used to sample+-- from any 'Graphics.Vulkan.Core10.Handles.Image' with a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' of the type+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY',+-- in any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions with @ImplicitLod@, @Dref@ or @Proj@ in their name, in+-- any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions that includes a LOD bias or any offset values, in any+-- shader stage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a uniform buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a storage buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, any resource accessed by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command /must/ not be a protected+-- resource+--+-- - The current render pass /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>+-- with the 'Graphics.Vulkan.Core10.Handles.RenderPass' member of the+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+-- structure specified when creating the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--+-- - The subpass index of the current render pass /must/ be equal to the+-- @subpass@ member of the+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+-- structure specified when creating the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--+-- - Every input attachment used by the current subpass /must/ be bound+-- to the pipeline via a descriptor set+--+-- - Image subresources used as attachments in the current render pass+-- /must/ not be accessed in any way other than as an attachment by+-- this command.+--+-- - If the draw is recorded in a render pass instance with multiview+-- enabled, the maximum instance index /must/ be less than or equal to+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--+-- - If the bound graphics pipeline was created with+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@+-- set to 'Graphics.Vulkan.Core10.BaseType.TRUE' and the current+-- subpass has a depth\/stencil attachment, then that attachment /must/+-- have been created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+-- bit set+--+-- - All vertex input bindings accessed via vertex input variables+-- declared in the vertex shader entry point’s interface /must/ have+-- valid buffers bound+--+-- - For a given vertex buffer binding, any attribute data fetched /must/+-- be entirely contained within the corresponding vertex buffer+-- binding, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is non-sparse then it+-- /must/ be bound completely and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ have been created+-- with the+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+-- bit set+--+-- - @offset@ /must/ be a multiple of @4@+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ not be a+-- protected command buffer+--+-- - If @countBuffer@ is non-sparse then it /must/ be bound completely+-- and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - @countBuffer@ /must/ have been created with the+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+-- bit set+--+-- - @countBufferOffset@ /must/ be a multiple of @4@+--+-- - The count stored in @countBuffer@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@+--+-- - @stride@ /must/ be a multiple of @4@ and /must/ be greater than or+-- equal to+-- sizeof('Graphics.Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand')+--+-- - If @maxDrawCount@ is greater than or equal to @1@, (@stride@ ×+-- (@maxDrawCount@ - 1) + @offset@ ++-- sizeof('Graphics.Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand'))+-- /must/ be less than or equal to the size of+-- 'Graphics.Vulkan.Core10.Handles.Buffer'+--+-- - If count stored in @countBuffer@ is equal to @1@, (@offset@ ++-- sizeof('Graphics.Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand'))+-- /must/ be less than or equal to the size of+-- 'Graphics.Vulkan.Core10.Handles.Buffer'+--+-- - If count stored in @countBuffer@ is greater than @1@, (@stride@ ×+-- (@drawCount@ - 1) + @offset@ ++-- sizeof('Graphics.Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand'))+-- /must/ be less than or equal to the size of+-- 'Graphics.Vulkan.Core10.Handles.Buffer'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - @countBuffer@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- - Each of 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and @countBuffer@+-- /must/ have been created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+cmdDrawIndexedIndirectCount :: CommandBuffer -> Buffer -> ("offset" ::: DeviceSize) -> ("countBuffer" ::: Buffer) -> ("countBufferOffset" ::: DeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()+cmdDrawIndexedIndirectCount commandBuffer buffer offset countBuffer countBufferOffset maxDrawCount stride = do+ let vkCmdDrawIndexedIndirectCount' = mkVkCmdDrawIndexedIndirectCount (pVkCmdDrawIndexedIndirectCount (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdDrawIndexedIndirectCount' (commandBufferHandle (commandBuffer)) (buffer) (offset) (countBuffer) (countBufferOffset) (maxDrawCount) (stride)+ pure $ ()+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_driver_properties.hs view
@@ -0,0 +1,178 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties ( ConformanceVersion(..)+ , PhysicalDeviceDriverProperties(..)+ , StructureType(..)+ , DriverId(..)+ , MAX_DRIVER_NAME_SIZE+ , pattern MAX_DRIVER_NAME_SIZE+ , MAX_DRIVER_INFO_SIZE+ , pattern MAX_DRIVER_INFO_SIZE+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.ByteString (packCString)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Word (Word8)+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import qualified Data.Vector.Storable.Sized (Vector)+import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)+import Graphics.Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)+import Graphics.Vulkan.Core12.Enums.DriverId (DriverId)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.APIConstants (MAX_DRIVER_INFO_SIZE)+import Graphics.Vulkan.Core10.APIConstants (MAX_DRIVER_NAME_SIZE)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES))+import Graphics.Vulkan.Core12.Enums.DriverId (DriverId(..))+import Graphics.Vulkan.Core10.APIConstants (MAX_DRIVER_INFO_SIZE)+import Graphics.Vulkan.Core10.APIConstants (MAX_DRIVER_NAME_SIZE)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+import Graphics.Vulkan.Core10.APIConstants (pattern MAX_DRIVER_INFO_SIZE)+import Graphics.Vulkan.Core10.APIConstants (pattern MAX_DRIVER_NAME_SIZE)+-- | VkConformanceVersion - Structure containing the conformance test suite+-- version the implementation is compliant with+--+-- = See Also+--+-- 'PhysicalDeviceDriverProperties',+-- 'Graphics.Vulkan.Core12.PhysicalDeviceVulkan12Properties'+data ConformanceVersion = ConformanceVersion+ { -- | @major@ is the major version number of the conformance test suite.+ major :: Word8+ , -- | @minor@ is the minor version number of the conformance test suite.+ minor :: Word8+ , -- | @subminor@ is the subminor version number of the conformance test suite.+ subminor :: Word8+ , -- | @patch@ is the patch version number of the conformance test suite.+ patch :: Word8+ }+ deriving (Typeable)+deriving instance Show ConformanceVersion++instance ToCStruct ConformanceVersion where+ withCStruct x f = allocaBytesAligned 4 1 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ConformanceVersion{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word8)) (major)+ poke ((p `plusPtr` 1 :: Ptr Word8)) (minor)+ poke ((p `plusPtr` 2 :: Ptr Word8)) (subminor)+ poke ((p `plusPtr` 3 :: Ptr Word8)) (patch)+ f+ cStructSize = 4+ cStructAlignment = 1+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word8)) (zero)+ poke ((p `plusPtr` 1 :: Ptr Word8)) (zero)+ poke ((p `plusPtr` 2 :: Ptr Word8)) (zero)+ poke ((p `plusPtr` 3 :: Ptr Word8)) (zero)+ f++instance FromCStruct ConformanceVersion where+ peekCStruct p = do+ major <- peek @Word8 ((p `plusPtr` 0 :: Ptr Word8))+ minor <- peek @Word8 ((p `plusPtr` 1 :: Ptr Word8))+ subminor <- peek @Word8 ((p `plusPtr` 2 :: Ptr Word8))+ patch <- peek @Word8 ((p `plusPtr` 3 :: Ptr Word8))+ pure $ ConformanceVersion+ major minor subminor patch++instance Storable ConformanceVersion where+ sizeOf ~_ = 4+ alignment ~_ = 1+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ConformanceVersion where+ zero = ConformanceVersion+ zero+ zero+ zero+ zero+++-- | VkPhysicalDeviceDriverProperties - Structure containing driver+-- identification information+--+-- = Description+--+-- @driverID@ /must/ be immutable for a given driver across instances,+-- processes, driver versions, and system reboots.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'ConformanceVersion', 'Graphics.Vulkan.Core12.Enums.DriverId.DriverId',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceDriverProperties = PhysicalDeviceDriverProperties+ { -- | @driverID@ is a unique identifier for the driver of the physical device.+ driverID :: DriverId+ , -- | @driverName@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.MAX_DRIVER_NAME_SIZE_KHR' @char@+ -- containing a null-terminated UTF-8 string which is the name of the+ -- driver.+ driverName :: ByteString+ , -- | @driverInfo@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.MAX_DRIVER_INFO_SIZE_KHR' @char@+ -- containing a null-terminated UTF-8 string with additional information+ -- about the driver.+ driverInfo :: ByteString+ , -- | 'ConformanceVersion' is the version of the Vulkan conformance test this+ -- driver is conformant against (see 'ConformanceVersion').+ conformanceVersion :: ConformanceVersion+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceDriverProperties++instance ToCStruct PhysicalDeviceDriverProperties where+ withCStruct x f = allocaBytesAligned 536 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceDriverProperties{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr DriverId)) (driverID)+ lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_NAME_SIZE CChar))) (driverName)+ lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_INFO_SIZE CChar))) (driverInfo)+ ContT $ pokeCStruct ((p `plusPtr` 532 :: Ptr ConformanceVersion)) (conformanceVersion) . ($ ())+ lift $ f+ cStructSize = 536+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr DriverId)) (zero)+ lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_NAME_SIZE CChar))) (mempty)+ lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_INFO_SIZE CChar))) (mempty)+ ContT $ pokeCStruct ((p `plusPtr` 532 :: Ptr ConformanceVersion)) (zero) . ($ ())+ lift $ f++instance FromCStruct PhysicalDeviceDriverProperties where+ peekCStruct p = do+ driverID <- peek @DriverId ((p `plusPtr` 16 :: Ptr DriverId))+ driverName <- packCString (lowerArrayPtr ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_NAME_SIZE CChar))))+ driverInfo <- packCString (lowerArrayPtr ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DRIVER_INFO_SIZE CChar))))+ conformanceVersion <- peekCStruct @ConformanceVersion ((p `plusPtr` 532 :: Ptr ConformanceVersion))+ pure $ PhysicalDeviceDriverProperties+ driverID driverName driverInfo conformanceVersion++instance Zero PhysicalDeviceDriverProperties where+ zero = PhysicalDeviceDriverProperties+ zero+ mempty+ mempty+ zero+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_driver_properties.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties ( ConformanceVersion+ , PhysicalDeviceDriverProperties+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ConformanceVersion++instance ToCStruct ConformanceVersion+instance Show ConformanceVersion++instance FromCStruct ConformanceVersion+++data PhysicalDeviceDriverProperties++instance ToCStruct PhysicalDeviceDriverProperties+instance Show PhysicalDeviceDriverProperties++instance FromCStruct PhysicalDeviceDriverProperties+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_image_format_list.hs view
@@ -0,0 +1,111 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list ( ImageFormatListCreateInfo(..)+ , StructureType(..)+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.Enums.Format (Format)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- | VkImageFormatListCreateInfo - Specify that an image /can/ be used with a+-- particular set of formats+--+-- = Description+--+-- If @viewFormatCount@ is zero, @pViewFormats@ is ignored and the image is+-- created as if the 'ImageFormatListCreateInfo' structure were not+-- included in the @pNext@ list of+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'.+--+-- == Valid Usage+--+-- - If @viewFormatCount@ is not @0@, all of the formats in the+-- @pViewFormats@ array /must/ be compatible with the format specified+-- in the 'Graphics.Vulkan.Core10.Enums.Format.Format' field of+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo', as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility compatibility table>.+--+-- - If+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- does not contain+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT',+-- @viewFormatCount@ /must/ be @0@ or @1@.+--+-- - If @viewFormatCount@ is not @0@,+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.Enums.Format.Format'+-- /must/ be in @pViewFormats@.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO'+--+-- - If @viewFormatCount@ is not @0@, @pViewFormats@ /must/ be a valid+-- pointer to an array of @viewFormatCount@ valid+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ImageFormatListCreateInfo = ImageFormatListCreateInfo+ { -- | @pViewFormats@ is an array which lists of all formats which /can/ be+ -- used when creating views of this image.+ viewFormats :: Vector Format }+ deriving (Typeable)+deriving instance Show ImageFormatListCreateInfo++instance ToCStruct ImageFormatListCreateInfo where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageFormatListCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (viewFormats)) :: Word32))+ pPViewFormats' <- ContT $ allocaBytesAligned @Format ((Data.Vector.length (viewFormats)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPViewFormats' `plusPtr` (4 * (i)) :: Ptr Format) (e)) (viewFormats)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Format))) (pPViewFormats')+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPViewFormats' <- ContT $ allocaBytesAligned @Format ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPViewFormats' `plusPtr` (4 * (i)) :: Ptr Format) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Format))) (pPViewFormats')+ lift $ f++instance FromCStruct ImageFormatListCreateInfo where+ peekCStruct p = do+ viewFormatCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pViewFormats <- peek @(Ptr Format) ((p `plusPtr` 24 :: Ptr (Ptr Format)))+ pViewFormats' <- generateM (fromIntegral viewFormatCount) (\i -> peek @Format ((pViewFormats `advancePtrBytes` (4 * (i)) :: Ptr Format)))+ pure $ ImageFormatListCreateInfo+ pViewFormats'++instance Zero ImageFormatListCreateInfo where+ zero = ImageFormatListCreateInfo+ mempty+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_image_format_list.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list (ImageFormatListCreateInfo) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ImageFormatListCreateInfo++instance ToCStruct ImageFormatListCreateInfo+instance Show ImageFormatListCreateInfo++instance FromCStruct ImageFormatListCreateInfo+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_imageless_framebuffer.hs view
@@ -0,0 +1,353 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer ( PhysicalDeviceImagelessFramebufferFeatures(..)+ , FramebufferAttachmentsCreateInfo(..)+ , FramebufferAttachmentImageInfo(..)+ , RenderPassAttachmentBeginInfo(..)+ , StructureType(..)+ , FramebufferCreateFlagBits(..)+ , FramebufferCreateFlags+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Enums.Format (Format)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)+import Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)+import Graphics.Vulkan.Core10.Handles (ImageView)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO))+import Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits (FramebufferCreateFlagBits(..))+import Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits (FramebufferCreateFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- | VkPhysicalDeviceImagelessFramebufferFeatures - Structure indicating+-- support for imageless framebuffers+--+-- = Members+--+-- The members of the 'PhysicalDeviceImagelessFramebufferFeatures'+-- structure describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceImagelessFramebufferFeatures' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceImagelessFramebufferFeatures' /can/ also be included in+-- the @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable this feature.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceImagelessFramebufferFeatures = PhysicalDeviceImagelessFramebufferFeatures+ { -- | @imagelessFramebuffer@ indicates that the implementation supports+ -- specifying the image view for attachments at render pass begin time via+ -- 'RenderPassAttachmentBeginInfo'.+ imagelessFramebuffer :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceImagelessFramebufferFeatures++instance ToCStruct PhysicalDeviceImagelessFramebufferFeatures where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceImagelessFramebufferFeatures{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (imagelessFramebuffer))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceImagelessFramebufferFeatures where+ peekCStruct p = do+ imagelessFramebuffer <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceImagelessFramebufferFeatures+ (bool32ToBool imagelessFramebuffer)++instance Storable PhysicalDeviceImagelessFramebufferFeatures where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceImagelessFramebufferFeatures where+ zero = PhysicalDeviceImagelessFramebufferFeatures+ zero+++-- | VkFramebufferAttachmentsCreateInfo - Structure specifying parameters of+-- images that will be used with a framebuffer+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO'+--+-- - If @attachmentImageInfoCount@ is not @0@, @pAttachmentImageInfos@+-- /must/ be a valid pointer to an array of @attachmentImageInfoCount@+-- valid 'FramebufferAttachmentImageInfo' structures+--+-- = See Also+--+-- 'FramebufferAttachmentImageInfo',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data FramebufferAttachmentsCreateInfo = FramebufferAttachmentsCreateInfo+ { -- | @pAttachmentImageInfos@ is a pointer to an array of+ -- 'FramebufferAttachmentImageInfo' instances, each of which describes a+ -- number of parameters of the corresponding attachment in a render pass+ -- instance.+ attachmentImageInfos :: Vector FramebufferAttachmentImageInfo }+ deriving (Typeable)+deriving instance Show FramebufferAttachmentsCreateInfo++instance ToCStruct FramebufferAttachmentsCreateInfo where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p FramebufferAttachmentsCreateInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (attachmentImageInfos)) :: Word32))+ pPAttachmentImageInfos' <- ContT $ allocaBytesAligned @FramebufferAttachmentImageInfo ((Data.Vector.length (attachmentImageInfos)) * 48) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAttachmentImageInfos' `plusPtr` (48 * (i)) :: Ptr FramebufferAttachmentImageInfo) (e) . ($ ())) (attachmentImageInfos)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr FramebufferAttachmentImageInfo))) (pPAttachmentImageInfos')+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPAttachmentImageInfos' <- ContT $ allocaBytesAligned @FramebufferAttachmentImageInfo ((Data.Vector.length (mempty)) * 48) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAttachmentImageInfos' `plusPtr` (48 * (i)) :: Ptr FramebufferAttachmentImageInfo) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr FramebufferAttachmentImageInfo))) (pPAttachmentImageInfos')+ lift $ f++instance FromCStruct FramebufferAttachmentsCreateInfo where+ peekCStruct p = do+ attachmentImageInfoCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pAttachmentImageInfos <- peek @(Ptr FramebufferAttachmentImageInfo) ((p `plusPtr` 24 :: Ptr (Ptr FramebufferAttachmentImageInfo)))+ pAttachmentImageInfos' <- generateM (fromIntegral attachmentImageInfoCount) (\i -> peekCStruct @FramebufferAttachmentImageInfo ((pAttachmentImageInfos `advancePtrBytes` (48 * (i)) :: Ptr FramebufferAttachmentImageInfo)))+ pure $ FramebufferAttachmentsCreateInfo+ pAttachmentImageInfos'++instance Zero FramebufferAttachmentsCreateInfo where+ zero = FramebufferAttachmentsCreateInfo+ mempty+++-- | VkFramebufferAttachmentImageInfo - Structure specifying parameters of an+-- image that will be used with a framebuffer+--+-- = Description+--+-- Images that /can/ be used with the framebuffer when beginning a render+-- pass, as specified by 'RenderPassAttachmentBeginInfo', /must/ be created+-- with parameters that are identical to those specified here.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO'+--+-- - @pNext@ /must/ be @NULL@+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits'+-- values+--+-- - @usage@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits'+-- values+--+-- - @usage@ /must/ not be @0@+--+-- - If @viewFormatCount@ is not @0@, @pViewFormats@ /must/ be a valid+-- pointer to an array of @viewFormatCount@ valid+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'FramebufferAttachmentsCreateInfo',+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data FramebufferAttachmentImageInfo = FramebufferAttachmentImageInfo+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits',+ -- matching the value of+ -- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+ -- used to create an image that will be used with this framebuffer.+ flags :: ImageCreateFlags+ , -- | @usage@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits',+ -- matching the value of+ -- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@usage@ used to create+ -- an image used with this framebuffer.+ usage :: ImageUsageFlags+ , -- | @width@ is the width of the image view used for rendering.+ width :: Word32+ , -- | @height@ is the height of the image view used for rendering.+ height :: Word32+ , -- No documentation found for Nested "VkFramebufferAttachmentImageInfo" "layerCount"+ layerCount :: Word32+ , -- | @pViewFormats@ is an array which lists of all formats which /can/ be+ -- used when creating views of the image, matching the value of+ -- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::pViewFormats+ -- used to create an image used with this framebuffer.+ viewFormats :: Vector Format+ }+ deriving (Typeable)+deriving instance Show FramebufferAttachmentImageInfo++instance ToCStruct FramebufferAttachmentImageInfo where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p FramebufferAttachmentImageInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr ImageCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr ImageUsageFlags)) (usage)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (width)+ lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (height)+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (layerCount)+ lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (viewFormats)) :: Word32))+ pPViewFormats' <- ContT $ allocaBytesAligned @Format ((Data.Vector.length (viewFormats)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPViewFormats' `plusPtr` (4 * (i)) :: Ptr Format) (e)) (viewFormats)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Format))) (pPViewFormats')+ lift $ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 20 :: Ptr ImageUsageFlags)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+ pPViewFormats' <- ContT $ allocaBytesAligned @Format ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPViewFormats' `plusPtr` (4 * (i)) :: Ptr Format) (e)) (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Format))) (pPViewFormats')+ lift $ f++instance FromCStruct FramebufferAttachmentImageInfo where+ peekCStruct p = do+ flags <- peek @ImageCreateFlags ((p `plusPtr` 16 :: Ptr ImageCreateFlags))+ usage <- peek @ImageUsageFlags ((p `plusPtr` 20 :: Ptr ImageUsageFlags))+ width <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ height <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+ layerCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ viewFormatCount <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))+ pViewFormats <- peek @(Ptr Format) ((p `plusPtr` 40 :: Ptr (Ptr Format)))+ pViewFormats' <- generateM (fromIntegral viewFormatCount) (\i -> peek @Format ((pViewFormats `advancePtrBytes` (4 * (i)) :: Ptr Format)))+ pure $ FramebufferAttachmentImageInfo+ flags usage width height layerCount pViewFormats'++instance Zero FramebufferAttachmentImageInfo where+ zero = FramebufferAttachmentImageInfo+ zero+ zero+ zero+ zero+ zero+ mempty+++-- | VkRenderPassAttachmentBeginInfo - Structure specifying images to be used+-- as framebuffer attachments+--+-- == Valid Usage+--+-- - Each element of @pAttachments@ /must/ only specify a single mip+-- level+--+-- - Each element of @pAttachments@ /must/ have been created with the+-- identity swizzle+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO'+--+-- - If @attachmentCount@ is not @0@, @pAttachments@ /must/ be a valid+-- pointer to an array of @attachmentCount@ valid+-- 'Graphics.Vulkan.Core10.Handles.ImageView' handles+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.ImageView',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data RenderPassAttachmentBeginInfo = RenderPassAttachmentBeginInfo+ { -- | @pAttachments@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.Handles.ImageView' handles, each of which will+ -- be used as the corresponding attachment in the render pass instance.+ attachments :: Vector ImageView }+ deriving (Typeable)+deriving instance Show RenderPassAttachmentBeginInfo++instance ToCStruct RenderPassAttachmentBeginInfo where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p RenderPassAttachmentBeginInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (attachments)) :: Word32))+ pPAttachments' <- ContT $ allocaBytesAligned @ImageView ((Data.Vector.length (attachments)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPAttachments' `plusPtr` (8 * (i)) :: Ptr ImageView) (e)) (attachments)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ImageView))) (pPAttachments')+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPAttachments' <- ContT $ allocaBytesAligned @ImageView ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPAttachments' `plusPtr` (8 * (i)) :: Ptr ImageView) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ImageView))) (pPAttachments')+ lift $ f++instance FromCStruct RenderPassAttachmentBeginInfo where+ peekCStruct p = do+ attachmentCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pAttachments <- peek @(Ptr ImageView) ((p `plusPtr` 24 :: Ptr (Ptr ImageView)))+ pAttachments' <- generateM (fromIntegral attachmentCount) (\i -> peek @ImageView ((pAttachments `advancePtrBytes` (8 * (i)) :: Ptr ImageView)))+ pure $ RenderPassAttachmentBeginInfo+ pAttachments'++instance Zero RenderPassAttachmentBeginInfo where+ zero = RenderPassAttachmentBeginInfo+ mempty+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_imageless_framebuffer.hs-boot view
@@ -0,0 +1,41 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer ( FramebufferAttachmentImageInfo+ , FramebufferAttachmentsCreateInfo+ , PhysicalDeviceImagelessFramebufferFeatures+ , RenderPassAttachmentBeginInfo+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data FramebufferAttachmentImageInfo++instance ToCStruct FramebufferAttachmentImageInfo+instance Show FramebufferAttachmentImageInfo++instance FromCStruct FramebufferAttachmentImageInfo+++data FramebufferAttachmentsCreateInfo++instance ToCStruct FramebufferAttachmentsCreateInfo+instance Show FramebufferAttachmentsCreateInfo++instance FromCStruct FramebufferAttachmentsCreateInfo+++data PhysicalDeviceImagelessFramebufferFeatures++instance ToCStruct PhysicalDeviceImagelessFramebufferFeatures+instance Show PhysicalDeviceImagelessFramebufferFeatures++instance FromCStruct PhysicalDeviceImagelessFramebufferFeatures+++data RenderPassAttachmentBeginInfo++instance ToCStruct RenderPassAttachmentBeginInfo+instance Show RenderPassAttachmentBeginInfo++instance FromCStruct RenderPassAttachmentBeginInfo+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_separate_depth_stencil_layouts.hs view
@@ -0,0 +1,211 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts ( PhysicalDeviceSeparateDepthStencilLayoutsFeatures(..)+ , AttachmentReferenceStencilLayout(..)+ , AttachmentDescriptionStencilLayout(..)+ , ImageLayout(..)+ , StructureType(..)+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES))+import Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- | VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures - Structure+-- describing whether the implementation can do depth and stencil image+-- barriers separately+--+-- = Members+--+-- The members of the 'PhysicalDeviceSeparateDepthStencilLayoutsFeatures'+-- structure describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceSeparateDepthStencilLayoutsFeatures' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceSeparateDepthStencilLayoutsFeatures' /can/ also be+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to enable the feature.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceSeparateDepthStencilLayoutsFeatures = PhysicalDeviceSeparateDepthStencilLayoutsFeatures+ { -- | @separateDepthStencilLayouts@ indicates whether the implementation+ -- supports a 'Graphics.Vulkan.Core10.OtherTypes.ImageMemoryBarrier' for a+ -- depth\/stencil image with only one of+ -- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT'+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'+ -- set, and whether+ -- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',+ -- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',+ -- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'+ -- can be used.+ separateDepthStencilLayouts :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceSeparateDepthStencilLayoutsFeatures++instance ToCStruct PhysicalDeviceSeparateDepthStencilLayoutsFeatures where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceSeparateDepthStencilLayoutsFeatures{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (separateDepthStencilLayouts))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceSeparateDepthStencilLayoutsFeatures where+ peekCStruct p = do+ separateDepthStencilLayouts <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceSeparateDepthStencilLayoutsFeatures+ (bool32ToBool separateDepthStencilLayouts)++instance Storable PhysicalDeviceSeparateDepthStencilLayoutsFeatures where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceSeparateDepthStencilLayoutsFeatures where+ zero = PhysicalDeviceSeparateDepthStencilLayoutsFeatures+ zero+++-- | VkAttachmentReferenceStencilLayout - Structure specifying an attachment+-- description+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data AttachmentReferenceStencilLayout = AttachmentReferenceStencilLayout+ { -- | @stencilLayout@ /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+ stencilLayout :: ImageLayout }+ deriving (Typeable)+deriving instance Show AttachmentReferenceStencilLayout++instance ToCStruct AttachmentReferenceStencilLayout where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p AttachmentReferenceStencilLayout{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ImageLayout)) (stencilLayout)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ImageLayout)) (zero)+ f++instance FromCStruct AttachmentReferenceStencilLayout where+ peekCStruct p = do+ stencilLayout <- peek @ImageLayout ((p `plusPtr` 16 :: Ptr ImageLayout))+ pure $ AttachmentReferenceStencilLayout+ stencilLayout++instance Storable AttachmentReferenceStencilLayout where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AttachmentReferenceStencilLayout where+ zero = AttachmentReferenceStencilLayout+ zero+++-- | VkAttachmentDescriptionStencilLayout - Structure specifying an+-- attachment description+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data AttachmentDescriptionStencilLayout = AttachmentDescriptionStencilLayout+ { -- | @stencilInitialLayout@ /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+ stencilInitialLayout :: ImageLayout+ , -- | @stencilFinalLayout@ /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+ stencilFinalLayout :: ImageLayout+ }+ deriving (Typeable)+deriving instance Show AttachmentDescriptionStencilLayout++instance ToCStruct AttachmentDescriptionStencilLayout where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p AttachmentDescriptionStencilLayout{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ImageLayout)) (stencilInitialLayout)+ poke ((p `plusPtr` 20 :: Ptr ImageLayout)) (stencilFinalLayout)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ImageLayout)) (zero)+ poke ((p `plusPtr` 20 :: Ptr ImageLayout)) (zero)+ f++instance FromCStruct AttachmentDescriptionStencilLayout where+ peekCStruct p = do+ stencilInitialLayout <- peek @ImageLayout ((p `plusPtr` 16 :: Ptr ImageLayout))+ stencilFinalLayout <- peek @ImageLayout ((p `plusPtr` 20 :: Ptr ImageLayout))+ pure $ AttachmentDescriptionStencilLayout+ stencilInitialLayout stencilFinalLayout++instance Storable AttachmentDescriptionStencilLayout where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AttachmentDescriptionStencilLayout where+ zero = AttachmentDescriptionStencilLayout+ zero+ zero+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_separate_depth_stencil_layouts.hs-boot view
@@ -0,0 +1,32 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts ( AttachmentDescriptionStencilLayout+ , AttachmentReferenceStencilLayout+ , PhysicalDeviceSeparateDepthStencilLayoutsFeatures+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data AttachmentDescriptionStencilLayout++instance ToCStruct AttachmentDescriptionStencilLayout+instance Show AttachmentDescriptionStencilLayout++instance FromCStruct AttachmentDescriptionStencilLayout+++data AttachmentReferenceStencilLayout++instance ToCStruct AttachmentReferenceStencilLayout+instance Show AttachmentReferenceStencilLayout++instance FromCStruct AttachmentReferenceStencilLayout+++data PhysicalDeviceSeparateDepthStencilLayoutsFeatures++instance ToCStruct PhysicalDeviceSeparateDepthStencilLayoutsFeatures+instance Show PhysicalDeviceSeparateDepthStencilLayoutsFeatures++instance FromCStruct PhysicalDeviceSeparateDepthStencilLayoutsFeatures+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_shader_atomic_int64.hs view
@@ -0,0 +1,81 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64 ( PhysicalDeviceShaderAtomicInt64Features(..)+ , StructureType(..)+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- | VkPhysicalDeviceShaderAtomicInt64Features - Structure describing+-- features supported by VK_KHR_shader_atomic_int64+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceShaderAtomicInt64Features = PhysicalDeviceShaderAtomicInt64Features+ { -- | @shaderBufferInt64Atomics@ indicates whether shaders /can/ support+ -- 64-bit unsigned and signed integer atomic operations on buffers.+ shaderBufferInt64Atomics :: Bool+ , -- | @shaderSharedInt64Atomics@ indicates whether shaders /can/ support+ -- 64-bit unsigned and signed integer atomic operations on shared memory.+ shaderSharedInt64Atomics :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceShaderAtomicInt64Features++instance ToCStruct PhysicalDeviceShaderAtomicInt64Features where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceShaderAtomicInt64Features{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderBufferInt64Atomics))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (shaderSharedInt64Atomics))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceShaderAtomicInt64Features where+ peekCStruct p = do+ shaderBufferInt64Atomics <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ shaderSharedInt64Atomics <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ pure $ PhysicalDeviceShaderAtomicInt64Features+ (bool32ToBool shaderBufferInt64Atomics) (bool32ToBool shaderSharedInt64Atomics)++instance Storable PhysicalDeviceShaderAtomicInt64Features where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceShaderAtomicInt64Features where+ zero = PhysicalDeviceShaderAtomicInt64Features+ zero+ zero+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_shader_atomic_int64.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64 (PhysicalDeviceShaderAtomicInt64Features) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceShaderAtomicInt64Features++instance ToCStruct PhysicalDeviceShaderAtomicInt64Features+instance Show PhysicalDeviceShaderAtomicInt64Features++instance FromCStruct PhysicalDeviceShaderAtomicInt64Features+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_shader_float16_int8.hs view
@@ -0,0 +1,94 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8 ( PhysicalDeviceShaderFloat16Int8Features(..)+ , StructureType(..)+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- | VkPhysicalDeviceShaderFloat16Int8Features - Structure describing+-- features supported by VK_KHR_shader_float16_int8+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceShaderFloat16Int8Features = PhysicalDeviceShaderFloat16Int8Features+ { -- | @shaderFloat16@ indicates whether 16-bit floats (halfs) are supported in+ -- shader code. This also indicates whether shader modules /can/ declare+ -- the @Float16@ capability. However, this only enables a subset of the+ -- storage classes that SPIR-V allows for the @Float16@ SPIR-V capability:+ -- Declaring and using 16-bit floats in the @Private@, @Workgroup@, and+ -- @Function@ storage classes is enabled, while declaring them in the+ -- interface storage classes (e.g., @UniformConstant@, @Uniform@,+ -- @StorageBuffer@, @Input@, @Output@, and @PushConstant@) is not enabled.+ shaderFloat16 :: Bool+ , -- | @shaderInt8@ indicates whether 8-bit integers (signed and unsigned) are+ -- supported in shader code. This also indicates whether shader modules+ -- /can/ declare the @Int8@ capability. However, this only enables a subset+ -- of the storage classes that SPIR-V allows for the @Int8@ SPIR-V+ -- capability: Declaring and using 8-bit integers in the @Private@,+ -- @Workgroup@, and @Function@ storage classes is enabled, while declaring+ -- them in the interface storage classes (e.g., @UniformConstant@,+ -- @Uniform@, @StorageBuffer@, @Input@, @Output@, and @PushConstant@) is+ -- not enabled.+ shaderInt8 :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceShaderFloat16Int8Features++instance ToCStruct PhysicalDeviceShaderFloat16Int8Features where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceShaderFloat16Int8Features{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderFloat16))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (shaderInt8))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceShaderFloat16Int8Features where+ peekCStruct p = do+ shaderFloat16 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ shaderInt8 <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ pure $ PhysicalDeviceShaderFloat16Int8Features+ (bool32ToBool shaderFloat16) (bool32ToBool shaderInt8)++instance Storable PhysicalDeviceShaderFloat16Int8Features where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceShaderFloat16Int8Features where+ zero = PhysicalDeviceShaderFloat16Int8Features+ zero+ zero+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_shader_float16_int8.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8 (PhysicalDeviceShaderFloat16Int8Features) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceShaderFloat16Int8Features++instance ToCStruct PhysicalDeviceShaderFloat16Int8Features+instance Show PhysicalDeviceShaderFloat16Int8Features++instance FromCStruct PhysicalDeviceShaderFloat16Int8Features+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_shader_float_controls.hs view
@@ -0,0 +1,243 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls ( PhysicalDeviceFloatControlsProperties(..)+ , StructureType(..)+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core12.Enums.ShaderFloatControlsIndependence (ShaderFloatControlsIndependence)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- | VkPhysicalDeviceFloatControlsProperties - Structure describing+-- properties supported by VK_KHR_shader_float_controls+--+-- = Members+--+-- The members of the 'PhysicalDeviceFloatControlsProperties' structure+-- describe the following implementation-dependent limits:+--+-- = Description+--+-- If the 'PhysicalDeviceFloatControlsProperties' structure is included in+-- the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core12.Enums.ShaderFloatControlsIndependence.ShaderFloatControlsIndependence',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceFloatControlsProperties = PhysicalDeviceFloatControlsProperties+ { -- | @denormBehaviorIndependence@ is a+ -- 'Graphics.Vulkan.Core12.Enums.ShaderFloatControlsIndependence.ShaderFloatControlsIndependence'+ -- value indicating whether, and how, denorm behavior can be set+ -- independently for different bit widths.+ denormBehaviorIndependence :: ShaderFloatControlsIndependence+ , -- | @roundingModeIndependence@ is a+ -- 'Graphics.Vulkan.Core12.Enums.ShaderFloatControlsIndependence.ShaderFloatControlsIndependence'+ -- value indicating whether, and how, rounding modes can be set+ -- independently for different bit widths.+ roundingModeIndependence :: ShaderFloatControlsIndependence+ , -- | @shaderSignedZeroInfNanPreserveFloat16@ is a boolean value indicating+ -- whether sign of a zero, Nans and \(\pm\infty\) /can/ be preserved in+ -- 16-bit floating-point computations. It also indicates whether the+ -- @SignedZeroInfNanPreserve@ execution mode /can/ be used for 16-bit+ -- floating-point types.+ shaderSignedZeroInfNanPreserveFloat16 :: Bool+ , -- | @shaderSignedZeroInfNanPreserveFloat32@ is a boolean value indicating+ -- whether sign of a zero, Nans and \(\pm\infty\) /can/ be preserved in+ -- 32-bit floating-point computations. It also indicates whether the+ -- @SignedZeroInfNanPreserve@ execution mode /can/ be used for 32-bit+ -- floating-point types.+ shaderSignedZeroInfNanPreserveFloat32 :: Bool+ , -- | @shaderSignedZeroInfNanPreserveFloat64@ is a boolean value indicating+ -- whether sign of a zero, Nans and \(\pm\infty\) /can/ be preserved in+ -- 64-bit floating-point computations. It also indicates whether the+ -- @SignedZeroInfNanPreserve@ execution mode /can/ be used for 64-bit+ -- floating-point types.+ shaderSignedZeroInfNanPreserveFloat64 :: Bool+ , -- | @shaderDenormPreserveFloat16@ is a boolean value indicating whether+ -- denormals /can/ be preserved in 16-bit floating-point computations. It+ -- also indicates whether the @DenormPreserve@ execution mode /can/ be used+ -- for 16-bit floating-point types.+ shaderDenormPreserveFloat16 :: Bool+ , -- | @shaderDenormPreserveFloat32@ is a boolean value indicating whether+ -- denormals /can/ be preserved in 32-bit floating-point computations. It+ -- also indicates whether the @DenormPreserve@ execution mode /can/ be used+ -- for 32-bit floating-point types.+ shaderDenormPreserveFloat32 :: Bool+ , -- | @shaderDenormPreserveFloat64@ is a boolean value indicating whether+ -- denormals /can/ be preserved in 64-bit floating-point computations. It+ -- also indicates whether the @DenormPreserve@ execution mode /can/ be used+ -- for 64-bit floating-point types.+ shaderDenormPreserveFloat64 :: Bool+ , -- | @shaderDenormFlushToZeroFloat16@ is a boolean value indicating whether+ -- denormals /can/ be flushed to zero in 16-bit floating-point+ -- computations. It also indicates whether the @DenormFlushToZero@+ -- execution mode /can/ be used for 16-bit floating-point types.+ shaderDenormFlushToZeroFloat16 :: Bool+ , -- | @shaderDenormFlushToZeroFloat32@ is a boolean value indicating whether+ -- denormals /can/ be flushed to zero in 32-bit floating-point+ -- computations. It also indicates whether the @DenormFlushToZero@+ -- execution mode /can/ be used for 32-bit floating-point types.+ shaderDenormFlushToZeroFloat32 :: Bool+ , -- | @shaderDenormFlushToZeroFloat64@ is a boolean value indicating whether+ -- denormals /can/ be flushed to zero in 64-bit floating-point+ -- computations. It also indicates whether the @DenormFlushToZero@+ -- execution mode /can/ be used for 64-bit floating-point types.+ shaderDenormFlushToZeroFloat64 :: Bool+ , -- | @shaderRoundingModeRTEFloat16@ is a boolean value indicating whether an+ -- implementation supports the round-to-nearest-even rounding mode for+ -- 16-bit floating-point arithmetic and conversion instructions. It also+ -- indicates whether the @RoundingModeRTE@ execution mode /can/ be used for+ -- 16-bit floating-point types.+ shaderRoundingModeRTEFloat16 :: Bool+ , -- | @shaderRoundingModeRTEFloat32@ is a boolean value indicating whether an+ -- implementation supports the round-to-nearest-even rounding mode for+ -- 32-bit floating-point arithmetic and conversion instructions. It also+ -- indicates whether the @RoundingModeRTE@ execution mode /can/ be used for+ -- 32-bit floating-point types.+ shaderRoundingModeRTEFloat32 :: Bool+ , -- | @shaderRoundingModeRTEFloat64@ is a boolean value indicating whether an+ -- implementation supports the round-to-nearest-even rounding mode for+ -- 64-bit floating-point arithmetic and conversion instructions. It also+ -- indicates whether the @RoundingModeRTE@ execution mode /can/ be used for+ -- 64-bit floating-point types.+ shaderRoundingModeRTEFloat64 :: Bool+ , -- | @shaderRoundingModeRTZFloat16@ is a boolean value indicating whether an+ -- implementation supports the round-towards-zero rounding mode for 16-bit+ -- floating-point arithmetic and conversion instructions. It also indicates+ -- whether the @RoundingModeRTZ@ execution mode /can/ be used for 16-bit+ -- floating-point types.+ shaderRoundingModeRTZFloat16 :: Bool+ , -- | @shaderRoundingModeRTZFloat32@ is a boolean value indicating whether an+ -- implementation supports the round-towards-zero rounding mode for 32-bit+ -- floating-point arithmetic and conversion instructions. It also indicates+ -- whether the @RoundingModeRTZ@ execution mode /can/ be used for 32-bit+ -- floating-point types.+ shaderRoundingModeRTZFloat32 :: Bool+ , -- | @shaderRoundingModeRTZFloat64@ is a boolean value indicating whether an+ -- implementation supports the round-towards-zero rounding mode for 64-bit+ -- floating-point arithmetic and conversion instructions. It also indicates+ -- whether the @RoundingModeRTZ@ execution mode /can/ be used for 64-bit+ -- floating-point types.+ shaderRoundingModeRTZFloat64 :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceFloatControlsProperties++instance ToCStruct PhysicalDeviceFloatControlsProperties where+ withCStruct x f = allocaBytesAligned 88 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceFloatControlsProperties{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ShaderFloatControlsIndependence)) (denormBehaviorIndependence)+ poke ((p `plusPtr` 20 :: Ptr ShaderFloatControlsIndependence)) (roundingModeIndependence)+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (shaderSignedZeroInfNanPreserveFloat16))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (shaderSignedZeroInfNanPreserveFloat32))+ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (shaderSignedZeroInfNanPreserveFloat64))+ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (shaderDenormPreserveFloat16))+ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (shaderDenormPreserveFloat32))+ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (shaderDenormPreserveFloat64))+ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (shaderDenormFlushToZeroFloat16))+ poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (shaderDenormFlushToZeroFloat32))+ poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (shaderDenormFlushToZeroFloat64))+ poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTEFloat16))+ poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTEFloat32))+ poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTEFloat64))+ poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTZFloat16))+ poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTZFloat32))+ poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (shaderRoundingModeRTZFloat64))+ f+ cStructSize = 88+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ShaderFloatControlsIndependence)) (zero)+ poke ((p `plusPtr` 20 :: Ptr ShaderFloatControlsIndependence)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceFloatControlsProperties where+ peekCStruct p = do+ denormBehaviorIndependence <- peek @ShaderFloatControlsIndependence ((p `plusPtr` 16 :: Ptr ShaderFloatControlsIndependence))+ roundingModeIndependence <- peek @ShaderFloatControlsIndependence ((p `plusPtr` 20 :: Ptr ShaderFloatControlsIndependence))+ shaderSignedZeroInfNanPreserveFloat16 <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ shaderSignedZeroInfNanPreserveFloat32 <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))+ shaderSignedZeroInfNanPreserveFloat64 <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))+ shaderDenormPreserveFloat16 <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))+ shaderDenormPreserveFloat32 <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))+ shaderDenormPreserveFloat64 <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))+ shaderDenormFlushToZeroFloat16 <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))+ shaderDenormFlushToZeroFloat32 <- peek @Bool32 ((p `plusPtr` 52 :: Ptr Bool32))+ shaderDenormFlushToZeroFloat64 <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))+ shaderRoundingModeRTEFloat16 <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))+ shaderRoundingModeRTEFloat32 <- peek @Bool32 ((p `plusPtr` 64 :: Ptr Bool32))+ shaderRoundingModeRTEFloat64 <- peek @Bool32 ((p `plusPtr` 68 :: Ptr Bool32))+ shaderRoundingModeRTZFloat16 <- peek @Bool32 ((p `plusPtr` 72 :: Ptr Bool32))+ shaderRoundingModeRTZFloat32 <- peek @Bool32 ((p `plusPtr` 76 :: Ptr Bool32))+ shaderRoundingModeRTZFloat64 <- peek @Bool32 ((p `plusPtr` 80 :: Ptr Bool32))+ pure $ PhysicalDeviceFloatControlsProperties+ denormBehaviorIndependence roundingModeIndependence (bool32ToBool shaderSignedZeroInfNanPreserveFloat16) (bool32ToBool shaderSignedZeroInfNanPreserveFloat32) (bool32ToBool shaderSignedZeroInfNanPreserveFloat64) (bool32ToBool shaderDenormPreserveFloat16) (bool32ToBool shaderDenormPreserveFloat32) (bool32ToBool shaderDenormPreserveFloat64) (bool32ToBool shaderDenormFlushToZeroFloat16) (bool32ToBool shaderDenormFlushToZeroFloat32) (bool32ToBool shaderDenormFlushToZeroFloat64) (bool32ToBool shaderRoundingModeRTEFloat16) (bool32ToBool shaderRoundingModeRTEFloat32) (bool32ToBool shaderRoundingModeRTEFloat64) (bool32ToBool shaderRoundingModeRTZFloat16) (bool32ToBool shaderRoundingModeRTZFloat32) (bool32ToBool shaderRoundingModeRTZFloat64)++instance Storable PhysicalDeviceFloatControlsProperties where+ sizeOf ~_ = 88+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceFloatControlsProperties where+ zero = PhysicalDeviceFloatControlsProperties+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_shader_float_controls.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls (PhysicalDeviceFloatControlsProperties) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceFloatControlsProperties++instance ToCStruct PhysicalDeviceFloatControlsProperties+instance Show PhysicalDeviceFloatControlsProperties++instance FromCStruct PhysicalDeviceFloatControlsProperties+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_shader_subgroup_extended_types.hs view
@@ -0,0 +1,94 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types ( PhysicalDeviceShaderSubgroupExtendedTypesFeatures(..)+ , StructureType(..)+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- | VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures - Structure+-- describing the extended types subgroups support feature for an+-- implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceShaderSubgroupExtendedTypesFeatures'+-- structure describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceShaderSubgroupExtendedTypesFeatures' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether each feature is supported.+-- 'PhysicalDeviceShaderSubgroupExtendedTypesFeatures' /can/ also be+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceShaderSubgroupExtendedTypesFeatures = PhysicalDeviceShaderSubgroupExtendedTypesFeatures+ { -- | @shaderSubgroupExtendedTypes@ is a boolean that specifies whether+ -- subgroup operations can use 8-bit integer, 16-bit integer, 64-bit+ -- integer, 16-bit floating-point, and vectors of these types in+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operations group operations>+ -- with+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>if+ -- the implementation supports the types.+ shaderSubgroupExtendedTypes :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceShaderSubgroupExtendedTypesFeatures++instance ToCStruct PhysicalDeviceShaderSubgroupExtendedTypesFeatures where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceShaderSubgroupExtendedTypesFeatures{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderSubgroupExtendedTypes))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceShaderSubgroupExtendedTypesFeatures where+ peekCStruct p = do+ shaderSubgroupExtendedTypes <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceShaderSubgroupExtendedTypesFeatures+ (bool32ToBool shaderSubgroupExtendedTypes)++instance Storable PhysicalDeviceShaderSubgroupExtendedTypesFeatures where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceShaderSubgroupExtendedTypesFeatures where+ zero = PhysicalDeviceShaderSubgroupExtendedTypesFeatures+ zero+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_shader_subgroup_extended_types.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types (PhysicalDeviceShaderSubgroupExtendedTypesFeatures) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceShaderSubgroupExtendedTypesFeatures++instance ToCStruct PhysicalDeviceShaderSubgroupExtendedTypesFeatures+instance Show PhysicalDeviceShaderSubgroupExtendedTypesFeatures++instance FromCStruct PhysicalDeviceShaderSubgroupExtendedTypesFeatures+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_timeline_semaphore.hs view
@@ -0,0 +1,729 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore ( getSemaphoreCounterValue+ , waitSemaphores+ , signalSemaphore+ , PhysicalDeviceTimelineSemaphoreFeatures(..)+ , PhysicalDeviceTimelineSemaphoreProperties(..)+ , SemaphoreTypeCreateInfo(..)+ , TimelineSemaphoreSubmitInfo(..)+ , SemaphoreWaitInfo(..)+ , SemaphoreSignalInfo(..)+ , StructureType(..)+ , SemaphoreType(..)+ , SemaphoreWaitFlagBits(..)+ , SemaphoreWaitFlags+ ) where++import Control.Exception.Base (bracket)+import Control.Monad (unless)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Marshal.Utils (maybePeek)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Either (Either)+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.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Word (Word64)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetSemaphoreCounterValue))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkSignalSemaphore))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkWaitSemaphores))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Handles (Semaphore)+import Graphics.Vulkan.Core10.Handles (Semaphore(..))+import Graphics.Vulkan.Core12.Enums.SemaphoreType (SemaphoreType)+import Graphics.Vulkan.Core12.Enums.SemaphoreWaitFlagBits (SemaphoreWaitFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Core12.Enums.SemaphoreType (SemaphoreType(..))+import Graphics.Vulkan.Core12.Enums.SemaphoreWaitFlagBits (SemaphoreWaitFlagBits(..))+import Graphics.Vulkan.Core12.Enums.SemaphoreWaitFlagBits (SemaphoreWaitFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetSemaphoreCounterValue+ :: FunPtr (Ptr Device_T -> Semaphore -> Ptr Word64 -> IO Result) -> Ptr Device_T -> Semaphore -> Ptr Word64 -> IO Result++-- | vkGetSemaphoreCounterValue - Query the current state of a timeline+-- semaphore+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the semaphore.+--+-- - 'Graphics.Vulkan.Core10.Handles.Semaphore' is the handle of the+-- semaphore to query.+--+-- - @pValue@ is a pointer to a 64-bit integer value in which the current+-- counter value of the semaphore is returned.+--+-- = Description+--+-- Note+--+-- If a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submission queue submission>+-- command is pending execution, then the value returned by this command+-- /may/ immediately be out of date.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Semaphore'+getSemaphoreCounterValue :: Device -> Semaphore -> IO (("value" ::: Word64))+getSemaphoreCounterValue device semaphore = evalContT $ do+ let vkGetSemaphoreCounterValue' = mkVkGetSemaphoreCounterValue (pVkGetSemaphoreCounterValue (deviceCmds (device :: Device)))+ pPValue <- ContT $ bracket (callocBytes @Word64 8) free+ r <- lift $ vkGetSemaphoreCounterValue' (deviceHandle (device)) (semaphore) (pPValue)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pValue <- lift $ peek @Word64 pPValue+ pure $ (pValue)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkWaitSemaphores+ :: FunPtr (Ptr Device_T -> Ptr SemaphoreWaitInfo -> Word64 -> IO Result) -> Ptr Device_T -> Ptr SemaphoreWaitInfo -> Word64 -> IO Result++-- | vkWaitSemaphores - Wait for timeline semaphores on the host+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the semaphore.+--+-- - @pWaitInfo@ is a pointer to a 'SemaphoreWaitInfo' structure+-- containing information about the wait condition.+--+-- - @timeout@ is the timeout period in units of nanoseconds. @timeout@+-- is adjusted to the closest value allowed by the+-- implementation-dependent timeout accuracy, which /may/ be+-- substantially longer than one nanosecond, and /may/ be longer than+-- the requested period.+--+-- = Description+--+-- If the condition is satisfied when 'waitSemaphores' is called, then+-- 'waitSemaphores' returns immediately. If the condition is not satisfied+-- at the time 'waitSemaphores' is called, then 'waitSemaphores' will block+-- and wait up to @timeout@ nanoseconds for the condition to become+-- satisfied.+--+-- If @timeout@ is zero, then 'waitSemaphores' does not wait, but simply+-- returns information about the current state of the semaphore.+-- 'Graphics.Vulkan.Core10.Enums.Result.TIMEOUT' will be returned in this+-- case if the condition is not satisfied, even though no actual wait was+-- performed.+--+-- If the specified timeout period expires before the condition is+-- satisfied, 'waitSemaphores' returns+-- 'Graphics.Vulkan.Core10.Enums.Result.TIMEOUT'. If the condition is+-- satisfied before @timeout@ nanoseconds has expired, 'waitSemaphores'+-- returns 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'.+--+-- If device loss occurs (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>)+-- before the timeout has expired, 'waitSemaphores' /must/ return in finite+-- time with either 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' or+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.TIMEOUT'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device', 'SemaphoreWaitInfo'+waitSemaphores :: Device -> SemaphoreWaitInfo -> ("timeout" ::: Word64) -> IO (Result)+waitSemaphores device waitInfo timeout = evalContT $ do+ let vkWaitSemaphores' = mkVkWaitSemaphores (pVkWaitSemaphores (deviceCmds (device :: Device)))+ pWaitInfo <- ContT $ withCStruct (waitInfo)+ r <- lift $ vkWaitSemaphores' (deviceHandle (device)) pWaitInfo (timeout)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pure $ (r)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkSignalSemaphore+ :: FunPtr (Ptr Device_T -> Ptr SemaphoreSignalInfo -> IO Result) -> Ptr Device_T -> Ptr SemaphoreSignalInfo -> IO Result++-- | vkSignalSemaphore - Signal a timeline semaphore on the host+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the semaphore.+--+-- - @pSignalInfo@ is a pointer to a 'SemaphoreSignalInfo' structure+-- containing information about the signal operation.+--+-- = Description+--+-- When 'signalSemaphore' is executed on the host, it defines and+-- immediately executes a+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>+-- which sets the timeline semaphore to the given value.+--+-- The first synchronization scope is defined by the host execution model,+-- but includes execution of 'signalSemaphore' on the host and anything+-- that happened-before it.+--+-- The second synchronization scope is empty.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device', 'SemaphoreSignalInfo'+signalSemaphore :: Device -> SemaphoreSignalInfo -> IO ()+signalSemaphore device signalInfo = evalContT $ do+ let vkSignalSemaphore' = mkVkSignalSemaphore (pVkSignalSemaphore (deviceCmds (device :: Device)))+ pSignalInfo <- ContT $ withCStruct (signalInfo)+ r <- lift $ vkSignalSemaphore' (deviceHandle (device)) pSignalInfo+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+++-- | VkPhysicalDeviceTimelineSemaphoreFeatures - Structure describing+-- timeline semaphore features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceTimelineSemaphoreFeatures' structure+-- describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceTimelineSemaphoreFeatures' structure is included+-- in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether each feature is supported.+-- 'PhysicalDeviceTimelineSemaphoreFeatures' /can/ also be included in the+-- @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceTimelineSemaphoreFeatures = PhysicalDeviceTimelineSemaphoreFeatures+ { -- | @timelineSemaphore@ indicates whether semaphores created with a+ -- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+ -- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE' are+ -- supported.+ timelineSemaphore :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceTimelineSemaphoreFeatures++instance ToCStruct PhysicalDeviceTimelineSemaphoreFeatures where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceTimelineSemaphoreFeatures{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (timelineSemaphore))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceTimelineSemaphoreFeatures where+ peekCStruct p = do+ timelineSemaphore <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceTimelineSemaphoreFeatures+ (bool32ToBool timelineSemaphore)++instance Storable PhysicalDeviceTimelineSemaphoreFeatures where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceTimelineSemaphoreFeatures where+ zero = PhysicalDeviceTimelineSemaphoreFeatures+ zero+++-- | VkPhysicalDeviceTimelineSemaphoreProperties - Structure describing+-- timeline semaphore properties that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceTimelineSemaphoreProperties' structure+-- describe the following implementation-dependent limits:+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceTimelineSemaphoreProperties = PhysicalDeviceTimelineSemaphoreProperties+ { -- | @maxTimelineSemaphoreValueDifference@ indicates the maximum difference+ -- allowed by the implementation between the current value of a timeline+ -- semaphore and any pending signal or wait operations.+ maxTimelineSemaphoreValueDifference :: Word64 }+ deriving (Typeable)+deriving instance Show PhysicalDeviceTimelineSemaphoreProperties++instance ToCStruct PhysicalDeviceTimelineSemaphoreProperties where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceTimelineSemaphoreProperties{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word64)) (maxTimelineSemaphoreValueDifference)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word64)) (zero)+ f++instance FromCStruct PhysicalDeviceTimelineSemaphoreProperties where+ peekCStruct p = do+ maxTimelineSemaphoreValueDifference <- peek @Word64 ((p `plusPtr` 16 :: Ptr Word64))+ pure $ PhysicalDeviceTimelineSemaphoreProperties+ maxTimelineSemaphoreValueDifference++instance Storable PhysicalDeviceTimelineSemaphoreProperties where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceTimelineSemaphoreProperties where+ zero = PhysicalDeviceTimelineSemaphoreProperties+ zero+++-- | VkSemaphoreTypeCreateInfo - Structure specifying the type of a newly+-- created semaphore+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO'+--+-- - 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' /must/ be+-- a valid 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType'+-- value+--+-- == Valid Usage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-timelineSemaphore timelineSemaphore>+-- feature is not enabled,+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' /must/+-- not equal+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE'+--+-- - If 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' is+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY',+-- @initialValue@ /must/ be zero.+--+-- If no 'SemaphoreTypeCreateInfo' structure is included in the @pNext@+-- chain of 'Graphics.Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo',+-- then the created semaphore will have a default+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY'.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data SemaphoreTypeCreateInfo = SemaphoreTypeCreateInfo+ { -- | 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' is a+ -- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' value+ -- specifying the type of the semaphore.+ semaphoreType :: SemaphoreType+ , -- | @initialValue@ is the initial payload value if+ -- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' is+ -- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE'.+ initialValue :: Word64+ }+ deriving (Typeable)+deriving instance Show SemaphoreTypeCreateInfo++instance ToCStruct SemaphoreTypeCreateInfo where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SemaphoreTypeCreateInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr SemaphoreType)) (semaphoreType)+ poke ((p `plusPtr` 24 :: Ptr Word64)) (initialValue)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr SemaphoreType)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)+ f++instance FromCStruct SemaphoreTypeCreateInfo where+ peekCStruct p = do+ semaphoreType <- peek @SemaphoreType ((p `plusPtr` 16 :: Ptr SemaphoreType))+ initialValue <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))+ pure $ SemaphoreTypeCreateInfo+ semaphoreType initialValue++instance Storable SemaphoreTypeCreateInfo where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SemaphoreTypeCreateInfo where+ zero = SemaphoreTypeCreateInfo+ zero+ zero+++-- | VkTimelineSemaphoreSubmitInfo - Structure specifying signal and wait+-- values for timeline semaphores+--+-- = Description+--+-- If the semaphore in+-- 'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@pWaitSemaphores@ or+-- 'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@pSignalSemaphores@+-- corresponding to an entry in @pWaitSemaphoreValues@ or+-- @pSignalSemaphoreValues@ respectively was not created with a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE',+-- the implementation /must/ ignore the value in the @pWaitSemaphoreValues@+-- or @pSignalSemaphoreValues@ entry.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO'+--+-- - If @waitSemaphoreValueCount@ is not @0@, and @pWaitSemaphoreValues@+-- is not @NULL@, @pWaitSemaphoreValues@ /must/ be a valid pointer to+-- an array of @waitSemaphoreValueCount@ @uint64_t@ values+--+-- - If @signalSemaphoreValueCount@ is not @0@, and+-- @pSignalSemaphoreValues@ is not @NULL@, @pSignalSemaphoreValues@+-- /must/ be a valid pointer to an array of @signalSemaphoreValueCount@+-- @uint64_t@ values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data TimelineSemaphoreSubmitInfo = TimelineSemaphoreSubmitInfo+ { -- | @pWaitSemaphoreValues@ is an array of length @waitSemaphoreValueCount@+ -- containing values for the corresponding semaphores in+ -- 'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@pWaitSemaphores@ to wait+ -- for.+ waitSemaphoreValues :: Either Word32 (Vector Word64)+ , -- | @pSignalSemaphoreValues@ is an array of length+ -- @signalSemaphoreValueCount@ containing values for the corresponding+ -- semaphores in+ -- 'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@pSignalSemaphores@ to set+ -- when signaled.+ signalSemaphoreValues :: Either Word32 (Vector Word64)+ }+ deriving (Typeable)+deriving instance Show TimelineSemaphoreSubmitInfo++instance ToCStruct TimelineSemaphoreSubmitInfo where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p TimelineSemaphoreSubmitInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (either id (fromIntegral . Data.Vector.length) (waitSemaphoreValues)) :: Word32))+ pWaitSemaphoreValues'' <- case (waitSemaphoreValues) of+ Left _ -> pure nullPtr+ Right v -> do+ pPWaitSemaphoreValues' <- ContT $ allocaBytesAligned @Word64 ((Data.Vector.length (v)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPWaitSemaphoreValues' `plusPtr` (8 * (i)) :: Ptr Word64) (e)) (v)+ pure $ pPWaitSemaphoreValues'+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word64))) pWaitSemaphoreValues''+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (either id (fromIntegral . Data.Vector.length) (signalSemaphoreValues)) :: Word32))+ pSignalSemaphoreValues'' <- case (signalSemaphoreValues) of+ Left _ -> pure nullPtr+ Right v -> do+ pPSignalSemaphoreValues' <- ContT $ allocaBytesAligned @Word64 ((Data.Vector.length (v)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPSignalSemaphoreValues' `plusPtr` (8 * (i)) :: Ptr Word64) (e)) (v)+ pure $ pPSignalSemaphoreValues'+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Word64))) pSignalSemaphoreValues''+ lift $ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct TimelineSemaphoreSubmitInfo where+ peekCStruct p = do+ waitSemaphoreValueCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pWaitSemaphoreValues <- peek @(Ptr Word64) ((p `plusPtr` 24 :: Ptr (Ptr Word64)))+ pWaitSemaphoreValues' <- maybePeek (\j -> generateM (fromIntegral waitSemaphoreValueCount) (\i -> peek @Word64 (((j) `advancePtrBytes` (8 * (i)) :: Ptr Word64)))) pWaitSemaphoreValues+ let pWaitSemaphoreValues'' = maybe (Left waitSemaphoreValueCount) Right pWaitSemaphoreValues'+ signalSemaphoreValueCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pSignalSemaphoreValues <- peek @(Ptr Word64) ((p `plusPtr` 40 :: Ptr (Ptr Word64)))+ pSignalSemaphoreValues' <- maybePeek (\j -> generateM (fromIntegral signalSemaphoreValueCount) (\i -> peek @Word64 (((j) `advancePtrBytes` (8 * (i)) :: Ptr Word64)))) pSignalSemaphoreValues+ let pSignalSemaphoreValues'' = maybe (Left signalSemaphoreValueCount) Right pSignalSemaphoreValues'+ pure $ TimelineSemaphoreSubmitInfo+ pWaitSemaphoreValues'' pSignalSemaphoreValues''++instance Zero TimelineSemaphoreSubmitInfo where+ zero = TimelineSemaphoreSubmitInfo+ (Left 0)+ (Left 0)+++-- | VkSemaphoreWaitInfo - Structure containing information about the+-- semaphore wait condition+--+-- == Valid Usage+--+-- - All of the elements of @pSemaphores@ /must/ reference a semaphore+-- that was created with a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO'+--+-- - @pNext@ /must/ be @NULL@+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreWaitFlagBits.SemaphoreWaitFlagBits'+-- values+--+-- - @pSemaphores@ /must/ be a valid pointer to an array of+-- @semaphoreCount@ valid 'Graphics.Vulkan.Core10.Handles.Semaphore'+-- handles+--+-- - @pValues@ /must/ be a valid pointer to an array of @semaphoreCount@+-- @uint64_t@ values+--+-- - @semaphoreCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Semaphore',+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreWaitFlagBits.SemaphoreWaitFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'waitSemaphores',+-- 'Graphics.Vulkan.Extensions.VK_KHR_timeline_semaphore.waitSemaphoresKHR'+data SemaphoreWaitInfo = SemaphoreWaitInfo+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core12.Enums.SemaphoreWaitFlagBits.SemaphoreWaitFlagBits'+ -- specifying additional parameters for the semaphore wait operation.+ flags :: SemaphoreWaitFlags+ , -- | @pSemaphores@ is a pointer to an array of @semaphoreCount@ semaphore+ -- handles to wait on.+ semaphores :: Vector Semaphore+ , -- | @pValues@ is a pointer to an array of @semaphoreCount@ timeline+ -- semaphore values.+ values :: Vector Word64+ }+ deriving (Typeable)+deriving instance Show SemaphoreWaitInfo++instance ToCStruct SemaphoreWaitInfo where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SemaphoreWaitInfo{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr SemaphoreWaitFlags)) (flags)+ let pSemaphoresLength = Data.Vector.length $ (semaphores)+ let pValuesLength = Data.Vector.length $ (values)+ lift $ unless (pValuesLength == pSemaphoresLength) $+ throwIO $ IOError Nothing InvalidArgument "" "pValues and pSemaphores must have the same length" Nothing Nothing+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral pSemaphoresLength :: Word32))+ pPSemaphores' <- ContT $ allocaBytesAligned @Semaphore ((Data.Vector.length (semaphores)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPSemaphores' `plusPtr` (8 * (i)) :: Ptr Semaphore) (e)) (semaphores)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Semaphore))) (pPSemaphores')+ pPValues' <- ContT $ allocaBytesAligned @Word64 ((Data.Vector.length (values)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPValues' `plusPtr` (8 * (i)) :: Ptr Word64) (e)) (values)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Word64))) (pPValues')+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPSemaphores' <- ContT $ allocaBytesAligned @Semaphore ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPSemaphores' `plusPtr` (8 * (i)) :: Ptr Semaphore) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Semaphore))) (pPSemaphores')+ pPValues' <- ContT $ allocaBytesAligned @Word64 ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPValues' `plusPtr` (8 * (i)) :: Ptr Word64) (e)) (mempty)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Word64))) (pPValues')+ lift $ f++instance FromCStruct SemaphoreWaitInfo where+ peekCStruct p = do+ flags <- peek @SemaphoreWaitFlags ((p `plusPtr` 16 :: Ptr SemaphoreWaitFlags))+ semaphoreCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pSemaphores <- peek @(Ptr Semaphore) ((p `plusPtr` 24 :: Ptr (Ptr Semaphore)))+ pSemaphores' <- generateM (fromIntegral semaphoreCount) (\i -> peek @Semaphore ((pSemaphores `advancePtrBytes` (8 * (i)) :: Ptr Semaphore)))+ pValues <- peek @(Ptr Word64) ((p `plusPtr` 32 :: Ptr (Ptr Word64)))+ pValues' <- generateM (fromIntegral semaphoreCount) (\i -> peek @Word64 ((pValues `advancePtrBytes` (8 * (i)) :: Ptr Word64)))+ pure $ SemaphoreWaitInfo+ flags pSemaphores' pValues'++instance Zero SemaphoreWaitInfo where+ zero = SemaphoreWaitInfo+ zero+ mempty+ mempty+++-- | VkSemaphoreSignalInfo - Structure containing information about a+-- semaphore signal operation+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Semaphore',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'signalSemaphore',+-- 'Graphics.Vulkan.Extensions.VK_KHR_timeline_semaphore.signalSemaphoreKHR'+data SemaphoreSignalInfo = SemaphoreSignalInfo+ { -- | 'Graphics.Vulkan.Core10.Handles.Semaphore' /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Handles.Semaphore' handle+ semaphore :: Semaphore+ , -- | @value@ /must/ have a value which does not differ from the current value+ -- of the semaphore or the value of any outstanding semaphore wait or+ -- signal operation on 'Graphics.Vulkan.Core10.Handles.Semaphore' by more+ -- than+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>.+ value :: Word64+ }+ deriving (Typeable)+deriving instance Show SemaphoreSignalInfo++instance ToCStruct SemaphoreSignalInfo where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SemaphoreSignalInfo{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Semaphore)) (semaphore)+ poke ((p `plusPtr` 24 :: Ptr Word64)) (value)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Semaphore)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)+ f++instance FromCStruct SemaphoreSignalInfo where+ peekCStruct p = do+ semaphore <- peek @Semaphore ((p `plusPtr` 16 :: Ptr Semaphore))+ value <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))+ pure $ SemaphoreSignalInfo+ semaphore value++instance Storable SemaphoreSignalInfo where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SemaphoreSignalInfo where+ zero = SemaphoreSignalInfo+ zero+ zero+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_timeline_semaphore.hs-boot view
@@ -0,0 +1,59 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore ( PhysicalDeviceTimelineSemaphoreFeatures+ , PhysicalDeviceTimelineSemaphoreProperties+ , SemaphoreSignalInfo+ , SemaphoreTypeCreateInfo+ , SemaphoreWaitInfo+ , TimelineSemaphoreSubmitInfo+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceTimelineSemaphoreFeatures++instance ToCStruct PhysicalDeviceTimelineSemaphoreFeatures+instance Show PhysicalDeviceTimelineSemaphoreFeatures++instance FromCStruct PhysicalDeviceTimelineSemaphoreFeatures+++data PhysicalDeviceTimelineSemaphoreProperties++instance ToCStruct PhysicalDeviceTimelineSemaphoreProperties+instance Show PhysicalDeviceTimelineSemaphoreProperties++instance FromCStruct PhysicalDeviceTimelineSemaphoreProperties+++data SemaphoreSignalInfo++instance ToCStruct SemaphoreSignalInfo+instance Show SemaphoreSignalInfo++instance FromCStruct SemaphoreSignalInfo+++data SemaphoreTypeCreateInfo++instance ToCStruct SemaphoreTypeCreateInfo+instance Show SemaphoreTypeCreateInfo++instance FromCStruct SemaphoreTypeCreateInfo+++data SemaphoreWaitInfo++instance ToCStruct SemaphoreWaitInfo+instance Show SemaphoreWaitInfo++instance FromCStruct SemaphoreWaitInfo+++data TimelineSemaphoreSubmitInfo++instance ToCStruct TimelineSemaphoreSubmitInfo+instance Show TimelineSemaphoreSubmitInfo++instance FromCStruct TimelineSemaphoreSubmitInfo+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_uniform_buffer_standard_layout.hs view
@@ -0,0 +1,90 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout ( PhysicalDeviceUniformBufferStandardLayoutFeatures(..)+ , StructureType(..)+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- | VkPhysicalDeviceUniformBufferStandardLayoutFeatures - Structure+-- indicating support for std430-like packing in uniform buffers+--+-- = Members+--+-- The members of the 'PhysicalDeviceUniformBufferStandardLayoutFeatures'+-- structure describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceUniformBufferStandardLayoutFeatures' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceUniformBufferStandardLayoutFeatures' /can/ also be+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to enable this feature.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceUniformBufferStandardLayoutFeatures = PhysicalDeviceUniformBufferStandardLayoutFeatures+ { -- | @uniformBufferStandardLayout@ indicates that the implementation supports+ -- the same layouts for uniform buffers as for storage and other kinds of+ -- buffers. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources-standard-layout Standard Buffer Layout>.+ uniformBufferStandardLayout :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceUniformBufferStandardLayoutFeatures++instance ToCStruct PhysicalDeviceUniformBufferStandardLayoutFeatures where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceUniformBufferStandardLayoutFeatures{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (uniformBufferStandardLayout))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceUniformBufferStandardLayoutFeatures where+ peekCStruct p = do+ uniformBufferStandardLayout <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceUniformBufferStandardLayoutFeatures+ (bool32ToBool uniformBufferStandardLayout)++instance Storable PhysicalDeviceUniformBufferStandardLayoutFeatures where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceUniformBufferStandardLayoutFeatures where+ zero = PhysicalDeviceUniformBufferStandardLayoutFeatures+ zero+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_uniform_buffer_standard_layout.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout (PhysicalDeviceUniformBufferStandardLayoutFeatures) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceUniformBufferStandardLayoutFeatures++instance ToCStruct PhysicalDeviceUniformBufferStandardLayoutFeatures+instance Show PhysicalDeviceUniformBufferStandardLayoutFeatures++instance FromCStruct PhysicalDeviceUniformBufferStandardLayoutFeatures+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_vulkan_memory_model.hs view
@@ -0,0 +1,95 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model ( PhysicalDeviceVulkanMemoryModelFeatures(..)+ , StructureType(..)+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(..))+-- | VkPhysicalDeviceVulkanMemoryModelFeatures - Structure describing+-- features supported by the memory model+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceVulkanMemoryModelFeatures = PhysicalDeviceVulkanMemoryModelFeatures+ { -- | @vulkanMemoryModel@ indicates whether the Vulkan Memory Model is+ -- supported, as defined in+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-model Vulkan Memory Model>.+ -- This also indicates whether shader modules /can/ declare the+ -- @VulkanMemoryModel@ capability.+ vulkanMemoryModel :: Bool+ , -- | @vulkanMemoryModelDeviceScope@ indicates whether the Vulkan Memory Model+ -- can use 'Graphics.Vulkan.Core10.Handles.Device' scope synchronization.+ -- This also indicates whether shader modules /can/ declare the+ -- @VulkanMemoryModelDeviceScope@ capability.+ vulkanMemoryModelDeviceScope :: Bool+ , -- | @vulkanMemoryModelAvailabilityVisibilityChains@ indicates whether the+ -- Vulkan Memory Model can use+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-model-availability-visibility availability and visibility chains>+ -- with more than one element.+ vulkanMemoryModelAvailabilityVisibilityChains :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceVulkanMemoryModelFeatures++instance ToCStruct PhysicalDeviceVulkanMemoryModelFeatures where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceVulkanMemoryModelFeatures{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (vulkanMemoryModel))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (vulkanMemoryModelDeviceScope))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (vulkanMemoryModelAvailabilityVisibilityChains))+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceVulkanMemoryModelFeatures where+ peekCStruct p = do+ vulkanMemoryModel <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ vulkanMemoryModelDeviceScope <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ vulkanMemoryModelAvailabilityVisibilityChains <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ pure $ PhysicalDeviceVulkanMemoryModelFeatures+ (bool32ToBool vulkanMemoryModel) (bool32ToBool vulkanMemoryModelDeviceScope) (bool32ToBool vulkanMemoryModelAvailabilityVisibilityChains)++instance Storable PhysicalDeviceVulkanMemoryModelFeatures where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceVulkanMemoryModelFeatures where+ zero = PhysicalDeviceVulkanMemoryModelFeatures+ zero+ zero+ zero+
+ src/Graphics/Vulkan/Core12/Promoted_From_VK_KHR_vulkan_memory_model.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model (PhysicalDeviceVulkanMemoryModelFeatures) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceVulkanMemoryModelFeatures++instance ToCStruct PhysicalDeviceVulkanMemoryModelFeatures+instance Show PhysicalDeviceVulkanMemoryModelFeatures++instance FromCStruct PhysicalDeviceVulkanMemoryModelFeatures+
src/Graphics/Vulkan/Dynamic.hs view
@@ -1,4490 +1,1440 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language CPP #-}-{-# language ForeignFunctionInterface #-}-{-# language MagicHash #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}--module Graphics.Vulkan.Dynamic- ( DeviceCmds(..)- , InstanceCmds(..)- , initDeviceCmds- , initInstanceCmds- , destroyInstance- , hasDestroyInstance- , enumeratePhysicalDevices- , hasEnumeratePhysicalDevices- , getDeviceProcAddr- , hasGetDeviceProcAddr- , getInstanceProcAddr- , hasGetInstanceProcAddr- , getPhysicalDeviceProperties- , hasGetPhysicalDeviceProperties- , getPhysicalDeviceQueueFamilyProperties- , hasGetPhysicalDeviceQueueFamilyProperties- , getPhysicalDeviceMemoryProperties- , hasGetPhysicalDeviceMemoryProperties- , getPhysicalDeviceFeatures- , hasGetPhysicalDeviceFeatures- , getPhysicalDeviceFormatProperties- , hasGetPhysicalDeviceFormatProperties- , getPhysicalDeviceImageFormatProperties- , hasGetPhysicalDeviceImageFormatProperties- , createDevice- , hasCreateDevice- , destroyDevice- , hasDestroyDevice- , enumerateDeviceLayerProperties- , hasEnumerateDeviceLayerProperties- , enumerateDeviceExtensionProperties- , hasEnumerateDeviceExtensionProperties- , getDeviceQueue- , hasGetDeviceQueue- , queueSubmit- , hasQueueSubmit- , queueWaitIdle- , hasQueueWaitIdle- , deviceWaitIdle- , hasDeviceWaitIdle- , allocateMemory- , hasAllocateMemory- , freeMemory- , hasFreeMemory- , mapMemory- , hasMapMemory- , unmapMemory- , hasUnmapMemory- , flushMappedMemoryRanges- , hasFlushMappedMemoryRanges- , invalidateMappedMemoryRanges- , hasInvalidateMappedMemoryRanges- , getDeviceMemoryCommitment- , hasGetDeviceMemoryCommitment- , getBufferMemoryRequirements- , hasGetBufferMemoryRequirements- , bindBufferMemory- , hasBindBufferMemory- , getImageMemoryRequirements- , hasGetImageMemoryRequirements- , bindImageMemory- , hasBindImageMemory- , getImageSparseMemoryRequirements- , hasGetImageSparseMemoryRequirements- , getPhysicalDeviceSparseImageFormatProperties- , hasGetPhysicalDeviceSparseImageFormatProperties- , queueBindSparse- , hasQueueBindSparse- , createFence- , hasCreateFence- , destroyFence- , hasDestroyFence- , resetFences- , hasResetFences- , getFenceStatus- , hasGetFenceStatus- , waitForFences- , hasWaitForFences- , createSemaphore- , hasCreateSemaphore- , destroySemaphore- , hasDestroySemaphore- , createEvent- , hasCreateEvent- , destroyEvent- , hasDestroyEvent- , getEventStatus- , hasGetEventStatus- , setEvent- , hasSetEvent- , resetEvent- , hasResetEvent- , createQueryPool- , hasCreateQueryPool- , destroyQueryPool- , hasDestroyQueryPool- , getQueryPoolResults- , hasGetQueryPoolResults- , createBuffer- , hasCreateBuffer- , destroyBuffer- , hasDestroyBuffer- , createBufferView- , hasCreateBufferView- , destroyBufferView- , hasDestroyBufferView- , createImage- , hasCreateImage- , destroyImage- , hasDestroyImage- , getImageSubresourceLayout- , hasGetImageSubresourceLayout- , createImageView- , hasCreateImageView- , destroyImageView- , hasDestroyImageView- , createShaderModule- , hasCreateShaderModule- , destroyShaderModule- , hasDestroyShaderModule- , createPipelineCache- , hasCreatePipelineCache- , destroyPipelineCache- , hasDestroyPipelineCache- , getPipelineCacheData- , hasGetPipelineCacheData- , mergePipelineCaches- , hasMergePipelineCaches- , createGraphicsPipelines- , hasCreateGraphicsPipelines- , createComputePipelines- , hasCreateComputePipelines- , destroyPipeline- , hasDestroyPipeline- , createPipelineLayout- , hasCreatePipelineLayout- , destroyPipelineLayout- , hasDestroyPipelineLayout- , createSampler- , hasCreateSampler- , destroySampler- , hasDestroySampler- , createDescriptorSetLayout- , hasCreateDescriptorSetLayout- , destroyDescriptorSetLayout- , hasDestroyDescriptorSetLayout- , createDescriptorPool- , hasCreateDescriptorPool- , destroyDescriptorPool- , hasDestroyDescriptorPool- , resetDescriptorPool- , hasResetDescriptorPool- , allocateDescriptorSets- , hasAllocateDescriptorSets- , freeDescriptorSets- , hasFreeDescriptorSets- , updateDescriptorSets- , hasUpdateDescriptorSets- , createFramebuffer- , hasCreateFramebuffer- , destroyFramebuffer- , hasDestroyFramebuffer- , createRenderPass- , hasCreateRenderPass- , destroyRenderPass- , hasDestroyRenderPass- , getRenderAreaGranularity- , hasGetRenderAreaGranularity- , createCommandPool- , hasCreateCommandPool- , destroyCommandPool- , hasDestroyCommandPool- , resetCommandPool- , hasResetCommandPool- , allocateCommandBuffers- , hasAllocateCommandBuffers- , freeCommandBuffers- , hasFreeCommandBuffers- , beginCommandBuffer- , hasBeginCommandBuffer- , endCommandBuffer- , hasEndCommandBuffer- , resetCommandBuffer- , hasResetCommandBuffer- , cmdBindPipeline- , hasCmdBindPipeline- , cmdSetViewport- , hasCmdSetViewport- , cmdSetScissor- , hasCmdSetScissor- , cmdSetLineWidth- , hasCmdSetLineWidth- , cmdSetDepthBias- , hasCmdSetDepthBias- , cmdSetBlendConstants- , hasCmdSetBlendConstants- , cmdSetDepthBounds- , hasCmdSetDepthBounds- , cmdSetStencilCompareMask- , hasCmdSetStencilCompareMask- , cmdSetStencilWriteMask- , hasCmdSetStencilWriteMask- , cmdSetStencilReference- , hasCmdSetStencilReference- , cmdBindDescriptorSets- , hasCmdBindDescriptorSets- , cmdBindIndexBuffer- , hasCmdBindIndexBuffer- , cmdBindVertexBuffers- , hasCmdBindVertexBuffers- , cmdDraw- , hasCmdDraw- , cmdDrawIndexed- , hasCmdDrawIndexed- , cmdDrawIndirect- , hasCmdDrawIndirect- , cmdDrawIndexedIndirect- , hasCmdDrawIndexedIndirect- , cmdDispatch- , hasCmdDispatch- , cmdDispatchIndirect- , hasCmdDispatchIndirect- , cmdCopyBuffer- , hasCmdCopyBuffer- , cmdCopyImage- , hasCmdCopyImage- , cmdBlitImage- , hasCmdBlitImage- , cmdCopyBufferToImage- , hasCmdCopyBufferToImage- , cmdCopyImageToBuffer- , hasCmdCopyImageToBuffer- , cmdUpdateBuffer- , hasCmdUpdateBuffer- , cmdFillBuffer- , hasCmdFillBuffer- , cmdClearColorImage- , hasCmdClearColorImage- , cmdClearDepthStencilImage- , hasCmdClearDepthStencilImage- , cmdClearAttachments- , hasCmdClearAttachments- , cmdResolveImage- , hasCmdResolveImage- , cmdSetEvent- , hasCmdSetEvent- , cmdResetEvent- , hasCmdResetEvent- , cmdWaitEvents- , hasCmdWaitEvents- , cmdPipelineBarrier- , hasCmdPipelineBarrier- , cmdBeginQuery- , hasCmdBeginQuery- , cmdEndQuery- , hasCmdEndQuery- , cmdResetQueryPool- , hasCmdResetQueryPool- , cmdWriteTimestamp- , hasCmdWriteTimestamp- , cmdCopyQueryPoolResults- , hasCmdCopyQueryPoolResults- , cmdPushConstants- , hasCmdPushConstants- , cmdBeginRenderPass- , hasCmdBeginRenderPass- , cmdNextSubpass- , hasCmdNextSubpass- , cmdEndRenderPass- , hasCmdEndRenderPass- , cmdExecuteCommands- , hasCmdExecuteCommands-#if defined(VK_USE_PLATFORM_ANDROID_KHR)- , createAndroidSurfaceKHR- , hasCreateAndroidSurfaceKHR-#endif- , getPhysicalDeviceDisplayPropertiesKHR- , hasGetPhysicalDeviceDisplayPropertiesKHR- , getPhysicalDeviceDisplayPlanePropertiesKHR- , hasGetPhysicalDeviceDisplayPlanePropertiesKHR- , getDisplayPlaneSupportedDisplaysKHR- , hasGetDisplayPlaneSupportedDisplaysKHR- , getDisplayModePropertiesKHR- , hasGetDisplayModePropertiesKHR- , createDisplayModeKHR- , hasCreateDisplayModeKHR- , getDisplayPlaneCapabilitiesKHR- , hasGetDisplayPlaneCapabilitiesKHR- , createDisplayPlaneSurfaceKHR- , hasCreateDisplayPlaneSurfaceKHR- , createSharedSwapchainsKHR- , hasCreateSharedSwapchainsKHR-#if defined(VK_USE_PLATFORM_MIR_KHR)- , createMirSurfaceKHR- , hasCreateMirSurfaceKHR- , getPhysicalDeviceMirPresentationSupportKHR- , hasGetPhysicalDeviceMirPresentationSupportKHR-#endif- , destroySurfaceKHR- , hasDestroySurfaceKHR- , getPhysicalDeviceSurfaceSupportKHR- , hasGetPhysicalDeviceSurfaceSupportKHR- , getPhysicalDeviceSurfaceCapabilitiesKHR- , hasGetPhysicalDeviceSurfaceCapabilitiesKHR- , getPhysicalDeviceSurfaceFormatsKHR- , hasGetPhysicalDeviceSurfaceFormatsKHR- , getPhysicalDeviceSurfacePresentModesKHR- , hasGetPhysicalDeviceSurfacePresentModesKHR- , createSwapchainKHR- , hasCreateSwapchainKHR- , destroySwapchainKHR- , hasDestroySwapchainKHR- , getSwapchainImagesKHR- , hasGetSwapchainImagesKHR- , acquireNextImageKHR- , hasAcquireNextImageKHR- , queuePresentKHR- , hasQueuePresentKHR-#if defined(VK_USE_PLATFORM_VI_NN)- , createViSurfaceNN- , hasCreateViSurfaceNN-#endif-#if defined(VK_USE_PLATFORM_WAYLAND_KHR)- , createWaylandSurfaceKHR- , hasCreateWaylandSurfaceKHR- , getPhysicalDeviceWaylandPresentationSupportKHR- , hasGetPhysicalDeviceWaylandPresentationSupportKHR-#endif-#if defined(VK_USE_PLATFORM_WIN32_KHR)- , createWin32SurfaceKHR- , hasCreateWin32SurfaceKHR- , getPhysicalDeviceWin32PresentationSupportKHR- , hasGetPhysicalDeviceWin32PresentationSupportKHR-#endif-#if defined(VK_USE_PLATFORM_XLIB_KHR)- , createXlibSurfaceKHR- , hasCreateXlibSurfaceKHR- , getPhysicalDeviceXlibPresentationSupportKHR- , hasGetPhysicalDeviceXlibPresentationSupportKHR-#endif-#if defined(VK_USE_PLATFORM_XCB_KHR)- , createXcbSurfaceKHR- , hasCreateXcbSurfaceKHR- , getPhysicalDeviceXcbPresentationSupportKHR- , hasGetPhysicalDeviceXcbPresentationSupportKHR-#endif- , createDebugReportCallbackEXT- , hasCreateDebugReportCallbackEXT- , destroyDebugReportCallbackEXT- , hasDestroyDebugReportCallbackEXT- , debugReportMessageEXT- , hasDebugReportMessageEXT- , debugMarkerSetObjectNameEXT- , hasDebugMarkerSetObjectNameEXT- , debugMarkerSetObjectTagEXT- , hasDebugMarkerSetObjectTagEXT- , cmdDebugMarkerBeginEXT- , hasCmdDebugMarkerBeginEXT- , cmdDebugMarkerEndEXT- , hasCmdDebugMarkerEndEXT- , cmdDebugMarkerInsertEXT- , hasCmdDebugMarkerInsertEXT- , getPhysicalDeviceExternalImageFormatPropertiesNV- , hasGetPhysicalDeviceExternalImageFormatPropertiesNV-#if defined(VK_USE_PLATFORM_WIN32_KHR)- , getMemoryWin32HandleNV- , hasGetMemoryWin32HandleNV-#endif- , cmdDrawIndirectCountAMD- , hasCmdDrawIndirectCountAMD- , cmdDrawIndexedIndirectCountAMD- , hasCmdDrawIndexedIndirectCountAMD- , cmdProcessCommandsNVX- , hasCmdProcessCommandsNVX- , cmdReserveSpaceForCommandsNVX- , hasCmdReserveSpaceForCommandsNVX- , createIndirectCommandsLayoutNVX- , hasCreateIndirectCommandsLayoutNVX- , destroyIndirectCommandsLayoutNVX- , hasDestroyIndirectCommandsLayoutNVX- , createObjectTableNVX- , hasCreateObjectTableNVX- , destroyObjectTableNVX- , hasDestroyObjectTableNVX- , registerObjectsNVX- , hasRegisterObjectsNVX- , unregisterObjectsNVX- , hasUnregisterObjectsNVX- , getPhysicalDeviceGeneratedCommandsPropertiesNVX- , hasGetPhysicalDeviceGeneratedCommandsPropertiesNVX- , getPhysicalDeviceFeatures2- , hasGetPhysicalDeviceFeatures2- , getPhysicalDeviceProperties2- , hasGetPhysicalDeviceProperties2- , getPhysicalDeviceFormatProperties2- , hasGetPhysicalDeviceFormatProperties2- , getPhysicalDeviceImageFormatProperties2- , hasGetPhysicalDeviceImageFormatProperties2- , getPhysicalDeviceQueueFamilyProperties2- , hasGetPhysicalDeviceQueueFamilyProperties2- , getPhysicalDeviceMemoryProperties2- , hasGetPhysicalDeviceMemoryProperties2- , getPhysicalDeviceSparseImageFormatProperties2- , hasGetPhysicalDeviceSparseImageFormatProperties2- , cmdPushDescriptorSetKHR- , hasCmdPushDescriptorSetKHR- , trimCommandPool- , hasTrimCommandPool- , getPhysicalDeviceExternalBufferProperties- , hasGetPhysicalDeviceExternalBufferProperties-#if defined(VK_USE_PLATFORM_WIN32_KHR)- , getMemoryWin32HandleKHR- , hasGetMemoryWin32HandleKHR- , getMemoryWin32HandlePropertiesKHR- , hasGetMemoryWin32HandlePropertiesKHR-#endif- , getMemoryFdKHR- , hasGetMemoryFdKHR- , getMemoryFdPropertiesKHR- , hasGetMemoryFdPropertiesKHR- , getPhysicalDeviceExternalSemaphoreProperties- , hasGetPhysicalDeviceExternalSemaphoreProperties-#if defined(VK_USE_PLATFORM_WIN32_KHR)- , getSemaphoreWin32HandleKHR- , hasGetSemaphoreWin32HandleKHR- , importSemaphoreWin32HandleKHR- , hasImportSemaphoreWin32HandleKHR-#endif- , getSemaphoreFdKHR- , hasGetSemaphoreFdKHR- , importSemaphoreFdKHR- , hasImportSemaphoreFdKHR- , getPhysicalDeviceExternalFenceProperties- , hasGetPhysicalDeviceExternalFenceProperties-#if defined(VK_USE_PLATFORM_WIN32_KHR)- , getFenceWin32HandleKHR- , hasGetFenceWin32HandleKHR- , importFenceWin32HandleKHR- , hasImportFenceWin32HandleKHR-#endif- , getFenceFdKHR- , hasGetFenceFdKHR- , importFenceFdKHR- , hasImportFenceFdKHR- , releaseDisplayEXT- , hasReleaseDisplayEXT-#if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)- , acquireXlibDisplayEXT- , hasAcquireXlibDisplayEXT- , getRandROutputDisplayEXT- , hasGetRandROutputDisplayEXT-#endif- , displayPowerControlEXT- , hasDisplayPowerControlEXT- , registerDeviceEventEXT- , hasRegisterDeviceEventEXT- , registerDisplayEventEXT- , hasRegisterDisplayEventEXT- , getSwapchainCounterEXT- , hasGetSwapchainCounterEXT- , getPhysicalDeviceSurfaceCapabilities2EXT- , hasGetPhysicalDeviceSurfaceCapabilities2EXT- , enumeratePhysicalDeviceGroups- , hasEnumeratePhysicalDeviceGroups- , getDeviceGroupPeerMemoryFeatures- , hasGetDeviceGroupPeerMemoryFeatures- , bindBufferMemory2- , hasBindBufferMemory2- , bindImageMemory2- , hasBindImageMemory2- , cmdSetDeviceMask- , hasCmdSetDeviceMask- , getDeviceGroupPresentCapabilitiesKHR- , hasGetDeviceGroupPresentCapabilitiesKHR- , getDeviceGroupSurfacePresentModesKHR- , hasGetDeviceGroupSurfacePresentModesKHR- , acquireNextImage2KHR- , hasAcquireNextImage2KHR- , cmdDispatchBase- , hasCmdDispatchBase- , getPhysicalDevicePresentRectanglesKHR- , hasGetPhysicalDevicePresentRectanglesKHR- , createDescriptorUpdateTemplate- , hasCreateDescriptorUpdateTemplate- , destroyDescriptorUpdateTemplate- , hasDestroyDescriptorUpdateTemplate- , updateDescriptorSetWithTemplate- , hasUpdateDescriptorSetWithTemplate- , cmdPushDescriptorSetWithTemplateKHR- , hasCmdPushDescriptorSetWithTemplateKHR- , setHdrMetadataEXT- , hasSetHdrMetadataEXT- , getSwapchainStatusKHR- , hasGetSwapchainStatusKHR- , getRefreshCycleDurationGOOGLE- , hasGetRefreshCycleDurationGOOGLE- , getPastPresentationTimingGOOGLE- , hasGetPastPresentationTimingGOOGLE-#if defined(VK_USE_PLATFORM_IOS_MVK)- , createIOSSurfaceMVK- , hasCreateIOSSurfaceMVK-#endif-#if defined(VK_USE_PLATFORM_MACOS_MVK)- , createMacOSSurfaceMVK- , hasCreateMacOSSurfaceMVK-#endif- , cmdSetViewportWScalingNV- , hasCmdSetViewportWScalingNV- , cmdSetDiscardRectangleEXT- , hasCmdSetDiscardRectangleEXT- , cmdSetSampleLocationsEXT- , hasCmdSetSampleLocationsEXT- , getPhysicalDeviceMultisamplePropertiesEXT- , hasGetPhysicalDeviceMultisamplePropertiesEXT- , getPhysicalDeviceSurfaceCapabilities2KHR- , hasGetPhysicalDeviceSurfaceCapabilities2KHR- , getPhysicalDeviceSurfaceFormats2KHR- , hasGetPhysicalDeviceSurfaceFormats2KHR- , getBufferMemoryRequirements2- , hasGetBufferMemoryRequirements2- , getImageMemoryRequirements2- , hasGetImageMemoryRequirements2- , getImageSparseMemoryRequirements2- , hasGetImageSparseMemoryRequirements2- , createSamplerYcbcrConversion- , hasCreateSamplerYcbcrConversion- , destroySamplerYcbcrConversion- , hasDestroySamplerYcbcrConversion- , getDeviceQueue2- , hasGetDeviceQueue2- , createValidationCacheEXT- , hasCreateValidationCacheEXT- , destroyValidationCacheEXT- , hasDestroyValidationCacheEXT- , getValidationCacheDataEXT- , hasGetValidationCacheDataEXT- , mergeValidationCachesEXT- , hasMergeValidationCachesEXT- , getDescriptorSetLayoutSupport- , hasGetDescriptorSetLayoutSupport- , getSwapchainGrallocUsageANDROID- , hasGetSwapchainGrallocUsageANDROID- , acquireImageANDROID- , hasAcquireImageANDROID- , queueSignalReleaseImageANDROID- , hasQueueSignalReleaseImageANDROID- , getShaderInfoAMD- , hasGetShaderInfoAMD- , setDebugUtilsObjectNameEXT- , hasSetDebugUtilsObjectNameEXT- , setDebugUtilsObjectTagEXT- , hasSetDebugUtilsObjectTagEXT- , queueBeginDebugUtilsLabelEXT- , hasQueueBeginDebugUtilsLabelEXT- , queueEndDebugUtilsLabelEXT- , hasQueueEndDebugUtilsLabelEXT- , queueInsertDebugUtilsLabelEXT- , hasQueueInsertDebugUtilsLabelEXT- , cmdBeginDebugUtilsLabelEXT- , hasCmdBeginDebugUtilsLabelEXT- , cmdEndDebugUtilsLabelEXT- , hasCmdEndDebugUtilsLabelEXT- , cmdInsertDebugUtilsLabelEXT- , hasCmdInsertDebugUtilsLabelEXT- , createDebugUtilsMessengerEXT- , hasCreateDebugUtilsMessengerEXT- , destroyDebugUtilsMessengerEXT- , hasDestroyDebugUtilsMessengerEXT- , submitDebugUtilsMessageEXT- , hasSubmitDebugUtilsMessageEXT- , getMemoryHostPointerPropertiesEXT- , hasGetMemoryHostPointerPropertiesEXT- , cmdWriteBufferMarkerAMD- , hasCmdWriteBufferMarkerAMD-#if defined(VK_USE_PLATFORM_ANDROID_KHR)- , getAndroidHardwareBufferPropertiesANDROID- , hasGetAndroidHardwareBufferPropertiesANDROID- , getMemoryAndroidHardwareBufferANDROID- , hasGetMemoryAndroidHardwareBufferANDROID-#endif- ) where--import Data.Int- ( Int32- )-import Data.Word- ( Word32- , Word64- )-import Foreign.C.Types- ( CChar(..)- , CFloat(..)- , CInt(..)- , CSize(..)- )-import Foreign.Ptr- ( FunPtr- , Ptr- , castPtrToFunPtr- , nullFunPtr- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import qualified GHC.Ptr- ( Ptr(..)- )---import Graphics.Vulkan.Core10.Buffer- ( VkBufferCreateInfo(..)- )-import Graphics.Vulkan.Core10.BufferView- ( VkBufferViewCreateInfo(..)- , VkBufferView- )-import Graphics.Vulkan.Core10.CommandBuffer- ( VkCommandBufferAllocateInfo(..)- , VkCommandBufferBeginInfo(..)- , VkCommandBufferResetFlagBits(..)- , VkQueryControlFlagBits(..)- , VkCommandBufferResetFlags- , VkQueryControlFlags- )-import Graphics.Vulkan.Core10.CommandBufferBuilding- ( VkBufferCopy(..)- , VkBufferImageCopy(..)- , VkBufferMemoryBarrier(..)- , VkClearAttachment(..)- , VkClearColorValue(..)- , VkClearDepthStencilValue(..)- , VkClearRect(..)- , VkImageBlit(..)- , VkImageCopy(..)- , VkImageMemoryBarrier(..)- , VkImageResolve(..)- , VkIndexType(..)- , VkMemoryBarrier(..)- , VkRenderPassBeginInfo(..)- , VkStencilFaceFlagBits(..)- , VkSubpassContents(..)- , VkStencilFaceFlags- )-import Graphics.Vulkan.Core10.CommandPool- ( VkCommandPoolCreateInfo(..)- , VkCommandPoolResetFlagBits(..)- , VkCommandPool- , VkCommandPoolResetFlags- )-import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkFormat(..)- , VkResult(..)- )-import Graphics.Vulkan.Core10.DescriptorSet- ( VkCopyDescriptorSet(..)- , VkDescriptorPoolCreateInfo(..)- , VkDescriptorPoolResetFlags(..)- , VkDescriptorSetAllocateInfo(..)- , VkDescriptorSetLayoutCreateInfo(..)- , VkWriteDescriptorSet(..)- , VkDescriptorPool- , VkDescriptorSet- )-import Graphics.Vulkan.Core10.Device- ( VkDeviceCreateInfo(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkFormatProperties(..)- , VkImageCreateFlagBits(..)- , VkImageFormatProperties(..)- , VkImageTiling(..)- , VkImageType(..)- , VkImageUsageFlagBits(..)- , VkPhysicalDeviceFeatures(..)- , VkPhysicalDeviceMemoryProperties(..)- , VkPhysicalDeviceProperties(..)- , VkQueueFamilyProperties(..)- , VkSampleCountFlagBits(..)- , PFN_vkVoidFunction- , VkDevice- , VkDeviceSize- , VkImageCreateFlags- , VkImageUsageFlags- , VkInstance- , VkPhysicalDevice- , vkGetDeviceProcAddr- , vkGetInstanceProcAddr- )-import Graphics.Vulkan.Core10.Event- ( VkEventCreateInfo(..)- , VkEvent- )-import Graphics.Vulkan.Core10.ExtensionDiscovery- ( VkExtensionProperties(..)- )-import Graphics.Vulkan.Core10.Fence- ( VkFenceCreateInfo(..)- )-import Graphics.Vulkan.Core10.Image- ( VkImageCreateInfo(..)- , VkImageLayout(..)- , VkSubresourceLayout(..)- )-import Graphics.Vulkan.Core10.ImageView- ( VkImageSubresourceRange(..)- , VkImageViewCreateInfo(..)- , VkImageView- )-import Graphics.Vulkan.Core10.LayerDiscovery- ( VkLayerProperties(..)- )-import Graphics.Vulkan.Core10.Memory- ( VkMappedMemoryRange(..)- , VkMemoryAllocateInfo(..)- , VkMemoryMapFlags(..)- , VkDeviceMemory- )-import Graphics.Vulkan.Core10.MemoryManagement- ( VkMemoryRequirements(..)- , VkBuffer- , VkImage- )-import Graphics.Vulkan.Core10.Pass- ( VkDependencyFlagBits(..)- , VkFramebufferCreateInfo(..)- , VkPipelineBindPoint(..)- , VkRenderPassCreateInfo(..)- , VkDependencyFlags- , VkFramebuffer- )-import Graphics.Vulkan.Core10.Pipeline- ( VkComputePipelineCreateInfo(..)- , VkExtent2D(..)- , VkGraphicsPipelineCreateInfo(..)- , VkRect2D(..)- , VkShaderStageFlagBits(..)- , VkViewport(..)- , VkPipeline- , VkPipelineLayout- , VkRenderPass- )-import Graphics.Vulkan.Core10.PipelineCache- ( VkPipelineCacheCreateInfo(..)- , VkPipelineCache- )-import Graphics.Vulkan.Core10.PipelineLayout- ( VkPipelineLayoutCreateInfo(..)- , VkDescriptorSetLayout- , VkShaderStageFlags- )-import Graphics.Vulkan.Core10.Query- ( VkQueryPoolCreateInfo(..)- , VkQueryResultFlagBits(..)- , VkQueryPool- , VkQueryResultFlags- )-import Graphics.Vulkan.Core10.Queue- ( VkPipelineStageFlagBits(..)- , VkSubmitInfo(..)- , VkCommandBuffer- , VkFence- , VkPipelineStageFlags- , VkQueue- , VkSemaphore- )-import Graphics.Vulkan.Core10.QueueSemaphore- ( VkSemaphoreCreateInfo(..)- )-import Graphics.Vulkan.Core10.Sampler- ( VkFilter(..)- , VkSamplerCreateInfo(..)- , VkSampler- )-import Graphics.Vulkan.Core10.Shader- ( VkShaderModuleCreateInfo(..)- , VkShaderModule- )-import Graphics.Vulkan.Core10.SparseResourceMemoryManagement- ( VkBindSparseInfo(..)- , VkImageSubresource(..)- , VkSparseImageFormatProperties(..)- , VkSparseImageMemoryRequirements(..)- )-import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory- ( VkDeviceQueueInfo2(..)- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2- ( VkBindBufferMemoryInfo(..)- , VkBindImageMemoryInfo(..)- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template- ( VkDescriptorUpdateTemplateCreateInfo(..)- , VkDescriptorUpdateTemplate- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group- ( VkPeerMemoryFeatureFlags- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation- ( VkPhysicalDeviceGroupProperties(..)- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities- ( VkExternalFenceProperties(..)- , VkPhysicalDeviceExternalFenceInfo(..)- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities- ( VkExternalBufferProperties(..)- , VkExternalMemoryHandleTypeFlagBits(..)- , VkPhysicalDeviceExternalBufferInfo(..)- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities- ( VkExternalSemaphoreProperties(..)- , VkPhysicalDeviceExternalSemaphoreInfo(..)- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2- ( VkBufferMemoryRequirementsInfo2(..)- , VkImageMemoryRequirementsInfo2(..)- , VkImageSparseMemoryRequirementsInfo2(..)- , VkMemoryRequirements2(..)- , VkSparseImageMemoryRequirements2(..)- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2- ( VkFormatProperties2(..)- , VkImageFormatProperties2(..)- , VkPhysicalDeviceFeatures2(..)- , VkPhysicalDeviceImageFormatInfo2(..)- , VkPhysicalDeviceMemoryProperties2(..)- , VkPhysicalDeviceProperties2(..)- , VkPhysicalDeviceSparseImageFormatInfo2(..)- , VkQueueFamilyProperties2(..)- , VkSparseImageFormatProperties2(..)- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance1- ( VkCommandPoolTrimFlags(..)- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance3- ( VkDescriptorSetLayoutSupport(..)- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion- ( VkSamplerYcbcrConversionCreateInfo(..)- , VkSamplerYcbcrConversion- )-import Graphics.Vulkan.Extensions.VK_AMD_shader_info- ( VkShaderInfoTypeAMD(..)- )--#if defined(VK_USE_PLATFORM_ANDROID_KHR)-import Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer- ( VkAndroidHardwareBufferPropertiesANDROID(..)- , VkMemoryGetAndroidHardwareBufferInfoANDROID(..)- , AHardwareBuffer- )-#endif--#if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)-import Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display- ( RROutput- )-#endif-import Graphics.Vulkan.Extensions.VK_EXT_debug_marker- ( VkDebugMarkerMarkerInfoEXT(..)- , VkDebugMarkerObjectNameInfoEXT(..)- , VkDebugMarkerObjectTagInfoEXT(..)- )-import Graphics.Vulkan.Extensions.VK_EXT_debug_report- ( VkDebugReportCallbackCreateInfoEXT(..)- , VkDebugReportFlagBitsEXT(..)- , VkDebugReportObjectTypeEXT(..)- , VkDebugReportCallbackEXT- , VkDebugReportFlagsEXT- )-import Graphics.Vulkan.Extensions.VK_EXT_debug_utils- ( VkDebugUtilsLabelEXT(..)- , VkDebugUtilsMessageSeverityFlagBitsEXT(..)- , VkDebugUtilsMessageTypeFlagBitsEXT(..)- , VkDebugUtilsMessengerCallbackDataEXT(..)- , VkDebugUtilsMessengerCreateInfoEXT(..)- , VkDebugUtilsObjectNameInfoEXT(..)- , VkDebugUtilsObjectTagInfoEXT(..)- , VkDebugUtilsMessageTypeFlagsEXT- , VkDebugUtilsMessengerEXT- )-import Graphics.Vulkan.Extensions.VK_EXT_display_control- ( VkDeviceEventInfoEXT(..)- , VkDisplayEventInfoEXT(..)- , VkDisplayPowerInfoEXT(..)- )-import Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter- ( VkSurfaceCapabilities2EXT(..)- , VkSurfaceCounterFlagBitsEXT(..)- )-import Graphics.Vulkan.Extensions.VK_EXT_external_memory_host- ( VkMemoryHostPointerPropertiesEXT(..)- )-import Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata- ( VkHdrMetadataEXT(..)- )-import Graphics.Vulkan.Extensions.VK_EXT_sample_locations- ( VkMultisamplePropertiesEXT(..)- , VkSampleLocationsInfoEXT(..)- )-import Graphics.Vulkan.Extensions.VK_EXT_validation_cache- ( VkValidationCacheCreateInfoEXT(..)- , VkValidationCacheEXT- )-import Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing- ( VkPastPresentationTimingGOOGLE(..)- , VkRefreshCycleDurationGOOGLE(..)- )--#if defined(VK_USE_PLATFORM_ANDROID_KHR)-import Graphics.Vulkan.Extensions.VK_KHR_android_surface- ( VkAndroidSurfaceCreateInfoKHR(..)- )-#endif-import Graphics.Vulkan.Extensions.VK_KHR_display- ( VkDisplayModeCreateInfoKHR(..)- , VkDisplayModePropertiesKHR(..)- , VkDisplayPlaneCapabilitiesKHR(..)- , VkDisplayPlanePropertiesKHR(..)- , VkDisplayPropertiesKHR(..)- , VkDisplaySurfaceCreateInfoKHR(..)- , VkDisplayKHR- , VkDisplayModeKHR- )-import Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd- ( VkFenceGetFdInfoKHR(..)- , VkImportFenceFdInfoKHR(..)- )--#if defined(VK_USE_PLATFORM_WIN32_KHR)-import Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32- ( VkFenceGetWin32HandleInfoKHR(..)- , VkImportFenceWin32HandleInfoKHR(..)- )-#endif-import Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd- ( VkMemoryFdPropertiesKHR(..)- , VkMemoryGetFdInfoKHR(..)- )--#if defined(VK_USE_PLATFORM_WIN32_KHR)-import Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32- ( VkMemoryGetWin32HandleInfoKHR(..)- , VkMemoryWin32HandlePropertiesKHR(..)- )-#endif-import Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd- ( VkImportSemaphoreFdInfoKHR(..)- , VkSemaphoreGetFdInfoKHR(..)- )--#if defined(VK_USE_PLATFORM_WIN32_KHR)-import Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32- ( VkImportSemaphoreWin32HandleInfoKHR(..)- , VkSemaphoreGetWin32HandleInfoKHR(..)- )-#endif-import Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2- ( VkPhysicalDeviceSurfaceInfo2KHR(..)- , VkSurfaceCapabilities2KHR(..)- , VkSurfaceFormat2KHR(..)- )--#if defined(VK_USE_PLATFORM_MIR_KHR)-import Graphics.Vulkan.Extensions.VK_KHR_mir_surface- ( VkMirSurfaceCreateInfoKHR(..)- , MirConnection- )-#endif-import Graphics.Vulkan.Extensions.VK_KHR_surface- ( VkPresentModeKHR(..)- , VkSurfaceCapabilitiesKHR(..)- , VkSurfaceFormatKHR(..)- , VkSurfaceKHR- )-import Graphics.Vulkan.Extensions.VK_KHR_swapchain- ( VkAcquireNextImageInfoKHR(..)- , VkDeviceGroupPresentCapabilitiesKHR(..)- , VkPresentInfoKHR(..)- , VkSwapchainCreateInfoKHR(..)- , VkDeviceGroupPresentModeFlagsKHR- , VkSwapchainKHR- )--#if defined(VK_USE_PLATFORM_WAYLAND_KHR)-import Graphics.Vulkan.Extensions.VK_KHR_wayland_surface- ( VkWaylandSurfaceCreateInfoKHR(..)- , Wl_display- )-#endif--#if defined(VK_USE_PLATFORM_WIN32_KHR)-import Graphics.Vulkan.Extensions.VK_KHR_win32_surface- ( VkWin32SurfaceCreateInfoKHR(..)- )-#endif--#if defined(VK_USE_PLATFORM_XCB_KHR)-import Graphics.Vulkan.Extensions.VK_KHR_xcb_surface- ( VkXcbSurfaceCreateInfoKHR(..)- , Xcb_connection_t- , Xcb_visualid_t- )-#endif--#if defined(VK_USE_PLATFORM_XLIB_KHR)-import Graphics.Vulkan.Extensions.VK_KHR_xlib_surface- ( Display(..)- , VkXlibSurfaceCreateInfoKHR(..)- , VisualID- )-#endif--#if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)-import Graphics.Vulkan.Extensions.VK_KHR_xlib_surface- ( Display(..)- )-#endif--#if defined(VK_USE_PLATFORM_IOS_MVK)-import Graphics.Vulkan.Extensions.VK_MVK_ios_surface- ( VkIOSSurfaceCreateInfoMVK(..)- )-#endif--#if defined(VK_USE_PLATFORM_MACOS_MVK)-import Graphics.Vulkan.Extensions.VK_MVK_macos_surface- ( VkMacOSSurfaceCreateInfoMVK(..)- )-#endif--#if defined(VK_USE_PLATFORM_VI_NN)-import Graphics.Vulkan.Extensions.VK_NN_vi_surface- ( VkViSurfaceCreateInfoNN(..)- )-#endif-import Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands- ( VkCmdProcessCommandsInfoNVX(..)- , VkCmdReserveSpaceForCommandsInfoNVX(..)- , VkDeviceGeneratedCommandsFeaturesNVX(..)- , VkDeviceGeneratedCommandsLimitsNVX(..)- , VkIndirectCommandsLayoutCreateInfoNVX(..)- , VkObjectEntryTypeNVX(..)- , VkObjectTableCreateInfoNVX(..)- , VkObjectTableEntryNVX(..)- , VkIndirectCommandsLayoutNVX- , VkObjectTableNVX- )-import Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling- ( VkViewportWScalingNV(..)- )-import Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities- ( VkExternalImageFormatPropertiesNV(..)- , VkExternalMemoryHandleTypeFlagBitsNV(..)- , VkExternalMemoryHandleTypeFlagsNV- )--#if defined(VK_USE_PLATFORM_WIN32_KHR)-import Graphics.Vulkan.Extensions.VK_NV_external_memory_win32- ( HANDLE- )-#endif---data DeviceCmds = DeviceCmds- { pVkGetDeviceProcAddr :: FunPtr (("device" ::: VkDevice) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction)-, pVkDestroyDevice :: FunPtr (("device" ::: VkDevice) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkGetDeviceQueue :: FunPtr (("device" ::: VkDevice) -> ("queueFamilyIndex" ::: Word32) -> ("queueIndex" ::: Word32) -> ("pQueue" ::: Ptr VkQueue) -> IO ())-, pVkQueueSubmit :: FunPtr (("queue" ::: VkQueue) -> ("submitCount" ::: Word32) -> ("pSubmits" ::: Ptr VkSubmitInfo) -> ("fence" ::: VkFence) -> IO VkResult)-, pVkQueueWaitIdle :: FunPtr (("queue" ::: VkQueue) -> IO VkResult)-, pVkDeviceWaitIdle :: FunPtr (("device" ::: VkDevice) -> IO VkResult)-, pVkAllocateMemory :: FunPtr (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkMemoryAllocateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMemory" ::: Ptr VkDeviceMemory) -> IO VkResult)-, pVkFreeMemory :: FunPtr (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkMapMemory :: FunPtr (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("offset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("flags" ::: VkMemoryMapFlags) -> ("ppData" ::: Ptr (Ptr ())) -> IO VkResult)-, pVkUnmapMemory :: FunPtr (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> IO ())-, pVkFlushMappedMemoryRanges :: FunPtr (("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult)-, pVkInvalidateMappedMemoryRanges :: FunPtr (("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult)-, pVkGetDeviceMemoryCommitment :: FunPtr (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pCommittedMemoryInBytes" ::: Ptr VkDeviceSize) -> IO ())-, pVkGetBufferMemoryRequirements :: FunPtr (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ())-, pVkBindBufferMemory :: FunPtr (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult)-, pVkGetImageMemoryRequirements :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ())-, pVkBindImageMemory :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult)-, pVkGetImageSparseMemoryRequirements :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements) -> IO ())-, pVkQueueBindSparse :: FunPtr (("queue" ::: VkQueue) -> ("bindInfoCount" ::: Word32) -> ("pBindInfo" ::: Ptr VkBindSparseInfo) -> ("fence" ::: VkFence) -> IO VkResult)-, pVkCreateFence :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFenceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult)-, pVkDestroyFence :: FunPtr (("device" ::: VkDevice) -> ("fence" ::: VkFence) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkResetFences :: FunPtr (("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> IO VkResult)-, pVkGetFenceStatus :: FunPtr (("device" ::: VkDevice) -> ("fence" ::: VkFence) -> IO VkResult)-, pVkWaitForFences :: FunPtr (("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> ("waitAll" ::: VkBool32) -> ("timeout" ::: Word64) -> IO VkResult)-, pVkCreateSemaphore :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSemaphoreCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSemaphore" ::: Ptr VkSemaphore) -> IO VkResult)-, pVkDestroySemaphore :: FunPtr (("device" ::: VkDevice) -> ("semaphore" ::: VkSemaphore) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkCreateEvent :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkEventCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pEvent" ::: Ptr VkEvent) -> IO VkResult)-, pVkDestroyEvent :: FunPtr (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkGetEventStatus :: FunPtr (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult)-, pVkSetEvent :: FunPtr (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult)-, pVkResetEvent :: FunPtr (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult)-, pVkCreateQueryPool :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkQueryPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pQueryPool" ::: Ptr VkQueryPool) -> IO VkResult)-, pVkDestroyQueryPool :: FunPtr (("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkGetQueryPoolResults :: FunPtr (("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO VkResult)-, pVkCreateBuffer :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pBuffer" ::: Ptr VkBuffer) -> IO VkResult)-, pVkDestroyBuffer :: FunPtr (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkCreateBufferView :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkBufferView) -> IO VkResult)-, pVkDestroyBufferView :: FunPtr (("device" ::: VkDevice) -> ("bufferView" ::: VkBufferView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkCreateImage :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pImage" ::: Ptr VkImage) -> IO VkResult)-, pVkDestroyImage :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkGetImageSubresourceLayout :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSubresource" ::: Ptr VkImageSubresource) -> ("pLayout" ::: Ptr VkSubresourceLayout) -> IO ())-, pVkCreateImageView :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkImageView) -> IO VkResult)-, pVkDestroyImageView :: FunPtr (("device" ::: VkDevice) -> ("imageView" ::: VkImageView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkCreateShaderModule :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkShaderModuleCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pShaderModule" ::: Ptr VkShaderModule) -> IO VkResult)-, pVkDestroyShaderModule :: FunPtr (("device" ::: VkDevice) -> ("shaderModule" ::: VkShaderModule) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkCreatePipelineCache :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineCacheCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineCache" ::: Ptr VkPipelineCache) -> IO VkResult)-, pVkDestroyPipelineCache :: FunPtr (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkGetPipelineCacheData :: FunPtr (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult)-, pVkMergePipelineCaches :: FunPtr (("device" ::: VkDevice) -> ("dstCache" ::: VkPipelineCache) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkPipelineCache) -> IO VkResult)-, pVkCreateGraphicsPipelines :: FunPtr (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkGraphicsPipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult)-, pVkCreateComputePipelines :: FunPtr (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkComputePipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult)-, pVkDestroyPipeline :: FunPtr (("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkCreatePipelineLayout :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineLayout" ::: Ptr VkPipelineLayout) -> IO VkResult)-, pVkDestroyPipelineLayout :: FunPtr (("device" ::: VkDevice) -> ("pipelineLayout" ::: VkPipelineLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkCreateSampler :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSampler" ::: Ptr VkSampler) -> IO VkResult)-, pVkDestroySampler :: FunPtr (("device" ::: VkDevice) -> ("sampler" ::: VkSampler) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkCreateDescriptorSetLayout :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSetLayout" ::: Ptr VkDescriptorSetLayout) -> IO VkResult)-, pVkDestroyDescriptorSetLayout :: FunPtr (("device" ::: VkDevice) -> ("descriptorSetLayout" ::: VkDescriptorSetLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkCreateDescriptorPool :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorPool" ::: Ptr VkDescriptorPool) -> IO VkResult)-, pVkDestroyDescriptorPool :: FunPtr (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkResetDescriptorPool :: FunPtr (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("flags" ::: VkDescriptorPoolResetFlags) -> IO VkResult)-, pVkAllocateDescriptorSets :: FunPtr (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkDescriptorSetAllocateInfo) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult)-, pVkFreeDescriptorSets :: FunPtr (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult)-, pVkUpdateDescriptorSets :: FunPtr (("device" ::: VkDevice) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> ("descriptorCopyCount" ::: Word32) -> ("pDescriptorCopies" ::: Ptr VkCopyDescriptorSet) -> IO ())-, pVkCreateFramebuffer :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFramebufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFramebuffer" ::: Ptr VkFramebuffer) -> IO VkResult)-, pVkDestroyFramebuffer :: FunPtr (("device" ::: VkDevice) -> ("framebuffer" ::: VkFramebuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkCreateRenderPass :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkRenderPassCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pRenderPass" ::: Ptr VkRenderPass) -> IO VkResult)-, pVkDestroyRenderPass :: FunPtr (("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkGetRenderAreaGranularity :: FunPtr (("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pGranularity" ::: Ptr VkExtent2D) -> IO ())-, pVkCreateCommandPool :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkCommandPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCommandPool" ::: Ptr VkCommandPool) -> IO VkResult)-, pVkDestroyCommandPool :: FunPtr (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkResetCommandPool :: FunPtr (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolResetFlags) -> IO VkResult)-, pVkAllocateCommandBuffers :: FunPtr (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkCommandBufferAllocateInfo) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO VkResult)-, pVkFreeCommandBuffers :: FunPtr (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ())-, pVkBeginCommandBuffer :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pBeginInfo" ::: Ptr VkCommandBufferBeginInfo) -> IO VkResult)-, pVkEndCommandBuffer :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> IO VkResult)-, pVkResetCommandBuffer :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("flags" ::: VkCommandBufferResetFlags) -> IO VkResult)-, pVkCmdBindPipeline :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("pipeline" ::: VkPipeline) -> IO ())-, pVkCmdSetViewport :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr VkViewport) -> IO ())-, pVkCmdSetScissor :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("firstScissor" ::: Word32) -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr VkRect2D) -> IO ())-, pVkCmdSetLineWidth :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("lineWidth" ::: CFloat) -> IO ())-, pVkCmdSetDepthBias :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("depthBiasConstantFactor" ::: CFloat) -> ("depthBiasClamp" ::: CFloat) -> ("depthBiasSlopeFactor" ::: CFloat) -> IO ())-, pVkCmdSetBlendConstants :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("blendConstants" ::: Ptr CFloat) -> IO ())-, pVkCmdSetDepthBounds :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("minDepthBounds" ::: CFloat) -> ("maxDepthBounds" ::: CFloat) -> IO ())-, pVkCmdSetStencilCompareMask :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("compareMask" ::: Word32) -> IO ())-, pVkCmdSetStencilWriteMask :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("writeMask" ::: Word32) -> IO ())-, pVkCmdSetStencilReference :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("reference" ::: Word32) -> IO ())-, pVkCmdBindDescriptorSets :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("firstSet" ::: Word32) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> ("dynamicOffsetCount" ::: Word32) -> ("pDynamicOffsets" ::: Ptr Word32) -> IO ())-, pVkCmdBindIndexBuffer :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("indexType" ::: VkIndexType) -> IO ())-, pVkCmdBindVertexBuffers :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr VkBuffer) -> ("pOffsets" ::: Ptr VkDeviceSize) -> IO ())-, pVkCmdDraw :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("vertexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstVertex" ::: Word32) -> ("firstInstance" ::: Word32) -> IO ())-, pVkCmdDrawIndexed :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("indexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstIndex" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstInstance" ::: Word32) -> IO ())-, pVkCmdDrawIndirect :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())-, pVkCmdDrawIndexedIndirect :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())-, pVkCmdDispatch :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ())-, pVkCmdDispatchIndirect :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> IO ())-, pVkCmdCopyBuffer :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferCopy) -> IO ())-, pVkCmdCopyImage :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageCopy) -> IO ())-, pVkCmdBlitImage :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageBlit) -> ("filter" ::: VkFilter) -> IO ())-, pVkCmdCopyBufferToImage :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ())-, pVkCmdCopyImageToBuffer :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ())-, pVkCmdUpdateBuffer :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("dataSize" ::: VkDeviceSize) -> ("pData" ::: Ptr ()) -> IO ())-, pVkCmdFillBuffer :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("data" ::: Word32) -> IO ())-, pVkCmdClearColorImage :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pColor" ::: Ptr VkClearColorValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ())-, pVkCmdClearDepthStencilImage :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pDepthStencil" ::: Ptr VkClearDepthStencilValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ())-, pVkCmdClearAttachments :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("attachmentCount" ::: Word32) -> ("pAttachments" ::: Ptr VkClearAttachment) -> ("rectCount" ::: Word32) -> ("pRects" ::: Ptr VkClearRect) -> IO ())-, pVkCmdResolveImage :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageResolve) -> IO ())-, pVkCmdSetEvent :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ())-, pVkCmdResetEvent :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ())-, pVkCmdWaitEvents :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr VkEvent) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ())-, pVkCmdPipelineBarrier :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("dependencyFlags" ::: VkDependencyFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ())-, pVkCmdBeginQuery :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> ("flags" ::: VkQueryControlFlags) -> IO ())-, pVkCmdEndQuery :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ())-, pVkCmdResetQueryPool :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ())-, pVkCmdWriteTimestamp :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ())-, pVkCmdCopyQueryPoolResults :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO ())-, pVkCmdPushConstants :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("layout" ::: VkPipelineLayout) -> ("stageFlags" ::: VkShaderStageFlags) -> ("offset" ::: Word32) -> ("size" ::: Word32) -> ("pValues" ::: Ptr ()) -> IO ())-, pVkCmdBeginRenderPass :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pRenderPassBegin" ::: Ptr VkRenderPassBeginInfo) -> ("contents" ::: VkSubpassContents) -> IO ())-, pVkCmdNextSubpass :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("contents" ::: VkSubpassContents) -> IO ())-, pVkCmdEndRenderPass :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> IO ())-, pVkCmdExecuteCommands :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ())-, pVkCreateSharedSwapchainsKHR :: FunPtr (("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> IO VkResult)-, pVkCreateSwapchainKHR :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchain" ::: Ptr VkSwapchainKHR) -> IO VkResult)-, pVkDestroySwapchainKHR :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkGetSwapchainImagesKHR :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pSwapchainImageCount" ::: Ptr Word32) -> ("pSwapchainImages" ::: Ptr VkImage) -> IO VkResult)-, pVkAcquireNextImageKHR :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("timeout" ::: Word64) -> ("semaphore" ::: VkSemaphore) -> ("fence" ::: VkFence) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult)-, pVkQueuePresentKHR :: FunPtr (("queue" ::: VkQueue) -> ("pPresentInfo" ::: Ptr VkPresentInfoKHR) -> IO VkResult)-, pVkDebugMarkerSetObjectNameEXT :: FunPtr (("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugMarkerObjectNameInfoEXT) -> IO VkResult)-, pVkDebugMarkerSetObjectTagEXT :: FunPtr (("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugMarkerObjectTagInfoEXT) -> IO VkResult)-, pVkCmdDebugMarkerBeginEXT :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ())-, pVkCmdDebugMarkerEndEXT :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> IO ())-, pVkCmdDebugMarkerInsertEXT :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ())-#if defined(VK_USE_PLATFORM_WIN32_KHR)-, pVkGetMemoryWin32HandleNV :: FunPtr (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)-#endif-, pVkCmdDrawIndirectCountAMD :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())-, pVkCmdDrawIndexedIndirectCountAMD :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())-, pVkCmdProcessCommandsNVX :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pProcessCommandsInfo" ::: Ptr VkCmdProcessCommandsInfoNVX) -> IO ())-, pVkCmdReserveSpaceForCommandsNVX :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pReserveSpaceInfo" ::: Ptr VkCmdReserveSpaceForCommandsInfoNVX) -> IO ())-, pVkCreateIndirectCommandsLayoutNVX :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkIndirectCommandsLayoutCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pIndirectCommandsLayout" ::: Ptr VkIndirectCommandsLayoutNVX) -> IO VkResult)-, pVkDestroyIndirectCommandsLayoutNVX :: FunPtr (("device" ::: VkDevice) -> ("indirectCommandsLayout" ::: VkIndirectCommandsLayoutNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkCreateObjectTableNVX :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkObjectTableCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pObjectTable" ::: Ptr VkObjectTableNVX) -> IO VkResult)-, pVkDestroyObjectTableNVX :: FunPtr (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkRegisterObjectsNVX :: FunPtr (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("ppObjectTableEntries" ::: Ptr (Ptr VkObjectTableEntryNVX)) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult)-, pVkUnregisterObjectsNVX :: FunPtr (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("pObjectEntryTypes" ::: Ptr VkObjectEntryTypeNVX) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult)-, pVkCmdPushDescriptorSetKHR :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> IO ())-, pVkTrimCommandPool :: FunPtr (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolTrimFlags) -> IO ())-#if defined(VK_USE_PLATFORM_WIN32_KHR)-, pVkGetMemoryWin32HandleKHR :: FunPtr (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkMemoryGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)-, pVkGetMemoryWin32HandlePropertiesKHR :: FunPtr (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("handle" ::: HANDLE) -> ("pMemoryWin32HandleProperties" ::: Ptr VkMemoryWin32HandlePropertiesKHR) -> IO VkResult)-#endif-, pVkGetMemoryFdKHR :: FunPtr (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkMemoryGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult)-, pVkGetMemoryFdPropertiesKHR :: FunPtr (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("fd" ::: CInt) -> ("pMemoryFdProperties" ::: Ptr VkMemoryFdPropertiesKHR) -> IO VkResult)-#if defined(VK_USE_PLATFORM_WIN32_KHR)-, pVkGetSemaphoreWin32HandleKHR :: FunPtr (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkSemaphoreGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)-, pVkImportSemaphoreWin32HandleKHR :: FunPtr (("device" ::: VkDevice) -> ("pImportSemaphoreWin32HandleInfo" ::: Ptr VkImportSemaphoreWin32HandleInfoKHR) -> IO VkResult)-#endif-, pVkGetSemaphoreFdKHR :: FunPtr (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkSemaphoreGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult)-, pVkImportSemaphoreFdKHR :: FunPtr (("device" ::: VkDevice) -> ("pImportSemaphoreFdInfo" ::: Ptr VkImportSemaphoreFdInfoKHR) -> IO VkResult)-#if defined(VK_USE_PLATFORM_WIN32_KHR)-, pVkGetFenceWin32HandleKHR :: FunPtr (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkFenceGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)-, pVkImportFenceWin32HandleKHR :: FunPtr (("device" ::: VkDevice) -> ("pImportFenceWin32HandleInfo" ::: Ptr VkImportFenceWin32HandleInfoKHR) -> IO VkResult)-#endif-, pVkGetFenceFdKHR :: FunPtr (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkFenceGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult)-, pVkImportFenceFdKHR :: FunPtr (("device" ::: VkDevice) -> ("pImportFenceFdInfo" ::: Ptr VkImportFenceFdInfoKHR) -> IO VkResult)-, pVkDisplayPowerControlEXT :: FunPtr (("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayPowerInfo" ::: Ptr VkDisplayPowerInfoEXT) -> IO VkResult)-, pVkRegisterDeviceEventEXT :: FunPtr (("device" ::: VkDevice) -> ("pDeviceEventInfo" ::: Ptr VkDeviceEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult)-, pVkRegisterDisplayEventEXT :: FunPtr (("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayEventInfo" ::: Ptr VkDisplayEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult)-, pVkGetSwapchainCounterEXT :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("counter" ::: VkSurfaceCounterFlagBitsEXT) -> ("pCounterValue" ::: Ptr Word64) -> IO VkResult)-, pVkGetDeviceGroupPeerMemoryFeatures :: FunPtr (("device" ::: VkDevice) -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> ("pPeerMemoryFeatures" ::: Ptr VkPeerMemoryFeatureFlags) -> IO ())-, pVkBindBufferMemory2 :: FunPtr (("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindBufferMemoryInfo) -> IO VkResult)-, pVkBindImageMemory2 :: FunPtr (("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindImageMemoryInfo) -> IO VkResult)-, pVkCmdSetDeviceMask :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("deviceMask" ::: Word32) -> IO ())-, pVkGetDeviceGroupPresentCapabilitiesKHR :: FunPtr (("device" ::: VkDevice) -> ("pDeviceGroupPresentCapabilities" ::: Ptr VkDeviceGroupPresentCapabilitiesKHR) -> IO VkResult)-, pVkGetDeviceGroupSurfacePresentModesKHR :: FunPtr (("device" ::: VkDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pModes" ::: Ptr VkDeviceGroupPresentModeFlagsKHR) -> IO VkResult)-, pVkAcquireNextImage2KHR :: FunPtr (("device" ::: VkDevice) -> ("pAcquireInfo" ::: Ptr VkAcquireNextImageInfoKHR) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult)-, pVkCmdDispatchBase :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ())-, pVkCreateDescriptorUpdateTemplate :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorUpdateTemplateCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorUpdateTemplate" ::: Ptr VkDescriptorUpdateTemplate) -> IO VkResult)-, pVkDestroyDescriptorUpdateTemplate :: FunPtr (("device" ::: VkDevice) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkUpdateDescriptorSetWithTemplate :: FunPtr (("device" ::: VkDevice) -> ("descriptorSet" ::: VkDescriptorSet) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pData" ::: Ptr ()) -> IO ())-, pVkCmdPushDescriptorSetWithTemplateKHR :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("pData" ::: Ptr ()) -> IO ())-, pVkSetHdrMetadataEXT :: FunPtr (("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> ("pMetadata" ::: Ptr VkHdrMetadataEXT) -> IO ())-, pVkGetSwapchainStatusKHR :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> IO VkResult)-, pVkGetRefreshCycleDurationGOOGLE :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pDisplayTimingProperties" ::: Ptr VkRefreshCycleDurationGOOGLE) -> IO VkResult)-, pVkGetPastPresentationTimingGOOGLE :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pPresentationTimingCount" ::: Ptr Word32) -> ("pPresentationTimings" ::: Ptr VkPastPresentationTimingGOOGLE) -> IO VkResult)-, pVkCmdSetViewportWScalingNV :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewportWScalings" ::: Ptr VkViewportWScalingNV) -> IO ())-, pVkCmdSetDiscardRectangleEXT :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("firstDiscardRectangle" ::: Word32) -> ("discardRectangleCount" ::: Word32) -> ("pDiscardRectangles" ::: Ptr VkRect2D) -> IO ())-, pVkCmdSetSampleLocationsEXT :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pSampleLocationsInfo" ::: Ptr VkSampleLocationsInfoEXT) -> IO ())-, pVkGetBufferMemoryRequirements2 :: FunPtr (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkBufferMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ())-, pVkGetImageMemoryRequirements2 :: FunPtr (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ())-, pVkGetImageSparseMemoryRequirements2 :: FunPtr (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageSparseMemoryRequirementsInfo2) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements2) -> IO ())-, pVkCreateSamplerYcbcrConversion :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerYcbcrConversionCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pYcbcrConversion" ::: Ptr VkSamplerYcbcrConversion) -> IO VkResult)-, pVkDestroySamplerYcbcrConversion :: FunPtr (("device" ::: VkDevice) -> ("ycbcrConversion" ::: VkSamplerYcbcrConversion) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkGetDeviceQueue2 :: FunPtr (("device" ::: VkDevice) -> ("pQueueInfo" ::: Ptr VkDeviceQueueInfo2) -> ("pQueue" ::: Ptr VkQueue) -> IO ())-, pVkCreateValidationCacheEXT :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkValidationCacheCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pValidationCache" ::: Ptr VkValidationCacheEXT) -> IO VkResult)-, pVkDestroyValidationCacheEXT :: FunPtr (("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkGetValidationCacheDataEXT :: FunPtr (("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult)-, pVkMergeValidationCachesEXT :: FunPtr (("device" ::: VkDevice) -> ("dstCache" ::: VkValidationCacheEXT) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkValidationCacheEXT) -> IO VkResult)-, pVkGetDescriptorSetLayoutSupport :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pSupport" ::: Ptr VkDescriptorSetLayoutSupport) -> IO ())-, pVkGetSwapchainGrallocUsageANDROID :: FunPtr (("device" ::: VkDevice) -> ("format" ::: VkFormat) -> ("imageUsage" ::: VkImageUsageFlags) -> ("grallocUsage" ::: Ptr CInt) -> IO VkResult)-, pVkAcquireImageANDROID :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("nativeFenceFd" ::: CInt) -> ("semaphore" ::: VkSemaphore) -> ("fence" ::: VkFence) -> IO VkResult)-, pVkQueueSignalReleaseImageANDROID :: FunPtr (("queue" ::: VkQueue) -> ("waitSemaphoreCount" ::: Word32) -> ("pWaitSemaphores" ::: Ptr VkSemaphore) -> ("image" ::: VkImage) -> ("pNativeFenceFd" ::: Ptr CInt) -> IO VkResult)-, pVkGetShaderInfoAMD :: FunPtr (("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("shaderStage" ::: VkShaderStageFlagBits) -> ("infoType" ::: VkShaderInfoTypeAMD) -> ("pInfoSize" ::: Ptr CSize) -> ("pInfo" ::: Ptr ()) -> IO VkResult)-, pVkSetDebugUtilsObjectNameEXT :: FunPtr (("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugUtilsObjectNameInfoEXT) -> IO VkResult)-, pVkSetDebugUtilsObjectTagEXT :: FunPtr (("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugUtilsObjectTagInfoEXT) -> IO VkResult)-, pVkQueueBeginDebugUtilsLabelEXT :: FunPtr (("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())-, pVkQueueEndDebugUtilsLabelEXT :: FunPtr (("queue" ::: VkQueue) -> IO ())-, pVkQueueInsertDebugUtilsLabelEXT :: FunPtr (("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())-, pVkCmdBeginDebugUtilsLabelEXT :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())-, pVkCmdEndDebugUtilsLabelEXT :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> IO ())-, pVkCmdInsertDebugUtilsLabelEXT :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())-, pVkGetMemoryHostPointerPropertiesEXT :: FunPtr (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("pHostPointer" ::: Ptr ()) -> ("pMemoryHostPointerProperties" ::: Ptr VkMemoryHostPointerPropertiesEXT) -> IO VkResult)-, pVkCmdWriteBufferMarkerAMD :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("marker" ::: Word32) -> IO ())-#if defined(VK_USE_PLATFORM_ANDROID_KHR)-, pVkGetAndroidHardwareBufferPropertiesANDROID :: FunPtr (("device" ::: VkDevice) -> ("buffer" ::: Ptr AHardwareBuffer) -> ("pProperties" ::: Ptr VkAndroidHardwareBufferPropertiesANDROID) -> IO VkResult)-, pVkGetMemoryAndroidHardwareBufferANDROID :: FunPtr (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkMemoryGetAndroidHardwareBufferInfoANDROID) -> ("pBuffer" ::: Ptr (Ptr AHardwareBuffer)) -> IO VkResult)-#endif- }- deriving (Show)--data InstanceCmds = InstanceCmds- { pVkDestroyInstance :: FunPtr (("instance" ::: VkInstance) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkEnumeratePhysicalDevices :: FunPtr (("instance" ::: VkInstance) -> ("pPhysicalDeviceCount" ::: Ptr Word32) -> ("pPhysicalDevices" ::: Ptr VkPhysicalDevice) -> IO VkResult)-, pVkGetInstanceProcAddr :: FunPtr (("instance" ::: VkInstance) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction)-, pVkGetPhysicalDeviceProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties) -> IO ())-, pVkGetPhysicalDeviceQueueFamilyProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties) -> IO ())-, pVkGetPhysicalDeviceMemoryProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties) -> IO ())-, pVkGetPhysicalDeviceFeatures :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures) -> IO ())-, pVkGetPhysicalDeviceFormatProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties) -> IO ())-, pVkGetPhysicalDeviceImageFormatProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties) -> IO VkResult)-, pVkCreateDevice :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pCreateInfo" ::: Ptr VkDeviceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDevice" ::: Ptr VkDevice) -> IO VkResult)-, pVkEnumerateDeviceLayerProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkLayerProperties) -> IO VkResult)-, pVkEnumerateDeviceExtensionProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pLayerName" ::: Ptr CChar) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkExtensionProperties) -> IO VkResult)-, pVkGetPhysicalDeviceSparseImageFormatProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("samples" ::: VkSampleCountFlagBits) -> ("usage" ::: VkImageUsageFlags) -> ("tiling" ::: VkImageTiling) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties) -> IO ())-#if defined(VK_USE_PLATFORM_ANDROID_KHR)-, pVkCreateAndroidSurfaceKHR :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkAndroidSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-#endif-, pVkGetPhysicalDeviceDisplayPropertiesKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPropertiesKHR) -> IO VkResult)-, pVkGetPhysicalDeviceDisplayPlanePropertiesKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPlanePropertiesKHR) -> IO VkResult)-, pVkGetDisplayPlaneSupportedDisplaysKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("planeIndex" ::: Word32) -> ("pDisplayCount" ::: Ptr Word32) -> ("pDisplays" ::: Ptr VkDisplayKHR) -> IO VkResult)-, pVkGetDisplayModePropertiesKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayModePropertiesKHR) -> IO VkResult)-, pVkCreateDisplayModeKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pCreateInfo" ::: Ptr VkDisplayModeCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMode" ::: Ptr VkDisplayModeKHR) -> IO VkResult)-, pVkGetDisplayPlaneCapabilitiesKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("mode" ::: VkDisplayModeKHR) -> ("planeIndex" ::: Word32) -> ("pCapabilities" ::: Ptr VkDisplayPlaneCapabilitiesKHR) -> IO VkResult)-, pVkCreateDisplayPlaneSurfaceKHR :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDisplaySurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-#if defined(VK_USE_PLATFORM_MIR_KHR)-, pVkCreateMirSurfaceKHR :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMirSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-, pVkGetPhysicalDeviceMirPresentationSupportKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr MirConnection) -> IO VkBool32)-#endif-, pVkDestroySurfaceKHR :: FunPtr (("instance" ::: VkInstance) -> ("surface" ::: VkSurfaceKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkGetPhysicalDeviceSurfaceSupportKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("surface" ::: VkSurfaceKHR) -> ("pSupported" ::: Ptr VkBool32) -> IO VkResult)-, pVkGetPhysicalDeviceSurfaceCapabilitiesKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilitiesKHR) -> IO VkResult)-, pVkGetPhysicalDeviceSurfaceFormatsKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormatKHR) -> IO VkResult)-, pVkGetPhysicalDeviceSurfacePresentModesKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pPresentModeCount" ::: Ptr Word32) -> ("pPresentModes" ::: Ptr VkPresentModeKHR) -> IO VkResult)-#if defined(VK_USE_PLATFORM_VI_NN)-, pVkCreateViSurfaceNN :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkViSurfaceCreateInfoNN) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-#endif-#if defined(VK_USE_PLATFORM_WAYLAND_KHR)-, pVkCreateWaylandSurfaceKHR :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWaylandSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-, pVkGetPhysicalDeviceWaylandPresentationSupportKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("display" ::: Ptr Wl_display) -> IO VkBool32)-#endif-#if defined(VK_USE_PLATFORM_WIN32_KHR)-, pVkCreateWin32SurfaceKHR :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWin32SurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-, pVkGetPhysicalDeviceWin32PresentationSupportKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> IO VkBool32)-#endif-#if defined(VK_USE_PLATFORM_XLIB_KHR)-, pVkCreateXlibSurfaceKHR :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXlibSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-, pVkGetPhysicalDeviceXlibPresentationSupportKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("dpy" ::: Ptr Display) -> ("visualID" ::: VisualID) -> IO VkBool32)-#endif-#if defined(VK_USE_PLATFORM_XCB_KHR)-, pVkCreateXcbSurfaceKHR :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXcbSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-, pVkGetPhysicalDeviceXcbPresentationSupportKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr Xcb_connection_t) -> ("visual_id" ::: Xcb_visualid_t) -> IO VkBool32)-#endif-, pVkCreateDebugReportCallbackEXT :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugReportCallbackCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCallback" ::: Ptr VkDebugReportCallbackEXT) -> IO VkResult)-, pVkDestroyDebugReportCallbackEXT :: FunPtr (("instance" ::: VkInstance) -> ("callback" ::: VkDebugReportCallbackEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkDebugReportMessageEXT :: FunPtr (("instance" ::: VkInstance) -> ("flags" ::: VkDebugReportFlagsEXT) -> ("objectType" ::: VkDebugReportObjectTypeEXT) -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> IO ())-, pVkGetPhysicalDeviceExternalImageFormatPropertiesNV :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("externalHandleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pExternalImageFormatProperties" ::: Ptr VkExternalImageFormatPropertiesNV) -> IO VkResult)-, pVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkDeviceGeneratedCommandsFeaturesNVX) -> ("pLimits" ::: Ptr VkDeviceGeneratedCommandsLimitsNVX) -> IO ())-, pVkGetPhysicalDeviceFeatures2 :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures2) -> IO ())-, pVkGetPhysicalDeviceProperties2 :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties2) -> IO ())-, pVkGetPhysicalDeviceFormatProperties2 :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties2) -> IO ())-, pVkGetPhysicalDeviceImageFormatProperties2 :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pImageFormatInfo" ::: Ptr VkPhysicalDeviceImageFormatInfo2) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties2) -> IO VkResult)-, pVkGetPhysicalDeviceQueueFamilyProperties2 :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties2) -> IO ())-, pVkGetPhysicalDeviceMemoryProperties2 :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties2) -> IO ())-, pVkGetPhysicalDeviceSparseImageFormatProperties2 :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pFormatInfo" ::: Ptr VkPhysicalDeviceSparseImageFormatInfo2) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties2) -> IO ())-, pVkGetPhysicalDeviceExternalBufferProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalBufferInfo" ::: Ptr VkPhysicalDeviceExternalBufferInfo) -> ("pExternalBufferProperties" ::: Ptr VkExternalBufferProperties) -> IO ())-, pVkGetPhysicalDeviceExternalSemaphoreProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalSemaphoreInfo" ::: Ptr VkPhysicalDeviceExternalSemaphoreInfo) -> ("pExternalSemaphoreProperties" ::: Ptr VkExternalSemaphoreProperties) -> IO ())-, pVkGetPhysicalDeviceExternalFenceProperties :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalFenceInfo" ::: Ptr VkPhysicalDeviceExternalFenceInfo) -> ("pExternalFenceProperties" ::: Ptr VkExternalFenceProperties) -> IO ())-, pVkReleaseDisplayEXT :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> IO VkResult)-#if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)-, pVkAcquireXlibDisplayEXT :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("display" ::: VkDisplayKHR) -> IO VkResult)-, pVkGetRandROutputDisplayEXT :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("rrOutput" ::: RROutput) -> ("pDisplay" ::: Ptr VkDisplayKHR) -> IO VkResult)-#endif-, pVkGetPhysicalDeviceSurfaceCapabilities2EXT :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2EXT) -> IO VkResult)-, pVkEnumeratePhysicalDeviceGroups :: FunPtr (("instance" ::: VkInstance) -> ("pPhysicalDeviceGroupCount" ::: Ptr Word32) -> ("pPhysicalDeviceGroupProperties" ::: Ptr VkPhysicalDeviceGroupProperties) -> IO VkResult)-, pVkGetPhysicalDevicePresentRectanglesKHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pRectCount" ::: Ptr Word32) -> ("pRects" ::: Ptr VkRect2D) -> IO VkResult)-#if defined(VK_USE_PLATFORM_IOS_MVK)-, pVkCreateIOSSurfaceMVK :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkIOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-#endif-#if defined(VK_USE_PLATFORM_MACOS_MVK)-, pVkCreateMacOSSurfaceMVK :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMacOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-#endif-, pVkGetPhysicalDeviceMultisamplePropertiesEXT :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("samples" ::: VkSampleCountFlagBits) -> ("pMultisampleProperties" ::: Ptr VkMultisamplePropertiesEXT) -> IO ())-, pVkGetPhysicalDeviceSurfaceCapabilities2KHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2KHR) -> IO VkResult)-, pVkGetPhysicalDeviceSurfaceFormats2KHR :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormat2KHR) -> IO VkResult)-, pVkCreateDebugUtilsMessengerEXT :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugUtilsMessengerCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMessenger" ::: Ptr VkDebugUtilsMessengerEXT) -> IO VkResult)-, pVkDestroyDebugUtilsMessengerEXT :: FunPtr (("instance" ::: VkInstance) -> ("messenger" ::: VkDebugUtilsMessengerEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-, pVkSubmitDebugUtilsMessageEXT :: FunPtr (("instance" ::: VkInstance) -> ("messageSeverity" ::: VkDebugUtilsMessageSeverityFlagBitsEXT) -> ("messageTypes" ::: VkDebugUtilsMessageTypeFlagsEXT) -> ("pCallbackData" ::: Ptr VkDebugUtilsMessengerCallbackDataEXT) -> IO ())- }- deriving (Show)--initDeviceCmds :: VkDevice -> IO DeviceCmds-initDeviceCmds handle = DeviceCmds- <$> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetDeviceProcAddr\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyDevice\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetDeviceQueue\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkQueueSubmit\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkQueueWaitIdle\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDeviceWaitIdle\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkAllocateMemory\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkFreeMemory\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkMapMemory\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkUnmapMemory\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkFlushMappedMemoryRanges\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkInvalidateMappedMemoryRanges\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetDeviceMemoryCommitment\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetBufferMemoryRequirements\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkBindBufferMemory\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetImageMemoryRequirements\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkBindImageMemory\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetImageSparseMemoryRequirements\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkQueueBindSparse\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateFence\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyFence\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkResetFences\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetFenceStatus\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkWaitForFences\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateSemaphore\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroySemaphore\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateEvent\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyEvent\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetEventStatus\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkSetEvent\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkResetEvent\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateQueryPool\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyQueryPool\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetQueryPoolResults\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateBuffer\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyBuffer\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateBufferView\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyBufferView\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateImage\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyImage\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetImageSubresourceLayout\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateImageView\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyImageView\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateShaderModule\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyShaderModule\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreatePipelineCache\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyPipelineCache\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetPipelineCacheData\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkMergePipelineCaches\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateGraphicsPipelines\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateComputePipelines\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyPipeline\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreatePipelineLayout\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyPipelineLayout\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateSampler\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroySampler\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateDescriptorSetLayout\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyDescriptorSetLayout\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateDescriptorPool\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyDescriptorPool\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkResetDescriptorPool\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkAllocateDescriptorSets\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkFreeDescriptorSets\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkUpdateDescriptorSets\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateFramebuffer\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyFramebuffer\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateRenderPass\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyRenderPass\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetRenderAreaGranularity\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateCommandPool\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyCommandPool\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkResetCommandPool\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkAllocateCommandBuffers\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkFreeCommandBuffers\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkBeginCommandBuffer\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkEndCommandBuffer\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkResetCommandBuffer\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdBindPipeline\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetViewport\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetScissor\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetLineWidth\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetDepthBias\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetBlendConstants\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetDepthBounds\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetStencilCompareMask\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetStencilWriteMask\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetStencilReference\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdBindDescriptorSets\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdBindIndexBuffer\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdBindVertexBuffers\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDraw\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDrawIndexed\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDrawIndirect\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDrawIndexedIndirect\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDispatch\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDispatchIndirect\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdCopyBuffer\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdCopyImage\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdBlitImage\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdCopyBufferToImage\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdCopyImageToBuffer\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdUpdateBuffer\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdFillBuffer\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdClearColorImage\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdClearDepthStencilImage\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdClearAttachments\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdResolveImage\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetEvent\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdResetEvent\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdWaitEvents\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdPipelineBarrier\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdBeginQuery\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdEndQuery\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdResetQueryPool\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdWriteTimestamp\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdCopyQueryPoolResults\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdPushConstants\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdBeginRenderPass\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdNextSubpass\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdEndRenderPass\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdExecuteCommands\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateSharedSwapchainsKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateSwapchainKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroySwapchainKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetSwapchainImagesKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkAcquireNextImageKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkQueuePresentKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDebugMarkerSetObjectNameEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDebugMarkerSetObjectTagEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDebugMarkerBeginEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDebugMarkerEndEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDebugMarkerInsertEXT\NUL"#))-#if defined(VK_USE_PLATFORM_WIN32_KHR)- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetMemoryWin32HandleNV\NUL"#))-#endif- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDrawIndirectCountAMD\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDrawIndexedIndirectCountAMD\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdProcessCommandsNVX\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdReserveSpaceForCommandsNVX\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateIndirectCommandsLayoutNVX\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyIndirectCommandsLayoutNVX\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateObjectTableNVX\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyObjectTableNVX\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkRegisterObjectsNVX\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkUnregisterObjectsNVX\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdPushDescriptorSetKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkTrimCommandPool\NUL"#))-#if defined(VK_USE_PLATFORM_WIN32_KHR)- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetMemoryWin32HandleKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetMemoryWin32HandlePropertiesKHR\NUL"#))-#endif- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetMemoryFdKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetMemoryFdPropertiesKHR\NUL"#))-#if defined(VK_USE_PLATFORM_WIN32_KHR)- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetSemaphoreWin32HandleKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkImportSemaphoreWin32HandleKHR\NUL"#))-#endif- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetSemaphoreFdKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkImportSemaphoreFdKHR\NUL"#))-#if defined(VK_USE_PLATFORM_WIN32_KHR)- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetFenceWin32HandleKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkImportFenceWin32HandleKHR\NUL"#))-#endif- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetFenceFdKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkImportFenceFdKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDisplayPowerControlEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkRegisterDeviceEventEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkRegisterDisplayEventEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetSwapchainCounterEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetDeviceGroupPeerMemoryFeatures\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkBindBufferMemory2\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkBindImageMemory2\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetDeviceMask\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetDeviceGroupPresentCapabilitiesKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetDeviceGroupSurfacePresentModesKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkAcquireNextImage2KHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdDispatchBase\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateDescriptorUpdateTemplate\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyDescriptorUpdateTemplate\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkUpdateDescriptorSetWithTemplate\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdPushDescriptorSetWithTemplateKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkSetHdrMetadataEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetSwapchainStatusKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetRefreshCycleDurationGOOGLE\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetPastPresentationTimingGOOGLE\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetViewportWScalingNV\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetDiscardRectangleEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdSetSampleLocationsEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetBufferMemoryRequirements2\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetImageMemoryRequirements2\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetImageSparseMemoryRequirements2\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateSamplerYcbcrConversion\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroySamplerYcbcrConversion\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetDeviceQueue2\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCreateValidationCacheEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkDestroyValidationCacheEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetValidationCacheDataEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkMergeValidationCachesEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetDescriptorSetLayoutSupport\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetSwapchainGrallocUsageANDROID\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkAcquireImageANDROID\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkQueueSignalReleaseImageANDROID\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetShaderInfoAMD\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkSetDebugUtilsObjectNameEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkSetDebugUtilsObjectTagEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkQueueBeginDebugUtilsLabelEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkQueueEndDebugUtilsLabelEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkQueueInsertDebugUtilsLabelEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdBeginDebugUtilsLabelEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdEndDebugUtilsLabelEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdInsertDebugUtilsLabelEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetMemoryHostPointerPropertiesEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkCmdWriteBufferMarkerAMD\NUL"#))-#if defined(VK_USE_PLATFORM_ANDROID_KHR)- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetAndroidHardwareBufferPropertiesANDROID\NUL"#))- <*> (castPtrToFunPtr <$> vkGetDeviceProcAddr handle (GHC.Ptr.Ptr "vkGetMemoryAndroidHardwareBufferANDROID\NUL"#))-#endif--initInstanceCmds :: VkInstance -> IO InstanceCmds-initInstanceCmds handle = InstanceCmds- <$> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkDestroyInstance\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkEnumeratePhysicalDevices\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetInstanceProcAddr\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceProperties\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceQueueFamilyProperties\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceMemoryProperties\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceFeatures\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceFormatProperties\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceImageFormatProperties\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateDevice\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkEnumerateDeviceLayerProperties\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkEnumerateDeviceExtensionProperties\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceSparseImageFormatProperties\NUL"#))-#if defined(VK_USE_PLATFORM_ANDROID_KHR)- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateAndroidSurfaceKHR\NUL"#))-#endif- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceDisplayPropertiesKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceDisplayPlanePropertiesKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetDisplayPlaneSupportedDisplaysKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetDisplayModePropertiesKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateDisplayModeKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetDisplayPlaneCapabilitiesKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateDisplayPlaneSurfaceKHR\NUL"#))-#if defined(VK_USE_PLATFORM_MIR_KHR)- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateMirSurfaceKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceMirPresentationSupportKHR\NUL"#))-#endif- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkDestroySurfaceKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceSurfaceSupportKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceSurfaceCapabilitiesKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceSurfaceFormatsKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceSurfacePresentModesKHR\NUL"#))-#if defined(VK_USE_PLATFORM_VI_NN)- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateViSurfaceNN\NUL"#))-#endif-#if defined(VK_USE_PLATFORM_WAYLAND_KHR)- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateWaylandSurfaceKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceWaylandPresentationSupportKHR\NUL"#))-#endif-#if defined(VK_USE_PLATFORM_WIN32_KHR)- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateWin32SurfaceKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceWin32PresentationSupportKHR\NUL"#))-#endif-#if defined(VK_USE_PLATFORM_XLIB_KHR)- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateXlibSurfaceKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceXlibPresentationSupportKHR\NUL"#))-#endif-#if defined(VK_USE_PLATFORM_XCB_KHR)- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateXcbSurfaceKHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceXcbPresentationSupportKHR\NUL"#))-#endif- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateDebugReportCallbackEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkDestroyDebugReportCallbackEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkDebugReportMessageEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceExternalImageFormatPropertiesNV\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceFeatures2\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceProperties2\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceFormatProperties2\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceImageFormatProperties2\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceQueueFamilyProperties2\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceMemoryProperties2\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceSparseImageFormatProperties2\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceExternalBufferProperties\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceExternalSemaphoreProperties\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceExternalFenceProperties\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkReleaseDisplayEXT\NUL"#))-#if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkAcquireXlibDisplayEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetRandROutputDisplayEXT\NUL"#))-#endif- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceSurfaceCapabilities2EXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkEnumeratePhysicalDeviceGroups\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDevicePresentRectanglesKHR\NUL"#))-#if defined(VK_USE_PLATFORM_IOS_MVK)- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateIOSSurfaceMVK\NUL"#))-#endif-#if defined(VK_USE_PLATFORM_MACOS_MVK)- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateMacOSSurfaceMVK\NUL"#))-#endif- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceMultisamplePropertiesEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceSurfaceCapabilities2KHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkGetPhysicalDeviceSurfaceFormats2KHR\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkCreateDebugUtilsMessengerEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkDestroyDebugUtilsMessengerEXT\NUL"#))- <*> (castPtrToFunPtr <$> vkGetInstanceProcAddr handle (GHC.Ptr.Ptr "vkSubmitDebugUtilsMessageEXT\NUL"#))--hasGetDeviceProcAddr :: DeviceCmds -> Bool-hasGetDeviceProcAddr = (/= nullFunPtr) . pVkGetDeviceProcAddr-hasDestroyDevice :: DeviceCmds -> Bool-hasDestroyDevice = (/= nullFunPtr) . pVkDestroyDevice-hasGetDeviceQueue :: DeviceCmds -> Bool-hasGetDeviceQueue = (/= nullFunPtr) . pVkGetDeviceQueue-hasQueueSubmit :: DeviceCmds -> Bool-hasQueueSubmit = (/= nullFunPtr) . pVkQueueSubmit-hasQueueWaitIdle :: DeviceCmds -> Bool-hasQueueWaitIdle = (/= nullFunPtr) . pVkQueueWaitIdle-hasDeviceWaitIdle :: DeviceCmds -> Bool-hasDeviceWaitIdle = (/= nullFunPtr) . pVkDeviceWaitIdle-hasAllocateMemory :: DeviceCmds -> Bool-hasAllocateMemory = (/= nullFunPtr) . pVkAllocateMemory-hasFreeMemory :: DeviceCmds -> Bool-hasFreeMemory = (/= nullFunPtr) . pVkFreeMemory-hasMapMemory :: DeviceCmds -> Bool-hasMapMemory = (/= nullFunPtr) . pVkMapMemory-hasUnmapMemory :: DeviceCmds -> Bool-hasUnmapMemory = (/= nullFunPtr) . pVkUnmapMemory-hasFlushMappedMemoryRanges :: DeviceCmds -> Bool-hasFlushMappedMemoryRanges = (/= nullFunPtr) . pVkFlushMappedMemoryRanges-hasInvalidateMappedMemoryRanges :: DeviceCmds -> Bool-hasInvalidateMappedMemoryRanges = (/= nullFunPtr) . pVkInvalidateMappedMemoryRanges-hasGetDeviceMemoryCommitment :: DeviceCmds -> Bool-hasGetDeviceMemoryCommitment = (/= nullFunPtr) . pVkGetDeviceMemoryCommitment-hasGetBufferMemoryRequirements :: DeviceCmds -> Bool-hasGetBufferMemoryRequirements = (/= nullFunPtr) . pVkGetBufferMemoryRequirements-hasBindBufferMemory :: DeviceCmds -> Bool-hasBindBufferMemory = (/= nullFunPtr) . pVkBindBufferMemory-hasGetImageMemoryRequirements :: DeviceCmds -> Bool-hasGetImageMemoryRequirements = (/= nullFunPtr) . pVkGetImageMemoryRequirements-hasBindImageMemory :: DeviceCmds -> Bool-hasBindImageMemory = (/= nullFunPtr) . pVkBindImageMemory-hasGetImageSparseMemoryRequirements :: DeviceCmds -> Bool-hasGetImageSparseMemoryRequirements = (/= nullFunPtr) . pVkGetImageSparseMemoryRequirements-hasQueueBindSparse :: DeviceCmds -> Bool-hasQueueBindSparse = (/= nullFunPtr) . pVkQueueBindSparse-hasCreateFence :: DeviceCmds -> Bool-hasCreateFence = (/= nullFunPtr) . pVkCreateFence-hasDestroyFence :: DeviceCmds -> Bool-hasDestroyFence = (/= nullFunPtr) . pVkDestroyFence-hasResetFences :: DeviceCmds -> Bool-hasResetFences = (/= nullFunPtr) . pVkResetFences-hasGetFenceStatus :: DeviceCmds -> Bool-hasGetFenceStatus = (/= nullFunPtr) . pVkGetFenceStatus-hasWaitForFences :: DeviceCmds -> Bool-hasWaitForFences = (/= nullFunPtr) . pVkWaitForFences-hasCreateSemaphore :: DeviceCmds -> Bool-hasCreateSemaphore = (/= nullFunPtr) . pVkCreateSemaphore-hasDestroySemaphore :: DeviceCmds -> Bool-hasDestroySemaphore = (/= nullFunPtr) . pVkDestroySemaphore-hasCreateEvent :: DeviceCmds -> Bool-hasCreateEvent = (/= nullFunPtr) . pVkCreateEvent-hasDestroyEvent :: DeviceCmds -> Bool-hasDestroyEvent = (/= nullFunPtr) . pVkDestroyEvent-hasGetEventStatus :: DeviceCmds -> Bool-hasGetEventStatus = (/= nullFunPtr) . pVkGetEventStatus-hasSetEvent :: DeviceCmds -> Bool-hasSetEvent = (/= nullFunPtr) . pVkSetEvent-hasResetEvent :: DeviceCmds -> Bool-hasResetEvent = (/= nullFunPtr) . pVkResetEvent-hasCreateQueryPool :: DeviceCmds -> Bool-hasCreateQueryPool = (/= nullFunPtr) . pVkCreateQueryPool-hasDestroyQueryPool :: DeviceCmds -> Bool-hasDestroyQueryPool = (/= nullFunPtr) . pVkDestroyQueryPool-hasGetQueryPoolResults :: DeviceCmds -> Bool-hasGetQueryPoolResults = (/= nullFunPtr) . pVkGetQueryPoolResults-hasCreateBuffer :: DeviceCmds -> Bool-hasCreateBuffer = (/= nullFunPtr) . pVkCreateBuffer-hasDestroyBuffer :: DeviceCmds -> Bool-hasDestroyBuffer = (/= nullFunPtr) . pVkDestroyBuffer-hasCreateBufferView :: DeviceCmds -> Bool-hasCreateBufferView = (/= nullFunPtr) . pVkCreateBufferView-hasDestroyBufferView :: DeviceCmds -> Bool-hasDestroyBufferView = (/= nullFunPtr) . pVkDestroyBufferView-hasCreateImage :: DeviceCmds -> Bool-hasCreateImage = (/= nullFunPtr) . pVkCreateImage-hasDestroyImage :: DeviceCmds -> Bool-hasDestroyImage = (/= nullFunPtr) . pVkDestroyImage-hasGetImageSubresourceLayout :: DeviceCmds -> Bool-hasGetImageSubresourceLayout = (/= nullFunPtr) . pVkGetImageSubresourceLayout-hasCreateImageView :: DeviceCmds -> Bool-hasCreateImageView = (/= nullFunPtr) . pVkCreateImageView-hasDestroyImageView :: DeviceCmds -> Bool-hasDestroyImageView = (/= nullFunPtr) . pVkDestroyImageView-hasCreateShaderModule :: DeviceCmds -> Bool-hasCreateShaderModule = (/= nullFunPtr) . pVkCreateShaderModule-hasDestroyShaderModule :: DeviceCmds -> Bool-hasDestroyShaderModule = (/= nullFunPtr) . pVkDestroyShaderModule-hasCreatePipelineCache :: DeviceCmds -> Bool-hasCreatePipelineCache = (/= nullFunPtr) . pVkCreatePipelineCache-hasDestroyPipelineCache :: DeviceCmds -> Bool-hasDestroyPipelineCache = (/= nullFunPtr) . pVkDestroyPipelineCache-hasGetPipelineCacheData :: DeviceCmds -> Bool-hasGetPipelineCacheData = (/= nullFunPtr) . pVkGetPipelineCacheData-hasMergePipelineCaches :: DeviceCmds -> Bool-hasMergePipelineCaches = (/= nullFunPtr) . pVkMergePipelineCaches-hasCreateGraphicsPipelines :: DeviceCmds -> Bool-hasCreateGraphicsPipelines = (/= nullFunPtr) . pVkCreateGraphicsPipelines-hasCreateComputePipelines :: DeviceCmds -> Bool-hasCreateComputePipelines = (/= nullFunPtr) . pVkCreateComputePipelines-hasDestroyPipeline :: DeviceCmds -> Bool-hasDestroyPipeline = (/= nullFunPtr) . pVkDestroyPipeline-hasCreatePipelineLayout :: DeviceCmds -> Bool-hasCreatePipelineLayout = (/= nullFunPtr) . pVkCreatePipelineLayout-hasDestroyPipelineLayout :: DeviceCmds -> Bool-hasDestroyPipelineLayout = (/= nullFunPtr) . pVkDestroyPipelineLayout-hasCreateSampler :: DeviceCmds -> Bool-hasCreateSampler = (/= nullFunPtr) . pVkCreateSampler-hasDestroySampler :: DeviceCmds -> Bool-hasDestroySampler = (/= nullFunPtr) . pVkDestroySampler-hasCreateDescriptorSetLayout :: DeviceCmds -> Bool-hasCreateDescriptorSetLayout = (/= nullFunPtr) . pVkCreateDescriptorSetLayout-hasDestroyDescriptorSetLayout :: DeviceCmds -> Bool-hasDestroyDescriptorSetLayout = (/= nullFunPtr) . pVkDestroyDescriptorSetLayout-hasCreateDescriptorPool :: DeviceCmds -> Bool-hasCreateDescriptorPool = (/= nullFunPtr) . pVkCreateDescriptorPool-hasDestroyDescriptorPool :: DeviceCmds -> Bool-hasDestroyDescriptorPool = (/= nullFunPtr) . pVkDestroyDescriptorPool-hasResetDescriptorPool :: DeviceCmds -> Bool-hasResetDescriptorPool = (/= nullFunPtr) . pVkResetDescriptorPool-hasAllocateDescriptorSets :: DeviceCmds -> Bool-hasAllocateDescriptorSets = (/= nullFunPtr) . pVkAllocateDescriptorSets-hasFreeDescriptorSets :: DeviceCmds -> Bool-hasFreeDescriptorSets = (/= nullFunPtr) . pVkFreeDescriptorSets-hasUpdateDescriptorSets :: DeviceCmds -> Bool-hasUpdateDescriptorSets = (/= nullFunPtr) . pVkUpdateDescriptorSets-hasCreateFramebuffer :: DeviceCmds -> Bool-hasCreateFramebuffer = (/= nullFunPtr) . pVkCreateFramebuffer-hasDestroyFramebuffer :: DeviceCmds -> Bool-hasDestroyFramebuffer = (/= nullFunPtr) . pVkDestroyFramebuffer-hasCreateRenderPass :: DeviceCmds -> Bool-hasCreateRenderPass = (/= nullFunPtr) . pVkCreateRenderPass-hasDestroyRenderPass :: DeviceCmds -> Bool-hasDestroyRenderPass = (/= nullFunPtr) . pVkDestroyRenderPass-hasGetRenderAreaGranularity :: DeviceCmds -> Bool-hasGetRenderAreaGranularity = (/= nullFunPtr) . pVkGetRenderAreaGranularity-hasCreateCommandPool :: DeviceCmds -> Bool-hasCreateCommandPool = (/= nullFunPtr) . pVkCreateCommandPool-hasDestroyCommandPool :: DeviceCmds -> Bool-hasDestroyCommandPool = (/= nullFunPtr) . pVkDestroyCommandPool-hasResetCommandPool :: DeviceCmds -> Bool-hasResetCommandPool = (/= nullFunPtr) . pVkResetCommandPool-hasAllocateCommandBuffers :: DeviceCmds -> Bool-hasAllocateCommandBuffers = (/= nullFunPtr) . pVkAllocateCommandBuffers-hasFreeCommandBuffers :: DeviceCmds -> Bool-hasFreeCommandBuffers = (/= nullFunPtr) . pVkFreeCommandBuffers-hasBeginCommandBuffer :: DeviceCmds -> Bool-hasBeginCommandBuffer = (/= nullFunPtr) . pVkBeginCommandBuffer-hasEndCommandBuffer :: DeviceCmds -> Bool-hasEndCommandBuffer = (/= nullFunPtr) . pVkEndCommandBuffer-hasResetCommandBuffer :: DeviceCmds -> Bool-hasResetCommandBuffer = (/= nullFunPtr) . pVkResetCommandBuffer-hasCmdBindPipeline :: DeviceCmds -> Bool-hasCmdBindPipeline = (/= nullFunPtr) . pVkCmdBindPipeline-hasCmdSetViewport :: DeviceCmds -> Bool-hasCmdSetViewport = (/= nullFunPtr) . pVkCmdSetViewport-hasCmdSetScissor :: DeviceCmds -> Bool-hasCmdSetScissor = (/= nullFunPtr) . pVkCmdSetScissor-hasCmdSetLineWidth :: DeviceCmds -> Bool-hasCmdSetLineWidth = (/= nullFunPtr) . pVkCmdSetLineWidth-hasCmdSetDepthBias :: DeviceCmds -> Bool-hasCmdSetDepthBias = (/= nullFunPtr) . pVkCmdSetDepthBias-hasCmdSetBlendConstants :: DeviceCmds -> Bool-hasCmdSetBlendConstants = (/= nullFunPtr) . pVkCmdSetBlendConstants-hasCmdSetDepthBounds :: DeviceCmds -> Bool-hasCmdSetDepthBounds = (/= nullFunPtr) . pVkCmdSetDepthBounds-hasCmdSetStencilCompareMask :: DeviceCmds -> Bool-hasCmdSetStencilCompareMask = (/= nullFunPtr) . pVkCmdSetStencilCompareMask-hasCmdSetStencilWriteMask :: DeviceCmds -> Bool-hasCmdSetStencilWriteMask = (/= nullFunPtr) . pVkCmdSetStencilWriteMask-hasCmdSetStencilReference :: DeviceCmds -> Bool-hasCmdSetStencilReference = (/= nullFunPtr) . pVkCmdSetStencilReference-hasCmdBindDescriptorSets :: DeviceCmds -> Bool-hasCmdBindDescriptorSets = (/= nullFunPtr) . pVkCmdBindDescriptorSets-hasCmdBindIndexBuffer :: DeviceCmds -> Bool-hasCmdBindIndexBuffer = (/= nullFunPtr) . pVkCmdBindIndexBuffer-hasCmdBindVertexBuffers :: DeviceCmds -> Bool-hasCmdBindVertexBuffers = (/= nullFunPtr) . pVkCmdBindVertexBuffers-hasCmdDraw :: DeviceCmds -> Bool-hasCmdDraw = (/= nullFunPtr) . pVkCmdDraw-hasCmdDrawIndexed :: DeviceCmds -> Bool-hasCmdDrawIndexed = (/= nullFunPtr) . pVkCmdDrawIndexed-hasCmdDrawIndirect :: DeviceCmds -> Bool-hasCmdDrawIndirect = (/= nullFunPtr) . pVkCmdDrawIndirect-hasCmdDrawIndexedIndirect :: DeviceCmds -> Bool-hasCmdDrawIndexedIndirect = (/= nullFunPtr) . pVkCmdDrawIndexedIndirect-hasCmdDispatch :: DeviceCmds -> Bool-hasCmdDispatch = (/= nullFunPtr) . pVkCmdDispatch-hasCmdDispatchIndirect :: DeviceCmds -> Bool-hasCmdDispatchIndirect = (/= nullFunPtr) . pVkCmdDispatchIndirect-hasCmdCopyBuffer :: DeviceCmds -> Bool-hasCmdCopyBuffer = (/= nullFunPtr) . pVkCmdCopyBuffer-hasCmdCopyImage :: DeviceCmds -> Bool-hasCmdCopyImage = (/= nullFunPtr) . pVkCmdCopyImage-hasCmdBlitImage :: DeviceCmds -> Bool-hasCmdBlitImage = (/= nullFunPtr) . pVkCmdBlitImage-hasCmdCopyBufferToImage :: DeviceCmds -> Bool-hasCmdCopyBufferToImage = (/= nullFunPtr) . pVkCmdCopyBufferToImage-hasCmdCopyImageToBuffer :: DeviceCmds -> Bool-hasCmdCopyImageToBuffer = (/= nullFunPtr) . pVkCmdCopyImageToBuffer-hasCmdUpdateBuffer :: DeviceCmds -> Bool-hasCmdUpdateBuffer = (/= nullFunPtr) . pVkCmdUpdateBuffer-hasCmdFillBuffer :: DeviceCmds -> Bool-hasCmdFillBuffer = (/= nullFunPtr) . pVkCmdFillBuffer-hasCmdClearColorImage :: DeviceCmds -> Bool-hasCmdClearColorImage = (/= nullFunPtr) . pVkCmdClearColorImage-hasCmdClearDepthStencilImage :: DeviceCmds -> Bool-hasCmdClearDepthStencilImage = (/= nullFunPtr) . pVkCmdClearDepthStencilImage-hasCmdClearAttachments :: DeviceCmds -> Bool-hasCmdClearAttachments = (/= nullFunPtr) . pVkCmdClearAttachments-hasCmdResolveImage :: DeviceCmds -> Bool-hasCmdResolveImage = (/= nullFunPtr) . pVkCmdResolveImage-hasCmdSetEvent :: DeviceCmds -> Bool-hasCmdSetEvent = (/= nullFunPtr) . pVkCmdSetEvent-hasCmdResetEvent :: DeviceCmds -> Bool-hasCmdResetEvent = (/= nullFunPtr) . pVkCmdResetEvent-hasCmdWaitEvents :: DeviceCmds -> Bool-hasCmdWaitEvents = (/= nullFunPtr) . pVkCmdWaitEvents-hasCmdPipelineBarrier :: DeviceCmds -> Bool-hasCmdPipelineBarrier = (/= nullFunPtr) . pVkCmdPipelineBarrier-hasCmdBeginQuery :: DeviceCmds -> Bool-hasCmdBeginQuery = (/= nullFunPtr) . pVkCmdBeginQuery-hasCmdEndQuery :: DeviceCmds -> Bool-hasCmdEndQuery = (/= nullFunPtr) . pVkCmdEndQuery-hasCmdResetQueryPool :: DeviceCmds -> Bool-hasCmdResetQueryPool = (/= nullFunPtr) . pVkCmdResetQueryPool-hasCmdWriteTimestamp :: DeviceCmds -> Bool-hasCmdWriteTimestamp = (/= nullFunPtr) . pVkCmdWriteTimestamp-hasCmdCopyQueryPoolResults :: DeviceCmds -> Bool-hasCmdCopyQueryPoolResults = (/= nullFunPtr) . pVkCmdCopyQueryPoolResults-hasCmdPushConstants :: DeviceCmds -> Bool-hasCmdPushConstants = (/= nullFunPtr) . pVkCmdPushConstants-hasCmdBeginRenderPass :: DeviceCmds -> Bool-hasCmdBeginRenderPass = (/= nullFunPtr) . pVkCmdBeginRenderPass-hasCmdNextSubpass :: DeviceCmds -> Bool-hasCmdNextSubpass = (/= nullFunPtr) . pVkCmdNextSubpass-hasCmdEndRenderPass :: DeviceCmds -> Bool-hasCmdEndRenderPass = (/= nullFunPtr) . pVkCmdEndRenderPass-hasCmdExecuteCommands :: DeviceCmds -> Bool-hasCmdExecuteCommands = (/= nullFunPtr) . pVkCmdExecuteCommands-hasCreateSharedSwapchainsKHR :: DeviceCmds -> Bool-hasCreateSharedSwapchainsKHR = (/= nullFunPtr) . pVkCreateSharedSwapchainsKHR-hasCreateSwapchainKHR :: DeviceCmds -> Bool-hasCreateSwapchainKHR = (/= nullFunPtr) . pVkCreateSwapchainKHR-hasDestroySwapchainKHR :: DeviceCmds -> Bool-hasDestroySwapchainKHR = (/= nullFunPtr) . pVkDestroySwapchainKHR-hasGetSwapchainImagesKHR :: DeviceCmds -> Bool-hasGetSwapchainImagesKHR = (/= nullFunPtr) . pVkGetSwapchainImagesKHR-hasAcquireNextImageKHR :: DeviceCmds -> Bool-hasAcquireNextImageKHR = (/= nullFunPtr) . pVkAcquireNextImageKHR-hasQueuePresentKHR :: DeviceCmds -> Bool-hasQueuePresentKHR = (/= nullFunPtr) . pVkQueuePresentKHR-hasDebugMarkerSetObjectNameEXT :: DeviceCmds -> Bool-hasDebugMarkerSetObjectNameEXT = (/= nullFunPtr) . pVkDebugMarkerSetObjectNameEXT-hasDebugMarkerSetObjectTagEXT :: DeviceCmds -> Bool-hasDebugMarkerSetObjectTagEXT = (/= nullFunPtr) . pVkDebugMarkerSetObjectTagEXT-hasCmdDebugMarkerBeginEXT :: DeviceCmds -> Bool-hasCmdDebugMarkerBeginEXT = (/= nullFunPtr) . pVkCmdDebugMarkerBeginEXT-hasCmdDebugMarkerEndEXT :: DeviceCmds -> Bool-hasCmdDebugMarkerEndEXT = (/= nullFunPtr) . pVkCmdDebugMarkerEndEXT-hasCmdDebugMarkerInsertEXT :: DeviceCmds -> Bool-hasCmdDebugMarkerInsertEXT = (/= nullFunPtr) . pVkCmdDebugMarkerInsertEXT-#if defined(VK_USE_PLATFORM_WIN32_KHR)-hasGetMemoryWin32HandleNV :: DeviceCmds -> Bool-hasGetMemoryWin32HandleNV = (/= nullFunPtr) . pVkGetMemoryWin32HandleNV-#endif-hasCmdDrawIndirectCountAMD :: DeviceCmds -> Bool-hasCmdDrawIndirectCountAMD = (/= nullFunPtr) . pVkCmdDrawIndirectCountAMD-hasCmdDrawIndexedIndirectCountAMD :: DeviceCmds -> Bool-hasCmdDrawIndexedIndirectCountAMD = (/= nullFunPtr) . pVkCmdDrawIndexedIndirectCountAMD-hasCmdProcessCommandsNVX :: DeviceCmds -> Bool-hasCmdProcessCommandsNVX = (/= nullFunPtr) . pVkCmdProcessCommandsNVX-hasCmdReserveSpaceForCommandsNVX :: DeviceCmds -> Bool-hasCmdReserveSpaceForCommandsNVX = (/= nullFunPtr) . pVkCmdReserveSpaceForCommandsNVX-hasCreateIndirectCommandsLayoutNVX :: DeviceCmds -> Bool-hasCreateIndirectCommandsLayoutNVX = (/= nullFunPtr) . pVkCreateIndirectCommandsLayoutNVX-hasDestroyIndirectCommandsLayoutNVX :: DeviceCmds -> Bool-hasDestroyIndirectCommandsLayoutNVX = (/= nullFunPtr) . pVkDestroyIndirectCommandsLayoutNVX-hasCreateObjectTableNVX :: DeviceCmds -> Bool-hasCreateObjectTableNVX = (/= nullFunPtr) . pVkCreateObjectTableNVX-hasDestroyObjectTableNVX :: DeviceCmds -> Bool-hasDestroyObjectTableNVX = (/= nullFunPtr) . pVkDestroyObjectTableNVX-hasRegisterObjectsNVX :: DeviceCmds -> Bool-hasRegisterObjectsNVX = (/= nullFunPtr) . pVkRegisterObjectsNVX-hasUnregisterObjectsNVX :: DeviceCmds -> Bool-hasUnregisterObjectsNVX = (/= nullFunPtr) . pVkUnregisterObjectsNVX-hasCmdPushDescriptorSetKHR :: DeviceCmds -> Bool-hasCmdPushDescriptorSetKHR = (/= nullFunPtr) . pVkCmdPushDescriptorSetKHR-hasTrimCommandPool :: DeviceCmds -> Bool-hasTrimCommandPool = (/= nullFunPtr) . pVkTrimCommandPool-#if defined(VK_USE_PLATFORM_WIN32_KHR)-hasGetMemoryWin32HandleKHR :: DeviceCmds -> Bool-hasGetMemoryWin32HandleKHR = (/= nullFunPtr) . pVkGetMemoryWin32HandleKHR-hasGetMemoryWin32HandlePropertiesKHR :: DeviceCmds -> Bool-hasGetMemoryWin32HandlePropertiesKHR = (/= nullFunPtr) . pVkGetMemoryWin32HandlePropertiesKHR-#endif-hasGetMemoryFdKHR :: DeviceCmds -> Bool-hasGetMemoryFdKHR = (/= nullFunPtr) . pVkGetMemoryFdKHR-hasGetMemoryFdPropertiesKHR :: DeviceCmds -> Bool-hasGetMemoryFdPropertiesKHR = (/= nullFunPtr) . pVkGetMemoryFdPropertiesKHR-#if defined(VK_USE_PLATFORM_WIN32_KHR)-hasGetSemaphoreWin32HandleKHR :: DeviceCmds -> Bool-hasGetSemaphoreWin32HandleKHR = (/= nullFunPtr) . pVkGetSemaphoreWin32HandleKHR-hasImportSemaphoreWin32HandleKHR :: DeviceCmds -> Bool-hasImportSemaphoreWin32HandleKHR = (/= nullFunPtr) . pVkImportSemaphoreWin32HandleKHR-#endif-hasGetSemaphoreFdKHR :: DeviceCmds -> Bool-hasGetSemaphoreFdKHR = (/= nullFunPtr) . pVkGetSemaphoreFdKHR-hasImportSemaphoreFdKHR :: DeviceCmds -> Bool-hasImportSemaphoreFdKHR = (/= nullFunPtr) . pVkImportSemaphoreFdKHR-#if defined(VK_USE_PLATFORM_WIN32_KHR)-hasGetFenceWin32HandleKHR :: DeviceCmds -> Bool-hasGetFenceWin32HandleKHR = (/= nullFunPtr) . pVkGetFenceWin32HandleKHR-hasImportFenceWin32HandleKHR :: DeviceCmds -> Bool-hasImportFenceWin32HandleKHR = (/= nullFunPtr) . pVkImportFenceWin32HandleKHR-#endif-hasGetFenceFdKHR :: DeviceCmds -> Bool-hasGetFenceFdKHR = (/= nullFunPtr) . pVkGetFenceFdKHR-hasImportFenceFdKHR :: DeviceCmds -> Bool-hasImportFenceFdKHR = (/= nullFunPtr) . pVkImportFenceFdKHR-hasDisplayPowerControlEXT :: DeviceCmds -> Bool-hasDisplayPowerControlEXT = (/= nullFunPtr) . pVkDisplayPowerControlEXT-hasRegisterDeviceEventEXT :: DeviceCmds -> Bool-hasRegisterDeviceEventEXT = (/= nullFunPtr) . pVkRegisterDeviceEventEXT-hasRegisterDisplayEventEXT :: DeviceCmds -> Bool-hasRegisterDisplayEventEXT = (/= nullFunPtr) . pVkRegisterDisplayEventEXT-hasGetSwapchainCounterEXT :: DeviceCmds -> Bool-hasGetSwapchainCounterEXT = (/= nullFunPtr) . pVkGetSwapchainCounterEXT-hasGetDeviceGroupPeerMemoryFeatures :: DeviceCmds -> Bool-hasGetDeviceGroupPeerMemoryFeatures = (/= nullFunPtr) . pVkGetDeviceGroupPeerMemoryFeatures-hasBindBufferMemory2 :: DeviceCmds -> Bool-hasBindBufferMemory2 = (/= nullFunPtr) . pVkBindBufferMemory2-hasBindImageMemory2 :: DeviceCmds -> Bool-hasBindImageMemory2 = (/= nullFunPtr) . pVkBindImageMemory2-hasCmdSetDeviceMask :: DeviceCmds -> Bool-hasCmdSetDeviceMask = (/= nullFunPtr) . pVkCmdSetDeviceMask-hasGetDeviceGroupPresentCapabilitiesKHR :: DeviceCmds -> Bool-hasGetDeviceGroupPresentCapabilitiesKHR = (/= nullFunPtr) . pVkGetDeviceGroupPresentCapabilitiesKHR-hasGetDeviceGroupSurfacePresentModesKHR :: DeviceCmds -> Bool-hasGetDeviceGroupSurfacePresentModesKHR = (/= nullFunPtr) . pVkGetDeviceGroupSurfacePresentModesKHR-hasAcquireNextImage2KHR :: DeviceCmds -> Bool-hasAcquireNextImage2KHR = (/= nullFunPtr) . pVkAcquireNextImage2KHR-hasCmdDispatchBase :: DeviceCmds -> Bool-hasCmdDispatchBase = (/= nullFunPtr) . pVkCmdDispatchBase-hasCreateDescriptorUpdateTemplate :: DeviceCmds -> Bool-hasCreateDescriptorUpdateTemplate = (/= nullFunPtr) . pVkCreateDescriptorUpdateTemplate-hasDestroyDescriptorUpdateTemplate :: DeviceCmds -> Bool-hasDestroyDescriptorUpdateTemplate = (/= nullFunPtr) . pVkDestroyDescriptorUpdateTemplate-hasUpdateDescriptorSetWithTemplate :: DeviceCmds -> Bool-hasUpdateDescriptorSetWithTemplate = (/= nullFunPtr) . pVkUpdateDescriptorSetWithTemplate-hasCmdPushDescriptorSetWithTemplateKHR :: DeviceCmds -> Bool-hasCmdPushDescriptorSetWithTemplateKHR = (/= nullFunPtr) . pVkCmdPushDescriptorSetWithTemplateKHR-hasSetHdrMetadataEXT :: DeviceCmds -> Bool-hasSetHdrMetadataEXT = (/= nullFunPtr) . pVkSetHdrMetadataEXT-hasGetSwapchainStatusKHR :: DeviceCmds -> Bool-hasGetSwapchainStatusKHR = (/= nullFunPtr) . pVkGetSwapchainStatusKHR-hasGetRefreshCycleDurationGOOGLE :: DeviceCmds -> Bool-hasGetRefreshCycleDurationGOOGLE = (/= nullFunPtr) . pVkGetRefreshCycleDurationGOOGLE-hasGetPastPresentationTimingGOOGLE :: DeviceCmds -> Bool-hasGetPastPresentationTimingGOOGLE = (/= nullFunPtr) . pVkGetPastPresentationTimingGOOGLE-hasCmdSetViewportWScalingNV :: DeviceCmds -> Bool-hasCmdSetViewportWScalingNV = (/= nullFunPtr) . pVkCmdSetViewportWScalingNV-hasCmdSetDiscardRectangleEXT :: DeviceCmds -> Bool-hasCmdSetDiscardRectangleEXT = (/= nullFunPtr) . pVkCmdSetDiscardRectangleEXT-hasCmdSetSampleLocationsEXT :: DeviceCmds -> Bool-hasCmdSetSampleLocationsEXT = (/= nullFunPtr) . pVkCmdSetSampleLocationsEXT-hasGetBufferMemoryRequirements2 :: DeviceCmds -> Bool-hasGetBufferMemoryRequirements2 = (/= nullFunPtr) . pVkGetBufferMemoryRequirements2-hasGetImageMemoryRequirements2 :: DeviceCmds -> Bool-hasGetImageMemoryRequirements2 = (/= nullFunPtr) . pVkGetImageMemoryRequirements2-hasGetImageSparseMemoryRequirements2 :: DeviceCmds -> Bool-hasGetImageSparseMemoryRequirements2 = (/= nullFunPtr) . pVkGetImageSparseMemoryRequirements2-hasCreateSamplerYcbcrConversion :: DeviceCmds -> Bool-hasCreateSamplerYcbcrConversion = (/= nullFunPtr) . pVkCreateSamplerYcbcrConversion-hasDestroySamplerYcbcrConversion :: DeviceCmds -> Bool-hasDestroySamplerYcbcrConversion = (/= nullFunPtr) . pVkDestroySamplerYcbcrConversion-hasGetDeviceQueue2 :: DeviceCmds -> Bool-hasGetDeviceQueue2 = (/= nullFunPtr) . pVkGetDeviceQueue2-hasCreateValidationCacheEXT :: DeviceCmds -> Bool-hasCreateValidationCacheEXT = (/= nullFunPtr) . pVkCreateValidationCacheEXT-hasDestroyValidationCacheEXT :: DeviceCmds -> Bool-hasDestroyValidationCacheEXT = (/= nullFunPtr) . pVkDestroyValidationCacheEXT-hasGetValidationCacheDataEXT :: DeviceCmds -> Bool-hasGetValidationCacheDataEXT = (/= nullFunPtr) . pVkGetValidationCacheDataEXT-hasMergeValidationCachesEXT :: DeviceCmds -> Bool-hasMergeValidationCachesEXT = (/= nullFunPtr) . pVkMergeValidationCachesEXT-hasGetDescriptorSetLayoutSupport :: DeviceCmds -> Bool-hasGetDescriptorSetLayoutSupport = (/= nullFunPtr) . pVkGetDescriptorSetLayoutSupport-hasGetSwapchainGrallocUsageANDROID :: DeviceCmds -> Bool-hasGetSwapchainGrallocUsageANDROID = (/= nullFunPtr) . pVkGetSwapchainGrallocUsageANDROID-hasAcquireImageANDROID :: DeviceCmds -> Bool-hasAcquireImageANDROID = (/= nullFunPtr) . pVkAcquireImageANDROID-hasQueueSignalReleaseImageANDROID :: DeviceCmds -> Bool-hasQueueSignalReleaseImageANDROID = (/= nullFunPtr) . pVkQueueSignalReleaseImageANDROID-hasGetShaderInfoAMD :: DeviceCmds -> Bool-hasGetShaderInfoAMD = (/= nullFunPtr) . pVkGetShaderInfoAMD-hasSetDebugUtilsObjectNameEXT :: DeviceCmds -> Bool-hasSetDebugUtilsObjectNameEXT = (/= nullFunPtr) . pVkSetDebugUtilsObjectNameEXT-hasSetDebugUtilsObjectTagEXT :: DeviceCmds -> Bool-hasSetDebugUtilsObjectTagEXT = (/= nullFunPtr) . pVkSetDebugUtilsObjectTagEXT-hasQueueBeginDebugUtilsLabelEXT :: DeviceCmds -> Bool-hasQueueBeginDebugUtilsLabelEXT = (/= nullFunPtr) . pVkQueueBeginDebugUtilsLabelEXT-hasQueueEndDebugUtilsLabelEXT :: DeviceCmds -> Bool-hasQueueEndDebugUtilsLabelEXT = (/= nullFunPtr) . pVkQueueEndDebugUtilsLabelEXT-hasQueueInsertDebugUtilsLabelEXT :: DeviceCmds -> Bool-hasQueueInsertDebugUtilsLabelEXT = (/= nullFunPtr) . pVkQueueInsertDebugUtilsLabelEXT-hasCmdBeginDebugUtilsLabelEXT :: DeviceCmds -> Bool-hasCmdBeginDebugUtilsLabelEXT = (/= nullFunPtr) . pVkCmdBeginDebugUtilsLabelEXT-hasCmdEndDebugUtilsLabelEXT :: DeviceCmds -> Bool-hasCmdEndDebugUtilsLabelEXT = (/= nullFunPtr) . pVkCmdEndDebugUtilsLabelEXT-hasCmdInsertDebugUtilsLabelEXT :: DeviceCmds -> Bool-hasCmdInsertDebugUtilsLabelEXT = (/= nullFunPtr) . pVkCmdInsertDebugUtilsLabelEXT-hasGetMemoryHostPointerPropertiesEXT :: DeviceCmds -> Bool-hasGetMemoryHostPointerPropertiesEXT = (/= nullFunPtr) . pVkGetMemoryHostPointerPropertiesEXT-hasCmdWriteBufferMarkerAMD :: DeviceCmds -> Bool-hasCmdWriteBufferMarkerAMD = (/= nullFunPtr) . pVkCmdWriteBufferMarkerAMD-#if defined(VK_USE_PLATFORM_ANDROID_KHR)-hasGetAndroidHardwareBufferPropertiesANDROID :: DeviceCmds -> Bool-hasGetAndroidHardwareBufferPropertiesANDROID = (/= nullFunPtr) . pVkGetAndroidHardwareBufferPropertiesANDROID-hasGetMemoryAndroidHardwareBufferANDROID :: DeviceCmds -> Bool-hasGetMemoryAndroidHardwareBufferANDROID = (/= nullFunPtr) . pVkGetMemoryAndroidHardwareBufferANDROID-#endif--hasDestroyInstance :: InstanceCmds -> Bool-hasDestroyInstance = (/= nullFunPtr) . pVkDestroyInstance-hasEnumeratePhysicalDevices :: InstanceCmds -> Bool-hasEnumeratePhysicalDevices = (/= nullFunPtr) . pVkEnumeratePhysicalDevices-hasGetInstanceProcAddr :: InstanceCmds -> Bool-hasGetInstanceProcAddr = (/= nullFunPtr) . pVkGetInstanceProcAddr-hasGetPhysicalDeviceProperties :: InstanceCmds -> Bool-hasGetPhysicalDeviceProperties = (/= nullFunPtr) . pVkGetPhysicalDeviceProperties-hasGetPhysicalDeviceQueueFamilyProperties :: InstanceCmds -> Bool-hasGetPhysicalDeviceQueueFamilyProperties = (/= nullFunPtr) . pVkGetPhysicalDeviceQueueFamilyProperties-hasGetPhysicalDeviceMemoryProperties :: InstanceCmds -> Bool-hasGetPhysicalDeviceMemoryProperties = (/= nullFunPtr) . pVkGetPhysicalDeviceMemoryProperties-hasGetPhysicalDeviceFeatures :: InstanceCmds -> Bool-hasGetPhysicalDeviceFeatures = (/= nullFunPtr) . pVkGetPhysicalDeviceFeatures-hasGetPhysicalDeviceFormatProperties :: InstanceCmds -> Bool-hasGetPhysicalDeviceFormatProperties = (/= nullFunPtr) . pVkGetPhysicalDeviceFormatProperties-hasGetPhysicalDeviceImageFormatProperties :: InstanceCmds -> Bool-hasGetPhysicalDeviceImageFormatProperties = (/= nullFunPtr) . pVkGetPhysicalDeviceImageFormatProperties-hasCreateDevice :: InstanceCmds -> Bool-hasCreateDevice = (/= nullFunPtr) . pVkCreateDevice-hasEnumerateDeviceLayerProperties :: InstanceCmds -> Bool-hasEnumerateDeviceLayerProperties = (/= nullFunPtr) . pVkEnumerateDeviceLayerProperties-hasEnumerateDeviceExtensionProperties :: InstanceCmds -> Bool-hasEnumerateDeviceExtensionProperties = (/= nullFunPtr) . pVkEnumerateDeviceExtensionProperties-hasGetPhysicalDeviceSparseImageFormatProperties :: InstanceCmds -> Bool-hasGetPhysicalDeviceSparseImageFormatProperties = (/= nullFunPtr) . pVkGetPhysicalDeviceSparseImageFormatProperties-#if defined(VK_USE_PLATFORM_ANDROID_KHR)-hasCreateAndroidSurfaceKHR :: InstanceCmds -> Bool-hasCreateAndroidSurfaceKHR = (/= nullFunPtr) . pVkCreateAndroidSurfaceKHR-#endif-hasGetPhysicalDeviceDisplayPropertiesKHR :: InstanceCmds -> Bool-hasGetPhysicalDeviceDisplayPropertiesKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceDisplayPropertiesKHR-hasGetPhysicalDeviceDisplayPlanePropertiesKHR :: InstanceCmds -> Bool-hasGetPhysicalDeviceDisplayPlanePropertiesKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceDisplayPlanePropertiesKHR-hasGetDisplayPlaneSupportedDisplaysKHR :: InstanceCmds -> Bool-hasGetDisplayPlaneSupportedDisplaysKHR = (/= nullFunPtr) . pVkGetDisplayPlaneSupportedDisplaysKHR-hasGetDisplayModePropertiesKHR :: InstanceCmds -> Bool-hasGetDisplayModePropertiesKHR = (/= nullFunPtr) . pVkGetDisplayModePropertiesKHR-hasCreateDisplayModeKHR :: InstanceCmds -> Bool-hasCreateDisplayModeKHR = (/= nullFunPtr) . pVkCreateDisplayModeKHR-hasGetDisplayPlaneCapabilitiesKHR :: InstanceCmds -> Bool-hasGetDisplayPlaneCapabilitiesKHR = (/= nullFunPtr) . pVkGetDisplayPlaneCapabilitiesKHR-hasCreateDisplayPlaneSurfaceKHR :: InstanceCmds -> Bool-hasCreateDisplayPlaneSurfaceKHR = (/= nullFunPtr) . pVkCreateDisplayPlaneSurfaceKHR-#if defined(VK_USE_PLATFORM_MIR_KHR)-hasCreateMirSurfaceKHR :: InstanceCmds -> Bool-hasCreateMirSurfaceKHR = (/= nullFunPtr) . pVkCreateMirSurfaceKHR-hasGetPhysicalDeviceMirPresentationSupportKHR :: InstanceCmds -> Bool-hasGetPhysicalDeviceMirPresentationSupportKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceMirPresentationSupportKHR-#endif-hasDestroySurfaceKHR :: InstanceCmds -> Bool-hasDestroySurfaceKHR = (/= nullFunPtr) . pVkDestroySurfaceKHR-hasGetPhysicalDeviceSurfaceSupportKHR :: InstanceCmds -> Bool-hasGetPhysicalDeviceSurfaceSupportKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceSurfaceSupportKHR-hasGetPhysicalDeviceSurfaceCapabilitiesKHR :: InstanceCmds -> Bool-hasGetPhysicalDeviceSurfaceCapabilitiesKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceSurfaceCapabilitiesKHR-hasGetPhysicalDeviceSurfaceFormatsKHR :: InstanceCmds -> Bool-hasGetPhysicalDeviceSurfaceFormatsKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceSurfaceFormatsKHR-hasGetPhysicalDeviceSurfacePresentModesKHR :: InstanceCmds -> Bool-hasGetPhysicalDeviceSurfacePresentModesKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceSurfacePresentModesKHR-#if defined(VK_USE_PLATFORM_VI_NN)-hasCreateViSurfaceNN :: InstanceCmds -> Bool-hasCreateViSurfaceNN = (/= nullFunPtr) . pVkCreateViSurfaceNN-#endif-#if defined(VK_USE_PLATFORM_WAYLAND_KHR)-hasCreateWaylandSurfaceKHR :: InstanceCmds -> Bool-hasCreateWaylandSurfaceKHR = (/= nullFunPtr) . pVkCreateWaylandSurfaceKHR-hasGetPhysicalDeviceWaylandPresentationSupportKHR :: InstanceCmds -> Bool-hasGetPhysicalDeviceWaylandPresentationSupportKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceWaylandPresentationSupportKHR-#endif-#if defined(VK_USE_PLATFORM_WIN32_KHR)-hasCreateWin32SurfaceKHR :: InstanceCmds -> Bool-hasCreateWin32SurfaceKHR = (/= nullFunPtr) . pVkCreateWin32SurfaceKHR-hasGetPhysicalDeviceWin32PresentationSupportKHR :: InstanceCmds -> Bool-hasGetPhysicalDeviceWin32PresentationSupportKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceWin32PresentationSupportKHR-#endif-#if defined(VK_USE_PLATFORM_XLIB_KHR)-hasCreateXlibSurfaceKHR :: InstanceCmds -> Bool-hasCreateXlibSurfaceKHR = (/= nullFunPtr) . pVkCreateXlibSurfaceKHR-hasGetPhysicalDeviceXlibPresentationSupportKHR :: InstanceCmds -> Bool-hasGetPhysicalDeviceXlibPresentationSupportKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceXlibPresentationSupportKHR-#endif-#if defined(VK_USE_PLATFORM_XCB_KHR)-hasCreateXcbSurfaceKHR :: InstanceCmds -> Bool-hasCreateXcbSurfaceKHR = (/= nullFunPtr) . pVkCreateXcbSurfaceKHR-hasGetPhysicalDeviceXcbPresentationSupportKHR :: InstanceCmds -> Bool-hasGetPhysicalDeviceXcbPresentationSupportKHR = (/= nullFunPtr) . pVkGetPhysicalDeviceXcbPresentationSupportKHR-#endif-hasCreateDebugReportCallbackEXT :: InstanceCmds -> Bool-hasCreateDebugReportCallbackEXT = (/= nullFunPtr) . pVkCreateDebugReportCallbackEXT-hasDestroyDebugReportCallbackEXT :: InstanceCmds -> Bool-hasDestroyDebugReportCallbackEXT = (/= nullFunPtr) . pVkDestroyDebugReportCallbackEXT-hasDebugReportMessageEXT :: InstanceCmds -> Bool-hasDebugReportMessageEXT = (/= nullFunPtr) . pVkDebugReportMessageEXT-hasGetPhysicalDeviceExternalImageFormatPropertiesNV :: InstanceCmds -> Bool-hasGetPhysicalDeviceExternalImageFormatPropertiesNV = (/= nullFunPtr) . pVkGetPhysicalDeviceExternalImageFormatPropertiesNV-hasGetPhysicalDeviceGeneratedCommandsPropertiesNVX :: InstanceCmds -> Bool-hasGetPhysicalDeviceGeneratedCommandsPropertiesNVX = (/= nullFunPtr) . pVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-hasGetPhysicalDeviceFeatures2 :: InstanceCmds -> Bool-hasGetPhysicalDeviceFeatures2 = (/= nullFunPtr) . pVkGetPhysicalDeviceFeatures2-hasGetPhysicalDeviceProperties2 :: InstanceCmds -> Bool-hasGetPhysicalDeviceProperties2 = (/= nullFunPtr) . pVkGetPhysicalDeviceProperties2-hasGetPhysicalDeviceFormatProperties2 :: InstanceCmds -> Bool-hasGetPhysicalDeviceFormatProperties2 = (/= nullFunPtr) . pVkGetPhysicalDeviceFormatProperties2-hasGetPhysicalDeviceImageFormatProperties2 :: InstanceCmds -> Bool-hasGetPhysicalDeviceImageFormatProperties2 = (/= nullFunPtr) . pVkGetPhysicalDeviceImageFormatProperties2-hasGetPhysicalDeviceQueueFamilyProperties2 :: InstanceCmds -> Bool-hasGetPhysicalDeviceQueueFamilyProperties2 = (/= nullFunPtr) . pVkGetPhysicalDeviceQueueFamilyProperties2-hasGetPhysicalDeviceMemoryProperties2 :: InstanceCmds -> Bool-hasGetPhysicalDeviceMemoryProperties2 = (/= nullFunPtr) . pVkGetPhysicalDeviceMemoryProperties2-hasGetPhysicalDeviceSparseImageFormatProperties2 :: InstanceCmds -> Bool-hasGetPhysicalDeviceSparseImageFormatProperties2 = (/= nullFunPtr) . pVkGetPhysicalDeviceSparseImageFormatProperties2-hasGetPhysicalDeviceExternalBufferProperties :: InstanceCmds -> Bool-hasGetPhysicalDeviceExternalBufferProperties = (/= nullFunPtr) . pVkGetPhysicalDeviceExternalBufferProperties-hasGetPhysicalDeviceExternalSemaphoreProperties :: InstanceCmds -> Bool-hasGetPhysicalDeviceExternalSemaphoreProperties = (/= nullFunPtr) . pVkGetPhysicalDeviceExternalSemaphoreProperties-hasGetPhysicalDeviceExternalFenceProperties :: InstanceCmds -> Bool-hasGetPhysicalDeviceExternalFenceProperties = (/= nullFunPtr) . pVkGetPhysicalDeviceExternalFenceProperties-hasReleaseDisplayEXT :: InstanceCmds -> Bool-hasReleaseDisplayEXT = (/= nullFunPtr) . pVkReleaseDisplayEXT-#if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)-hasAcquireXlibDisplayEXT :: InstanceCmds -> Bool-hasAcquireXlibDisplayEXT = (/= nullFunPtr) . pVkAcquireXlibDisplayEXT-hasGetRandROutputDisplayEXT :: InstanceCmds -> Bool-hasGetRandROutputDisplayEXT = (/= nullFunPtr) . pVkGetRandROutputDisplayEXT-#endif-hasGetPhysicalDeviceSurfaceCapabilities2EXT :: InstanceCmds -> Bool-hasGetPhysicalDeviceSurfaceCapabilities2EXT = (/= nullFunPtr) . pVkGetPhysicalDeviceSurfaceCapabilities2EXT-hasEnumeratePhysicalDeviceGroups :: InstanceCmds -> Bool-hasEnumeratePhysicalDeviceGroups = (/= nullFunPtr) . pVkEnumeratePhysicalDeviceGroups-hasGetPhysicalDevicePresentRectanglesKHR :: InstanceCmds -> Bool-hasGetPhysicalDevicePresentRectanglesKHR = (/= nullFunPtr) . pVkGetPhysicalDevicePresentRectanglesKHR-#if defined(VK_USE_PLATFORM_IOS_MVK)-hasCreateIOSSurfaceMVK :: InstanceCmds -> Bool-hasCreateIOSSurfaceMVK = (/= nullFunPtr) . pVkCreateIOSSurfaceMVK-#endif-#if defined(VK_USE_PLATFORM_MACOS_MVK)-hasCreateMacOSSurfaceMVK :: InstanceCmds -> Bool-hasCreateMacOSSurfaceMVK = (/= nullFunPtr) . pVkCreateMacOSSurfaceMVK-#endif-hasGetPhysicalDeviceMultisamplePropertiesEXT :: InstanceCmds -> Bool-hasGetPhysicalDeviceMultisamplePropertiesEXT = (/= nullFunPtr) . pVkGetPhysicalDeviceMultisamplePropertiesEXT-hasGetPhysicalDeviceSurfaceCapabilities2KHR :: InstanceCmds -> Bool-hasGetPhysicalDeviceSurfaceCapabilities2KHR = (/= nullFunPtr) . pVkGetPhysicalDeviceSurfaceCapabilities2KHR-hasGetPhysicalDeviceSurfaceFormats2KHR :: InstanceCmds -> Bool-hasGetPhysicalDeviceSurfaceFormats2KHR = (/= nullFunPtr) . pVkGetPhysicalDeviceSurfaceFormats2KHR-hasCreateDebugUtilsMessengerEXT :: InstanceCmds -> Bool-hasCreateDebugUtilsMessengerEXT = (/= nullFunPtr) . pVkCreateDebugUtilsMessengerEXT-hasDestroyDebugUtilsMessengerEXT :: InstanceCmds -> Bool-hasDestroyDebugUtilsMessengerEXT = (/= nullFunPtr) . pVkDestroyDebugUtilsMessengerEXT-hasSubmitDebugUtilsMessageEXT :: InstanceCmds -> Bool-hasSubmitDebugUtilsMessageEXT = (/= nullFunPtr) . pVkSubmitDebugUtilsMessageEXT---- * Device commands-getDeviceProcAddr :: DeviceCmds -> (("device" ::: VkDevice) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction)-getDeviceProcAddr deviceCmds = mkVkGetDeviceProcAddr (pVkGetDeviceProcAddr deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetDeviceProcAddr- :: FunPtr (("device" ::: VkDevice) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction) -> (("device" ::: VkDevice) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction)-destroyDevice :: DeviceCmds -> (("device" ::: VkDevice) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyDevice deviceCmds = mkVkDestroyDevice (pVkDestroyDevice deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyDevice- :: FunPtr (("device" ::: VkDevice) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-getDeviceQueue :: DeviceCmds -> (("device" ::: VkDevice) -> ("queueFamilyIndex" ::: Word32) -> ("queueIndex" ::: Word32) -> ("pQueue" ::: Ptr VkQueue) -> IO ())-getDeviceQueue deviceCmds = mkVkGetDeviceQueue (pVkGetDeviceQueue deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetDeviceQueue- :: FunPtr (("device" ::: VkDevice) -> ("queueFamilyIndex" ::: Word32) -> ("queueIndex" ::: Word32) -> ("pQueue" ::: Ptr VkQueue) -> IO ()) -> (("device" ::: VkDevice) -> ("queueFamilyIndex" ::: Word32) -> ("queueIndex" ::: Word32) -> ("pQueue" ::: Ptr VkQueue) -> IO ())-queueSubmit :: DeviceCmds -> (("queue" ::: VkQueue) -> ("submitCount" ::: Word32) -> ("pSubmits" ::: Ptr VkSubmitInfo) -> ("fence" ::: VkFence) -> IO VkResult)-queueSubmit deviceCmds = mkVkQueueSubmit (pVkQueueSubmit deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkQueueSubmit- :: FunPtr (("queue" ::: VkQueue) -> ("submitCount" ::: Word32) -> ("pSubmits" ::: Ptr VkSubmitInfo) -> ("fence" ::: VkFence) -> IO VkResult) -> (("queue" ::: VkQueue) -> ("submitCount" ::: Word32) -> ("pSubmits" ::: Ptr VkSubmitInfo) -> ("fence" ::: VkFence) -> IO VkResult)-queueWaitIdle :: DeviceCmds -> (("queue" ::: VkQueue) -> IO VkResult)-queueWaitIdle deviceCmds = mkVkQueueWaitIdle (pVkQueueWaitIdle deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkQueueWaitIdle- :: FunPtr (("queue" ::: VkQueue) -> IO VkResult) -> (("queue" ::: VkQueue) -> IO VkResult)-deviceWaitIdle :: DeviceCmds -> (("device" ::: VkDevice) -> IO VkResult)-deviceWaitIdle deviceCmds = mkVkDeviceWaitIdle (pVkDeviceWaitIdle deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDeviceWaitIdle- :: FunPtr (("device" ::: VkDevice) -> IO VkResult) -> (("device" ::: VkDevice) -> IO VkResult)-allocateMemory :: DeviceCmds -> (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkMemoryAllocateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMemory" ::: Ptr VkDeviceMemory) -> IO VkResult)-allocateMemory deviceCmds = mkVkAllocateMemory (pVkAllocateMemory deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkAllocateMemory- :: FunPtr (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkMemoryAllocateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMemory" ::: Ptr VkDeviceMemory) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkMemoryAllocateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMemory" ::: Ptr VkDeviceMemory) -> IO VkResult)-freeMemory :: DeviceCmds -> (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-freeMemory deviceCmds = mkVkFreeMemory (pVkFreeMemory deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkFreeMemory- :: FunPtr (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-mapMemory :: DeviceCmds -> (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("offset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("flags" ::: VkMemoryMapFlags) -> ("ppData" ::: Ptr (Ptr ())) -> IO VkResult)-mapMemory deviceCmds = mkVkMapMemory (pVkMapMemory deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkMapMemory- :: FunPtr (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("offset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("flags" ::: VkMemoryMapFlags) -> ("ppData" ::: Ptr (Ptr ())) -> IO VkResult) -> (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("offset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("flags" ::: VkMemoryMapFlags) -> ("ppData" ::: Ptr (Ptr ())) -> IO VkResult)-unmapMemory :: DeviceCmds -> (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> IO ())-unmapMemory deviceCmds = mkVkUnmapMemory (pVkUnmapMemory deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkUnmapMemory- :: FunPtr (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> IO ()) -> (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> IO ())-flushMappedMemoryRanges :: DeviceCmds -> (("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult)-flushMappedMemoryRanges deviceCmds = mkVkFlushMappedMemoryRanges (pVkFlushMappedMemoryRanges deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkFlushMappedMemoryRanges- :: FunPtr (("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult) -> (("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult)-invalidateMappedMemoryRanges :: DeviceCmds -> (("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult)-invalidateMappedMemoryRanges deviceCmds = mkVkInvalidateMappedMemoryRanges (pVkInvalidateMappedMemoryRanges deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkInvalidateMappedMemoryRanges- :: FunPtr (("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult) -> (("device" ::: VkDevice) -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr VkMappedMemoryRange) -> IO VkResult)-getDeviceMemoryCommitment :: DeviceCmds -> (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pCommittedMemoryInBytes" ::: Ptr VkDeviceSize) -> IO ())-getDeviceMemoryCommitment deviceCmds = mkVkGetDeviceMemoryCommitment (pVkGetDeviceMemoryCommitment deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetDeviceMemoryCommitment- :: FunPtr (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pCommittedMemoryInBytes" ::: Ptr VkDeviceSize) -> IO ()) -> (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("pCommittedMemoryInBytes" ::: Ptr VkDeviceSize) -> IO ())-getBufferMemoryRequirements :: DeviceCmds -> (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ())-getBufferMemoryRequirements deviceCmds = mkVkGetBufferMemoryRequirements (pVkGetBufferMemoryRequirements deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetBufferMemoryRequirements- :: FunPtr (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ()) -> (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ())-bindBufferMemory :: DeviceCmds -> (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult)-bindBufferMemory deviceCmds = mkVkBindBufferMemory (pVkBindBufferMemory deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkBindBufferMemory- :: FunPtr (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult) -> (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult)-getImageMemoryRequirements :: DeviceCmds -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ())-getImageMemoryRequirements deviceCmds = mkVkGetImageMemoryRequirements (pVkGetImageMemoryRequirements deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetImageMemoryRequirements- :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ()) -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements) -> IO ())-bindImageMemory :: DeviceCmds -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult)-bindImageMemory deviceCmds = mkVkBindImageMemory (pVkBindImageMemory deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkBindImageMemory- :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult) -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> IO VkResult)-getImageSparseMemoryRequirements :: DeviceCmds -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements) -> IO ())-getImageSparseMemoryRequirements deviceCmds = mkVkGetImageSparseMemoryRequirements (pVkGetImageSparseMemoryRequirements deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetImageSparseMemoryRequirements- :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements) -> IO ()) -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements) -> IO ())-queueBindSparse :: DeviceCmds -> (("queue" ::: VkQueue) -> ("bindInfoCount" ::: Word32) -> ("pBindInfo" ::: Ptr VkBindSparseInfo) -> ("fence" ::: VkFence) -> IO VkResult)-queueBindSparse deviceCmds = mkVkQueueBindSparse (pVkQueueBindSparse deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkQueueBindSparse- :: FunPtr (("queue" ::: VkQueue) -> ("bindInfoCount" ::: Word32) -> ("pBindInfo" ::: Ptr VkBindSparseInfo) -> ("fence" ::: VkFence) -> IO VkResult) -> (("queue" ::: VkQueue) -> ("bindInfoCount" ::: Word32) -> ("pBindInfo" ::: Ptr VkBindSparseInfo) -> ("fence" ::: VkFence) -> IO VkResult)-createFence :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFenceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult)-createFence deviceCmds = mkVkCreateFence (pVkCreateFence deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateFence- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFenceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFenceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult)-destroyFence :: DeviceCmds -> (("device" ::: VkDevice) -> ("fence" ::: VkFence) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyFence deviceCmds = mkVkDestroyFence (pVkDestroyFence deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyFence- :: FunPtr (("device" ::: VkDevice) -> ("fence" ::: VkFence) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("fence" ::: VkFence) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-resetFences :: DeviceCmds -> (("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> IO VkResult)-resetFences deviceCmds = mkVkResetFences (pVkResetFences deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkResetFences- :: FunPtr (("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> IO VkResult) -> (("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> IO VkResult)-getFenceStatus :: DeviceCmds -> (("device" ::: VkDevice) -> ("fence" ::: VkFence) -> IO VkResult)-getFenceStatus deviceCmds = mkVkGetFenceStatus (pVkGetFenceStatus deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetFenceStatus- :: FunPtr (("device" ::: VkDevice) -> ("fence" ::: VkFence) -> IO VkResult) -> (("device" ::: VkDevice) -> ("fence" ::: VkFence) -> IO VkResult)-waitForFences :: DeviceCmds -> (("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> ("waitAll" ::: VkBool32) -> ("timeout" ::: Word64) -> IO VkResult)-waitForFences deviceCmds = mkVkWaitForFences (pVkWaitForFences deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkWaitForFences- :: FunPtr (("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> ("waitAll" ::: VkBool32) -> ("timeout" ::: Word64) -> IO VkResult) -> (("device" ::: VkDevice) -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr VkFence) -> ("waitAll" ::: VkBool32) -> ("timeout" ::: Word64) -> IO VkResult)-createSemaphore :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSemaphoreCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSemaphore" ::: Ptr VkSemaphore) -> IO VkResult)-createSemaphore deviceCmds = mkVkCreateSemaphore (pVkCreateSemaphore deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateSemaphore- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSemaphoreCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSemaphore" ::: Ptr VkSemaphore) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSemaphoreCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSemaphore" ::: Ptr VkSemaphore) -> IO VkResult)-destroySemaphore :: DeviceCmds -> (("device" ::: VkDevice) -> ("semaphore" ::: VkSemaphore) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroySemaphore deviceCmds = mkVkDestroySemaphore (pVkDestroySemaphore deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroySemaphore- :: FunPtr (("device" ::: VkDevice) -> ("semaphore" ::: VkSemaphore) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("semaphore" ::: VkSemaphore) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-createEvent :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkEventCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pEvent" ::: Ptr VkEvent) -> IO VkResult)-createEvent deviceCmds = mkVkCreateEvent (pVkCreateEvent deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateEvent- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkEventCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pEvent" ::: Ptr VkEvent) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkEventCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pEvent" ::: Ptr VkEvent) -> IO VkResult)-destroyEvent :: DeviceCmds -> (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyEvent deviceCmds = mkVkDestroyEvent (pVkDestroyEvent deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyEvent- :: FunPtr (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-getEventStatus :: DeviceCmds -> (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult)-getEventStatus deviceCmds = mkVkGetEventStatus (pVkGetEventStatus deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetEventStatus- :: FunPtr (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult) -> (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult)-setEvent :: DeviceCmds -> (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult)-setEvent deviceCmds = mkVkSetEvent (pVkSetEvent deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkSetEvent- :: FunPtr (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult) -> (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult)-resetEvent :: DeviceCmds -> (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult)-resetEvent deviceCmds = mkVkResetEvent (pVkResetEvent deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkResetEvent- :: FunPtr (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult) -> (("device" ::: VkDevice) -> ("event" ::: VkEvent) -> IO VkResult)-createQueryPool :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkQueryPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pQueryPool" ::: Ptr VkQueryPool) -> IO VkResult)-createQueryPool deviceCmds = mkVkCreateQueryPool (pVkCreateQueryPool deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateQueryPool- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkQueryPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pQueryPool" ::: Ptr VkQueryPool) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkQueryPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pQueryPool" ::: Ptr VkQueryPool) -> IO VkResult)-destroyQueryPool :: DeviceCmds -> (("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyQueryPool deviceCmds = mkVkDestroyQueryPool (pVkDestroyQueryPool deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyQueryPool- :: FunPtr (("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-getQueryPoolResults :: DeviceCmds -> (("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO VkResult)-getQueryPoolResults deviceCmds = mkVkGetQueryPoolResults (pVkGetQueryPoolResults deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetQueryPoolResults- :: FunPtr (("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO VkResult) -> (("device" ::: VkDevice) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO VkResult)-createBuffer :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pBuffer" ::: Ptr VkBuffer) -> IO VkResult)-createBuffer deviceCmds = mkVkCreateBuffer (pVkCreateBuffer deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateBuffer- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pBuffer" ::: Ptr VkBuffer) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pBuffer" ::: Ptr VkBuffer) -> IO VkResult)-destroyBuffer :: DeviceCmds -> (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyBuffer deviceCmds = mkVkDestroyBuffer (pVkDestroyBuffer deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyBuffer- :: FunPtr (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("buffer" ::: VkBuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-createBufferView :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkBufferView) -> IO VkResult)-createBufferView deviceCmds = mkVkCreateBufferView (pVkCreateBufferView deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateBufferView- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkBufferView) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkBufferViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkBufferView) -> IO VkResult)-destroyBufferView :: DeviceCmds -> (("device" ::: VkDevice) -> ("bufferView" ::: VkBufferView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyBufferView deviceCmds = mkVkDestroyBufferView (pVkDestroyBufferView deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyBufferView- :: FunPtr (("device" ::: VkDevice) -> ("bufferView" ::: VkBufferView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("bufferView" ::: VkBufferView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-createImage :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pImage" ::: Ptr VkImage) -> IO VkResult)-createImage deviceCmds = mkVkCreateImage (pVkCreateImage deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateImage- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pImage" ::: Ptr VkImage) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pImage" ::: Ptr VkImage) -> IO VkResult)-destroyImage :: DeviceCmds -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyImage deviceCmds = mkVkDestroyImage (pVkDestroyImage deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyImage- :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-getImageSubresourceLayout :: DeviceCmds -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSubresource" ::: Ptr VkImageSubresource) -> ("pLayout" ::: Ptr VkSubresourceLayout) -> IO ())-getImageSubresourceLayout deviceCmds = mkVkGetImageSubresourceLayout (pVkGetImageSubresourceLayout deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetImageSubresourceLayout- :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSubresource" ::: Ptr VkImageSubresource) -> ("pLayout" ::: Ptr VkSubresourceLayout) -> IO ()) -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("pSubresource" ::: Ptr VkImageSubresource) -> ("pLayout" ::: Ptr VkSubresourceLayout) -> IO ())-createImageView :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkImageView) -> IO VkResult)-createImageView deviceCmds = mkVkCreateImageView (pVkCreateImageView deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateImageView- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkImageView) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkImageViewCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pView" ::: Ptr VkImageView) -> IO VkResult)-destroyImageView :: DeviceCmds -> (("device" ::: VkDevice) -> ("imageView" ::: VkImageView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyImageView deviceCmds = mkVkDestroyImageView (pVkDestroyImageView deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyImageView- :: FunPtr (("device" ::: VkDevice) -> ("imageView" ::: VkImageView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("imageView" ::: VkImageView) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-createShaderModule :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkShaderModuleCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pShaderModule" ::: Ptr VkShaderModule) -> IO VkResult)-createShaderModule deviceCmds = mkVkCreateShaderModule (pVkCreateShaderModule deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateShaderModule- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkShaderModuleCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pShaderModule" ::: Ptr VkShaderModule) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkShaderModuleCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pShaderModule" ::: Ptr VkShaderModule) -> IO VkResult)-destroyShaderModule :: DeviceCmds -> (("device" ::: VkDevice) -> ("shaderModule" ::: VkShaderModule) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyShaderModule deviceCmds = mkVkDestroyShaderModule (pVkDestroyShaderModule deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyShaderModule- :: FunPtr (("device" ::: VkDevice) -> ("shaderModule" ::: VkShaderModule) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("shaderModule" ::: VkShaderModule) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-createPipelineCache :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineCacheCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineCache" ::: Ptr VkPipelineCache) -> IO VkResult)-createPipelineCache deviceCmds = mkVkCreatePipelineCache (pVkCreatePipelineCache deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreatePipelineCache- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineCacheCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineCache" ::: Ptr VkPipelineCache) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineCacheCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineCache" ::: Ptr VkPipelineCache) -> IO VkResult)-destroyPipelineCache :: DeviceCmds -> (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyPipelineCache deviceCmds = mkVkDestroyPipelineCache (pVkDestroyPipelineCache deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyPipelineCache- :: FunPtr (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-getPipelineCacheData :: DeviceCmds -> (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult)-getPipelineCacheData deviceCmds = mkVkGetPipelineCacheData (pVkGetPipelineCacheData deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPipelineCacheData- :: FunPtr (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult)-mergePipelineCaches :: DeviceCmds -> (("device" ::: VkDevice) -> ("dstCache" ::: VkPipelineCache) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkPipelineCache) -> IO VkResult)-mergePipelineCaches deviceCmds = mkVkMergePipelineCaches (pVkMergePipelineCaches deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkMergePipelineCaches- :: FunPtr (("device" ::: VkDevice) -> ("dstCache" ::: VkPipelineCache) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkPipelineCache) -> IO VkResult) -> (("device" ::: VkDevice) -> ("dstCache" ::: VkPipelineCache) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkPipelineCache) -> IO VkResult)-createGraphicsPipelines :: DeviceCmds -> (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkGraphicsPipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult)-createGraphicsPipelines deviceCmds = mkVkCreateGraphicsPipelines (pVkCreateGraphicsPipelines deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateGraphicsPipelines- :: FunPtr (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkGraphicsPipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkGraphicsPipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult)-createComputePipelines :: DeviceCmds -> (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkComputePipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult)-createComputePipelines deviceCmds = mkVkCreateComputePipelines (pVkCreateComputePipelines deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateComputePipelines- :: FunPtr (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkComputePipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pipelineCache" ::: VkPipelineCache) -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkComputePipelineCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelines" ::: Ptr VkPipeline) -> IO VkResult)-destroyPipeline :: DeviceCmds -> (("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyPipeline deviceCmds = mkVkDestroyPipeline (pVkDestroyPipeline deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyPipeline- :: FunPtr (("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-createPipelineLayout :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineLayout" ::: Ptr VkPipelineLayout) -> IO VkResult)-createPipelineLayout deviceCmds = mkVkCreatePipelineLayout (pVkCreatePipelineLayout deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreatePipelineLayout- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineLayout" ::: Ptr VkPipelineLayout) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkPipelineLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pPipelineLayout" ::: Ptr VkPipelineLayout) -> IO VkResult)-destroyPipelineLayout :: DeviceCmds -> (("device" ::: VkDevice) -> ("pipelineLayout" ::: VkPipelineLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyPipelineLayout deviceCmds = mkVkDestroyPipelineLayout (pVkDestroyPipelineLayout deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyPipelineLayout- :: FunPtr (("device" ::: VkDevice) -> ("pipelineLayout" ::: VkPipelineLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("pipelineLayout" ::: VkPipelineLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-createSampler :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSampler" ::: Ptr VkSampler) -> IO VkResult)-createSampler deviceCmds = mkVkCreateSampler (pVkCreateSampler deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateSampler- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSampler" ::: Ptr VkSampler) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSampler" ::: Ptr VkSampler) -> IO VkResult)-destroySampler :: DeviceCmds -> (("device" ::: VkDevice) -> ("sampler" ::: VkSampler) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroySampler deviceCmds = mkVkDestroySampler (pVkDestroySampler deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroySampler- :: FunPtr (("device" ::: VkDevice) -> ("sampler" ::: VkSampler) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("sampler" ::: VkSampler) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-createDescriptorSetLayout :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSetLayout" ::: Ptr VkDescriptorSetLayout) -> IO VkResult)-createDescriptorSetLayout deviceCmds = mkVkCreateDescriptorSetLayout (pVkCreateDescriptorSetLayout deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateDescriptorSetLayout- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSetLayout" ::: Ptr VkDescriptorSetLayout) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSetLayout" ::: Ptr VkDescriptorSetLayout) -> IO VkResult)-destroyDescriptorSetLayout :: DeviceCmds -> (("device" ::: VkDevice) -> ("descriptorSetLayout" ::: VkDescriptorSetLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyDescriptorSetLayout deviceCmds = mkVkDestroyDescriptorSetLayout (pVkDestroyDescriptorSetLayout deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyDescriptorSetLayout- :: FunPtr (("device" ::: VkDevice) -> ("descriptorSetLayout" ::: VkDescriptorSetLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("descriptorSetLayout" ::: VkDescriptorSetLayout) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-createDescriptorPool :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorPool" ::: Ptr VkDescriptorPool) -> IO VkResult)-createDescriptorPool deviceCmds = mkVkCreateDescriptorPool (pVkCreateDescriptorPool deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateDescriptorPool- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorPool" ::: Ptr VkDescriptorPool) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorPool" ::: Ptr VkDescriptorPool) -> IO VkResult)-destroyDescriptorPool :: DeviceCmds -> (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyDescriptorPool deviceCmds = mkVkDestroyDescriptorPool (pVkDestroyDescriptorPool deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyDescriptorPool- :: FunPtr (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-resetDescriptorPool :: DeviceCmds -> (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("flags" ::: VkDescriptorPoolResetFlags) -> IO VkResult)-resetDescriptorPool deviceCmds = mkVkResetDescriptorPool (pVkResetDescriptorPool deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkResetDescriptorPool- :: FunPtr (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("flags" ::: VkDescriptorPoolResetFlags) -> IO VkResult) -> (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("flags" ::: VkDescriptorPoolResetFlags) -> IO VkResult)-allocateDescriptorSets :: DeviceCmds -> (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkDescriptorSetAllocateInfo) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult)-allocateDescriptorSets deviceCmds = mkVkAllocateDescriptorSets (pVkAllocateDescriptorSets deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkAllocateDescriptorSets- :: FunPtr (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkDescriptorSetAllocateInfo) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkDescriptorSetAllocateInfo) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult)-freeDescriptorSets :: DeviceCmds -> (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult)-freeDescriptorSets deviceCmds = mkVkFreeDescriptorSets (pVkFreeDescriptorSets deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkFreeDescriptorSets- :: FunPtr (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult) -> (("device" ::: VkDevice) -> ("descriptorPool" ::: VkDescriptorPool) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> IO VkResult)-updateDescriptorSets :: DeviceCmds -> (("device" ::: VkDevice) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> ("descriptorCopyCount" ::: Word32) -> ("pDescriptorCopies" ::: Ptr VkCopyDescriptorSet) -> IO ())-updateDescriptorSets deviceCmds = mkVkUpdateDescriptorSets (pVkUpdateDescriptorSets deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkUpdateDescriptorSets- :: FunPtr (("device" ::: VkDevice) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> ("descriptorCopyCount" ::: Word32) -> ("pDescriptorCopies" ::: Ptr VkCopyDescriptorSet) -> IO ()) -> (("device" ::: VkDevice) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> ("descriptorCopyCount" ::: Word32) -> ("pDescriptorCopies" ::: Ptr VkCopyDescriptorSet) -> IO ())-createFramebuffer :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFramebufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFramebuffer" ::: Ptr VkFramebuffer) -> IO VkResult)-createFramebuffer deviceCmds = mkVkCreateFramebuffer (pVkCreateFramebuffer deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateFramebuffer- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFramebufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFramebuffer" ::: Ptr VkFramebuffer) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkFramebufferCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFramebuffer" ::: Ptr VkFramebuffer) -> IO VkResult)-destroyFramebuffer :: DeviceCmds -> (("device" ::: VkDevice) -> ("framebuffer" ::: VkFramebuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyFramebuffer deviceCmds = mkVkDestroyFramebuffer (pVkDestroyFramebuffer deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyFramebuffer- :: FunPtr (("device" ::: VkDevice) -> ("framebuffer" ::: VkFramebuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("framebuffer" ::: VkFramebuffer) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-createRenderPass :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkRenderPassCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pRenderPass" ::: Ptr VkRenderPass) -> IO VkResult)-createRenderPass deviceCmds = mkVkCreateRenderPass (pVkCreateRenderPass deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateRenderPass- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkRenderPassCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pRenderPass" ::: Ptr VkRenderPass) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkRenderPassCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pRenderPass" ::: Ptr VkRenderPass) -> IO VkResult)-destroyRenderPass :: DeviceCmds -> (("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyRenderPass deviceCmds = mkVkDestroyRenderPass (pVkDestroyRenderPass deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyRenderPass- :: FunPtr (("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-getRenderAreaGranularity :: DeviceCmds -> (("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pGranularity" ::: Ptr VkExtent2D) -> IO ())-getRenderAreaGranularity deviceCmds = mkVkGetRenderAreaGranularity (pVkGetRenderAreaGranularity deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetRenderAreaGranularity- :: FunPtr (("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pGranularity" ::: Ptr VkExtent2D) -> IO ()) -> (("device" ::: VkDevice) -> ("renderPass" ::: VkRenderPass) -> ("pGranularity" ::: Ptr VkExtent2D) -> IO ())-createCommandPool :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkCommandPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCommandPool" ::: Ptr VkCommandPool) -> IO VkResult)-createCommandPool deviceCmds = mkVkCreateCommandPool (pVkCreateCommandPool deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateCommandPool- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkCommandPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCommandPool" ::: Ptr VkCommandPool) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkCommandPoolCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCommandPool" ::: Ptr VkCommandPool) -> IO VkResult)-destroyCommandPool :: DeviceCmds -> (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyCommandPool deviceCmds = mkVkDestroyCommandPool (pVkDestroyCommandPool deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyCommandPool- :: FunPtr (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-resetCommandPool :: DeviceCmds -> (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolResetFlags) -> IO VkResult)-resetCommandPool deviceCmds = mkVkResetCommandPool (pVkResetCommandPool deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkResetCommandPool- :: FunPtr (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolResetFlags) -> IO VkResult) -> (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolResetFlags) -> IO VkResult)-allocateCommandBuffers :: DeviceCmds -> (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkCommandBufferAllocateInfo) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO VkResult)-allocateCommandBuffers deviceCmds = mkVkAllocateCommandBuffers (pVkAllocateCommandBuffers deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkAllocateCommandBuffers- :: FunPtr (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkCommandBufferAllocateInfo) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pAllocateInfo" ::: Ptr VkCommandBufferAllocateInfo) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO VkResult)-freeCommandBuffers :: DeviceCmds -> (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ())-freeCommandBuffers deviceCmds = mkVkFreeCommandBuffers (pVkFreeCommandBuffers deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkFreeCommandBuffers- :: FunPtr (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ()) -> (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ())-beginCommandBuffer :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pBeginInfo" ::: Ptr VkCommandBufferBeginInfo) -> IO VkResult)-beginCommandBuffer deviceCmds = mkVkBeginCommandBuffer (pVkBeginCommandBuffer deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkBeginCommandBuffer- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pBeginInfo" ::: Ptr VkCommandBufferBeginInfo) -> IO VkResult) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pBeginInfo" ::: Ptr VkCommandBufferBeginInfo) -> IO VkResult)-endCommandBuffer :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> IO VkResult)-endCommandBuffer deviceCmds = mkVkEndCommandBuffer (pVkEndCommandBuffer deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkEndCommandBuffer- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> IO VkResult) -> (("commandBuffer" ::: VkCommandBuffer) -> IO VkResult)-resetCommandBuffer :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("flags" ::: VkCommandBufferResetFlags) -> IO VkResult)-resetCommandBuffer deviceCmds = mkVkResetCommandBuffer (pVkResetCommandBuffer deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkResetCommandBuffer- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("flags" ::: VkCommandBufferResetFlags) -> IO VkResult) -> (("commandBuffer" ::: VkCommandBuffer) -> ("flags" ::: VkCommandBufferResetFlags) -> IO VkResult)-cmdBindPipeline :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("pipeline" ::: VkPipeline) -> IO ())-cmdBindPipeline deviceCmds = mkVkCmdBindPipeline (pVkCmdBindPipeline deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdBindPipeline- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("pipeline" ::: VkPipeline) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("pipeline" ::: VkPipeline) -> IO ())-cmdSetViewport :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr VkViewport) -> IO ())-cmdSetViewport deviceCmds = mkVkCmdSetViewport (pVkCmdSetViewport deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdSetViewport- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr VkViewport) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr VkViewport) -> IO ())-cmdSetScissor :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("firstScissor" ::: Word32) -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr VkRect2D) -> IO ())-cmdSetScissor deviceCmds = mkVkCmdSetScissor (pVkCmdSetScissor deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdSetScissor- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("firstScissor" ::: Word32) -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr VkRect2D) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("firstScissor" ::: Word32) -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr VkRect2D) -> IO ())-cmdSetLineWidth :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("lineWidth" ::: CFloat) -> IO ())-cmdSetLineWidth deviceCmds = mkVkCmdSetLineWidth (pVkCmdSetLineWidth deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdSetLineWidth- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("lineWidth" ::: CFloat) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("lineWidth" ::: CFloat) -> IO ())-cmdSetDepthBias :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("depthBiasConstantFactor" ::: CFloat) -> ("depthBiasClamp" ::: CFloat) -> ("depthBiasSlopeFactor" ::: CFloat) -> IO ())-cmdSetDepthBias deviceCmds = mkVkCmdSetDepthBias (pVkCmdSetDepthBias deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdSetDepthBias- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("depthBiasConstantFactor" ::: CFloat) -> ("depthBiasClamp" ::: CFloat) -> ("depthBiasSlopeFactor" ::: CFloat) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("depthBiasConstantFactor" ::: CFloat) -> ("depthBiasClamp" ::: CFloat) -> ("depthBiasSlopeFactor" ::: CFloat) -> IO ())-cmdSetBlendConstants :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("blendConstants" ::: Ptr CFloat) -> IO ())-cmdSetBlendConstants deviceCmds = mkVkCmdSetBlendConstants (pVkCmdSetBlendConstants deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdSetBlendConstants- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("blendConstants" ::: Ptr CFloat) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("blendConstants" ::: Ptr CFloat) -> IO ())-cmdSetDepthBounds :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("minDepthBounds" ::: CFloat) -> ("maxDepthBounds" ::: CFloat) -> IO ())-cmdSetDepthBounds deviceCmds = mkVkCmdSetDepthBounds (pVkCmdSetDepthBounds deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdSetDepthBounds- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("minDepthBounds" ::: CFloat) -> ("maxDepthBounds" ::: CFloat) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("minDepthBounds" ::: CFloat) -> ("maxDepthBounds" ::: CFloat) -> IO ())-cmdSetStencilCompareMask :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("compareMask" ::: Word32) -> IO ())-cmdSetStencilCompareMask deviceCmds = mkVkCmdSetStencilCompareMask (pVkCmdSetStencilCompareMask deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdSetStencilCompareMask- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("compareMask" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("compareMask" ::: Word32) -> IO ())-cmdSetStencilWriteMask :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("writeMask" ::: Word32) -> IO ())-cmdSetStencilWriteMask deviceCmds = mkVkCmdSetStencilWriteMask (pVkCmdSetStencilWriteMask deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdSetStencilWriteMask- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("writeMask" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("writeMask" ::: Word32) -> IO ())-cmdSetStencilReference :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("reference" ::: Word32) -> IO ())-cmdSetStencilReference deviceCmds = mkVkCmdSetStencilReference (pVkCmdSetStencilReference deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdSetStencilReference- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("reference" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("faceMask" ::: VkStencilFaceFlags) -> ("reference" ::: Word32) -> IO ())-cmdBindDescriptorSets :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("firstSet" ::: Word32) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> ("dynamicOffsetCount" ::: Word32) -> ("pDynamicOffsets" ::: Ptr Word32) -> IO ())-cmdBindDescriptorSets deviceCmds = mkVkCmdBindDescriptorSets (pVkCmdBindDescriptorSets deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdBindDescriptorSets- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("firstSet" ::: Word32) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> ("dynamicOffsetCount" ::: Word32) -> ("pDynamicOffsets" ::: Ptr Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("firstSet" ::: Word32) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr VkDescriptorSet) -> ("dynamicOffsetCount" ::: Word32) -> ("pDynamicOffsets" ::: Ptr Word32) -> IO ())-cmdBindIndexBuffer :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("indexType" ::: VkIndexType) -> IO ())-cmdBindIndexBuffer deviceCmds = mkVkCmdBindIndexBuffer (pVkCmdBindIndexBuffer deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdBindIndexBuffer- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("indexType" ::: VkIndexType) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("indexType" ::: VkIndexType) -> IO ())-cmdBindVertexBuffers :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr VkBuffer) -> ("pOffsets" ::: Ptr VkDeviceSize) -> IO ())-cmdBindVertexBuffers deviceCmds = mkVkCmdBindVertexBuffers (pVkCmdBindVertexBuffers deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdBindVertexBuffers- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr VkBuffer) -> ("pOffsets" ::: Ptr VkDeviceSize) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr VkBuffer) -> ("pOffsets" ::: Ptr VkDeviceSize) -> IO ())-cmdDraw :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("vertexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstVertex" ::: Word32) -> ("firstInstance" ::: Word32) -> IO ())-cmdDraw deviceCmds = mkVkCmdDraw (pVkCmdDraw deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdDraw- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("vertexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstVertex" ::: Word32) -> ("firstInstance" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("vertexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstVertex" ::: Word32) -> ("firstInstance" ::: Word32) -> IO ())-cmdDrawIndexed :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("indexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstIndex" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstInstance" ::: Word32) -> IO ())-cmdDrawIndexed deviceCmds = mkVkCmdDrawIndexed (pVkCmdDrawIndexed deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdDrawIndexed- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("indexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstIndex" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstInstance" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("indexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstIndex" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstInstance" ::: Word32) -> IO ())-cmdDrawIndirect :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())-cmdDrawIndirect deviceCmds = mkVkCmdDrawIndirect (pVkCmdDrawIndirect deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdDrawIndirect- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())-cmdDrawIndexedIndirect :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())-cmdDrawIndexedIndirect deviceCmds = mkVkCmdDrawIndexedIndirect (pVkCmdDrawIndexedIndirect deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdDrawIndexedIndirect- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())-cmdDispatch :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ())-cmdDispatch deviceCmds = mkVkCmdDispatch (pVkCmdDispatch deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdDispatch- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ())-cmdDispatchIndirect :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> IO ())-cmdDispatchIndirect deviceCmds = mkVkCmdDispatchIndirect (pVkCmdDispatchIndirect deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdDispatchIndirect- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> IO ())-cmdCopyBuffer :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferCopy) -> IO ())-cmdCopyBuffer deviceCmds = mkVkCmdCopyBuffer (pVkCmdCopyBuffer deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdCopyBuffer- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferCopy) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferCopy) -> IO ())-cmdCopyImage :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageCopy) -> IO ())-cmdCopyImage deviceCmds = mkVkCmdCopyImage (pVkCmdCopyImage deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdCopyImage- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageCopy) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageCopy) -> IO ())-cmdBlitImage :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageBlit) -> ("filter" ::: VkFilter) -> IO ())-cmdBlitImage deviceCmds = mkVkCmdBlitImage (pVkCmdBlitImage deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdBlitImage- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageBlit) -> ("filter" ::: VkFilter) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageBlit) -> ("filter" ::: VkFilter) -> IO ())-cmdCopyBufferToImage :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ())-cmdCopyBufferToImage deviceCmds = mkVkCmdCopyBufferToImage (pVkCmdCopyBufferToImage deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdCopyBufferToImage- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcBuffer" ::: VkBuffer) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ())-cmdCopyImageToBuffer :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ())-cmdCopyImageToBuffer deviceCmds = mkVkCmdCopyImageToBuffer (pVkCmdCopyImageToBuffer deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdCopyImageToBuffer- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstBuffer" ::: VkBuffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkBufferImageCopy) -> IO ())-cmdUpdateBuffer :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("dataSize" ::: VkDeviceSize) -> ("pData" ::: Ptr ()) -> IO ())-cmdUpdateBuffer deviceCmds = mkVkCmdUpdateBuffer (pVkCmdUpdateBuffer deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdUpdateBuffer- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("dataSize" ::: VkDeviceSize) -> ("pData" ::: Ptr ()) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("dataSize" ::: VkDeviceSize) -> ("pData" ::: Ptr ()) -> IO ())-cmdFillBuffer :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("data" ::: Word32) -> IO ())-cmdFillBuffer deviceCmds = mkVkCmdFillBuffer (pVkCmdFillBuffer deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdFillBuffer- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("data" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("size" ::: VkDeviceSize) -> ("data" ::: Word32) -> IO ())-cmdClearColorImage :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pColor" ::: Ptr VkClearColorValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ())-cmdClearColorImage deviceCmds = mkVkCmdClearColorImage (pVkCmdClearColorImage deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdClearColorImage- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pColor" ::: Ptr VkClearColorValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pColor" ::: Ptr VkClearColorValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ())-cmdClearDepthStencilImage :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pDepthStencil" ::: Ptr VkClearDepthStencilValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ())-cmdClearDepthStencilImage deviceCmds = mkVkCmdClearDepthStencilImage (pVkCmdClearDepthStencilImage deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdClearDepthStencilImage- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pDepthStencil" ::: Ptr VkClearDepthStencilValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("image" ::: VkImage) -> ("imageLayout" ::: VkImageLayout) -> ("pDepthStencil" ::: Ptr VkClearDepthStencilValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr VkImageSubresourceRange) -> IO ())-cmdClearAttachments :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("attachmentCount" ::: Word32) -> ("pAttachments" ::: Ptr VkClearAttachment) -> ("rectCount" ::: Word32) -> ("pRects" ::: Ptr VkClearRect) -> IO ())-cmdClearAttachments deviceCmds = mkVkCmdClearAttachments (pVkCmdClearAttachments deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdClearAttachments- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("attachmentCount" ::: Word32) -> ("pAttachments" ::: Ptr VkClearAttachment) -> ("rectCount" ::: Word32) -> ("pRects" ::: Ptr VkClearRect) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("attachmentCount" ::: Word32) -> ("pAttachments" ::: Ptr VkClearAttachment) -> ("rectCount" ::: Word32) -> ("pRects" ::: Ptr VkClearRect) -> IO ())-cmdResolveImage :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageResolve) -> IO ())-cmdResolveImage deviceCmds = mkVkCmdResolveImage (pVkCmdResolveImage deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdResolveImage- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageResolve) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcImage" ::: VkImage) -> ("srcImageLayout" ::: VkImageLayout) -> ("dstImage" ::: VkImage) -> ("dstImageLayout" ::: VkImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr VkImageResolve) -> IO ())-cmdSetEvent :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ())-cmdSetEvent deviceCmds = mkVkCmdSetEvent (pVkCmdSetEvent deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdSetEvent- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ())-cmdResetEvent :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ())-cmdResetEvent deviceCmds = mkVkCmdResetEvent (pVkCmdResetEvent deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdResetEvent- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("event" ::: VkEvent) -> ("stageMask" ::: VkPipelineStageFlags) -> IO ())-cmdWaitEvents :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr VkEvent) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ())-cmdWaitEvents deviceCmds = mkVkCmdWaitEvents (pVkCmdWaitEvents deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdWaitEvents- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr VkEvent) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr VkEvent) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ())-cmdPipelineBarrier :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("dependencyFlags" ::: VkDependencyFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ())-cmdPipelineBarrier deviceCmds = mkVkCmdPipelineBarrier (pVkCmdPipelineBarrier deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdPipelineBarrier- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("dependencyFlags" ::: VkDependencyFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("srcStageMask" ::: VkPipelineStageFlags) -> ("dstStageMask" ::: VkPipelineStageFlags) -> ("dependencyFlags" ::: VkDependencyFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr VkMemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr VkBufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr VkImageMemoryBarrier) -> IO ())-cmdBeginQuery :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> ("flags" ::: VkQueryControlFlags) -> IO ())-cmdBeginQuery deviceCmds = mkVkCmdBeginQuery (pVkCmdBeginQuery deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdBeginQuery- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> ("flags" ::: VkQueryControlFlags) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> ("flags" ::: VkQueryControlFlags) -> IO ())-cmdEndQuery :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ())-cmdEndQuery deviceCmds = mkVkCmdEndQuery (pVkCmdEndQuery deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdEndQuery- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ())-cmdResetQueryPool :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ())-cmdResetQueryPool deviceCmds = mkVkCmdResetQueryPool (pVkCmdResetQueryPool deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdResetQueryPool- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ())-cmdWriteTimestamp :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ())-cmdWriteTimestamp deviceCmds = mkVkCmdWriteTimestamp (pVkCmdWriteTimestamp deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdWriteTimestamp- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("queryPool" ::: VkQueryPool) -> ("query" ::: Word32) -> IO ())-cmdCopyQueryPoolResults :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO ())-cmdCopyQueryPoolResults deviceCmds = mkVkCmdCopyQueryPoolResults (pVkCmdCopyQueryPoolResults deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdCopyQueryPoolResults- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("queryPool" ::: VkQueryPool) -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("stride" ::: VkDeviceSize) -> ("flags" ::: VkQueryResultFlags) -> IO ())-cmdPushConstants :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("layout" ::: VkPipelineLayout) -> ("stageFlags" ::: VkShaderStageFlags) -> ("offset" ::: Word32) -> ("size" ::: Word32) -> ("pValues" ::: Ptr ()) -> IO ())-cmdPushConstants deviceCmds = mkVkCmdPushConstants (pVkCmdPushConstants deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdPushConstants- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("layout" ::: VkPipelineLayout) -> ("stageFlags" ::: VkShaderStageFlags) -> ("offset" ::: Word32) -> ("size" ::: Word32) -> ("pValues" ::: Ptr ()) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("layout" ::: VkPipelineLayout) -> ("stageFlags" ::: VkShaderStageFlags) -> ("offset" ::: Word32) -> ("size" ::: Word32) -> ("pValues" ::: Ptr ()) -> IO ())-cmdBeginRenderPass :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pRenderPassBegin" ::: Ptr VkRenderPassBeginInfo) -> ("contents" ::: VkSubpassContents) -> IO ())-cmdBeginRenderPass deviceCmds = mkVkCmdBeginRenderPass (pVkCmdBeginRenderPass deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdBeginRenderPass- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pRenderPassBegin" ::: Ptr VkRenderPassBeginInfo) -> ("contents" ::: VkSubpassContents) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pRenderPassBegin" ::: Ptr VkRenderPassBeginInfo) -> ("contents" ::: VkSubpassContents) -> IO ())-cmdNextSubpass :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("contents" ::: VkSubpassContents) -> IO ())-cmdNextSubpass deviceCmds = mkVkCmdNextSubpass (pVkCmdNextSubpass deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdNextSubpass- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("contents" ::: VkSubpassContents) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("contents" ::: VkSubpassContents) -> IO ())-cmdEndRenderPass :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> IO ())-cmdEndRenderPass deviceCmds = mkVkCmdEndRenderPass (pVkCmdEndRenderPass deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdEndRenderPass- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> IO ())-cmdExecuteCommands :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ())-cmdExecuteCommands deviceCmds = mkVkCmdExecuteCommands (pVkCmdExecuteCommands deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdExecuteCommands- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr VkCommandBuffer) -> IO ())-createSharedSwapchainsKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> IO VkResult)-createSharedSwapchainsKHR deviceCmds = mkVkCreateSharedSwapchainsKHR (pVkCreateSharedSwapchainsKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateSharedSwapchainsKHR- :: FunPtr (("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> IO VkResult)-createSwapchainKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchain" ::: Ptr VkSwapchainKHR) -> IO VkResult)-createSwapchainKHR deviceCmds = mkVkCreateSwapchainKHR (pVkCreateSwapchainKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateSwapchainKHR- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchain" ::: Ptr VkSwapchainKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchain" ::: Ptr VkSwapchainKHR) -> IO VkResult)-destroySwapchainKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroySwapchainKHR deviceCmds = mkVkDestroySwapchainKHR (pVkDestroySwapchainKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroySwapchainKHR- :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-getSwapchainImagesKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pSwapchainImageCount" ::: Ptr Word32) -> ("pSwapchainImages" ::: Ptr VkImage) -> IO VkResult)-getSwapchainImagesKHR deviceCmds = mkVkGetSwapchainImagesKHR (pVkGetSwapchainImagesKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetSwapchainImagesKHR- :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pSwapchainImageCount" ::: Ptr Word32) -> ("pSwapchainImages" ::: Ptr VkImage) -> IO VkResult) -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pSwapchainImageCount" ::: Ptr Word32) -> ("pSwapchainImages" ::: Ptr VkImage) -> IO VkResult)-acquireNextImageKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("timeout" ::: Word64) -> ("semaphore" ::: VkSemaphore) -> ("fence" ::: VkFence) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult)-acquireNextImageKHR deviceCmds = mkVkAcquireNextImageKHR (pVkAcquireNextImageKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkAcquireNextImageKHR- :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("timeout" ::: Word64) -> ("semaphore" ::: VkSemaphore) -> ("fence" ::: VkFence) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult) -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("timeout" ::: Word64) -> ("semaphore" ::: VkSemaphore) -> ("fence" ::: VkFence) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult)-queuePresentKHR :: DeviceCmds -> (("queue" ::: VkQueue) -> ("pPresentInfo" ::: Ptr VkPresentInfoKHR) -> IO VkResult)-queuePresentKHR deviceCmds = mkVkQueuePresentKHR (pVkQueuePresentKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkQueuePresentKHR- :: FunPtr (("queue" ::: VkQueue) -> ("pPresentInfo" ::: Ptr VkPresentInfoKHR) -> IO VkResult) -> (("queue" ::: VkQueue) -> ("pPresentInfo" ::: Ptr VkPresentInfoKHR) -> IO VkResult)-debugMarkerSetObjectNameEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugMarkerObjectNameInfoEXT) -> IO VkResult)-debugMarkerSetObjectNameEXT deviceCmds = mkVkDebugMarkerSetObjectNameEXT (pVkDebugMarkerSetObjectNameEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDebugMarkerSetObjectNameEXT- :: FunPtr (("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugMarkerObjectNameInfoEXT) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugMarkerObjectNameInfoEXT) -> IO VkResult)-debugMarkerSetObjectTagEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugMarkerObjectTagInfoEXT) -> IO VkResult)-debugMarkerSetObjectTagEXT deviceCmds = mkVkDebugMarkerSetObjectTagEXT (pVkDebugMarkerSetObjectTagEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDebugMarkerSetObjectTagEXT- :: FunPtr (("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugMarkerObjectTagInfoEXT) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugMarkerObjectTagInfoEXT) -> IO VkResult)-cmdDebugMarkerBeginEXT :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ())-cmdDebugMarkerBeginEXT deviceCmds = mkVkCmdDebugMarkerBeginEXT (pVkCmdDebugMarkerBeginEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdDebugMarkerBeginEXT- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ())-cmdDebugMarkerEndEXT :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> IO ())-cmdDebugMarkerEndEXT deviceCmds = mkVkCmdDebugMarkerEndEXT (pVkCmdDebugMarkerEndEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdDebugMarkerEndEXT- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> IO ())-cmdDebugMarkerInsertEXT :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ())-cmdDebugMarkerInsertEXT deviceCmds = mkVkCmdDebugMarkerInsertEXT (pVkCmdDebugMarkerInsertEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdDebugMarkerInsertEXT- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ())-#if defined(VK_USE_PLATFORM_WIN32_KHR)-getMemoryWin32HandleNV :: DeviceCmds -> (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)-getMemoryWin32HandleNV deviceCmds = mkVkGetMemoryWin32HandleNV (pVkGetMemoryWin32HandleNV deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetMemoryWin32HandleNV- :: FunPtr (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult) -> (("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)-#endif-cmdDrawIndirectCountAMD :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())-cmdDrawIndirectCountAMD deviceCmds = mkVkCmdDrawIndirectCountAMD (pVkCmdDrawIndirectCountAMD deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdDrawIndirectCountAMD- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())-cmdDrawIndexedIndirectCountAMD :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())-cmdDrawIndexedIndirectCountAMD deviceCmds = mkVkCmdDrawIndexedIndirectCountAMD (pVkCmdDrawIndexedIndirectCountAMD deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdDrawIndexedIndirectCountAMD- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())-cmdProcessCommandsNVX :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pProcessCommandsInfo" ::: Ptr VkCmdProcessCommandsInfoNVX) -> IO ())-cmdProcessCommandsNVX deviceCmds = mkVkCmdProcessCommandsNVX (pVkCmdProcessCommandsNVX deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdProcessCommandsNVX- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pProcessCommandsInfo" ::: Ptr VkCmdProcessCommandsInfoNVX) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pProcessCommandsInfo" ::: Ptr VkCmdProcessCommandsInfoNVX) -> IO ())-cmdReserveSpaceForCommandsNVX :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pReserveSpaceInfo" ::: Ptr VkCmdReserveSpaceForCommandsInfoNVX) -> IO ())-cmdReserveSpaceForCommandsNVX deviceCmds = mkVkCmdReserveSpaceForCommandsNVX (pVkCmdReserveSpaceForCommandsNVX deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdReserveSpaceForCommandsNVX- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pReserveSpaceInfo" ::: Ptr VkCmdReserveSpaceForCommandsInfoNVX) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pReserveSpaceInfo" ::: Ptr VkCmdReserveSpaceForCommandsInfoNVX) -> IO ())-createIndirectCommandsLayoutNVX :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkIndirectCommandsLayoutCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pIndirectCommandsLayout" ::: Ptr VkIndirectCommandsLayoutNVX) -> IO VkResult)-createIndirectCommandsLayoutNVX deviceCmds = mkVkCreateIndirectCommandsLayoutNVX (pVkCreateIndirectCommandsLayoutNVX deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateIndirectCommandsLayoutNVX- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkIndirectCommandsLayoutCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pIndirectCommandsLayout" ::: Ptr VkIndirectCommandsLayoutNVX) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkIndirectCommandsLayoutCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pIndirectCommandsLayout" ::: Ptr VkIndirectCommandsLayoutNVX) -> IO VkResult)-destroyIndirectCommandsLayoutNVX :: DeviceCmds -> (("device" ::: VkDevice) -> ("indirectCommandsLayout" ::: VkIndirectCommandsLayoutNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyIndirectCommandsLayoutNVX deviceCmds = mkVkDestroyIndirectCommandsLayoutNVX (pVkDestroyIndirectCommandsLayoutNVX deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyIndirectCommandsLayoutNVX- :: FunPtr (("device" ::: VkDevice) -> ("indirectCommandsLayout" ::: VkIndirectCommandsLayoutNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("indirectCommandsLayout" ::: VkIndirectCommandsLayoutNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-createObjectTableNVX :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkObjectTableCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pObjectTable" ::: Ptr VkObjectTableNVX) -> IO VkResult)-createObjectTableNVX deviceCmds = mkVkCreateObjectTableNVX (pVkCreateObjectTableNVX deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateObjectTableNVX- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkObjectTableCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pObjectTable" ::: Ptr VkObjectTableNVX) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkObjectTableCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pObjectTable" ::: Ptr VkObjectTableNVX) -> IO VkResult)-destroyObjectTableNVX :: DeviceCmds -> (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyObjectTableNVX deviceCmds = mkVkDestroyObjectTableNVX (pVkDestroyObjectTableNVX deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyObjectTableNVX- :: FunPtr (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-registerObjectsNVX :: DeviceCmds -> (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("ppObjectTableEntries" ::: Ptr (Ptr VkObjectTableEntryNVX)) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult)-registerObjectsNVX deviceCmds = mkVkRegisterObjectsNVX (pVkRegisterObjectsNVX deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkRegisterObjectsNVX- :: FunPtr (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("ppObjectTableEntries" ::: Ptr (Ptr VkObjectTableEntryNVX)) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult) -> (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("ppObjectTableEntries" ::: Ptr (Ptr VkObjectTableEntryNVX)) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult)-unregisterObjectsNVX :: DeviceCmds -> (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("pObjectEntryTypes" ::: Ptr VkObjectEntryTypeNVX) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult)-unregisterObjectsNVX deviceCmds = mkVkUnregisterObjectsNVX (pVkUnregisterObjectsNVX deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkUnregisterObjectsNVX- :: FunPtr (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("pObjectEntryTypes" ::: Ptr VkObjectEntryTypeNVX) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult) -> (("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("pObjectEntryTypes" ::: Ptr VkObjectEntryTypeNVX) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult)-cmdPushDescriptorSetKHR :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> IO ())-cmdPushDescriptorSetKHR deviceCmds = mkVkCmdPushDescriptorSetKHR (pVkCmdPushDescriptorSetKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdPushDescriptorSetKHR- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> IO ())-trimCommandPool :: DeviceCmds -> (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolTrimFlags) -> IO ())-trimCommandPool deviceCmds = mkVkTrimCommandPool (pVkTrimCommandPool deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkTrimCommandPool- :: FunPtr (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolTrimFlags) -> IO ()) -> (("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolTrimFlags) -> IO ())-#if defined(VK_USE_PLATFORM_WIN32_KHR)-getMemoryWin32HandleKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkMemoryGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)-getMemoryWin32HandleKHR deviceCmds = mkVkGetMemoryWin32HandleKHR (pVkGetMemoryWin32HandleKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetMemoryWin32HandleKHR- :: FunPtr (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkMemoryGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkMemoryGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)-getMemoryWin32HandlePropertiesKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("handle" ::: HANDLE) -> ("pMemoryWin32HandleProperties" ::: Ptr VkMemoryWin32HandlePropertiesKHR) -> IO VkResult)-getMemoryWin32HandlePropertiesKHR deviceCmds = mkVkGetMemoryWin32HandlePropertiesKHR (pVkGetMemoryWin32HandlePropertiesKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetMemoryWin32HandlePropertiesKHR- :: FunPtr (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("handle" ::: HANDLE) -> ("pMemoryWin32HandleProperties" ::: Ptr VkMemoryWin32HandlePropertiesKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("handle" ::: HANDLE) -> ("pMemoryWin32HandleProperties" ::: Ptr VkMemoryWin32HandlePropertiesKHR) -> IO VkResult)-#endif-getMemoryFdKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkMemoryGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult)-getMemoryFdKHR deviceCmds = mkVkGetMemoryFdKHR (pVkGetMemoryFdKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetMemoryFdKHR- :: FunPtr (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkMemoryGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkMemoryGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult)-getMemoryFdPropertiesKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("fd" ::: CInt) -> ("pMemoryFdProperties" ::: Ptr VkMemoryFdPropertiesKHR) -> IO VkResult)-getMemoryFdPropertiesKHR deviceCmds = mkVkGetMemoryFdPropertiesKHR (pVkGetMemoryFdPropertiesKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetMemoryFdPropertiesKHR- :: FunPtr (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("fd" ::: CInt) -> ("pMemoryFdProperties" ::: Ptr VkMemoryFdPropertiesKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("fd" ::: CInt) -> ("pMemoryFdProperties" ::: Ptr VkMemoryFdPropertiesKHR) -> IO VkResult)-#if defined(VK_USE_PLATFORM_WIN32_KHR)-getSemaphoreWin32HandleKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkSemaphoreGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)-getSemaphoreWin32HandleKHR deviceCmds = mkVkGetSemaphoreWin32HandleKHR (pVkGetSemaphoreWin32HandleKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetSemaphoreWin32HandleKHR- :: FunPtr (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkSemaphoreGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkSemaphoreGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)-importSemaphoreWin32HandleKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pImportSemaphoreWin32HandleInfo" ::: Ptr VkImportSemaphoreWin32HandleInfoKHR) -> IO VkResult)-importSemaphoreWin32HandleKHR deviceCmds = mkVkImportSemaphoreWin32HandleKHR (pVkImportSemaphoreWin32HandleKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkImportSemaphoreWin32HandleKHR- :: FunPtr (("device" ::: VkDevice) -> ("pImportSemaphoreWin32HandleInfo" ::: Ptr VkImportSemaphoreWin32HandleInfoKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pImportSemaphoreWin32HandleInfo" ::: Ptr VkImportSemaphoreWin32HandleInfoKHR) -> IO VkResult)-#endif-getSemaphoreFdKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkSemaphoreGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult)-getSemaphoreFdKHR deviceCmds = mkVkGetSemaphoreFdKHR (pVkGetSemaphoreFdKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetSemaphoreFdKHR- :: FunPtr (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkSemaphoreGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkSemaphoreGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult)-importSemaphoreFdKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pImportSemaphoreFdInfo" ::: Ptr VkImportSemaphoreFdInfoKHR) -> IO VkResult)-importSemaphoreFdKHR deviceCmds = mkVkImportSemaphoreFdKHR (pVkImportSemaphoreFdKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkImportSemaphoreFdKHR- :: FunPtr (("device" ::: VkDevice) -> ("pImportSemaphoreFdInfo" ::: Ptr VkImportSemaphoreFdInfoKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pImportSemaphoreFdInfo" ::: Ptr VkImportSemaphoreFdInfoKHR) -> IO VkResult)-#if defined(VK_USE_PLATFORM_WIN32_KHR)-getFenceWin32HandleKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkFenceGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)-getFenceWin32HandleKHR deviceCmds = mkVkGetFenceWin32HandleKHR (pVkGetFenceWin32HandleKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetFenceWin32HandleKHR- :: FunPtr (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkFenceGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkFenceGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult)-importFenceWin32HandleKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pImportFenceWin32HandleInfo" ::: Ptr VkImportFenceWin32HandleInfoKHR) -> IO VkResult)-importFenceWin32HandleKHR deviceCmds = mkVkImportFenceWin32HandleKHR (pVkImportFenceWin32HandleKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkImportFenceWin32HandleKHR- :: FunPtr (("device" ::: VkDevice) -> ("pImportFenceWin32HandleInfo" ::: Ptr VkImportFenceWin32HandleInfoKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pImportFenceWin32HandleInfo" ::: Ptr VkImportFenceWin32HandleInfoKHR) -> IO VkResult)-#endif-getFenceFdKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkFenceGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult)-getFenceFdKHR deviceCmds = mkVkGetFenceFdKHR (pVkGetFenceFdKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetFenceFdKHR- :: FunPtr (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkFenceGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkFenceGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult)-importFenceFdKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pImportFenceFdInfo" ::: Ptr VkImportFenceFdInfoKHR) -> IO VkResult)-importFenceFdKHR deviceCmds = mkVkImportFenceFdKHR (pVkImportFenceFdKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkImportFenceFdKHR- :: FunPtr (("device" ::: VkDevice) -> ("pImportFenceFdInfo" ::: Ptr VkImportFenceFdInfoKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pImportFenceFdInfo" ::: Ptr VkImportFenceFdInfoKHR) -> IO VkResult)-displayPowerControlEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayPowerInfo" ::: Ptr VkDisplayPowerInfoEXT) -> IO VkResult)-displayPowerControlEXT deviceCmds = mkVkDisplayPowerControlEXT (pVkDisplayPowerControlEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDisplayPowerControlEXT- :: FunPtr (("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayPowerInfo" ::: Ptr VkDisplayPowerInfoEXT) -> IO VkResult) -> (("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayPowerInfo" ::: Ptr VkDisplayPowerInfoEXT) -> IO VkResult)-registerDeviceEventEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("pDeviceEventInfo" ::: Ptr VkDeviceEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult)-registerDeviceEventEXT deviceCmds = mkVkRegisterDeviceEventEXT (pVkRegisterDeviceEventEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkRegisterDeviceEventEXT- :: FunPtr (("device" ::: VkDevice) -> ("pDeviceEventInfo" ::: Ptr VkDeviceEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pDeviceEventInfo" ::: Ptr VkDeviceEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult)-registerDisplayEventEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayEventInfo" ::: Ptr VkDisplayEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult)-registerDisplayEventEXT deviceCmds = mkVkRegisterDisplayEventEXT (pVkRegisterDisplayEventEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkRegisterDisplayEventEXT- :: FunPtr (("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayEventInfo" ::: Ptr VkDisplayEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult) -> (("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayEventInfo" ::: Ptr VkDisplayEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult)-getSwapchainCounterEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("counter" ::: VkSurfaceCounterFlagBitsEXT) -> ("pCounterValue" ::: Ptr Word64) -> IO VkResult)-getSwapchainCounterEXT deviceCmds = mkVkGetSwapchainCounterEXT (pVkGetSwapchainCounterEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetSwapchainCounterEXT- :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("counter" ::: VkSurfaceCounterFlagBitsEXT) -> ("pCounterValue" ::: Ptr Word64) -> IO VkResult) -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("counter" ::: VkSurfaceCounterFlagBitsEXT) -> ("pCounterValue" ::: Ptr Word64) -> IO VkResult)-getDeviceGroupPeerMemoryFeatures :: DeviceCmds -> (("device" ::: VkDevice) -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> ("pPeerMemoryFeatures" ::: Ptr VkPeerMemoryFeatureFlags) -> IO ())-getDeviceGroupPeerMemoryFeatures deviceCmds = mkVkGetDeviceGroupPeerMemoryFeatures (pVkGetDeviceGroupPeerMemoryFeatures deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetDeviceGroupPeerMemoryFeatures- :: FunPtr (("device" ::: VkDevice) -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> ("pPeerMemoryFeatures" ::: Ptr VkPeerMemoryFeatureFlags) -> IO ()) -> (("device" ::: VkDevice) -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> ("pPeerMemoryFeatures" ::: Ptr VkPeerMemoryFeatureFlags) -> IO ())-bindBufferMemory2 :: DeviceCmds -> (("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindBufferMemoryInfo) -> IO VkResult)-bindBufferMemory2 deviceCmds = mkVkBindBufferMemory2 (pVkBindBufferMemory2 deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkBindBufferMemory2- :: FunPtr (("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindBufferMemoryInfo) -> IO VkResult) -> (("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindBufferMemoryInfo) -> IO VkResult)-bindImageMemory2 :: DeviceCmds -> (("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindImageMemoryInfo) -> IO VkResult)-bindImageMemory2 deviceCmds = mkVkBindImageMemory2 (pVkBindImageMemory2 deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkBindImageMemory2- :: FunPtr (("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindImageMemoryInfo) -> IO VkResult) -> (("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindImageMemoryInfo) -> IO VkResult)-cmdSetDeviceMask :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("deviceMask" ::: Word32) -> IO ())-cmdSetDeviceMask deviceCmds = mkVkCmdSetDeviceMask (pVkCmdSetDeviceMask deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdSetDeviceMask- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("deviceMask" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("deviceMask" ::: Word32) -> IO ())-getDeviceGroupPresentCapabilitiesKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pDeviceGroupPresentCapabilities" ::: Ptr VkDeviceGroupPresentCapabilitiesKHR) -> IO VkResult)-getDeviceGroupPresentCapabilitiesKHR deviceCmds = mkVkGetDeviceGroupPresentCapabilitiesKHR (pVkGetDeviceGroupPresentCapabilitiesKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetDeviceGroupPresentCapabilitiesKHR- :: FunPtr (("device" ::: VkDevice) -> ("pDeviceGroupPresentCapabilities" ::: Ptr VkDeviceGroupPresentCapabilitiesKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pDeviceGroupPresentCapabilities" ::: Ptr VkDeviceGroupPresentCapabilitiesKHR) -> IO VkResult)-getDeviceGroupSurfacePresentModesKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pModes" ::: Ptr VkDeviceGroupPresentModeFlagsKHR) -> IO VkResult)-getDeviceGroupSurfacePresentModesKHR deviceCmds = mkVkGetDeviceGroupSurfacePresentModesKHR (pVkGetDeviceGroupSurfacePresentModesKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetDeviceGroupSurfacePresentModesKHR- :: FunPtr (("device" ::: VkDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pModes" ::: Ptr VkDeviceGroupPresentModeFlagsKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pModes" ::: Ptr VkDeviceGroupPresentModeFlagsKHR) -> IO VkResult)-acquireNextImage2KHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("pAcquireInfo" ::: Ptr VkAcquireNextImageInfoKHR) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult)-acquireNextImage2KHR deviceCmds = mkVkAcquireNextImage2KHR (pVkAcquireNextImage2KHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkAcquireNextImage2KHR- :: FunPtr (("device" ::: VkDevice) -> ("pAcquireInfo" ::: Ptr VkAcquireNextImageInfoKHR) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pAcquireInfo" ::: Ptr VkAcquireNextImageInfoKHR) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult)-cmdDispatchBase :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ())-cmdDispatchBase deviceCmds = mkVkCmdDispatchBase (pVkCmdDispatchBase deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdDispatchBase- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ())-createDescriptorUpdateTemplate :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorUpdateTemplateCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorUpdateTemplate" ::: Ptr VkDescriptorUpdateTemplate) -> IO VkResult)-createDescriptorUpdateTemplate deviceCmds = mkVkCreateDescriptorUpdateTemplate (pVkCreateDescriptorUpdateTemplate deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateDescriptorUpdateTemplate- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorUpdateTemplateCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorUpdateTemplate" ::: Ptr VkDescriptorUpdateTemplate) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorUpdateTemplateCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorUpdateTemplate" ::: Ptr VkDescriptorUpdateTemplate) -> IO VkResult)-destroyDescriptorUpdateTemplate :: DeviceCmds -> (("device" ::: VkDevice) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyDescriptorUpdateTemplate deviceCmds = mkVkDestroyDescriptorUpdateTemplate (pVkDestroyDescriptorUpdateTemplate deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyDescriptorUpdateTemplate- :: FunPtr (("device" ::: VkDevice) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-updateDescriptorSetWithTemplate :: DeviceCmds -> (("device" ::: VkDevice) -> ("descriptorSet" ::: VkDescriptorSet) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pData" ::: Ptr ()) -> IO ())-updateDescriptorSetWithTemplate deviceCmds = mkVkUpdateDescriptorSetWithTemplate (pVkUpdateDescriptorSetWithTemplate deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkUpdateDescriptorSetWithTemplate- :: FunPtr (("device" ::: VkDevice) -> ("descriptorSet" ::: VkDescriptorSet) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pData" ::: Ptr ()) -> IO ()) -> (("device" ::: VkDevice) -> ("descriptorSet" ::: VkDescriptorSet) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pData" ::: Ptr ()) -> IO ())-cmdPushDescriptorSetWithTemplateKHR :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("pData" ::: Ptr ()) -> IO ())-cmdPushDescriptorSetWithTemplateKHR deviceCmds = mkVkCmdPushDescriptorSetWithTemplateKHR (pVkCmdPushDescriptorSetWithTemplateKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdPushDescriptorSetWithTemplateKHR- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("pData" ::: Ptr ()) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("pData" ::: Ptr ()) -> IO ())-setHdrMetadataEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> ("pMetadata" ::: Ptr VkHdrMetadataEXT) -> IO ())-setHdrMetadataEXT deviceCmds = mkVkSetHdrMetadataEXT (pVkSetHdrMetadataEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkSetHdrMetadataEXT- :: FunPtr (("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> ("pMetadata" ::: Ptr VkHdrMetadataEXT) -> IO ()) -> (("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> ("pMetadata" ::: Ptr VkHdrMetadataEXT) -> IO ())-getSwapchainStatusKHR :: DeviceCmds -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> IO VkResult)-getSwapchainStatusKHR deviceCmds = mkVkGetSwapchainStatusKHR (pVkGetSwapchainStatusKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetSwapchainStatusKHR- :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> IO VkResult) -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> IO VkResult)-getRefreshCycleDurationGOOGLE :: DeviceCmds -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pDisplayTimingProperties" ::: Ptr VkRefreshCycleDurationGOOGLE) -> IO VkResult)-getRefreshCycleDurationGOOGLE deviceCmds = mkVkGetRefreshCycleDurationGOOGLE (pVkGetRefreshCycleDurationGOOGLE deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetRefreshCycleDurationGOOGLE- :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pDisplayTimingProperties" ::: Ptr VkRefreshCycleDurationGOOGLE) -> IO VkResult) -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pDisplayTimingProperties" ::: Ptr VkRefreshCycleDurationGOOGLE) -> IO VkResult)-getPastPresentationTimingGOOGLE :: DeviceCmds -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pPresentationTimingCount" ::: Ptr Word32) -> ("pPresentationTimings" ::: Ptr VkPastPresentationTimingGOOGLE) -> IO VkResult)-getPastPresentationTimingGOOGLE deviceCmds = mkVkGetPastPresentationTimingGOOGLE (pVkGetPastPresentationTimingGOOGLE deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPastPresentationTimingGOOGLE- :: FunPtr (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pPresentationTimingCount" ::: Ptr Word32) -> ("pPresentationTimings" ::: Ptr VkPastPresentationTimingGOOGLE) -> IO VkResult) -> (("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pPresentationTimingCount" ::: Ptr Word32) -> ("pPresentationTimings" ::: Ptr VkPastPresentationTimingGOOGLE) -> IO VkResult)-cmdSetViewportWScalingNV :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewportWScalings" ::: Ptr VkViewportWScalingNV) -> IO ())-cmdSetViewportWScalingNV deviceCmds = mkVkCmdSetViewportWScalingNV (pVkCmdSetViewportWScalingNV deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdSetViewportWScalingNV- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewportWScalings" ::: Ptr VkViewportWScalingNV) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewportWScalings" ::: Ptr VkViewportWScalingNV) -> IO ())-cmdSetDiscardRectangleEXT :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("firstDiscardRectangle" ::: Word32) -> ("discardRectangleCount" ::: Word32) -> ("pDiscardRectangles" ::: Ptr VkRect2D) -> IO ())-cmdSetDiscardRectangleEXT deviceCmds = mkVkCmdSetDiscardRectangleEXT (pVkCmdSetDiscardRectangleEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdSetDiscardRectangleEXT- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("firstDiscardRectangle" ::: Word32) -> ("discardRectangleCount" ::: Word32) -> ("pDiscardRectangles" ::: Ptr VkRect2D) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("firstDiscardRectangle" ::: Word32) -> ("discardRectangleCount" ::: Word32) -> ("pDiscardRectangles" ::: Ptr VkRect2D) -> IO ())-cmdSetSampleLocationsEXT :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pSampleLocationsInfo" ::: Ptr VkSampleLocationsInfoEXT) -> IO ())-cmdSetSampleLocationsEXT deviceCmds = mkVkCmdSetSampleLocationsEXT (pVkCmdSetSampleLocationsEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdSetSampleLocationsEXT- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pSampleLocationsInfo" ::: Ptr VkSampleLocationsInfoEXT) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pSampleLocationsInfo" ::: Ptr VkSampleLocationsInfoEXT) -> IO ())-getBufferMemoryRequirements2 :: DeviceCmds -> (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkBufferMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ())-getBufferMemoryRequirements2 deviceCmds = mkVkGetBufferMemoryRequirements2 (pVkGetBufferMemoryRequirements2 deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetBufferMemoryRequirements2- :: FunPtr (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkBufferMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ()) -> (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkBufferMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ())-getImageMemoryRequirements2 :: DeviceCmds -> (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ())-getImageMemoryRequirements2 deviceCmds = mkVkGetImageMemoryRequirements2 (pVkGetImageMemoryRequirements2 deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetImageMemoryRequirements2- :: FunPtr (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ()) -> (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ())-getImageSparseMemoryRequirements2 :: DeviceCmds -> (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageSparseMemoryRequirementsInfo2) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements2) -> IO ())-getImageSparseMemoryRequirements2 deviceCmds = mkVkGetImageSparseMemoryRequirements2 (pVkGetImageSparseMemoryRequirements2 deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetImageSparseMemoryRequirements2- :: FunPtr (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageSparseMemoryRequirementsInfo2) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements2) -> IO ()) -> (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageSparseMemoryRequirementsInfo2) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements2) -> IO ())-createSamplerYcbcrConversion :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerYcbcrConversionCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pYcbcrConversion" ::: Ptr VkSamplerYcbcrConversion) -> IO VkResult)-createSamplerYcbcrConversion deviceCmds = mkVkCreateSamplerYcbcrConversion (pVkCreateSamplerYcbcrConversion deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateSamplerYcbcrConversion- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerYcbcrConversionCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pYcbcrConversion" ::: Ptr VkSamplerYcbcrConversion) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerYcbcrConversionCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pYcbcrConversion" ::: Ptr VkSamplerYcbcrConversion) -> IO VkResult)-destroySamplerYcbcrConversion :: DeviceCmds -> (("device" ::: VkDevice) -> ("ycbcrConversion" ::: VkSamplerYcbcrConversion) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroySamplerYcbcrConversion deviceCmds = mkVkDestroySamplerYcbcrConversion (pVkDestroySamplerYcbcrConversion deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroySamplerYcbcrConversion- :: FunPtr (("device" ::: VkDevice) -> ("ycbcrConversion" ::: VkSamplerYcbcrConversion) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("ycbcrConversion" ::: VkSamplerYcbcrConversion) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-getDeviceQueue2 :: DeviceCmds -> (("device" ::: VkDevice) -> ("pQueueInfo" ::: Ptr VkDeviceQueueInfo2) -> ("pQueue" ::: Ptr VkQueue) -> IO ())-getDeviceQueue2 deviceCmds = mkVkGetDeviceQueue2 (pVkGetDeviceQueue2 deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetDeviceQueue2- :: FunPtr (("device" ::: VkDevice) -> ("pQueueInfo" ::: Ptr VkDeviceQueueInfo2) -> ("pQueue" ::: Ptr VkQueue) -> IO ()) -> (("device" ::: VkDevice) -> ("pQueueInfo" ::: Ptr VkDeviceQueueInfo2) -> ("pQueue" ::: Ptr VkQueue) -> IO ())-createValidationCacheEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkValidationCacheCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pValidationCache" ::: Ptr VkValidationCacheEXT) -> IO VkResult)-createValidationCacheEXT deviceCmds = mkVkCreateValidationCacheEXT (pVkCreateValidationCacheEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateValidationCacheEXT- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkValidationCacheCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pValidationCache" ::: Ptr VkValidationCacheEXT) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkValidationCacheCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pValidationCache" ::: Ptr VkValidationCacheEXT) -> IO VkResult)-destroyValidationCacheEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyValidationCacheEXT deviceCmds = mkVkDestroyValidationCacheEXT (pVkDestroyValidationCacheEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyValidationCacheEXT- :: FunPtr (("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-getValidationCacheDataEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult)-getValidationCacheDataEXT deviceCmds = mkVkGetValidationCacheDataEXT (pVkGetValidationCacheDataEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetValidationCacheDataEXT- :: FunPtr (("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult) -> (("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult)-mergeValidationCachesEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("dstCache" ::: VkValidationCacheEXT) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkValidationCacheEXT) -> IO VkResult)-mergeValidationCachesEXT deviceCmds = mkVkMergeValidationCachesEXT (pVkMergeValidationCachesEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkMergeValidationCachesEXT- :: FunPtr (("device" ::: VkDevice) -> ("dstCache" ::: VkValidationCacheEXT) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkValidationCacheEXT) -> IO VkResult) -> (("device" ::: VkDevice) -> ("dstCache" ::: VkValidationCacheEXT) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkValidationCacheEXT) -> IO VkResult)-getDescriptorSetLayoutSupport :: DeviceCmds -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pSupport" ::: Ptr VkDescriptorSetLayoutSupport) -> IO ())-getDescriptorSetLayoutSupport deviceCmds = mkVkGetDescriptorSetLayoutSupport (pVkGetDescriptorSetLayoutSupport deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetDescriptorSetLayoutSupport- :: FunPtr (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pSupport" ::: Ptr VkDescriptorSetLayoutSupport) -> IO ()) -> (("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pSupport" ::: Ptr VkDescriptorSetLayoutSupport) -> IO ())-getSwapchainGrallocUsageANDROID :: DeviceCmds -> (("device" ::: VkDevice) -> ("format" ::: VkFormat) -> ("imageUsage" ::: VkImageUsageFlags) -> ("grallocUsage" ::: Ptr CInt) -> IO VkResult)-getSwapchainGrallocUsageANDROID deviceCmds = mkVkGetSwapchainGrallocUsageANDROID (pVkGetSwapchainGrallocUsageANDROID deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetSwapchainGrallocUsageANDROID- :: FunPtr (("device" ::: VkDevice) -> ("format" ::: VkFormat) -> ("imageUsage" ::: VkImageUsageFlags) -> ("grallocUsage" ::: Ptr CInt) -> IO VkResult) -> (("device" ::: VkDevice) -> ("format" ::: VkFormat) -> ("imageUsage" ::: VkImageUsageFlags) -> ("grallocUsage" ::: Ptr CInt) -> IO VkResult)-acquireImageANDROID :: DeviceCmds -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("nativeFenceFd" ::: CInt) -> ("semaphore" ::: VkSemaphore) -> ("fence" ::: VkFence) -> IO VkResult)-acquireImageANDROID deviceCmds = mkVkAcquireImageANDROID (pVkAcquireImageANDROID deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkAcquireImageANDROID- :: FunPtr (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("nativeFenceFd" ::: CInt) -> ("semaphore" ::: VkSemaphore) -> ("fence" ::: VkFence) -> IO VkResult) -> (("device" ::: VkDevice) -> ("image" ::: VkImage) -> ("nativeFenceFd" ::: CInt) -> ("semaphore" ::: VkSemaphore) -> ("fence" ::: VkFence) -> IO VkResult)-queueSignalReleaseImageANDROID :: DeviceCmds -> (("queue" ::: VkQueue) -> ("waitSemaphoreCount" ::: Word32) -> ("pWaitSemaphores" ::: Ptr VkSemaphore) -> ("image" ::: VkImage) -> ("pNativeFenceFd" ::: Ptr CInt) -> IO VkResult)-queueSignalReleaseImageANDROID deviceCmds = mkVkQueueSignalReleaseImageANDROID (pVkQueueSignalReleaseImageANDROID deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkQueueSignalReleaseImageANDROID- :: FunPtr (("queue" ::: VkQueue) -> ("waitSemaphoreCount" ::: Word32) -> ("pWaitSemaphores" ::: Ptr VkSemaphore) -> ("image" ::: VkImage) -> ("pNativeFenceFd" ::: Ptr CInt) -> IO VkResult) -> (("queue" ::: VkQueue) -> ("waitSemaphoreCount" ::: Word32) -> ("pWaitSemaphores" ::: Ptr VkSemaphore) -> ("image" ::: VkImage) -> ("pNativeFenceFd" ::: Ptr CInt) -> IO VkResult)-getShaderInfoAMD :: DeviceCmds -> (("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("shaderStage" ::: VkShaderStageFlagBits) -> ("infoType" ::: VkShaderInfoTypeAMD) -> ("pInfoSize" ::: Ptr CSize) -> ("pInfo" ::: Ptr ()) -> IO VkResult)-getShaderInfoAMD deviceCmds = mkVkGetShaderInfoAMD (pVkGetShaderInfoAMD deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetShaderInfoAMD- :: FunPtr (("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("shaderStage" ::: VkShaderStageFlagBits) -> ("infoType" ::: VkShaderInfoTypeAMD) -> ("pInfoSize" ::: Ptr CSize) -> ("pInfo" ::: Ptr ()) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("shaderStage" ::: VkShaderStageFlagBits) -> ("infoType" ::: VkShaderInfoTypeAMD) -> ("pInfoSize" ::: Ptr CSize) -> ("pInfo" ::: Ptr ()) -> IO VkResult)-setDebugUtilsObjectNameEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugUtilsObjectNameInfoEXT) -> IO VkResult)-setDebugUtilsObjectNameEXT deviceCmds = mkVkSetDebugUtilsObjectNameEXT (pVkSetDebugUtilsObjectNameEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkSetDebugUtilsObjectNameEXT- :: FunPtr (("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugUtilsObjectNameInfoEXT) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugUtilsObjectNameInfoEXT) -> IO VkResult)-setDebugUtilsObjectTagEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugUtilsObjectTagInfoEXT) -> IO VkResult)-setDebugUtilsObjectTagEXT deviceCmds = mkVkSetDebugUtilsObjectTagEXT (pVkSetDebugUtilsObjectTagEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkSetDebugUtilsObjectTagEXT- :: FunPtr (("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugUtilsObjectTagInfoEXT) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugUtilsObjectTagInfoEXT) -> IO VkResult)-queueBeginDebugUtilsLabelEXT :: DeviceCmds -> (("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())-queueBeginDebugUtilsLabelEXT deviceCmds = mkVkQueueBeginDebugUtilsLabelEXT (pVkQueueBeginDebugUtilsLabelEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkQueueBeginDebugUtilsLabelEXT- :: FunPtr (("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ()) -> (("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())-queueEndDebugUtilsLabelEXT :: DeviceCmds -> (("queue" ::: VkQueue) -> IO ())-queueEndDebugUtilsLabelEXT deviceCmds = mkVkQueueEndDebugUtilsLabelEXT (pVkQueueEndDebugUtilsLabelEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkQueueEndDebugUtilsLabelEXT- :: FunPtr (("queue" ::: VkQueue) -> IO ()) -> (("queue" ::: VkQueue) -> IO ())-queueInsertDebugUtilsLabelEXT :: DeviceCmds -> (("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())-queueInsertDebugUtilsLabelEXT deviceCmds = mkVkQueueInsertDebugUtilsLabelEXT (pVkQueueInsertDebugUtilsLabelEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkQueueInsertDebugUtilsLabelEXT- :: FunPtr (("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ()) -> (("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())-cmdBeginDebugUtilsLabelEXT :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())-cmdBeginDebugUtilsLabelEXT deviceCmds = mkVkCmdBeginDebugUtilsLabelEXT (pVkCmdBeginDebugUtilsLabelEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdBeginDebugUtilsLabelEXT- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())-cmdEndDebugUtilsLabelEXT :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> IO ())-cmdEndDebugUtilsLabelEXT deviceCmds = mkVkCmdEndDebugUtilsLabelEXT (pVkCmdEndDebugUtilsLabelEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdEndDebugUtilsLabelEXT- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> IO ())-cmdInsertDebugUtilsLabelEXT :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())-cmdInsertDebugUtilsLabelEXT deviceCmds = mkVkCmdInsertDebugUtilsLabelEXT (pVkCmdInsertDebugUtilsLabelEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdInsertDebugUtilsLabelEXT- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ())-getMemoryHostPointerPropertiesEXT :: DeviceCmds -> (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("pHostPointer" ::: Ptr ()) -> ("pMemoryHostPointerProperties" ::: Ptr VkMemoryHostPointerPropertiesEXT) -> IO VkResult)-getMemoryHostPointerPropertiesEXT deviceCmds = mkVkGetMemoryHostPointerPropertiesEXT (pVkGetMemoryHostPointerPropertiesEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetMemoryHostPointerPropertiesEXT- :: FunPtr (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("pHostPointer" ::: Ptr ()) -> ("pMemoryHostPointerProperties" ::: Ptr VkMemoryHostPointerPropertiesEXT) -> IO VkResult) -> (("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("pHostPointer" ::: Ptr ()) -> ("pMemoryHostPointerProperties" ::: Ptr VkMemoryHostPointerPropertiesEXT) -> IO VkResult)-cmdWriteBufferMarkerAMD :: DeviceCmds -> (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("marker" ::: Word32) -> IO ())-cmdWriteBufferMarkerAMD deviceCmds = mkVkCmdWriteBufferMarkerAMD (pVkCmdWriteBufferMarkerAMD deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCmdWriteBufferMarkerAMD- :: FunPtr (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("marker" ::: Word32) -> IO ()) -> (("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("marker" ::: Word32) -> IO ())-#if defined(VK_USE_PLATFORM_ANDROID_KHR)-getAndroidHardwareBufferPropertiesANDROID :: DeviceCmds -> (("device" ::: VkDevice) -> ("buffer" ::: Ptr AHardwareBuffer) -> ("pProperties" ::: Ptr VkAndroidHardwareBufferPropertiesANDROID) -> IO VkResult)-getAndroidHardwareBufferPropertiesANDROID deviceCmds = mkVkGetAndroidHardwareBufferPropertiesANDROID (pVkGetAndroidHardwareBufferPropertiesANDROID deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetAndroidHardwareBufferPropertiesANDROID- :: FunPtr (("device" ::: VkDevice) -> ("buffer" ::: Ptr AHardwareBuffer) -> ("pProperties" ::: Ptr VkAndroidHardwareBufferPropertiesANDROID) -> IO VkResult) -> (("device" ::: VkDevice) -> ("buffer" ::: Ptr AHardwareBuffer) -> ("pProperties" ::: Ptr VkAndroidHardwareBufferPropertiesANDROID) -> IO VkResult)-getMemoryAndroidHardwareBufferANDROID :: DeviceCmds -> (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkMemoryGetAndroidHardwareBufferInfoANDROID) -> ("pBuffer" ::: Ptr (Ptr AHardwareBuffer)) -> IO VkResult)-getMemoryAndroidHardwareBufferANDROID deviceCmds = mkVkGetMemoryAndroidHardwareBufferANDROID (pVkGetMemoryAndroidHardwareBufferANDROID deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetMemoryAndroidHardwareBufferANDROID- :: FunPtr (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkMemoryGetAndroidHardwareBufferInfoANDROID) -> ("pBuffer" ::: Ptr (Ptr AHardwareBuffer)) -> IO VkResult) -> (("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkMemoryGetAndroidHardwareBufferInfoANDROID) -> ("pBuffer" ::: Ptr (Ptr AHardwareBuffer)) -> IO VkResult)-#endif---- * Instance commands-destroyInstance :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyInstance deviceCmds = mkVkDestroyInstance (pVkDestroyInstance deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyInstance- :: FunPtr (("instance" ::: VkInstance) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("instance" ::: VkInstance) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-enumeratePhysicalDevices :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pPhysicalDeviceCount" ::: Ptr Word32) -> ("pPhysicalDevices" ::: Ptr VkPhysicalDevice) -> IO VkResult)-enumeratePhysicalDevices deviceCmds = mkVkEnumeratePhysicalDevices (pVkEnumeratePhysicalDevices deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkEnumeratePhysicalDevices- :: FunPtr (("instance" ::: VkInstance) -> ("pPhysicalDeviceCount" ::: Ptr Word32) -> ("pPhysicalDevices" ::: Ptr VkPhysicalDevice) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pPhysicalDeviceCount" ::: Ptr Word32) -> ("pPhysicalDevices" ::: Ptr VkPhysicalDevice) -> IO VkResult)-getInstanceProcAddr :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction)-getInstanceProcAddr deviceCmds = mkVkGetInstanceProcAddr (pVkGetInstanceProcAddr deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetInstanceProcAddr- :: FunPtr (("instance" ::: VkInstance) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction) -> (("instance" ::: VkInstance) -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction)-getPhysicalDeviceProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties) -> IO ())-getPhysicalDeviceProperties deviceCmds = mkVkGetPhysicalDeviceProperties (pVkGetPhysicalDeviceProperties deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceProperties- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties) -> IO ())-getPhysicalDeviceQueueFamilyProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties) -> IO ())-getPhysicalDeviceQueueFamilyProperties deviceCmds = mkVkGetPhysicalDeviceQueueFamilyProperties (pVkGetPhysicalDeviceQueueFamilyProperties deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceQueueFamilyProperties- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties) -> IO ())-getPhysicalDeviceMemoryProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties) -> IO ())-getPhysicalDeviceMemoryProperties deviceCmds = mkVkGetPhysicalDeviceMemoryProperties (pVkGetPhysicalDeviceMemoryProperties deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceMemoryProperties- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties) -> IO ())-getPhysicalDeviceFeatures :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures) -> IO ())-getPhysicalDeviceFeatures deviceCmds = mkVkGetPhysicalDeviceFeatures (pVkGetPhysicalDeviceFeatures deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceFeatures- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures) -> IO ())-getPhysicalDeviceFormatProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties) -> IO ())-getPhysicalDeviceFormatProperties deviceCmds = mkVkGetPhysicalDeviceFormatProperties (pVkGetPhysicalDeviceFormatProperties deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceFormatProperties- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties) -> IO ())-getPhysicalDeviceImageFormatProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties) -> IO VkResult)-getPhysicalDeviceImageFormatProperties deviceCmds = mkVkGetPhysicalDeviceImageFormatProperties (pVkGetPhysicalDeviceImageFormatProperties deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceImageFormatProperties- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties) -> IO VkResult)-createDevice :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pCreateInfo" ::: Ptr VkDeviceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDevice" ::: Ptr VkDevice) -> IO VkResult)-createDevice deviceCmds = mkVkCreateDevice (pVkCreateDevice deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateDevice- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pCreateInfo" ::: Ptr VkDeviceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDevice" ::: Ptr VkDevice) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pCreateInfo" ::: Ptr VkDeviceCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDevice" ::: Ptr VkDevice) -> IO VkResult)-enumerateDeviceLayerProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkLayerProperties) -> IO VkResult)-enumerateDeviceLayerProperties deviceCmds = mkVkEnumerateDeviceLayerProperties (pVkEnumerateDeviceLayerProperties deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkEnumerateDeviceLayerProperties- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkLayerProperties) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkLayerProperties) -> IO VkResult)-enumerateDeviceExtensionProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pLayerName" ::: Ptr CChar) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkExtensionProperties) -> IO VkResult)-enumerateDeviceExtensionProperties deviceCmds = mkVkEnumerateDeviceExtensionProperties (pVkEnumerateDeviceExtensionProperties deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkEnumerateDeviceExtensionProperties- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pLayerName" ::: Ptr CChar) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkExtensionProperties) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pLayerName" ::: Ptr CChar) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkExtensionProperties) -> IO VkResult)-getPhysicalDeviceSparseImageFormatProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("samples" ::: VkSampleCountFlagBits) -> ("usage" ::: VkImageUsageFlags) -> ("tiling" ::: VkImageTiling) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties) -> IO ())-getPhysicalDeviceSparseImageFormatProperties deviceCmds = mkVkGetPhysicalDeviceSparseImageFormatProperties (pVkGetPhysicalDeviceSparseImageFormatProperties deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceSparseImageFormatProperties- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("samples" ::: VkSampleCountFlagBits) -> ("usage" ::: VkImageUsageFlags) -> ("tiling" ::: VkImageTiling) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("samples" ::: VkSampleCountFlagBits) -> ("usage" ::: VkImageUsageFlags) -> ("tiling" ::: VkImageTiling) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties) -> IO ())-#if defined(VK_USE_PLATFORM_ANDROID_KHR)-createAndroidSurfaceKHR :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkAndroidSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-createAndroidSurfaceKHR deviceCmds = mkVkCreateAndroidSurfaceKHR (pVkCreateAndroidSurfaceKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateAndroidSurfaceKHR- :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkAndroidSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkAndroidSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-#endif-getPhysicalDeviceDisplayPropertiesKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPropertiesKHR) -> IO VkResult)-getPhysicalDeviceDisplayPropertiesKHR deviceCmds = mkVkGetPhysicalDeviceDisplayPropertiesKHR (pVkGetPhysicalDeviceDisplayPropertiesKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceDisplayPropertiesKHR- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPropertiesKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPropertiesKHR) -> IO VkResult)-getPhysicalDeviceDisplayPlanePropertiesKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPlanePropertiesKHR) -> IO VkResult)-getPhysicalDeviceDisplayPlanePropertiesKHR deviceCmds = mkVkGetPhysicalDeviceDisplayPlanePropertiesKHR (pVkGetPhysicalDeviceDisplayPlanePropertiesKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceDisplayPlanePropertiesKHR- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPlanePropertiesKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPlanePropertiesKHR) -> IO VkResult)-getDisplayPlaneSupportedDisplaysKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("planeIndex" ::: Word32) -> ("pDisplayCount" ::: Ptr Word32) -> ("pDisplays" ::: Ptr VkDisplayKHR) -> IO VkResult)-getDisplayPlaneSupportedDisplaysKHR deviceCmds = mkVkGetDisplayPlaneSupportedDisplaysKHR (pVkGetDisplayPlaneSupportedDisplaysKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetDisplayPlaneSupportedDisplaysKHR- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("planeIndex" ::: Word32) -> ("pDisplayCount" ::: Ptr Word32) -> ("pDisplays" ::: Ptr VkDisplayKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("planeIndex" ::: Word32) -> ("pDisplayCount" ::: Ptr Word32) -> ("pDisplays" ::: Ptr VkDisplayKHR) -> IO VkResult)-getDisplayModePropertiesKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayModePropertiesKHR) -> IO VkResult)-getDisplayModePropertiesKHR deviceCmds = mkVkGetDisplayModePropertiesKHR (pVkGetDisplayModePropertiesKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetDisplayModePropertiesKHR- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayModePropertiesKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayModePropertiesKHR) -> IO VkResult)-createDisplayModeKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pCreateInfo" ::: Ptr VkDisplayModeCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMode" ::: Ptr VkDisplayModeKHR) -> IO VkResult)-createDisplayModeKHR deviceCmds = mkVkCreateDisplayModeKHR (pVkCreateDisplayModeKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateDisplayModeKHR- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pCreateInfo" ::: Ptr VkDisplayModeCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMode" ::: Ptr VkDisplayModeKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pCreateInfo" ::: Ptr VkDisplayModeCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMode" ::: Ptr VkDisplayModeKHR) -> IO VkResult)-getDisplayPlaneCapabilitiesKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("mode" ::: VkDisplayModeKHR) -> ("planeIndex" ::: Word32) -> ("pCapabilities" ::: Ptr VkDisplayPlaneCapabilitiesKHR) -> IO VkResult)-getDisplayPlaneCapabilitiesKHR deviceCmds = mkVkGetDisplayPlaneCapabilitiesKHR (pVkGetDisplayPlaneCapabilitiesKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetDisplayPlaneCapabilitiesKHR- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("mode" ::: VkDisplayModeKHR) -> ("planeIndex" ::: Word32) -> ("pCapabilities" ::: Ptr VkDisplayPlaneCapabilitiesKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("mode" ::: VkDisplayModeKHR) -> ("planeIndex" ::: Word32) -> ("pCapabilities" ::: Ptr VkDisplayPlaneCapabilitiesKHR) -> IO VkResult)-createDisplayPlaneSurfaceKHR :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDisplaySurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-createDisplayPlaneSurfaceKHR deviceCmds = mkVkCreateDisplayPlaneSurfaceKHR (pVkCreateDisplayPlaneSurfaceKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateDisplayPlaneSurfaceKHR- :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDisplaySurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDisplaySurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-#if defined(VK_USE_PLATFORM_MIR_KHR)-createMirSurfaceKHR :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMirSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-createMirSurfaceKHR deviceCmds = mkVkCreateMirSurfaceKHR (pVkCreateMirSurfaceKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateMirSurfaceKHR- :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMirSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMirSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-getPhysicalDeviceMirPresentationSupportKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr MirConnection) -> IO VkBool32)-getPhysicalDeviceMirPresentationSupportKHR deviceCmds = mkVkGetPhysicalDeviceMirPresentationSupportKHR (pVkGetPhysicalDeviceMirPresentationSupportKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceMirPresentationSupportKHR- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr MirConnection) -> IO VkBool32) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr MirConnection) -> IO VkBool32)-#endif-destroySurfaceKHR :: InstanceCmds -> (("instance" ::: VkInstance) -> ("surface" ::: VkSurfaceKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroySurfaceKHR deviceCmds = mkVkDestroySurfaceKHR (pVkDestroySurfaceKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroySurfaceKHR- :: FunPtr (("instance" ::: VkInstance) -> ("surface" ::: VkSurfaceKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("instance" ::: VkInstance) -> ("surface" ::: VkSurfaceKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-getPhysicalDeviceSurfaceSupportKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("surface" ::: VkSurfaceKHR) -> ("pSupported" ::: Ptr VkBool32) -> IO VkResult)-getPhysicalDeviceSurfaceSupportKHR deviceCmds = mkVkGetPhysicalDeviceSurfaceSupportKHR (pVkGetPhysicalDeviceSurfaceSupportKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceSurfaceSupportKHR- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("surface" ::: VkSurfaceKHR) -> ("pSupported" ::: Ptr VkBool32) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("surface" ::: VkSurfaceKHR) -> ("pSupported" ::: Ptr VkBool32) -> IO VkResult)-getPhysicalDeviceSurfaceCapabilitiesKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilitiesKHR) -> IO VkResult)-getPhysicalDeviceSurfaceCapabilitiesKHR deviceCmds = mkVkGetPhysicalDeviceSurfaceCapabilitiesKHR (pVkGetPhysicalDeviceSurfaceCapabilitiesKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceSurfaceCapabilitiesKHR- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilitiesKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilitiesKHR) -> IO VkResult)-getPhysicalDeviceSurfaceFormatsKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormatKHR) -> IO VkResult)-getPhysicalDeviceSurfaceFormatsKHR deviceCmds = mkVkGetPhysicalDeviceSurfaceFormatsKHR (pVkGetPhysicalDeviceSurfaceFormatsKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceSurfaceFormatsKHR- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormatKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormatKHR) -> IO VkResult)-getPhysicalDeviceSurfacePresentModesKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pPresentModeCount" ::: Ptr Word32) -> ("pPresentModes" ::: Ptr VkPresentModeKHR) -> IO VkResult)-getPhysicalDeviceSurfacePresentModesKHR deviceCmds = mkVkGetPhysicalDeviceSurfacePresentModesKHR (pVkGetPhysicalDeviceSurfacePresentModesKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceSurfacePresentModesKHR- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pPresentModeCount" ::: Ptr Word32) -> ("pPresentModes" ::: Ptr VkPresentModeKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pPresentModeCount" ::: Ptr Word32) -> ("pPresentModes" ::: Ptr VkPresentModeKHR) -> IO VkResult)-#if defined(VK_USE_PLATFORM_VI_NN)-createViSurfaceNN :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkViSurfaceCreateInfoNN) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-createViSurfaceNN deviceCmds = mkVkCreateViSurfaceNN (pVkCreateViSurfaceNN deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateViSurfaceNN- :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkViSurfaceCreateInfoNN) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkViSurfaceCreateInfoNN) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-#endif-#if defined(VK_USE_PLATFORM_WAYLAND_KHR)-createWaylandSurfaceKHR :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWaylandSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-createWaylandSurfaceKHR deviceCmds = mkVkCreateWaylandSurfaceKHR (pVkCreateWaylandSurfaceKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateWaylandSurfaceKHR- :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWaylandSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWaylandSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-getPhysicalDeviceWaylandPresentationSupportKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("display" ::: Ptr Wl_display) -> IO VkBool32)-getPhysicalDeviceWaylandPresentationSupportKHR deviceCmds = mkVkGetPhysicalDeviceWaylandPresentationSupportKHR (pVkGetPhysicalDeviceWaylandPresentationSupportKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceWaylandPresentationSupportKHR- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("display" ::: Ptr Wl_display) -> IO VkBool32) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("display" ::: Ptr Wl_display) -> IO VkBool32)-#endif-#if defined(VK_USE_PLATFORM_WIN32_KHR)-createWin32SurfaceKHR :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWin32SurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-createWin32SurfaceKHR deviceCmds = mkVkCreateWin32SurfaceKHR (pVkCreateWin32SurfaceKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateWin32SurfaceKHR- :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWin32SurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWin32SurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-getPhysicalDeviceWin32PresentationSupportKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> IO VkBool32)-getPhysicalDeviceWin32PresentationSupportKHR deviceCmds = mkVkGetPhysicalDeviceWin32PresentationSupportKHR (pVkGetPhysicalDeviceWin32PresentationSupportKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceWin32PresentationSupportKHR- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> IO VkBool32) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> IO VkBool32)-#endif-#if defined(VK_USE_PLATFORM_XLIB_KHR)-createXlibSurfaceKHR :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXlibSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-createXlibSurfaceKHR deviceCmds = mkVkCreateXlibSurfaceKHR (pVkCreateXlibSurfaceKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateXlibSurfaceKHR- :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXlibSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXlibSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-getPhysicalDeviceXlibPresentationSupportKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("dpy" ::: Ptr Display) -> ("visualID" ::: VisualID) -> IO VkBool32)-getPhysicalDeviceXlibPresentationSupportKHR deviceCmds = mkVkGetPhysicalDeviceXlibPresentationSupportKHR (pVkGetPhysicalDeviceXlibPresentationSupportKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceXlibPresentationSupportKHR- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("dpy" ::: Ptr Display) -> ("visualID" ::: VisualID) -> IO VkBool32) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("dpy" ::: Ptr Display) -> ("visualID" ::: VisualID) -> IO VkBool32)-#endif-#if defined(VK_USE_PLATFORM_XCB_KHR)-createXcbSurfaceKHR :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXcbSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-createXcbSurfaceKHR deviceCmds = mkVkCreateXcbSurfaceKHR (pVkCreateXcbSurfaceKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateXcbSurfaceKHR- :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXcbSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXcbSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-getPhysicalDeviceXcbPresentationSupportKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr Xcb_connection_t) -> ("visual_id" ::: Xcb_visualid_t) -> IO VkBool32)-getPhysicalDeviceXcbPresentationSupportKHR deviceCmds = mkVkGetPhysicalDeviceXcbPresentationSupportKHR (pVkGetPhysicalDeviceXcbPresentationSupportKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceXcbPresentationSupportKHR- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr Xcb_connection_t) -> ("visual_id" ::: Xcb_visualid_t) -> IO VkBool32) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr Xcb_connection_t) -> ("visual_id" ::: Xcb_visualid_t) -> IO VkBool32)-#endif-createDebugReportCallbackEXT :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugReportCallbackCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCallback" ::: Ptr VkDebugReportCallbackEXT) -> IO VkResult)-createDebugReportCallbackEXT deviceCmds = mkVkCreateDebugReportCallbackEXT (pVkCreateDebugReportCallbackEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateDebugReportCallbackEXT- :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugReportCallbackCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCallback" ::: Ptr VkDebugReportCallbackEXT) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugReportCallbackCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCallback" ::: Ptr VkDebugReportCallbackEXT) -> IO VkResult)-destroyDebugReportCallbackEXT :: InstanceCmds -> (("instance" ::: VkInstance) -> ("callback" ::: VkDebugReportCallbackEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyDebugReportCallbackEXT deviceCmds = mkVkDestroyDebugReportCallbackEXT (pVkDestroyDebugReportCallbackEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyDebugReportCallbackEXT- :: FunPtr (("instance" ::: VkInstance) -> ("callback" ::: VkDebugReportCallbackEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("instance" ::: VkInstance) -> ("callback" ::: VkDebugReportCallbackEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-debugReportMessageEXT :: InstanceCmds -> (("instance" ::: VkInstance) -> ("flags" ::: VkDebugReportFlagsEXT) -> ("objectType" ::: VkDebugReportObjectTypeEXT) -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> IO ())-debugReportMessageEXT deviceCmds = mkVkDebugReportMessageEXT (pVkDebugReportMessageEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDebugReportMessageEXT- :: FunPtr (("instance" ::: VkInstance) -> ("flags" ::: VkDebugReportFlagsEXT) -> ("objectType" ::: VkDebugReportObjectTypeEXT) -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> IO ()) -> (("instance" ::: VkInstance) -> ("flags" ::: VkDebugReportFlagsEXT) -> ("objectType" ::: VkDebugReportObjectTypeEXT) -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> IO ())-getPhysicalDeviceExternalImageFormatPropertiesNV :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("externalHandleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pExternalImageFormatProperties" ::: Ptr VkExternalImageFormatPropertiesNV) -> IO VkResult)-getPhysicalDeviceExternalImageFormatPropertiesNV deviceCmds = mkVkGetPhysicalDeviceExternalImageFormatPropertiesNV (pVkGetPhysicalDeviceExternalImageFormatPropertiesNV deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceExternalImageFormatPropertiesNV- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("externalHandleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pExternalImageFormatProperties" ::: Ptr VkExternalImageFormatPropertiesNV) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("externalHandleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pExternalImageFormatProperties" ::: Ptr VkExternalImageFormatPropertiesNV) -> IO VkResult)-getPhysicalDeviceGeneratedCommandsPropertiesNVX :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkDeviceGeneratedCommandsFeaturesNVX) -> ("pLimits" ::: Ptr VkDeviceGeneratedCommandsLimitsNVX) -> IO ())-getPhysicalDeviceGeneratedCommandsPropertiesNVX deviceCmds = mkVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX (pVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkDeviceGeneratedCommandsFeaturesNVX) -> ("pLimits" ::: Ptr VkDeviceGeneratedCommandsLimitsNVX) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkDeviceGeneratedCommandsFeaturesNVX) -> ("pLimits" ::: Ptr VkDeviceGeneratedCommandsLimitsNVX) -> IO ())-getPhysicalDeviceFeatures2 :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures2) -> IO ())-getPhysicalDeviceFeatures2 deviceCmds = mkVkGetPhysicalDeviceFeatures2 (pVkGetPhysicalDeviceFeatures2 deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceFeatures2- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures2) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures2) -> IO ())-getPhysicalDeviceProperties2 :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties2) -> IO ())-getPhysicalDeviceProperties2 deviceCmds = mkVkGetPhysicalDeviceProperties2 (pVkGetPhysicalDeviceProperties2 deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceProperties2- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties2) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties2) -> IO ())-getPhysicalDeviceFormatProperties2 :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties2) -> IO ())-getPhysicalDeviceFormatProperties2 deviceCmds = mkVkGetPhysicalDeviceFormatProperties2 (pVkGetPhysicalDeviceFormatProperties2 deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceFormatProperties2- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties2) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties2) -> IO ())-getPhysicalDeviceImageFormatProperties2 :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pImageFormatInfo" ::: Ptr VkPhysicalDeviceImageFormatInfo2) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties2) -> IO VkResult)-getPhysicalDeviceImageFormatProperties2 deviceCmds = mkVkGetPhysicalDeviceImageFormatProperties2 (pVkGetPhysicalDeviceImageFormatProperties2 deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceImageFormatProperties2- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pImageFormatInfo" ::: Ptr VkPhysicalDeviceImageFormatInfo2) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties2) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pImageFormatInfo" ::: Ptr VkPhysicalDeviceImageFormatInfo2) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties2) -> IO VkResult)-getPhysicalDeviceQueueFamilyProperties2 :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties2) -> IO ())-getPhysicalDeviceQueueFamilyProperties2 deviceCmds = mkVkGetPhysicalDeviceQueueFamilyProperties2 (pVkGetPhysicalDeviceQueueFamilyProperties2 deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceQueueFamilyProperties2- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties2) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties2) -> IO ())-getPhysicalDeviceMemoryProperties2 :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties2) -> IO ())-getPhysicalDeviceMemoryProperties2 deviceCmds = mkVkGetPhysicalDeviceMemoryProperties2 (pVkGetPhysicalDeviceMemoryProperties2 deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceMemoryProperties2- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties2) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties2) -> IO ())-getPhysicalDeviceSparseImageFormatProperties2 :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pFormatInfo" ::: Ptr VkPhysicalDeviceSparseImageFormatInfo2) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties2) -> IO ())-getPhysicalDeviceSparseImageFormatProperties2 deviceCmds = mkVkGetPhysicalDeviceSparseImageFormatProperties2 (pVkGetPhysicalDeviceSparseImageFormatProperties2 deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceSparseImageFormatProperties2- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pFormatInfo" ::: Ptr VkPhysicalDeviceSparseImageFormatInfo2) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties2) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pFormatInfo" ::: Ptr VkPhysicalDeviceSparseImageFormatInfo2) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties2) -> IO ())-getPhysicalDeviceExternalBufferProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalBufferInfo" ::: Ptr VkPhysicalDeviceExternalBufferInfo) -> ("pExternalBufferProperties" ::: Ptr VkExternalBufferProperties) -> IO ())-getPhysicalDeviceExternalBufferProperties deviceCmds = mkVkGetPhysicalDeviceExternalBufferProperties (pVkGetPhysicalDeviceExternalBufferProperties deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceExternalBufferProperties- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalBufferInfo" ::: Ptr VkPhysicalDeviceExternalBufferInfo) -> ("pExternalBufferProperties" ::: Ptr VkExternalBufferProperties) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalBufferInfo" ::: Ptr VkPhysicalDeviceExternalBufferInfo) -> ("pExternalBufferProperties" ::: Ptr VkExternalBufferProperties) -> IO ())-getPhysicalDeviceExternalSemaphoreProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalSemaphoreInfo" ::: Ptr VkPhysicalDeviceExternalSemaphoreInfo) -> ("pExternalSemaphoreProperties" ::: Ptr VkExternalSemaphoreProperties) -> IO ())-getPhysicalDeviceExternalSemaphoreProperties deviceCmds = mkVkGetPhysicalDeviceExternalSemaphoreProperties (pVkGetPhysicalDeviceExternalSemaphoreProperties deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceExternalSemaphoreProperties- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalSemaphoreInfo" ::: Ptr VkPhysicalDeviceExternalSemaphoreInfo) -> ("pExternalSemaphoreProperties" ::: Ptr VkExternalSemaphoreProperties) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalSemaphoreInfo" ::: Ptr VkPhysicalDeviceExternalSemaphoreInfo) -> ("pExternalSemaphoreProperties" ::: Ptr VkExternalSemaphoreProperties) -> IO ())-getPhysicalDeviceExternalFenceProperties :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalFenceInfo" ::: Ptr VkPhysicalDeviceExternalFenceInfo) -> ("pExternalFenceProperties" ::: Ptr VkExternalFenceProperties) -> IO ())-getPhysicalDeviceExternalFenceProperties deviceCmds = mkVkGetPhysicalDeviceExternalFenceProperties (pVkGetPhysicalDeviceExternalFenceProperties deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceExternalFenceProperties- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalFenceInfo" ::: Ptr VkPhysicalDeviceExternalFenceInfo) -> ("pExternalFenceProperties" ::: Ptr VkExternalFenceProperties) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalFenceInfo" ::: Ptr VkPhysicalDeviceExternalFenceInfo) -> ("pExternalFenceProperties" ::: Ptr VkExternalFenceProperties) -> IO ())-releaseDisplayEXT :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> IO VkResult)-releaseDisplayEXT deviceCmds = mkVkReleaseDisplayEXT (pVkReleaseDisplayEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkReleaseDisplayEXT- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> IO VkResult)-#if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)-acquireXlibDisplayEXT :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("display" ::: VkDisplayKHR) -> IO VkResult)-acquireXlibDisplayEXT deviceCmds = mkVkAcquireXlibDisplayEXT (pVkAcquireXlibDisplayEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkAcquireXlibDisplayEXT- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("display" ::: VkDisplayKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("display" ::: VkDisplayKHR) -> IO VkResult)-getRandROutputDisplayEXT :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("rrOutput" ::: RROutput) -> ("pDisplay" ::: Ptr VkDisplayKHR) -> IO VkResult)-getRandROutputDisplayEXT deviceCmds = mkVkGetRandROutputDisplayEXT (pVkGetRandROutputDisplayEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetRandROutputDisplayEXT- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("rrOutput" ::: RROutput) -> ("pDisplay" ::: Ptr VkDisplayKHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("rrOutput" ::: RROutput) -> ("pDisplay" ::: Ptr VkDisplayKHR) -> IO VkResult)-#endif-getPhysicalDeviceSurfaceCapabilities2EXT :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2EXT) -> IO VkResult)-getPhysicalDeviceSurfaceCapabilities2EXT deviceCmds = mkVkGetPhysicalDeviceSurfaceCapabilities2EXT (pVkGetPhysicalDeviceSurfaceCapabilities2EXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceSurfaceCapabilities2EXT- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2EXT) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2EXT) -> IO VkResult)-enumeratePhysicalDeviceGroups :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pPhysicalDeviceGroupCount" ::: Ptr Word32) -> ("pPhysicalDeviceGroupProperties" ::: Ptr VkPhysicalDeviceGroupProperties) -> IO VkResult)-enumeratePhysicalDeviceGroups deviceCmds = mkVkEnumeratePhysicalDeviceGroups (pVkEnumeratePhysicalDeviceGroups deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkEnumeratePhysicalDeviceGroups- :: FunPtr (("instance" ::: VkInstance) -> ("pPhysicalDeviceGroupCount" ::: Ptr Word32) -> ("pPhysicalDeviceGroupProperties" ::: Ptr VkPhysicalDeviceGroupProperties) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pPhysicalDeviceGroupCount" ::: Ptr Word32) -> ("pPhysicalDeviceGroupProperties" ::: Ptr VkPhysicalDeviceGroupProperties) -> IO VkResult)-getPhysicalDevicePresentRectanglesKHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pRectCount" ::: Ptr Word32) -> ("pRects" ::: Ptr VkRect2D) -> IO VkResult)-getPhysicalDevicePresentRectanglesKHR deviceCmds = mkVkGetPhysicalDevicePresentRectanglesKHR (pVkGetPhysicalDevicePresentRectanglesKHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDevicePresentRectanglesKHR- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pRectCount" ::: Ptr Word32) -> ("pRects" ::: Ptr VkRect2D) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pRectCount" ::: Ptr Word32) -> ("pRects" ::: Ptr VkRect2D) -> IO VkResult)-#if defined(VK_USE_PLATFORM_IOS_MVK)-createIOSSurfaceMVK :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkIOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-createIOSSurfaceMVK deviceCmds = mkVkCreateIOSSurfaceMVK (pVkCreateIOSSurfaceMVK deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateIOSSurfaceMVK- :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkIOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkIOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-#endif-#if defined(VK_USE_PLATFORM_MACOS_MVK)-createMacOSSurfaceMVK :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMacOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-createMacOSSurfaceMVK deviceCmds = mkVkCreateMacOSSurfaceMVK (pVkCreateMacOSSurfaceMVK deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateMacOSSurfaceMVK- :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMacOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMacOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult)-#endif-getPhysicalDeviceMultisamplePropertiesEXT :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("samples" ::: VkSampleCountFlagBits) -> ("pMultisampleProperties" ::: Ptr VkMultisamplePropertiesEXT) -> IO ())-getPhysicalDeviceMultisamplePropertiesEXT deviceCmds = mkVkGetPhysicalDeviceMultisamplePropertiesEXT (pVkGetPhysicalDeviceMultisamplePropertiesEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceMultisamplePropertiesEXT- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("samples" ::: VkSampleCountFlagBits) -> ("pMultisampleProperties" ::: Ptr VkMultisamplePropertiesEXT) -> IO ()) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("samples" ::: VkSampleCountFlagBits) -> ("pMultisampleProperties" ::: Ptr VkMultisamplePropertiesEXT) -> IO ())-getPhysicalDeviceSurfaceCapabilities2KHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2KHR) -> IO VkResult)-getPhysicalDeviceSurfaceCapabilities2KHR deviceCmds = mkVkGetPhysicalDeviceSurfaceCapabilities2KHR (pVkGetPhysicalDeviceSurfaceCapabilities2KHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceSurfaceCapabilities2KHR- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2KHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2KHR) -> IO VkResult)-getPhysicalDeviceSurfaceFormats2KHR :: InstanceCmds -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormat2KHR) -> IO VkResult)-getPhysicalDeviceSurfaceFormats2KHR deviceCmds = mkVkGetPhysicalDeviceSurfaceFormats2KHR (pVkGetPhysicalDeviceSurfaceFormats2KHR deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkGetPhysicalDeviceSurfaceFormats2KHR- :: FunPtr (("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormat2KHR) -> IO VkResult) -> (("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormat2KHR) -> IO VkResult)-createDebugUtilsMessengerEXT :: InstanceCmds -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugUtilsMessengerCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMessenger" ::: Ptr VkDebugUtilsMessengerEXT) -> IO VkResult)-createDebugUtilsMessengerEXT deviceCmds = mkVkCreateDebugUtilsMessengerEXT (pVkCreateDebugUtilsMessengerEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkCreateDebugUtilsMessengerEXT- :: FunPtr (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugUtilsMessengerCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMessenger" ::: Ptr VkDebugUtilsMessengerEXT) -> IO VkResult) -> (("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugUtilsMessengerCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMessenger" ::: Ptr VkDebugUtilsMessengerEXT) -> IO VkResult)-destroyDebugUtilsMessengerEXT :: InstanceCmds -> (("instance" ::: VkInstance) -> ("messenger" ::: VkDebugUtilsMessengerEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-destroyDebugUtilsMessengerEXT deviceCmds = mkVkDestroyDebugUtilsMessengerEXT (pVkDestroyDebugUtilsMessengerEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkDestroyDebugUtilsMessengerEXT- :: FunPtr (("instance" ::: VkInstance) -> ("messenger" ::: VkDebugUtilsMessengerEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()) -> (("instance" ::: VkInstance) -> ("messenger" ::: VkDebugUtilsMessengerEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ())-submitDebugUtilsMessageEXT :: InstanceCmds -> (("instance" ::: VkInstance) -> ("messageSeverity" ::: VkDebugUtilsMessageSeverityFlagBitsEXT) -> ("messageTypes" ::: VkDebugUtilsMessageTypeFlagsEXT) -> ("pCallbackData" ::: Ptr VkDebugUtilsMessengerCallbackDataEXT) -> IO ())-submitDebugUtilsMessageEXT deviceCmds = mkVkSubmitDebugUtilsMessageEXT (pVkSubmitDebugUtilsMessageEXT deviceCmds)-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "dynamic" mkVkSubmitDebugUtilsMessageEXT- :: FunPtr (("instance" ::: VkInstance) -> ("messageSeverity" ::: VkDebugUtilsMessageSeverityFlagBitsEXT) -> ("messageTypes" ::: VkDebugUtilsMessageTypeFlagsEXT) -> ("pCallbackData" ::: Ptr VkDebugUtilsMessengerCallbackDataEXT) -> IO ()) -> (("instance" ::: VkInstance) -> ("messageSeverity" ::: VkDebugUtilsMessageSeverityFlagBitsEXT) -> ("messageTypes" ::: VkDebugUtilsMessageTypeFlagsEXT) -> ("pCallbackData" ::: Ptr VkDebugUtilsMessengerCallbackDataEXT) -> IO ())+{-# language CPP #-}+module Graphics.Vulkan.Dynamic ( InstanceCmds(..)+ , getInstanceProcAddr'+ , initInstanceCmds+ , DeviceCmds(..)+ , initDeviceCmds+ ) where++import Foreign.Ptr (castFunPtr)+import GHC.Ptr (nullFunPtr)+import Foreign.Ptr (nullPtr)+import Foreign.C.Types (CChar)+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CInt)+import Foreign.C.Types (CSize)+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Ptr (Ptr(Ptr))+import Data.Word (Word16)+import Data.Word (Word32)+import Data.Word (Word64)+import qualified Data.Vector.Storable.Sized (Vector)+import Graphics.Vulkan.NamedType ((:::))+import {-# SOURCE #-} Graphics.Vulkan.Extensions.WSITypes (AHardwareBuffer)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (AccelerationStructureMemoryRequirementsInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (AccelerationStructureNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (AcquireNextImageInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (AcquireProfilingLockInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (AndroidHardwareBufferPropertiesANDROID)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_android_surface (AndroidSurfaceCreateInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (BindAccelerationStructureMemoryInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindBufferMemoryInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindImageMemoryInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SparseResourceMemoryManagement (BindSparseInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.BaseType (Bool32)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Buffer)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (BufferCopy)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Buffer (BufferCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (BufferDeviceAddressInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (BufferImageCopy)+import {-# SOURCE #-} Graphics.Vulkan.Core10.OtherTypes (BufferMemoryBarrier)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (BufferMemoryRequirementsInfo2)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (BufferView)+import {-# SOURCE #-} Graphics.Vulkan.Core10.BufferView (BufferViewCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_calibrated_timestamps (CalibratedTimestampInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints (CheckpointDataNV)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (ClearAttachment)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SharedTypes (ClearColorValue)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SharedTypes (ClearDepthStencilValue)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (ClearRect)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (CmdProcessCommandsInfoNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (CmdReserveSpaceForCommandsInfoNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (CoarseSampleOrderCustomNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (CoarseSampleOrderTypeNV)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBuffer (CommandBufferAllocateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBuffer (CommandBufferBeginInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.CommandBufferResetFlagBits (CommandBufferResetFlags)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (CommandPool)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandPool (CommandPoolCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.CommandPoolResetFlagBits (CommandPoolResetFlags)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Enums.CommandPoolTrimFlags (CommandPoolTrimFlags)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (ComputePipelineCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering (ConditionalRenderingBeginInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix (CooperativeMatrixPropertiesNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (CopyAccelerationStructureModeNV)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (CopyDescriptorSet)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerMarkerInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerObjectNameInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_marker (DebugMarkerObjectTagInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_report (DebugReportCallbackCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (DebugReportCallbackEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_report (DebugReportFlagsEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsLabelEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsMessageSeverityFlagBitsEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsMessageTypeFlagsEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsMessengerCallbackDataEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsMessengerCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (DebugUtilsMessengerEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectNameInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectTagInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlags)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (DescriptorPool)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (DescriptorPoolCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.DescriptorPoolResetFlags (DescriptorPoolResetFlags)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (DescriptorSet)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (DescriptorSetAllocateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (DescriptorSetLayout)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (DescriptorSetLayoutCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3 (DescriptorSetLayoutSupport)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Handles (DescriptorUpdateTemplate)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template (DescriptorUpdateTemplateCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.BaseType (DeviceAddress)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Device (DeviceCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_display_control (DeviceEventInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (DeviceGeneratedCommandsFeaturesNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (DeviceGeneratedCommandsLimitsNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentCapabilitiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentModeFlagsKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (DeviceMemory)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (DeviceMemoryOpaqueCaptureAddressInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (DeviceQueueInfo2)+import {-# SOURCE #-} Graphics.Vulkan.Core10.BaseType (DeviceSize)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Device_T)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.WSITypes (Display)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_display_control (DisplayEventInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (DisplayKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_display (DisplayModeCreateInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (DisplayModeKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayModeProperties2KHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_display (DisplayModePropertiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayPlaneCapabilities2KHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_display (DisplayPlaneCapabilitiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayPlaneInfo2KHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayPlaneProperties2KHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_display (DisplayPlanePropertiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_display_control (DisplayPowerInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2 (DisplayProperties2KHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_display (DisplayPropertiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_display (DisplaySurfaceCreateInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Event)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Event (EventCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.ExtensionDiscovery (ExtensionProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SharedTypes (Extent2D)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (ExternalBufferProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities (ExternalFenceProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities (ExternalImageFormatPropertiesNV)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities (ExternalMemoryHandleTypeFlagsNV)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities (ExternalSemaphoreProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Fence)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Fence (FenceCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd (FenceGetFdInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32 (FenceGetWin32HandleInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.Filter (Filter)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.Format (Format)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (FormatProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (FormatProperties2)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Framebuffer)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pass (FramebufferCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode (FramebufferMixedSamplesCombinationNV)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pipeline (GraphicsPipelineCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.WSITypes (HANDLE)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata (HdrMetadataEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_headless_surface (HeadlessSurfaceCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_MVK_ios_surface (IOSSurfaceCreateInfoMVK)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Image)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (ImageBlit)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (ImageCopy)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Image (ImageCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier (ImageDrmFormatModifierPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (ImageFormatProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (ImageFormatProperties2)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout)+import {-# SOURCE #-} Graphics.Vulkan.Core10.OtherTypes (ImageMemoryBarrier)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (ImageMemoryRequirementsInfo2)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface (ImagePipeSurfaceCreateInfoFUCHSIA)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (ImageResolve)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (ImageSparseMemoryRequirementsInfo2)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Image (ImageSubresource)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SharedTypes (ImageSubresourceRange)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.ImageTiling (ImageTiling)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.ImageType (ImageType)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (ImageView)+import {-# SOURCE #-} Graphics.Vulkan.Core10.ImageView (ImageViewCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_image_view_handle (ImageViewHandleInfoNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd (ImportFenceFdInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32 (ImportFenceWin32HandleInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd (ImportSemaphoreFdInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32 (ImportSemaphoreWin32HandleInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.IndexType (IndexType)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (IndirectCommandsLayoutCreateInfoNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (IndirectCommandsLayoutNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (InitializePerformanceApiInfoINTEL)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Instance_T)+import {-# SOURCE #-} Graphics.Vulkan.Core10.LayerDiscovery (LayerProperties)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_MVK_macos_surface (MacOSSurfaceCreateInfoMVK)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Memory (MappedMemoryRange)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Memory (MemoryAllocateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.OtherTypes (MemoryBarrier)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd (MemoryFdPropertiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer (MemoryGetAndroidHardwareBufferInfoANDROID)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd (MemoryGetFdInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryGetWin32HandleInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_external_memory_host (MemoryHostPointerPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.MemoryMapFlags (MemoryMapFlags)+import {-# SOURCE #-} Graphics.Vulkan.Core10.MemoryManagement (MemoryRequirements)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2KHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32 (MemoryWin32HandlePropertiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_metal_surface (MetalSurfaceCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_sample_locations (MultisamplePropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (ObjectEntryTypeNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (ObjectTableCreateInfoNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands (ObjectTableEntryNVX)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (ObjectTableNVX)+import {-# SOURCE #-} Graphics.Vulkan.Core10.FuncPointers (PFN_vkVoidFunction)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing (PastPresentationTimingGOOGLE)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (PerformanceConfigurationAcquireInfoINTEL)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (PerformanceConfigurationINTEL)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (PerformanceCounterDescriptionKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (PerformanceCounterKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (PerformanceMarkerInfoINTEL)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (PerformanceOverrideInfoINTEL)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (PerformanceParameterTypeINTEL)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (PerformanceStreamMarkerInfoINTEL)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_INTEL_performance_query (PerformanceValueINTEL)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceExternalBufferInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities (PhysicalDeviceExternalFenceInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities (PhysicalDeviceExternalSemaphoreInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (PhysicalDeviceFeatures)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceFeatures2)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation (PhysicalDeviceGroupProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceImageFormatInfo2)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (PhysicalDeviceMemoryProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceMemoryProperties2)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (PhysicalDeviceProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceProperties2)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceSparseImageFormatInfo2)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (PhysicalDeviceSurfaceInfo2KHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_tooling_info (PhysicalDeviceToolPropertiesEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Pipeline)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (PipelineCache)+import {-# SOURCE #-} Graphics.Vulkan.Core10.PipelineCache (PipelineCacheCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutableInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutableInternalRepresentationKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutablePropertiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineExecutableStatisticKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PipelineInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (PipelineLayout)+import {-# SOURCE #-} Graphics.Vulkan.Core10.PipelineLayout (PipelineLayoutCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (PresentInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image (PresentModeKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlags)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (QueryPool)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Query (QueryPoolCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_performance_query (QueryPoolPerformanceCreateInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.QueryResultFlagBits (QueryResultFlags)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.QueryType (QueryType)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DeviceInitialization (QueueFamilyProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (QueueFamilyProperties2)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Queue_T)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.WSITypes (RROutput)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_ray_tracing (RayTracingPipelineCreateInfoNV)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (Rect2D)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing (RefreshCycleDurationGOOGLE)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (RenderPass)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (RenderPassBeginInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Pass (RenderPassCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (RenderPassCreateInfo2)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.Result (Result)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_sample_locations (SampleLocationsInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Sampler)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Sampler (SamplerCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Handles (SamplerYcbcrConversion)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (Semaphore)+import {-# SOURCE #-} Graphics.Vulkan.Core10.QueueSemaphore (SemaphoreCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd (SemaphoreGetFdInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32 (SemaphoreGetWin32HandleInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreSignalInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreWaitInfo)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_shader_info (ShaderInfoTypeAMD)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Handles (ShaderModule)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Shader (ShaderModuleCreateInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_shading_rate_image (ShadingRatePaletteNV)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SparseResourceMemoryManagement (SparseImageFormatProperties)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (SparseImageFormatProperties2)+import {-# SOURCE #-} Graphics.Vulkan.Core10.SparseResourceMemoryManagement (SparseImageMemoryRequirements)+import {-# SOURCE #-} Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (SparseImageMemoryRequirements2)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.StencilFaceFlagBits (StencilFaceFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_GGP_stream_descriptor_surface (StreamDescriptorSurfaceCreateInfoGGP)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Queue (SubmitInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassBeginInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Enums.SubpassContents (SubpassContents)+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassEndInfo)+import {-# SOURCE #-} Graphics.Vulkan.Core10.Image (SubresourceLayout)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter (SurfaceCapabilities2EXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (SurfaceCapabilities2KHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_surface (SurfaceCapabilitiesKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter (SurfaceCounterFlagBitsEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (SurfaceFormat2KHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_surface (SurfaceFormatKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (SurfaceKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (SwapchainKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_calibrated_timestamps (TimeDomainEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_validation_cache (ValidationCacheCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.Handles (ValidationCacheEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NN_vi_surface (ViSurfaceCreateInfoNN)+import {-# SOURCE #-} Graphics.Vulkan.Core10.CommandBufferBuilding (Viewport)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling (ViewportWScalingNV)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.WSITypes (VisualID)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_wayland_surface (WaylandSurfaceCreateInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_win32_surface (Win32SurfaceCreateInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.WSITypes (Wl_display)+import {-# SOURCE #-} Graphics.Vulkan.Core10.DescriptorSet (WriteDescriptorSet)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_xcb_surface (XcbSurfaceCreateInfoKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.WSITypes (Xcb_connection_t)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.WSITypes (Xcb_visualid_t)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_xlib_surface (XlibSurfaceCreateInfoKHR)+import Graphics.Vulkan.Zero (Zero(..))+data InstanceCmds = InstanceCmds+ { instanceCmdsHandle :: Ptr Instance_T+ , pVkDestroyInstance :: FunPtr (Ptr Instance_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkEnumeratePhysicalDevices :: FunPtr (Ptr Instance_T -> ("pPhysicalDeviceCount" ::: Ptr Word32) -> ("pPhysicalDevices" ::: Ptr (Ptr PhysicalDevice_T)) -> IO Result)+ , pVkGetInstanceProcAddr :: FunPtr (Ptr Instance_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction)+ , pVkGetPhysicalDeviceProperties :: FunPtr (Ptr PhysicalDevice_T -> ("pProperties" ::: Ptr PhysicalDeviceProperties) -> IO ())+ , pVkGetPhysicalDeviceQueueFamilyProperties :: FunPtr (Ptr PhysicalDevice_T -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr QueueFamilyProperties) -> IO ())+ , pVkGetPhysicalDeviceMemoryProperties :: FunPtr (Ptr PhysicalDevice_T -> ("pMemoryProperties" ::: Ptr PhysicalDeviceMemoryProperties) -> IO ())+ , pVkGetPhysicalDeviceFeatures :: FunPtr (Ptr PhysicalDevice_T -> ("pFeatures" ::: Ptr PhysicalDeviceFeatures) -> IO ())+ , pVkGetPhysicalDeviceFormatProperties :: FunPtr (Ptr PhysicalDevice_T -> Format -> ("pFormatProperties" ::: Ptr FormatProperties) -> IO ())+ , pVkGetPhysicalDeviceImageFormatProperties :: FunPtr (Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> ("pImageFormatProperties" ::: Ptr ImageFormatProperties) -> IO Result)+ , pVkCreateDevice :: forall a . FunPtr (Ptr PhysicalDevice_T -> ("pCreateInfo" ::: Ptr (DeviceCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pDevice" ::: Ptr (Ptr Device_T)) -> IO Result)+ , pVkEnumerateDeviceLayerProperties :: FunPtr (Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr LayerProperties) -> IO Result)+ , pVkEnumerateDeviceExtensionProperties :: FunPtr (Ptr PhysicalDevice_T -> ("pLayerName" ::: Ptr CChar) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr ExtensionProperties) -> IO Result)+ , pVkGetPhysicalDeviceSparseImageFormatProperties :: FunPtr (Ptr PhysicalDevice_T -> Format -> ImageType -> ("samples" ::: SampleCountFlagBits) -> ImageUsageFlags -> ImageTiling -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr SparseImageFormatProperties) -> IO ())+ , pVkCreateAndroidSurfaceKHR :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr AndroidSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)+ , pVkGetPhysicalDeviceDisplayPropertiesKHR :: FunPtr (Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayPropertiesKHR) -> IO Result)+ , pVkGetPhysicalDeviceDisplayPlanePropertiesKHR :: FunPtr (Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayPlanePropertiesKHR) -> IO Result)+ , pVkGetDisplayPlaneSupportedDisplaysKHR :: FunPtr (Ptr PhysicalDevice_T -> ("planeIndex" ::: Word32) -> ("pDisplayCount" ::: Ptr Word32) -> ("pDisplays" ::: Ptr DisplayKHR) -> IO Result)+ , pVkGetDisplayModePropertiesKHR :: FunPtr (Ptr PhysicalDevice_T -> DisplayKHR -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayModePropertiesKHR) -> IO Result)+ , pVkCreateDisplayModeKHR :: FunPtr (Ptr PhysicalDevice_T -> DisplayKHR -> ("pCreateInfo" ::: Ptr DisplayModeCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pMode" ::: Ptr DisplayModeKHR) -> IO Result)+ , pVkGetDisplayPlaneCapabilitiesKHR :: FunPtr (Ptr PhysicalDevice_T -> DisplayModeKHR -> ("planeIndex" ::: Word32) -> ("pCapabilities" ::: Ptr DisplayPlaneCapabilitiesKHR) -> IO Result)+ , pVkCreateDisplayPlaneSurfaceKHR :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr DisplaySurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)+ , pVkDestroySurfaceKHR :: FunPtr (Ptr Instance_T -> SurfaceKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkGetPhysicalDeviceSurfaceSupportKHR :: FunPtr (Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> SurfaceKHR -> ("pSupported" ::: Ptr Bool32) -> IO Result)+ , pVkGetPhysicalDeviceSurfaceCapabilitiesKHR :: FunPtr (Ptr PhysicalDevice_T -> SurfaceKHR -> ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilitiesKHR) -> IO Result)+ , pVkGetPhysicalDeviceSurfaceFormatsKHR :: FunPtr (Ptr PhysicalDevice_T -> SurfaceKHR -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr SurfaceFormatKHR) -> IO Result)+ , pVkGetPhysicalDeviceSurfacePresentModesKHR :: FunPtr (Ptr PhysicalDevice_T -> SurfaceKHR -> ("pPresentModeCount" ::: Ptr Word32) -> ("pPresentModes" ::: Ptr PresentModeKHR) -> IO Result)+ , pVkCreateViSurfaceNN :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr ViSurfaceCreateInfoNN) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)+ , pVkCreateWaylandSurfaceKHR :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr WaylandSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)+ , pVkGetPhysicalDeviceWaylandPresentationSupportKHR :: FunPtr (Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> Ptr Wl_display -> IO Bool32)+ , pVkCreateWin32SurfaceKHR :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr Win32SurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)+ , pVkGetPhysicalDeviceWin32PresentationSupportKHR :: FunPtr (Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> IO Bool32)+ , pVkCreateXlibSurfaceKHR :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr XlibSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)+ , pVkGetPhysicalDeviceXlibPresentationSupportKHR :: FunPtr (Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> ("dpy" ::: Ptr Display) -> VisualID -> IO Bool32)+ , pVkCreateXcbSurfaceKHR :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr XcbSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)+ , pVkGetPhysicalDeviceXcbPresentationSupportKHR :: FunPtr (Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> Ptr Xcb_connection_t -> ("visual_id" ::: Xcb_visualid_t) -> IO Bool32)+ , pVkCreateImagePipeSurfaceFUCHSIA :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr ImagePipeSurfaceCreateInfoFUCHSIA) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)+ , pVkCreateStreamDescriptorSurfaceGGP :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr StreamDescriptorSurfaceCreateInfoGGP) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)+ , pVkCreateDebugReportCallbackEXT :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr DebugReportCallbackCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pCallback" ::: Ptr DebugReportCallbackEXT) -> IO Result)+ , pVkDestroyDebugReportCallbackEXT :: FunPtr (Ptr Instance_T -> DebugReportCallbackEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkDebugReportMessageEXT :: FunPtr (Ptr Instance_T -> DebugReportFlagsEXT -> DebugReportObjectTypeEXT -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> IO ())+ , pVkGetPhysicalDeviceExternalImageFormatPropertiesNV :: FunPtr (Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> ("pExternalImageFormatProperties" ::: Ptr ExternalImageFormatPropertiesNV) -> IO Result)+ , pVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX :: FunPtr (Ptr PhysicalDevice_T -> ("pFeatures" ::: Ptr DeviceGeneratedCommandsFeaturesNVX) -> ("pLimits" ::: Ptr DeviceGeneratedCommandsLimitsNVX) -> IO ())+ , pVkGetPhysicalDeviceFeatures2 :: forall a . FunPtr (Ptr PhysicalDevice_T -> ("pFeatures" ::: Ptr (PhysicalDeviceFeatures2 a)) -> IO ())+ , pVkGetPhysicalDeviceProperties2 :: forall a . FunPtr (Ptr PhysicalDevice_T -> ("pProperties" ::: Ptr (PhysicalDeviceProperties2 a)) -> IO ())+ , pVkGetPhysicalDeviceFormatProperties2 :: forall a . FunPtr (Ptr PhysicalDevice_T -> Format -> ("pFormatProperties" ::: Ptr (FormatProperties2 a)) -> IO ())+ , pVkGetPhysicalDeviceImageFormatProperties2 :: forall a b . FunPtr (Ptr PhysicalDevice_T -> ("pImageFormatInfo" ::: Ptr (PhysicalDeviceImageFormatInfo2 a)) -> ("pImageFormatProperties" ::: Ptr (ImageFormatProperties2 b)) -> IO Result)+ , pVkGetPhysicalDeviceQueueFamilyProperties2 :: forall a . FunPtr (Ptr PhysicalDevice_T -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr (QueueFamilyProperties2 a)) -> IO ())+ , pVkGetPhysicalDeviceMemoryProperties2 :: forall a . FunPtr (Ptr PhysicalDevice_T -> ("pMemoryProperties" ::: Ptr (PhysicalDeviceMemoryProperties2 a)) -> IO ())+ , pVkGetPhysicalDeviceSparseImageFormatProperties2 :: FunPtr (Ptr PhysicalDevice_T -> ("pFormatInfo" ::: Ptr PhysicalDeviceSparseImageFormatInfo2) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr SparseImageFormatProperties2) -> IO ())+ , pVkGetPhysicalDeviceExternalBufferProperties :: FunPtr (Ptr PhysicalDevice_T -> ("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo) -> ("pExternalBufferProperties" ::: Ptr ExternalBufferProperties) -> IO ())+ , pVkGetPhysicalDeviceExternalSemaphoreProperties :: forall a . FunPtr (Ptr PhysicalDevice_T -> ("pExternalSemaphoreInfo" ::: Ptr (PhysicalDeviceExternalSemaphoreInfo a)) -> ("pExternalSemaphoreProperties" ::: Ptr ExternalSemaphoreProperties) -> IO ())+ , pVkGetPhysicalDeviceExternalFenceProperties :: FunPtr (Ptr PhysicalDevice_T -> ("pExternalFenceInfo" ::: Ptr PhysicalDeviceExternalFenceInfo) -> ("pExternalFenceProperties" ::: Ptr ExternalFenceProperties) -> IO ())+ , pVkReleaseDisplayEXT :: FunPtr (Ptr PhysicalDevice_T -> DisplayKHR -> IO Result)+ , pVkAcquireXlibDisplayEXT :: FunPtr (Ptr PhysicalDevice_T -> ("dpy" ::: Ptr Display) -> DisplayKHR -> IO Result)+ , pVkGetRandROutputDisplayEXT :: FunPtr (Ptr PhysicalDevice_T -> ("dpy" ::: Ptr Display) -> RROutput -> ("pDisplay" ::: Ptr DisplayKHR) -> IO Result)+ , pVkGetPhysicalDeviceSurfaceCapabilities2EXT :: FunPtr (Ptr PhysicalDevice_T -> SurfaceKHR -> ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT) -> IO Result)+ , pVkEnumeratePhysicalDeviceGroups :: FunPtr (Ptr Instance_T -> ("pPhysicalDeviceGroupCount" ::: Ptr Word32) -> ("pPhysicalDeviceGroupProperties" ::: Ptr PhysicalDeviceGroupProperties) -> IO Result)+ , pVkGetPhysicalDevicePresentRectanglesKHR :: FunPtr (Ptr PhysicalDevice_T -> SurfaceKHR -> ("pRectCount" ::: Ptr Word32) -> ("pRects" ::: Ptr Rect2D) -> IO Result)+ , pVkCreateIOSSurfaceMVK :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr IOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)+ , pVkCreateMacOSSurfaceMVK :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr MacOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)+ , pVkCreateMetalSurfaceEXT :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr MetalSurfaceCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)+ , pVkGetPhysicalDeviceMultisamplePropertiesEXT :: FunPtr (Ptr PhysicalDevice_T -> ("samples" ::: SampleCountFlagBits) -> ("pMultisampleProperties" ::: Ptr MultisamplePropertiesEXT) -> IO ())+ , pVkGetPhysicalDeviceSurfaceCapabilities2KHR :: forall a b . FunPtr (Ptr PhysicalDevice_T -> ("pSurfaceInfo" ::: Ptr (PhysicalDeviceSurfaceInfo2KHR a)) -> ("pSurfaceCapabilities" ::: Ptr (SurfaceCapabilities2KHR b)) -> IO Result)+ , pVkGetPhysicalDeviceSurfaceFormats2KHR :: forall a . FunPtr (Ptr PhysicalDevice_T -> ("pSurfaceInfo" ::: Ptr (PhysicalDeviceSurfaceInfo2KHR a)) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr SurfaceFormat2KHR) -> IO Result)+ , pVkGetPhysicalDeviceDisplayProperties2KHR :: FunPtr (Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayProperties2KHR) -> IO Result)+ , pVkGetPhysicalDeviceDisplayPlaneProperties2KHR :: FunPtr (Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayPlaneProperties2KHR) -> IO Result)+ , pVkGetDisplayModeProperties2KHR :: FunPtr (Ptr PhysicalDevice_T -> DisplayKHR -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayModeProperties2KHR) -> IO Result)+ , pVkGetDisplayPlaneCapabilities2KHR :: FunPtr (Ptr PhysicalDevice_T -> ("pDisplayPlaneInfo" ::: Ptr DisplayPlaneInfo2KHR) -> ("pCapabilities" ::: Ptr DisplayPlaneCapabilities2KHR) -> IO Result)+ , pVkGetPhysicalDeviceCalibrateableTimeDomainsEXT :: FunPtr (Ptr PhysicalDevice_T -> ("pTimeDomainCount" ::: Ptr Word32) -> ("pTimeDomains" ::: Ptr TimeDomainEXT) -> IO Result)+ , pVkCreateDebugUtilsMessengerEXT :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr DebugUtilsMessengerCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pMessenger" ::: Ptr DebugUtilsMessengerEXT) -> IO Result)+ , pVkDestroyDebugUtilsMessengerEXT :: FunPtr (Ptr Instance_T -> DebugUtilsMessengerEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkSubmitDebugUtilsMessageEXT :: FunPtr (Ptr Instance_T -> DebugUtilsMessageSeverityFlagBitsEXT -> ("messageTypes" ::: DebugUtilsMessageTypeFlagsEXT) -> ("pCallbackData" ::: Ptr DebugUtilsMessengerCallbackDataEXT) -> IO ())+ , pVkGetPhysicalDeviceCooperativeMatrixPropertiesNV :: FunPtr (Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr CooperativeMatrixPropertiesNV) -> IO Result)+ , pVkGetPhysicalDeviceSurfacePresentModes2EXT :: forall a . FunPtr (Ptr PhysicalDevice_T -> ("pSurfaceInfo" ::: Ptr (PhysicalDeviceSurfaceInfo2KHR a)) -> ("pPresentModeCount" ::: Ptr Word32) -> ("pPresentModes" ::: Ptr PresentModeKHR) -> IO Result)+ , pVkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR :: FunPtr (Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> ("pCounterCount" ::: Ptr Word32) -> ("pCounters" ::: Ptr PerformanceCounterKHR) -> ("pCounterDescriptions" ::: Ptr PerformanceCounterDescriptionKHR) -> IO Result)+ , pVkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR :: FunPtr (Ptr PhysicalDevice_T -> ("pPerformanceQueryCreateInfo" ::: Ptr QueryPoolPerformanceCreateInfoKHR) -> ("pNumPasses" ::: Ptr Word32) -> IO ())+ , pVkCreateHeadlessSurfaceEXT :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr HeadlessSurfaceCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)+ , pVkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV :: FunPtr (Ptr PhysicalDevice_T -> ("pCombinationCount" ::: Ptr Word32) -> ("pCombinations" ::: Ptr FramebufferMixedSamplesCombinationNV) -> IO Result)+ , pVkGetPhysicalDeviceToolPropertiesEXT :: FunPtr (Ptr PhysicalDevice_T -> ("pToolCount" ::: Ptr Word32) -> ("pToolProperties" ::: Ptr PhysicalDeviceToolPropertiesEXT) -> IO Result)+ }++deriving instance Eq InstanceCmds+deriving instance Show InstanceCmds+instance Zero InstanceCmds where+ zero = InstanceCmds+ nullPtr 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+ 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 nullFunPtr++-- | A version of 'getInstanceProcAddr' which can be called+-- with a null pointer for the instance.+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "vkGetInstanceProcAddr" getInstanceProcAddr' :: Ptr Instance_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction++initInstanceCmds :: Ptr Instance_T -> IO InstanceCmds+initInstanceCmds handle = do+ vkDestroyInstance <- getInstanceProcAddr' handle (Ptr "vkDestroyInstance"#)+ vkEnumeratePhysicalDevices <- getInstanceProcAddr' handle (Ptr "vkEnumeratePhysicalDevices"#)+ vkGetInstanceProcAddr <- getInstanceProcAddr' handle (Ptr "vkGetInstanceProcAddr"#)+ vkGetPhysicalDeviceProperties <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceProperties"#)+ vkGetPhysicalDeviceQueueFamilyProperties <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceQueueFamilyProperties"#)+ vkGetPhysicalDeviceMemoryProperties <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceMemoryProperties"#)+ vkGetPhysicalDeviceFeatures <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceFeatures"#)+ vkGetPhysicalDeviceFormatProperties <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceFormatProperties"#)+ vkGetPhysicalDeviceImageFormatProperties <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceImageFormatProperties"#)+ vkCreateDevice <- getInstanceProcAddr' handle (Ptr "vkCreateDevice"#)+ vkEnumerateDeviceLayerProperties <- getInstanceProcAddr' handle (Ptr "vkEnumerateDeviceLayerProperties"#)+ vkEnumerateDeviceExtensionProperties <- getInstanceProcAddr' handle (Ptr "vkEnumerateDeviceExtensionProperties"#)+ vkGetPhysicalDeviceSparseImageFormatProperties <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSparseImageFormatProperties"#)+ vkCreateAndroidSurfaceKHR <- getInstanceProcAddr' handle (Ptr "vkCreateAndroidSurfaceKHR"#)+ vkGetPhysicalDeviceDisplayPropertiesKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceDisplayPropertiesKHR"#)+ vkGetPhysicalDeviceDisplayPlanePropertiesKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"#)+ vkGetDisplayPlaneSupportedDisplaysKHR <- getInstanceProcAddr' handle (Ptr "vkGetDisplayPlaneSupportedDisplaysKHR"#)+ vkGetDisplayModePropertiesKHR <- getInstanceProcAddr' handle (Ptr "vkGetDisplayModePropertiesKHR"#)+ vkCreateDisplayModeKHR <- getInstanceProcAddr' handle (Ptr "vkCreateDisplayModeKHR"#)+ vkGetDisplayPlaneCapabilitiesKHR <- getInstanceProcAddr' handle (Ptr "vkGetDisplayPlaneCapabilitiesKHR"#)+ vkCreateDisplayPlaneSurfaceKHR <- getInstanceProcAddr' handle (Ptr "vkCreateDisplayPlaneSurfaceKHR"#)+ vkDestroySurfaceKHR <- getInstanceProcAddr' handle (Ptr "vkDestroySurfaceKHR"#)+ vkGetPhysicalDeviceSurfaceSupportKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSurfaceSupportKHR"#)+ vkGetPhysicalDeviceSurfaceCapabilitiesKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"#)+ vkGetPhysicalDeviceSurfaceFormatsKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSurfaceFormatsKHR"#)+ vkGetPhysicalDeviceSurfacePresentModesKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSurfacePresentModesKHR"#)+ vkCreateViSurfaceNN <- getInstanceProcAddr' handle (Ptr "vkCreateViSurfaceNN"#)+ vkCreateWaylandSurfaceKHR <- getInstanceProcAddr' handle (Ptr "vkCreateWaylandSurfaceKHR"#)+ vkGetPhysicalDeviceWaylandPresentationSupportKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceWaylandPresentationSupportKHR"#)+ vkCreateWin32SurfaceKHR <- getInstanceProcAddr' handle (Ptr "vkCreateWin32SurfaceKHR"#)+ vkGetPhysicalDeviceWin32PresentationSupportKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceWin32PresentationSupportKHR"#)+ vkCreateXlibSurfaceKHR <- getInstanceProcAddr' handle (Ptr "vkCreateXlibSurfaceKHR"#)+ vkGetPhysicalDeviceXlibPresentationSupportKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceXlibPresentationSupportKHR"#)+ vkCreateXcbSurfaceKHR <- getInstanceProcAddr' handle (Ptr "vkCreateXcbSurfaceKHR"#)+ vkGetPhysicalDeviceXcbPresentationSupportKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceXcbPresentationSupportKHR"#)+ vkCreateImagePipeSurfaceFUCHSIA <- getInstanceProcAddr' handle (Ptr "vkCreateImagePipeSurfaceFUCHSIA"#)+ vkCreateStreamDescriptorSurfaceGGP <- getInstanceProcAddr' handle (Ptr "vkCreateStreamDescriptorSurfaceGGP"#)+ vkCreateDebugReportCallbackEXT <- getInstanceProcAddr' handle (Ptr "vkCreateDebugReportCallbackEXT"#)+ vkDestroyDebugReportCallbackEXT <- getInstanceProcAddr' handle (Ptr "vkDestroyDebugReportCallbackEXT"#)+ vkDebugReportMessageEXT <- getInstanceProcAddr' handle (Ptr "vkDebugReportMessageEXT"#)+ vkGetPhysicalDeviceExternalImageFormatPropertiesNV <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"#)+ vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX"#)+ vkGetPhysicalDeviceFeatures2 <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceFeatures2"#)+ vkGetPhysicalDeviceProperties2 <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceProperties2"#)+ vkGetPhysicalDeviceFormatProperties2 <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceFormatProperties2"#)+ vkGetPhysicalDeviceImageFormatProperties2 <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceImageFormatProperties2"#)+ vkGetPhysicalDeviceQueueFamilyProperties2 <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceQueueFamilyProperties2"#)+ vkGetPhysicalDeviceMemoryProperties2 <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceMemoryProperties2"#)+ vkGetPhysicalDeviceSparseImageFormatProperties2 <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSparseImageFormatProperties2"#)+ vkGetPhysicalDeviceExternalBufferProperties <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceExternalBufferProperties"#)+ vkGetPhysicalDeviceExternalSemaphoreProperties <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceExternalSemaphoreProperties"#)+ vkGetPhysicalDeviceExternalFenceProperties <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceExternalFenceProperties"#)+ vkReleaseDisplayEXT <- getInstanceProcAddr' handle (Ptr "vkReleaseDisplayEXT"#)+ vkAcquireXlibDisplayEXT <- getInstanceProcAddr' handle (Ptr "vkAcquireXlibDisplayEXT"#)+ vkGetRandROutputDisplayEXT <- getInstanceProcAddr' handle (Ptr "vkGetRandROutputDisplayEXT"#)+ vkGetPhysicalDeviceSurfaceCapabilities2EXT <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSurfaceCapabilities2EXT"#)+ vkEnumeratePhysicalDeviceGroups <- getInstanceProcAddr' handle (Ptr "vkEnumeratePhysicalDeviceGroups"#)+ vkGetPhysicalDevicePresentRectanglesKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDevicePresentRectanglesKHR"#)+ vkCreateIOSSurfaceMVK <- getInstanceProcAddr' handle (Ptr "vkCreateIOSSurfaceMVK"#)+ vkCreateMacOSSurfaceMVK <- getInstanceProcAddr' handle (Ptr "vkCreateMacOSSurfaceMVK"#)+ vkCreateMetalSurfaceEXT <- getInstanceProcAddr' handle (Ptr "vkCreateMetalSurfaceEXT"#)+ vkGetPhysicalDeviceMultisamplePropertiesEXT <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceMultisamplePropertiesEXT"#)+ vkGetPhysicalDeviceSurfaceCapabilities2KHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSurfaceCapabilities2KHR"#)+ vkGetPhysicalDeviceSurfaceFormats2KHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSurfaceFormats2KHR"#)+ vkGetPhysicalDeviceDisplayProperties2KHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceDisplayProperties2KHR"#)+ vkGetPhysicalDeviceDisplayPlaneProperties2KHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"#)+ vkGetDisplayModeProperties2KHR <- getInstanceProcAddr' handle (Ptr "vkGetDisplayModeProperties2KHR"#)+ vkGetDisplayPlaneCapabilities2KHR <- getInstanceProcAddr' handle (Ptr "vkGetDisplayPlaneCapabilities2KHR"#)+ vkGetPhysicalDeviceCalibrateableTimeDomainsEXT <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"#)+ vkCreateDebugUtilsMessengerEXT <- getInstanceProcAddr' handle (Ptr "vkCreateDebugUtilsMessengerEXT"#)+ vkDestroyDebugUtilsMessengerEXT <- getInstanceProcAddr' handle (Ptr "vkDestroyDebugUtilsMessengerEXT"#)+ vkSubmitDebugUtilsMessageEXT <- getInstanceProcAddr' handle (Ptr "vkSubmitDebugUtilsMessageEXT"#)+ vkGetPhysicalDeviceCooperativeMatrixPropertiesNV <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"#)+ vkGetPhysicalDeviceSurfacePresentModes2EXT <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSurfacePresentModes2EXT"#)+ vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR <- getInstanceProcAddr' handle (Ptr "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"#)+ vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"#)+ vkCreateHeadlessSurfaceEXT <- getInstanceProcAddr' handle (Ptr "vkCreateHeadlessSurfaceEXT"#)+ vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"#)+ vkGetPhysicalDeviceToolPropertiesEXT <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceToolPropertiesEXT"#)+ pure $ InstanceCmds handle+ (castFunPtr @_ @(Ptr Instance_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyInstance)+ (castFunPtr @_ @(Ptr Instance_T -> ("pPhysicalDeviceCount" ::: Ptr Word32) -> ("pPhysicalDevices" ::: Ptr (Ptr PhysicalDevice_T)) -> IO Result) vkEnumeratePhysicalDevices)+ (castFunPtr @_ @(Ptr Instance_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction) vkGetInstanceProcAddr)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pProperties" ::: Ptr PhysicalDeviceProperties) -> IO ()) vkGetPhysicalDeviceProperties)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr QueueFamilyProperties) -> IO ()) vkGetPhysicalDeviceQueueFamilyProperties)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pMemoryProperties" ::: Ptr PhysicalDeviceMemoryProperties) -> IO ()) vkGetPhysicalDeviceMemoryProperties)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pFeatures" ::: Ptr PhysicalDeviceFeatures) -> IO ()) vkGetPhysicalDeviceFeatures)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> Format -> ("pFormatProperties" ::: Ptr FormatProperties) -> IO ()) vkGetPhysicalDeviceFormatProperties)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> ("pImageFormatProperties" ::: Ptr ImageFormatProperties) -> IO Result) vkGetPhysicalDeviceImageFormatProperties)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pCreateInfo" ::: Ptr (DeviceCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pDevice" ::: Ptr (Ptr Device_T)) -> IO Result) vkCreateDevice)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr LayerProperties) -> IO Result) vkEnumerateDeviceLayerProperties)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pLayerName" ::: Ptr CChar) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr ExtensionProperties) -> IO Result) vkEnumerateDeviceExtensionProperties)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> Format -> ImageType -> ("samples" ::: SampleCountFlagBits) -> ImageUsageFlags -> ImageTiling -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr SparseImageFormatProperties) -> IO ()) vkGetPhysicalDeviceSparseImageFormatProperties)+ (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr AndroidSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateAndroidSurfaceKHR)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayPropertiesKHR) -> IO Result) vkGetPhysicalDeviceDisplayPropertiesKHR)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayPlanePropertiesKHR) -> IO Result) vkGetPhysicalDeviceDisplayPlanePropertiesKHR)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("planeIndex" ::: Word32) -> ("pDisplayCount" ::: Ptr Word32) -> ("pDisplays" ::: Ptr DisplayKHR) -> IO Result) vkGetDisplayPlaneSupportedDisplaysKHR)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> DisplayKHR -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayModePropertiesKHR) -> IO Result) vkGetDisplayModePropertiesKHR)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> DisplayKHR -> ("pCreateInfo" ::: Ptr DisplayModeCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pMode" ::: Ptr DisplayModeKHR) -> IO Result) vkCreateDisplayModeKHR)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> DisplayModeKHR -> ("planeIndex" ::: Word32) -> ("pCapabilities" ::: Ptr DisplayPlaneCapabilitiesKHR) -> IO Result) vkGetDisplayPlaneCapabilitiesKHR)+ (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr DisplaySurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateDisplayPlaneSurfaceKHR)+ (castFunPtr @_ @(Ptr Instance_T -> SurfaceKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroySurfaceKHR)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> SurfaceKHR -> ("pSupported" ::: Ptr Bool32) -> IO Result) vkGetPhysicalDeviceSurfaceSupportKHR)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> SurfaceKHR -> ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilitiesKHR) -> IO Result) vkGetPhysicalDeviceSurfaceCapabilitiesKHR)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> SurfaceKHR -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr SurfaceFormatKHR) -> IO Result) vkGetPhysicalDeviceSurfaceFormatsKHR)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> SurfaceKHR -> ("pPresentModeCount" ::: Ptr Word32) -> ("pPresentModes" ::: Ptr PresentModeKHR) -> IO Result) vkGetPhysicalDeviceSurfacePresentModesKHR)+ (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr ViSurfaceCreateInfoNN) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateViSurfaceNN)+ (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr WaylandSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateWaylandSurfaceKHR)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> Ptr Wl_display -> IO Bool32) vkGetPhysicalDeviceWaylandPresentationSupportKHR)+ (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr Win32SurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateWin32SurfaceKHR)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> IO Bool32) vkGetPhysicalDeviceWin32PresentationSupportKHR)+ (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr XlibSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateXlibSurfaceKHR)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> ("dpy" ::: Ptr Display) -> VisualID -> IO Bool32) vkGetPhysicalDeviceXlibPresentationSupportKHR)+ (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr XcbSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateXcbSurfaceKHR)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> Ptr Xcb_connection_t -> ("visual_id" ::: Xcb_visualid_t) -> IO Bool32) vkGetPhysicalDeviceXcbPresentationSupportKHR)+ (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr ImagePipeSurfaceCreateInfoFUCHSIA) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateImagePipeSurfaceFUCHSIA)+ (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr StreamDescriptorSurfaceCreateInfoGGP) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateStreamDescriptorSurfaceGGP)+ (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr DebugReportCallbackCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pCallback" ::: Ptr DebugReportCallbackEXT) -> IO Result) vkCreateDebugReportCallbackEXT)+ (castFunPtr @_ @(Ptr Instance_T -> DebugReportCallbackEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDebugReportCallbackEXT)+ (castFunPtr @_ @(Ptr Instance_T -> DebugReportFlagsEXT -> DebugReportObjectTypeEXT -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> IO ()) vkDebugReportMessageEXT)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> ("pExternalImageFormatProperties" ::: Ptr ExternalImageFormatPropertiesNV) -> IO Result) vkGetPhysicalDeviceExternalImageFormatPropertiesNV)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pFeatures" ::: Ptr DeviceGeneratedCommandsFeaturesNVX) -> ("pLimits" ::: Ptr DeviceGeneratedCommandsLimitsNVX) -> IO ()) vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pFeatures" ::: Ptr (PhysicalDeviceFeatures2 _)) -> IO ()) vkGetPhysicalDeviceFeatures2)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pProperties" ::: Ptr (PhysicalDeviceProperties2 _)) -> IO ()) vkGetPhysicalDeviceProperties2)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> Format -> ("pFormatProperties" ::: Ptr (FormatProperties2 _)) -> IO ()) vkGetPhysicalDeviceFormatProperties2)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pImageFormatInfo" ::: Ptr (PhysicalDeviceImageFormatInfo2 _)) -> ("pImageFormatProperties" ::: Ptr (ImageFormatProperties2 _)) -> IO Result) vkGetPhysicalDeviceImageFormatProperties2)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr (QueueFamilyProperties2 _)) -> IO ()) vkGetPhysicalDeviceQueueFamilyProperties2)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pMemoryProperties" ::: Ptr (PhysicalDeviceMemoryProperties2 _)) -> IO ()) vkGetPhysicalDeviceMemoryProperties2)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pFormatInfo" ::: Ptr PhysicalDeviceSparseImageFormatInfo2) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr SparseImageFormatProperties2) -> IO ()) vkGetPhysicalDeviceSparseImageFormatProperties2)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pExternalBufferInfo" ::: Ptr PhysicalDeviceExternalBufferInfo) -> ("pExternalBufferProperties" ::: Ptr ExternalBufferProperties) -> IO ()) vkGetPhysicalDeviceExternalBufferProperties)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pExternalSemaphoreInfo" ::: Ptr (PhysicalDeviceExternalSemaphoreInfo _)) -> ("pExternalSemaphoreProperties" ::: Ptr ExternalSemaphoreProperties) -> IO ()) vkGetPhysicalDeviceExternalSemaphoreProperties)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pExternalFenceInfo" ::: Ptr PhysicalDeviceExternalFenceInfo) -> ("pExternalFenceProperties" ::: Ptr ExternalFenceProperties) -> IO ()) vkGetPhysicalDeviceExternalFenceProperties)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> DisplayKHR -> IO Result) vkReleaseDisplayEXT)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("dpy" ::: Ptr Display) -> DisplayKHR -> IO Result) vkAcquireXlibDisplayEXT)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("dpy" ::: Ptr Display) -> RROutput -> ("pDisplay" ::: Ptr DisplayKHR) -> IO Result) vkGetRandROutputDisplayEXT)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> SurfaceKHR -> ("pSurfaceCapabilities" ::: Ptr SurfaceCapabilities2EXT) -> IO Result) vkGetPhysicalDeviceSurfaceCapabilities2EXT)+ (castFunPtr @_ @(Ptr Instance_T -> ("pPhysicalDeviceGroupCount" ::: Ptr Word32) -> ("pPhysicalDeviceGroupProperties" ::: Ptr PhysicalDeviceGroupProperties) -> IO Result) vkEnumeratePhysicalDeviceGroups)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> SurfaceKHR -> ("pRectCount" ::: Ptr Word32) -> ("pRects" ::: Ptr Rect2D) -> IO Result) vkGetPhysicalDevicePresentRectanglesKHR)+ (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr IOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateIOSSurfaceMVK)+ (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr MacOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateMacOSSurfaceMVK)+ (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr MetalSurfaceCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateMetalSurfaceEXT)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("samples" ::: SampleCountFlagBits) -> ("pMultisampleProperties" ::: Ptr MultisamplePropertiesEXT) -> IO ()) vkGetPhysicalDeviceMultisamplePropertiesEXT)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pSurfaceInfo" ::: Ptr (PhysicalDeviceSurfaceInfo2KHR _)) -> ("pSurfaceCapabilities" ::: Ptr (SurfaceCapabilities2KHR _)) -> IO Result) vkGetPhysicalDeviceSurfaceCapabilities2KHR)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pSurfaceInfo" ::: Ptr (PhysicalDeviceSurfaceInfo2KHR _)) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr SurfaceFormat2KHR) -> IO Result) vkGetPhysicalDeviceSurfaceFormats2KHR)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayProperties2KHR) -> IO Result) vkGetPhysicalDeviceDisplayProperties2KHR)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayPlaneProperties2KHR) -> IO Result) vkGetPhysicalDeviceDisplayPlaneProperties2KHR)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> DisplayKHR -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr DisplayModeProperties2KHR) -> IO Result) vkGetDisplayModeProperties2KHR)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pDisplayPlaneInfo" ::: Ptr DisplayPlaneInfo2KHR) -> ("pCapabilities" ::: Ptr DisplayPlaneCapabilities2KHR) -> IO Result) vkGetDisplayPlaneCapabilities2KHR)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pTimeDomainCount" ::: Ptr Word32) -> ("pTimeDomains" ::: Ptr TimeDomainEXT) -> IO Result) vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)+ (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr DebugUtilsMessengerCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pMessenger" ::: Ptr DebugUtilsMessengerEXT) -> IO Result) vkCreateDebugUtilsMessengerEXT)+ (castFunPtr @_ @(Ptr Instance_T -> DebugUtilsMessengerEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDebugUtilsMessengerEXT)+ (castFunPtr @_ @(Ptr Instance_T -> DebugUtilsMessageSeverityFlagBitsEXT -> ("messageTypes" ::: DebugUtilsMessageTypeFlagsEXT) -> ("pCallbackData" ::: Ptr DebugUtilsMessengerCallbackDataEXT) -> IO ()) vkSubmitDebugUtilsMessageEXT)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr CooperativeMatrixPropertiesNV) -> IO Result) vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pSurfaceInfo" ::: Ptr (PhysicalDeviceSurfaceInfo2KHR _)) -> ("pPresentModeCount" ::: Ptr Word32) -> ("pPresentModes" ::: Ptr PresentModeKHR) -> IO Result) vkGetPhysicalDeviceSurfacePresentModes2EXT)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("queueFamilyIndex" ::: Word32) -> ("pCounterCount" ::: Ptr Word32) -> ("pCounters" ::: Ptr PerformanceCounterKHR) -> ("pCounterDescriptions" ::: Ptr PerformanceCounterDescriptionKHR) -> IO Result) vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pPerformanceQueryCreateInfo" ::: Ptr QueryPoolPerformanceCreateInfoKHR) -> ("pNumPasses" ::: Ptr Word32) -> IO ()) vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)+ (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr HeadlessSurfaceCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateHeadlessSurfaceEXT)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pCombinationCount" ::: Ptr Word32) -> ("pCombinations" ::: Ptr FramebufferMixedSamplesCombinationNV) -> IO Result) vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)+ (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pToolCount" ::: Ptr Word32) -> ("pToolProperties" ::: Ptr PhysicalDeviceToolPropertiesEXT) -> IO Result) vkGetPhysicalDeviceToolPropertiesEXT)++data DeviceCmds = DeviceCmds+ { deviceCmdsHandle :: Ptr Device_T+ , pVkGetDeviceProcAddr :: FunPtr (Ptr Device_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction)+ , pVkDestroyDevice :: FunPtr (Ptr Device_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkGetDeviceQueue :: FunPtr (Ptr Device_T -> ("queueFamilyIndex" ::: Word32) -> ("queueIndex" ::: Word32) -> ("pQueue" ::: Ptr (Ptr Queue_T)) -> IO ())+ , pVkQueueSubmit :: forall a . FunPtr (Ptr Queue_T -> ("submitCount" ::: Word32) -> ("pSubmits" ::: Ptr (SubmitInfo a)) -> Fence -> IO Result)+ , pVkQueueWaitIdle :: FunPtr (Ptr Queue_T -> IO Result)+ , pVkDeviceWaitIdle :: FunPtr (Ptr Device_T -> IO Result)+ , pVkAllocateMemory :: forall a . FunPtr (Ptr Device_T -> ("pAllocateInfo" ::: Ptr (MemoryAllocateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pMemory" ::: Ptr DeviceMemory) -> IO Result)+ , pVkFreeMemory :: FunPtr (Ptr Device_T -> DeviceMemory -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkMapMemory :: FunPtr (Ptr Device_T -> DeviceMemory -> ("offset" ::: DeviceSize) -> DeviceSize -> MemoryMapFlags -> ("ppData" ::: Ptr (Ptr ())) -> IO Result)+ , pVkUnmapMemory :: FunPtr (Ptr Device_T -> DeviceMemory -> IO ())+ , pVkFlushMappedMemoryRanges :: FunPtr (Ptr Device_T -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr MappedMemoryRange) -> IO Result)+ , pVkInvalidateMappedMemoryRanges :: FunPtr (Ptr Device_T -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr MappedMemoryRange) -> IO Result)+ , pVkGetDeviceMemoryCommitment :: FunPtr (Ptr Device_T -> DeviceMemory -> ("pCommittedMemoryInBytes" ::: Ptr DeviceSize) -> IO ())+ , pVkGetBufferMemoryRequirements :: FunPtr (Ptr Device_T -> Buffer -> ("pMemoryRequirements" ::: Ptr MemoryRequirements) -> IO ())+ , pVkBindBufferMemory :: FunPtr (Ptr Device_T -> Buffer -> DeviceMemory -> ("memoryOffset" ::: DeviceSize) -> IO Result)+ , pVkGetImageMemoryRequirements :: FunPtr (Ptr Device_T -> Image -> ("pMemoryRequirements" ::: Ptr MemoryRequirements) -> IO ())+ , pVkBindImageMemory :: FunPtr (Ptr Device_T -> Image -> DeviceMemory -> ("memoryOffset" ::: DeviceSize) -> IO Result)+ , pVkGetImageSparseMemoryRequirements :: FunPtr (Ptr Device_T -> Image -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements) -> IO ())+ , pVkQueueBindSparse :: forall a . FunPtr (Ptr Queue_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfo" ::: Ptr (BindSparseInfo a)) -> Fence -> IO Result)+ , pVkCreateFence :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (FenceCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFence" ::: Ptr Fence) -> IO Result)+ , pVkDestroyFence :: FunPtr (Ptr Device_T -> Fence -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkResetFences :: FunPtr (Ptr Device_T -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr Fence) -> IO Result)+ , pVkGetFenceStatus :: FunPtr (Ptr Device_T -> Fence -> IO Result)+ , pVkWaitForFences :: FunPtr (Ptr Device_T -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr Fence) -> ("waitAll" ::: Bool32) -> ("timeout" ::: Word64) -> IO Result)+ , pVkCreateSemaphore :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SemaphoreCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSemaphore" ::: Ptr Semaphore) -> IO Result)+ , pVkDestroySemaphore :: FunPtr (Ptr Device_T -> Semaphore -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkCreateEvent :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr EventCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pEvent" ::: Ptr Event) -> IO Result)+ , pVkDestroyEvent :: FunPtr (Ptr Device_T -> Event -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkGetEventStatus :: FunPtr (Ptr Device_T -> Event -> IO Result)+ , pVkSetEvent :: FunPtr (Ptr Device_T -> Event -> IO Result)+ , pVkResetEvent :: FunPtr (Ptr Device_T -> Event -> IO Result)+ , pVkCreateQueryPool :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (QueryPoolCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pQueryPool" ::: Ptr QueryPool) -> IO Result)+ , pVkDestroyQueryPool :: FunPtr (Ptr Device_T -> QueryPool -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkGetQueryPoolResults :: FunPtr (Ptr Device_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> ("stride" ::: DeviceSize) -> QueryResultFlags -> IO Result)+ , pVkResetQueryPool :: FunPtr (Ptr Device_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ())+ , pVkCreateBuffer :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (BufferCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pBuffer" ::: Ptr Buffer) -> IO Result)+ , pVkDestroyBuffer :: FunPtr (Ptr Device_T -> Buffer -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkCreateBufferView :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr BufferViewCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pView" ::: Ptr BufferView) -> IO Result)+ , pVkDestroyBufferView :: FunPtr (Ptr Device_T -> BufferView -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkCreateImage :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (ImageCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pImage" ::: Ptr Image) -> IO Result)+ , pVkDestroyImage :: FunPtr (Ptr Device_T -> Image -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkGetImageSubresourceLayout :: FunPtr (Ptr Device_T -> Image -> ("pSubresource" ::: Ptr ImageSubresource) -> ("pLayout" ::: Ptr SubresourceLayout) -> IO ())+ , pVkCreateImageView :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (ImageViewCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pView" ::: Ptr ImageView) -> IO Result)+ , pVkDestroyImageView :: FunPtr (Ptr Device_T -> ImageView -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkCreateShaderModule :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (ShaderModuleCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pShaderModule" ::: Ptr ShaderModule) -> IO Result)+ , pVkDestroyShaderModule :: FunPtr (Ptr Device_T -> ShaderModule -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkCreatePipelineCache :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr PipelineCacheCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelineCache" ::: Ptr PipelineCache) -> IO Result)+ , pVkDestroyPipelineCache :: FunPtr (Ptr Device_T -> PipelineCache -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkGetPipelineCacheData :: FunPtr (Ptr Device_T -> PipelineCache -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO Result)+ , pVkMergePipelineCaches :: FunPtr (Ptr Device_T -> ("dstCache" ::: PipelineCache) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr PipelineCache) -> IO Result)+ , pVkCreateGraphicsPipelines :: forall a . FunPtr (Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (GraphicsPipelineCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result)+ , pVkCreateComputePipelines :: forall a . FunPtr (Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (ComputePipelineCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result)+ , pVkDestroyPipeline :: FunPtr (Ptr Device_T -> Pipeline -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkCreatePipelineLayout :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr PipelineLayoutCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelineLayout" ::: Ptr PipelineLayout) -> IO Result)+ , pVkDestroyPipelineLayout :: FunPtr (Ptr Device_T -> PipelineLayout -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkCreateSampler :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SamplerCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSampler" ::: Ptr Sampler) -> IO Result)+ , pVkDestroySampler :: FunPtr (Ptr Device_T -> Sampler -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkCreateDescriptorSetLayout :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (DescriptorSetLayoutCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSetLayout" ::: Ptr DescriptorSetLayout) -> IO Result)+ , pVkDestroyDescriptorSetLayout :: FunPtr (Ptr Device_T -> DescriptorSetLayout -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkCreateDescriptorPool :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (DescriptorPoolCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pDescriptorPool" ::: Ptr DescriptorPool) -> IO Result)+ , pVkDestroyDescriptorPool :: FunPtr (Ptr Device_T -> DescriptorPool -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkResetDescriptorPool :: FunPtr (Ptr Device_T -> DescriptorPool -> DescriptorPoolResetFlags -> IO Result)+ , pVkAllocateDescriptorSets :: forall a . FunPtr (Ptr Device_T -> ("pAllocateInfo" ::: Ptr (DescriptorSetAllocateInfo a)) -> ("pDescriptorSets" ::: Ptr DescriptorSet) -> IO Result)+ , pVkFreeDescriptorSets :: FunPtr (Ptr Device_T -> DescriptorPool -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr DescriptorSet) -> IO Result)+ , pVkUpdateDescriptorSets :: forall a . FunPtr (Ptr Device_T -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr (WriteDescriptorSet a)) -> ("descriptorCopyCount" ::: Word32) -> ("pDescriptorCopies" ::: Ptr CopyDescriptorSet) -> IO ())+ , pVkCreateFramebuffer :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (FramebufferCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFramebuffer" ::: Ptr Framebuffer) -> IO Result)+ , pVkDestroyFramebuffer :: FunPtr (Ptr Device_T -> Framebuffer -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkCreateRenderPass :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (RenderPassCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pRenderPass" ::: Ptr RenderPass) -> IO Result)+ , pVkDestroyRenderPass :: FunPtr (Ptr Device_T -> RenderPass -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkGetRenderAreaGranularity :: FunPtr (Ptr Device_T -> RenderPass -> ("pGranularity" ::: Ptr Extent2D) -> IO ())+ , pVkCreateCommandPool :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr CommandPoolCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pCommandPool" ::: Ptr CommandPool) -> IO Result)+ , pVkDestroyCommandPool :: FunPtr (Ptr Device_T -> CommandPool -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkResetCommandPool :: FunPtr (Ptr Device_T -> CommandPool -> CommandPoolResetFlags -> IO Result)+ , pVkAllocateCommandBuffers :: FunPtr (Ptr Device_T -> ("pAllocateInfo" ::: Ptr CommandBufferAllocateInfo) -> ("pCommandBuffers" ::: Ptr (Ptr CommandBuffer_T)) -> IO Result)+ , pVkFreeCommandBuffers :: FunPtr (Ptr Device_T -> CommandPool -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr (Ptr CommandBuffer_T)) -> IO ())+ , pVkBeginCommandBuffer :: forall a . FunPtr (Ptr CommandBuffer_T -> ("pBeginInfo" ::: Ptr (CommandBufferBeginInfo a)) -> IO Result)+ , pVkEndCommandBuffer :: FunPtr (Ptr CommandBuffer_T -> IO Result)+ , pVkResetCommandBuffer :: FunPtr (Ptr CommandBuffer_T -> CommandBufferResetFlags -> IO Result)+ , pVkCmdBindPipeline :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> IO ())+ , pVkCmdSetViewport :: FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr Viewport) -> IO ())+ , pVkCmdSetScissor :: FunPtr (Ptr CommandBuffer_T -> ("firstScissor" ::: Word32) -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr Rect2D) -> IO ())+ , pVkCmdSetLineWidth :: FunPtr (Ptr CommandBuffer_T -> ("lineWidth" ::: CFloat) -> IO ())+ , pVkCmdSetDepthBias :: FunPtr (Ptr CommandBuffer_T -> ("depthBiasConstantFactor" ::: CFloat) -> ("depthBiasClamp" ::: CFloat) -> ("depthBiasSlopeFactor" ::: CFloat) -> IO ())+ , pVkCmdSetBlendConstants :: FunPtr (Ptr CommandBuffer_T -> ("blendConstants" ::: Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat)) -> IO ())+ , pVkCmdSetDepthBounds :: FunPtr (Ptr CommandBuffer_T -> ("minDepthBounds" ::: CFloat) -> ("maxDepthBounds" ::: CFloat) -> IO ())+ , pVkCmdSetStencilCompareMask :: FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("compareMask" ::: Word32) -> IO ())+ , pVkCmdSetStencilWriteMask :: FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("writeMask" ::: Word32) -> IO ())+ , pVkCmdSetStencilReference :: FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("reference" ::: Word32) -> IO ())+ , pVkCmdBindDescriptorSets :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("firstSet" ::: Word32) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr DescriptorSet) -> ("dynamicOffsetCount" ::: Word32) -> ("pDynamicOffsets" ::: Ptr Word32) -> IO ())+ , pVkCmdBindIndexBuffer :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IndexType -> IO ())+ , pVkCmdBindVertexBuffers :: FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr Buffer) -> ("pOffsets" ::: Ptr DeviceSize) -> IO ())+ , pVkCmdDraw :: FunPtr (Ptr CommandBuffer_T -> ("vertexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstVertex" ::: Word32) -> ("firstInstance" ::: Word32) -> IO ())+ , pVkCmdDrawIndexed :: FunPtr (Ptr CommandBuffer_T -> ("indexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstIndex" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstInstance" ::: Word32) -> IO ())+ , pVkCmdDrawIndirect :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())+ , pVkCmdDrawIndexedIndirect :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())+ , pVkCmdDispatch :: FunPtr (Ptr CommandBuffer_T -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ())+ , pVkCmdDispatchIndirect :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IO ())+ , pVkCmdCopyBuffer :: FunPtr (Ptr CommandBuffer_T -> ("srcBuffer" ::: Buffer) -> ("dstBuffer" ::: Buffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferCopy) -> IO ())+ , pVkCmdCopyImage :: FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr ImageCopy) -> IO ())+ , pVkCmdBlitImage :: FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr ImageBlit) -> Filter -> IO ())+ , pVkCmdCopyBufferToImage :: FunPtr (Ptr CommandBuffer_T -> ("srcBuffer" ::: Buffer) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferImageCopy) -> IO ())+ , pVkCmdCopyImageToBuffer :: FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstBuffer" ::: Buffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferImageCopy) -> IO ())+ , pVkCmdUpdateBuffer :: FunPtr (Ptr CommandBuffer_T -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("dataSize" ::: DeviceSize) -> ("pData" ::: Ptr ()) -> IO ())+ , pVkCmdFillBuffer :: FunPtr (Ptr CommandBuffer_T -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> DeviceSize -> ("data" ::: Word32) -> IO ())+ , pVkCmdClearColorImage :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> ("pColor" ::: Ptr ClearColorValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr ImageSubresourceRange) -> IO ())+ , pVkCmdClearDepthStencilImage :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> ("pDepthStencil" ::: Ptr ClearDepthStencilValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr ImageSubresourceRange) -> IO ())+ , pVkCmdClearAttachments :: FunPtr (Ptr CommandBuffer_T -> ("attachmentCount" ::: Word32) -> ("pAttachments" ::: Ptr ClearAttachment) -> ("rectCount" ::: Word32) -> ("pRects" ::: Ptr ClearRect) -> IO ())+ , pVkCmdResolveImage :: FunPtr (Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr ImageResolve) -> IO ())+ , pVkCmdSetEvent :: FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ())+ , pVkCmdResetEvent :: FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ())+ , pVkCmdWaitEvents :: forall a . FunPtr (Ptr CommandBuffer_T -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr Event) -> ("srcStageMask" ::: PipelineStageFlags) -> ("dstStageMask" ::: PipelineStageFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr MemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr BufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr (ImageMemoryBarrier a)) -> IO ())+ , pVkCmdPipelineBarrier :: forall a . FunPtr (Ptr CommandBuffer_T -> ("srcStageMask" ::: PipelineStageFlags) -> ("dstStageMask" ::: PipelineStageFlags) -> DependencyFlags -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr MemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr BufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr (ImageMemoryBarrier a)) -> IO ())+ , pVkCmdBeginQuery :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("query" ::: Word32) -> QueryControlFlags -> IO ())+ , pVkCmdEndQuery :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("query" ::: Word32) -> IO ())+ , pVkCmdBeginConditionalRenderingEXT :: FunPtr (Ptr CommandBuffer_T -> ("pConditionalRenderingBegin" ::: Ptr ConditionalRenderingBeginInfoEXT) -> IO ())+ , pVkCmdEndConditionalRenderingEXT :: FunPtr (Ptr CommandBuffer_T -> IO ())+ , pVkCmdResetQueryPool :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ())+ , pVkCmdWriteTimestamp :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlagBits -> QueryPool -> ("query" ::: Word32) -> IO ())+ , pVkCmdCopyQueryPoolResults :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("stride" ::: DeviceSize) -> QueryResultFlags -> IO ())+ , pVkCmdPushConstants :: FunPtr (Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> ("offset" ::: Word32) -> ("size" ::: Word32) -> ("pValues" ::: Ptr ()) -> IO ())+ , pVkCmdBeginRenderPass :: forall a . FunPtr (Ptr CommandBuffer_T -> ("pRenderPassBegin" ::: Ptr (RenderPassBeginInfo a)) -> SubpassContents -> IO ())+ , pVkCmdNextSubpass :: FunPtr (Ptr CommandBuffer_T -> SubpassContents -> IO ())+ , pVkCmdEndRenderPass :: FunPtr (Ptr CommandBuffer_T -> IO ())+ , pVkCmdExecuteCommands :: FunPtr (Ptr CommandBuffer_T -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr (Ptr CommandBuffer_T)) -> IO ())+ , pVkCreateSharedSwapchainsKHR :: forall a . FunPtr (Ptr Device_T -> ("swapchainCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (SwapchainCreateInfoKHR a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSwapchains" ::: Ptr SwapchainKHR) -> IO Result)+ , pVkCreateSwapchainKHR :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SwapchainCreateInfoKHR a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSwapchain" ::: Ptr SwapchainKHR) -> IO Result)+ , pVkDestroySwapchainKHR :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkGetSwapchainImagesKHR :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("pSwapchainImageCount" ::: Ptr Word32) -> ("pSwapchainImages" ::: Ptr Image) -> IO Result)+ , pVkAcquireNextImageKHR :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("timeout" ::: Word64) -> Semaphore -> Fence -> ("pImageIndex" ::: Ptr Word32) -> IO Result)+ , pVkQueuePresentKHR :: forall a . FunPtr (Ptr Queue_T -> ("pPresentInfo" ::: Ptr (PresentInfoKHR a)) -> IO Result)+ , pVkDebugMarkerSetObjectNameEXT :: FunPtr (Ptr Device_T -> ("pNameInfo" ::: Ptr DebugMarkerObjectNameInfoEXT) -> IO Result)+ , pVkDebugMarkerSetObjectTagEXT :: FunPtr (Ptr Device_T -> ("pTagInfo" ::: Ptr DebugMarkerObjectTagInfoEXT) -> IO Result)+ , pVkCmdDebugMarkerBeginEXT :: FunPtr (Ptr CommandBuffer_T -> ("pMarkerInfo" ::: Ptr DebugMarkerMarkerInfoEXT) -> IO ())+ , pVkCmdDebugMarkerEndEXT :: FunPtr (Ptr CommandBuffer_T -> IO ())+ , pVkCmdDebugMarkerInsertEXT :: FunPtr (Ptr CommandBuffer_T -> ("pMarkerInfo" ::: Ptr DebugMarkerMarkerInfoEXT) -> IO ())+ , pVkGetMemoryWin32HandleNV :: FunPtr (Ptr Device_T -> DeviceMemory -> ExternalMemoryHandleTypeFlagsNV -> ("pHandle" ::: Ptr HANDLE) -> IO Result)+ , pVkCmdProcessCommandsNVX :: FunPtr (Ptr CommandBuffer_T -> ("pProcessCommandsInfo" ::: Ptr CmdProcessCommandsInfoNVX) -> IO ())+ , pVkCmdReserveSpaceForCommandsNVX :: FunPtr (Ptr CommandBuffer_T -> ("pReserveSpaceInfo" ::: Ptr CmdReserveSpaceForCommandsInfoNVX) -> IO ())+ , pVkCreateIndirectCommandsLayoutNVX :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr IndirectCommandsLayoutCreateInfoNVX) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pIndirectCommandsLayout" ::: Ptr IndirectCommandsLayoutNVX) -> IO Result)+ , pVkDestroyIndirectCommandsLayoutNVX :: FunPtr (Ptr Device_T -> IndirectCommandsLayoutNVX -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkCreateObjectTableNVX :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr ObjectTableCreateInfoNVX) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pObjectTable" ::: Ptr ObjectTableNVX) -> IO Result)+ , pVkDestroyObjectTableNVX :: FunPtr (Ptr Device_T -> ObjectTableNVX -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkRegisterObjectsNVX :: FunPtr (Ptr Device_T -> ObjectTableNVX -> ("objectCount" ::: Word32) -> ("ppObjectTableEntries" ::: Ptr (Ptr ObjectTableEntryNVX)) -> ("pObjectIndices" ::: Ptr Word32) -> IO Result)+ , pVkUnregisterObjectsNVX :: FunPtr (Ptr Device_T -> ObjectTableNVX -> ("objectCount" ::: Word32) -> ("pObjectEntryTypes" ::: Ptr ObjectEntryTypeNVX) -> ("pObjectIndices" ::: Ptr Word32) -> IO Result)+ , pVkCmdPushDescriptorSetKHR :: forall a . FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("set" ::: Word32) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr (WriteDescriptorSet a)) -> IO ())+ , pVkTrimCommandPool :: FunPtr (Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ())+ , pVkGetMemoryWin32HandleKHR :: FunPtr (Ptr Device_T -> ("pGetWin32HandleInfo" ::: Ptr MemoryGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO Result)+ , pVkGetMemoryWin32HandlePropertiesKHR :: FunPtr (Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> HANDLE -> ("pMemoryWin32HandleProperties" ::: Ptr MemoryWin32HandlePropertiesKHR) -> IO Result)+ , pVkGetMemoryFdKHR :: FunPtr (Ptr Device_T -> ("pGetFdInfo" ::: Ptr MemoryGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO Result)+ , pVkGetMemoryFdPropertiesKHR :: FunPtr (Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> ("fd" ::: CInt) -> ("pMemoryFdProperties" ::: Ptr MemoryFdPropertiesKHR) -> 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)+ , pVkImportSemaphoreFdKHR :: FunPtr (Ptr Device_T -> ("pImportSemaphoreFdInfo" ::: Ptr ImportSemaphoreFdInfoKHR) -> IO Result)+ , pVkGetFenceWin32HandleKHR :: FunPtr (Ptr Device_T -> ("pGetWin32HandleInfo" ::: Ptr FenceGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO Result)+ , pVkImportFenceWin32HandleKHR :: FunPtr (Ptr Device_T -> ("pImportFenceWin32HandleInfo" ::: Ptr ImportFenceWin32HandleInfoKHR) -> IO Result)+ , pVkGetFenceFdKHR :: FunPtr (Ptr Device_T -> ("pGetFdInfo" ::: Ptr FenceGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO Result)+ , pVkImportFenceFdKHR :: FunPtr (Ptr Device_T -> ("pImportFenceFdInfo" ::: Ptr ImportFenceFdInfoKHR) -> IO Result)+ , pVkDisplayPowerControlEXT :: FunPtr (Ptr Device_T -> DisplayKHR -> ("pDisplayPowerInfo" ::: Ptr DisplayPowerInfoEXT) -> IO Result)+ , pVkRegisterDeviceEventEXT :: FunPtr (Ptr Device_T -> ("pDeviceEventInfo" ::: Ptr DeviceEventInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFence" ::: Ptr Fence) -> IO Result)+ , pVkRegisterDisplayEventEXT :: FunPtr (Ptr Device_T -> DisplayKHR -> ("pDisplayEventInfo" ::: Ptr DisplayEventInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFence" ::: Ptr Fence) -> IO Result)+ , pVkGetSwapchainCounterEXT :: FunPtr (Ptr Device_T -> SwapchainKHR -> SurfaceCounterFlagBitsEXT -> ("pCounterValue" ::: Ptr Word64) -> IO Result)+ , pVkGetDeviceGroupPeerMemoryFeatures :: FunPtr (Ptr Device_T -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> ("pPeerMemoryFeatures" ::: Ptr PeerMemoryFeatureFlags) -> IO ())+ , pVkBindBufferMemory2 :: forall a . FunPtr (Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr (BindBufferMemoryInfo a)) -> IO Result)+ , pVkBindImageMemory2 :: forall a . FunPtr (Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr (BindImageMemoryInfo a)) -> IO Result)+ , pVkCmdSetDeviceMask :: FunPtr (Ptr CommandBuffer_T -> ("deviceMask" ::: Word32) -> IO ())+ , pVkGetDeviceGroupPresentCapabilitiesKHR :: FunPtr (Ptr Device_T -> ("pDeviceGroupPresentCapabilities" ::: Ptr DeviceGroupPresentCapabilitiesKHR) -> IO Result)+ , pVkGetDeviceGroupSurfacePresentModesKHR :: FunPtr (Ptr Device_T -> SurfaceKHR -> ("pModes" ::: Ptr DeviceGroupPresentModeFlagsKHR) -> IO Result)+ , pVkAcquireNextImage2KHR :: FunPtr (Ptr Device_T -> ("pAcquireInfo" ::: Ptr AcquireNextImageInfoKHR) -> ("pImageIndex" ::: Ptr Word32) -> IO Result)+ , pVkCmdDispatchBase :: FunPtr (Ptr CommandBuffer_T -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ())+ , pVkCreateDescriptorUpdateTemplate :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr DescriptorUpdateTemplateCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pDescriptorUpdateTemplate" ::: Ptr DescriptorUpdateTemplate) -> IO Result)+ , pVkDestroyDescriptorUpdateTemplate :: FunPtr (Ptr Device_T -> DescriptorUpdateTemplate -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkUpdateDescriptorSetWithTemplate :: FunPtr (Ptr Device_T -> DescriptorSet -> DescriptorUpdateTemplate -> ("pData" ::: Ptr ()) -> IO ())+ , pVkCmdPushDescriptorSetWithTemplateKHR :: FunPtr (Ptr CommandBuffer_T -> DescriptorUpdateTemplate -> PipelineLayout -> ("set" ::: Word32) -> ("pData" ::: Ptr ()) -> IO ())+ , pVkSetHdrMetadataEXT :: FunPtr (Ptr Device_T -> ("swapchainCount" ::: Word32) -> ("pSwapchains" ::: Ptr SwapchainKHR) -> ("pMetadata" ::: Ptr HdrMetadataEXT) -> IO ())+ , pVkGetSwapchainStatusKHR :: FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result)+ , pVkGetRefreshCycleDurationGOOGLE :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("pDisplayTimingProperties" ::: Ptr RefreshCycleDurationGOOGLE) -> IO Result)+ , pVkGetPastPresentationTimingGOOGLE :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("pPresentationTimingCount" ::: Ptr Word32) -> ("pPresentationTimings" ::: Ptr PastPresentationTimingGOOGLE) -> IO Result)+ , pVkCmdSetViewportWScalingNV :: FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewportWScalings" ::: Ptr ViewportWScalingNV) -> IO ())+ , pVkCmdSetDiscardRectangleEXT :: FunPtr (Ptr CommandBuffer_T -> ("firstDiscardRectangle" ::: Word32) -> ("discardRectangleCount" ::: Word32) -> ("pDiscardRectangles" ::: Ptr Rect2D) -> IO ())+ , pVkCmdSetSampleLocationsEXT :: FunPtr (Ptr CommandBuffer_T -> ("pSampleLocationsInfo" ::: Ptr SampleLocationsInfoEXT) -> IO ())+ , pVkGetBufferMemoryRequirements2 :: forall a . FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr BufferMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2 a)) -> IO ())+ , pVkGetImageMemoryRequirements2 :: forall a b . FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr (ImageMemoryRequirementsInfo2 a)) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2 b)) -> IO ())+ , pVkGetImageSparseMemoryRequirements2 :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2) -> IO ())+ , pVkCreateSamplerYcbcrConversion :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SamplerYcbcrConversionCreateInfo a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pYcbcrConversion" ::: Ptr SamplerYcbcrConversion) -> IO Result)+ , pVkDestroySamplerYcbcrConversion :: FunPtr (Ptr Device_T -> SamplerYcbcrConversion -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkGetDeviceQueue2 :: FunPtr (Ptr Device_T -> ("pQueueInfo" ::: Ptr DeviceQueueInfo2) -> ("pQueue" ::: Ptr (Ptr Queue_T)) -> IO ())+ , pVkCreateValidationCacheEXT :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pValidationCache" ::: Ptr ValidationCacheEXT) -> IO Result)+ , pVkDestroyValidationCacheEXT :: FunPtr (Ptr Device_T -> ValidationCacheEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkGetValidationCacheDataEXT :: FunPtr (Ptr Device_T -> ValidationCacheEXT -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO Result)+ , pVkMergeValidationCachesEXT :: FunPtr (Ptr Device_T -> ("dstCache" ::: ValidationCacheEXT) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr ValidationCacheEXT) -> IO Result)+ , pVkGetDescriptorSetLayoutSupport :: forall a b . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (DescriptorSetLayoutCreateInfo a)) -> ("pSupport" ::: Ptr (DescriptorSetLayoutSupport b)) -> IO ())+ , pVkGetShaderInfoAMD :: FunPtr (Ptr Device_T -> Pipeline -> ShaderStageFlagBits -> ShaderInfoTypeAMD -> ("pInfoSize" ::: Ptr CSize) -> ("pInfo" ::: Ptr ()) -> IO Result)+ , pVkSetLocalDimmingAMD :: FunPtr (Ptr Device_T -> SwapchainKHR -> ("localDimmingEnable" ::: Bool32) -> IO ())+ , pVkGetCalibratedTimestampsEXT :: FunPtr (Ptr Device_T -> ("timestampCount" ::: Word32) -> ("pTimestampInfos" ::: Ptr CalibratedTimestampInfoEXT) -> ("pTimestamps" ::: Ptr Word64) -> ("pMaxDeviation" ::: Ptr Word64) -> IO Result)+ , pVkSetDebugUtilsObjectNameEXT :: FunPtr (Ptr Device_T -> ("pNameInfo" ::: Ptr DebugUtilsObjectNameInfoEXT) -> IO Result)+ , pVkSetDebugUtilsObjectTagEXT :: FunPtr (Ptr Device_T -> ("pTagInfo" ::: Ptr DebugUtilsObjectTagInfoEXT) -> IO Result)+ , pVkQueueBeginDebugUtilsLabelEXT :: FunPtr (Ptr Queue_T -> ("pLabelInfo" ::: Ptr DebugUtilsLabelEXT) -> IO ())+ , pVkQueueEndDebugUtilsLabelEXT :: FunPtr (Ptr Queue_T -> IO ())+ , pVkQueueInsertDebugUtilsLabelEXT :: FunPtr (Ptr Queue_T -> ("pLabelInfo" ::: Ptr DebugUtilsLabelEXT) -> IO ())+ , pVkCmdBeginDebugUtilsLabelEXT :: FunPtr (Ptr CommandBuffer_T -> ("pLabelInfo" ::: Ptr DebugUtilsLabelEXT) -> IO ())+ , pVkCmdEndDebugUtilsLabelEXT :: FunPtr (Ptr CommandBuffer_T -> IO ())+ , pVkCmdInsertDebugUtilsLabelEXT :: FunPtr (Ptr CommandBuffer_T -> ("pLabelInfo" ::: Ptr DebugUtilsLabelEXT) -> IO ())+ , pVkGetMemoryHostPointerPropertiesEXT :: FunPtr (Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> ("pHostPointer" ::: Ptr ()) -> ("pMemoryHostPointerProperties" ::: Ptr MemoryHostPointerPropertiesEXT) -> IO Result)+ , pVkCmdWriteBufferMarkerAMD :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlagBits -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("marker" ::: Word32) -> IO ())+ , pVkCreateRenderPass2 :: forall a . FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (RenderPassCreateInfo2 a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pRenderPass" ::: Ptr RenderPass) -> IO Result)+ , pVkCmdBeginRenderPass2 :: forall a . FunPtr (Ptr CommandBuffer_T -> ("pRenderPassBegin" ::: Ptr (RenderPassBeginInfo a)) -> ("pSubpassBeginInfo" ::: Ptr SubpassBeginInfo) -> IO ())+ , pVkCmdNextSubpass2 :: FunPtr (Ptr CommandBuffer_T -> ("pSubpassBeginInfo" ::: Ptr SubpassBeginInfo) -> ("pSubpassEndInfo" ::: Ptr SubpassEndInfo) -> IO ())+ , pVkCmdEndRenderPass2 :: FunPtr (Ptr CommandBuffer_T -> ("pSubpassEndInfo" ::: Ptr SubpassEndInfo) -> IO ())+ , pVkGetSemaphoreCounterValue :: FunPtr (Ptr Device_T -> Semaphore -> ("pValue" ::: Ptr Word64) -> IO Result)+ , pVkWaitSemaphores :: FunPtr (Ptr Device_T -> ("pWaitInfo" ::: Ptr SemaphoreWaitInfo) -> ("timeout" ::: Word64) -> IO Result)+ , pVkSignalSemaphore :: FunPtr (Ptr Device_T -> ("pSignalInfo" ::: Ptr SemaphoreSignalInfo) -> IO Result)+ , pVkGetAndroidHardwareBufferPropertiesANDROID :: forall a . FunPtr (Ptr Device_T -> Ptr AHardwareBuffer -> ("pProperties" ::: Ptr (AndroidHardwareBufferPropertiesANDROID a)) -> IO Result)+ , pVkGetMemoryAndroidHardwareBufferANDROID :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr MemoryGetAndroidHardwareBufferInfoANDROID) -> ("pBuffer" ::: Ptr (Ptr AHardwareBuffer)) -> IO Result)+ , pVkCmdDrawIndirectCount :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("countBuffer" ::: Buffer) -> ("countBufferOffset" ::: DeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())+ , pVkCmdDrawIndexedIndirectCount :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("countBuffer" ::: Buffer) -> ("countBufferOffset" ::: DeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())+ , pVkCmdSetCheckpointNV :: FunPtr (Ptr CommandBuffer_T -> ("pCheckpointMarker" ::: Ptr ()) -> IO ())+ , pVkGetQueueCheckpointDataNV :: FunPtr (Ptr Queue_T -> ("pCheckpointDataCount" ::: Ptr Word32) -> ("pCheckpointData" ::: Ptr CheckpointDataNV) -> IO ())+ , pVkCmdBindTransformFeedbackBuffersEXT :: FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr Buffer) -> ("pOffsets" ::: Ptr DeviceSize) -> ("pSizes" ::: Ptr DeviceSize) -> IO ())+ , pVkCmdBeginTransformFeedbackEXT :: FunPtr (Ptr CommandBuffer_T -> ("firstCounterBuffer" ::: Word32) -> ("counterBufferCount" ::: Word32) -> ("pCounterBuffers" ::: Ptr Buffer) -> ("pCounterBufferOffsets" ::: Ptr DeviceSize) -> IO ())+ , pVkCmdEndTransformFeedbackEXT :: FunPtr (Ptr CommandBuffer_T -> ("firstCounterBuffer" ::: Word32) -> ("counterBufferCount" ::: Word32) -> ("pCounterBuffers" ::: Ptr Buffer) -> ("pCounterBufferOffsets" ::: Ptr DeviceSize) -> IO ())+ , pVkCmdBeginQueryIndexedEXT :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("query" ::: Word32) -> QueryControlFlags -> ("index" ::: Word32) -> IO ())+ , pVkCmdEndQueryIndexedEXT :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> ("query" ::: Word32) -> ("index" ::: Word32) -> IO ())+ , pVkCmdDrawIndirectByteCountEXT :: FunPtr (Ptr CommandBuffer_T -> ("instanceCount" ::: Word32) -> ("firstInstance" ::: Word32) -> ("counterBuffer" ::: Buffer) -> ("counterBufferOffset" ::: DeviceSize) -> ("counterOffset" ::: Word32) -> ("vertexStride" ::: Word32) -> IO ())+ , pVkCmdSetExclusiveScissorNV :: FunPtr (Ptr CommandBuffer_T -> ("firstExclusiveScissor" ::: Word32) -> ("exclusiveScissorCount" ::: Word32) -> ("pExclusiveScissors" ::: Ptr Rect2D) -> IO ())+ , pVkCmdBindShadingRateImageNV :: FunPtr (Ptr CommandBuffer_T -> ImageView -> ImageLayout -> IO ())+ , pVkCmdSetViewportShadingRatePaletteNV :: FunPtr (Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pShadingRatePalettes" ::: Ptr ShadingRatePaletteNV) -> IO ())+ , pVkCmdSetCoarseSampleOrderNV :: FunPtr (Ptr CommandBuffer_T -> CoarseSampleOrderTypeNV -> ("customSampleOrderCount" ::: Word32) -> ("pCustomSampleOrders" ::: Ptr CoarseSampleOrderCustomNV) -> IO ())+ , pVkCmdDrawMeshTasksNV :: FunPtr (Ptr CommandBuffer_T -> ("taskCount" ::: Word32) -> ("firstTask" ::: Word32) -> IO ())+ , pVkCmdDrawMeshTasksIndirectNV :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())+ , pVkCmdDrawMeshTasksIndirectCountNV :: FunPtr (Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("countBuffer" ::: Buffer) -> ("countBufferOffset" ::: DeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ())+ , pVkCompileDeferredNV :: FunPtr (Ptr Device_T -> Pipeline -> ("shader" ::: Word32) -> IO Result)+ , pVkCreateAccelerationStructureNV :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV) -> IO Result)+ , pVkDestroyAccelerationStructureNV :: FunPtr (Ptr Device_T -> AccelerationStructureNV -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())+ , pVkGetAccelerationStructureMemoryRequirementsNV :: forall a . FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR a)) -> IO ())+ , pVkBindAccelerationStructureMemoryNV :: FunPtr (Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr BindAccelerationStructureMemoryInfoNV) -> IO Result)+ , pVkCmdCopyAccelerationStructureNV :: FunPtr (Ptr CommandBuffer_T -> ("dst" ::: AccelerationStructureNV) -> ("src" ::: AccelerationStructureNV) -> CopyAccelerationStructureModeNV -> IO ())+ , pVkCmdWriteAccelerationStructuresPropertiesNV :: FunPtr (Ptr CommandBuffer_T -> ("accelerationStructureCount" ::: Word32) -> ("pAccelerationStructures" ::: Ptr AccelerationStructureNV) -> QueryType -> QueryPool -> ("firstQuery" ::: Word32) -> IO ())+ , pVkCmdBuildAccelerationStructureNV :: FunPtr (Ptr CommandBuffer_T -> ("pInfo" ::: Ptr AccelerationStructureInfoNV) -> ("instanceData" ::: Buffer) -> ("instanceOffset" ::: DeviceSize) -> ("update" ::: Bool32) -> ("dst" ::: AccelerationStructureNV) -> ("src" ::: AccelerationStructureNV) -> ("scratch" ::: Buffer) -> ("scratchOffset" ::: DeviceSize) -> IO ())+ , pVkCmdTraceRaysNV :: FunPtr (Ptr CommandBuffer_T -> ("raygenShaderBindingTableBuffer" ::: Buffer) -> ("raygenShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingTableBuffer" ::: Buffer) -> ("missShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingStride" ::: DeviceSize) -> ("hitShaderBindingTableBuffer" ::: Buffer) -> ("hitShaderBindingOffset" ::: DeviceSize) -> ("hitShaderBindingStride" ::: DeviceSize) -> ("callableShaderBindingTableBuffer" ::: Buffer) -> ("callableShaderBindingOffset" ::: DeviceSize) -> ("callableShaderBindingStride" ::: DeviceSize) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> IO ())+ , pVkGetRayTracingShaderGroupHandlesNV :: FunPtr (Ptr Device_T -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result)+ , pVkGetAccelerationStructureHandleNV :: FunPtr (Ptr Device_T -> AccelerationStructureNV -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result)+ , pVkCreateRayTracingPipelinesNV :: forall a . FunPtr (Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV a)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result)+ , pVkGetImageViewHandleNVX :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr ImageViewHandleInfoNVX) -> IO Word32)+ , pVkGetDeviceGroupSurfacePresentModes2EXT :: forall a . FunPtr (Ptr Device_T -> ("pSurfaceInfo" ::: Ptr (PhysicalDeviceSurfaceInfo2KHR a)) -> ("pModes" ::: Ptr DeviceGroupPresentModeFlagsKHR) -> IO Result)+ , pVkAcquireFullScreenExclusiveModeEXT :: FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result)+ , pVkReleaseFullScreenExclusiveModeEXT :: FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result)+ , pVkAcquireProfilingLockKHR :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr AcquireProfilingLockInfoKHR) -> IO Result)+ , pVkReleaseProfilingLockKHR :: FunPtr (Ptr Device_T -> IO ())+ , pVkGetImageDrmFormatModifierPropertiesEXT :: FunPtr (Ptr Device_T -> Image -> ("pProperties" ::: Ptr ImageDrmFormatModifierPropertiesEXT) -> IO Result)+ , pVkGetBufferOpaqueCaptureAddress :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr BufferDeviceAddressInfo) -> IO Word64)+ , pVkGetBufferDeviceAddress :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr BufferDeviceAddressInfo) -> IO DeviceAddress)+ , pVkInitializePerformanceApiINTEL :: FunPtr (Ptr Device_T -> ("pInitializeInfo" ::: Ptr InitializePerformanceApiInfoINTEL) -> IO Result)+ , pVkUninitializePerformanceApiINTEL :: FunPtr (Ptr Device_T -> IO ())+ , pVkCmdSetPerformanceMarkerINTEL :: FunPtr (Ptr CommandBuffer_T -> ("pMarkerInfo" ::: Ptr PerformanceMarkerInfoINTEL) -> IO Result)+ , pVkCmdSetPerformanceStreamMarkerINTEL :: FunPtr (Ptr CommandBuffer_T -> ("pMarkerInfo" ::: Ptr PerformanceStreamMarkerInfoINTEL) -> IO Result)+ , pVkCmdSetPerformanceOverrideINTEL :: FunPtr (Ptr CommandBuffer_T -> ("pOverrideInfo" ::: Ptr PerformanceOverrideInfoINTEL) -> IO Result)+ , pVkAcquirePerformanceConfigurationINTEL :: FunPtr (Ptr Device_T -> ("pAcquireInfo" ::: Ptr PerformanceConfigurationAcquireInfoINTEL) -> ("pConfiguration" ::: Ptr PerformanceConfigurationINTEL) -> IO Result)+ , pVkReleasePerformanceConfigurationINTEL :: FunPtr (Ptr Device_T -> PerformanceConfigurationINTEL -> IO Result)+ , pVkQueueSetPerformanceConfigurationINTEL :: FunPtr (Ptr Queue_T -> PerformanceConfigurationINTEL -> IO Result)+ , pVkGetPerformanceParameterINTEL :: FunPtr (Ptr Device_T -> PerformanceParameterTypeINTEL -> ("pValue" ::: Ptr PerformanceValueINTEL) -> IO Result)+ , pVkGetDeviceMemoryOpaqueCaptureAddress :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr DeviceMemoryOpaqueCaptureAddressInfo) -> IO Word64)+ , pVkGetPipelineExecutablePropertiesKHR :: FunPtr (Ptr Device_T -> ("pPipelineInfo" ::: Ptr PipelineInfoKHR) -> ("pExecutableCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr PipelineExecutablePropertiesKHR) -> IO Result)+ , pVkGetPipelineExecutableStatisticsKHR :: FunPtr (Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pStatisticCount" ::: Ptr Word32) -> ("pStatistics" ::: Ptr PipelineExecutableStatisticKHR) -> IO Result)+ , pVkGetPipelineExecutableInternalRepresentationsKHR :: FunPtr (Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pInternalRepresentationCount" ::: Ptr Word32) -> ("pInternalRepresentations" ::: Ptr PipelineExecutableInternalRepresentationKHR) -> IO Result)+ , pVkCmdSetLineStippleEXT :: FunPtr (Ptr CommandBuffer_T -> ("lineStippleFactor" ::: Word32) -> ("lineStipplePattern" ::: Word16) -> IO ())+ }++deriving instance Eq DeviceCmds+deriving instance Show DeviceCmds+instance Zero DeviceCmds where+ zero = DeviceCmds+ nullPtr 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+ 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 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 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 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 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 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)+ unsafe+#endif+ "dynamic" mkVkGetDeviceProcAddr+ :: FunPtr (Ptr Device_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction) -> Ptr Device_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction++initDeviceCmds :: InstanceCmds -> Ptr Device_T -> IO DeviceCmds+initDeviceCmds instanceCmds handle = do+ pGetDeviceProcAddr <- castFunPtr @_ @(Ptr Device_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction)+ <$> getInstanceProcAddr' (instanceCmdsHandle instanceCmds) (GHC.Ptr.Ptr "vkGetDeviceProcAddr"#)+ let getDeviceProcAddr' = mkVkGetDeviceProcAddr pGetDeviceProcAddr+ vkGetDeviceProcAddr <- getDeviceProcAddr' handle (Ptr "vkGetDeviceProcAddr"#)+ vkDestroyDevice <- getDeviceProcAddr' handle (Ptr "vkDestroyDevice"#)+ vkGetDeviceQueue <- getDeviceProcAddr' handle (Ptr "vkGetDeviceQueue"#)+ vkQueueSubmit <- getDeviceProcAddr' handle (Ptr "vkQueueSubmit"#)+ vkQueueWaitIdle <- getDeviceProcAddr' handle (Ptr "vkQueueWaitIdle"#)+ vkDeviceWaitIdle <- getDeviceProcAddr' handle (Ptr "vkDeviceWaitIdle"#)+ vkAllocateMemory <- getDeviceProcAddr' handle (Ptr "vkAllocateMemory"#)+ vkFreeMemory <- getDeviceProcAddr' handle (Ptr "vkFreeMemory"#)+ vkMapMemory <- getDeviceProcAddr' handle (Ptr "vkMapMemory"#)+ vkUnmapMemory <- getDeviceProcAddr' handle (Ptr "vkUnmapMemory"#)+ vkFlushMappedMemoryRanges <- getDeviceProcAddr' handle (Ptr "vkFlushMappedMemoryRanges"#)+ vkInvalidateMappedMemoryRanges <- getDeviceProcAddr' handle (Ptr "vkInvalidateMappedMemoryRanges"#)+ vkGetDeviceMemoryCommitment <- getDeviceProcAddr' handle (Ptr "vkGetDeviceMemoryCommitment"#)+ vkGetBufferMemoryRequirements <- getDeviceProcAddr' handle (Ptr "vkGetBufferMemoryRequirements"#)+ vkBindBufferMemory <- getDeviceProcAddr' handle (Ptr "vkBindBufferMemory"#)+ vkGetImageMemoryRequirements <- getDeviceProcAddr' handle (Ptr "vkGetImageMemoryRequirements"#)+ vkBindImageMemory <- getDeviceProcAddr' handle (Ptr "vkBindImageMemory"#)+ vkGetImageSparseMemoryRequirements <- getDeviceProcAddr' handle (Ptr "vkGetImageSparseMemoryRequirements"#)+ vkQueueBindSparse <- getDeviceProcAddr' handle (Ptr "vkQueueBindSparse"#)+ vkCreateFence <- getDeviceProcAddr' handle (Ptr "vkCreateFence"#)+ vkDestroyFence <- getDeviceProcAddr' handle (Ptr "vkDestroyFence"#)+ vkResetFences <- getDeviceProcAddr' handle (Ptr "vkResetFences"#)+ vkGetFenceStatus <- getDeviceProcAddr' handle (Ptr "vkGetFenceStatus"#)+ vkWaitForFences <- getDeviceProcAddr' handle (Ptr "vkWaitForFences"#)+ vkCreateSemaphore <- getDeviceProcAddr' handle (Ptr "vkCreateSemaphore"#)+ vkDestroySemaphore <- getDeviceProcAddr' handle (Ptr "vkDestroySemaphore"#)+ vkCreateEvent <- getDeviceProcAddr' handle (Ptr "vkCreateEvent"#)+ vkDestroyEvent <- getDeviceProcAddr' handle (Ptr "vkDestroyEvent"#)+ vkGetEventStatus <- getDeviceProcAddr' handle (Ptr "vkGetEventStatus"#)+ vkSetEvent <- getDeviceProcAddr' handle (Ptr "vkSetEvent"#)+ vkResetEvent <- getDeviceProcAddr' handle (Ptr "vkResetEvent"#)+ vkCreateQueryPool <- getDeviceProcAddr' handle (Ptr "vkCreateQueryPool"#)+ vkDestroyQueryPool <- getDeviceProcAddr' handle (Ptr "vkDestroyQueryPool"#)+ vkGetQueryPoolResults <- getDeviceProcAddr' handle (Ptr "vkGetQueryPoolResults"#)+ vkResetQueryPool <- getDeviceProcAddr' handle (Ptr "vkResetQueryPool"#)+ vkCreateBuffer <- getDeviceProcAddr' handle (Ptr "vkCreateBuffer"#)+ vkDestroyBuffer <- getDeviceProcAddr' handle (Ptr "vkDestroyBuffer"#)+ vkCreateBufferView <- getDeviceProcAddr' handle (Ptr "vkCreateBufferView"#)+ vkDestroyBufferView <- getDeviceProcAddr' handle (Ptr "vkDestroyBufferView"#)+ vkCreateImage <- getDeviceProcAddr' handle (Ptr "vkCreateImage"#)+ vkDestroyImage <- getDeviceProcAddr' handle (Ptr "vkDestroyImage"#)+ vkGetImageSubresourceLayout <- getDeviceProcAddr' handle (Ptr "vkGetImageSubresourceLayout"#)+ vkCreateImageView <- getDeviceProcAddr' handle (Ptr "vkCreateImageView"#)+ vkDestroyImageView <- getDeviceProcAddr' handle (Ptr "vkDestroyImageView"#)+ vkCreateShaderModule <- getDeviceProcAddr' handle (Ptr "vkCreateShaderModule"#)+ vkDestroyShaderModule <- getDeviceProcAddr' handle (Ptr "vkDestroyShaderModule"#)+ vkCreatePipelineCache <- getDeviceProcAddr' handle (Ptr "vkCreatePipelineCache"#)+ vkDestroyPipelineCache <- getDeviceProcAddr' handle (Ptr "vkDestroyPipelineCache"#)+ vkGetPipelineCacheData <- getDeviceProcAddr' handle (Ptr "vkGetPipelineCacheData"#)+ vkMergePipelineCaches <- getDeviceProcAddr' handle (Ptr "vkMergePipelineCaches"#)+ vkCreateGraphicsPipelines <- getDeviceProcAddr' handle (Ptr "vkCreateGraphicsPipelines"#)+ vkCreateComputePipelines <- getDeviceProcAddr' handle (Ptr "vkCreateComputePipelines"#)+ vkDestroyPipeline <- getDeviceProcAddr' handle (Ptr "vkDestroyPipeline"#)+ vkCreatePipelineLayout <- getDeviceProcAddr' handle (Ptr "vkCreatePipelineLayout"#)+ vkDestroyPipelineLayout <- getDeviceProcAddr' handle (Ptr "vkDestroyPipelineLayout"#)+ vkCreateSampler <- getDeviceProcAddr' handle (Ptr "vkCreateSampler"#)+ vkDestroySampler <- getDeviceProcAddr' handle (Ptr "vkDestroySampler"#)+ vkCreateDescriptorSetLayout <- getDeviceProcAddr' handle (Ptr "vkCreateDescriptorSetLayout"#)+ vkDestroyDescriptorSetLayout <- getDeviceProcAddr' handle (Ptr "vkDestroyDescriptorSetLayout"#)+ vkCreateDescriptorPool <- getDeviceProcAddr' handle (Ptr "vkCreateDescriptorPool"#)+ vkDestroyDescriptorPool <- getDeviceProcAddr' handle (Ptr "vkDestroyDescriptorPool"#)+ vkResetDescriptorPool <- getDeviceProcAddr' handle (Ptr "vkResetDescriptorPool"#)+ vkAllocateDescriptorSets <- getDeviceProcAddr' handle (Ptr "vkAllocateDescriptorSets"#)+ vkFreeDescriptorSets <- getDeviceProcAddr' handle (Ptr "vkFreeDescriptorSets"#)+ vkUpdateDescriptorSets <- getDeviceProcAddr' handle (Ptr "vkUpdateDescriptorSets"#)+ vkCreateFramebuffer <- getDeviceProcAddr' handle (Ptr "vkCreateFramebuffer"#)+ vkDestroyFramebuffer <- getDeviceProcAddr' handle (Ptr "vkDestroyFramebuffer"#)+ vkCreateRenderPass <- getDeviceProcAddr' handle (Ptr "vkCreateRenderPass"#)+ vkDestroyRenderPass <- getDeviceProcAddr' handle (Ptr "vkDestroyRenderPass"#)+ vkGetRenderAreaGranularity <- getDeviceProcAddr' handle (Ptr "vkGetRenderAreaGranularity"#)+ vkCreateCommandPool <- getDeviceProcAddr' handle (Ptr "vkCreateCommandPool"#)+ vkDestroyCommandPool <- getDeviceProcAddr' handle (Ptr "vkDestroyCommandPool"#)+ vkResetCommandPool <- getDeviceProcAddr' handle (Ptr "vkResetCommandPool"#)+ vkAllocateCommandBuffers <- getDeviceProcAddr' handle (Ptr "vkAllocateCommandBuffers"#)+ vkFreeCommandBuffers <- getDeviceProcAddr' handle (Ptr "vkFreeCommandBuffers"#)+ vkBeginCommandBuffer <- getDeviceProcAddr' handle (Ptr "vkBeginCommandBuffer"#)+ vkEndCommandBuffer <- getDeviceProcAddr' handle (Ptr "vkEndCommandBuffer"#)+ vkResetCommandBuffer <- getDeviceProcAddr' handle (Ptr "vkResetCommandBuffer"#)+ vkCmdBindPipeline <- getDeviceProcAddr' handle (Ptr "vkCmdBindPipeline"#)+ vkCmdSetViewport <- getDeviceProcAddr' handle (Ptr "vkCmdSetViewport"#)+ vkCmdSetScissor <- getDeviceProcAddr' handle (Ptr "vkCmdSetScissor"#)+ vkCmdSetLineWidth <- getDeviceProcAddr' handle (Ptr "vkCmdSetLineWidth"#)+ vkCmdSetDepthBias <- getDeviceProcAddr' handle (Ptr "vkCmdSetDepthBias"#)+ vkCmdSetBlendConstants <- getDeviceProcAddr' handle (Ptr "vkCmdSetBlendConstants"#)+ vkCmdSetDepthBounds <- getDeviceProcAddr' handle (Ptr "vkCmdSetDepthBounds"#)+ vkCmdSetStencilCompareMask <- getDeviceProcAddr' handle (Ptr "vkCmdSetStencilCompareMask"#)+ vkCmdSetStencilWriteMask <- getDeviceProcAddr' handle (Ptr "vkCmdSetStencilWriteMask"#)+ vkCmdSetStencilReference <- getDeviceProcAddr' handle (Ptr "vkCmdSetStencilReference"#)+ vkCmdBindDescriptorSets <- getDeviceProcAddr' handle (Ptr "vkCmdBindDescriptorSets"#)+ vkCmdBindIndexBuffer <- getDeviceProcAddr' handle (Ptr "vkCmdBindIndexBuffer"#)+ vkCmdBindVertexBuffers <- getDeviceProcAddr' handle (Ptr "vkCmdBindVertexBuffers"#)+ vkCmdDraw <- getDeviceProcAddr' handle (Ptr "vkCmdDraw"#)+ vkCmdDrawIndexed <- getDeviceProcAddr' handle (Ptr "vkCmdDrawIndexed"#)+ vkCmdDrawIndirect <- getDeviceProcAddr' handle (Ptr "vkCmdDrawIndirect"#)+ vkCmdDrawIndexedIndirect <- getDeviceProcAddr' handle (Ptr "vkCmdDrawIndexedIndirect"#)+ vkCmdDispatch <- getDeviceProcAddr' handle (Ptr "vkCmdDispatch"#)+ vkCmdDispatchIndirect <- getDeviceProcAddr' handle (Ptr "vkCmdDispatchIndirect"#)+ vkCmdCopyBuffer <- getDeviceProcAddr' handle (Ptr "vkCmdCopyBuffer"#)+ vkCmdCopyImage <- getDeviceProcAddr' handle (Ptr "vkCmdCopyImage"#)+ vkCmdBlitImage <- getDeviceProcAddr' handle (Ptr "vkCmdBlitImage"#)+ vkCmdCopyBufferToImage <- getDeviceProcAddr' handle (Ptr "vkCmdCopyBufferToImage"#)+ vkCmdCopyImageToBuffer <- getDeviceProcAddr' handle (Ptr "vkCmdCopyImageToBuffer"#)+ vkCmdUpdateBuffer <- getDeviceProcAddr' handle (Ptr "vkCmdUpdateBuffer"#)+ vkCmdFillBuffer <- getDeviceProcAddr' handle (Ptr "vkCmdFillBuffer"#)+ vkCmdClearColorImage <- getDeviceProcAddr' handle (Ptr "vkCmdClearColorImage"#)+ vkCmdClearDepthStencilImage <- getDeviceProcAddr' handle (Ptr "vkCmdClearDepthStencilImage"#)+ vkCmdClearAttachments <- getDeviceProcAddr' handle (Ptr "vkCmdClearAttachments"#)+ vkCmdResolveImage <- getDeviceProcAddr' handle (Ptr "vkCmdResolveImage"#)+ vkCmdSetEvent <- getDeviceProcAddr' handle (Ptr "vkCmdSetEvent"#)+ vkCmdResetEvent <- getDeviceProcAddr' handle (Ptr "vkCmdResetEvent"#)+ vkCmdWaitEvents <- getDeviceProcAddr' handle (Ptr "vkCmdWaitEvents"#)+ vkCmdPipelineBarrier <- getDeviceProcAddr' handle (Ptr "vkCmdPipelineBarrier"#)+ vkCmdBeginQuery <- getDeviceProcAddr' handle (Ptr "vkCmdBeginQuery"#)+ vkCmdEndQuery <- getDeviceProcAddr' handle (Ptr "vkCmdEndQuery"#)+ vkCmdBeginConditionalRenderingEXT <- getDeviceProcAddr' handle (Ptr "vkCmdBeginConditionalRenderingEXT"#)+ vkCmdEndConditionalRenderingEXT <- getDeviceProcAddr' handle (Ptr "vkCmdEndConditionalRenderingEXT"#)+ vkCmdResetQueryPool <- getDeviceProcAddr' handle (Ptr "vkCmdResetQueryPool"#)+ vkCmdWriteTimestamp <- getDeviceProcAddr' handle (Ptr "vkCmdWriteTimestamp"#)+ vkCmdCopyQueryPoolResults <- getDeviceProcAddr' handle (Ptr "vkCmdCopyQueryPoolResults"#)+ vkCmdPushConstants <- getDeviceProcAddr' handle (Ptr "vkCmdPushConstants"#)+ vkCmdBeginRenderPass <- getDeviceProcAddr' handle (Ptr "vkCmdBeginRenderPass"#)+ vkCmdNextSubpass <- getDeviceProcAddr' handle (Ptr "vkCmdNextSubpass"#)+ vkCmdEndRenderPass <- getDeviceProcAddr' handle (Ptr "vkCmdEndRenderPass"#)+ vkCmdExecuteCommands <- getDeviceProcAddr' handle (Ptr "vkCmdExecuteCommands"#)+ vkCreateSharedSwapchainsKHR <- getDeviceProcAddr' handle (Ptr "vkCreateSharedSwapchainsKHR"#)+ vkCreateSwapchainKHR <- getDeviceProcAddr' handle (Ptr "vkCreateSwapchainKHR"#)+ vkDestroySwapchainKHR <- getDeviceProcAddr' handle (Ptr "vkDestroySwapchainKHR"#)+ vkGetSwapchainImagesKHR <- getDeviceProcAddr' handle (Ptr "vkGetSwapchainImagesKHR"#)+ vkAcquireNextImageKHR <- getDeviceProcAddr' handle (Ptr "vkAcquireNextImageKHR"#)+ vkQueuePresentKHR <- getDeviceProcAddr' handle (Ptr "vkQueuePresentKHR"#)+ vkDebugMarkerSetObjectNameEXT <- getDeviceProcAddr' handle (Ptr "vkDebugMarkerSetObjectNameEXT"#)+ vkDebugMarkerSetObjectTagEXT <- getDeviceProcAddr' handle (Ptr "vkDebugMarkerSetObjectTagEXT"#)+ vkCmdDebugMarkerBeginEXT <- getDeviceProcAddr' handle (Ptr "vkCmdDebugMarkerBeginEXT"#)+ vkCmdDebugMarkerEndEXT <- getDeviceProcAddr' handle (Ptr "vkCmdDebugMarkerEndEXT"#)+ vkCmdDebugMarkerInsertEXT <- getDeviceProcAddr' handle (Ptr "vkCmdDebugMarkerInsertEXT"#)+ vkGetMemoryWin32HandleNV <- getDeviceProcAddr' handle (Ptr "vkGetMemoryWin32HandleNV"#)+ vkCmdProcessCommandsNVX <- getDeviceProcAddr' handle (Ptr "vkCmdProcessCommandsNVX"#)+ vkCmdReserveSpaceForCommandsNVX <- getDeviceProcAddr' handle (Ptr "vkCmdReserveSpaceForCommandsNVX"#)+ vkCreateIndirectCommandsLayoutNVX <- getDeviceProcAddr' handle (Ptr "vkCreateIndirectCommandsLayoutNVX"#)+ vkDestroyIndirectCommandsLayoutNVX <- getDeviceProcAddr' handle (Ptr "vkDestroyIndirectCommandsLayoutNVX"#)+ vkCreateObjectTableNVX <- getDeviceProcAddr' handle (Ptr "vkCreateObjectTableNVX"#)+ vkDestroyObjectTableNVX <- getDeviceProcAddr' handle (Ptr "vkDestroyObjectTableNVX"#)+ vkRegisterObjectsNVX <- getDeviceProcAddr' handle (Ptr "vkRegisterObjectsNVX"#)+ vkUnregisterObjectsNVX <- getDeviceProcAddr' handle (Ptr "vkUnregisterObjectsNVX"#)+ vkCmdPushDescriptorSetKHR <- getDeviceProcAddr' handle (Ptr "vkCmdPushDescriptorSetKHR"#)+ vkTrimCommandPool <- getDeviceProcAddr' handle (Ptr "vkTrimCommandPool"#)+ vkGetMemoryWin32HandleKHR <- getDeviceProcAddr' handle (Ptr "vkGetMemoryWin32HandleKHR"#)+ vkGetMemoryWin32HandlePropertiesKHR <- getDeviceProcAddr' handle (Ptr "vkGetMemoryWin32HandlePropertiesKHR"#)+ vkGetMemoryFdKHR <- getDeviceProcAddr' handle (Ptr "vkGetMemoryFdKHR"#)+ vkGetMemoryFdPropertiesKHR <- getDeviceProcAddr' handle (Ptr "vkGetMemoryFdPropertiesKHR"#)+ vkGetSemaphoreWin32HandleKHR <- getDeviceProcAddr' handle (Ptr "vkGetSemaphoreWin32HandleKHR"#)+ vkImportSemaphoreWin32HandleKHR <- getDeviceProcAddr' handle (Ptr "vkImportSemaphoreWin32HandleKHR"#)+ vkGetSemaphoreFdKHR <- getDeviceProcAddr' handle (Ptr "vkGetSemaphoreFdKHR"#)+ vkImportSemaphoreFdKHR <- getDeviceProcAddr' handle (Ptr "vkImportSemaphoreFdKHR"#)+ vkGetFenceWin32HandleKHR <- getDeviceProcAddr' handle (Ptr "vkGetFenceWin32HandleKHR"#)+ vkImportFenceWin32HandleKHR <- getDeviceProcAddr' handle (Ptr "vkImportFenceWin32HandleKHR"#)+ vkGetFenceFdKHR <- getDeviceProcAddr' handle (Ptr "vkGetFenceFdKHR"#)+ vkImportFenceFdKHR <- getDeviceProcAddr' handle (Ptr "vkImportFenceFdKHR"#)+ vkDisplayPowerControlEXT <- getDeviceProcAddr' handle (Ptr "vkDisplayPowerControlEXT"#)+ vkRegisterDeviceEventEXT <- getDeviceProcAddr' handle (Ptr "vkRegisterDeviceEventEXT"#)+ vkRegisterDisplayEventEXT <- getDeviceProcAddr' handle (Ptr "vkRegisterDisplayEventEXT"#)+ vkGetSwapchainCounterEXT <- getDeviceProcAddr' handle (Ptr "vkGetSwapchainCounterEXT"#)+ vkGetDeviceGroupPeerMemoryFeatures <- getDeviceProcAddr' handle (Ptr "vkGetDeviceGroupPeerMemoryFeatures"#)+ vkBindBufferMemory2 <- getDeviceProcAddr' handle (Ptr "vkBindBufferMemory2"#)+ vkBindImageMemory2 <- getDeviceProcAddr' handle (Ptr "vkBindImageMemory2"#)+ vkCmdSetDeviceMask <- getDeviceProcAddr' handle (Ptr "vkCmdSetDeviceMask"#)+ vkGetDeviceGroupPresentCapabilitiesKHR <- getDeviceProcAddr' handle (Ptr "vkGetDeviceGroupPresentCapabilitiesKHR"#)+ vkGetDeviceGroupSurfacePresentModesKHR <- getDeviceProcAddr' handle (Ptr "vkGetDeviceGroupSurfacePresentModesKHR"#)+ vkAcquireNextImage2KHR <- getDeviceProcAddr' handle (Ptr "vkAcquireNextImage2KHR"#)+ vkCmdDispatchBase <- getDeviceProcAddr' handle (Ptr "vkCmdDispatchBase"#)+ vkCreateDescriptorUpdateTemplate <- getDeviceProcAddr' handle (Ptr "vkCreateDescriptorUpdateTemplate"#)+ vkDestroyDescriptorUpdateTemplate <- getDeviceProcAddr' handle (Ptr "vkDestroyDescriptorUpdateTemplate"#)+ vkUpdateDescriptorSetWithTemplate <- getDeviceProcAddr' handle (Ptr "vkUpdateDescriptorSetWithTemplate"#)+ vkCmdPushDescriptorSetWithTemplateKHR <- getDeviceProcAddr' handle (Ptr "vkCmdPushDescriptorSetWithTemplateKHR"#)+ vkSetHdrMetadataEXT <- getDeviceProcAddr' handle (Ptr "vkSetHdrMetadataEXT"#)+ vkGetSwapchainStatusKHR <- getDeviceProcAddr' handle (Ptr "vkGetSwapchainStatusKHR"#)+ vkGetRefreshCycleDurationGOOGLE <- getDeviceProcAddr' handle (Ptr "vkGetRefreshCycleDurationGOOGLE"#)+ vkGetPastPresentationTimingGOOGLE <- getDeviceProcAddr' handle (Ptr "vkGetPastPresentationTimingGOOGLE"#)+ vkCmdSetViewportWScalingNV <- getDeviceProcAddr' handle (Ptr "vkCmdSetViewportWScalingNV"#)+ vkCmdSetDiscardRectangleEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetDiscardRectangleEXT"#)+ vkCmdSetSampleLocationsEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetSampleLocationsEXT"#)+ vkGetBufferMemoryRequirements2 <- getDeviceProcAddr' handle (Ptr "vkGetBufferMemoryRequirements2"#)+ vkGetImageMemoryRequirements2 <- getDeviceProcAddr' handle (Ptr "vkGetImageMemoryRequirements2"#)+ vkGetImageSparseMemoryRequirements2 <- getDeviceProcAddr' handle (Ptr "vkGetImageSparseMemoryRequirements2"#)+ vkCreateSamplerYcbcrConversion <- getDeviceProcAddr' handle (Ptr "vkCreateSamplerYcbcrConversion"#)+ vkDestroySamplerYcbcrConversion <- getDeviceProcAddr' handle (Ptr "vkDestroySamplerYcbcrConversion"#)+ vkGetDeviceQueue2 <- getDeviceProcAddr' handle (Ptr "vkGetDeviceQueue2"#)+ vkCreateValidationCacheEXT <- getDeviceProcAddr' handle (Ptr "vkCreateValidationCacheEXT"#)+ vkDestroyValidationCacheEXT <- getDeviceProcAddr' handle (Ptr "vkDestroyValidationCacheEXT"#)+ vkGetValidationCacheDataEXT <- getDeviceProcAddr' handle (Ptr "vkGetValidationCacheDataEXT"#)+ vkMergeValidationCachesEXT <- getDeviceProcAddr' handle (Ptr "vkMergeValidationCachesEXT"#)+ vkGetDescriptorSetLayoutSupport <- getDeviceProcAddr' handle (Ptr "vkGetDescriptorSetLayoutSupport"#)+ vkGetShaderInfoAMD <- getDeviceProcAddr' handle (Ptr "vkGetShaderInfoAMD"#)+ vkSetLocalDimmingAMD <- getDeviceProcAddr' handle (Ptr "vkSetLocalDimmingAMD"#)+ vkGetCalibratedTimestampsEXT <- getDeviceProcAddr' handle (Ptr "vkGetCalibratedTimestampsEXT"#)+ vkSetDebugUtilsObjectNameEXT <- getDeviceProcAddr' handle (Ptr "vkSetDebugUtilsObjectNameEXT"#)+ vkSetDebugUtilsObjectTagEXT <- getDeviceProcAddr' handle (Ptr "vkSetDebugUtilsObjectTagEXT"#)+ vkQueueBeginDebugUtilsLabelEXT <- getDeviceProcAddr' handle (Ptr "vkQueueBeginDebugUtilsLabelEXT"#)+ vkQueueEndDebugUtilsLabelEXT <- getDeviceProcAddr' handle (Ptr "vkQueueEndDebugUtilsLabelEXT"#)+ vkQueueInsertDebugUtilsLabelEXT <- getDeviceProcAddr' handle (Ptr "vkQueueInsertDebugUtilsLabelEXT"#)+ vkCmdBeginDebugUtilsLabelEXT <- getDeviceProcAddr' handle (Ptr "vkCmdBeginDebugUtilsLabelEXT"#)+ vkCmdEndDebugUtilsLabelEXT <- getDeviceProcAddr' handle (Ptr "vkCmdEndDebugUtilsLabelEXT"#)+ vkCmdInsertDebugUtilsLabelEXT <- getDeviceProcAddr' handle (Ptr "vkCmdInsertDebugUtilsLabelEXT"#)+ vkGetMemoryHostPointerPropertiesEXT <- getDeviceProcAddr' handle (Ptr "vkGetMemoryHostPointerPropertiesEXT"#)+ vkCmdWriteBufferMarkerAMD <- getDeviceProcAddr' handle (Ptr "vkCmdWriteBufferMarkerAMD"#)+ vkCreateRenderPass2 <- getDeviceProcAddr' handle (Ptr "vkCreateRenderPass2"#)+ vkCmdBeginRenderPass2 <- getDeviceProcAddr' handle (Ptr "vkCmdBeginRenderPass2"#)+ vkCmdNextSubpass2 <- getDeviceProcAddr' handle (Ptr "vkCmdNextSubpass2"#)+ vkCmdEndRenderPass2 <- getDeviceProcAddr' handle (Ptr "vkCmdEndRenderPass2"#)+ vkGetSemaphoreCounterValue <- getDeviceProcAddr' handle (Ptr "vkGetSemaphoreCounterValue"#)+ vkWaitSemaphores <- getDeviceProcAddr' handle (Ptr "vkWaitSemaphores"#)+ vkSignalSemaphore <- getDeviceProcAddr' handle (Ptr "vkSignalSemaphore"#)+ vkGetAndroidHardwareBufferPropertiesANDROID <- getDeviceProcAddr' handle (Ptr "vkGetAndroidHardwareBufferPropertiesANDROID"#)+ vkGetMemoryAndroidHardwareBufferANDROID <- getDeviceProcAddr' handle (Ptr "vkGetMemoryAndroidHardwareBufferANDROID"#)+ vkCmdDrawIndirectCount <- getDeviceProcAddr' handle (Ptr "vkCmdDrawIndirectCount"#)+ vkCmdDrawIndexedIndirectCount <- getDeviceProcAddr' handle (Ptr "vkCmdDrawIndexedIndirectCount"#)+ vkCmdSetCheckpointNV <- getDeviceProcAddr' handle (Ptr "vkCmdSetCheckpointNV"#)+ vkGetQueueCheckpointDataNV <- getDeviceProcAddr' handle (Ptr "vkGetQueueCheckpointDataNV"#)+ vkCmdBindTransformFeedbackBuffersEXT <- getDeviceProcAddr' handle (Ptr "vkCmdBindTransformFeedbackBuffersEXT"#)+ vkCmdBeginTransformFeedbackEXT <- getDeviceProcAddr' handle (Ptr "vkCmdBeginTransformFeedbackEXT"#)+ vkCmdEndTransformFeedbackEXT <- getDeviceProcAddr' handle (Ptr "vkCmdEndTransformFeedbackEXT"#)+ vkCmdBeginQueryIndexedEXT <- getDeviceProcAddr' handle (Ptr "vkCmdBeginQueryIndexedEXT"#)+ vkCmdEndQueryIndexedEXT <- getDeviceProcAddr' handle (Ptr "vkCmdEndQueryIndexedEXT"#)+ vkCmdDrawIndirectByteCountEXT <- getDeviceProcAddr' handle (Ptr "vkCmdDrawIndirectByteCountEXT"#)+ vkCmdSetExclusiveScissorNV <- getDeviceProcAddr' handle (Ptr "vkCmdSetExclusiveScissorNV"#)+ vkCmdBindShadingRateImageNV <- getDeviceProcAddr' handle (Ptr "vkCmdBindShadingRateImageNV"#)+ vkCmdSetViewportShadingRatePaletteNV <- getDeviceProcAddr' handle (Ptr "vkCmdSetViewportShadingRatePaletteNV"#)+ vkCmdSetCoarseSampleOrderNV <- getDeviceProcAddr' handle (Ptr "vkCmdSetCoarseSampleOrderNV"#)+ vkCmdDrawMeshTasksNV <- getDeviceProcAddr' handle (Ptr "vkCmdDrawMeshTasksNV"#)+ vkCmdDrawMeshTasksIndirectNV <- getDeviceProcAddr' handle (Ptr "vkCmdDrawMeshTasksIndirectNV"#)+ vkCmdDrawMeshTasksIndirectCountNV <- getDeviceProcAddr' handle (Ptr "vkCmdDrawMeshTasksIndirectCountNV"#)+ vkCompileDeferredNV <- getDeviceProcAddr' handle (Ptr "vkCompileDeferredNV"#)+ vkCreateAccelerationStructureNV <- getDeviceProcAddr' handle (Ptr "vkCreateAccelerationStructureNV"#)+ vkDestroyAccelerationStructureNV <- getDeviceProcAddr' handle (Ptr "vkDestroyAccelerationStructureNV"#)+ vkGetAccelerationStructureMemoryRequirementsNV <- getDeviceProcAddr' handle (Ptr "vkGetAccelerationStructureMemoryRequirementsNV"#)+ vkBindAccelerationStructureMemoryNV <- getDeviceProcAddr' handle (Ptr "vkBindAccelerationStructureMemoryNV"#)+ vkCmdCopyAccelerationStructureNV <- getDeviceProcAddr' handle (Ptr "vkCmdCopyAccelerationStructureNV"#)+ vkCmdWriteAccelerationStructuresPropertiesNV <- getDeviceProcAddr' handle (Ptr "vkCmdWriteAccelerationStructuresPropertiesNV"#)+ vkCmdBuildAccelerationStructureNV <- getDeviceProcAddr' handle (Ptr "vkCmdBuildAccelerationStructureNV"#)+ vkCmdTraceRaysNV <- getDeviceProcAddr' handle (Ptr "vkCmdTraceRaysNV"#)+ vkGetRayTracingShaderGroupHandlesNV <- getDeviceProcAddr' handle (Ptr "vkGetRayTracingShaderGroupHandlesNV"#)+ vkGetAccelerationStructureHandleNV <- getDeviceProcAddr' handle (Ptr "vkGetAccelerationStructureHandleNV"#)+ vkCreateRayTracingPipelinesNV <- getDeviceProcAddr' handle (Ptr "vkCreateRayTracingPipelinesNV"#)+ vkGetImageViewHandleNVX <- getDeviceProcAddr' handle (Ptr "vkGetImageViewHandleNVX"#)+ vkGetDeviceGroupSurfacePresentModes2EXT <- getDeviceProcAddr' handle (Ptr "vkGetDeviceGroupSurfacePresentModes2EXT"#)+ vkAcquireFullScreenExclusiveModeEXT <- getDeviceProcAddr' handle (Ptr "vkAcquireFullScreenExclusiveModeEXT"#)+ vkReleaseFullScreenExclusiveModeEXT <- getDeviceProcAddr' handle (Ptr "vkReleaseFullScreenExclusiveModeEXT"#)+ vkAcquireProfilingLockKHR <- getDeviceProcAddr' handle (Ptr "vkAcquireProfilingLockKHR"#)+ vkReleaseProfilingLockKHR <- getDeviceProcAddr' handle (Ptr "vkReleaseProfilingLockKHR"#)+ vkGetImageDrmFormatModifierPropertiesEXT <- getDeviceProcAddr' handle (Ptr "vkGetImageDrmFormatModifierPropertiesEXT"#)+ vkGetBufferOpaqueCaptureAddress <- getDeviceProcAddr' handle (Ptr "vkGetBufferOpaqueCaptureAddress"#)+ vkGetBufferDeviceAddress <- getDeviceProcAddr' handle (Ptr "vkGetBufferDeviceAddress"#)+ vkInitializePerformanceApiINTEL <- getDeviceProcAddr' handle (Ptr "vkInitializePerformanceApiINTEL"#)+ vkUninitializePerformanceApiINTEL <- getDeviceProcAddr' handle (Ptr "vkUninitializePerformanceApiINTEL"#)+ vkCmdSetPerformanceMarkerINTEL <- getDeviceProcAddr' handle (Ptr "vkCmdSetPerformanceMarkerINTEL"#)+ vkCmdSetPerformanceStreamMarkerINTEL <- getDeviceProcAddr' handle (Ptr "vkCmdSetPerformanceStreamMarkerINTEL"#)+ vkCmdSetPerformanceOverrideINTEL <- getDeviceProcAddr' handle (Ptr "vkCmdSetPerformanceOverrideINTEL"#)+ vkAcquirePerformanceConfigurationINTEL <- getDeviceProcAddr' handle (Ptr "vkAcquirePerformanceConfigurationINTEL"#)+ vkReleasePerformanceConfigurationINTEL <- getDeviceProcAddr' handle (Ptr "vkReleasePerformanceConfigurationINTEL"#)+ vkQueueSetPerformanceConfigurationINTEL <- getDeviceProcAddr' handle (Ptr "vkQueueSetPerformanceConfigurationINTEL"#)+ vkGetPerformanceParameterINTEL <- getDeviceProcAddr' handle (Ptr "vkGetPerformanceParameterINTEL"#)+ vkGetDeviceMemoryOpaqueCaptureAddress <- getDeviceProcAddr' handle (Ptr "vkGetDeviceMemoryOpaqueCaptureAddress"#)+ vkGetPipelineExecutablePropertiesKHR <- getDeviceProcAddr' handle (Ptr "vkGetPipelineExecutablePropertiesKHR"#)+ vkGetPipelineExecutableStatisticsKHR <- getDeviceProcAddr' handle (Ptr "vkGetPipelineExecutableStatisticsKHR"#)+ vkGetPipelineExecutableInternalRepresentationsKHR <- getDeviceProcAddr' handle (Ptr "vkGetPipelineExecutableInternalRepresentationsKHR"#)+ vkCmdSetLineStippleEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetLineStippleEXT"#)+ pure $ DeviceCmds handle+ (castFunPtr @_ @(Ptr Device_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction) vkGetDeviceProcAddr)+ (castFunPtr @_ @(Ptr Device_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDevice)+ (castFunPtr @_ @(Ptr Device_T -> ("queueFamilyIndex" ::: Word32) -> ("queueIndex" ::: Word32) -> ("pQueue" ::: Ptr (Ptr Queue_T)) -> IO ()) vkGetDeviceQueue)+ (castFunPtr @_ @(Ptr Queue_T -> ("submitCount" ::: Word32) -> ("pSubmits" ::: Ptr (SubmitInfo _)) -> Fence -> IO Result) vkQueueSubmit)+ (castFunPtr @_ @(Ptr Queue_T -> IO Result) vkQueueWaitIdle)+ (castFunPtr @_ @(Ptr Device_T -> IO Result) vkDeviceWaitIdle)+ (castFunPtr @_ @(Ptr Device_T -> ("pAllocateInfo" ::: Ptr (MemoryAllocateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pMemory" ::: Ptr DeviceMemory) -> IO Result) vkAllocateMemory)+ (castFunPtr @_ @(Ptr Device_T -> DeviceMemory -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkFreeMemory)+ (castFunPtr @_ @(Ptr Device_T -> DeviceMemory -> ("offset" ::: DeviceSize) -> DeviceSize -> MemoryMapFlags -> ("ppData" ::: Ptr (Ptr ())) -> IO Result) vkMapMemory)+ (castFunPtr @_ @(Ptr Device_T -> DeviceMemory -> IO ()) vkUnmapMemory)+ (castFunPtr @_ @(Ptr Device_T -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr MappedMemoryRange) -> IO Result) vkFlushMappedMemoryRanges)+ (castFunPtr @_ @(Ptr Device_T -> ("memoryRangeCount" ::: Word32) -> ("pMemoryRanges" ::: Ptr MappedMemoryRange) -> IO Result) vkInvalidateMappedMemoryRanges)+ (castFunPtr @_ @(Ptr Device_T -> DeviceMemory -> ("pCommittedMemoryInBytes" ::: Ptr DeviceSize) -> IO ()) vkGetDeviceMemoryCommitment)+ (castFunPtr @_ @(Ptr Device_T -> Buffer -> ("pMemoryRequirements" ::: Ptr MemoryRequirements) -> IO ()) vkGetBufferMemoryRequirements)+ (castFunPtr @_ @(Ptr Device_T -> Buffer -> DeviceMemory -> ("memoryOffset" ::: DeviceSize) -> IO Result) vkBindBufferMemory)+ (castFunPtr @_ @(Ptr Device_T -> Image -> ("pMemoryRequirements" ::: Ptr MemoryRequirements) -> IO ()) vkGetImageMemoryRequirements)+ (castFunPtr @_ @(Ptr Device_T -> Image -> DeviceMemory -> ("memoryOffset" ::: DeviceSize) -> IO Result) vkBindImageMemory)+ (castFunPtr @_ @(Ptr Device_T -> Image -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements) -> IO ()) vkGetImageSparseMemoryRequirements)+ (castFunPtr @_ @(Ptr Queue_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfo" ::: Ptr (BindSparseInfo _)) -> Fence -> IO Result) vkQueueBindSparse)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (FenceCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFence" ::: Ptr Fence) -> IO Result) vkCreateFence)+ (castFunPtr @_ @(Ptr Device_T -> Fence -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyFence)+ (castFunPtr @_ @(Ptr Device_T -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr Fence) -> IO Result) vkResetFences)+ (castFunPtr @_ @(Ptr Device_T -> Fence -> IO Result) vkGetFenceStatus)+ (castFunPtr @_ @(Ptr Device_T -> ("fenceCount" ::: Word32) -> ("pFences" ::: Ptr Fence) -> ("waitAll" ::: Bool32) -> ("timeout" ::: Word64) -> IO Result) vkWaitForFences)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SemaphoreCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSemaphore" ::: Ptr Semaphore) -> IO Result) vkCreateSemaphore)+ (castFunPtr @_ @(Ptr Device_T -> Semaphore -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroySemaphore)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr EventCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pEvent" ::: Ptr Event) -> IO Result) vkCreateEvent)+ (castFunPtr @_ @(Ptr Device_T -> Event -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyEvent)+ (castFunPtr @_ @(Ptr Device_T -> Event -> IO Result) vkGetEventStatus)+ (castFunPtr @_ @(Ptr Device_T -> Event -> IO Result) vkSetEvent)+ (castFunPtr @_ @(Ptr Device_T -> Event -> IO Result) vkResetEvent)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (QueryPoolCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pQueryPool" ::: Ptr QueryPool) -> IO Result) vkCreateQueryPool)+ (castFunPtr @_ @(Ptr Device_T -> QueryPool -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyQueryPool)+ (castFunPtr @_ @(Ptr Device_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> ("stride" ::: DeviceSize) -> QueryResultFlags -> IO Result) vkGetQueryPoolResults)+ (castFunPtr @_ @(Ptr Device_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ()) vkResetQueryPool)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (BufferCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pBuffer" ::: Ptr Buffer) -> IO Result) vkCreateBuffer)+ (castFunPtr @_ @(Ptr Device_T -> Buffer -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyBuffer)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr BufferViewCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pView" ::: Ptr BufferView) -> IO Result) vkCreateBufferView)+ (castFunPtr @_ @(Ptr Device_T -> BufferView -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyBufferView)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (ImageCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pImage" ::: Ptr Image) -> IO Result) vkCreateImage)+ (castFunPtr @_ @(Ptr Device_T -> Image -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyImage)+ (castFunPtr @_ @(Ptr Device_T -> Image -> ("pSubresource" ::: Ptr ImageSubresource) -> ("pLayout" ::: Ptr SubresourceLayout) -> IO ()) vkGetImageSubresourceLayout)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (ImageViewCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pView" ::: Ptr ImageView) -> IO Result) vkCreateImageView)+ (castFunPtr @_ @(Ptr Device_T -> ImageView -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyImageView)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (ShaderModuleCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pShaderModule" ::: Ptr ShaderModule) -> IO Result) vkCreateShaderModule)+ (castFunPtr @_ @(Ptr Device_T -> ShaderModule -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyShaderModule)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr PipelineCacheCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelineCache" ::: Ptr PipelineCache) -> IO Result) vkCreatePipelineCache)+ (castFunPtr @_ @(Ptr Device_T -> PipelineCache -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyPipelineCache)+ (castFunPtr @_ @(Ptr Device_T -> PipelineCache -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO Result) vkGetPipelineCacheData)+ (castFunPtr @_ @(Ptr Device_T -> ("dstCache" ::: PipelineCache) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr PipelineCache) -> IO Result) vkMergePipelineCaches)+ (castFunPtr @_ @(Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (GraphicsPipelineCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result) vkCreateGraphicsPipelines)+ (castFunPtr @_ @(Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (ComputePipelineCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result) vkCreateComputePipelines)+ (castFunPtr @_ @(Ptr Device_T -> Pipeline -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyPipeline)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr PipelineLayoutCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelineLayout" ::: Ptr PipelineLayout) -> IO Result) vkCreatePipelineLayout)+ (castFunPtr @_ @(Ptr Device_T -> PipelineLayout -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyPipelineLayout)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SamplerCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSampler" ::: Ptr Sampler) -> IO Result) vkCreateSampler)+ (castFunPtr @_ @(Ptr Device_T -> Sampler -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroySampler)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (DescriptorSetLayoutCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSetLayout" ::: Ptr DescriptorSetLayout) -> IO Result) vkCreateDescriptorSetLayout)+ (castFunPtr @_ @(Ptr Device_T -> DescriptorSetLayout -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDescriptorSetLayout)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (DescriptorPoolCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pDescriptorPool" ::: Ptr DescriptorPool) -> IO Result) vkCreateDescriptorPool)+ (castFunPtr @_ @(Ptr Device_T -> DescriptorPool -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDescriptorPool)+ (castFunPtr @_ @(Ptr Device_T -> DescriptorPool -> DescriptorPoolResetFlags -> IO Result) vkResetDescriptorPool)+ (castFunPtr @_ @(Ptr Device_T -> ("pAllocateInfo" ::: Ptr (DescriptorSetAllocateInfo _)) -> ("pDescriptorSets" ::: Ptr DescriptorSet) -> IO Result) vkAllocateDescriptorSets)+ (castFunPtr @_ @(Ptr Device_T -> DescriptorPool -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr DescriptorSet) -> IO Result) vkFreeDescriptorSets)+ (castFunPtr @_ @(Ptr Device_T -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr (WriteDescriptorSet _)) -> ("descriptorCopyCount" ::: Word32) -> ("pDescriptorCopies" ::: Ptr CopyDescriptorSet) -> IO ()) vkUpdateDescriptorSets)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (FramebufferCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFramebuffer" ::: Ptr Framebuffer) -> IO Result) vkCreateFramebuffer)+ (castFunPtr @_ @(Ptr Device_T -> Framebuffer -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyFramebuffer)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (RenderPassCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pRenderPass" ::: Ptr RenderPass) -> IO Result) vkCreateRenderPass)+ (castFunPtr @_ @(Ptr Device_T -> RenderPass -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyRenderPass)+ (castFunPtr @_ @(Ptr Device_T -> RenderPass -> ("pGranularity" ::: Ptr Extent2D) -> IO ()) vkGetRenderAreaGranularity)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr CommandPoolCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pCommandPool" ::: Ptr CommandPool) -> IO Result) vkCreateCommandPool)+ (castFunPtr @_ @(Ptr Device_T -> CommandPool -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyCommandPool)+ (castFunPtr @_ @(Ptr Device_T -> CommandPool -> CommandPoolResetFlags -> IO Result) vkResetCommandPool)+ (castFunPtr @_ @(Ptr Device_T -> ("pAllocateInfo" ::: Ptr CommandBufferAllocateInfo) -> ("pCommandBuffers" ::: Ptr (Ptr CommandBuffer_T)) -> IO Result) vkAllocateCommandBuffers)+ (castFunPtr @_ @(Ptr Device_T -> CommandPool -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr (Ptr CommandBuffer_T)) -> IO ()) vkFreeCommandBuffers)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pBeginInfo" ::: Ptr (CommandBufferBeginInfo _)) -> IO Result) vkBeginCommandBuffer)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> IO Result) vkEndCommandBuffer)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> CommandBufferResetFlags -> IO Result) vkResetCommandBuffer)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineBindPoint -> Pipeline -> IO ()) vkCmdBindPipeline)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr Viewport) -> IO ()) vkCmdSetViewport)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstScissor" ::: Word32) -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr Rect2D) -> IO ()) vkCmdSetScissor)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("lineWidth" ::: CFloat) -> IO ()) vkCmdSetLineWidth)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("depthBiasConstantFactor" ::: CFloat) -> ("depthBiasClamp" ::: CFloat) -> ("depthBiasSlopeFactor" ::: CFloat) -> IO ()) vkCmdSetDepthBias)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("blendConstants" ::: Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat)) -> IO ()) vkCmdSetBlendConstants)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("minDepthBounds" ::: CFloat) -> ("maxDepthBounds" ::: CFloat) -> IO ()) vkCmdSetDepthBounds)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("compareMask" ::: Word32) -> IO ()) vkCmdSetStencilCompareMask)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("writeMask" ::: Word32) -> IO ()) vkCmdSetStencilWriteMask)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("reference" ::: Word32) -> IO ()) vkCmdSetStencilReference)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("firstSet" ::: Word32) -> ("descriptorSetCount" ::: Word32) -> ("pDescriptorSets" ::: Ptr DescriptorSet) -> ("dynamicOffsetCount" ::: Word32) -> ("pDynamicOffsets" ::: Ptr Word32) -> IO ()) vkCmdBindDescriptorSets)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IndexType -> IO ()) vkCmdBindIndexBuffer)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr Buffer) -> ("pOffsets" ::: Ptr DeviceSize) -> IO ()) vkCmdBindVertexBuffers)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("vertexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstVertex" ::: Word32) -> ("firstInstance" ::: Word32) -> IO ()) vkCmdDraw)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("indexCount" ::: Word32) -> ("instanceCount" ::: Word32) -> ("firstIndex" ::: Word32) -> ("vertexOffset" ::: Int32) -> ("firstInstance" ::: Word32) -> IO ()) vkCmdDrawIndexed)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) vkCmdDrawIndirect)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) vkCmdDrawIndexedIndirect)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()) vkCmdDispatch)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> IO ()) vkCmdDispatchIndirect)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcBuffer" ::: Buffer) -> ("dstBuffer" ::: Buffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferCopy) -> IO ()) vkCmdCopyBuffer)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr ImageCopy) -> IO ()) vkCmdCopyImage)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr ImageBlit) -> Filter -> IO ()) vkCmdBlitImage)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcBuffer" ::: Buffer) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferImageCopy) -> IO ()) vkCmdCopyBufferToImage)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstBuffer" ::: Buffer) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr BufferImageCopy) -> IO ()) vkCmdCopyImageToBuffer)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("dataSize" ::: DeviceSize) -> ("pData" ::: Ptr ()) -> IO ()) vkCmdUpdateBuffer)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> DeviceSize -> ("data" ::: Word32) -> IO ()) vkCmdFillBuffer)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> Image -> ImageLayout -> ("pColor" ::: Ptr ClearColorValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr ImageSubresourceRange) -> IO ()) vkCmdClearColorImage)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> Image -> ImageLayout -> ("pDepthStencil" ::: Ptr ClearDepthStencilValue) -> ("rangeCount" ::: Word32) -> ("pRanges" ::: Ptr ImageSubresourceRange) -> IO ()) vkCmdClearDepthStencilImage)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("attachmentCount" ::: Word32) -> ("pAttachments" ::: Ptr ClearAttachment) -> ("rectCount" ::: Word32) -> ("pRects" ::: Ptr ClearRect) -> IO ()) vkCmdClearAttachments)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcImage" ::: Image) -> ("srcImageLayout" ::: ImageLayout) -> ("dstImage" ::: Image) -> ("dstImageLayout" ::: ImageLayout) -> ("regionCount" ::: Word32) -> ("pRegions" ::: Ptr ImageResolve) -> IO ()) vkCmdResolveImage)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()) vkCmdSetEvent)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags) -> IO ()) vkCmdResetEvent)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr Event) -> ("srcStageMask" ::: PipelineStageFlags) -> ("dstStageMask" ::: PipelineStageFlags) -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr MemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr BufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr (ImageMemoryBarrier _)) -> IO ()) vkCmdWaitEvents)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("srcStageMask" ::: PipelineStageFlags) -> ("dstStageMask" ::: PipelineStageFlags) -> DependencyFlags -> ("memoryBarrierCount" ::: Word32) -> ("pMemoryBarriers" ::: Ptr MemoryBarrier) -> ("bufferMemoryBarrierCount" ::: Word32) -> ("pBufferMemoryBarriers" ::: Ptr BufferMemoryBarrier) -> ("imageMemoryBarrierCount" ::: Word32) -> ("pImageMemoryBarriers" ::: Ptr (ImageMemoryBarrier _)) -> IO ()) vkCmdPipelineBarrier)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> QueryPool -> ("query" ::: Word32) -> QueryControlFlags -> IO ()) vkCmdBeginQuery)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> QueryPool -> ("query" ::: Word32) -> IO ()) vkCmdEndQuery)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pConditionalRenderingBegin" ::: Ptr ConditionalRenderingBeginInfoEXT) -> IO ()) vkCmdBeginConditionalRenderingEXT)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> IO ()) vkCmdEndConditionalRenderingEXT)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> IO ()) vkCmdResetQueryPool)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineStageFlagBits -> QueryPool -> ("query" ::: Word32) -> IO ()) vkCmdWriteTimestamp)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> QueryPool -> ("firstQuery" ::: Word32) -> ("queryCount" ::: Word32) -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("stride" ::: DeviceSize) -> QueryResultFlags -> IO ()) vkCmdCopyQueryPoolResults)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> ("offset" ::: Word32) -> ("size" ::: Word32) -> ("pValues" ::: Ptr ()) -> IO ()) vkCmdPushConstants)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pRenderPassBegin" ::: Ptr (RenderPassBeginInfo _)) -> SubpassContents -> IO ()) vkCmdBeginRenderPass)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> SubpassContents -> IO ()) vkCmdNextSubpass)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> IO ()) vkCmdEndRenderPass)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("commandBufferCount" ::: Word32) -> ("pCommandBuffers" ::: Ptr (Ptr CommandBuffer_T)) -> IO ()) vkCmdExecuteCommands)+ (castFunPtr @_ @(Ptr Device_T -> ("swapchainCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (SwapchainCreateInfoKHR _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSwapchains" ::: Ptr SwapchainKHR) -> IO Result) vkCreateSharedSwapchainsKHR)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SwapchainCreateInfoKHR _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSwapchain" ::: Ptr SwapchainKHR) -> IO Result) vkCreateSwapchainKHR)+ (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroySwapchainKHR)+ (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("pSwapchainImageCount" ::: Ptr Word32) -> ("pSwapchainImages" ::: Ptr Image) -> IO Result) vkGetSwapchainImagesKHR)+ (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("timeout" ::: Word64) -> Semaphore -> Fence -> ("pImageIndex" ::: Ptr Word32) -> IO Result) vkAcquireNextImageKHR)+ (castFunPtr @_ @(Ptr Queue_T -> ("pPresentInfo" ::: Ptr (PresentInfoKHR _)) -> IO Result) vkQueuePresentKHR)+ (castFunPtr @_ @(Ptr Device_T -> ("pNameInfo" ::: Ptr DebugMarkerObjectNameInfoEXT) -> IO Result) vkDebugMarkerSetObjectNameEXT)+ (castFunPtr @_ @(Ptr Device_T -> ("pTagInfo" ::: Ptr DebugMarkerObjectTagInfoEXT) -> IO Result) vkDebugMarkerSetObjectTagEXT)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pMarkerInfo" ::: Ptr DebugMarkerMarkerInfoEXT) -> IO ()) vkCmdDebugMarkerBeginEXT)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> IO ()) vkCmdDebugMarkerEndEXT)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pMarkerInfo" ::: Ptr DebugMarkerMarkerInfoEXT) -> IO ()) vkCmdDebugMarkerInsertEXT)+ (castFunPtr @_ @(Ptr Device_T -> DeviceMemory -> ExternalMemoryHandleTypeFlagsNV -> ("pHandle" ::: Ptr HANDLE) -> IO Result) vkGetMemoryWin32HandleNV)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pProcessCommandsInfo" ::: Ptr CmdProcessCommandsInfoNVX) -> IO ()) vkCmdProcessCommandsNVX)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pReserveSpaceInfo" ::: Ptr CmdReserveSpaceForCommandsInfoNVX) -> IO ()) vkCmdReserveSpaceForCommandsNVX)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr IndirectCommandsLayoutCreateInfoNVX) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pIndirectCommandsLayout" ::: Ptr IndirectCommandsLayoutNVX) -> IO Result) vkCreateIndirectCommandsLayoutNVX)+ (castFunPtr @_ @(Ptr Device_T -> IndirectCommandsLayoutNVX -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyIndirectCommandsLayoutNVX)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr ObjectTableCreateInfoNVX) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pObjectTable" ::: Ptr ObjectTableNVX) -> IO Result) vkCreateObjectTableNVX)+ (castFunPtr @_ @(Ptr Device_T -> ObjectTableNVX -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyObjectTableNVX)+ (castFunPtr @_ @(Ptr Device_T -> ObjectTableNVX -> ("objectCount" ::: Word32) -> ("ppObjectTableEntries" ::: Ptr (Ptr ObjectTableEntryNVX)) -> ("pObjectIndices" ::: Ptr Word32) -> IO Result) vkRegisterObjectsNVX)+ (castFunPtr @_ @(Ptr Device_T -> ObjectTableNVX -> ("objectCount" ::: Word32) -> ("pObjectEntryTypes" ::: Ptr ObjectEntryTypeNVX) -> ("pObjectIndices" ::: Ptr Word32) -> IO Result) vkUnregisterObjectsNVX)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> ("set" ::: Word32) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr (WriteDescriptorSet _)) -> IO ()) vkCmdPushDescriptorSetKHR)+ (castFunPtr @_ @(Ptr Device_T -> CommandPool -> CommandPoolTrimFlags -> IO ()) vkTrimCommandPool)+ (castFunPtr @_ @(Ptr Device_T -> ("pGetWin32HandleInfo" ::: Ptr MemoryGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO Result) vkGetMemoryWin32HandleKHR)+ (castFunPtr @_ @(Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> HANDLE -> ("pMemoryWin32HandleProperties" ::: Ptr MemoryWin32HandlePropertiesKHR) -> IO Result) vkGetMemoryWin32HandlePropertiesKHR)+ (castFunPtr @_ @(Ptr Device_T -> ("pGetFdInfo" ::: Ptr MemoryGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO Result) vkGetMemoryFdKHR)+ (castFunPtr @_ @(Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> ("fd" ::: CInt) -> ("pMemoryFdProperties" ::: Ptr MemoryFdPropertiesKHR) -> IO Result) vkGetMemoryFdPropertiesKHR)+ (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)+ (castFunPtr @_ @(Ptr Device_T -> ("pImportSemaphoreFdInfo" ::: Ptr ImportSemaphoreFdInfoKHR) -> IO Result) vkImportSemaphoreFdKHR)+ (castFunPtr @_ @(Ptr Device_T -> ("pGetWin32HandleInfo" ::: Ptr FenceGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO Result) vkGetFenceWin32HandleKHR)+ (castFunPtr @_ @(Ptr Device_T -> ("pImportFenceWin32HandleInfo" ::: Ptr ImportFenceWin32HandleInfoKHR) -> IO Result) vkImportFenceWin32HandleKHR)+ (castFunPtr @_ @(Ptr Device_T -> ("pGetFdInfo" ::: Ptr FenceGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO Result) vkGetFenceFdKHR)+ (castFunPtr @_ @(Ptr Device_T -> ("pImportFenceFdInfo" ::: Ptr ImportFenceFdInfoKHR) -> IO Result) vkImportFenceFdKHR)+ (castFunPtr @_ @(Ptr Device_T -> DisplayKHR -> ("pDisplayPowerInfo" ::: Ptr DisplayPowerInfoEXT) -> IO Result) vkDisplayPowerControlEXT)+ (castFunPtr @_ @(Ptr Device_T -> ("pDeviceEventInfo" ::: Ptr DeviceEventInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFence" ::: Ptr Fence) -> IO Result) vkRegisterDeviceEventEXT)+ (castFunPtr @_ @(Ptr Device_T -> DisplayKHR -> ("pDisplayEventInfo" ::: Ptr DisplayEventInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFence" ::: Ptr Fence) -> IO Result) vkRegisterDisplayEventEXT)+ (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> SurfaceCounterFlagBitsEXT -> ("pCounterValue" ::: Ptr Word64) -> IO Result) vkGetSwapchainCounterEXT)+ (castFunPtr @_ @(Ptr Device_T -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> ("pPeerMemoryFeatures" ::: Ptr PeerMemoryFeatureFlags) -> IO ()) vkGetDeviceGroupPeerMemoryFeatures)+ (castFunPtr @_ @(Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr (BindBufferMemoryInfo _)) -> IO Result) vkBindBufferMemory2)+ (castFunPtr @_ @(Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr (BindImageMemoryInfo _)) -> IO Result) vkBindImageMemory2)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("deviceMask" ::: Word32) -> IO ()) vkCmdSetDeviceMask)+ (castFunPtr @_ @(Ptr Device_T -> ("pDeviceGroupPresentCapabilities" ::: Ptr DeviceGroupPresentCapabilitiesKHR) -> IO Result) vkGetDeviceGroupPresentCapabilitiesKHR)+ (castFunPtr @_ @(Ptr Device_T -> SurfaceKHR -> ("pModes" ::: Ptr DeviceGroupPresentModeFlagsKHR) -> IO Result) vkGetDeviceGroupSurfacePresentModesKHR)+ (castFunPtr @_ @(Ptr Device_T -> ("pAcquireInfo" ::: Ptr AcquireNextImageInfoKHR) -> ("pImageIndex" ::: Ptr Word32) -> IO Result) vkAcquireNextImage2KHR)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()) vkCmdDispatchBase)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr DescriptorUpdateTemplateCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pDescriptorUpdateTemplate" ::: Ptr DescriptorUpdateTemplate) -> IO Result) vkCreateDescriptorUpdateTemplate)+ (castFunPtr @_ @(Ptr Device_T -> DescriptorUpdateTemplate -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDescriptorUpdateTemplate)+ (castFunPtr @_ @(Ptr Device_T -> DescriptorSet -> DescriptorUpdateTemplate -> ("pData" ::: Ptr ()) -> IO ()) vkUpdateDescriptorSetWithTemplate)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> DescriptorUpdateTemplate -> PipelineLayout -> ("set" ::: Word32) -> ("pData" ::: Ptr ()) -> IO ()) vkCmdPushDescriptorSetWithTemplateKHR)+ (castFunPtr @_ @(Ptr Device_T -> ("swapchainCount" ::: Word32) -> ("pSwapchains" ::: Ptr SwapchainKHR) -> ("pMetadata" ::: Ptr HdrMetadataEXT) -> IO ()) vkSetHdrMetadataEXT)+ (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> IO Result) vkGetSwapchainStatusKHR)+ (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("pDisplayTimingProperties" ::: Ptr RefreshCycleDurationGOOGLE) -> IO Result) vkGetRefreshCycleDurationGOOGLE)+ (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("pPresentationTimingCount" ::: Ptr Word32) -> ("pPresentationTimings" ::: Ptr PastPresentationTimingGOOGLE) -> IO Result) vkGetPastPresentationTimingGOOGLE)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewportWScalings" ::: Ptr ViewportWScalingNV) -> IO ()) vkCmdSetViewportWScalingNV)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstDiscardRectangle" ::: Word32) -> ("discardRectangleCount" ::: Word32) -> ("pDiscardRectangles" ::: Ptr Rect2D) -> IO ()) vkCmdSetDiscardRectangleEXT)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pSampleLocationsInfo" ::: Ptr SampleLocationsInfoEXT) -> IO ()) vkCmdSetSampleLocationsEXT)+ (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr BufferMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2 _)) -> IO ()) vkGetBufferMemoryRequirements2)+ (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr (ImageMemoryRequirementsInfo2 _)) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2 _)) -> IO ()) vkGetImageMemoryRequirements2)+ (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2) -> IO ()) vkGetImageSparseMemoryRequirements2)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SamplerYcbcrConversionCreateInfo _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pYcbcrConversion" ::: Ptr SamplerYcbcrConversion) -> IO Result) vkCreateSamplerYcbcrConversion)+ (castFunPtr @_ @(Ptr Device_T -> SamplerYcbcrConversion -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroySamplerYcbcrConversion)+ (castFunPtr @_ @(Ptr Device_T -> ("pQueueInfo" ::: Ptr DeviceQueueInfo2) -> ("pQueue" ::: Ptr (Ptr Queue_T)) -> IO ()) vkGetDeviceQueue2)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr ValidationCacheCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pValidationCache" ::: Ptr ValidationCacheEXT) -> IO Result) vkCreateValidationCacheEXT)+ (castFunPtr @_ @(Ptr Device_T -> ValidationCacheEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyValidationCacheEXT)+ (castFunPtr @_ @(Ptr Device_T -> ValidationCacheEXT -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO Result) vkGetValidationCacheDataEXT)+ (castFunPtr @_ @(Ptr Device_T -> ("dstCache" ::: ValidationCacheEXT) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr ValidationCacheEXT) -> IO Result) vkMergeValidationCachesEXT)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (DescriptorSetLayoutCreateInfo _)) -> ("pSupport" ::: Ptr (DescriptorSetLayoutSupport _)) -> IO ()) vkGetDescriptorSetLayoutSupport)+ (castFunPtr @_ @(Ptr Device_T -> Pipeline -> ShaderStageFlagBits -> ShaderInfoTypeAMD -> ("pInfoSize" ::: Ptr CSize) -> ("pInfo" ::: Ptr ()) -> IO Result) vkGetShaderInfoAMD)+ (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> ("localDimmingEnable" ::: Bool32) -> IO ()) vkSetLocalDimmingAMD)+ (castFunPtr @_ @(Ptr Device_T -> ("timestampCount" ::: Word32) -> ("pTimestampInfos" ::: Ptr CalibratedTimestampInfoEXT) -> ("pTimestamps" ::: Ptr Word64) -> ("pMaxDeviation" ::: Ptr Word64) -> IO Result) vkGetCalibratedTimestampsEXT)+ (castFunPtr @_ @(Ptr Device_T -> ("pNameInfo" ::: Ptr DebugUtilsObjectNameInfoEXT) -> IO Result) vkSetDebugUtilsObjectNameEXT)+ (castFunPtr @_ @(Ptr Device_T -> ("pTagInfo" ::: Ptr DebugUtilsObjectTagInfoEXT) -> IO Result) vkSetDebugUtilsObjectTagEXT)+ (castFunPtr @_ @(Ptr Queue_T -> ("pLabelInfo" ::: Ptr DebugUtilsLabelEXT) -> IO ()) vkQueueBeginDebugUtilsLabelEXT)+ (castFunPtr @_ @(Ptr Queue_T -> IO ()) vkQueueEndDebugUtilsLabelEXT)+ (castFunPtr @_ @(Ptr Queue_T -> ("pLabelInfo" ::: Ptr DebugUtilsLabelEXT) -> IO ()) vkQueueInsertDebugUtilsLabelEXT)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pLabelInfo" ::: Ptr DebugUtilsLabelEXT) -> IO ()) vkCmdBeginDebugUtilsLabelEXT)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> IO ()) vkCmdEndDebugUtilsLabelEXT)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pLabelInfo" ::: Ptr DebugUtilsLabelEXT) -> IO ()) vkCmdInsertDebugUtilsLabelEXT)+ (castFunPtr @_ @(Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> ("pHostPointer" ::: Ptr ()) -> ("pMemoryHostPointerProperties" ::: Ptr MemoryHostPointerPropertiesEXT) -> IO Result) vkGetMemoryHostPointerPropertiesEXT)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineStageFlagBits -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("marker" ::: Word32) -> IO ()) vkCmdWriteBufferMarkerAMD)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (RenderPassCreateInfo2 _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pRenderPass" ::: Ptr RenderPass) -> IO Result) vkCreateRenderPass2)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pRenderPassBegin" ::: Ptr (RenderPassBeginInfo _)) -> ("pSubpassBeginInfo" ::: Ptr SubpassBeginInfo) -> IO ()) vkCmdBeginRenderPass2)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pSubpassBeginInfo" ::: Ptr SubpassBeginInfo) -> ("pSubpassEndInfo" ::: Ptr SubpassEndInfo) -> IO ()) vkCmdNextSubpass2)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pSubpassEndInfo" ::: Ptr SubpassEndInfo) -> IO ()) vkCmdEndRenderPass2)+ (castFunPtr @_ @(Ptr Device_T -> Semaphore -> ("pValue" ::: Ptr Word64) -> IO Result) vkGetSemaphoreCounterValue)+ (castFunPtr @_ @(Ptr Device_T -> ("pWaitInfo" ::: Ptr SemaphoreWaitInfo) -> ("timeout" ::: Word64) -> IO Result) vkWaitSemaphores)+ (castFunPtr @_ @(Ptr Device_T -> ("pSignalInfo" ::: Ptr SemaphoreSignalInfo) -> IO Result) vkSignalSemaphore)+ (castFunPtr @_ @(Ptr Device_T -> Ptr AHardwareBuffer -> ("pProperties" ::: Ptr (AndroidHardwareBufferPropertiesANDROID _)) -> IO Result) vkGetAndroidHardwareBufferPropertiesANDROID)+ (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr MemoryGetAndroidHardwareBufferInfoANDROID) -> ("pBuffer" ::: Ptr (Ptr AHardwareBuffer)) -> IO Result) vkGetMemoryAndroidHardwareBufferANDROID)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("countBuffer" ::: Buffer) -> ("countBufferOffset" ::: DeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) vkCmdDrawIndirectCount)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("countBuffer" ::: Buffer) -> ("countBufferOffset" ::: DeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) vkCmdDrawIndexedIndirectCount)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pCheckpointMarker" ::: Ptr ()) -> IO ()) vkCmdSetCheckpointNV)+ (castFunPtr @_ @(Ptr Queue_T -> ("pCheckpointDataCount" ::: Ptr Word32) -> ("pCheckpointData" ::: Ptr CheckpointDataNV) -> IO ()) vkGetQueueCheckpointDataNV)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr Buffer) -> ("pOffsets" ::: Ptr DeviceSize) -> ("pSizes" ::: Ptr DeviceSize) -> IO ()) vkCmdBindTransformFeedbackBuffersEXT)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstCounterBuffer" ::: Word32) -> ("counterBufferCount" ::: Word32) -> ("pCounterBuffers" ::: Ptr Buffer) -> ("pCounterBufferOffsets" ::: Ptr DeviceSize) -> IO ()) vkCmdBeginTransformFeedbackEXT)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstCounterBuffer" ::: Word32) -> ("counterBufferCount" ::: Word32) -> ("pCounterBuffers" ::: Ptr Buffer) -> ("pCounterBufferOffsets" ::: Ptr DeviceSize) -> IO ()) vkCmdEndTransformFeedbackEXT)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> QueryPool -> ("query" ::: Word32) -> QueryControlFlags -> ("index" ::: Word32) -> IO ()) vkCmdBeginQueryIndexedEXT)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> QueryPool -> ("query" ::: Word32) -> ("index" ::: Word32) -> IO ()) vkCmdEndQueryIndexedEXT)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("instanceCount" ::: Word32) -> ("firstInstance" ::: Word32) -> ("counterBuffer" ::: Buffer) -> ("counterBufferOffset" ::: DeviceSize) -> ("counterOffset" ::: Word32) -> ("vertexStride" ::: Word32) -> IO ()) vkCmdDrawIndirectByteCountEXT)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstExclusiveScissor" ::: Word32) -> ("exclusiveScissorCount" ::: Word32) -> ("pExclusiveScissors" ::: Ptr Rect2D) -> IO ()) vkCmdSetExclusiveScissorNV)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ImageView -> ImageLayout -> IO ()) vkCmdBindShadingRateImageNV)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pShadingRatePalettes" ::: Ptr ShadingRatePaletteNV) -> IO ()) vkCmdSetViewportShadingRatePaletteNV)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> CoarseSampleOrderTypeNV -> ("customSampleOrderCount" ::: Word32) -> ("pCustomSampleOrders" ::: Ptr CoarseSampleOrderCustomNV) -> IO ()) vkCmdSetCoarseSampleOrderNV)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("taskCount" ::: Word32) -> ("firstTask" ::: Word32) -> IO ()) vkCmdDrawMeshTasksNV)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) vkCmdDrawMeshTasksIndirectNV)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> Buffer -> ("offset" ::: DeviceSize) -> ("countBuffer" ::: Buffer) -> ("countBufferOffset" ::: DeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()) vkCmdDrawMeshTasksIndirectCountNV)+ (castFunPtr @_ @(Ptr Device_T -> Pipeline -> ("shader" ::: Word32) -> IO Result) vkCompileDeferredNV)+ (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr AccelerationStructureCreateInfoNV) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pAccelerationStructure" ::: Ptr AccelerationStructureNV) -> IO Result) vkCreateAccelerationStructureNV)+ (castFunPtr @_ @(Ptr Device_T -> AccelerationStructureNV -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyAccelerationStructureNV)+ (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr AccelerationStructureMemoryRequirementsInfoNV) -> ("pMemoryRequirements" ::: Ptr (MemoryRequirements2KHR _)) -> IO ()) vkGetAccelerationStructureMemoryRequirementsNV)+ (castFunPtr @_ @(Ptr Device_T -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr BindAccelerationStructureMemoryInfoNV) -> IO Result) vkBindAccelerationStructureMemoryNV)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("dst" ::: AccelerationStructureNV) -> ("src" ::: AccelerationStructureNV) -> CopyAccelerationStructureModeNV -> IO ()) vkCmdCopyAccelerationStructureNV)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("accelerationStructureCount" ::: Word32) -> ("pAccelerationStructures" ::: Ptr AccelerationStructureNV) -> QueryType -> QueryPool -> ("firstQuery" ::: Word32) -> IO ()) vkCmdWriteAccelerationStructuresPropertiesNV)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pInfo" ::: Ptr AccelerationStructureInfoNV) -> ("instanceData" ::: Buffer) -> ("instanceOffset" ::: DeviceSize) -> ("update" ::: Bool32) -> ("dst" ::: AccelerationStructureNV) -> ("src" ::: AccelerationStructureNV) -> ("scratch" ::: Buffer) -> ("scratchOffset" ::: DeviceSize) -> IO ()) vkCmdBuildAccelerationStructureNV)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("raygenShaderBindingTableBuffer" ::: Buffer) -> ("raygenShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingTableBuffer" ::: Buffer) -> ("missShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingStride" ::: DeviceSize) -> ("hitShaderBindingTableBuffer" ::: Buffer) -> ("hitShaderBindingOffset" ::: DeviceSize) -> ("hitShaderBindingStride" ::: DeviceSize) -> ("callableShaderBindingTableBuffer" ::: Buffer) -> ("callableShaderBindingOffset" ::: DeviceSize) -> ("callableShaderBindingStride" ::: DeviceSize) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> IO ()) vkCmdTraceRaysNV)+ (castFunPtr @_ @(Ptr Device_T -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result) vkGetRayTracingShaderGroupHandlesNV)+ (castFunPtr @_ @(Ptr Device_T -> AccelerationStructureNV -> ("dataSize" ::: CSize) -> ("pData" ::: Ptr ()) -> IO Result) vkGetAccelerationStructureHandleNV)+ (castFunPtr @_ @(Ptr Device_T -> PipelineCache -> ("createInfoCount" ::: Word32) -> ("pCreateInfos" ::: Ptr (RayTracingPipelineCreateInfoNV _)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPipelines" ::: Ptr Pipeline) -> IO Result) vkCreateRayTracingPipelinesNV)+ (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr ImageViewHandleInfoNVX) -> IO Word32) vkGetImageViewHandleNVX)+ (castFunPtr @_ @(Ptr Device_T -> ("pSurfaceInfo" ::: Ptr (PhysicalDeviceSurfaceInfo2KHR _)) -> ("pModes" ::: Ptr DeviceGroupPresentModeFlagsKHR) -> IO Result) vkGetDeviceGroupSurfacePresentModes2EXT)+ (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> IO Result) vkAcquireFullScreenExclusiveModeEXT)+ (castFunPtr @_ @(Ptr Device_T -> SwapchainKHR -> IO Result) vkReleaseFullScreenExclusiveModeEXT)+ (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr AcquireProfilingLockInfoKHR) -> IO Result) vkAcquireProfilingLockKHR)+ (castFunPtr @_ @(Ptr Device_T -> IO ()) vkReleaseProfilingLockKHR)+ (castFunPtr @_ @(Ptr Device_T -> Image -> ("pProperties" ::: Ptr ImageDrmFormatModifierPropertiesEXT) -> IO Result) vkGetImageDrmFormatModifierPropertiesEXT)+ (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr BufferDeviceAddressInfo) -> IO Word64) vkGetBufferOpaqueCaptureAddress)+ (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr BufferDeviceAddressInfo) -> IO DeviceAddress) vkGetBufferDeviceAddress)+ (castFunPtr @_ @(Ptr Device_T -> ("pInitializeInfo" ::: Ptr InitializePerformanceApiInfoINTEL) -> IO Result) vkInitializePerformanceApiINTEL)+ (castFunPtr @_ @(Ptr Device_T -> IO ()) vkUninitializePerformanceApiINTEL)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pMarkerInfo" ::: Ptr PerformanceMarkerInfoINTEL) -> IO Result) vkCmdSetPerformanceMarkerINTEL)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pMarkerInfo" ::: Ptr PerformanceStreamMarkerInfoINTEL) -> IO Result) vkCmdSetPerformanceStreamMarkerINTEL)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pOverrideInfo" ::: Ptr PerformanceOverrideInfoINTEL) -> IO Result) vkCmdSetPerformanceOverrideINTEL)+ (castFunPtr @_ @(Ptr Device_T -> ("pAcquireInfo" ::: Ptr PerformanceConfigurationAcquireInfoINTEL) -> ("pConfiguration" ::: Ptr PerformanceConfigurationINTEL) -> IO Result) vkAcquirePerformanceConfigurationINTEL)+ (castFunPtr @_ @(Ptr Device_T -> PerformanceConfigurationINTEL -> IO Result) vkReleasePerformanceConfigurationINTEL)+ (castFunPtr @_ @(Ptr Queue_T -> PerformanceConfigurationINTEL -> IO Result) vkQueueSetPerformanceConfigurationINTEL)+ (castFunPtr @_ @(Ptr Device_T -> PerformanceParameterTypeINTEL -> ("pValue" ::: Ptr PerformanceValueINTEL) -> IO Result) vkGetPerformanceParameterINTEL)+ (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr DeviceMemoryOpaqueCaptureAddressInfo) -> IO Word64) vkGetDeviceMemoryOpaqueCaptureAddress)+ (castFunPtr @_ @(Ptr Device_T -> ("pPipelineInfo" ::: Ptr PipelineInfoKHR) -> ("pExecutableCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr PipelineExecutablePropertiesKHR) -> IO Result) vkGetPipelineExecutablePropertiesKHR)+ (castFunPtr @_ @(Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pStatisticCount" ::: Ptr Word32) -> ("pStatistics" ::: Ptr PipelineExecutableStatisticKHR) -> IO Result) vkGetPipelineExecutableStatisticsKHR)+ (castFunPtr @_ @(Ptr Device_T -> ("pExecutableInfo" ::: Ptr PipelineExecutableInfoKHR) -> ("pInternalRepresentationCount" ::: Ptr Word32) -> ("pInternalRepresentations" ::: Ptr PipelineExecutableInternalRepresentationKHR) -> IO Result) vkGetPipelineExecutableInternalRepresentationsKHR)+ (castFunPtr @_ @(Ptr CommandBuffer_T -> ("lineStippleFactor" ::: Word32) -> ("lineStipplePattern" ::: Word16) -> IO ()) vkCmdSetLineStippleEXT)+
+ src/Graphics/Vulkan/Dynamic.hs-boot view
@@ -0,0 +1,11 @@+{-# language CPP #-}+module Graphics.Vulkan.Dynamic ( InstanceCmds+ , DeviceCmds+ ) where++++data InstanceCmds++data DeviceCmds+
+ src/Graphics/Vulkan/Exception.hs view
@@ -0,0 +1,49 @@+{-# language CPP #-}+module Graphics.Vulkan.Exception (VulkanException(..)) where++import GHC.Exception.Type (Exception(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+-- | This exception is thrown from calls to marshalled Vulkan commands+-- which return a negative VkResult.+newtype VulkanException = VulkanException { vulkanExceptionResult :: Result }+ deriving (Eq, Ord, Read, Show)++instance Exception VulkanException where+ displayException (VulkanException r) = show r ++ ": " ++ resultString r++-- | A human understandable message for each VkResult+resultString :: Result -> String+resultString = \case+ SUCCESS -> "Command successfully completed"+ NOT_READY -> "A fence or query has not yet completed"+ TIMEOUT -> "A wait operation has not completed in the specified time"+ EVENT_SET -> "An event is signaled"+ EVENT_RESET -> "An event is unsignaled"+ INCOMPLETE -> "A return array was too small for the result"+ ERROR_OUT_OF_HOST_MEMORY -> "A host memory allocation has failed"+ ERROR_OUT_OF_DEVICE_MEMORY -> "A device memory allocation has failed"+ ERROR_INITIALIZATION_FAILED -> "Initialization of an object could not be completed for implementation-specific reasons"+ ERROR_DEVICE_LOST -> "The logical or physical device has been lost"+ ERROR_MEMORY_MAP_FAILED -> "Mapping of a memory object has failed"+ ERROR_LAYER_NOT_PRESENT -> "A requested layer is not present or could not be loaded"+ ERROR_EXTENSION_NOT_PRESENT -> "A requested extension is not supported"+ ERROR_FEATURE_NOT_PRESENT -> "A requested feature is not supported"+ ERROR_INCOMPATIBLE_DRIVER -> "The requested version of Vulkan is not supported by the driver or is otherwise incompatible for implementation-specific reasons"+ ERROR_TOO_MANY_OBJECTS -> "Too many objects of the type have already been created"+ ERROR_FORMAT_NOT_SUPPORTED -> "A requested format is not supported on this device"+ ERROR_FRAGMENTED_POOL -> "A pool allocation has failed due to fragmentation of the pool's memory"+ ERROR_UNKNOWN -> "An unknown error has occurred; either the application has provided invalid input, or an implementation failure has occurred"+ ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT -> "An operation on a swapchain created with VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT failed as it did not have exlusive full-screen access"+ ERROR_INVALID_SHADER_NV -> "One or more shaders failed to compile or link"+ ERROR_INCOMPATIBLE_DISPLAY_KHR -> "The display used by a swapchain does not use the same presentable image layout, or is incompatible in a way that prevents sharing an image"+ ERROR_OUT_OF_DATE_KHR -> "A surface has changed in such a way that it is no longer compatible with the swapchain, and further presentation requests using the swapchain will fail"+ SUBOPTIMAL_KHR -> "A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully"+ ERROR_NATIVE_WINDOW_IN_USE_KHR -> "The requested window is already in use by Vulkan or another API in a manner which prevents it from being used again"+ ERROR_SURFACE_LOST_KHR -> "A surface is no longer available"+ ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS -> "A buffer creation or memory allocation failed because the requested address is not available"+ ERROR_FRAGMENTATION -> "A descriptor pool creation has failed due to fragmentation"+ ERROR_INVALID_EXTERNAL_HANDLE -> "An external handle is not a valid handle of the specified type"+ ERROR_OUT_OF_POOL_MEMORY -> "A pool memory allocation has failed"+ r -> show r+
src/Graphics/Vulkan/Extensions.hs view
@@ -1,305 +1,397 @@-{-# language Strict #-} {-# language CPP #-}---module Graphics.Vulkan.Extensions- ( module Graphics.Vulkan.Extensions.VK_KHR_surface- , module Graphics.Vulkan.Extensions.VK_KHR_swapchain- , module Graphics.Vulkan.Extensions.VK_KHR_display- , module Graphics.Vulkan.Extensions.VK_KHR_display_swapchain-#if defined(VK_USE_PLATFORM_XLIB_KHR)- , module Graphics.Vulkan.Extensions.VK_KHR_xlib_surface-#endif-#if defined(VK_USE_PLATFORM_XCB_KHR)- , module Graphics.Vulkan.Extensions.VK_KHR_xcb_surface-#endif-#if defined(VK_USE_PLATFORM_WAYLAND_KHR)- , module Graphics.Vulkan.Extensions.VK_KHR_wayland_surface-#endif-#if defined(VK_USE_PLATFORM_MIR_KHR)- , module Graphics.Vulkan.Extensions.VK_KHR_mir_surface-#endif-#if defined(VK_USE_PLATFORM_ANDROID_KHR)- , module Graphics.Vulkan.Extensions.VK_KHR_android_surface-#endif-#if defined(VK_USE_PLATFORM_WIN32_KHR)- , module Graphics.Vulkan.Extensions.VK_KHR_win32_surface-#endif- , module Graphics.Vulkan.Extensions.VK_EXT_debug_report- , module Graphics.Vulkan.Extensions.VK_NV_glsl_shader- , module Graphics.Vulkan.Extensions.VK_EXT_depth_range_unrestricted- , module Graphics.Vulkan.Extensions.VK_KHR_sampler_mirror_clamp_to_edge- , module Graphics.Vulkan.Extensions.VK_IMG_filter_cubic- , module Graphics.Vulkan.Extensions.VK_AMD_rasterization_order- , module Graphics.Vulkan.Extensions.VK_AMD_shader_trinary_minmax- , module Graphics.Vulkan.Extensions.VK_AMD_shader_explicit_vertex_parameter- , module Graphics.Vulkan.Extensions.VK_EXT_debug_marker- , module Graphics.Vulkan.Extensions.VK_AMD_gcn_shader- , module Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation- , module Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count- , module Graphics.Vulkan.Extensions.VK_AMD_negative_viewport_height- , module Graphics.Vulkan.Extensions.VK_AMD_gpu_shader_half_float- , module Graphics.Vulkan.Extensions.VK_AMD_shader_ballot- , module Graphics.Vulkan.Extensions.VK_AMD_texture_gather_bias_lod- , module Graphics.Vulkan.Extensions.VK_AMD_shader_info- , module Graphics.Vulkan.Extensions.VK_AMD_shader_image_load_store_lod- , module Graphics.Vulkan.Extensions.VK_KHR_multiview- , module Graphics.Vulkan.Extensions.VK_IMG_format_pvrtc- , module Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities- , module Graphics.Vulkan.Extensions.VK_NV_external_memory-#if defined(VK_USE_PLATFORM_WIN32_KHR)- , module Graphics.Vulkan.Extensions.VK_NV_external_memory_win32- , module Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex-#endif- , module Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2- , module Graphics.Vulkan.Extensions.VK_KHR_device_group- , module Graphics.Vulkan.Extensions.VK_EXT_validation_flags-#if defined(VK_USE_PLATFORM_VI_NN)- , module Graphics.Vulkan.Extensions.VK_NN_vi_surface-#endif- , module Graphics.Vulkan.Extensions.VK_KHR_shader_draw_parameters- , module Graphics.Vulkan.Extensions.VK_EXT_shader_subgroup_ballot- , module Graphics.Vulkan.Extensions.VK_EXT_shader_subgroup_vote- , module Graphics.Vulkan.Extensions.VK_KHR_maintenance1- , module Graphics.Vulkan.Extensions.VK_KHR_device_group_creation- , module Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities- , module Graphics.Vulkan.Extensions.VK_KHR_external_memory-#if defined(VK_USE_PLATFORM_WIN32_KHR)- , module Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32-#endif- , module Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd-#if defined(VK_USE_PLATFORM_WIN32_KHR)- , module Graphics.Vulkan.Extensions.VK_KHR_win32_keyed_mutex-#endif- , module Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_capabilities- , module Graphics.Vulkan.Extensions.VK_KHR_external_semaphore-#if defined(VK_USE_PLATFORM_WIN32_KHR)- , module Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32-#endif- , module Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd- , module Graphics.Vulkan.Extensions.VK_KHR_push_descriptor- , module Graphics.Vulkan.Extensions.VK_KHR_16bit_storage- , module Graphics.Vulkan.Extensions.VK_KHR_incremental_present- , module Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template- , module Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands- , module Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling- , module Graphics.Vulkan.Extensions.VK_EXT_direct_mode_display-#if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)- , module Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display-#endif- , module Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter- , module Graphics.Vulkan.Extensions.VK_EXT_display_control- , module Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing- , module Graphics.Vulkan.Extensions.VK_NV_sample_mask_override_coverage- , module Graphics.Vulkan.Extensions.VK_NV_geometry_shader_passthrough- , module Graphics.Vulkan.Extensions.VK_NV_viewport_array2- , module Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes- , module Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle- , module Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles- , module Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization- , module Graphics.Vulkan.Extensions.VK_EXT_swapchain_colorspace- , module Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata- , module Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image- , module Graphics.Vulkan.Extensions.VK_KHR_external_fence_capabilities- , module Graphics.Vulkan.Extensions.VK_KHR_external_fence-#if defined(VK_USE_PLATFORM_WIN32_KHR)- , module Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32-#endif- , module Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd- , module Graphics.Vulkan.Extensions.VK_KHR_maintenance2- , module Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2- , module Graphics.Vulkan.Extensions.VK_KHR_variable_pointers-#if defined(VK_USE_PLATFORM_IOS_MVK)- , module Graphics.Vulkan.Extensions.VK_MVK_ios_surface-#endif-#if defined(VK_USE_PLATFORM_MACOS_MVK)- , module Graphics.Vulkan.Extensions.VK_MVK_macos_surface-#endif- , module Graphics.Vulkan.Extensions.VK_EXT_external_memory_dma_buf- , module Graphics.Vulkan.Extensions.VK_EXT_queue_family_foreign- , module Graphics.Vulkan.Extensions.VK_KHR_dedicated_allocation- , module Graphics.Vulkan.Extensions.VK_EXT_debug_utils-#if defined(VK_USE_PLATFORM_ANDROID_KHR)- , module Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer-#endif- , module Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax- , module Graphics.Vulkan.Extensions.VK_KHR_storage_buffer_storage_class- , module Graphics.Vulkan.Extensions.VK_AMD_gpu_shader_int16- , module Graphics.Vulkan.Extensions.VK_AMD_mixed_attachment_samples- , module Graphics.Vulkan.Extensions.VK_AMD_shader_fragment_mask- , module Graphics.Vulkan.Extensions.VK_EXT_shader_stencil_export- , module Graphics.Vulkan.Extensions.VK_EXT_sample_locations- , module Graphics.Vulkan.Extensions.VK_KHR_relaxed_block_layout- , module Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2- , module Graphics.Vulkan.Extensions.VK_KHR_image_format_list- , module Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced- , module Graphics.Vulkan.Extensions.VK_NV_fragment_coverage_to_color- , module Graphics.Vulkan.Extensions.VK_NV_framebuffer_mixed_samples- , module Graphics.Vulkan.Extensions.VK_NV_fill_rectangle- , module Graphics.Vulkan.Extensions.VK_EXT_post_depth_coverage- , module Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion- , module Graphics.Vulkan.Extensions.VK_KHR_bind_memory2- , module Graphics.Vulkan.Extensions.VK_EXT_validation_cache- , module Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing- , module Graphics.Vulkan.Extensions.VK_EXT_shader_viewport_index_layer- , module Graphics.Vulkan.Extensions.VK_KHR_maintenance3- , module Graphics.Vulkan.Extensions.VK_EXT_global_priority- , module Graphics.Vulkan.Extensions.VK_EXT_external_memory_host- , module Graphics.Vulkan.Extensions.VK_AMD_buffer_marker- , module Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties- , module Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor- , module Graphics.Vulkan.Extensions.VK_NV_shader_subgroup_partitioned- ) where---import Graphics.Vulkan.Extensions.VK_KHR_surface-import Graphics.Vulkan.Extensions.VK_KHR_swapchain-import Graphics.Vulkan.Extensions.VK_KHR_display-import Graphics.Vulkan.Extensions.VK_KHR_display_swapchain-#if defined(VK_USE_PLATFORM_XLIB_KHR)-import Graphics.Vulkan.Extensions.VK_KHR_xlib_surface-#endif-#if defined(VK_USE_PLATFORM_XCB_KHR)-import Graphics.Vulkan.Extensions.VK_KHR_xcb_surface-#endif-#if defined(VK_USE_PLATFORM_WAYLAND_KHR)-import Graphics.Vulkan.Extensions.VK_KHR_wayland_surface-#endif-#if defined(VK_USE_PLATFORM_MIR_KHR)-import Graphics.Vulkan.Extensions.VK_KHR_mir_surface-#endif-#if defined(VK_USE_PLATFORM_ANDROID_KHR)-import Graphics.Vulkan.Extensions.VK_KHR_android_surface-#endif-#if defined(VK_USE_PLATFORM_WIN32_KHR)-import Graphics.Vulkan.Extensions.VK_KHR_win32_surface-#endif-import Graphics.Vulkan.Extensions.VK_EXT_debug_report-import Graphics.Vulkan.Extensions.VK_NV_glsl_shader-import Graphics.Vulkan.Extensions.VK_EXT_depth_range_unrestricted-import Graphics.Vulkan.Extensions.VK_KHR_sampler_mirror_clamp_to_edge-import Graphics.Vulkan.Extensions.VK_IMG_filter_cubic-import Graphics.Vulkan.Extensions.VK_AMD_rasterization_order-import Graphics.Vulkan.Extensions.VK_AMD_shader_trinary_minmax-import Graphics.Vulkan.Extensions.VK_AMD_shader_explicit_vertex_parameter-import Graphics.Vulkan.Extensions.VK_EXT_debug_marker-import Graphics.Vulkan.Extensions.VK_AMD_gcn_shader-import Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation+module Graphics.Vulkan.Extensions ( module Graphics.Vulkan.Extensions.Handles+ , module Graphics.Vulkan.Extensions.VK_AMD_buffer_marker+ , module Graphics.Vulkan.Extensions.VK_AMD_device_coherent_memory+ , module Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr+ , module Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count+ , module Graphics.Vulkan.Extensions.VK_AMD_gcn_shader+ , module Graphics.Vulkan.Extensions.VK_AMD_gpu_shader_half_float+ , module Graphics.Vulkan.Extensions.VK_AMD_gpu_shader_int16+ , module Graphics.Vulkan.Extensions.VK_AMD_memory_overallocation_behavior+ , module Graphics.Vulkan.Extensions.VK_AMD_mixed_attachment_samples+ , module Graphics.Vulkan.Extensions.VK_AMD_negative_viewport_height+ , module Graphics.Vulkan.Extensions.VK_AMD_pipeline_compiler_control+ , module Graphics.Vulkan.Extensions.VK_AMD_rasterization_order+ , module Graphics.Vulkan.Extensions.VK_AMD_shader_ballot+ , module Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties+ , module Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties2+ , module Graphics.Vulkan.Extensions.VK_AMD_shader_explicit_vertex_parameter+ , module Graphics.Vulkan.Extensions.VK_AMD_shader_fragment_mask+ , module Graphics.Vulkan.Extensions.VK_AMD_shader_image_load_store_lod+ , module Graphics.Vulkan.Extensions.VK_AMD_shader_info+ , module Graphics.Vulkan.Extensions.VK_AMD_shader_trinary_minmax+ , module Graphics.Vulkan.Extensions.VK_AMD_texture_gather_bias_lod+ , module Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer+ , module Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display+ , module Graphics.Vulkan.Extensions.VK_EXT_astc_decode_mode+ , module Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced+ , module Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address+ , module Graphics.Vulkan.Extensions.VK_EXT_calibrated_timestamps+ , module Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering+ , module Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization+ , module Graphics.Vulkan.Extensions.VK_EXT_debug_marker+ , module Graphics.Vulkan.Extensions.VK_EXT_debug_report+ , module Graphics.Vulkan.Extensions.VK_EXT_debug_utils+ , module Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable+ , module Graphics.Vulkan.Extensions.VK_EXT_depth_range_unrestricted+ , module Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing+ , module Graphics.Vulkan.Extensions.VK_EXT_direct_mode_display+ , module Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles+ , module Graphics.Vulkan.Extensions.VK_EXT_display_control+ , module Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter+ , module Graphics.Vulkan.Extensions.VK_EXT_external_memory_dma_buf+ , module Graphics.Vulkan.Extensions.VK_EXT_external_memory_host+ , module Graphics.Vulkan.Extensions.VK_EXT_filter_cubic+ , module Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map+ , module Graphics.Vulkan.Extensions.VK_EXT_fragment_shader_interlock+ , module Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive+ , module Graphics.Vulkan.Extensions.VK_EXT_global_priority+ , module Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata+ , module Graphics.Vulkan.Extensions.VK_EXT_headless_surface+ , module Graphics.Vulkan.Extensions.VK_EXT_host_query_reset+ , module Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier+ , module Graphics.Vulkan.Extensions.VK_EXT_index_type_uint8+ , module Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block+ , module Graphics.Vulkan.Extensions.VK_EXT_line_rasterization+ , module Graphics.Vulkan.Extensions.VK_EXT_memory_budget+ , module Graphics.Vulkan.Extensions.VK_EXT_memory_priority+ , module Graphics.Vulkan.Extensions.VK_EXT_metal_surface+ , module Graphics.Vulkan.Extensions.VK_EXT_pci_bus_info+ , module Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback+ , module Graphics.Vulkan.Extensions.VK_EXT_post_depth_coverage+ , module Graphics.Vulkan.Extensions.VK_EXT_queue_family_foreign+ , module Graphics.Vulkan.Extensions.VK_EXT_sample_locations+ , module Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax+ , module Graphics.Vulkan.Extensions.VK_EXT_scalar_block_layout+ , module Graphics.Vulkan.Extensions.VK_EXT_separate_stencil_usage+ , module Graphics.Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation+ , module Graphics.Vulkan.Extensions.VK_EXT_shader_stencil_export+ , module Graphics.Vulkan.Extensions.VK_EXT_shader_subgroup_ballot+ , module Graphics.Vulkan.Extensions.VK_EXT_shader_subgroup_vote+ , module Graphics.Vulkan.Extensions.VK_EXT_shader_viewport_index_layer+ , module Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control+ , module Graphics.Vulkan.Extensions.VK_EXT_swapchain_colorspace+ , module Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment+ , module Graphics.Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr+ , module Graphics.Vulkan.Extensions.VK_EXT_tooling_info+ , module Graphics.Vulkan.Extensions.VK_EXT_transform_feedback+ , module Graphics.Vulkan.Extensions.VK_EXT_validation_cache+ , module Graphics.Vulkan.Extensions.VK_EXT_validation_features+ , module Graphics.Vulkan.Extensions.VK_EXT_validation_flags+ , module Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor+ , module Graphics.Vulkan.Extensions.VK_EXT_ycbcr_image_arrays+ , module Graphics.Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface+ , module Graphics.Vulkan.Extensions.VK_GGP_frame_token+ , module Graphics.Vulkan.Extensions.VK_GGP_stream_descriptor_surface+ , module Graphics.Vulkan.Extensions.VK_GOOGLE_decorate_string+ , module Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing+ , module Graphics.Vulkan.Extensions.VK_GOOGLE_hlsl_functionality1+ , module Graphics.Vulkan.Extensions.VK_GOOGLE_user_type+ , module Graphics.Vulkan.Extensions.VK_IMG_filter_cubic+ , module Graphics.Vulkan.Extensions.VK_IMG_format_pvrtc+ , module Graphics.Vulkan.Extensions.VK_INTEL_performance_query+ , module Graphics.Vulkan.Extensions.VK_INTEL_shader_integer_functions2+ , module Graphics.Vulkan.Extensions.VK_KHR_16bit_storage+ , module Graphics.Vulkan.Extensions.VK_KHR_8bit_storage+ , module Graphics.Vulkan.Extensions.VK_KHR_android_surface+ , module Graphics.Vulkan.Extensions.VK_KHR_bind_memory2+ , module Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address+ , module Graphics.Vulkan.Extensions.VK_KHR_create_renderpass2+ , module Graphics.Vulkan.Extensions.VK_KHR_dedicated_allocation+ , module Graphics.Vulkan.Extensions.VK_KHR_depth_stencil_resolve+ , module Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template+ , module Graphics.Vulkan.Extensions.VK_KHR_device_group+ , module Graphics.Vulkan.Extensions.VK_KHR_device_group_creation+ , module Graphics.Vulkan.Extensions.VK_KHR_display+ , module Graphics.Vulkan.Extensions.VK_KHR_display_swapchain+ , module Graphics.Vulkan.Extensions.VK_KHR_draw_indirect_count+ , module Graphics.Vulkan.Extensions.VK_KHR_driver_properties+ , module Graphics.Vulkan.Extensions.VK_KHR_external_fence+ , module Graphics.Vulkan.Extensions.VK_KHR_external_fence_capabilities+ , module Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd+ , module Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32+ , module Graphics.Vulkan.Extensions.VK_KHR_external_memory+ , module Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities+ , module Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd+ , module Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32+ , module Graphics.Vulkan.Extensions.VK_KHR_external_semaphore+ , module Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_capabilities+ , module Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd+ , module Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32+ , module Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2+ , module Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2+ , module Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2+ , module Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2+ , module Graphics.Vulkan.Extensions.VK_KHR_image_format_list+ , module Graphics.Vulkan.Extensions.VK_KHR_imageless_framebuffer+ , module Graphics.Vulkan.Extensions.VK_KHR_incremental_present+ , module Graphics.Vulkan.Extensions.VK_KHR_maintenance1+ , module Graphics.Vulkan.Extensions.VK_KHR_maintenance2+ , module Graphics.Vulkan.Extensions.VK_KHR_maintenance3+ , module Graphics.Vulkan.Extensions.VK_KHR_multiview+ , module Graphics.Vulkan.Extensions.VK_KHR_performance_query+ , module Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties+ , module Graphics.Vulkan.Extensions.VK_KHR_push_descriptor+ , module Graphics.Vulkan.Extensions.VK_KHR_relaxed_block_layout+ , module Graphics.Vulkan.Extensions.VK_KHR_sampler_mirror_clamp_to_edge+ , module Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion+ , module Graphics.Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts+ , module Graphics.Vulkan.Extensions.VK_KHR_shader_atomic_int64+ , module Graphics.Vulkan.Extensions.VK_KHR_shader_clock+ , module Graphics.Vulkan.Extensions.VK_KHR_shader_draw_parameters+ , module Graphics.Vulkan.Extensions.VK_KHR_shader_float16_int8+ , module Graphics.Vulkan.Extensions.VK_KHR_shader_float_controls+ , module Graphics.Vulkan.Extensions.VK_KHR_shader_non_semantic_info+ , module Graphics.Vulkan.Extensions.VK_KHR_shader_subgroup_extended_types+ , module Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image+ , module Graphics.Vulkan.Extensions.VK_KHR_spirv_1_4+ , module Graphics.Vulkan.Extensions.VK_KHR_storage_buffer_storage_class+ , module Graphics.Vulkan.Extensions.VK_KHR_surface+ , module Graphics.Vulkan.Extensions.VK_KHR_surface_protected_capabilities+ , module Graphics.Vulkan.Extensions.VK_KHR_swapchain+ , module Graphics.Vulkan.Extensions.VK_KHR_swapchain_mutable_format+ , module Graphics.Vulkan.Extensions.VK_KHR_timeline_semaphore+ , module Graphics.Vulkan.Extensions.VK_KHR_uniform_buffer_standard_layout+ , module Graphics.Vulkan.Extensions.VK_KHR_variable_pointers+ , module Graphics.Vulkan.Extensions.VK_KHR_vulkan_memory_model+ , module Graphics.Vulkan.Extensions.VK_KHR_wayland_surface+ , module Graphics.Vulkan.Extensions.VK_KHR_win32_keyed_mutex+ , module Graphics.Vulkan.Extensions.VK_KHR_win32_surface+ , module Graphics.Vulkan.Extensions.VK_KHR_xcb_surface+ , module Graphics.Vulkan.Extensions.VK_KHR_xlib_surface+ , module Graphics.Vulkan.Extensions.VK_MVK_ios_surface+ , module Graphics.Vulkan.Extensions.VK_MVK_macos_surface+ , module Graphics.Vulkan.Extensions.VK_NN_vi_surface+ , module Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands+ , module Graphics.Vulkan.Extensions.VK_NVX_image_view_handle+ , module Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes+ , module Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling+ , module Graphics.Vulkan.Extensions.VK_NV_compute_shader_derivatives+ , module Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix+ , module Graphics.Vulkan.Extensions.VK_NV_corner_sampled_image+ , module Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode+ , module Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation+ , module Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing+ , module Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints+ , module Graphics.Vulkan.Extensions.VK_NV_external_memory+ , module Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities+ , module Graphics.Vulkan.Extensions.VK_NV_external_memory_win32+ , module Graphics.Vulkan.Extensions.VK_NV_fill_rectangle+ , module Graphics.Vulkan.Extensions.VK_NV_fragment_coverage_to_color+ , module Graphics.Vulkan.Extensions.VK_NV_fragment_shader_barycentric+ , module Graphics.Vulkan.Extensions.VK_NV_framebuffer_mixed_samples+ , module Graphics.Vulkan.Extensions.VK_NV_geometry_shader_passthrough+ , module Graphics.Vulkan.Extensions.VK_NV_glsl_shader+ , module Graphics.Vulkan.Extensions.VK_NV_mesh_shader+ , module Graphics.Vulkan.Extensions.VK_NV_ray_tracing+ , module Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test+ , module Graphics.Vulkan.Extensions.VK_NV_sample_mask_override_coverage+ , module Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive+ , module Graphics.Vulkan.Extensions.VK_NV_shader_image_footprint+ , module Graphics.Vulkan.Extensions.VK_NV_shader_sm_builtins+ , module Graphics.Vulkan.Extensions.VK_NV_shader_subgroup_partitioned+ , module Graphics.Vulkan.Extensions.VK_NV_shading_rate_image+ , module Graphics.Vulkan.Extensions.VK_NV_viewport_array2+ , module Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle+ , module Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex+ , module Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform+ , module Graphics.Vulkan.Extensions.WSITypes+ ) where+import Graphics.Vulkan.Extensions.Handles+import Graphics.Vulkan.Extensions.VK_AMD_buffer_marker+import Graphics.Vulkan.Extensions.VK_AMD_device_coherent_memory+import Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr import Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count-import Graphics.Vulkan.Extensions.VK_AMD_negative_viewport_height+import Graphics.Vulkan.Extensions.VK_AMD_gcn_shader import Graphics.Vulkan.Extensions.VK_AMD_gpu_shader_half_float+import Graphics.Vulkan.Extensions.VK_AMD_gpu_shader_int16+import Graphics.Vulkan.Extensions.VK_AMD_memory_overallocation_behavior+import Graphics.Vulkan.Extensions.VK_AMD_mixed_attachment_samples+import Graphics.Vulkan.Extensions.VK_AMD_negative_viewport_height+import Graphics.Vulkan.Extensions.VK_AMD_pipeline_compiler_control+import Graphics.Vulkan.Extensions.VK_AMD_rasterization_order import Graphics.Vulkan.Extensions.VK_AMD_shader_ballot-import Graphics.Vulkan.Extensions.VK_AMD_texture_gather_bias_lod-import Graphics.Vulkan.Extensions.VK_AMD_shader_info+import Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties+import Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties2+import Graphics.Vulkan.Extensions.VK_AMD_shader_explicit_vertex_parameter+import Graphics.Vulkan.Extensions.VK_AMD_shader_fragment_mask import Graphics.Vulkan.Extensions.VK_AMD_shader_image_load_store_lod-import Graphics.Vulkan.Extensions.VK_KHR_multiview-import Graphics.Vulkan.Extensions.VK_IMG_format_pvrtc-import Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities-import Graphics.Vulkan.Extensions.VK_NV_external_memory-#if defined(VK_USE_PLATFORM_WIN32_KHR)-import Graphics.Vulkan.Extensions.VK_NV_external_memory_win32-#endif-#if defined(VK_USE_PLATFORM_WIN32_KHR)-import Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex-#endif-import Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2-import Graphics.Vulkan.Extensions.VK_KHR_device_group-import Graphics.Vulkan.Extensions.VK_EXT_validation_flags-#if defined(VK_USE_PLATFORM_VI_NN)-import Graphics.Vulkan.Extensions.VK_NN_vi_surface-#endif-import Graphics.Vulkan.Extensions.VK_KHR_shader_draw_parameters+import Graphics.Vulkan.Extensions.VK_AMD_shader_info+import Graphics.Vulkan.Extensions.VK_AMD_shader_trinary_minmax+import Graphics.Vulkan.Extensions.VK_AMD_texture_gather_bias_lod+import Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer+import Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display+import Graphics.Vulkan.Extensions.VK_EXT_astc_decode_mode+import Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced+import Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address+import Graphics.Vulkan.Extensions.VK_EXT_calibrated_timestamps+import Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering+import Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization+import Graphics.Vulkan.Extensions.VK_EXT_debug_marker+import Graphics.Vulkan.Extensions.VK_EXT_debug_report+import Graphics.Vulkan.Extensions.VK_EXT_debug_utils+import Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable+import Graphics.Vulkan.Extensions.VK_EXT_depth_range_unrestricted+import Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing+import Graphics.Vulkan.Extensions.VK_EXT_direct_mode_display+import Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles+import Graphics.Vulkan.Extensions.VK_EXT_display_control+import Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter+import Graphics.Vulkan.Extensions.VK_EXT_external_memory_dma_buf+import Graphics.Vulkan.Extensions.VK_EXT_external_memory_host+import Graphics.Vulkan.Extensions.VK_EXT_filter_cubic+import Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map+import Graphics.Vulkan.Extensions.VK_EXT_fragment_shader_interlock+import Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive+import Graphics.Vulkan.Extensions.VK_EXT_global_priority+import Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata+import Graphics.Vulkan.Extensions.VK_EXT_headless_surface+import Graphics.Vulkan.Extensions.VK_EXT_host_query_reset+import Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier+import Graphics.Vulkan.Extensions.VK_EXT_index_type_uint8+import Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block+import Graphics.Vulkan.Extensions.VK_EXT_line_rasterization+import Graphics.Vulkan.Extensions.VK_EXT_memory_budget+import Graphics.Vulkan.Extensions.VK_EXT_memory_priority+import Graphics.Vulkan.Extensions.VK_EXT_metal_surface+import Graphics.Vulkan.Extensions.VK_EXT_pci_bus_info+import Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback+import Graphics.Vulkan.Extensions.VK_EXT_post_depth_coverage+import Graphics.Vulkan.Extensions.VK_EXT_queue_family_foreign+import Graphics.Vulkan.Extensions.VK_EXT_sample_locations+import Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax+import Graphics.Vulkan.Extensions.VK_EXT_scalar_block_layout+import Graphics.Vulkan.Extensions.VK_EXT_separate_stencil_usage+import Graphics.Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation+import Graphics.Vulkan.Extensions.VK_EXT_shader_stencil_export import Graphics.Vulkan.Extensions.VK_EXT_shader_subgroup_ballot import Graphics.Vulkan.Extensions.VK_EXT_shader_subgroup_vote-import Graphics.Vulkan.Extensions.VK_KHR_maintenance1+import Graphics.Vulkan.Extensions.VK_EXT_shader_viewport_index_layer+import Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control+import Graphics.Vulkan.Extensions.VK_EXT_swapchain_colorspace+import Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment+import Graphics.Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr+import Graphics.Vulkan.Extensions.VK_EXT_tooling_info+import Graphics.Vulkan.Extensions.VK_EXT_transform_feedback+import Graphics.Vulkan.Extensions.VK_EXT_validation_cache+import Graphics.Vulkan.Extensions.VK_EXT_validation_features+import Graphics.Vulkan.Extensions.VK_EXT_validation_flags+import Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor+import Graphics.Vulkan.Extensions.VK_EXT_ycbcr_image_arrays+import Graphics.Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface+import Graphics.Vulkan.Extensions.VK_GGP_frame_token+import Graphics.Vulkan.Extensions.VK_GGP_stream_descriptor_surface+import Graphics.Vulkan.Extensions.VK_GOOGLE_decorate_string+import Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing+import Graphics.Vulkan.Extensions.VK_GOOGLE_hlsl_functionality1+import Graphics.Vulkan.Extensions.VK_GOOGLE_user_type+import Graphics.Vulkan.Extensions.VK_IMG_filter_cubic+import Graphics.Vulkan.Extensions.VK_IMG_format_pvrtc+import Graphics.Vulkan.Extensions.VK_INTEL_performance_query+import Graphics.Vulkan.Extensions.VK_INTEL_shader_integer_functions2+import Graphics.Vulkan.Extensions.VK_KHR_16bit_storage+import Graphics.Vulkan.Extensions.VK_KHR_8bit_storage+import Graphics.Vulkan.Extensions.VK_KHR_android_surface+import Graphics.Vulkan.Extensions.VK_KHR_bind_memory2+import Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address+import Graphics.Vulkan.Extensions.VK_KHR_create_renderpass2+import Graphics.Vulkan.Extensions.VK_KHR_dedicated_allocation+import Graphics.Vulkan.Extensions.VK_KHR_depth_stencil_resolve+import Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template+import Graphics.Vulkan.Extensions.VK_KHR_device_group import Graphics.Vulkan.Extensions.VK_KHR_device_group_creation-import Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities+import Graphics.Vulkan.Extensions.VK_KHR_display+import Graphics.Vulkan.Extensions.VK_KHR_display_swapchain+import Graphics.Vulkan.Extensions.VK_KHR_draw_indirect_count+import Graphics.Vulkan.Extensions.VK_KHR_driver_properties+import Graphics.Vulkan.Extensions.VK_KHR_external_fence+import Graphics.Vulkan.Extensions.VK_KHR_external_fence_capabilities+import Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd+import Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32 import Graphics.Vulkan.Extensions.VK_KHR_external_memory-#if defined(VK_USE_PLATFORM_WIN32_KHR)-import Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32-#endif+import Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities import Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd-#if defined(VK_USE_PLATFORM_WIN32_KHR)-import Graphics.Vulkan.Extensions.VK_KHR_win32_keyed_mutex-#endif-import Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_capabilities+import Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32 import Graphics.Vulkan.Extensions.VK_KHR_external_semaphore-#if defined(VK_USE_PLATFORM_WIN32_KHR)-import Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32-#endif+import Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_capabilities import Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd-import Graphics.Vulkan.Extensions.VK_KHR_push_descriptor-import Graphics.Vulkan.Extensions.VK_KHR_16bit_storage+import Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32+import Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2+import Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2+import Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2+import Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2+import Graphics.Vulkan.Extensions.VK_KHR_image_format_list+import Graphics.Vulkan.Extensions.VK_KHR_imageless_framebuffer import Graphics.Vulkan.Extensions.VK_KHR_incremental_present-import Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template-import Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands-import Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling-import Graphics.Vulkan.Extensions.VK_EXT_direct_mode_display-#if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)-import Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display-#endif-import Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter-import Graphics.Vulkan.Extensions.VK_EXT_display_control-import Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing-import Graphics.Vulkan.Extensions.VK_NV_sample_mask_override_coverage-import Graphics.Vulkan.Extensions.VK_NV_geometry_shader_passthrough-import Graphics.Vulkan.Extensions.VK_NV_viewport_array2-import Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes-import Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle-import Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles-import Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization-import Graphics.Vulkan.Extensions.VK_EXT_swapchain_colorspace-import Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata-import Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image-import Graphics.Vulkan.Extensions.VK_KHR_external_fence_capabilities-import Graphics.Vulkan.Extensions.VK_KHR_external_fence-#if defined(VK_USE_PLATFORM_WIN32_KHR)-import Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32-#endif-import Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd+import Graphics.Vulkan.Extensions.VK_KHR_maintenance1 import Graphics.Vulkan.Extensions.VK_KHR_maintenance2-import Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2+import Graphics.Vulkan.Extensions.VK_KHR_maintenance3+import Graphics.Vulkan.Extensions.VK_KHR_multiview+import Graphics.Vulkan.Extensions.VK_KHR_performance_query+import Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties+import Graphics.Vulkan.Extensions.VK_KHR_push_descriptor+import Graphics.Vulkan.Extensions.VK_KHR_relaxed_block_layout+import Graphics.Vulkan.Extensions.VK_KHR_sampler_mirror_clamp_to_edge+import Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion+import Graphics.Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts+import Graphics.Vulkan.Extensions.VK_KHR_shader_atomic_int64+import Graphics.Vulkan.Extensions.VK_KHR_shader_clock+import Graphics.Vulkan.Extensions.VK_KHR_shader_draw_parameters+import Graphics.Vulkan.Extensions.VK_KHR_shader_float16_int8+import Graphics.Vulkan.Extensions.VK_KHR_shader_float_controls+import Graphics.Vulkan.Extensions.VK_KHR_shader_non_semantic_info+import Graphics.Vulkan.Extensions.VK_KHR_shader_subgroup_extended_types+import Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image+import Graphics.Vulkan.Extensions.VK_KHR_spirv_1_4+import Graphics.Vulkan.Extensions.VK_KHR_storage_buffer_storage_class+import Graphics.Vulkan.Extensions.VK_KHR_surface+import Graphics.Vulkan.Extensions.VK_KHR_surface_protected_capabilities+import Graphics.Vulkan.Extensions.VK_KHR_swapchain+import Graphics.Vulkan.Extensions.VK_KHR_swapchain_mutable_format+import Graphics.Vulkan.Extensions.VK_KHR_timeline_semaphore+import Graphics.Vulkan.Extensions.VK_KHR_uniform_buffer_standard_layout import Graphics.Vulkan.Extensions.VK_KHR_variable_pointers-#if defined(VK_USE_PLATFORM_IOS_MVK)+import Graphics.Vulkan.Extensions.VK_KHR_vulkan_memory_model+import Graphics.Vulkan.Extensions.VK_KHR_wayland_surface+import Graphics.Vulkan.Extensions.VK_KHR_win32_keyed_mutex+import Graphics.Vulkan.Extensions.VK_KHR_win32_surface+import Graphics.Vulkan.Extensions.VK_KHR_xcb_surface+import Graphics.Vulkan.Extensions.VK_KHR_xlib_surface import Graphics.Vulkan.Extensions.VK_MVK_ios_surface-#endif-#if defined(VK_USE_PLATFORM_MACOS_MVK) import Graphics.Vulkan.Extensions.VK_MVK_macos_surface-#endif-import Graphics.Vulkan.Extensions.VK_EXT_external_memory_dma_buf-import Graphics.Vulkan.Extensions.VK_EXT_queue_family_foreign-import Graphics.Vulkan.Extensions.VK_KHR_dedicated_allocation-import Graphics.Vulkan.Extensions.VK_EXT_debug_utils-#if defined(VK_USE_PLATFORM_ANDROID_KHR)-import Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer-#endif-import Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax-import Graphics.Vulkan.Extensions.VK_KHR_storage_buffer_storage_class-import Graphics.Vulkan.Extensions.VK_AMD_gpu_shader_int16-import Graphics.Vulkan.Extensions.VK_AMD_mixed_attachment_samples-import Graphics.Vulkan.Extensions.VK_AMD_shader_fragment_mask-import Graphics.Vulkan.Extensions.VK_EXT_shader_stencil_export-import Graphics.Vulkan.Extensions.VK_EXT_sample_locations-import Graphics.Vulkan.Extensions.VK_KHR_relaxed_block_layout-import Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2-import Graphics.Vulkan.Extensions.VK_KHR_image_format_list-import Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced+import Graphics.Vulkan.Extensions.VK_NN_vi_surface+import Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands+import Graphics.Vulkan.Extensions.VK_NVX_image_view_handle+import Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes+import Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling+import Graphics.Vulkan.Extensions.VK_NV_compute_shader_derivatives+import Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix+import Graphics.Vulkan.Extensions.VK_NV_corner_sampled_image+import Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode+import Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation+import Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing+import Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints+import Graphics.Vulkan.Extensions.VK_NV_external_memory+import Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities+import Graphics.Vulkan.Extensions.VK_NV_external_memory_win32+import Graphics.Vulkan.Extensions.VK_NV_fill_rectangle import Graphics.Vulkan.Extensions.VK_NV_fragment_coverage_to_color+import Graphics.Vulkan.Extensions.VK_NV_fragment_shader_barycentric import Graphics.Vulkan.Extensions.VK_NV_framebuffer_mixed_samples-import Graphics.Vulkan.Extensions.VK_NV_fill_rectangle-import Graphics.Vulkan.Extensions.VK_EXT_post_depth_coverage-import Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion-import Graphics.Vulkan.Extensions.VK_KHR_bind_memory2-import Graphics.Vulkan.Extensions.VK_EXT_validation_cache-import Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing-import Graphics.Vulkan.Extensions.VK_EXT_shader_viewport_index_layer-import Graphics.Vulkan.Extensions.VK_KHR_maintenance3-import Graphics.Vulkan.Extensions.VK_EXT_global_priority-import Graphics.Vulkan.Extensions.VK_EXT_external_memory_host-import Graphics.Vulkan.Extensions.VK_AMD_buffer_marker-import Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties-import Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor+import Graphics.Vulkan.Extensions.VK_NV_geometry_shader_passthrough+import Graphics.Vulkan.Extensions.VK_NV_glsl_shader+import Graphics.Vulkan.Extensions.VK_NV_mesh_shader+import Graphics.Vulkan.Extensions.VK_NV_ray_tracing+import Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test+import Graphics.Vulkan.Extensions.VK_NV_sample_mask_override_coverage+import Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive+import Graphics.Vulkan.Extensions.VK_NV_shader_image_footprint+import Graphics.Vulkan.Extensions.VK_NV_shader_sm_builtins import Graphics.Vulkan.Extensions.VK_NV_shader_subgroup_partitioned--+import Graphics.Vulkan.Extensions.VK_NV_shading_rate_image+import Graphics.Vulkan.Extensions.VK_NV_viewport_array2+import Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle+import Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex+import Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform+import Graphics.Vulkan.Extensions.WSITypes
+ src/Graphics/Vulkan/Extensions/Handles.hs view
@@ -0,0 +1,356 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.Handles ( ObjectTableNVX(..)+ , IndirectCommandsLayoutNVX(..)+ , ValidationCacheEXT(..)+ , AccelerationStructureNV(..)+ , PerformanceConfigurationINTEL(..)+ , DisplayKHR(..)+ , DisplayModeKHR(..)+ , SurfaceKHR(..)+ , SwapchainKHR(..)+ , DebugReportCallbackEXT(..)+ , DebugUtilsMessengerEXT(..)+ , Instance(..)+ , PhysicalDevice(..)+ , Device(..)+ , Queue(..)+ , CommandBuffer(..)+ , DeviceMemory(..)+ , CommandPool(..)+ , Buffer(..)+ , BufferView(..)+ , Image(..)+ , ImageView(..)+ , ShaderModule(..)+ , Pipeline(..)+ , PipelineLayout(..)+ , Sampler(..)+ , DescriptorSet(..)+ , DescriptorSetLayout(..)+ , Fence(..)+ , Semaphore(..)+ , QueryPool(..)+ , Framebuffer(..)+ , RenderPass(..)+ , PipelineCache(..)+ , DescriptorUpdateTemplate(..)+ , SamplerYcbcrConversion(..)+ ) where++import GHC.Show (showParen)+import Numeric (showHex)+import Foreign.Storable (Storable)+import Data.Word (Word64)+import Graphics.Vulkan.Core10.APIConstants (IsHandle)+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Core10.Handles (Buffer(..))+import Graphics.Vulkan.Core10.Handles (BufferView(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandPool(..))+import Graphics.Vulkan.Core10.Handles (DescriptorSet(..))+import Graphics.Vulkan.Core10.Handles (DescriptorSetLayout(..))+import Graphics.Vulkan.Core11.Handles (DescriptorUpdateTemplate(..))+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Core10.Handles (DeviceMemory(..))+import Graphics.Vulkan.Core10.Handles (Fence(..))+import Graphics.Vulkan.Core10.Handles (Framebuffer(..))+import Graphics.Vulkan.Core10.Handles (Image(..))+import Graphics.Vulkan.Core10.Handles (ImageView(..))+import Graphics.Vulkan.Core10.Handles (Instance(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (Pipeline(..))+import Graphics.Vulkan.Core10.Handles (PipelineCache(..))+import Graphics.Vulkan.Core10.Handles (PipelineLayout(..))+import Graphics.Vulkan.Core10.Handles (QueryPool(..))+import Graphics.Vulkan.Core10.Handles (Queue(..))+import Graphics.Vulkan.Core10.Handles (RenderPass(..))+import Graphics.Vulkan.Core10.Handles (Sampler(..))+import Graphics.Vulkan.Core11.Handles (SamplerYcbcrConversion(..))+import Graphics.Vulkan.Core10.Handles (Semaphore(..))+import Graphics.Vulkan.Core10.Handles (ShaderModule(..))+-- | VkObjectTableNVX - Opaque handle to an object table+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdProcessCommandsInfoNVX',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdReserveSpaceForCommandsInfoNVX',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.createObjectTableNVX',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.destroyObjectTableNVX',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.registerObjectsNVX',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.unregisterObjectsNVX'+newtype ObjectTableNVX = ObjectTableNVX Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show ObjectTableNVX where+ showsPrec p (ObjectTableNVX x) = showParen (p >= 11) (showString "ObjectTableNVX 0x" . showHex x)+++-- | VkIndirectCommandsLayoutNVX - Opaque handle to an indirect commands+-- layout object+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdProcessCommandsInfoNVX',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.CmdReserveSpaceForCommandsInfoNVX',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.createIndirectCommandsLayoutNVX',+-- 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.destroyIndirectCommandsLayoutNVX'+newtype IndirectCommandsLayoutNVX = IndirectCommandsLayoutNVX Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show IndirectCommandsLayoutNVX where+ showsPrec p (IndirectCommandsLayoutNVX x) = showParen (p >= 11) (showString "IndirectCommandsLayoutNVX 0x" . showHex x)+++-- | VkValidationCacheEXT - Opaque handle to a validation cache object+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.ShaderModuleValidationCacheCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.createValidationCacheEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.destroyValidationCacheEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.getValidationCacheDataEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_validation_cache.mergeValidationCachesEXT'+newtype ValidationCacheEXT = ValidationCacheEXT Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show ValidationCacheEXT where+ showsPrec p (ValidationCacheEXT x) = showParen (p >= 11) (showString "ValidationCacheEXT 0x" . showHex x)+++-- | VkAccelerationStructureNV - Opaque handle to an acceleration structure+-- object+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.AccelerationStructureMemoryRequirementsInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.BindAccelerationStructureMemoryInfoNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.createAccelerationStructureNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.destroyAccelerationStructureNV',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.getAccelerationStructureHandleNV'+newtype AccelerationStructureNV = AccelerationStructureNV Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show AccelerationStructureNV where+ showsPrec p (AccelerationStructureNV x) = showParen (p >= 11) (showString "AccelerationStructureNV 0x" . showHex x)+++-- | VkPerformanceConfigurationINTEL - Device configuration for performance+-- queries+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.acquirePerformanceConfigurationINTEL',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.queueSetPerformanceConfigurationINTEL',+-- 'Graphics.Vulkan.Extensions.VK_INTEL_performance_query.releasePerformanceConfigurationINTEL'+newtype PerformanceConfigurationINTEL = PerformanceConfigurationINTEL Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show PerformanceConfigurationINTEL where+ showsPrec p (PerformanceConfigurationINTEL x) = showParen (p >= 11) (showString "PerformanceConfigurationINTEL 0x" . showHex x)+++-- | VkDisplayKHR - Opaque handle to a display object+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplayPlanePropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplayPropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display.acquireXlibDisplayEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.createDisplayModeKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.displayPowerControlEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2.getDisplayModeProperties2KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.getDisplayModePropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.getDisplayPlaneSupportedDisplaysKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display.getRandROutputDisplayEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.registerDisplayEventEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_direct_mode_display.releaseDisplayEXT'+newtype DisplayKHR = DisplayKHR Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show DisplayKHR where+ showsPrec p (DisplayKHR x) = showParen (p >= 11) (showString "DisplayKHR 0x" . showHex x)+++-- | VkDisplayModeKHR - Opaque handle to a display mode object+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplayModePropertiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayPlaneInfo2KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplaySurfaceCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.createDisplayModeKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.getDisplayPlaneCapabilitiesKHR'+newtype DisplayModeKHR = DisplayModeKHR Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show DisplayModeKHR where+ showsPrec p (DisplayModeKHR x) = showParen (p >= 11) (showString "DisplayModeKHR 0x" . showHex x)+++-- | VkSurfaceKHR - Opaque handle to a surface object+--+-- = Description+--+-- The @VK_KHR_surface@ extension declares the 'SurfaceKHR' object, and+-- provides a function for destroying 'SurfaceKHR' objects. Separate+-- platform-specific extensions each provide a function for creating a+-- 'SurfaceKHR' object for the respective platform. From the application’s+-- perspective this is an opaque handle, just like the handles of other+-- Vulkan objects.+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_android_surface.createAndroidSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.createDisplayPlaneSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_headless_surface.createHeadlessSurfaceEXT',+-- 'Graphics.Vulkan.Extensions.VK_MVK_ios_surface.createIOSSurfaceMVK',+-- 'Graphics.Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface.createImagePipeSurfaceFUCHSIA',+-- 'Graphics.Vulkan.Extensions.VK_MVK_macos_surface.createMacOSSurfaceMVK',+-- 'Graphics.Vulkan.Extensions.VK_EXT_metal_surface.createMetalSurfaceEXT',+-- 'Graphics.Vulkan.Extensions.VK_GGP_stream_descriptor_surface.createStreamDescriptorSurfaceGGP',+-- 'Graphics.Vulkan.Extensions.VK_NN_vi_surface.createViSurfaceNN',+-- 'Graphics.Vulkan.Extensions.VK_KHR_wayland_surface.createWaylandSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_win32_surface.createWin32SurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_xcb_surface.createXcbSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_xlib_surface.createXlibSurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.destroySurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.getDeviceGroupSurfacePresentModesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.getPhysicalDevicePresentRectanglesKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.getPhysicalDeviceSurfaceCapabilities2EXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceFormatsKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfacePresentModesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR'+newtype SurfaceKHR = SurfaceKHR Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show SurfaceKHR where+ showsPrec p (SurfaceKHR x) = showParen (p >= 11) (showString "SurfaceKHR 0x" . showHex x)+++-- | VkSwapchainKHR - Opaque handle to a swapchain object+--+-- = Description+--+-- A swapchain is an abstraction for an array of presentable images that+-- are associated with a surface. The presentable images are represented by+-- 'Graphics.Vulkan.Core10.Handles.Image' objects created by the platform.+-- One image (which /can/ be an array image for multiview\/stereoscopic-3D+-- surfaces) is displayed at a time, but multiple images /can/ be queued+-- for presentation. An application renders to the image, and then queues+-- the image for presentation to the surface.+--+-- A native window /cannot/ be associated with more than one non-retired+-- swapchain at a time. Further, swapchains /cannot/ be created for native+-- windows that have a non-Vulkan graphics API surface associated with+-- them.+--+-- Note+--+-- The presentation engine is an abstraction for the platform’s compositor+-- or display engine.+--+-- The presentation engine /may/ be synchronous or asynchronous with+-- respect to the application and\/or logical device.+--+-- Some implementations /may/ use the device’s graphics queue or dedicated+-- presentation hardware to perform presentation.+--+-- The presentable images of a swapchain are owned by the presentation+-- engine. An application /can/ acquire use of a presentable image from the+-- presentation engine. Use of a presentable image /must/ occur only after+-- the image is returned by+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.acquireNextImageKHR', and+-- before it is presented by+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR'. This+-- includes transitioning the image layout and rendering commands.+--+-- An application /can/ acquire use of a presentable image with+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.acquireNextImageKHR'. After+-- acquiring a presentable image and before modifying it, the application+-- /must/ use a synchronization primitive to ensure that the presentation+-- engine has finished reading from the image. The application /can/ then+-- transition the image’s layout, queue rendering commands to it, etc.+-- Finally, the application presents the image with+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR', which+-- releases the acquisition of the image.+--+-- The presentation engine controls the order in which presentable images+-- are acquired for use by the application.+--+-- Note+--+-- This allows the platform to handle situations which require out-of-order+-- return of images after presentation. At the same time, it allows the+-- application to generate command buffers referencing all of the images in+-- the swapchain at initialization time, rather than in its main loop.+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.AcquireNextImageInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.BindImageMemorySwapchainInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.acquireFullScreenExclusiveModeEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.acquireNextImageKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.createSharedSwapchainsKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.destroySwapchainKHR',+-- 'Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing.getPastPresentationTimingGOOGLE',+-- 'Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing.getRefreshCycleDurationGOOGLE',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.getSwapchainCounterEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.getSwapchainImagesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.getSwapchainStatusKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.releaseFullScreenExclusiveModeEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata.setHdrMetadataEXT',+-- 'Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr.setLocalDimmingAMD'+newtype SwapchainKHR = SwapchainKHR Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show SwapchainKHR where+ showsPrec p (SwapchainKHR x) = showParen (p >= 11) (showString "SwapchainKHR 0x" . showHex x)+++-- | VkDebugReportCallbackEXT - Opaque handle to a debug report callback+-- object+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.createDebugReportCallbackEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.destroyDebugReportCallbackEXT'+newtype DebugReportCallbackEXT = DebugReportCallbackEXT Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show DebugReportCallbackEXT where+ showsPrec p (DebugReportCallbackEXT x) = showParen (p >= 11) (showString "DebugReportCallbackEXT 0x" . showHex x)+++-- | VkDebugUtilsMessengerEXT - Opaque handle to a debug messenger object+--+-- = Description+--+-- The debug messenger will provide detailed feedback on the application’s+-- use of Vulkan when events of interest occur. When an event of interest+-- does occur, the debug messenger will submit a debug message to the debug+-- callback that was provided during its creation. Additionally, the debug+-- messenger is responsible with filtering out debug messages that the+-- callback is not interested in and will only provide desired debug+-- messages.+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.createDebugUtilsMessengerEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.destroyDebugUtilsMessengerEXT'+newtype DebugUtilsMessengerEXT = DebugUtilsMessengerEXT Word64+ deriving newtype (Eq, Ord, Storable, Zero)+ deriving anyclass (IsHandle)+instance Show DebugUtilsMessengerEXT where+ showsPrec p (DebugUtilsMessengerEXT x) = showParen (p >= 11) (showString "DebugUtilsMessengerEXT 0x" . showHex x)+
+ src/Graphics/Vulkan/Extensions/Handles.hs-boot view
@@ -0,0 +1,48 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.Handles ( AccelerationStructureNV+ , DebugReportCallbackEXT+ , DebugUtilsMessengerEXT+ , DisplayKHR+ , DisplayModeKHR+ , IndirectCommandsLayoutNVX+ , ObjectTableNVX+ , PerformanceConfigurationINTEL+ , SurfaceKHR+ , SwapchainKHR+ , ValidationCacheEXT+ ) where++++data AccelerationStructureNV+++data DebugReportCallbackEXT+++data DebugUtilsMessengerEXT+++data DisplayKHR+++data DisplayModeKHR+++data IndirectCommandsLayoutNVX+++data ObjectTableNVX+++data PerformanceConfigurationINTEL+++data SurfaceKHR+++data SwapchainKHR+++data ValidationCacheEXT+
src/Graphics/Vulkan/Extensions/VK_AMD_buffer_marker.hs view
@@ -1,57 +1,44 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}--module Graphics.Vulkan.Extensions.VK_AMD_buffer_marker- ( pattern VK_AMD_BUFFER_MARKER_SPEC_VERSION- , pattern VK_AMD_BUFFER_MARKER_EXTENSION_NAME- , vkCmdWriteBufferMarkerAMD- ) where--import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDeviceSize- )-import Graphics.Vulkan.Core10.MemoryManagement- ( VkBuffer- )-import Graphics.Vulkan.Core10.Queue- ( VkPipelineStageFlagBits(..)- , VkCommandBuffer- )+module Graphics.Vulkan.Extensions.VK_AMD_buffer_marker ( cmdWriteBufferMarkerAMD+ , AMD_BUFFER_MARKER_SPEC_VERSION+ , pattern AMD_BUFFER_MARKER_SPEC_VERSION+ , AMD_BUFFER_MARKER_EXTENSION_NAME+ , pattern AMD_BUFFER_MARKER_EXTENSION_NAME+ ) where +import Data.String (IsString)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.Core10.Handles (Buffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdWriteBufferMarkerAMD))+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits)+import Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdWriteBufferMarkerAMD+ :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlagBits -> Buffer -> DeviceSize -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> PipelineStageFlagBits -> Buffer -> DeviceSize -> Word32 -> IO () --- No documentation found for TopLevel "VK_AMD_BUFFER_MARKER_SPEC_VERSION"-pattern VK_AMD_BUFFER_MARKER_SPEC_VERSION :: Integral a => a-pattern VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_AMD_BUFFER_MARKER_EXTENSION_NAME"-pattern VK_AMD_BUFFER_MARKER_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" -- | vkCmdWriteBufferMarkerAMD - Execute a pipelined write of a marker value -- into a buffer -- -- = Parameters ----- - @commandBuffer@ is the command buffer into which the command will be--- recorded.+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded. -- -- - @pipelineStage@ is one of the--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' values,--- specifying the pipeline stage whose completion triggers the marker--- write.+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+-- values, specifying the pipeline stage whose completion triggers the+-- marker write. -- -- - @dstBuffer@ is the buffer where the marker will be written to. --@@ -65,26 +52,28 @@ -- The command will write the 32-bit marker value into the buffer only -- after all preceding commands have finished executing up to at least the -- specified pipeline stage. This includes the completion of other--- preceding @vkCmdWriteBufferMarkerAMD@ commands so long as their--- specified pipeline stages occur either at the same time or earlier than--- this command’s specified @pipelineStage@.+-- preceding 'cmdWriteBufferMarkerAMD' commands so long as their specified+-- pipeline stages occur either at the same time or earlier than this+-- command’s specified @pipelineStage@. -- -- While consecutive buffer marker writes with the same @pipelineStage@ -- parameter are implicitly complete in submission order, memory and -- execution dependencies between buffer marker writes and other operations -- must still be explicitly ordered using synchronization commands. The -- access scope for buffer marker writes falls under the--- @VK_ACCESS_TRANSFER_WRITE_BIT@, and the pipeline stages for identifying--- the synchronization scope /must/ include both @pipelineStage@ and--- @VK_PIPELINE_STAGE_TRANSFER_BIT@.+-- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_WRITE_BIT',+-- and the pipeline stages for identifying the synchronization scope /must/+-- include both @pipelineStage@ and+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT'. ----- __Note__+-- Note ----- Similar to @vkCmdWriteTimestamp@, if an implementation is unable to--- write a marker at any specific pipeline stage, it /may/ instead do so at--- any logically later stage.+-- Similar to+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp', if an+-- implementation is unable to write a marker at any specific pipeline+-- stage, it /may/ instead do so at any logically later stage. ----- __Note__+-- Note -- -- Implementations /may/ only support a limited number of pipelined marker -- write operations in flight at a given time, thus excessive number of@@ -96,58 +85,82 @@ -- minus @4@. -- -- - @dstBuffer@ /must/ have been created with--- @VK_BUFFER_USAGE_TRANSFER_DST_BIT@ usage flag+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'+-- usage flag -- -- - If @dstBuffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object+-- contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object -- -- - @dstOffset@ /must/ be a multiple of @4@ -- -- == Valid Usage (Implicit) ----- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle -- -- - @pipelineStage@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits' value+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+-- value ----- - @dstBuffer@ /must/ be a valid @VkBuffer@ handle+-- - @dstBuffer@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle ----- - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state> ----- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support transfer, graphics, or compute operations+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support transfer, graphics, or compute operations ----- - Both of @commandBuffer@, and @dstBuffer@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and+-- @dstBuffer@ /must/ have been created, allocated, or retrieved from+-- the same 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization ----- - Host access to @commandBuffer@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized ----- - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized -- -- == Command Properties -- -- \' ----- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Transfer | Transfer |--- | Secondary | | Graphics | |--- | | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Transfer | Transfer |+-- | Secondary | | Graphics | |+-- | | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ -- -- = See Also ----- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@,--- 'Graphics.Vulkan.Core10.Queue.VkPipelineStageFlagBits'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdWriteBufferMarkerAMD" vkCmdWriteBufferMarkerAMD :: ("commandBuffer" ::: VkCommandBuffer) -> ("pipelineStage" ::: VkPipelineStageFlagBits) -> ("dstBuffer" ::: VkBuffer) -> ("dstOffset" ::: VkDeviceSize) -> ("marker" ::: Word32) -> IO ()+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'+cmdWriteBufferMarkerAMD :: CommandBuffer -> PipelineStageFlagBits -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("marker" ::: Word32) -> IO ()+cmdWriteBufferMarkerAMD commandBuffer pipelineStage dstBuffer dstOffset marker = do+ let vkCmdWriteBufferMarkerAMD' = mkVkCmdWriteBufferMarkerAMD (pVkCmdWriteBufferMarkerAMD (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdWriteBufferMarkerAMD' (commandBufferHandle (commandBuffer)) (pipelineStage) (dstBuffer) (dstOffset) (marker)+ pure $ ()+++type AMD_BUFFER_MARKER_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_AMD_BUFFER_MARKER_SPEC_VERSION"+pattern AMD_BUFFER_MARKER_SPEC_VERSION :: forall a . Integral a => a+pattern AMD_BUFFER_MARKER_SPEC_VERSION = 1+++type AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker"++-- No documentation found for TopLevel "VK_AMD_BUFFER_MARKER_EXTENSION_NAME"+pattern AMD_BUFFER_MARKER_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker"+
+ src/Graphics/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs view
@@ -0,0 +1,95 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_AMD_device_coherent_memory ( PhysicalDeviceCoherentMemoryFeaturesAMD(..)+ , AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION+ , pattern AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION+ , AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME+ , pattern AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD))+-- | VkPhysicalDeviceCoherentMemoryFeaturesAMD - Structure describing whether+-- device coherent memory can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceCoherentMemoryFeaturesAMD' structure+-- describe the following features:+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceCoherentMemoryFeaturesAMD = PhysicalDeviceCoherentMemoryFeaturesAMD+ { -- | @deviceCoherentMemory@ indicates that the implementation supports+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkMemoryPropertyFlagBits device coherent memory>.+ deviceCoherentMemory :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceCoherentMemoryFeaturesAMD++instance ToCStruct PhysicalDeviceCoherentMemoryFeaturesAMD where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceCoherentMemoryFeaturesAMD{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (deviceCoherentMemory))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceCoherentMemoryFeaturesAMD where+ peekCStruct p = do+ deviceCoherentMemory <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceCoherentMemoryFeaturesAMD+ (bool32ToBool deviceCoherentMemory)++instance Storable PhysicalDeviceCoherentMemoryFeaturesAMD where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceCoherentMemoryFeaturesAMD where+ zero = PhysicalDeviceCoherentMemoryFeaturesAMD+ zero+++type AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION"+pattern AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION :: forall a . Integral a => a+pattern AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1+++type AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory"++-- No documentation found for TopLevel "VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME"+pattern AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory"+
+ src/Graphics/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_AMD_device_coherent_memory (PhysicalDeviceCoherentMemoryFeaturesAMD) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceCoherentMemoryFeaturesAMD++instance ToCStruct PhysicalDeviceCoherentMemoryFeaturesAMD+instance Show PhysicalDeviceCoherentMemoryFeaturesAMD++instance FromCStruct PhysicalDeviceCoherentMemoryFeaturesAMD+
+ src/Graphics/Vulkan/Extensions/VK_AMD_display_native_hdr.hs view
@@ -0,0 +1,225 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr ( setLocalDimmingAMD+ , DisplayNativeHdrSurfaceCapabilitiesAMD(..)+ , SwapchainDisplayNativeHdrCreateInfoAMD(..)+ , AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION+ , pattern AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION+ , AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME+ , pattern AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME+ , SwapchainKHR(..)+ , ColorSpaceKHR(..)+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.BaseType (Bool32(..))+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkSetLocalDimmingAMD))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR)+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD))+import Graphics.Vulkan.Extensions.VK_EXT_swapchain_colorspace (ColorSpaceKHR(..))+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkSetLocalDimmingAMD+ :: FunPtr (Ptr Device_T -> SwapchainKHR -> Bool32 -> IO ()) -> Ptr Device_T -> SwapchainKHR -> Bool32 -> IO ()++-- | vkSetLocalDimmingAMD - Set Local Dimming+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the device associated+-- with @swapChain@.+--+-- - @swapChain@ handle to enable local dimming.+--+-- - @localDimmingEnable@ specifies whether local dimming is enabled for+-- the swapchain.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @swapChain@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR' handle+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.Device', and @swapChain@+-- /must/ have been created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Instance'+--+-- == Valid Usage+--+-- - It is only valid to call 'setLocalDimmingAMD' if+-- 'DisplayNativeHdrSurfaceCapabilitiesAMD'::@localDimmingSupport@ is+-- supported.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR'+setLocalDimmingAMD :: Device -> SwapchainKHR -> ("localDimmingEnable" ::: Bool) -> IO ()+setLocalDimmingAMD device swapChain localDimmingEnable = do+ let vkSetLocalDimmingAMD' = mkVkSetLocalDimmingAMD (pVkSetLocalDimmingAMD (deviceCmds (device :: Device)))+ vkSetLocalDimmingAMD' (deviceHandle (device)) (swapChain) (boolToBool32 (localDimmingEnable))+ pure $ ()+++-- | VkDisplayNativeHdrSurfaceCapabilitiesAMD - Structure describing display+-- native HDR specific capabilities of a surface+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DisplayNativeHdrSurfaceCapabilitiesAMD = DisplayNativeHdrSurfaceCapabilitiesAMD+ { -- | @localDimmingSupport@ specifies whether the surface supports local+ -- dimming. If this is 'Graphics.Vulkan.Core10.BaseType.TRUE',+ -- 'SwapchainDisplayNativeHdrCreateInfoAMD' /can/ be used to explicitly+ -- enable or disable local dimming for the surface. Local dimming may also+ -- be overriden by 'setLocalDimmingAMD' during the lifetime of the+ -- swapchain.+ localDimmingSupport :: Bool }+ deriving (Typeable)+deriving instance Show DisplayNativeHdrSurfaceCapabilitiesAMD++instance ToCStruct DisplayNativeHdrSurfaceCapabilitiesAMD where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DisplayNativeHdrSurfaceCapabilitiesAMD{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (localDimmingSupport))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct DisplayNativeHdrSurfaceCapabilitiesAMD where+ peekCStruct p = do+ localDimmingSupport <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ DisplayNativeHdrSurfaceCapabilitiesAMD+ (bool32ToBool localDimmingSupport)++instance Storable DisplayNativeHdrSurfaceCapabilitiesAMD where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DisplayNativeHdrSurfaceCapabilitiesAMD where+ zero = DisplayNativeHdrSurfaceCapabilitiesAMD+ zero+++-- | VkSwapchainDisplayNativeHdrCreateInfoAMD - Structure specifying display+-- native HDR parameters of a newly created swapchain object+--+-- = Description+--+-- If the @pNext@ chain of+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'+-- does not include this structure, the default value for+-- @localDimmingEnable@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', meaning+-- local dimming is initially enabled for the swapchain.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD'+--+-- == Valid Usage+--+-- - It is only valid to set @localDimmingEnable@ to+-- 'Graphics.Vulkan.Core10.BaseType.TRUE' if+-- 'DisplayNativeHdrSurfaceCapabilitiesAMD'::@localDimmingSupport@ is+-- supported.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data SwapchainDisplayNativeHdrCreateInfoAMD = SwapchainDisplayNativeHdrCreateInfoAMD+ { -- | @localDimmingEnable@ specifies whether local dimming is enabled for the+ -- swapchain.+ localDimmingEnable :: Bool }+ deriving (Typeable)+deriving instance Show SwapchainDisplayNativeHdrCreateInfoAMD++instance ToCStruct SwapchainDisplayNativeHdrCreateInfoAMD where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SwapchainDisplayNativeHdrCreateInfoAMD{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (localDimmingEnable))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct SwapchainDisplayNativeHdrCreateInfoAMD where+ peekCStruct p = do+ localDimmingEnable <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ SwapchainDisplayNativeHdrCreateInfoAMD+ (bool32ToBool localDimmingEnable)++instance Storable SwapchainDisplayNativeHdrCreateInfoAMD where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SwapchainDisplayNativeHdrCreateInfoAMD where+ zero = SwapchainDisplayNativeHdrCreateInfoAMD+ zero+++type AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION"+pattern AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION :: forall a . Integral a => a+pattern AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1+++type AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr"++-- No documentation found for TopLevel "VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME"+pattern AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr"+
+ src/Graphics/Vulkan/Extensions/VK_AMD_display_native_hdr.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr ( DisplayNativeHdrSurfaceCapabilitiesAMD+ , SwapchainDisplayNativeHdrCreateInfoAMD+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data DisplayNativeHdrSurfaceCapabilitiesAMD++instance ToCStruct DisplayNativeHdrSurfaceCapabilitiesAMD+instance Show DisplayNativeHdrSurfaceCapabilitiesAMD++instance FromCStruct DisplayNativeHdrSurfaceCapabilitiesAMD+++data SwapchainDisplayNativeHdrCreateInfoAMD++instance ToCStruct SwapchainDisplayNativeHdrCreateInfoAMD+instance Show SwapchainDisplayNativeHdrCreateInfoAMD++instance FromCStruct SwapchainDisplayNativeHdrCreateInfoAMD+
src/Graphics/Vulkan/Extensions/VK_AMD_draw_indirect_count.hs view
@@ -1,491 +1,33 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}+module Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count ( cmdDrawIndirectCountAMD+ , cmdDrawIndexedIndirectCountAMD+ , AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION+ , pattern AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION+ , AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME+ , pattern AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count- ( pattern VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION- , pattern VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME- , vkCmdDrawIndirectCountAMD- , vkCmdDrawIndexedIndirectCountAMD- ) where+import Data.String (IsString)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count (cmdDrawIndexedIndirectCount)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count (cmdDrawIndirectCount)+-- No documentation found for TopLevel "vkCmdDrawIndirectCountAMD"+cmdDrawIndirectCountAMD = cmdDrawIndirectCount -import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Graphics.Vulkan.NamedType- ( (:::)- ) +-- No documentation found for TopLevel "vkCmdDrawIndexedIndirectCountAMD"+cmdDrawIndexedIndirectCountAMD = cmdDrawIndexedIndirectCount -import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDeviceSize- )-import Graphics.Vulkan.Core10.MemoryManagement- ( VkBuffer- )-import Graphics.Vulkan.Core10.Queue- ( VkCommandBuffer- ) +type AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 -- No documentation found for TopLevel "VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION"-pattern VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION :: Integral a => a-pattern VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1+pattern AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION :: forall a . Integral a => a+pattern AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2+++type AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count"+ -- No documentation found for TopLevel "VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME"-pattern VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count"--- | vkCmdDrawIndirectCountAMD - Perform an indirect draw with the draw count--- sourced from a buffer------ = Parameters------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @buffer@ is the buffer containing draw parameters.------ - @offset@ is the byte offset into @buffer@ where parameters begin.------ - @countBuffer@ is the buffer containing the draw count.------ - @countBufferOffset@ is the byte offset into @countBuffer@ where the--- draw count begins.------ - @maxDrawCount@ specifies the maximum number of draws that will be--- executed. The actual number of executed draw calls is the minimum of--- the count specified in @countBuffer@ and @maxDrawCount@.------ - @stride@ is the byte stride between successive sets of draw--- parameters.------ = Description------ @vkCmdDrawIndirectCountAMD@ behaves similarly to--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDrawIndirect' except--- that the draw count is read by the device from a buffer during--- execution. The command will read an unsigned 32-bit integer from--- @countBuffer@ located at @countBufferOffset@ and use this as the draw--- count.------ == Valid Usage------ - If @buffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @buffer@ /must/ have been created with the--- @VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT@ bit set------ - If @countBuffer@ is non-sparse then it /must/ be bound completely--- and contiguously to a single @VkDeviceMemory@ object------ - @countBuffer@ /must/ have been created with the--- @VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT@ bit set------ - @offset@ /must/ be a multiple of @4@------ - @countBufferOffset@ /must/ be a multiple of @4@------ - @stride@ /must/ be a multiple of @4@ and /must/ be greater than or--- equal to @sizeof@(@VkDrawIndirectCommand@)------ - If @maxDrawCount@ is greater than or equal to @1@, (@stride@ ×--- (@maxDrawCount@ - 1) + @offset@ + @sizeof@(@VkDrawIndirectCommand@))--- /must/ be less than or equal to the size of @buffer@------ - If the--- [drawIndirectFirstInstance](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-drawIndirectFirstInstance)--- feature is not enabled, all the @firstInstance@ members of the--- @VkDrawIndirectCommand@ structures accessed by this command /must/--- be @0@------ - The current render pass /must/ be--- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)--- with the @renderPass@ member of the @VkGraphicsPipelineCreateInfo@--- structure specified when creating the @VkPipeline@ bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@.------ - The subpass index of the current render pass /must/ be equal to the--- @subpass@ member of the @VkGraphicsPipelineCreateInfo@ structure--- specified when creating the @VkPipeline@ bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@.------ - For each set /n/ that is statically used by the @VkPipeline@ bound--- to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a descriptor set /must/ have--- been bound to /n/ at @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a--- @VkPipelineLayout@ that is compatible for set /n/, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)------ - For each push constant that is statically used by the @VkPipeline@--- bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a push constant value--- /must/ have been set for @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a--- @VkPipelineLayout@ that is compatible for push constants, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)------ - Descriptors in each bound descriptor set, specified via--- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically--- used by the bound @VkPipeline@ object, specified via--- @vkCmdBindPipeline@------ - All vertex input bindings accessed via vertex input variables--- declared in the vertex shader entry point’s interface /must/ have--- valid buffers bound------ - A valid graphics pipeline /must/ be bound to the current command--- buffer with @VK_PIPELINE_BIND_POINT_GRAPHICS@------ - If the @VkPipeline@ object bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@ requires any dynamic state, that--- state /must/ have been set on the current command buffer------ - If the count stored in @countBuffer@ is equal to @1@, (@offset@ +--- @sizeof@(@VkDrawIndirectCommand@)) /must/ be less than or equal to--- the size of @buffer@------ - If the count stored in @countBuffer@ is greater than @1@, (@stride@--- × (@drawCount@ - 1) + @offset@ + @sizeof@(@VkDrawIndirectCommand@))--- /must/ be less than or equal to the size of @buffer@------ - The count stored in @countBuffer@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxDrawIndirectCount@------ - Every input attachment used by the current subpass /must/ be bound--- to the pipeline via a descriptor set------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used to sample from any--- @VkImage@ with a @VkImageView@ of the type @VK_IMAGE_VIEW_TYPE_3D@,--- @VK_IMAGE_VIEW_TYPE_CUBE@, @VK_IMAGE_VIEW_TYPE_1D_ARRAY@,--- @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@, in--- any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions with--- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that--- includes a LOD bias or any offset values, in any shader stage------ - If the [robust buffer--- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a uniform--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - If the [robust buffer--- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a storage--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - Any @VkImageView@ being sampled with @VK_FILTER_LINEAR@ as a result--- of this command /must/ be of a format which supports linear--- filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ - Image subresources used as attachments in the current render pass--- /must/ not be accessed in any way other than as an attachment by--- this command.------ - If the draw is recorded in a render pass instance with multiview--- enabled, the maximum instance index /must/ be less than or equal to--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview.VkPhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.------ - If the bound graphics pipeline was created with--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@--- set to @VK_TRUE@ and the current subpass has a depth\/stencil--- attachment, then that attachment /must/ have been created with the--- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ bit set------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @buffer@ /must/ be a valid @VkBuffer@ handle------ - @countBuffer@ /must/ be a valid @VkBuffer@ handle------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called inside of a render pass instance------ - Each of @buffer@, @commandBuffer@, and @countBuffer@ /must/ have--- been created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Inside | Graphics | Graphics |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdDrawIndirectCountAMD" vkCmdDrawIndirectCountAMD :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()--- | vkCmdDrawIndexedIndirectCountAMD - Perform an indexed indirect draw with--- the draw count sourced from a buffer------ = Parameters------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @buffer@ is the buffer containing draw parameters.------ - @offset@ is the byte offset into @buffer@ where parameters begin.------ - @countBuffer@ is the buffer containing the draw count.------ - @countBufferOffset@ is the byte offset into @countBuffer@ where the--- draw count begins.------ - @maxDrawCount@ specifies the maximum number of draws that will be--- executed. The actual number of executed draw calls is the minimum of--- the count specified in @countBuffer@ and @maxDrawCount@.------ - @stride@ is the byte stride between successive sets of draw--- parameters.------ = Description------ @vkCmdDrawIndexedIndirectCountAMD@ behaves similarly to--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdDrawIndexedIndirect'--- except that the draw count is read by the device from a buffer during--- execution. The command will read an unsigned 32-bit integer from--- @countBuffer@ located at @countBufferOffset@ and use this as the draw--- count.------ == Valid Usage------ - If @buffer@ is non-sparse then it /must/ be bound completely and--- contiguously to a single @VkDeviceMemory@ object------ - @buffer@ /must/ have been created with the--- @VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT@ bit set------ - If @countBuffer@ is non-sparse then it /must/ be bound completely--- and contiguously to a single @VkDeviceMemory@ object------ - @countBuffer@ /must/ have been created with the--- @VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT@ bit set------ - @offset@ /must/ be a multiple of @4@------ - @countBufferOffset@ /must/ be a multiple of @4@------ - @stride@ /must/ be a multiple of @4@ and /must/ be greater than or--- equal to @sizeof@(@VkDrawIndirectCommand@)------ - If @maxDrawCount@ is greater than or equal to @1@, (@stride@ ×--- (@maxDrawCount@ - 1) + @offset@ + @sizeof@(@VkDrawIndirectCommand@))--- /must/ be less than or equal to the size of @buffer@------ - If the--- [drawIndirectFirstInstance](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-drawIndirectFirstInstance)--- feature is not enabled, all the @firstInstance@ members of the--- @VkDrawIndexedIndirectCommand@ structures accessed by this command--- /must/ be @0@------ - The current render pass /must/ be--- [compatible](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#renderpass-compatibility)--- with the @renderPass@ member of the @VkGraphicsPipelineCreateInfo@--- structure specified when creating the @VkPipeline@ bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@.------ - The subpass index of the current render pass /must/ be equal to the--- @subpass@ member of the @VkGraphicsPipelineCreateInfo@ structure--- specified when creating the @VkPipeline@ bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@.------ - For each set /n/ that is statically used by the @VkPipeline@ bound--- to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a descriptor set /must/ have--- been bound to /n/ at @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a--- @VkPipelineLayout@ that is compatible for set /n/, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)------ - For each push constant that is statically used by the @VkPipeline@--- bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@, a push constant value--- /must/ have been set for @VK_PIPELINE_BIND_POINT_GRAPHICS@, with a--- @VkPipelineLayout@ that is compatible for push constants, with the--- @VkPipelineLayout@ used to create the current @VkPipeline@, as--- described in--- [{html_spec_relative}#descriptorsets-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility)------ - Descriptors in each bound descriptor set, specified via--- @vkCmdBindDescriptorSets@, /must/ be valid if they are statically--- used by the bound @VkPipeline@ object, specified via--- @vkCmdBindPipeline@------ - All vertex input bindings accessed via vertex input variables--- declared in the vertex shader entry point’s interface /must/ have--- valid buffers bound------ - A valid graphics pipeline /must/ be bound to the current command--- buffer with @VK_PIPELINE_BIND_POINT_GRAPHICS@------ - If the @VkPipeline@ object bound to--- @VK_PIPELINE_BIND_POINT_GRAPHICS@ requires any dynamic state, that--- state /must/ have been set on the current command buffer------ - If count stored in @countBuffer@ is equal to @1@, (@offset@ +--- @sizeof@(@VkDrawIndexedIndirectCommand@)) /must/ be less than or--- equal to the size of @buffer@------ - If count stored in @countBuffer@ is greater than @1@, (@stride@ ×--- (@drawCount@ - 1) + @offset@ +--- @sizeof@(@VkDrawIndexedIndirectCommand@)) /must/ be less than or--- equal to the size of @buffer@------ - @drawCount@ /must/ be less than or equal to--- @VkPhysicalDeviceLimits@::@maxDrawIndirectCount@------ - Every input attachment used by the current subpass /must/ be bound--- to the pipeline via a descriptor set------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used to sample from any--- @VkImage@ with a @VkImageView@ of the type @VK_IMAGE_VIEW_TYPE_3D@,--- @VK_IMAGE_VIEW_TYPE_CUBE@, @VK_IMAGE_VIEW_TYPE_1D_ARRAY@,--- @VK_IMAGE_VIEW_TYPE_2D_ARRAY@ or @VK_IMAGE_VIEW_TYPE_CUBE_ARRAY@, in--- any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions with--- @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage------ - If any @VkSampler@ object that is accessed from a shader by the--- @VkPipeline@ bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ uses--- unnormalized coordinates, it /must/ not be used with any of the--- SPIR-V @OpImageSample*@ or @OpImageSparseSample*@ instructions that--- includes a LOD bias or any offset values, in any shader stage------ - If the [robust buffer--- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a uniform--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - If the [robust buffer--- access](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)--- feature is not enabled, and any shader stage in the @VkPipeline@--- object bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@ accesses a storage--- buffer, it /must/ not access values outside of the range of that--- buffer specified in the bound descriptor set------ - Any @VkImageView@ being sampled with @VK_FILTER_LINEAR@ as a result--- of this command /must/ be of a format which supports linear--- filtering, as specified by the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ flag in--- @VkFormatProperties@::@linearTilingFeatures@ (for a linear image) or--- @VkFormatProperties@::@optimalTilingFeatures@(for an optimally tiled--- image) returned by @vkGetPhysicalDeviceFormatProperties@------ - Image subresources used as attachments in the current render pass--- /must/ not be accessed in any way other than as an attachment by--- this command.------ - If the draw is recorded in a render pass instance with multiview--- enabled, the maximum instance index /must/ be less than or equal to--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview.VkPhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.------ - If the bound graphics pipeline was created with--- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.VkPipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@--- set to @VK_TRUE@ and the current subpass has a depth\/stencil--- attachment, then that attachment /must/ have been created with the--- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ bit set------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @buffer@ /must/ be a valid @VkBuffer@ handle------ - @countBuffer@ /must/ be a valid @VkBuffer@ handle------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ - This command /must/ only be called inside of a render pass instance------ - Each of @buffer@, @commandBuffer@, and @countBuffer@ /must/ have--- been created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Inside | Graphics | Graphics |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdDrawIndexedIndirectCountAMD" vkCmdDrawIndexedIndirectCountAMD :: ("commandBuffer" ::: VkCommandBuffer) -> ("buffer" ::: VkBuffer) -> ("offset" ::: VkDeviceSize) -> ("countBuffer" ::: VkBuffer) -> ("countBufferOffset" ::: VkDeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()+pattern AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count"+
src/Graphics/Vulkan/Extensions/VK_AMD_gcn_shader.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_AMD_gcn_shader- ( pattern VK_AMD_GCN_SHADER_SPEC_VERSION- , pattern VK_AMD_GCN_SHADER_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_AMD_gcn_shader ( AMD_GCN_SHADER_SPEC_VERSION+ , pattern AMD_GCN_SHADER_SPEC_VERSION+ , AMD_GCN_SHADER_EXTENSION_NAME+ , pattern AMD_GCN_SHADER_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type AMD_GCN_SHADER_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_AMD_GCN_SHADER_SPEC_VERSION"+pattern AMD_GCN_SHADER_SPEC_VERSION :: forall a . Integral a => a+pattern AMD_GCN_SHADER_SPEC_VERSION = 1 +type AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" --- No documentation found for TopLevel "VK_AMD_GCN_SHADER_SPEC_VERSION"-pattern VK_AMD_GCN_SHADER_SPEC_VERSION :: Integral a => a-pattern VK_AMD_GCN_SHADER_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_AMD_GCN_SHADER_EXTENSION_NAME"-pattern VK_AMD_GCN_SHADER_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader"+pattern AMD_GCN_SHADER_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader"+
src/Graphics/Vulkan/Extensions/VK_AMD_gpu_shader_half_float.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_AMD_gpu_shader_half_float- ( pattern VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION- , pattern VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_AMD_gpu_shader_half_float ( AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION+ , pattern AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION+ , AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME+ , pattern AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 +-- No documentation found for TopLevel "VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION"+pattern AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION :: forall a . Integral a => a+pattern AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 +type AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" --- No documentation found for TopLevel "VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION"-pattern VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION :: Integral a => a-pattern VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME"-pattern VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float"+pattern AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float"+
src/Graphics/Vulkan/Extensions/VK_AMD_gpu_shader_int16.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_AMD_gpu_shader_int16- ( pattern VK_AMD_GPU_SHADER_INT16_SPEC_VERSION- , pattern VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_AMD_gpu_shader_int16 ( AMD_GPU_SHADER_INT16_SPEC_VERSION+ , pattern AMD_GPU_SHADER_INT16_SPEC_VERSION+ , AMD_GPU_SHADER_INT16_EXTENSION_NAME+ , pattern AMD_GPU_SHADER_INT16_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 +-- No documentation found for TopLevel "VK_AMD_GPU_SHADER_INT16_SPEC_VERSION"+pattern AMD_GPU_SHADER_INT16_SPEC_VERSION :: forall a . Integral a => a+pattern AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 +type AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" --- No documentation found for TopLevel "VK_AMD_GPU_SHADER_INT16_SPEC_VERSION"-pattern VK_AMD_GPU_SHADER_INT16_SPEC_VERSION :: Integral a => a-pattern VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME"-pattern VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16"+pattern AMD_GPU_SHADER_INT16_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16"+
+ src/Graphics/Vulkan/Extensions/VK_AMD_memory_overallocation_behavior.hs view
@@ -0,0 +1,149 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_AMD_memory_overallocation_behavior ( DeviceMemoryOverallocationCreateInfoAMD(..)+ , MemoryOverallocationBehaviorAMD( MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD+ , MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD+ , MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD+ , ..+ )+ , AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION+ , pattern AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION+ , AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME+ , pattern AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+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 Data.Int (Int32)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD))+-- | VkDeviceMemoryOverallocationCreateInfoAMD - Specify memory+-- overallocation behavior for a Vulkan device+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'MemoryOverallocationBehaviorAMD',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DeviceMemoryOverallocationCreateInfoAMD = DeviceMemoryOverallocationCreateInfoAMD+ { -- | @overallocationBehavior@ /must/ be a valid+ -- 'MemoryOverallocationBehaviorAMD' value+ overallocationBehavior :: MemoryOverallocationBehaviorAMD }+ deriving (Typeable)+deriving instance Show DeviceMemoryOverallocationCreateInfoAMD++instance ToCStruct DeviceMemoryOverallocationCreateInfoAMD where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DeviceMemoryOverallocationCreateInfoAMD{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr MemoryOverallocationBehaviorAMD)) (overallocationBehavior)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr MemoryOverallocationBehaviorAMD)) (zero)+ f++instance FromCStruct DeviceMemoryOverallocationCreateInfoAMD where+ peekCStruct p = do+ overallocationBehavior <- peek @MemoryOverallocationBehaviorAMD ((p `plusPtr` 16 :: Ptr MemoryOverallocationBehaviorAMD))+ pure $ DeviceMemoryOverallocationCreateInfoAMD+ overallocationBehavior++instance Storable DeviceMemoryOverallocationCreateInfoAMD where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DeviceMemoryOverallocationCreateInfoAMD where+ zero = DeviceMemoryOverallocationCreateInfoAMD+ zero+++-- | VkMemoryOverallocationBehaviorAMD - Specify memory overallocation+-- behavior+--+-- = See Also+--+-- 'DeviceMemoryOverallocationCreateInfoAMD'+newtype MemoryOverallocationBehaviorAMD = MemoryOverallocationBehaviorAMD Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD' lets the implementation+-- decide if overallocation should be allowed.+pattern MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = MemoryOverallocationBehaviorAMD 0+-- | 'MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD' specifies overallocation is+-- allowed if platform permits.+pattern MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = MemoryOverallocationBehaviorAMD 1+-- | 'MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD' specifies the+-- application is not allowed to allocate device memory beyond the heap+-- sizes reported by+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties'.+-- Allocations that are not explicitly made by the application within the+-- scope of the Vulkan instance are not accounted for.+pattern MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = MemoryOverallocationBehaviorAMD 2+{-# complete MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD,+ MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD,+ MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD :: MemoryOverallocationBehaviorAMD #-}++instance Show MemoryOverallocationBehaviorAMD where+ showsPrec p = \case+ MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD -> showString "MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD"+ MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD -> showString "MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD"+ MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD -> showString "MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD"+ MemoryOverallocationBehaviorAMD x -> showParen (p >= 11) (showString "MemoryOverallocationBehaviorAMD " . showsPrec 11 x)++instance Read MemoryOverallocationBehaviorAMD where+ readPrec = parens (choose [("MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD", pure MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD)+ , ("MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD", pure MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD)+ , ("MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD", pure MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD)]+ ++++ prec 10 (do+ expectP (Ident "MemoryOverallocationBehaviorAMD")+ v <- step readPrec+ pure (MemoryOverallocationBehaviorAMD v)))+++type AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION"+pattern AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION :: forall a . Integral a => a+pattern AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1+++type AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior"++-- No documentation found for TopLevel "VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME"+pattern AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior"+
+ src/Graphics/Vulkan/Extensions/VK_AMD_memory_overallocation_behavior.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_AMD_memory_overallocation_behavior (DeviceMemoryOverallocationCreateInfoAMD) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data DeviceMemoryOverallocationCreateInfoAMD++instance ToCStruct DeviceMemoryOverallocationCreateInfoAMD+instance Show DeviceMemoryOverallocationCreateInfoAMD++instance FromCStruct DeviceMemoryOverallocationCreateInfoAMD+
src/Graphics/Vulkan/Extensions/VK_AMD_mixed_attachment_samples.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_AMD_mixed_attachment_samples- ( pattern VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION- , pattern VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_AMD_mixed_attachment_samples ( AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION+ , pattern AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION+ , AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME+ , pattern AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION"+pattern AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION :: forall a . Integral a => a+pattern AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 +type AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" --- No documentation found for TopLevel "VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION"-pattern VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION :: Integral a => a-pattern VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME"-pattern VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples"+pattern AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples"+
src/Graphics/Vulkan/Extensions/VK_AMD_negative_viewport_height.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_AMD_negative_viewport_height- ( pattern VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION- , pattern VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_AMD_negative_viewport_height ( AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION+ , pattern AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION+ , AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME+ , pattern AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION"+pattern AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION :: forall a . Integral a => a+pattern AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 +type AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" --- No documentation found for TopLevel "VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION"-pattern VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION :: Integral a => a-pattern VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME"-pattern VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height"+pattern AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height"+
+ src/Graphics/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs view
@@ -0,0 +1,127 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_AMD_pipeline_compiler_control ( PipelineCompilerControlCreateInfoAMD(..)+ , PipelineCompilerControlFlagBitsAMD(..)+ , PipelineCompilerControlFlagsAMD+ , AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION+ , pattern AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION+ , AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME+ , pattern AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+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 Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD))+-- | VkPipelineCompilerControlCreateInfoAMD - Structure used to pass+-- compilation control flags to a pipeline+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'PipelineCompilerControlFlagsAMD',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineCompilerControlCreateInfoAMD = PipelineCompilerControlCreateInfoAMD+ { -- | @compilerControlFlags@ /must/ be @0@+ compilerControlFlags :: PipelineCompilerControlFlagsAMD }+ deriving (Typeable)+deriving instance Show PipelineCompilerControlCreateInfoAMD++instance ToCStruct PipelineCompilerControlCreateInfoAMD where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineCompilerControlCreateInfoAMD{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr PipelineCompilerControlFlagsAMD)) (compilerControlFlags)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct PipelineCompilerControlCreateInfoAMD where+ peekCStruct p = do+ compilerControlFlags <- peek @PipelineCompilerControlFlagsAMD ((p `plusPtr` 16 :: Ptr PipelineCompilerControlFlagsAMD))+ pure $ PipelineCompilerControlCreateInfoAMD+ compilerControlFlags++instance Storable PipelineCompilerControlCreateInfoAMD where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineCompilerControlCreateInfoAMD where+ zero = PipelineCompilerControlCreateInfoAMD+ zero+++-- | VkPipelineCompilerControlFlagBitsAMD - Enum specifying available+-- compilation control flags+--+-- = See Also+--+-- 'PipelineCompilerControlFlagsAMD'+newtype PipelineCompilerControlFlagBitsAMD = PipelineCompilerControlFlagBitsAMD Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++type PipelineCompilerControlFlagsAMD = PipelineCompilerControlFlagBitsAMD++instance Show PipelineCompilerControlFlagBitsAMD where+ showsPrec p = \case+ PipelineCompilerControlFlagBitsAMD x -> showParen (p >= 11) (showString "PipelineCompilerControlFlagBitsAMD 0x" . showHex x)++instance Read PipelineCompilerControlFlagBitsAMD where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "PipelineCompilerControlFlagBitsAMD")+ v <- step readPrec+ pure (PipelineCompilerControlFlagBitsAMD v)))+++type AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION"+pattern AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION :: forall a . Integral a => a+pattern AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1+++type AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control"++-- No documentation found for TopLevel "VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME"+pattern AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control"+
+ src/Graphics/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_AMD_pipeline_compiler_control (PipelineCompilerControlCreateInfoAMD) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PipelineCompilerControlCreateInfoAMD++instance ToCStruct PipelineCompilerControlCreateInfoAMD+instance Show PipelineCompilerControlCreateInfoAMD++instance FromCStruct PipelineCompilerControlCreateInfoAMD+
src/Graphics/Vulkan/Extensions/VK_AMD_rasterization_order.hs view
@@ -1,142 +1,147 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DuplicateRecordFields #-}+module Graphics.Vulkan.Extensions.VK_AMD_rasterization_order ( PipelineRasterizationStateRasterizationOrderAMD(..)+ , RasterizationOrderAMD( RASTERIZATION_ORDER_STRICT_AMD+ , RASTERIZATION_ORDER_RELAXED_AMD+ , ..+ )+ , AMD_RASTERIZATION_ORDER_SPEC_VERSION+ , pattern AMD_RASTERIZATION_ORDER_SPEC_VERSION+ , AMD_RASTERIZATION_ORDER_EXTENSION_NAME+ , pattern AMD_RASTERIZATION_ORDER_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_AMD_rasterization_order- ( VkRasterizationOrderAMD(..)- , pattern VK_RASTERIZATION_ORDER_STRICT_AMD- , pattern VK_RASTERIZATION_ORDER_RELAXED_AMD- , pattern VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD- , pattern VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION- , pattern VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME- , VkPipelineRasterizationStateRasterizationOrderAMD(..)- ) where+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+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 Data.Int (Int32)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD))+-- | VkPipelineRasterizationStateRasterizationOrderAMD - Structure defining+-- rasterization order for a graphics pipeline+--+-- == Valid Usage (Implicit)+--+-- If the+-- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_AMD_rasterization_order@+-- device extension is not enabled or the application does not request a+-- particular rasterization order through specifying a+-- 'PipelineRasterizationStateRasterizationOrderAMD' structure then the+-- rasterization order used by the graphics pipeline defaults to+-- 'RASTERIZATION_ORDER_STRICT_AMD'.+--+-- = See Also+--+-- 'RasterizationOrderAMD',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineRasterizationStateRasterizationOrderAMD = PipelineRasterizationStateRasterizationOrderAMD+ { -- | @rasterizationOrder@ /must/ be a valid 'RasterizationOrderAMD' value+ rasterizationOrder :: RasterizationOrderAMD }+ deriving (Typeable)+deriving instance Show PipelineRasterizationStateRasterizationOrderAMD -import Data.Int- ( Int32- )-import Data.String- ( IsString- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )+instance ToCStruct PipelineRasterizationStateRasterizationOrderAMD where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineRasterizationStateRasterizationOrderAMD{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr RasterizationOrderAMD)) (rasterizationOrder)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr RasterizationOrderAMD)) (zero)+ f +instance FromCStruct PipelineRasterizationStateRasterizationOrderAMD where+ peekCStruct p = do+ rasterizationOrder <- peek @RasterizationOrderAMD ((p `plusPtr` 16 :: Ptr RasterizationOrderAMD))+ pure $ PipelineRasterizationStateRasterizationOrderAMD+ rasterizationOrder -import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- )+instance Storable PipelineRasterizationStateRasterizationOrderAMD where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ()) +instance Zero PipelineRasterizationStateRasterizationOrderAMD where+ zero = PipelineRasterizationStateRasterizationOrderAMD+ zero --- ** VkRasterizationOrderAMD -- | VkRasterizationOrderAMD - Specify rasterization order for a graphics -- pipeline -- -- = See Also ----- 'VkPipelineRasterizationStateRasterizationOrderAMD'-newtype VkRasterizationOrderAMD = VkRasterizationOrderAMD Int32- deriving (Eq, Ord, Storable)+-- 'PipelineRasterizationStateRasterizationOrderAMD'+newtype RasterizationOrderAMD = RasterizationOrderAMD Int32+ deriving newtype (Eq, Ord, Storable, Zero) -instance Show VkRasterizationOrderAMD where- showsPrec _ VK_RASTERIZATION_ORDER_STRICT_AMD = showString "VK_RASTERIZATION_ORDER_STRICT_AMD"- showsPrec _ VK_RASTERIZATION_ORDER_RELAXED_AMD = showString "VK_RASTERIZATION_ORDER_RELAXED_AMD"- showsPrec p (VkRasterizationOrderAMD x) = showParen (p >= 11) (showString "VkRasterizationOrderAMD " . showsPrec 11 x)+-- | 'RASTERIZATION_ORDER_STRICT_AMD' specifies that operations for each+-- primitive in a subpass /must/ occur in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-order primitive order>.+pattern RASTERIZATION_ORDER_STRICT_AMD = RasterizationOrderAMD 0+-- | 'RASTERIZATION_ORDER_RELAXED_AMD' specifies that operations for each+-- primitive in a subpass /may/ not occur in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-order primitive order>.+pattern RASTERIZATION_ORDER_RELAXED_AMD = RasterizationOrderAMD 1+{-# complete RASTERIZATION_ORDER_STRICT_AMD,+ RASTERIZATION_ORDER_RELAXED_AMD :: RasterizationOrderAMD #-} -instance Read VkRasterizationOrderAMD where- readPrec = parens ( choose [ ("VK_RASTERIZATION_ORDER_STRICT_AMD", pure VK_RASTERIZATION_ORDER_STRICT_AMD)- , ("VK_RASTERIZATION_ORDER_RELAXED_AMD", pure VK_RASTERIZATION_ORDER_RELAXED_AMD)- ] +++- prec 10 (do- expectP (Ident "VkRasterizationOrderAMD")- v <- step readPrec- pure (VkRasterizationOrderAMD v)- )- )+instance Show RasterizationOrderAMD where+ showsPrec p = \case+ RASTERIZATION_ORDER_STRICT_AMD -> showString "RASTERIZATION_ORDER_STRICT_AMD"+ RASTERIZATION_ORDER_RELAXED_AMD -> showString "RASTERIZATION_ORDER_RELAXED_AMD"+ RasterizationOrderAMD x -> showParen (p >= 11) (showString "RasterizationOrderAMD " . showsPrec 11 x) --- | @VK_RASTERIZATION_ORDER_STRICT_AMD@ specifies that operations for each--- primitive in a subpass /must/ occur in [primitive--- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#drawing-primitive-order).-pattern VK_RASTERIZATION_ORDER_STRICT_AMD :: VkRasterizationOrderAMD-pattern VK_RASTERIZATION_ORDER_STRICT_AMD = VkRasterizationOrderAMD 0+instance Read RasterizationOrderAMD where+ readPrec = parens (choose [("RASTERIZATION_ORDER_STRICT_AMD", pure RASTERIZATION_ORDER_STRICT_AMD)+ , ("RASTERIZATION_ORDER_RELAXED_AMD", pure RASTERIZATION_ORDER_RELAXED_AMD)]+ ++++ prec 10 (do+ expectP (Ident "RasterizationOrderAMD")+ v <- step readPrec+ pure (RasterizationOrderAMD v))) --- | @VK_RASTERIZATION_ORDER_RELAXED_AMD@ specifies that operations for each--- primitive in a subpass /may/ not occur in [primitive--- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#drawing-primitive-order).-pattern VK_RASTERIZATION_ORDER_RELAXED_AMD :: VkRasterizationOrderAMD-pattern VK_RASTERIZATION_ORDER_RELAXED_AMD = VkRasterizationOrderAMD 1--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"-pattern VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = VkStructureType 1000018000++type AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1+ -- No documentation found for TopLevel "VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION"-pattern VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION :: Integral a => a-pattern VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1+pattern AMD_RASTERIZATION_ORDER_SPEC_VERSION :: forall a . Integral a => a+pattern AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1+++type AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order"+ -- No documentation found for TopLevel "VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME"-pattern VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order"--- | VkPipelineRasterizationStateRasterizationOrderAMD - Structure defining--- rasterization order for a graphics pipeline------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD@------ - @rasterizationOrder@ /must/ be a valid 'VkRasterizationOrderAMD'--- value------ If the @{html_spec_relative}#VK_AMD_rasterization_order@ device--- extension is not enabled or the application does not request a--- particular rasterization order through specifying a--- @VkPipelineRasterizationStateRasterizationOrderAMD@ structure then the--- rasterization order used by the graphics pipeline defaults to--- @VK_RASTERIZATION_ORDER_STRICT_AMD@.------ = See Also------ 'VkRasterizationOrderAMD', 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineRasterizationStateRasterizationOrderAMD = VkPipelineRasterizationStateRasterizationOrderAMD- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @rasterizationOrder@ is a 'VkRasterizationOrderAMD' value specifying the- -- primitive rasterization order to use.- vkRasterizationOrder :: VkRasterizationOrderAMD- }- deriving (Eq, Show)+pattern AMD_RASTERIZATION_ORDER_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" -instance Storable VkPipelineRasterizationStateRasterizationOrderAMD where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkPipelineRasterizationStateRasterizationOrderAMD <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineRasterizationStateRasterizationOrderAMD))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineRasterizationStateRasterizationOrderAMD))- *> poke (ptr `plusPtr` 16) (vkRasterizationOrder (poked :: VkPipelineRasterizationStateRasterizationOrderAMD))
+ src/Graphics/Vulkan/Extensions/VK_AMD_rasterization_order.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_AMD_rasterization_order (PipelineRasterizationStateRasterizationOrderAMD) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PipelineRasterizationStateRasterizationOrderAMD++instance ToCStruct PipelineRasterizationStateRasterizationOrderAMD+instance Show PipelineRasterizationStateRasterizationOrderAMD++instance FromCStruct PipelineRasterizationStateRasterizationOrderAMD+
src/Graphics/Vulkan/Extensions/VK_AMD_shader_ballot.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_AMD_shader_ballot- ( pattern VK_AMD_SHADER_BALLOT_SPEC_VERSION- , pattern VK_AMD_SHADER_BALLOT_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_AMD_shader_ballot ( AMD_SHADER_BALLOT_SPEC_VERSION+ , pattern AMD_SHADER_BALLOT_SPEC_VERSION+ , AMD_SHADER_BALLOT_EXTENSION_NAME+ , pattern AMD_SHADER_BALLOT_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type AMD_SHADER_BALLOT_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_AMD_SHADER_BALLOT_SPEC_VERSION"+pattern AMD_SHADER_BALLOT_SPEC_VERSION :: forall a . Integral a => a+pattern AMD_SHADER_BALLOT_SPEC_VERSION = 1 +type AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" --- No documentation found for TopLevel "VK_AMD_SHADER_BALLOT_SPEC_VERSION"-pattern VK_AMD_SHADER_BALLOT_SPEC_VERSION :: Integral a => a-pattern VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_AMD_SHADER_BALLOT_EXTENSION_NAME"-pattern VK_AMD_SHADER_BALLOT_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot"+pattern AMD_SHADER_BALLOT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot"+
src/Graphics/Vulkan/Extensions/VK_AMD_shader_core_properties.hs view
@@ -1,185 +1,198 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties- ( pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD- , pattern VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION- , pattern VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME- , VkPhysicalDeviceShaderCorePropertiesAMD(..)- ) where--import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )---import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- )-+module Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties ( PhysicalDeviceShaderCorePropertiesAMD(..)+ , AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION+ , pattern AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION+ , AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME+ , pattern AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME+ ) where --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = VkStructureType 1000185000--- No documentation found for TopLevel "VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION"-pattern VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION :: Integral a => a-pattern VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME"-pattern VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties"+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD)) -- | VkPhysicalDeviceShaderCorePropertiesAMD - Structure describing shader -- core properties that can be supported by an implementation -- -- = Members ----- The members of the @VkPhysicalDeviceShaderCorePropertiesAMD@ structure+-- The members of the 'PhysicalDeviceShaderCorePropertiesAMD' structure -- describe the following implementation-dependent limits: -- -- = Description ----- - @shaderEngineCount@ is an unsigned integer value indicating the--- number of shader engines found inside the shader core of the--- physical device.------ - @shaderArraysPerEngineCount@ is an unsigned integer value indicating--- the number of shader arrays inside a shader engine. Each shader--- array has its own scan converter, set of compute units, and a render--- back end (color and depth buffers). Shader arrays within a shader--- engine share shader processor input (wave launcher) and shader--- export (export buffer) units. Currently, a shader engine can have--- one or two shader arrays.------ - @computeUnitsPerShaderArray@ is an unsigned integer value indicating--- the number of compute units within a shader array. A compute unit--- houses a set of SIMDs along with a sequencer module and a local data--- store.------ - @simdPerComputeUnit@ is an unsigned integer value indicating the--- number of SIMDs inside a compute unit. Each SIMD processes a single--- instruction at a time.------ - @wavefrontSize@ is an unsigned integer value indicating the number--- of channels (or threads) in a wavefront.------ - @sgprsPerSimd@ is an unsigned integer value indicating the number of--- physical Scalar General Purpose Registers (SGPRs) per SIMD.------ - @minSgprAllocation@ is an unsigned integer value indicating the--- minimum number of SGPRs allocated for a wave.------ - @maxSgprAllocation@ is an unsigned integer value indicating the--- maximum number of SGPRs allocated for a wave.------ - @sgprAllocationGranularity@ is an unsigned integer value indicating--- the granularity of SGPR allocation for a wave.------ - @vgprsPerSimd@ is an unsigned integer value indicating the number of--- physical Vector General Purpose Registers (VGPRs) per SIMD.------ - @minVgprAllocation@ is an unsigned integer value indicating the--- minimum number of VGPRs allocated for a wave.------ - @maxVgprAllocation@ is an unsigned integer value indicating the--- maximum number of VGPRs allocated for a wave.------ - @vgprAllocationGranularity@ is an unsigned integer value indicating--- the granularity of VGPR allocation for a wave.+-- If the 'PhysicalDeviceShaderCorePropertiesAMD' structure is included in+-- the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits. -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD@------ If the @VkPhysicalDeviceShaderCorePropertiesAMD@ structure is included--- in the @pNext@ chain of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2',--- it is filled with the implementation-dependent limits.--- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceShaderCorePropertiesAMD = VkPhysicalDeviceShaderCorePropertiesAMD- { -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "shaderEngineCount"- vkShaderEngineCount :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "shaderArraysPerEngineCount"- vkShaderArraysPerEngineCount :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "computeUnitsPerShaderArray"- vkComputeUnitsPerShaderArray :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "simdPerComputeUnit"- vkSimdPerComputeUnit :: Word32+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceShaderCorePropertiesAMD = PhysicalDeviceShaderCorePropertiesAMD+ { -- | @shaderEngineCount@ is an unsigned integer value indicating the number+ -- of shader engines found inside the shader core of the physical device.+ shaderEngineCount :: Word32+ , -- | @shaderArraysPerEngineCount@ is an unsigned integer value indicating the+ -- number of shader arrays inside a shader engine. Each shader array has+ -- its own scan converter, set of compute units, and a render back end+ -- (color and depth buffers). Shader arrays within a shader engine share+ -- shader processor input (wave launcher) and shader export (export buffer)+ -- units. Currently, a shader engine can have one or two shader arrays.+ shaderArraysPerEngineCount :: Word32+ , -- | @computeUnitsPerShaderArray@ is an unsigned integer value indicating the+ -- physical number of compute units within a shader array. The active+ -- number of compute units in a shader array /may/ be lower. A compute unit+ -- houses a set of SIMDs along with a sequencer module and a local data+ -- store.+ computeUnitsPerShaderArray :: Word32+ , -- | @simdPerComputeUnit@ is an unsigned integer value indicating the number+ -- of SIMDs inside a compute unit. Each SIMD processes a single instruction+ -- at a time.+ simdPerComputeUnit :: Word32 , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "wavefrontsPerSimd"- vkWavefrontsPerSimd :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "wavefrontSize"- vkWavefrontSize :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "sgprsPerSimd"- vkSgprsPerSimd :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "minSgprAllocation"- vkMinSgprAllocation :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "maxSgprAllocation"- vkMaxSgprAllocation :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "sgprAllocationGranularity"- vkSgprAllocationGranularity :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "vgprsPerSimd"- vkVgprsPerSimd :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "minVgprAllocation"- vkMinVgprAllocation :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "maxVgprAllocation"- vkMaxVgprAllocation :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceShaderCorePropertiesAMD" "vgprAllocationGranularity"- vkVgprAllocationGranularity :: Word32+ wavefrontsPerSimd :: Word32+ , -- | @wavefrontSize@ is an unsigned integer value indicating the maximum size+ -- of a subgroup.+ wavefrontSize :: Word32+ , -- | @sgprsPerSimd@ is an unsigned integer value indicating the number of+ -- physical Scalar General Purpose Registers (SGPRs) per SIMD.+ sgprsPerSimd :: Word32+ , -- | @minSgprAllocation@ is an unsigned integer value indicating the minimum+ -- number of SGPRs allocated for a wave.+ minSgprAllocation :: Word32+ , -- | @maxSgprAllocation@ is an unsigned integer value indicating the maximum+ -- number of SGPRs allocated for a wave.+ maxSgprAllocation :: Word32+ , -- | @sgprAllocationGranularity@ is an unsigned integer value indicating the+ -- granularity of SGPR allocation for a wave.+ sgprAllocationGranularity :: Word32+ , -- | @vgprsPerSimd@ is an unsigned integer value indicating the number of+ -- physical Vector General Purpose Registers (VGPRs) per SIMD.+ vgprsPerSimd :: Word32+ , -- | @minVgprAllocation@ is an unsigned integer value indicating the minimum+ -- number of VGPRs allocated for a wave.+ minVgprAllocation :: Word32+ , -- | @maxVgprAllocation@ is an unsigned integer value indicating the maximum+ -- number of VGPRs allocated for a wave.+ maxVgprAllocation :: Word32+ , -- | @vgprAllocationGranularity@ is an unsigned integer value indicating the+ -- granularity of VGPR allocation for a wave.+ vgprAllocationGranularity :: Word32 }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show PhysicalDeviceShaderCorePropertiesAMD -instance Storable VkPhysicalDeviceShaderCorePropertiesAMD where+instance ToCStruct PhysicalDeviceShaderCorePropertiesAMD where+ withCStruct x f = allocaBytesAligned 72 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceShaderCorePropertiesAMD{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (shaderEngineCount)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (shaderArraysPerEngineCount)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (computeUnitsPerShaderArray)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (simdPerComputeUnit)+ poke ((p `plusPtr` 32 :: Ptr Word32)) (wavefrontsPerSimd)+ poke ((p `plusPtr` 36 :: Ptr Word32)) (wavefrontSize)+ poke ((p `plusPtr` 40 :: Ptr Word32)) (sgprsPerSimd)+ poke ((p `plusPtr` 44 :: Ptr Word32)) (minSgprAllocation)+ poke ((p `plusPtr` 48 :: Ptr Word32)) (maxSgprAllocation)+ poke ((p `plusPtr` 52 :: Ptr Word32)) (sgprAllocationGranularity)+ poke ((p `plusPtr` 56 :: Ptr Word32)) (vgprsPerSimd)+ poke ((p `plusPtr` 60 :: Ptr Word32)) (minVgprAllocation)+ poke ((p `plusPtr` 64 :: Ptr Word32)) (maxVgprAllocation)+ poke ((p `plusPtr` 68 :: Ptr Word32)) (vgprAllocationGranularity)+ f+ cStructSize = 72+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 60 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 64 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 68 :: Ptr Word32)) (zero)+ f++instance FromCStruct PhysicalDeviceShaderCorePropertiesAMD where+ peekCStruct p = do+ shaderEngineCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ shaderArraysPerEngineCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ computeUnitsPerShaderArray <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ simdPerComputeUnit <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+ wavefrontsPerSimd <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ wavefrontSize <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))+ sgprsPerSimd <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))+ minSgprAllocation <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))+ maxSgprAllocation <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+ sgprAllocationGranularity <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))+ vgprsPerSimd <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))+ minVgprAllocation <- peek @Word32 ((p `plusPtr` 60 :: Ptr Word32))+ maxVgprAllocation <- peek @Word32 ((p `plusPtr` 64 :: Ptr Word32))+ vgprAllocationGranularity <- peek @Word32 ((p `plusPtr` 68 :: Ptr Word32))+ pure $ PhysicalDeviceShaderCorePropertiesAMD+ shaderEngineCount shaderArraysPerEngineCount computeUnitsPerShaderArray simdPerComputeUnit wavefrontsPerSimd wavefrontSize sgprsPerSimd minSgprAllocation maxSgprAllocation sgprAllocationGranularity vgprsPerSimd minVgprAllocation maxVgprAllocation vgprAllocationGranularity++instance Storable PhysicalDeviceShaderCorePropertiesAMD where sizeOf ~_ = 72 alignment ~_ = 8- peek ptr = VkPhysicalDeviceShaderCorePropertiesAMD <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 52)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 60)- <*> peek (ptr `plusPtr` 64)- <*> peek (ptr `plusPtr` 68)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceShaderCorePropertiesAMD))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceShaderCorePropertiesAMD))- *> poke (ptr `plusPtr` 16) (vkShaderEngineCount (poked :: VkPhysicalDeviceShaderCorePropertiesAMD))- *> poke (ptr `plusPtr` 20) (vkShaderArraysPerEngineCount (poked :: VkPhysicalDeviceShaderCorePropertiesAMD))- *> poke (ptr `plusPtr` 24) (vkComputeUnitsPerShaderArray (poked :: VkPhysicalDeviceShaderCorePropertiesAMD))- *> poke (ptr `plusPtr` 28) (vkSimdPerComputeUnit (poked :: VkPhysicalDeviceShaderCorePropertiesAMD))- *> poke (ptr `plusPtr` 32) (vkWavefrontsPerSimd (poked :: VkPhysicalDeviceShaderCorePropertiesAMD))- *> poke (ptr `plusPtr` 36) (vkWavefrontSize (poked :: VkPhysicalDeviceShaderCorePropertiesAMD))- *> poke (ptr `plusPtr` 40) (vkSgprsPerSimd (poked :: VkPhysicalDeviceShaderCorePropertiesAMD))- *> poke (ptr `plusPtr` 44) (vkMinSgprAllocation (poked :: VkPhysicalDeviceShaderCorePropertiesAMD))- *> poke (ptr `plusPtr` 48) (vkMaxSgprAllocation (poked :: VkPhysicalDeviceShaderCorePropertiesAMD))- *> poke (ptr `plusPtr` 52) (vkSgprAllocationGranularity (poked :: VkPhysicalDeviceShaderCorePropertiesAMD))- *> poke (ptr `plusPtr` 56) (vkVgprsPerSimd (poked :: VkPhysicalDeviceShaderCorePropertiesAMD))- *> poke (ptr `plusPtr` 60) (vkMinVgprAllocation (poked :: VkPhysicalDeviceShaderCorePropertiesAMD))- *> poke (ptr `plusPtr` 64) (vkMaxVgprAllocation (poked :: VkPhysicalDeviceShaderCorePropertiesAMD))- *> poke (ptr `plusPtr` 68) (vkVgprAllocationGranularity (poked :: VkPhysicalDeviceShaderCorePropertiesAMD))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceShaderCorePropertiesAMD where+ zero = PhysicalDeviceShaderCorePropertiesAMD+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++type AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION"+pattern AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION :: forall a . Integral a => a+pattern AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2+++type AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties"++-- No documentation found for TopLevel "VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME"+pattern AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties"+
+ src/Graphics/Vulkan/Extensions/VK_AMD_shader_core_properties.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties (PhysicalDeviceShaderCorePropertiesAMD) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceShaderCorePropertiesAMD++instance ToCStruct PhysicalDeviceShaderCorePropertiesAMD+instance Show PhysicalDeviceShaderCorePropertiesAMD++instance FromCStruct PhysicalDeviceShaderCorePropertiesAMD+
+ src/Graphics/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs view
@@ -0,0 +1,150 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties2 ( PhysicalDeviceShaderCoreProperties2AMD(..)+ , ShaderCorePropertiesFlagBitsAMD(..)+ , ShaderCorePropertiesFlagsAMD+ , AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION+ , pattern AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION+ , AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME+ , pattern AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+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 Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD))+-- | VkPhysicalDeviceShaderCoreProperties2AMD - Structure describing shader+-- core properties that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceShaderCoreProperties2AMD' structure+-- describe the following implementation-dependent limits:+--+-- = Description+--+-- If the 'PhysicalDeviceShaderCoreProperties2AMD' structure is included in+-- the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'ShaderCorePropertiesFlagsAMD',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceShaderCoreProperties2AMD = PhysicalDeviceShaderCoreProperties2AMD+ { -- | @shaderCoreFeatures@ is a bitmask of 'ShaderCorePropertiesFlagBitsAMD'+ -- indicating the set of features supported by the shader core.+ shaderCoreFeatures :: ShaderCorePropertiesFlagsAMD+ , -- | @activeComputeUnitCount@ is an unsigned integer value indicating the+ -- number of compute units that have been enabled.+ activeComputeUnitCount :: Word32+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceShaderCoreProperties2AMD++instance ToCStruct PhysicalDeviceShaderCoreProperties2AMD where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceShaderCoreProperties2AMD{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ShaderCorePropertiesFlagsAMD)) (shaderCoreFeatures)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (activeComputeUnitCount)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ShaderCorePropertiesFlagsAMD)) (zero)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ f++instance FromCStruct PhysicalDeviceShaderCoreProperties2AMD where+ peekCStruct p = do+ shaderCoreFeatures <- peek @ShaderCorePropertiesFlagsAMD ((p `plusPtr` 16 :: Ptr ShaderCorePropertiesFlagsAMD))+ activeComputeUnitCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pure $ PhysicalDeviceShaderCoreProperties2AMD+ shaderCoreFeatures activeComputeUnitCount++instance Storable PhysicalDeviceShaderCoreProperties2AMD where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceShaderCoreProperties2AMD where+ zero = PhysicalDeviceShaderCoreProperties2AMD+ zero+ zero+++-- | VkShaderCorePropertiesFlagBitsAMD - Bitmask specifying shader core+-- properties+--+-- = See Also+--+-- 'PhysicalDeviceShaderCoreProperties2AMD', 'ShaderCorePropertiesFlagsAMD'+newtype ShaderCorePropertiesFlagBitsAMD = ShaderCorePropertiesFlagBitsAMD Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++type ShaderCorePropertiesFlagsAMD = ShaderCorePropertiesFlagBitsAMD++instance Show ShaderCorePropertiesFlagBitsAMD where+ showsPrec p = \case+ ShaderCorePropertiesFlagBitsAMD x -> showParen (p >= 11) (showString "ShaderCorePropertiesFlagBitsAMD 0x" . showHex x)++instance Read ShaderCorePropertiesFlagBitsAMD where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "ShaderCorePropertiesFlagBitsAMD")+ v <- step readPrec+ pure (ShaderCorePropertiesFlagBitsAMD v)))+++type AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION"+pattern AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION :: forall a . Integral a => a+pattern AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1+++type AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2"++-- No documentation found for TopLevel "VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME"+pattern AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2"+
+ src/Graphics/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties2 (PhysicalDeviceShaderCoreProperties2AMD) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceShaderCoreProperties2AMD++instance ToCStruct PhysicalDeviceShaderCoreProperties2AMD+instance Show PhysicalDeviceShaderCoreProperties2AMD++instance FromCStruct PhysicalDeviceShaderCoreProperties2AMD+
src/Graphics/Vulkan/Extensions/VK_AMD_shader_explicit_vertex_parameter.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_AMD_shader_explicit_vertex_parameter- ( pattern VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION- , pattern VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_AMD_shader_explicit_vertex_parameter ( AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION+ , pattern AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION+ , AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME+ , pattern AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION"+pattern AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION :: forall a . Integral a => a+pattern AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 +type AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" --- No documentation found for TopLevel "VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION"-pattern VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION :: Integral a => a-pattern VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME"-pattern VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter"+pattern AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter"+
src/Graphics/Vulkan/Extensions/VK_AMD_shader_fragment_mask.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_AMD_shader_fragment_mask- ( pattern VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION- , pattern VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_AMD_shader_fragment_mask ( AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION+ , pattern AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION+ , AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME+ , pattern AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION"+pattern AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION :: forall a . Integral a => a+pattern AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 +type AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" --- No documentation found for TopLevel "VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION"-pattern VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION :: Integral a => a-pattern VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME"-pattern VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask"+pattern AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask"+
src/Graphics/Vulkan/Extensions/VK_AMD_shader_image_load_store_lod.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_AMD_shader_image_load_store_lod- ( pattern VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION- , pattern VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_AMD_shader_image_load_store_lod ( AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION+ , pattern AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION+ , AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME+ , pattern AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION"+pattern AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION :: forall a . Integral a => a+pattern AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 +type AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" --- No documentation found for TopLevel "VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION"-pattern VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION :: Integral a => a-pattern VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME"-pattern VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod"+pattern AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod"+
src/Graphics/Vulkan/Extensions/VK_AMD_shader_info.hs view
@@ -1,131 +1,98 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_AMD_shader_info- ( VkShaderInfoTypeAMD(..)- , pattern VK_SHADER_INFO_TYPE_STATISTICS_AMD- , pattern VK_SHADER_INFO_TYPE_BINARY_AMD- , pattern VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD- , pattern VK_AMD_SHADER_INFO_SPEC_VERSION- , pattern VK_AMD_SHADER_INFO_EXTENSION_NAME- , vkGetShaderInfoAMD- , VkShaderResourceUsageAMD(..)- , VkShaderStatisticsInfoAMD(..)- ) where--import Data.Int- ( Int32- )-import Data.String- ( IsString- )-import Data.Vector.Storable.Sized- ( Vector- )-import Data.Word- ( Word32- )-import Foreign.C.Types- ( CSize(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- )-import Graphics.Vulkan.Core10.Pipeline- ( VkShaderStageFlagBits(..)- , VkPipeline- )-import Graphics.Vulkan.Core10.PipelineLayout- ( VkShaderStageFlags- )----- ** VkShaderInfoTypeAMD---- No documentation found for TopLevel "VkShaderInfoTypeAMD"-newtype VkShaderInfoTypeAMD = VkShaderInfoTypeAMD Int32- deriving (Eq, Ord, Storable)--instance Show VkShaderInfoTypeAMD where- showsPrec _ VK_SHADER_INFO_TYPE_STATISTICS_AMD = showString "VK_SHADER_INFO_TYPE_STATISTICS_AMD"- showsPrec _ VK_SHADER_INFO_TYPE_BINARY_AMD = showString "VK_SHADER_INFO_TYPE_BINARY_AMD"- showsPrec _ VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = showString "VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD"- showsPrec p (VkShaderInfoTypeAMD x) = showParen (p >= 11) (showString "VkShaderInfoTypeAMD " . showsPrec 11 x)--instance Read VkShaderInfoTypeAMD where- readPrec = parens ( choose [ ("VK_SHADER_INFO_TYPE_STATISTICS_AMD", pure VK_SHADER_INFO_TYPE_STATISTICS_AMD)- , ("VK_SHADER_INFO_TYPE_BINARY_AMD", pure VK_SHADER_INFO_TYPE_BINARY_AMD)- , ("VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD", pure VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD)- ] +++- prec 10 (do- expectP (Ident "VkShaderInfoTypeAMD")- v <- step readPrec- pure (VkShaderInfoTypeAMD v)- )- )---- No documentation found for Nested "VkShaderInfoTypeAMD" "VK_SHADER_INFO_TYPE_STATISTICS_AMD"-pattern VK_SHADER_INFO_TYPE_STATISTICS_AMD :: VkShaderInfoTypeAMD-pattern VK_SHADER_INFO_TYPE_STATISTICS_AMD = VkShaderInfoTypeAMD 0+module Graphics.Vulkan.Extensions.VK_AMD_shader_info ( getShaderInfoAMD+ , ShaderResourceUsageAMD(..)+ , ShaderStatisticsInfoAMD(..)+ , ShaderInfoTypeAMD( SHADER_INFO_TYPE_STATISTICS_AMD+ , SHADER_INFO_TYPE_BINARY_AMD+ , SHADER_INFO_TYPE_DISASSEMBLY_AMD+ , ..+ )+ , AMD_SHADER_INFO_SPEC_VERSION+ , pattern AMD_SHADER_INFO_SPEC_VERSION+ , AMD_SHADER_INFO_EXTENSION_NAME+ , pattern AMD_SHADER_INFO_EXTENSION_NAME+ ) where --- No documentation found for Nested "VkShaderInfoTypeAMD" "VK_SHADER_INFO_TYPE_BINARY_AMD"-pattern VK_SHADER_INFO_TYPE_BINARY_AMD :: VkShaderInfoTypeAMD-pattern VK_SHADER_INFO_TYPE_BINARY_AMD = VkShaderInfoTypeAMD 1+import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.ByteString (packCStringLen)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.C.Types (CSize)+import Foreign.C.Types (CSize(..))+import Foreign.C.Types (CSize(CSize))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Data.Word (Word64)+import Text.Read.Lex (Lexeme(Ident))+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import qualified Data.Vector.Storable.Sized (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetShaderInfoAMD))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Pipeline)+import Graphics.Vulkan.Core10.Handles (Pipeline(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits)+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlagBits(..))+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetShaderInfoAMD+ :: FunPtr (Ptr Device_T -> Pipeline -> ShaderStageFlagBits -> ShaderInfoTypeAMD -> Ptr CSize -> Ptr () -> IO Result) -> Ptr Device_T -> Pipeline -> ShaderStageFlagBits -> ShaderInfoTypeAMD -> Ptr CSize -> Ptr () -> IO Result --- No documentation found for Nested "VkShaderInfoTypeAMD" "VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD"-pattern VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD :: VkShaderInfoTypeAMD-pattern VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = VkShaderInfoTypeAMD 2--- No documentation found for TopLevel "VK_AMD_SHADER_INFO_SPEC_VERSION"-pattern VK_AMD_SHADER_INFO_SPEC_VERSION :: Integral a => a-pattern VK_AMD_SHADER_INFO_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_AMD_SHADER_INFO_EXTENSION_NAME"-pattern VK_AMD_SHADER_INFO_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" -- | vkGetShaderInfoAMD - Get information about a shader in a pipeline -- -- = Parameters ----- - @device@ is the device that created @pipeline@.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the device that created+-- 'Graphics.Vulkan.Core10.Handles.Pipeline'. ----- - @pipeline@ is the target of the query.+-- - 'Graphics.Vulkan.Core10.Handles.Pipeline' is the target of the+-- query. -- -- - @shaderStage@ identifies the particular shader within the pipeline -- about which information is being queried.@@ -148,40 +115,46 @@ -- -- If @pInfoSize@ is less than the maximum size that /can/ be retrieved by -- the pipeline cache, then at most @pInfoSize@ bytes will be written to--- @pInfo@, and @vkGetShaderInfoAMD@ will return @VK_INCOMPLETE@.+-- @pInfo@, and 'getShaderInfoAMD' will return+-- 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'. -- -- Not all information is available for every shader and implementations -- may not support all kinds of information for any shader. When a certain -- type of information is unavailable, the function returns--- @VK_ERROR_FEATURE_NOT_PRESENT@.+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_FEATURE_NOT_PRESENT'. -- -- If information is successfully and fully queried, the function will--- return @VK_SUCCESS@.+-- return 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'. ----- For @VK_SHADER_INFO_TYPE_STATISTICS_AMD@, an instance of--- @VkShaderStatisticsInfoAMD@ will be written to the buffer pointed to by--- @pInfo@. This structure will be populated with statistics regarding the--- physical device resources used by that shader along with other--- miscellaneous information and is described in further detail below.+-- For @infoType@ 'SHADER_INFO_TYPE_STATISTICS_AMD', a+-- 'ShaderStatisticsInfoAMD' structure will be written to the buffer+-- pointed to by @pInfo@. This structure will be populated with statistics+-- regarding the physical device resources used by that shader along with+-- other miscellaneous information and is described in further detail+-- below. ----- For @VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD@, @pInfo@ points to a UTF-8--- null-terminated string containing human-readable disassembly. The exact--- formatting and contents of the disassembly string are vendor-specific.+-- For @infoType@ 'SHADER_INFO_TYPE_DISASSEMBLY_AMD', @pInfo@ is a pointer+-- to a UTF-8 null-terminated string containing human-readable disassembly.+-- The exact formatting and contents of the disassembly string are+-- vendor-specific. -- -- The formatting and contents of all other types of information, including--- @VK_SHADER_INFO_TYPE_BINARY_AMD@, are left to the vendor and are not--- further specified by this extension.+-- @infoType@ 'SHADER_INFO_TYPE_BINARY_AMD', are left to the vendor and are+-- not further specified by this extension. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - @pipeline@ /must/ be a valid @VkPipeline@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Pipeline' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' handle -- -- - @shaderStage@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Pipeline.VkShaderStageFlagBits' value+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits'+-- value ----- - @infoType@ /must/ be a valid 'VkShaderInfoTypeAMD' value+-- - @infoType@ /must/ be a valid 'ShaderInfoTypeAMD' value -- -- - @pInfoSize@ /must/ be a valid pointer to a @size_t@ value --@@ -189,69 +162,114 @@ -- not @NULL@, @pInfo@ /must/ be a valid pointer to an array of -- @pInfoSize@ bytes ----- - @pipeline@ /must/ have been created, allocated, or retrieved from--- @device@+-- - 'Graphics.Vulkan.Core10.Handles.Pipeline' /must/ have been created,+-- allocated, or retrieved from 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- - @VK_INCOMPLETE@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_FEATURE_NOT_PRESENT@+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' ----- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_FEATURE_NOT_PRESENT'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipeline', 'VkShaderInfoTypeAMD',--- 'Graphics.Vulkan.Core10.Pipeline.VkShaderStageFlagBits'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetShaderInfoAMD" vkGetShaderInfoAMD :: ("device" ::: VkDevice) -> ("pipeline" ::: VkPipeline) -> ("shaderStage" ::: VkShaderStageFlagBits) -> ("infoType" ::: VkShaderInfoTypeAMD) -> ("pInfoSize" ::: Ptr CSize) -> ("pInfo" ::: Ptr ()) -> IO VkResult+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Pipeline', 'ShaderInfoTypeAMD',+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits'+getShaderInfoAMD :: Device -> Pipeline -> ShaderStageFlagBits -> ShaderInfoTypeAMD -> IO (Result, ("info" ::: ByteString))+getShaderInfoAMD device pipeline shaderStage infoType = evalContT $ do+ let vkGetShaderInfoAMD' = mkVkGetShaderInfoAMD (pVkGetShaderInfoAMD (deviceCmds (device :: Device)))+ let device' = deviceHandle (device)+ pPInfoSize <- ContT $ bracket (callocBytes @CSize 8) free+ r <- lift $ vkGetShaderInfoAMD' device' (pipeline) (shaderStage) (infoType) (pPInfoSize) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pInfoSize <- lift $ peek @CSize pPInfoSize+ pPInfo <- ContT $ bracket (callocBytes @(()) (fromIntegral (((\(CSize a) -> a) pInfoSize)))) free+ r' <- lift $ vkGetShaderInfoAMD' device' (pipeline) (shaderStage) (infoType) (pPInfoSize) (pPInfo)+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pInfoSize'' <- lift $ peek @CSize pPInfoSize+ pInfo' <- lift $ packCStringLen (castPtr @() @CChar pPInfo, (fromIntegral (((\(CSize a) -> a) pInfoSize''))))+ pure $ ((r'), pInfo')++ -- | VkShaderResourceUsageAMD - Resource usage information about a particular -- shader within a pipeline -- -- = See Also ----- 'VkShaderStatisticsInfoAMD'-data VkShaderResourceUsageAMD = VkShaderResourceUsageAMD+-- 'ShaderStatisticsInfoAMD'+data ShaderResourceUsageAMD = ShaderResourceUsageAMD { -- | @numUsedVgprs@ is the number of vector instruction general-purpose- -- registers used by this shader.- vkNumUsedVgprs :: Word32+ -- registers used by this shader.+ numUsedVgprs :: Word32 , -- | @numUsedSgprs@ is the number of scalar instruction general-purpose- -- registers used by this shader.- vkNumUsedSgprs :: Word32+ -- registers used by this shader.+ numUsedSgprs :: Word32 , -- | @ldsSizePerLocalWorkGroup@ is the maximum local data store size per work- -- group in bytes.- vkLdsSizePerLocalWorkGroup :: Word32+ -- group in bytes.+ ldsSizePerLocalWorkGroup :: Word32 , -- | @ldsUsageSizeInBytes@ is the LDS usage size in bytes per work group by- -- this shader.- vkLdsUsageSizeInBytes :: CSize+ -- this shader.+ ldsUsageSizeInBytes :: Word64 , -- | @scratchMemUsageInBytes@ is the scratch memory usage in bytes by this- -- shader.- vkScratchMemUsageInBytes :: CSize+ -- shader.+ scratchMemUsageInBytes :: Word64 }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show ShaderResourceUsageAMD -instance Storable VkShaderResourceUsageAMD where+instance ToCStruct ShaderResourceUsageAMD where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ShaderResourceUsageAMD{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (numUsedVgprs)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (numUsedSgprs)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (ldsSizePerLocalWorkGroup)+ poke ((p `plusPtr` 16 :: Ptr CSize)) (CSize (ldsUsageSizeInBytes))+ poke ((p `plusPtr` 24 :: Ptr CSize)) (CSize (scratchMemUsageInBytes))+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 16 :: Ptr CSize)) (CSize (zero))+ poke ((p `plusPtr` 24 :: Ptr CSize)) (CSize (zero))+ f++instance FromCStruct ShaderResourceUsageAMD where+ peekCStruct p = do+ numUsedVgprs <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ numUsedSgprs <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ ldsSizePerLocalWorkGroup <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ ldsUsageSizeInBytes <- peek @CSize ((p `plusPtr` 16 :: Ptr CSize))+ scratchMemUsageInBytes <- peek @CSize ((p `plusPtr` 24 :: Ptr CSize))+ pure $ ShaderResourceUsageAMD+ numUsedVgprs numUsedSgprs ldsSizePerLocalWorkGroup ((\(CSize a) -> a) ldsUsageSizeInBytes) ((\(CSize a) -> a) scratchMemUsageInBytes)++instance Storable ShaderResourceUsageAMD where sizeOf ~_ = 32 alignment ~_ = 8- peek ptr = VkShaderResourceUsageAMD <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkNumUsedVgprs (poked :: VkShaderResourceUsageAMD))- *> poke (ptr `plusPtr` 4) (vkNumUsedSgprs (poked :: VkShaderResourceUsageAMD))- *> poke (ptr `plusPtr` 8) (vkLdsSizePerLocalWorkGroup (poked :: VkShaderResourceUsageAMD))- *> poke (ptr `plusPtr` 16) (vkLdsUsageSizeInBytes (poked :: VkShaderResourceUsageAMD))- *> poke (ptr `plusPtr` 24) (vkScratchMemUsageInBytes (poked :: VkShaderResourceUsageAMD))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ShaderResourceUsageAMD where+ zero = ShaderResourceUsageAMD+ zero+ zero+ zero+ zero+ zero++ -- | VkShaderStatisticsInfoAMD - Statistical information about a particular -- shader within a pipeline --@@ -260,9 +278,9 @@ -- Some implementations may merge multiple logical shader stages together -- in a single shader. In such cases, @shaderStageMask@ will contain a -- bitmask of all of the stages that are active within that shader.--- Consequently, if specifying those stages as input to--- 'vkGetShaderInfoAMD', the same output information /may/ be returned for--- all such shader stage queries.+-- Consequently, if specifying those stages as input to 'getShaderInfoAMD',+-- the same output information /may/ be returned for all such shader stage+-- queries. -- -- The number of available VGPRs and SGPRs (@numAvailableVgprs@ and -- @numAvailableSgprs@ respectively) are the shader-addressable subset of@@ -272,47 +290,142 @@ -- -- = See Also ----- 'VkShaderResourceUsageAMD',--- 'Graphics.Vulkan.Core10.PipelineLayout.VkShaderStageFlags'-data VkShaderStatisticsInfoAMD = VkShaderStatisticsInfoAMD+-- 'ShaderResourceUsageAMD',+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags'+data ShaderStatisticsInfoAMD = ShaderStatisticsInfoAMD { -- | @shaderStageMask@ are the combination of logical shader stages contained- -- within this shader.- vkShaderStageMask :: VkShaderStageFlags- , -- | @resourceUsage@ is an instance of 'VkShaderResourceUsageAMD' describing- -- internal physical device resources used by this shader.- vkResourceUsage :: VkShaderResourceUsageAMD+ -- within this shader.+ shaderStageMask :: ShaderStageFlags+ , -- | @resourceUsage@ is a 'ShaderResourceUsageAMD' structure describing+ -- internal physical device resources used by this shader.+ resourceUsage :: ShaderResourceUsageAMD , -- | @numPhysicalVgprs@ is the maximum number of vector instruction- -- general-purpose registers (VGPRs) available to the physical device.- vkNumPhysicalVgprs :: Word32+ -- general-purpose registers (VGPRs) available to the physical device.+ numPhysicalVgprs :: Word32 , -- | @numPhysicalSgprs@ is the maximum number of scalar instruction- -- general-purpose registers (SGPRs) available to the physical device.- vkNumPhysicalSgprs :: Word32+ -- general-purpose registers (SGPRs) available to the physical device.+ numPhysicalSgprs :: Word32 , -- | @numAvailableVgprs@ is the maximum limit of VGPRs made available to the- -- shader compiler.- vkNumAvailableVgprs :: Word32+ -- shader compiler.+ numAvailableVgprs :: Word32 , -- | @numAvailableSgprs@ is the maximum limit of SGPRs made available to the- -- shader compiler.- vkNumAvailableSgprs :: Word32+ -- shader compiler.+ numAvailableSgprs :: Word32 , -- | @computeWorkGroupSize@ is the local workgroup size of this shader in {- -- X, Y, Z } dimensions.- vkComputeWorkGroupSize :: Vector 3 Word32+ -- X, Y, Z } dimensions.+ computeWorkGroupSize :: (Word32, Word32, Word32) }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show ShaderStatisticsInfoAMD -instance Storable VkShaderStatisticsInfoAMD where- sizeOf ~_ = 72- alignment ~_ = 8- peek ptr = VkShaderStatisticsInfoAMD <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 52)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkShaderStageMask (poked :: VkShaderStatisticsInfoAMD))- *> poke (ptr `plusPtr` 8) (vkResourceUsage (poked :: VkShaderStatisticsInfoAMD))- *> poke (ptr `plusPtr` 40) (vkNumPhysicalVgprs (poked :: VkShaderStatisticsInfoAMD))- *> poke (ptr `plusPtr` 44) (vkNumPhysicalSgprs (poked :: VkShaderStatisticsInfoAMD))- *> poke (ptr `plusPtr` 48) (vkNumAvailableVgprs (poked :: VkShaderStatisticsInfoAMD))- *> poke (ptr `plusPtr` 52) (vkNumAvailableSgprs (poked :: VkShaderStatisticsInfoAMD))- *> poke (ptr `plusPtr` 56) (vkComputeWorkGroupSize (poked :: VkShaderStatisticsInfoAMD))+instance ToCStruct ShaderStatisticsInfoAMD where+ withCStruct x f = allocaBytesAligned 72 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ShaderStatisticsInfoAMD{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr ShaderStageFlags)) (shaderStageMask)+ ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr ShaderResourceUsageAMD)) (resourceUsage) . ($ ())+ lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (numPhysicalVgprs)+ lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) (numPhysicalSgprs)+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (numAvailableVgprs)+ lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (numAvailableSgprs)+ let pComputeWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 56 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+ lift $ case (computeWorkGroupSize) of+ (e0, e1, e2) -> do+ poke (pComputeWorkGroupSize' :: Ptr Word32) (e0)+ poke (pComputeWorkGroupSize' `plusPtr` 4 :: Ptr Word32) (e1)+ poke (pComputeWorkGroupSize' `plusPtr` 8 :: Ptr Word32) (e2)+ lift $ f+ cStructSize = 72+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr ShaderStageFlags)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr ShaderResourceUsageAMD)) (zero) . ($ ())+ lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)+ let pComputeWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 56 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+ lift $ case ((zero, zero, zero)) of+ (e0, e1, e2) -> do+ poke (pComputeWorkGroupSize' :: Ptr Word32) (e0)+ poke (pComputeWorkGroupSize' `plusPtr` 4 :: Ptr Word32) (e1)+ poke (pComputeWorkGroupSize' `plusPtr` 8 :: Ptr Word32) (e2)+ lift $ f++instance FromCStruct ShaderStatisticsInfoAMD where+ peekCStruct p = do+ shaderStageMask <- peek @ShaderStageFlags ((p `plusPtr` 0 :: Ptr ShaderStageFlags))+ resourceUsage <- peekCStruct @ShaderResourceUsageAMD ((p `plusPtr` 8 :: Ptr ShaderResourceUsageAMD))+ numPhysicalVgprs <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))+ numPhysicalSgprs <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))+ numAvailableVgprs <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+ numAvailableSgprs <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))+ let pcomputeWorkGroupSize = lowerArrayPtr @Word32 ((p `plusPtr` 56 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+ computeWorkGroupSize0 <- peek @Word32 ((pcomputeWorkGroupSize `advancePtrBytes` 0 :: Ptr Word32))+ computeWorkGroupSize1 <- peek @Word32 ((pcomputeWorkGroupSize `advancePtrBytes` 4 :: Ptr Word32))+ computeWorkGroupSize2 <- peek @Word32 ((pcomputeWorkGroupSize `advancePtrBytes` 8 :: Ptr Word32))+ pure $ ShaderStatisticsInfoAMD+ shaderStageMask resourceUsage numPhysicalVgprs numPhysicalSgprs numAvailableVgprs numAvailableSgprs ((computeWorkGroupSize0, computeWorkGroupSize1, computeWorkGroupSize2))++instance Zero ShaderStatisticsInfoAMD where+ zero = ShaderStatisticsInfoAMD+ zero+ zero+ zero+ zero+ zero+ zero+ (zero, zero, zero)+++-- | VkShaderInfoTypeAMD - Enum specifying which type of shader info to query+--+-- = See Also+--+-- 'getShaderInfoAMD'+newtype ShaderInfoTypeAMD = ShaderInfoTypeAMD Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'SHADER_INFO_TYPE_STATISTICS_AMD' specifies that device resources used+-- by a shader will be queried.+pattern SHADER_INFO_TYPE_STATISTICS_AMD = ShaderInfoTypeAMD 0+-- | 'SHADER_INFO_TYPE_BINARY_AMD' specifies that implementation-specific+-- information will be queried.+pattern SHADER_INFO_TYPE_BINARY_AMD = ShaderInfoTypeAMD 1+-- | 'SHADER_INFO_TYPE_DISASSEMBLY_AMD' specifies that human-readable+-- dissassembly of a shader.+pattern SHADER_INFO_TYPE_DISASSEMBLY_AMD = ShaderInfoTypeAMD 2+{-# complete SHADER_INFO_TYPE_STATISTICS_AMD,+ SHADER_INFO_TYPE_BINARY_AMD,+ SHADER_INFO_TYPE_DISASSEMBLY_AMD :: ShaderInfoTypeAMD #-}++instance Show ShaderInfoTypeAMD where+ showsPrec p = \case+ SHADER_INFO_TYPE_STATISTICS_AMD -> showString "SHADER_INFO_TYPE_STATISTICS_AMD"+ SHADER_INFO_TYPE_BINARY_AMD -> showString "SHADER_INFO_TYPE_BINARY_AMD"+ SHADER_INFO_TYPE_DISASSEMBLY_AMD -> showString "SHADER_INFO_TYPE_DISASSEMBLY_AMD"+ ShaderInfoTypeAMD x -> showParen (p >= 11) (showString "ShaderInfoTypeAMD " . showsPrec 11 x)++instance Read ShaderInfoTypeAMD where+ readPrec = parens (choose [("SHADER_INFO_TYPE_STATISTICS_AMD", pure SHADER_INFO_TYPE_STATISTICS_AMD)+ , ("SHADER_INFO_TYPE_BINARY_AMD", pure SHADER_INFO_TYPE_BINARY_AMD)+ , ("SHADER_INFO_TYPE_DISASSEMBLY_AMD", pure SHADER_INFO_TYPE_DISASSEMBLY_AMD)]+ ++++ prec 10 (do+ expectP (Ident "ShaderInfoTypeAMD")+ v <- step readPrec+ pure (ShaderInfoTypeAMD v)))+++type AMD_SHADER_INFO_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_AMD_SHADER_INFO_SPEC_VERSION"+pattern AMD_SHADER_INFO_SPEC_VERSION :: forall a . Integral a => a+pattern AMD_SHADER_INFO_SPEC_VERSION = 1+++type AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info"++-- No documentation found for TopLevel "VK_AMD_SHADER_INFO_EXTENSION_NAME"+pattern AMD_SHADER_INFO_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info"+
+ src/Graphics/Vulkan/Extensions/VK_AMD_shader_info.hs-boot view
@@ -0,0 +1,27 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_AMD_shader_info ( ShaderResourceUsageAMD+ , ShaderStatisticsInfoAMD+ , ShaderInfoTypeAMD+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ShaderResourceUsageAMD++instance ToCStruct ShaderResourceUsageAMD+instance Show ShaderResourceUsageAMD++instance FromCStruct ShaderResourceUsageAMD+++data ShaderStatisticsInfoAMD++instance ToCStruct ShaderStatisticsInfoAMD+instance Show ShaderStatisticsInfoAMD++instance FromCStruct ShaderStatisticsInfoAMD+++data ShaderInfoTypeAMD+
src/Graphics/Vulkan/Extensions/VK_AMD_shader_trinary_minmax.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_AMD_shader_trinary_minmax- ( pattern VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION- , pattern VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_AMD_shader_trinary_minmax ( AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION+ , pattern AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION+ , AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME+ , pattern AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION"+pattern AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION :: forall a . Integral a => a+pattern AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 +type AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" --- No documentation found for TopLevel "VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION"-pattern VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION :: Integral a => a-pattern VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME"-pattern VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax"+pattern AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax"+
src/Graphics/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs view
@@ -1,70 +1,94 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_AMD_texture_gather_bias_lod- ( pattern VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD- , pattern VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION- , pattern VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME- , VkTextureLODGatherFormatPropertiesAMD(..)- ) where--import Data.String- ( IsString- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- )-+module Graphics.Vulkan.Extensions.VK_AMD_texture_gather_bias_lod ( TextureLODGatherFormatPropertiesAMD(..)+ , AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION+ , pattern AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION+ , AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME+ , pattern AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME+ ) where --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD"-pattern VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD :: VkStructureType-pattern VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = VkStructureType 1000041000--- No documentation found for TopLevel "VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION"-pattern VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION :: Integral a => a-pattern VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME"-pattern VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod"+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD)) -- | VkTextureLODGatherFormatPropertiesAMD - Structure informing whether or -- not texture gather bias\/LOD functionality is supported for a given -- image format and a given physical device. --+-- == Valid Usage (Implicit)+-- -- = See Also ----- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkTextureLODGatherFormatPropertiesAMD = VkTextureLODGatherFormatPropertiesAMD- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@.- vkPNext :: Ptr ()- , -- | @supportsTextureGatherLODBiasAMD@ tells if the image format can be used- -- with texture gather bias\/LOD functions, as introduced by the- -- @{html_spec_relative}#VK_AMD_texture_gather_bias_lod@ extension. This- -- field is set by the implementation. User-specified value is ignored.- vkSupportsTextureGatherLODBiasAMD :: VkBool32- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data TextureLODGatherFormatPropertiesAMD = TextureLODGatherFormatPropertiesAMD+ { -- | @supportsTextureGatherLODBiasAMD@ tells if the image format can be used+ -- with texture gather bias\/LOD functions, as introduced by the+ -- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_AMD_texture_gather_bias_lod@+ -- extension. This field is set by the implementation. User-specified value+ -- is ignored.+ supportsTextureGatherLODBiasAMD :: Bool }+ deriving (Typeable)+deriving instance Show TextureLODGatherFormatPropertiesAMD -instance Storable VkTextureLODGatherFormatPropertiesAMD where+instance ToCStruct TextureLODGatherFormatPropertiesAMD where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p TextureLODGatherFormatPropertiesAMD{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (supportsTextureGatherLODBiasAMD))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct TextureLODGatherFormatPropertiesAMD where+ peekCStruct p = do+ supportsTextureGatherLODBiasAMD <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ TextureLODGatherFormatPropertiesAMD+ (bool32ToBool supportsTextureGatherLODBiasAMD)++instance Storable TextureLODGatherFormatPropertiesAMD where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkTextureLODGatherFormatPropertiesAMD <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkTextureLODGatherFormatPropertiesAMD))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkTextureLODGatherFormatPropertiesAMD))- *> poke (ptr `plusPtr` 16) (vkSupportsTextureGatherLODBiasAMD (poked :: VkTextureLODGatherFormatPropertiesAMD))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero TextureLODGatherFormatPropertiesAMD where+ zero = TextureLODGatherFormatPropertiesAMD+ zero+++type AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION"+pattern AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION :: forall a . Integral a => a+pattern AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1+++type AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod"++-- No documentation found for TopLevel "VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME"+pattern AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod"+
+ src/Graphics/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_AMD_texture_gather_bias_lod (TextureLODGatherFormatPropertiesAMD) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data TextureLODGatherFormatPropertiesAMD++instance ToCStruct TextureLODGatherFormatPropertiesAMD+instance Show TextureLODGatherFormatPropertiesAMD++instance FromCStruct TextureLODGatherFormatPropertiesAMD+
src/Graphics/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs view
@@ -1,160 +1,145 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer- ( AHardwareBuffer- , pattern VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID- , pattern VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID- , pattern VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID- , pattern VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID- , pattern VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID- , pattern VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID- , pattern VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION- , pattern VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME- , vkGetAndroidHardwareBufferPropertiesANDROID- , vkGetMemoryAndroidHardwareBufferANDROID- , VkImportAndroidHardwareBufferInfoANDROID(..)- , VkAndroidHardwareBufferUsageANDROID(..)- , VkAndroidHardwareBufferPropertiesANDROID(..)- , VkMemoryGetAndroidHardwareBufferInfoANDROID(..)- , VkAndroidHardwareBufferFormatPropertiesANDROID(..)- , VkExternalFormatANDROID(..)- ) where--import Data.String- ( IsString- )-import Data.Word- ( Word32- , Word64- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkFormat(..)- , VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- , VkDeviceSize- , VkFormatFeatureFlags- )-import Graphics.Vulkan.Core10.ImageView- ( VkComponentMapping(..)- )-import Graphics.Vulkan.Core10.Memory- ( VkDeviceMemory- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities- ( VkExternalMemoryHandleTypeFlagBits(..)- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion- ( VkChromaLocation(..)- , VkSamplerYcbcrModelConversion(..)- , VkSamplerYcbcrRange(..)- )+module Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer ( getAndroidHardwareBufferPropertiesANDROID+ , getMemoryAndroidHardwareBufferANDROID+ , ImportAndroidHardwareBufferInfoANDROID(..)+ , AndroidHardwareBufferUsageANDROID(..)+ , AndroidHardwareBufferPropertiesANDROID(..)+ , MemoryGetAndroidHardwareBufferInfoANDROID(..)+ , AndroidHardwareBufferFormatPropertiesANDROID(..)+ , ExternalFormatANDROID(..)+ , ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION+ , pattern ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION+ , ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME+ , pattern ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME+ , AHardwareBuffer+ ) where +import Control.Exception.Base (bracket)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.String (IsString)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Word (Word64)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Extensions.WSITypes (AHardwareBuffer)+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core11.Enums.ChromaLocation (ChromaLocation)+import Graphics.Vulkan.Core10.ImageView (ComponentMapping)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetAndroidHardwareBufferPropertiesANDROID))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetMemoryAndroidHardwareBufferANDROID))+import Graphics.Vulkan.Core10.Handles (DeviceMemory)+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.Core10.Enums.Format (Format)+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core11.Enums.SamplerYcbcrModelConversion (SamplerYcbcrModelConversion)+import Graphics.Vulkan.Core11.Enums.SamplerYcbcrRange (SamplerYcbcrRange)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.WSITypes (AHardwareBuffer)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetAndroidHardwareBufferPropertiesANDROID+ :: FunPtr (Ptr Device_T -> Ptr AHardwareBuffer -> Ptr (AndroidHardwareBufferPropertiesANDROID a) -> IO Result) -> Ptr Device_T -> Ptr AHardwareBuffer -> Ptr (AndroidHardwareBufferPropertiesANDROID a) -> IO Result --- | Opaque data-data AHardwareBuffer--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"-pattern VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID :: VkStructureType-pattern VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = VkStructureType 1000129000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"-pattern VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID :: VkStructureType-pattern VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = VkStructureType 1000129001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"-pattern VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID :: VkStructureType-pattern VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = VkStructureType 1000129002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"-pattern VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = VkStructureType 1000129003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"-pattern VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID :: VkStructureType-pattern VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = VkStructureType 1000129004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID"-pattern VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = VkStructureType 1000129005--- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID"-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID :: VkExternalMemoryHandleTypeFlagBits-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = VkExternalMemoryHandleTypeFlagBits 0x00000400--- No documentation found for TopLevel "VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION"-pattern VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION :: Integral a => a-pattern VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION = 3--- No documentation found for TopLevel "VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME"-pattern VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME = "VK_ANDROID_external_memory_android_hardware_buffer" -- | vkGetAndroidHardwareBufferPropertiesANDROID - Get Properties of External -- Memory Android Hardware Buffers -- -- = Parameters ----- - @device@ is the logical device that will be importing @buffer@.------ - @buffer@ is the Android hardware buffer which will be imported.------ - @pProperties@ will return properties of @buffer@.------ == Valid Usage------ - @buffer@ /must/ be a valid Android hardware buffer object with at--- least one of the @AHARDWAREBUFFER_USAGE_GPU_@* usage flags.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- will be importing 'Graphics.Vulkan.Core10.Handles.Buffer'. ----- == Valid Usage (Implicit)+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' is the Android hardware+-- buffer which will be imported. ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - @pProperties@ is a pointer to a+-- 'AndroidHardwareBufferPropertiesANDROID' structure in which the+-- properties of 'Graphics.Vulkan.Core10.Handles.Buffer' are returned. ----- - @buffer@ /must/ be a valid pointer to a valid @AHardwareBuffer@--- value+-- == Return Codes ----- - @pProperties@ /must/ be a valid pointer to a--- @VkAndroidHardwareBufferPropertiesANDROID@ structure+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- == Return Codes+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR@+-- - 'Graphics.Vulkan.Extensions.VK_KHR_external_memory.ERROR_INVALID_EXTERNAL_HANDLE_KHR' -- -- = See Also ----- 'VkAndroidHardwareBufferPropertiesANDROID',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'+-- 'AndroidHardwareBufferPropertiesANDROID',+-- 'Graphics.Vulkan.Core10.Handles.Device'+getAndroidHardwareBufferPropertiesANDROID :: (PokeChain a, PeekChain a) => Device -> Ptr AHardwareBuffer -> IO (AndroidHardwareBufferPropertiesANDROID a)+getAndroidHardwareBufferPropertiesANDROID device buffer = evalContT $ do+ let vkGetAndroidHardwareBufferPropertiesANDROID' = mkVkGetAndroidHardwareBufferPropertiesANDROID (pVkGetAndroidHardwareBufferPropertiesANDROID (deviceCmds (device :: Device)))+ pPProperties <- ContT (withZeroCStruct @(AndroidHardwareBufferPropertiesANDROID _))+ r <- lift $ vkGetAndroidHardwareBufferPropertiesANDROID' (deviceHandle (device)) (buffer) (pPProperties)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pProperties <- lift $ peekCStruct @(AndroidHardwareBufferPropertiesANDROID _) pPProperties+ pure $ (pProperties)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkGetAndroidHardwareBufferPropertiesANDROID" vkGetAndroidHardwareBufferPropertiesANDROID :: ("device" ::: VkDevice) -> ("buffer" ::: Ptr AHardwareBuffer) -> ("pProperties" ::: Ptr VkAndroidHardwareBufferPropertiesANDROID) -> IO VkResult+ "dynamic" mkVkGetMemoryAndroidHardwareBufferANDROID+ :: FunPtr (Ptr Device_T -> Ptr MemoryGetAndroidHardwareBufferInfoANDROID -> Ptr (Ptr AHardwareBuffer) -> IO Result) -> Ptr Device_T -> Ptr MemoryGetAndroidHardwareBufferInfoANDROID -> Ptr (Ptr AHardwareBuffer) -> IO Result+ -- | vkGetMemoryAndroidHardwareBufferANDROID - Get an Android hardware buffer -- for a memory object -- -- = Parameters ----- - @device@ is the logical device that created the device memory being--- exported.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- created the device memory being exported. ----- - @pInfo@ is a pointer to an instance of the--- 'VkMemoryGetAndroidHardwareBufferInfoANDROID' structure containing+-- - @pInfo@ is a pointer to a+-- 'MemoryGetAndroidHardwareBufferInfoANDROID' structure containing -- parameters of the export operation. -- -- - @pBuffer@ will return an Android hardware buffer representing the@@ -162,395 +147,592 @@ -- -- = Description ----- Each call to @vkGetMemoryAndroidHardwareBufferANDROID@ /must/ return an+-- Each call to 'getMemoryAndroidHardwareBufferANDROID' /must/ return an -- Android hardware buffer with a new reference acquired in addition to the--- reference held by the @VkDeviceMemory@. To avoid leaking resources, the--- application /must/ release the reference by calling--- AHardwareBuffer_release when it is no longer needed. When called with--- the same handle in--- @VkMemoryGetAndroidHardwareBufferInfoANDROID@::@memory@,--- @vkGetMemoryAndroidHardwareBufferANDROID@ /must/ return the same Android+-- reference held by the 'Graphics.Vulkan.Core10.Handles.DeviceMemory'. To+-- avoid leaking resources, the application /must/ release the reference by+-- calling @AHardwareBuffer_release@ when it is no longer needed. When+-- called with the same handle in+-- 'MemoryGetAndroidHardwareBufferInfoANDROID'::@memory@,+-- 'getMemoryAndroidHardwareBufferANDROID' /must/ return the same Android -- hardware buffer object. If the device memory was created by importing an--- Android hardware buffer, @vkGetMemoryAndroidHardwareBufferANDROID@--- /must/ return that same Android hardware buffer object.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle+-- Android hardware buffer, 'getMemoryAndroidHardwareBufferANDROID' /must/+-- return that same Android hardware buffer object. ----- - @pInfo@ /must/ be a valid pointer to a valid--- @VkMemoryGetAndroidHardwareBufferInfoANDROID@ structure+-- == Return Codes ----- - @pBuffer@ /must/ be a valid pointer to a valid pointer to a--- @AHardwareBuffer@ value+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- == Return Codes+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_TOO_MANY_OBJECTS@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS' ----- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkMemoryGetAndroidHardwareBufferInfoANDROID'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetMemoryAndroidHardwareBufferANDROID" vkGetMemoryAndroidHardwareBufferANDROID :: ("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkMemoryGetAndroidHardwareBufferInfoANDROID) -> ("pBuffer" ::: Ptr (Ptr AHardwareBuffer)) -> IO VkResult+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'MemoryGetAndroidHardwareBufferInfoANDROID'+getMemoryAndroidHardwareBufferANDROID :: Device -> MemoryGetAndroidHardwareBufferInfoANDROID -> IO (Ptr AHardwareBuffer)+getMemoryAndroidHardwareBufferANDROID device info = evalContT $ do+ let vkGetMemoryAndroidHardwareBufferANDROID' = mkVkGetMemoryAndroidHardwareBufferANDROID (pVkGetMemoryAndroidHardwareBufferANDROID (deviceCmds (device :: Device)))+ pInfo <- ContT $ withCStruct (info)+ pPBuffer <- ContT $ bracket (callocBytes @(Ptr AHardwareBuffer) 8) free+ r <- lift $ vkGetMemoryAndroidHardwareBufferANDROID' (deviceHandle (device)) pInfo (pPBuffer)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pBuffer <- lift $ peek @(Ptr AHardwareBuffer) pPBuffer+ pure $ (pBuffer)++ -- | VkImportAndroidHardwareBufferInfoANDROID - Import memory from an Android -- hardware buffer -- -- = Description ----- If the @vkAllocateMemory@ command succeeds, the implementation /must/--- acquire a reference to the imported hardware buffer, which it /must/--- release when the device memory object is freed. If the command fails,--- the implementation /must/ not retain a reference.+-- If the 'Graphics.Vulkan.Core10.Memory.allocateMemory' command succeeds,+-- the implementation /must/ acquire a reference to the imported hardware+-- buffer, which it /must/ release when the device memory object is freed.+-- If the command fails, the implementation /must/ not retain a reference. -- -- == Valid Usage ----- - If @buffer@ is not @NULL@, Android hardware buffers /must/ be--- supported for import, as reported by--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalImageFormatProperties'+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is not @NULL@, Android+-- hardware buffers /must/ be supported for import, as reported by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties' -- or--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalBufferProperties'.+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties'. ----- - If @buffer@ is not @NULL@, it /must/ be a valid Android hardware--- buffer object with format and usage compatible with Vulkan as--- described by--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'.+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is not @NULL@, it /must/+-- be a valid Android hardware buffer object with+-- @AHardwareBuffer_Desc@::'Graphics.Vulkan.Core10.Enums.Format.Format'+-- and @AHardwareBuffer_Desc@::@usage@ compatible with Vulkan as+-- described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer Android Hardware Buffers>. -- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID' ----- - @buffer@ /must/ be a valid pointer to a @AHardwareBuffer@ value+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid pointer to+-- an 'Graphics.Vulkan.Extensions.WSITypes.AHardwareBuffer' value -- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkImportAndroidHardwareBufferInfoANDROID = VkImportAndroidHardwareBufferInfoANDROID- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @buffer@ is the Android hardware buffer to import.- vkBuffer :: Ptr AHardwareBuffer- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ImportAndroidHardwareBufferInfoANDROID = ImportAndroidHardwareBufferInfoANDROID+ { -- | 'Graphics.Vulkan.Core10.Handles.Buffer' is the Android hardware buffer+ -- to import.+ buffer :: Ptr AHardwareBuffer }+ deriving (Typeable)+deriving instance Show ImportAndroidHardwareBufferInfoANDROID -instance Storable VkImportAndroidHardwareBufferInfoANDROID where+instance ToCStruct ImportAndroidHardwareBufferInfoANDROID where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImportAndroidHardwareBufferInfoANDROID{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr (Ptr AHardwareBuffer))) (buffer)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr (Ptr AHardwareBuffer))) (zero)+ f++instance FromCStruct ImportAndroidHardwareBufferInfoANDROID where+ peekCStruct p = do+ buffer <- peek @(Ptr AHardwareBuffer) ((p `plusPtr` 16 :: Ptr (Ptr AHardwareBuffer)))+ pure $ ImportAndroidHardwareBufferInfoANDROID+ buffer++instance Storable ImportAndroidHardwareBufferInfoANDROID where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkImportAndroidHardwareBufferInfoANDROID <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkImportAndroidHardwareBufferInfoANDROID))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImportAndroidHardwareBufferInfoANDROID))- *> poke (ptr `plusPtr` 16) (vkBuffer (poked :: VkImportAndroidHardwareBufferInfoANDROID))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImportAndroidHardwareBufferInfoANDROID where+ zero = ImportAndroidHardwareBufferInfoANDROID+ zero++ -- | VkAndroidHardwareBufferUsageANDROID - Struct containing Android hardware -- buffer usage flags -- -- = Description -- -- The @androidHardwareBufferUsage@ field /must/ include Android hardware--- buffer usage flags listed in the [AHardwareBuffer Usage--- Equivalence](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-external-android-hardware-buffer-usage)+-- buffer usage flags listed in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-usage AHardwareBuffer Usage Equivalence> -- table when the corresponding Vulkan image usage or image creation flags--- are included in the @usage@ or @flags@ fields of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceImageFormatInfo2'.+-- are included in the @usage@ or 'Graphics.Vulkan.Core10.BaseType.Flags'+-- fields of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'. -- It /must/ include at least one GPU usage flag -- (@AHARDWAREBUFFER_USAGE_GPU_@*), even if none of the corresponding -- Vulkan usages or flags are requested. ----- __Note__+-- Note -- -- Requiring at least one GPU usage flag ensures that Android hardware -- buffer memory will be allocated in a memory pool accessible to the -- Vulkan implementation, and that specializing the memory layout based on--- usage flags doesn’t prevent it from being compatible with Vulkan.+-- usage flags does not prevent it from being compatible with Vulkan. -- Implementations /may/ avoid unnecessary restrictions caused by this -- requirement by using vendor usage flags to indicate that only the Vulkan -- uses indicated in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkImageFormatProperties2'+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2' -- are required. -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID@--- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkAndroidHardwareBufferUsageANDROID = VkAndroidHardwareBufferUsageANDROID- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @androidHardwareBufferUsage@ returns the the Android hardware buffer- -- usage flags.- vkAndroidHardwareBufferUsage :: Word64- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data AndroidHardwareBufferUsageANDROID = AndroidHardwareBufferUsageANDROID+ { -- | @androidHardwareBufferUsage@ returns the Android hardware buffer usage+ -- flags.+ androidHardwareBufferUsage :: Word64 }+ deriving (Typeable)+deriving instance Show AndroidHardwareBufferUsageANDROID -instance Storable VkAndroidHardwareBufferUsageANDROID where+instance ToCStruct AndroidHardwareBufferUsageANDROID where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p AndroidHardwareBufferUsageANDROID{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word64)) (androidHardwareBufferUsage)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word64)) (zero)+ f++instance FromCStruct AndroidHardwareBufferUsageANDROID where+ peekCStruct p = do+ androidHardwareBufferUsage <- peek @Word64 ((p `plusPtr` 16 :: Ptr Word64))+ pure $ AndroidHardwareBufferUsageANDROID+ androidHardwareBufferUsage++instance Storable AndroidHardwareBufferUsageANDROID where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkAndroidHardwareBufferUsageANDROID <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkAndroidHardwareBufferUsageANDROID))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkAndroidHardwareBufferUsageANDROID))- *> poke (ptr `plusPtr` 16) (vkAndroidHardwareBufferUsage (poked :: VkAndroidHardwareBufferUsageANDROID))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AndroidHardwareBufferUsageANDROID where+ zero = AndroidHardwareBufferUsageANDROID+ zero++ -- | VkAndroidHardwareBufferPropertiesANDROID - Properties of External Memory -- Android Hardware Buffers --+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'AndroidHardwareBufferFormatPropertiesANDROID'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+-- -- = See Also ----- @VkDeviceSize@, 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetAndroidHardwareBufferPropertiesANDROID'-data VkAndroidHardwareBufferPropertiesANDROID = VkAndroidHardwareBufferPropertiesANDROID- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getAndroidHardwareBufferPropertiesANDROID'+data AndroidHardwareBufferPropertiesANDROID (es :: [Type]) = AndroidHardwareBufferPropertiesANDROID+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es , -- | @allocationSize@ is the size of the external memory- vkAllocationSize :: VkDeviceSize+ allocationSize :: DeviceSize , -- | @memoryTypeBits@ is a bitmask containing one bit set for every memory- -- type which the specified Android hardware buffer /can/ be imported as.- vkMemoryTypeBits :: Word32+ -- type which the specified Android hardware buffer /can/ be imported as.+ memoryTypeBits :: Word32 }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show (Chain es) => Show (AndroidHardwareBufferPropertiesANDROID es) -instance Storable VkAndroidHardwareBufferPropertiesANDROID where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkAndroidHardwareBufferPropertiesANDROID <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkAndroidHardwareBufferPropertiesANDROID))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkAndroidHardwareBufferPropertiesANDROID))- *> poke (ptr `plusPtr` 16) (vkAllocationSize (poked :: VkAndroidHardwareBufferPropertiesANDROID))- *> poke (ptr `plusPtr` 24) (vkMemoryTypeBits (poked :: VkAndroidHardwareBufferPropertiesANDROID))+instance Extensible AndroidHardwareBufferPropertiesANDROID where+ extensibleType = STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID+ setNext x next = x{next = next}+ getNext AndroidHardwareBufferPropertiesANDROID{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends AndroidHardwareBufferPropertiesANDROID e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @AndroidHardwareBufferFormatPropertiesANDROID = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (AndroidHardwareBufferPropertiesANDROID es) where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p AndroidHardwareBufferPropertiesANDROID{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (allocationSize)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (memoryTypeBits)+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ lift $ f++instance PeekChain es => FromCStruct (AndroidHardwareBufferPropertiesANDROID es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ allocationSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))+ memoryTypeBits <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ pure $ AndroidHardwareBufferPropertiesANDROID+ next allocationSize memoryTypeBits++instance es ~ '[] => Zero (AndroidHardwareBufferPropertiesANDROID es) where+ zero = AndroidHardwareBufferPropertiesANDROID+ ()+ zero+ zero++ -- | VkMemoryGetAndroidHardwareBufferInfoANDROID - Structure describing an -- Android hardware buffer memory export operation -- -- == Valid Usage ----- - @VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID@+-- - 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID' -- /must/ have been included in--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory.VkExportMemoryAllocateInfoKHR'::@handleTypes@+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'::@handleTypes@ -- when @memory@ was created. ----- - If the @pNext@ chain of the @VkMemoryAllocateInfo@ used to allocate--- @memory@ included a @VkMemoryDedicatedAllocateInfo@ with non-NULL--- @image@ member, then that @image@ /must/ already be bound to--- @memory@.+-- - If the @pNext@ chain of the+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' used to allocate+-- @memory@ included a+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo'+-- with non-@NULL@ 'Graphics.Vulkan.Core10.Handles.Image' member, then+-- that 'Graphics.Vulkan.Core10.Handles.Image' /must/ already be bound+-- to @memory@. --+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID'+--+-- - @pNext@ /must/ be @NULL@+--+-- - @memory@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' handle+-- -- = See Also ----- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetMemoryAndroidHardwareBufferANDROID'-data VkMemoryGetAndroidHardwareBufferInfoANDROID = VkMemoryGetAndroidHardwareBufferInfoANDROID- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @memory@ is the memory object from which the Android hardware buffer- -- will be exported.- vkMemory :: VkDeviceMemory- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getMemoryAndroidHardwareBufferANDROID'+data MemoryGetAndroidHardwareBufferInfoANDROID = MemoryGetAndroidHardwareBufferInfoANDROID+ { -- | @memory@ is the memory object from which the Android hardware buffer+ -- will be exported.+ memory :: DeviceMemory }+ deriving (Typeable)+deriving instance Show MemoryGetAndroidHardwareBufferInfoANDROID -instance Storable VkMemoryGetAndroidHardwareBufferInfoANDROID where+instance ToCStruct MemoryGetAndroidHardwareBufferInfoANDROID where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p MemoryGetAndroidHardwareBufferInfoANDROID{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DeviceMemory)) (memory)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DeviceMemory)) (zero)+ f++instance FromCStruct MemoryGetAndroidHardwareBufferInfoANDROID where+ peekCStruct p = do+ memory <- peek @DeviceMemory ((p `plusPtr` 16 :: Ptr DeviceMemory))+ pure $ MemoryGetAndroidHardwareBufferInfoANDROID+ memory++instance Storable MemoryGetAndroidHardwareBufferInfoANDROID where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkMemoryGetAndroidHardwareBufferInfoANDROID <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkMemoryGetAndroidHardwareBufferInfoANDROID))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkMemoryGetAndroidHardwareBufferInfoANDROID))- *> poke (ptr `plusPtr` 16) (vkMemory (poked :: VkMemoryGetAndroidHardwareBufferInfoANDROID))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MemoryGetAndroidHardwareBufferInfoANDROID where+ zero = MemoryGetAndroidHardwareBufferInfoANDROID+ zero++ -- | VkAndroidHardwareBufferFormatPropertiesANDROID - Structure describing -- the image format properties of an Android hardware buffer -- -- = Description -- -- If the Android hardware buffer has one of the formats listed in the--- [Format Equivalence--- table](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-external-android-hardware-buffer-formats),--- then @format@ /must/ have the equivalent Vulkan format listed in the--- table. Otherwise, @format@ /may/ be @VK_FORMAT_UNDEFINED@, indicating--- the Android hardware buffer can only be used with an external format.+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-formats Format Equivalence table>,+-- then 'Graphics.Vulkan.Core10.Enums.Format.Format' /must/ have the+-- equivalent Vulkan format listed in the table. Otherwise,+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' /may/ be+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', indicating the+-- Android hardware buffer /can/ only be used with an external format. -- -- The @formatFeatures@ member /must/ include--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@ and at least one of--- @VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT@ or--- @VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT@, and /should/ include--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@ and--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT@.+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_BIT'+-- and at least one of+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT'+-- or+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT',+-- and /should/ include+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+-- and+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT'. --+-- Note+--+-- The @formatFeatures@ member only indicates the features available when+-- using an+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external-format image>+-- created from the Android hardware buffer. Images from Android hardware+-- buffers with a format other than+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' are subject to+-- the format capabilities obtained from+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2',+-- and+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+-- with appropriate parameters. These sets of features are independent of+-- each other, e.g. the external format will support sampler Y′CBCR+-- conversion even if the non-external format does not, and writing to+-- non-external format images is possible but writing to external format+-- images is not.+-- -- Android hardware buffers with the same external format /must/ have the--- same support for @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT@,--- @VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT@,--- @VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT@,--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT@,--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT@,+-- same support for+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT',+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT',+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT',+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT',+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT', -- and--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT@.--- Other format features /may/ differ between Android hardware buffers that--- have the same external format. This allows applications to use the same--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversion'--- object (and samplers and pipelines created from them) for any Android--- hardware buffers that have the same external format.+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT'.+-- in @formatFeatures@. Other format features /may/ differ between Android+-- hardware buffers that have the same external format. This allows+-- applications to use the same+-- 'Graphics.Vulkan.Core11.Handles.SamplerYcbcrConversion' object (and+-- samplers and pipelines created from them) for any Android hardware+-- buffers that have the same external format. ----- If @format@ is not @VK_FORMAT_UNDEFINED@, then the value of--- @samplerYcbcrConversionComponents@ /must/ be valid when used as the+-- If 'Graphics.Vulkan.Core10.Enums.Format.Format' is not+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', then the value+-- of @samplerYcbcrConversionComponents@ /must/ be valid when used as the -- @components@ member of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionCreateInfo'--- with that format. If @format@ is @VK_FORMAT_UNDEFINED@, all members of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'+-- with that format. If 'Graphics.Vulkan.Core10.Enums.Format.Format' is+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', all members of -- @samplerYcbcrConversionComponents@ /must/ be--- @VK_COMPONENT_SWIZZLE_IDENTITY@.+-- 'Graphics.Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_IDENTITY'. ----- Implementations may not always be able to determine the color model,+-- Implementations /may/ not always be able to determine the color model, -- numerical range, or chroma offsets of the image contents, so the values--- in @VkAndroidHardwareBufferFormatPropertiesANDROID@ are only--- suggestions. Applications /should/ treat these values as sensible--- defaults to use in the absence of more reliable information obtained--- through some other means. If the underlying physical device is also--- usable via OpenGL ES with the GL_OES_EGL_image_external extension, the--- implementation /should/ suggest values that will produce similar sampled--- values as would be obtained by sampling the same external image via--- @samplerExternalOES@ in OpenGL ES using equivalent sampler parameters.+-- in 'AndroidHardwareBufferFormatPropertiesANDROID' are only suggestions.+-- Applications /should/ treat these values as sensible defaults to use in+-- the absence of more reliable information obtained through some other+-- means. If the underlying physical device is also usable via OpenGL ES+-- with the+-- <https://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image_external.txt GL_OES_EGL_image_external>+-- extension, the implementation /should/ suggest values that will produce+-- similar sampled values as would be obtained by sampling the same+-- external image via @samplerExternalOES@ in OpenGL ES using equivalent+-- sampler parameters. ----- __Note__+-- Note ----- Since GL_OES_EGL_image_external does not require the same sampling and--- conversion calculations as Vulkan does, achieving identical results--- between APIs /may/ not be possible on some implementations.+-- Since+-- <https://www.khronos.org/registry/OpenGL/extensions/OES/OES_EGL_image_external.txt GL_OES_EGL_image_external>+-- does not require the same sampling and conversion calculations as Vulkan+-- does, achieving identical results between APIs /may/ not be possible on+-- some implementations. -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID@--- -- = See Also ----- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkChromaLocation',--- 'Graphics.Vulkan.Core10.ImageView.VkComponentMapping',--- 'Graphics.Vulkan.Core10.Core.VkFormat',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkFormatFeatureFlags',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrModelConversion',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrRange',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkAndroidHardwareBufferFormatPropertiesANDROID = VkAndroidHardwareBufferFormatPropertiesANDROID- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @format@ is the Vulkan format corresponding to the Android hardware- -- buffer’s format, or @VK_FORMAT_UNDEFINED@ if there isn’t an equivalent- -- Vulkan format.- vkFormat :: VkFormat+-- 'Graphics.Vulkan.Core11.Enums.ChromaLocation.ChromaLocation',+-- 'Graphics.Vulkan.Core10.ImageView.ComponentMapping',+-- 'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlags',+-- 'Graphics.Vulkan.Core11.Enums.SamplerYcbcrModelConversion.SamplerYcbcrModelConversion',+-- 'Graphics.Vulkan.Core11.Enums.SamplerYcbcrRange.SamplerYcbcrRange',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data AndroidHardwareBufferFormatPropertiesANDROID = AndroidHardwareBufferFormatPropertiesANDROID+ { -- | 'Graphics.Vulkan.Core10.Enums.Format.Format' is the Vulkan format+ -- corresponding to the Android hardware buffer’s format, or+ -- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' if there is not+ -- an equivalent Vulkan format.+ format :: Format , -- | @externalFormat@ is an implementation-defined external format identifier- -- for use with 'VkExternalFormatANDROID'. It /must/ not be zero.- vkExternalFormat :: Word64+ -- for use with 'ExternalFormatANDROID'. It /must/ not be zero.+ externalFormat :: Word64 , -- | @formatFeatures@ describes the capabilities of this external format when- -- used with an image bound to memory imported from @buffer@.- vkFormatFeatures :: VkFormatFeatureFlags+ -- used with an image bound to memory imported from+ -- 'Graphics.Vulkan.Core10.Handles.Buffer'.+ formatFeatures :: FormatFeatureFlags , -- | @samplerYcbcrConversionComponents@ is the component swizzle that- -- /should/ be used in- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionCreateInfo'.- vkSamplerYcbcrConversionComponents :: VkComponentMapping+ -- /should/ be used in+ -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'.+ samplerYcbcrConversionComponents :: ComponentMapping , -- | @suggestedYcbcrModel@ is a suggested color model to use in the- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionCreateInfo'.- vkSuggestedYcbcrModel :: VkSamplerYcbcrModelConversion+ -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'.+ suggestedYcbcrModel :: SamplerYcbcrModelConversion , -- | @suggestedYcbcrRange@ is a suggested numerical value range to use in- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionCreateInfo'.- vkSuggestedYcbcrRange :: VkSamplerYcbcrRange+ -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'.+ suggestedYcbcrRange :: SamplerYcbcrRange , -- | @suggestedXChromaOffset@ is a suggested X chroma offset to use in- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionCreateInfo'.- vkSuggestedXChromaOffset :: VkChromaLocation+ -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'.+ suggestedXChromaOffset :: ChromaLocation , -- | @suggestedYChromaOffset@ is a suggested Y chroma offset to use in- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion.VkSamplerYcbcrConversionCreateInfo'.- vkSuggestedYChromaOffset :: VkChromaLocation+ -- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'.+ suggestedYChromaOffset :: ChromaLocation }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show AndroidHardwareBufferFormatPropertiesANDROID -instance Storable VkAndroidHardwareBufferFormatPropertiesANDROID where- sizeOf ~_ = 72- alignment ~_ = 8- peek ptr = VkAndroidHardwareBufferFormatPropertiesANDROID <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 52)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 60)- <*> peek (ptr `plusPtr` 64)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkAndroidHardwareBufferFormatPropertiesANDROID))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkAndroidHardwareBufferFormatPropertiesANDROID))- *> poke (ptr `plusPtr` 16) (vkFormat (poked :: VkAndroidHardwareBufferFormatPropertiesANDROID))- *> poke (ptr `plusPtr` 24) (vkExternalFormat (poked :: VkAndroidHardwareBufferFormatPropertiesANDROID))- *> poke (ptr `plusPtr` 32) (vkFormatFeatures (poked :: VkAndroidHardwareBufferFormatPropertiesANDROID))- *> poke (ptr `plusPtr` 36) (vkSamplerYcbcrConversionComponents (poked :: VkAndroidHardwareBufferFormatPropertiesANDROID))- *> poke (ptr `plusPtr` 52) (vkSuggestedYcbcrModel (poked :: VkAndroidHardwareBufferFormatPropertiesANDROID))- *> poke (ptr `plusPtr` 56) (vkSuggestedYcbcrRange (poked :: VkAndroidHardwareBufferFormatPropertiesANDROID))- *> poke (ptr `plusPtr` 60) (vkSuggestedXChromaOffset (poked :: VkAndroidHardwareBufferFormatPropertiesANDROID))- *> poke (ptr `plusPtr` 64) (vkSuggestedYChromaOffset (poked :: VkAndroidHardwareBufferFormatPropertiesANDROID))+instance ToCStruct AndroidHardwareBufferFormatPropertiesANDROID where+ withCStruct x f = allocaBytesAligned 72 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p AndroidHardwareBufferFormatPropertiesANDROID{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (format)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word64)) (externalFormat)+ lift $ poke ((p `plusPtr` 32 :: Ptr FormatFeatureFlags)) (formatFeatures)+ ContT $ pokeCStruct ((p `plusPtr` 36 :: Ptr ComponentMapping)) (samplerYcbcrConversionComponents) . ($ ())+ lift $ poke ((p `plusPtr` 52 :: Ptr SamplerYcbcrModelConversion)) (suggestedYcbcrModel)+ lift $ poke ((p `plusPtr` 56 :: Ptr SamplerYcbcrRange)) (suggestedYcbcrRange)+ lift $ poke ((p `plusPtr` 60 :: Ptr ChromaLocation)) (suggestedXChromaOffset)+ lift $ poke ((p `plusPtr` 64 :: Ptr ChromaLocation)) (suggestedYChromaOffset)+ lift $ f+ cStructSize = 72+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Format)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)+ lift $ poke ((p `plusPtr` 32 :: Ptr FormatFeatureFlags)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 36 :: Ptr ComponentMapping)) (zero) . ($ ())+ lift $ poke ((p `plusPtr` 52 :: Ptr SamplerYcbcrModelConversion)) (zero)+ lift $ poke ((p `plusPtr` 56 :: Ptr SamplerYcbcrRange)) (zero)+ lift $ poke ((p `plusPtr` 60 :: Ptr ChromaLocation)) (zero)+ lift $ poke ((p `plusPtr` 64 :: Ptr ChromaLocation)) (zero)+ lift $ f++instance FromCStruct AndroidHardwareBufferFormatPropertiesANDROID where+ peekCStruct p = do+ format <- peek @Format ((p `plusPtr` 16 :: Ptr Format))+ externalFormat <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))+ formatFeatures <- peek @FormatFeatureFlags ((p `plusPtr` 32 :: Ptr FormatFeatureFlags))+ samplerYcbcrConversionComponents <- peekCStruct @ComponentMapping ((p `plusPtr` 36 :: Ptr ComponentMapping))+ suggestedYcbcrModel <- peek @SamplerYcbcrModelConversion ((p `plusPtr` 52 :: Ptr SamplerYcbcrModelConversion))+ suggestedYcbcrRange <- peek @SamplerYcbcrRange ((p `plusPtr` 56 :: Ptr SamplerYcbcrRange))+ suggestedXChromaOffset <- peek @ChromaLocation ((p `plusPtr` 60 :: Ptr ChromaLocation))+ suggestedYChromaOffset <- peek @ChromaLocation ((p `plusPtr` 64 :: Ptr ChromaLocation))+ pure $ AndroidHardwareBufferFormatPropertiesANDROID+ format externalFormat formatFeatures samplerYcbcrConversionComponents suggestedYcbcrModel suggestedYcbcrRange suggestedXChromaOffset suggestedYChromaOffset++instance Zero AndroidHardwareBufferFormatPropertiesANDROID where+ zero = AndroidHardwareBufferFormatPropertiesANDROID+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero++ -- | VkExternalFormatANDROID - Structure containing an Android hardware -- buffer external format -- -- = Description -- -- If @externalFormat@ is zero, the effect is as if the--- @VkExternalFormatANDROID@ structure was not present. Otherwise, the--- image will have the specified external format, and--- @VkImageCreateInfo@::@format@ /must/ be @VK_FORMAT_UNDEFINED@.------ == Valid Usage------ - @externalFormat@ /must/ be @0@ or a value returned in the--- @externalFormat@ member of--- 'VkAndroidHardwareBufferFormatPropertiesANDROID' by an earlier call--- to 'vkGetAndroidHardwareBufferPropertiesANDROID'+-- 'ExternalFormatANDROID' structure was not present. Otherwise, the+-- 'Graphics.Vulkan.Core10.Handles.Image' will have the specified external+-- format. -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID@--- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkExternalFormatANDROID = VkExternalFormatANDROID- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @externalFormat@ is an implementation-defined identifier for the- -- external format- vkExternalFormat :: Word64- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ExternalFormatANDROID = ExternalFormatANDROID+ { -- | @externalFormat@ /must/ be @0@ or a value returned in the+ -- @externalFormat@ member of+ -- 'AndroidHardwareBufferFormatPropertiesANDROID' by an earlier call to+ -- 'getAndroidHardwareBufferPropertiesANDROID'+ externalFormat :: Word64 }+ deriving (Typeable)+deriving instance Show ExternalFormatANDROID -instance Storable VkExternalFormatANDROID where+instance ToCStruct ExternalFormatANDROID where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ExternalFormatANDROID{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word64)) (externalFormat)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word64)) (zero)+ f++instance FromCStruct ExternalFormatANDROID where+ peekCStruct p = do+ externalFormat <- peek @Word64 ((p `plusPtr` 16 :: Ptr Word64))+ pure $ ExternalFormatANDROID+ externalFormat++instance Storable ExternalFormatANDROID where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkExternalFormatANDROID <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkExternalFormatANDROID))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkExternalFormatANDROID))- *> poke (ptr `plusPtr` 16) (vkExternalFormat (poked :: VkExternalFormatANDROID))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ExternalFormatANDROID where+ zero = ExternalFormatANDROID+ zero+++type ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION = 3++-- No documentation found for TopLevel "VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION"+pattern ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION :: forall a . Integral a => a+pattern ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION = 3+++type ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME = "VK_ANDROID_external_memory_android_hardware_buffer"++-- No documentation found for TopLevel "VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME"+pattern ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME = "VK_ANDROID_external_memory_android_hardware_buffer"+
+ src/Graphics/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs-boot view
@@ -0,0 +1,63 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer ( AndroidHardwareBufferFormatPropertiesANDROID+ , AndroidHardwareBufferPropertiesANDROID+ , AndroidHardwareBufferUsageANDROID+ , ExternalFormatANDROID+ , ImportAndroidHardwareBufferInfoANDROID+ , MemoryGetAndroidHardwareBufferInfoANDROID+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+data AndroidHardwareBufferFormatPropertiesANDROID++instance ToCStruct AndroidHardwareBufferFormatPropertiesANDROID+instance Show AndroidHardwareBufferFormatPropertiesANDROID++instance FromCStruct AndroidHardwareBufferFormatPropertiesANDROID+++type role AndroidHardwareBufferPropertiesANDROID nominal+data AndroidHardwareBufferPropertiesANDROID (es :: [Type])++instance PokeChain es => ToCStruct (AndroidHardwareBufferPropertiesANDROID es)+instance Show (Chain es) => Show (AndroidHardwareBufferPropertiesANDROID es)++instance PeekChain es => FromCStruct (AndroidHardwareBufferPropertiesANDROID es)+++data AndroidHardwareBufferUsageANDROID++instance ToCStruct AndroidHardwareBufferUsageANDROID+instance Show AndroidHardwareBufferUsageANDROID++instance FromCStruct AndroidHardwareBufferUsageANDROID+++data ExternalFormatANDROID++instance ToCStruct ExternalFormatANDROID+instance Show ExternalFormatANDROID++instance FromCStruct ExternalFormatANDROID+++data ImportAndroidHardwareBufferInfoANDROID++instance ToCStruct ImportAndroidHardwareBufferInfoANDROID+instance Show ImportAndroidHardwareBufferInfoANDROID++instance FromCStruct ImportAndroidHardwareBufferInfoANDROID+++data MemoryGetAndroidHardwareBufferInfoANDROID++instance ToCStruct MemoryGetAndroidHardwareBufferInfoANDROID+instance Show MemoryGetAndroidHardwareBufferInfoANDROID++instance FromCStruct MemoryGetAndroidHardwareBufferInfoANDROID+
src/Graphics/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs view
@@ -1,113 +1,120 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}--module Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display- ( RROutput- , pattern VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION- , pattern VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME- , vkAcquireXlibDisplayEXT- , vkGetRandROutputDisplayEXT- ) where--import Data.String- ( IsString- )-import Data.Word- ( Word64- )-import Foreign.Ptr- ( Ptr- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkPhysicalDevice- )-import Graphics.Vulkan.Extensions.VK_KHR_display- ( VkDisplayKHR- )-import Graphics.Vulkan.Extensions.VK_KHR_xlib_surface- ( Display(..)- )+module Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display ( acquireXlibDisplayEXT+ , getRandROutputDisplayEXT+ , EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION+ , pattern EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION+ , EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME+ , pattern EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME+ , DisplayKHR(..)+ , Display+ , RROutput+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.String (IsString)+import Foreign.Storable (Storable(peek))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Extensions.WSITypes (Display)+import Graphics.Vulkan.Extensions.Handles (DisplayKHR)+import Graphics.Vulkan.Extensions.Handles (DisplayKHR(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkAcquireXlibDisplayEXT))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetRandROutputDisplayEXT))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Extensions.WSITypes (RROutput)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.WSITypes (Display)+import Graphics.Vulkan.Extensions.Handles (DisplayKHR(..))+import Graphics.Vulkan.Extensions.WSITypes (RROutput)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkAcquireXlibDisplayEXT+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr Display -> DisplayKHR -> IO Result) -> Ptr PhysicalDevice_T -> Ptr Display -> DisplayKHR -> IO Result --- No documentation found for TopLevel "RROutput"-type RROutput = Word64--- No documentation found for TopLevel "VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION"-pattern VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION :: Integral a => a-pattern VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME"-pattern VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" -- | vkAcquireXlibDisplayEXT - Acquire access to a VkDisplayKHR using Xlib -- -- = Parameters ----- - @physicalDevice@ The physical device the display is on.+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' The physical device+-- the display is on. ----- - @dpy@ A connection to the X11 server that currently owns @display@.+-- - @dpy@ A connection to the X11 server that currently owns+-- 'Graphics.Vulkan.Extensions.WSITypes.Display'. ----- - @display@ The display the caller wishes to control in Vulkan.+-- - 'Graphics.Vulkan.Extensions.WSITypes.Display' The display the caller+-- wishes to control in Vulkan. -- -- = Description -- -- All permissions necessary to control the display are granted to the--- Vulkan instance associated with @physicalDevice@ until the display is+-- Vulkan instance associated with+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' until the display is -- released or the X11 connection specified by @dpy@ is terminated. -- Permission to access the display /may/ be temporarily revoked during--- periods when the X11 server from which control was acquired itself--- looses access to @display@. During such periods, operations which--- require access to the display /must/ fail with an approriate error code.--- If the X11 server associated with @dpy@ does not own @display@, or if--- permission to access it has already been acquired by another entity, the--- call /must/ return the error code @VK_ERROR_INITIALIZATION_FAILED@.+-- periods when the X11 server from which control was acquired itself loses+-- access to 'Graphics.Vulkan.Extensions.WSITypes.Display'. During such+-- periods, operations which require access to the display /must/ fail with+-- an approriate error code. If the X11 server associated with @dpy@ does+-- not own 'Graphics.Vulkan.Extensions.WSITypes.Display', or if permission+-- to access it has already been acquired by another entity, the call+-- /must/ return the error code+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'. ----- __Note__+-- Note -- -- One example of when an X11 server loses access to a display is when it -- loses ownership of its virtual terminal. ----- == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @dpy@ /must/ be a valid pointer to a @Display@ value+-- == Return Codes ----- - @display@ /must/ be a valid @VkDisplayKHR@ handle+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- == Return Codes+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_INITIALIZATION_FAILED@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED' -- -- = See Also ----- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayKHR',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'+-- 'Graphics.Vulkan.Extensions.Handles.DisplayKHR',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+acquireXlibDisplayEXT :: PhysicalDevice -> ("dpy" ::: Ptr Display) -> DisplayKHR -> IO ()+acquireXlibDisplayEXT physicalDevice dpy display = do+ let vkAcquireXlibDisplayEXT' = mkVkAcquireXlibDisplayEXT (pVkAcquireXlibDisplayEXT (instanceCmds (physicalDevice :: PhysicalDevice)))+ r <- vkAcquireXlibDisplayEXT' (physicalDeviceHandle (physicalDevice)) (dpy) (display)+ when (r < SUCCESS) (throwIO (VulkanException r))++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkAcquireXlibDisplayEXT" vkAcquireXlibDisplayEXT :: ("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("display" ::: VkDisplayKHR) -> IO VkResult+ "dynamic" mkVkGetRandROutputDisplayEXT+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr Display -> RROutput -> Ptr DisplayKHR -> IO Result) -> Ptr PhysicalDevice_T -> Ptr Display -> RROutput -> Ptr DisplayKHR -> IO Result+ -- | vkGetRandROutputDisplayEXT - Query the VkDisplayKHR corresponding to an -- X11 RandR Output -- -- = Parameters ----- - @physicalDevice@ The physical device to query the display handle on.+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' The physical device+-- to query the display handle on. -- -- - @dpy@ A connection to the X11 server from which @rrOutput@ was -- queried.@@ -115,35 +122,46 @@ -- - @rrOutput@ An X11 RandR output ID. -- -- - @pDisplay@ The corresponding--- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayKHR' handle will--- be returned here.+-- 'Graphics.Vulkan.Extensions.Handles.DisplayKHR' handle will be+-- returned here. -- -- = Description ----- If there is no 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayKHR'--- corresponding to @rrOutput@ on @physicalDevice@,--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' /must/ be returned in+-- If there is no 'Graphics.Vulkan.Extensions.Handles.DisplayKHR'+-- corresponding to @rrOutput@ on+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ be returned in -- @pDisplay@. ----- == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @dpy@ /must/ be a valid pointer to a @Display@ value------ - @pDisplay@ /must/ be a valid pointer to a @VkDisplayKHR@ handle--- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+-- -- = See Also ----- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayKHR',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetRandROutputDisplayEXT" vkGetRandROutputDisplayEXT :: ("physicalDevice" ::: VkPhysicalDevice) -> ("dpy" ::: Ptr Display) -> ("rrOutput" ::: RROutput) -> ("pDisplay" ::: Ptr VkDisplayKHR) -> IO VkResult+-- 'Graphics.Vulkan.Extensions.Handles.DisplayKHR',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+getRandROutputDisplayEXT :: PhysicalDevice -> ("dpy" ::: Ptr Display) -> RROutput -> IO (DisplayKHR)+getRandROutputDisplayEXT physicalDevice dpy rrOutput = evalContT $ do+ let vkGetRandROutputDisplayEXT' = mkVkGetRandROutputDisplayEXT (pVkGetRandROutputDisplayEXT (instanceCmds (physicalDevice :: PhysicalDevice)))+ pPDisplay <- ContT $ bracket (callocBytes @DisplayKHR 8) free+ _ <- lift $ vkGetRandROutputDisplayEXT' (physicalDeviceHandle (physicalDevice)) (dpy) (rrOutput) (pPDisplay)+ pDisplay <- lift $ peek @DisplayKHR pPDisplay+ pure $ (pDisplay)+++type EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION"+pattern EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1+++type EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display"++-- No documentation found for TopLevel "VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME"+pattern EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs view
@@ -0,0 +1,215 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_astc_decode_mode ( ImageViewASTCDecodeModeEXT(..)+ , PhysicalDeviceASTCDecodeFeaturesEXT(..)+ , EXT_ASTC_DECODE_MODE_SPEC_VERSION+ , pattern EXT_ASTC_DECODE_MODE_SPEC_VERSION+ , EXT_ASTC_DECODE_MODE_EXTENSION_NAME+ , pattern EXT_ASTC_DECODE_MODE_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Enums.Format (Format)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT))+-- | VkImageViewASTCDecodeModeEXT - Structure describing the ASTC decode mode+-- for an image view+--+-- == Valid Usage+--+-- - @decodeMode@ /must/ be one of+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16G16B16A16_SFLOAT',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R8G8B8A8_UNORM', or+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-astc-decodeModeSharedExponent decodeModeSharedExponent>+-- feature is not enabled, @decodeMode@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32'+--+-- - If @decodeMode@ is+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R8G8B8A8_UNORM' the+-- image view /must/ not include blocks using any of the ASTC HDR modes+--+-- - 'Graphics.Vulkan.Core10.Enums.Format.Format' of the image view+-- /must/ be one of+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4_UNORM_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4_SRGB_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4_UNORM_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4_SRGB_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5_UNORM_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5_SRGB_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5_UNORM_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5_SRGB_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6_UNORM_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6_SRGB_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x5_UNORM_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x5_SRGB_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x6_UNORM_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x6_SRGB_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x8_UNORM_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x8_SRGB_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x5_UNORM_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x5_SRGB_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x6_UNORM_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x6_SRGB_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x8_UNORM_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x8_SRGB_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x10_UNORM_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x10_SRGB_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x10_UNORM_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x10_SRGB_BLOCK',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x12_UNORM_BLOCK',+-- or+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x12_SRGB_BLOCK'+--+-- If 'Graphics.Vulkan.Core10.Enums.Format.Format' uses sRGB encoding then+-- the @decodeMode@ has no effect.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT'+--+-- - @decodeMode@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ImageViewASTCDecodeModeEXT = ImageViewASTCDecodeModeEXT+ { -- | @decodeMode@ is the intermediate format used to decode ASTC compressed+ -- formats.+ decodeMode :: Format }+ deriving (Typeable)+deriving instance Show ImageViewASTCDecodeModeEXT++instance ToCStruct ImageViewASTCDecodeModeEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageViewASTCDecodeModeEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Format)) (decodeMode)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Format)) (zero)+ f++instance FromCStruct ImageViewASTCDecodeModeEXT where+ peekCStruct p = do+ decodeMode <- peek @Format ((p `plusPtr` 16 :: Ptr Format))+ pure $ ImageViewASTCDecodeModeEXT+ decodeMode++instance Storable ImageViewASTCDecodeModeEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImageViewASTCDecodeModeEXT where+ zero = ImageViewASTCDecodeModeEXT+ zero+++-- | VkPhysicalDeviceASTCDecodeFeaturesEXT - Structure describing ASTC decode+-- mode features+--+-- = Members+--+-- The members of the 'PhysicalDeviceASTCDecodeFeaturesEXT' structure+-- describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceASTCDecodeFeaturesEXT' structure is included in+-- the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether each feature is supported.+-- 'PhysicalDeviceASTCDecodeFeaturesEXT' /can/ also be included in the+-- @pNext@ chain of 'Graphics.Vulkan.Core10.Device.createDevice' to enable+-- features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceASTCDecodeFeaturesEXT = PhysicalDeviceASTCDecodeFeaturesEXT+ { -- | @decodeModeSharedExponent@ indicates whether the implementation supports+ -- decoding ASTC compressed formats to+ -- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32'+ -- internal precision.+ decodeModeSharedExponent :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceASTCDecodeFeaturesEXT++instance ToCStruct PhysicalDeviceASTCDecodeFeaturesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceASTCDecodeFeaturesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (decodeModeSharedExponent))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceASTCDecodeFeaturesEXT where+ peekCStruct p = do+ decodeModeSharedExponent <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceASTCDecodeFeaturesEXT+ (bool32ToBool decodeModeSharedExponent)++instance Storable PhysicalDeviceASTCDecodeFeaturesEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceASTCDecodeFeaturesEXT where+ zero = PhysicalDeviceASTCDecodeFeaturesEXT+ zero+++type EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION"+pattern EXT_ASTC_DECODE_MODE_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1+++type EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode"++-- No documentation found for TopLevel "VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME"+pattern EXT_ASTC_DECODE_MODE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_astc_decode_mode ( ImageViewASTCDecodeModeEXT+ , PhysicalDeviceASTCDecodeFeaturesEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ImageViewASTCDecodeModeEXT++instance ToCStruct ImageViewASTCDecodeModeEXT+instance Show ImageViewASTCDecodeModeEXT++instance FromCStruct ImageViewASTCDecodeModeEXT+++data PhysicalDeviceASTCDecodeFeaturesEXT++instance ToCStruct PhysicalDeviceASTCDecodeFeaturesEXT+instance Show PhysicalDeviceASTCDecodeFeaturesEXT++instance FromCStruct PhysicalDeviceASTCDecodeFeaturesEXT+
src/Graphics/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs view
@@ -1,561 +1,406 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced- ( VkBlendOverlapEXT(..)- , pattern VK_BLEND_OVERLAP_UNCORRELATED_EXT- , pattern VK_BLEND_OVERLAP_DISJOINT_EXT- , pattern VK_BLEND_OVERLAP_CONJOINT_EXT- , pattern VK_BLEND_OP_ZERO_EXT- , pattern VK_BLEND_OP_SRC_EXT- , pattern VK_BLEND_OP_DST_EXT- , pattern VK_BLEND_OP_SRC_OVER_EXT- , pattern VK_BLEND_OP_DST_OVER_EXT- , pattern VK_BLEND_OP_SRC_IN_EXT- , pattern VK_BLEND_OP_DST_IN_EXT- , pattern VK_BLEND_OP_SRC_OUT_EXT- , pattern VK_BLEND_OP_DST_OUT_EXT- , pattern VK_BLEND_OP_SRC_ATOP_EXT- , pattern VK_BLEND_OP_DST_ATOP_EXT- , pattern VK_BLEND_OP_XOR_EXT- , pattern VK_BLEND_OP_MULTIPLY_EXT- , pattern VK_BLEND_OP_SCREEN_EXT- , pattern VK_BLEND_OP_OVERLAY_EXT- , pattern VK_BLEND_OP_DARKEN_EXT- , pattern VK_BLEND_OP_LIGHTEN_EXT- , pattern VK_BLEND_OP_COLORDODGE_EXT- , pattern VK_BLEND_OP_COLORBURN_EXT- , pattern VK_BLEND_OP_HARDLIGHT_EXT- , pattern VK_BLEND_OP_SOFTLIGHT_EXT- , pattern VK_BLEND_OP_DIFFERENCE_EXT- , pattern VK_BLEND_OP_EXCLUSION_EXT- , pattern VK_BLEND_OP_INVERT_EXT- , pattern VK_BLEND_OP_INVERT_RGB_EXT- , pattern VK_BLEND_OP_LINEARDODGE_EXT- , pattern VK_BLEND_OP_LINEARBURN_EXT- , pattern VK_BLEND_OP_VIVIDLIGHT_EXT- , pattern VK_BLEND_OP_LINEARLIGHT_EXT- , pattern VK_BLEND_OP_PINLIGHT_EXT- , pattern VK_BLEND_OP_HARDMIX_EXT- , pattern VK_BLEND_OP_HSL_HUE_EXT- , pattern VK_BLEND_OP_HSL_SATURATION_EXT- , pattern VK_BLEND_OP_HSL_COLOR_EXT- , pattern VK_BLEND_OP_HSL_LUMINOSITY_EXT- , pattern VK_BLEND_OP_PLUS_EXT- , pattern VK_BLEND_OP_PLUS_CLAMPED_EXT- , pattern VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT- , pattern VK_BLEND_OP_PLUS_DARKER_EXT- , pattern VK_BLEND_OP_MINUS_EXT- , pattern VK_BLEND_OP_MINUS_CLAMPED_EXT- , pattern VK_BLEND_OP_CONTRAST_EXT- , pattern VK_BLEND_OP_INVERT_OVG_EXT- , pattern VK_BLEND_OP_RED_EXT- , pattern VK_BLEND_OP_GREEN_EXT- , pattern VK_BLEND_OP_BLUE_EXT- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT- , pattern VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT- , pattern VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT- , pattern VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION- , pattern VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME- , VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(..)- , VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(..)- , VkPipelineColorBlendAdvancedStateCreateInfoEXT(..)- ) where--import Data.Int- ( Int32- )-import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.Pass- ( VkAccessFlagBits(..)- )-import Graphics.Vulkan.Core10.Pipeline- ( VkBlendOp(..)- )----- ** VkBlendOverlapEXT---- | VkBlendOverlapEXT - Enumerant specifying the blend overlap parameter------ = Description------ - @VK_BLEND_OVERLAP_UNCORRELATED_EXT@ specifies that there is no--- correlation between the source and destination coverage.------ - @VK_BLEND_OVERLAP_CONJOINT_EXT@ specifies that the source and--- destination coverage are considered to have maximal overlap.------ - @VK_BLEND_OVERLAP_DISJOINT_EXT@ specifies that the source and--- destination coverage are considered to have minimal overlap.------ +-------------------------------------+--------------------------------------------------------------------------------------+--- | Overlap Mode | Weighting Equations |--- +=====================================+======================================================================================+--- | @VK_BLEND_OVERLAP_UNCORRELATED_EXT@ | \[ \begin{aligned} |--- | | p_0(A_s,A_d) & = A_sA_d \\ |--- | | p_1(A_s,A_d) & = A_s(1-A_d) \\ |--- | | p_2(A_s,A_d) & = A_d(1-A_s) \\ |--- | | \end{aligned}\] |--- +-------------------------------------+--------------------------------------------------------------------------------------+--- | @VK_BLEND_OVERLAP_CONJOINT_EXT@ | \[ \begin{aligned} |--- | | p_0(A_s,A_d) & = min(A_s,A_d) \\ |--- | | p_1(A_s,A_d) & = max(A_s-A_d,0) \\ |--- | | p_2(A_s,A_d) & = max(A_d-A_s,0) \\ |--- | | \end{aligned}\] |--- +-------------------------------------+--------------------------------------------------------------------------------------+--- | @VK_BLEND_OVERLAP_DISJOINT_EXT@ | \[ \begin{aligned} |--- | | p_0(A_s,A_d) & = max(A_s+A_d-1,0) \\ |--- | | p_1(A_s,A_d) & = min(A_s,1-A_d) \\ |--- | | p_2(A_s,A_d) & = min(A_d,1-A_s) \\ |--- | | \end{aligned}\] |--- +-------------------------------------+--------------------------------------------------------------------------------------+------ Advanced Blend Overlap Modes------ = See Also------ 'VkPipelineColorBlendAdvancedStateCreateInfoEXT'-newtype VkBlendOverlapEXT = VkBlendOverlapEXT Int32- deriving (Eq, Ord, Storable)--instance Show VkBlendOverlapEXT where- showsPrec _ VK_BLEND_OVERLAP_UNCORRELATED_EXT = showString "VK_BLEND_OVERLAP_UNCORRELATED_EXT"- showsPrec _ VK_BLEND_OVERLAP_DISJOINT_EXT = showString "VK_BLEND_OVERLAP_DISJOINT_EXT"- showsPrec _ VK_BLEND_OVERLAP_CONJOINT_EXT = showString "VK_BLEND_OVERLAP_CONJOINT_EXT"- showsPrec p (VkBlendOverlapEXT x) = showParen (p >= 11) (showString "VkBlendOverlapEXT " . showsPrec 11 x)--instance Read VkBlendOverlapEXT where- readPrec = parens ( choose [ ("VK_BLEND_OVERLAP_UNCORRELATED_EXT", pure VK_BLEND_OVERLAP_UNCORRELATED_EXT)- , ("VK_BLEND_OVERLAP_DISJOINT_EXT", pure VK_BLEND_OVERLAP_DISJOINT_EXT)- , ("VK_BLEND_OVERLAP_CONJOINT_EXT", pure VK_BLEND_OVERLAP_CONJOINT_EXT)- ] +++- prec 10 (do- expectP (Ident "VkBlendOverlapEXT")- v <- step readPrec- pure (VkBlendOverlapEXT v)- )- )---- No documentation found for Nested "VkBlendOverlapEXT" "VK_BLEND_OVERLAP_UNCORRELATED_EXT"-pattern VK_BLEND_OVERLAP_UNCORRELATED_EXT :: VkBlendOverlapEXT-pattern VK_BLEND_OVERLAP_UNCORRELATED_EXT = VkBlendOverlapEXT 0---- No documentation found for Nested "VkBlendOverlapEXT" "VK_BLEND_OVERLAP_DISJOINT_EXT"-pattern VK_BLEND_OVERLAP_DISJOINT_EXT :: VkBlendOverlapEXT-pattern VK_BLEND_OVERLAP_DISJOINT_EXT = VkBlendOverlapEXT 1+module Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced ( PhysicalDeviceBlendOperationAdvancedFeaturesEXT(..)+ , PhysicalDeviceBlendOperationAdvancedPropertiesEXT(..)+ , PipelineColorBlendAdvancedStateCreateInfoEXT(..)+ , BlendOverlapEXT( BLEND_OVERLAP_UNCORRELATED_EXT+ , BLEND_OVERLAP_DISJOINT_EXT+ , BLEND_OVERLAP_CONJOINT_EXT+ , ..+ )+ , EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION+ , pattern EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION+ , EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME+ , pattern EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME+ ) where --- No documentation found for Nested "VkBlendOverlapEXT" "VK_BLEND_OVERLAP_CONJOINT_EXT"-pattern VK_BLEND_OVERLAP_CONJOINT_EXT :: VkBlendOverlapEXT-pattern VK_BLEND_OVERLAP_CONJOINT_EXT = VkBlendOverlapEXT 2--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_ZERO_EXT"-pattern VK_BLEND_OP_ZERO_EXT :: VkBlendOp-pattern VK_BLEND_OP_ZERO_EXT = VkBlendOp 1000148000--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SRC_EXT"-pattern VK_BLEND_OP_SRC_EXT :: VkBlendOp-pattern VK_BLEND_OP_SRC_EXT = VkBlendOp 1000148001--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DST_EXT"-pattern VK_BLEND_OP_DST_EXT :: VkBlendOp-pattern VK_BLEND_OP_DST_EXT = VkBlendOp 1000148002--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SRC_OVER_EXT"-pattern VK_BLEND_OP_SRC_OVER_EXT :: VkBlendOp-pattern VK_BLEND_OP_SRC_OVER_EXT = VkBlendOp 1000148003--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DST_OVER_EXT"-pattern VK_BLEND_OP_DST_OVER_EXT :: VkBlendOp-pattern VK_BLEND_OP_DST_OVER_EXT = VkBlendOp 1000148004--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SRC_IN_EXT"-pattern VK_BLEND_OP_SRC_IN_EXT :: VkBlendOp-pattern VK_BLEND_OP_SRC_IN_EXT = VkBlendOp 1000148005--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DST_IN_EXT"-pattern VK_BLEND_OP_DST_IN_EXT :: VkBlendOp-pattern VK_BLEND_OP_DST_IN_EXT = VkBlendOp 1000148006--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SRC_OUT_EXT"-pattern VK_BLEND_OP_SRC_OUT_EXT :: VkBlendOp-pattern VK_BLEND_OP_SRC_OUT_EXT = VkBlendOp 1000148007--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DST_OUT_EXT"-pattern VK_BLEND_OP_DST_OUT_EXT :: VkBlendOp-pattern VK_BLEND_OP_DST_OUT_EXT = VkBlendOp 1000148008--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SRC_ATOP_EXT"-pattern VK_BLEND_OP_SRC_ATOP_EXT :: VkBlendOp-pattern VK_BLEND_OP_SRC_ATOP_EXT = VkBlendOp 1000148009--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DST_ATOP_EXT"-pattern VK_BLEND_OP_DST_ATOP_EXT :: VkBlendOp-pattern VK_BLEND_OP_DST_ATOP_EXT = VkBlendOp 1000148010--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_XOR_EXT"-pattern VK_BLEND_OP_XOR_EXT :: VkBlendOp-pattern VK_BLEND_OP_XOR_EXT = VkBlendOp 1000148011--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MULTIPLY_EXT"-pattern VK_BLEND_OP_MULTIPLY_EXT :: VkBlendOp-pattern VK_BLEND_OP_MULTIPLY_EXT = VkBlendOp 1000148012--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SCREEN_EXT"-pattern VK_BLEND_OP_SCREEN_EXT :: VkBlendOp-pattern VK_BLEND_OP_SCREEN_EXT = VkBlendOp 1000148013--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_OVERLAY_EXT"-pattern VK_BLEND_OP_OVERLAY_EXT :: VkBlendOp-pattern VK_BLEND_OP_OVERLAY_EXT = VkBlendOp 1000148014--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DARKEN_EXT"-pattern VK_BLEND_OP_DARKEN_EXT :: VkBlendOp-pattern VK_BLEND_OP_DARKEN_EXT = VkBlendOp 1000148015--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_LIGHTEN_EXT"-pattern VK_BLEND_OP_LIGHTEN_EXT :: VkBlendOp-pattern VK_BLEND_OP_LIGHTEN_EXT = VkBlendOp 1000148016--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_COLORDODGE_EXT"-pattern VK_BLEND_OP_COLORDODGE_EXT :: VkBlendOp-pattern VK_BLEND_OP_COLORDODGE_EXT = VkBlendOp 1000148017--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_COLORBURN_EXT"-pattern VK_BLEND_OP_COLORBURN_EXT :: VkBlendOp-pattern VK_BLEND_OP_COLORBURN_EXT = VkBlendOp 1000148018--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HARDLIGHT_EXT"-pattern VK_BLEND_OP_HARDLIGHT_EXT :: VkBlendOp-pattern VK_BLEND_OP_HARDLIGHT_EXT = VkBlendOp 1000148019--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_SOFTLIGHT_EXT"-pattern VK_BLEND_OP_SOFTLIGHT_EXT :: VkBlendOp-pattern VK_BLEND_OP_SOFTLIGHT_EXT = VkBlendOp 1000148020--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_DIFFERENCE_EXT"-pattern VK_BLEND_OP_DIFFERENCE_EXT :: VkBlendOp-pattern VK_BLEND_OP_DIFFERENCE_EXT = VkBlendOp 1000148021--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_EXCLUSION_EXT"-pattern VK_BLEND_OP_EXCLUSION_EXT :: VkBlendOp-pattern VK_BLEND_OP_EXCLUSION_EXT = VkBlendOp 1000148022--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_INVERT_EXT"-pattern VK_BLEND_OP_INVERT_EXT :: VkBlendOp-pattern VK_BLEND_OP_INVERT_EXT = VkBlendOp 1000148023--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_INVERT_RGB_EXT"-pattern VK_BLEND_OP_INVERT_RGB_EXT :: VkBlendOp-pattern VK_BLEND_OP_INVERT_RGB_EXT = VkBlendOp 1000148024--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_LINEARDODGE_EXT"-pattern VK_BLEND_OP_LINEARDODGE_EXT :: VkBlendOp-pattern VK_BLEND_OP_LINEARDODGE_EXT = VkBlendOp 1000148025--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_LINEARBURN_EXT"-pattern VK_BLEND_OP_LINEARBURN_EXT :: VkBlendOp-pattern VK_BLEND_OP_LINEARBURN_EXT = VkBlendOp 1000148026--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_VIVIDLIGHT_EXT"-pattern VK_BLEND_OP_VIVIDLIGHT_EXT :: VkBlendOp-pattern VK_BLEND_OP_VIVIDLIGHT_EXT = VkBlendOp 1000148027--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_LINEARLIGHT_EXT"-pattern VK_BLEND_OP_LINEARLIGHT_EXT :: VkBlendOp-pattern VK_BLEND_OP_LINEARLIGHT_EXT = VkBlendOp 1000148028--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_PINLIGHT_EXT"-pattern VK_BLEND_OP_PINLIGHT_EXT :: VkBlendOp-pattern VK_BLEND_OP_PINLIGHT_EXT = VkBlendOp 1000148029--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HARDMIX_EXT"-pattern VK_BLEND_OP_HARDMIX_EXT :: VkBlendOp-pattern VK_BLEND_OP_HARDMIX_EXT = VkBlendOp 1000148030--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HSL_HUE_EXT"-pattern VK_BLEND_OP_HSL_HUE_EXT :: VkBlendOp-pattern VK_BLEND_OP_HSL_HUE_EXT = VkBlendOp 1000148031--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HSL_SATURATION_EXT"-pattern VK_BLEND_OP_HSL_SATURATION_EXT :: VkBlendOp-pattern VK_BLEND_OP_HSL_SATURATION_EXT = VkBlendOp 1000148032--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HSL_COLOR_EXT"-pattern VK_BLEND_OP_HSL_COLOR_EXT :: VkBlendOp-pattern VK_BLEND_OP_HSL_COLOR_EXT = VkBlendOp 1000148033--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_HSL_LUMINOSITY_EXT"-pattern VK_BLEND_OP_HSL_LUMINOSITY_EXT :: VkBlendOp-pattern VK_BLEND_OP_HSL_LUMINOSITY_EXT = VkBlendOp 1000148034--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_PLUS_EXT"-pattern VK_BLEND_OP_PLUS_EXT :: VkBlendOp-pattern VK_BLEND_OP_PLUS_EXT = VkBlendOp 1000148035--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_PLUS_CLAMPED_EXT"-pattern VK_BLEND_OP_PLUS_CLAMPED_EXT :: VkBlendOp-pattern VK_BLEND_OP_PLUS_CLAMPED_EXT = VkBlendOp 1000148036--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT"-pattern VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT :: VkBlendOp-pattern VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = VkBlendOp 1000148037--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_PLUS_DARKER_EXT"-pattern VK_BLEND_OP_PLUS_DARKER_EXT :: VkBlendOp-pattern VK_BLEND_OP_PLUS_DARKER_EXT = VkBlendOp 1000148038--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MINUS_EXT"-pattern VK_BLEND_OP_MINUS_EXT :: VkBlendOp-pattern VK_BLEND_OP_MINUS_EXT = VkBlendOp 1000148039--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_MINUS_CLAMPED_EXT"-pattern VK_BLEND_OP_MINUS_CLAMPED_EXT :: VkBlendOp-pattern VK_BLEND_OP_MINUS_CLAMPED_EXT = VkBlendOp 1000148040--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_CONTRAST_EXT"-pattern VK_BLEND_OP_CONTRAST_EXT :: VkBlendOp-pattern VK_BLEND_OP_CONTRAST_EXT = VkBlendOp 1000148041--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_INVERT_OVG_EXT"-pattern VK_BLEND_OP_INVERT_OVG_EXT :: VkBlendOp-pattern VK_BLEND_OP_INVERT_OVG_EXT = VkBlendOp 1000148042--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_RED_EXT"-pattern VK_BLEND_OP_RED_EXT :: VkBlendOp-pattern VK_BLEND_OP_RED_EXT = VkBlendOp 1000148043--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_GREEN_EXT"-pattern VK_BLEND_OP_GREEN_EXT :: VkBlendOp-pattern VK_BLEND_OP_GREEN_EXT = VkBlendOp 1000148044--- No documentation found for Nested "VkBlendOp" "VK_BLEND_OP_BLUE_EXT"-pattern VK_BLEND_OP_BLUE_EXT :: VkBlendOp-pattern VK_BLEND_OP_BLUE_EXT = VkBlendOp 1000148045--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = VkStructureType 1000148000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = VkStructureType 1000148001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"-pattern VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = VkStructureType 1000148002--- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"-pattern VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT :: VkAccessFlagBits-pattern VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = VkAccessFlagBits 0x00080000--- No documentation found for TopLevel "VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION"-pattern VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION :: Integral a => a-pattern VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2--- No documentation found for TopLevel "VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME"-pattern VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced"+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+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 Data.Int (Int32)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT)) -- | VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT - Structure describing -- advanced blending features that can be supported by an implementation -- -- = Members ----- The members of the @VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT@+-- The members of the 'PhysicalDeviceBlendOperationAdvancedFeaturesEXT' -- structure describe the following features: -- -- = Description ----- - @advancedBlendCoherentOperations@ specifies whether blending using--- [advanced blend--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blend-advanced)--- is guaranteed to execute atomically and in [primitive--- order](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#drawing-primitive-order).--- If this is @VK_TRUE@,--- @VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT@ is treated the--- same as @VK_ACCESS_COLOR_ATTACHMENT_READ_BIT@, and advanced blending--- needs no additional synchronization over basic blending. If this is--- @VK_FALSE@, then memory dependencies are required to guarantee order--- between two advanced blending operations that occur on the same--- sample.------ If the @VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT@ structure is+-- If the 'PhysicalDeviceBlendOperationAdvancedFeaturesEXT' structure is -- included in the @pNext@ chain of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceFeatures2',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2', -- it is filled with values indicating whether each feature is supported.--- @VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT@ /can/ also be used--- in @pNext@ chain of 'Graphics.Vulkan.Core10.Device.VkDeviceCreateInfo'+-- 'PhysicalDeviceBlendOperationAdvancedFeaturesEXT' /can/ also be included+-- in the @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' -- to enable the features. -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT@--- -- = See Also ----- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT = VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT- { -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT" "advancedBlendCoherentOperations"- vkAdvancedBlendCoherentOperations :: VkBool32- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceBlendOperationAdvancedFeaturesEXT = PhysicalDeviceBlendOperationAdvancedFeaturesEXT+ { -- | @advancedBlendCoherentOperations@ specifies whether blending using+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>+ -- is guaranteed to execute atomically and in+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-order primitive order>.+ -- If this is 'Graphics.Vulkan.Core10.BaseType.TRUE',+ -- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT'+ -- is treated the same as+ -- 'Graphics.Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_READ_BIT',+ -- and advanced blending needs no additional synchronization over basic+ -- blending. If this is 'Graphics.Vulkan.Core10.BaseType.FALSE', then+ -- memory dependencies are required to guarantee order between two advanced+ -- blending operations that occur on the same sample.+ advancedBlendCoherentOperations :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceBlendOperationAdvancedFeaturesEXT -instance Storable VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT where+instance ToCStruct PhysicalDeviceBlendOperationAdvancedFeaturesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceBlendOperationAdvancedFeaturesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (advancedBlendCoherentOperations))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceBlendOperationAdvancedFeaturesEXT where+ peekCStruct p = do+ advancedBlendCoherentOperations <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceBlendOperationAdvancedFeaturesEXT+ (bool32ToBool advancedBlendCoherentOperations)++instance Storable PhysicalDeviceBlendOperationAdvancedFeaturesEXT where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT))- *> poke (ptr `plusPtr` 16) (vkAdvancedBlendCoherentOperations (poked :: VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceBlendOperationAdvancedFeaturesEXT where+ zero = PhysicalDeviceBlendOperationAdvancedFeaturesEXT+ zero++ -- | VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT - Structure -- describing advanced blending limits that can be supported by an -- implementation -- -- = Members ----- The members of the @VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT@+-- The members of the 'PhysicalDeviceBlendOperationAdvancedPropertiesEXT' -- structure describe the following implementation-dependent limits: -- -- = Description ----- - @advancedBlendMaxColorAttachments@ is one greater than the highest--- color attachment index that /can/ be used in a subpass, for a--- pipeline that uses an [advanced blend--- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#framebuffer-blend-advanced).------ - @advancedBlendIndependentBlend@ specifies whether advanced blend--- operations /can/ vary per-attachment.------ - @advancedBlendNonPremultipliedSrcColor@ specifies whether the source--- color /can/ be treated as non-premultiplied. If this is @VK_FALSE@,--- then--- 'VkPipelineColorBlendAdvancedStateCreateInfoEXT'::@srcPremultiplied@--- /must/ be @VK_TRUE@.------ - @advancedBlendNonPremultipliedDstColor@ specifies whether the--- destination color /can/ be treated as non-premultiplied. If this is--- @VK_FALSE@, then--- 'VkPipelineColorBlendAdvancedStateCreateInfoEXT'::@dstPremultiplied@--- /must/ be @VK_TRUE@.------ - @advancedBlendCorrelatedOverlap@ specifies whether the overlap mode--- /can/ be treated as correlated. If this is @VK_FALSE@, then--- 'VkPipelineColorBlendAdvancedStateCreateInfoEXT'::@blendOverlap@--- /must/ be @VK_BLEND_OVERLAP_UNCORRELATED_EXT@.------ - @advancedBlendAllOperations@ specifies whether all advanced blend--- operation enums are supported. See the valid usage of--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineColorBlendAttachmentState'.+-- If the 'PhysicalDeviceBlendOperationAdvancedPropertiesEXT' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits. -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT@------ If the @VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT@ structure--- is included in the @pNext@ chain of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2',--- it is filled with the implementation-dependent limits.--- -- = See Also ----- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT = VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT- { -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "advancedBlendMaxColorAttachments"- vkAdvancedBlendMaxColorAttachments :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "advancedBlendIndependentBlend"- vkAdvancedBlendIndependentBlend :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "advancedBlendNonPremultipliedSrcColor"- vkAdvancedBlendNonPremultipliedSrcColor :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "advancedBlendNonPremultipliedDstColor"- vkAdvancedBlendNonPremultipliedDstColor :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "advancedBlendCorrelatedOverlap"- vkAdvancedBlendCorrelatedOverlap :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT" "advancedBlendAllOperations"- vkAdvancedBlendAllOperations :: VkBool32+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceBlendOperationAdvancedPropertiesEXT = PhysicalDeviceBlendOperationAdvancedPropertiesEXT+ { -- | @advancedBlendMaxColorAttachments@ is one greater than the highest color+ -- attachment index that /can/ be used in a subpass, for a pipeline that+ -- uses an+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>.+ advancedBlendMaxColorAttachments :: Word32+ , -- | @advancedBlendIndependentBlend@ specifies whether advanced blend+ -- operations /can/ vary per-attachment.+ advancedBlendIndependentBlend :: Bool+ , -- | @advancedBlendNonPremultipliedSrcColor@ specifies whether the source+ -- color /can/ be treated as non-premultiplied. If this is+ -- 'Graphics.Vulkan.Core10.BaseType.FALSE', then+ -- 'PipelineColorBlendAdvancedStateCreateInfoEXT'::@srcPremultiplied@+ -- /must/ be 'Graphics.Vulkan.Core10.BaseType.TRUE'.+ advancedBlendNonPremultipliedSrcColor :: Bool+ , -- | @advancedBlendNonPremultipliedDstColor@ specifies whether the+ -- destination color /can/ be treated as non-premultiplied. If this is+ -- 'Graphics.Vulkan.Core10.BaseType.FALSE', then+ -- 'PipelineColorBlendAdvancedStateCreateInfoEXT'::@dstPremultiplied@+ -- /must/ be 'Graphics.Vulkan.Core10.BaseType.TRUE'.+ advancedBlendNonPremultipliedDstColor :: Bool+ , -- | @advancedBlendCorrelatedOverlap@ specifies whether the overlap mode+ -- /can/ be treated as correlated. If this is+ -- 'Graphics.Vulkan.Core10.BaseType.FALSE', then+ -- 'PipelineColorBlendAdvancedStateCreateInfoEXT'::@blendOverlap@ /must/ be+ -- 'BLEND_OVERLAP_UNCORRELATED_EXT'.+ advancedBlendCorrelatedOverlap :: Bool+ , -- | @advancedBlendAllOperations@ specifies whether all advanced blend+ -- operation enums are supported. See the valid usage of+ -- 'Graphics.Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState'.+ advancedBlendAllOperations :: Bool }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show PhysicalDeviceBlendOperationAdvancedPropertiesEXT -instance Storable VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT where+instance ToCStruct PhysicalDeviceBlendOperationAdvancedPropertiesEXT where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceBlendOperationAdvancedPropertiesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (advancedBlendMaxColorAttachments)+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (advancedBlendIndependentBlend))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (advancedBlendNonPremultipliedSrcColor))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (advancedBlendNonPremultipliedDstColor))+ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (advancedBlendCorrelatedOverlap))+ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (advancedBlendAllOperations))+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceBlendOperationAdvancedPropertiesEXT where+ peekCStruct p = do+ advancedBlendMaxColorAttachments <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ advancedBlendIndependentBlend <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ advancedBlendNonPremultipliedSrcColor <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ advancedBlendNonPremultipliedDstColor <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))+ advancedBlendCorrelatedOverlap <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))+ advancedBlendAllOperations <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))+ pure $ PhysicalDeviceBlendOperationAdvancedPropertiesEXT+ advancedBlendMaxColorAttachments (bool32ToBool advancedBlendIndependentBlend) (bool32ToBool advancedBlendNonPremultipliedSrcColor) (bool32ToBool advancedBlendNonPremultipliedDstColor) (bool32ToBool advancedBlendCorrelatedOverlap) (bool32ToBool advancedBlendAllOperations)++instance Storable PhysicalDeviceBlendOperationAdvancedPropertiesEXT where sizeOf ~_ = 40 alignment ~_ = 8- peek ptr = VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT))- *> poke (ptr `plusPtr` 16) (vkAdvancedBlendMaxColorAttachments (poked :: VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT))- *> poke (ptr `plusPtr` 20) (vkAdvancedBlendIndependentBlend (poked :: VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT))- *> poke (ptr `plusPtr` 24) (vkAdvancedBlendNonPremultipliedSrcColor (poked :: VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT))- *> poke (ptr `plusPtr` 28) (vkAdvancedBlendNonPremultipliedDstColor (poked :: VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT))- *> poke (ptr `plusPtr` 32) (vkAdvancedBlendCorrelatedOverlap (poked :: VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT))- *> poke (ptr `plusPtr` 36) (vkAdvancedBlendAllOperations (poked :: VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceBlendOperationAdvancedPropertiesEXT where+ zero = PhysicalDeviceBlendOperationAdvancedPropertiesEXT+ zero+ zero+ zero+ zero+ zero+ zero++ -- | VkPipelineColorBlendAdvancedStateCreateInfoEXT - Structure specifying -- parameters that affect advanced blend operations -- -- = Description -- -- If this structure is not present, @srcPremultiplied@ and--- @dstPremultiplied@ are both considered to be @VK_TRUE@, and--- @blendOverlap@ is considered to be @VK_BLEND_OVERLAP_UNCORRELATED_EXT@.+-- @dstPremultiplied@ are both considered to be+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', and @blendOverlap@ is considered+-- to be 'BLEND_OVERLAP_UNCORRELATED_EXT'. -- -- == Valid Usage ----- - If the [non-premultiplied source--- color](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-advancedBlendNonPremultipliedSrcColor)--- property is not supported, @srcPremultiplied@ /must/ be @VK_TRUE@+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendNonPremultipliedSrcColor non-premultiplied source color>+-- property is not supported, @srcPremultiplied@ /must/ be+-- 'Graphics.Vulkan.Core10.BaseType.TRUE' ----- - If the [non-premultiplied destination--- color](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-advancedBlendNonPremultipliedDstColor)--- property is not supported, @dstPremultiplied@ /must/ be @VK_TRUE@+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendNonPremultipliedDstColor non-premultiplied destination color>+-- property is not supported, @dstPremultiplied@ /must/ be+-- 'Graphics.Vulkan.Core10.BaseType.TRUE' ----- - If the [correlated--- overlap](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-limits-advancedBlendCorrelatedOverlap)+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendCorrelatedOverlap correlated overlap> -- property is not supported, @blendOverlap@ /must/ be--- @VK_BLEND_OVERLAP_UNCORRELATED_EXT@+-- 'BLEND_OVERLAP_UNCORRELATED_EXT' -- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT' ----- - @blendOverlap@ /must/ be a valid 'VkBlendOverlapEXT' value+-- - @blendOverlap@ /must/ be a valid 'BlendOverlapEXT' value -- -- = See Also ----- 'VkBlendOverlapEXT', @VkBool32@,--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineColorBlendAdvancedStateCreateInfoEXT = VkPipelineColorBlendAdvancedStateCreateInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @srcPremultiplied@ specifies whether the source color of the blend- -- operation is treated as premultiplied.- vkSrcPremultiplied :: VkBool32+-- 'BlendOverlapEXT', 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineColorBlendAdvancedStateCreateInfoEXT = PipelineColorBlendAdvancedStateCreateInfoEXT+ { -- | @srcPremultiplied@ specifies whether the source color of the blend+ -- operation is treated as premultiplied.+ srcPremultiplied :: Bool , -- | @dstPremultiplied@ specifies whether the destination color of the blend- -- operation is treated as premultiplied.- vkDstPremultiplied :: VkBool32- , -- | @blendOverlap@ is a 'VkBlendOverlapEXT' value specifying how the source- -- and destination sample’s coverage is correlated.- vkBlendOverlap :: VkBlendOverlapEXT+ -- operation is treated as premultiplied.+ dstPremultiplied :: Bool+ , -- | @blendOverlap@ is a 'BlendOverlapEXT' value specifying how the source+ -- and destination sample’s coverage is correlated.+ blendOverlap :: BlendOverlapEXT }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show PipelineColorBlendAdvancedStateCreateInfoEXT -instance Storable VkPipelineColorBlendAdvancedStateCreateInfoEXT where+instance ToCStruct PipelineColorBlendAdvancedStateCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineColorBlendAdvancedStateCreateInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (srcPremultiplied))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (dstPremultiplied))+ poke ((p `plusPtr` 24 :: Ptr BlendOverlapEXT)) (blendOverlap)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 24 :: Ptr BlendOverlapEXT)) (zero)+ f++instance FromCStruct PipelineColorBlendAdvancedStateCreateInfoEXT where+ peekCStruct p = do+ srcPremultiplied <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ dstPremultiplied <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ blendOverlap <- peek @BlendOverlapEXT ((p `plusPtr` 24 :: Ptr BlendOverlapEXT))+ pure $ PipelineColorBlendAdvancedStateCreateInfoEXT+ (bool32ToBool srcPremultiplied) (bool32ToBool dstPremultiplied) blendOverlap++instance Storable PipelineColorBlendAdvancedStateCreateInfoEXT where sizeOf ~_ = 32 alignment ~_ = 8- peek ptr = VkPipelineColorBlendAdvancedStateCreateInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineColorBlendAdvancedStateCreateInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineColorBlendAdvancedStateCreateInfoEXT))- *> poke (ptr `plusPtr` 16) (vkSrcPremultiplied (poked :: VkPipelineColorBlendAdvancedStateCreateInfoEXT))- *> poke (ptr `plusPtr` 20) (vkDstPremultiplied (poked :: VkPipelineColorBlendAdvancedStateCreateInfoEXT))- *> poke (ptr `plusPtr` 24) (vkBlendOverlap (poked :: VkPipelineColorBlendAdvancedStateCreateInfoEXT))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineColorBlendAdvancedStateCreateInfoEXT where+ zero = PipelineColorBlendAdvancedStateCreateInfoEXT+ zero+ zero+ zero+++-- | VkBlendOverlapEXT - Enumerant specifying the blend overlap parameter+--+-- = Description+--+-- \'+--+-- +-----------------------------------+--------------------------------------------------------------------------------------++-- | Overlap Mode | Weighting Equations |+-- +===================================+======================================================================================++-- | 'BLEND_OVERLAP_UNCORRELATED_EXT' | \[ \begin{aligned} |+-- | | p_0(A_s,A_d) & = A_sA_d \\ |+-- | | p_1(A_s,A_d) & = A_s(1-A_d) \\ |+-- | | p_2(A_s,A_d) & = A_d(1-A_s) \\ |+-- | | \end{aligned}\] |+-- +-----------------------------------+--------------------------------------------------------------------------------------++-- | 'BLEND_OVERLAP_CONJOINT_EXT' | \[ \begin{aligned} |+-- | | p_0(A_s,A_d) & = min(A_s,A_d) \\ |+-- | | p_1(A_s,A_d) & = max(A_s-A_d,0) \\ |+-- | | p_2(A_s,A_d) & = max(A_d-A_s,0) \\ |+-- | | \end{aligned}\] |+-- +-----------------------------------+--------------------------------------------------------------------------------------++-- | 'BLEND_OVERLAP_DISJOINT_EXT' | \[ \begin{aligned} |+-- | | p_0(A_s,A_d) & = max(A_s+A_d-1,0) \\ |+-- | | p_1(A_s,A_d) & = min(A_s,1-A_d) \\ |+-- | | p_2(A_s,A_d) & = min(A_d,1-A_s) \\ |+-- | | \end{aligned}\] |+-- +-----------------------------------+--------------------------------------------------------------------------------------++--+-- Advanced Blend Overlap Modes+--+-- = See Also+--+-- 'PipelineColorBlendAdvancedStateCreateInfoEXT'+newtype BlendOverlapEXT = BlendOverlapEXT Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'BLEND_OVERLAP_UNCORRELATED_EXT' specifies that there is no correlation+-- between the source and destination coverage.+pattern BLEND_OVERLAP_UNCORRELATED_EXT = BlendOverlapEXT 0+-- | 'BLEND_OVERLAP_DISJOINT_EXT' specifies that the source and destination+-- coverage are considered to have minimal overlap.+pattern BLEND_OVERLAP_DISJOINT_EXT = BlendOverlapEXT 1+-- | 'BLEND_OVERLAP_CONJOINT_EXT' specifies that the source and destination+-- coverage are considered to have maximal overlap.+pattern BLEND_OVERLAP_CONJOINT_EXT = BlendOverlapEXT 2+{-# complete BLEND_OVERLAP_UNCORRELATED_EXT,+ BLEND_OVERLAP_DISJOINT_EXT,+ BLEND_OVERLAP_CONJOINT_EXT :: BlendOverlapEXT #-}++instance Show BlendOverlapEXT where+ showsPrec p = \case+ BLEND_OVERLAP_UNCORRELATED_EXT -> showString "BLEND_OVERLAP_UNCORRELATED_EXT"+ BLEND_OVERLAP_DISJOINT_EXT -> showString "BLEND_OVERLAP_DISJOINT_EXT"+ BLEND_OVERLAP_CONJOINT_EXT -> showString "BLEND_OVERLAP_CONJOINT_EXT"+ BlendOverlapEXT x -> showParen (p >= 11) (showString "BlendOverlapEXT " . showsPrec 11 x)++instance Read BlendOverlapEXT where+ readPrec = parens (choose [("BLEND_OVERLAP_UNCORRELATED_EXT", pure BLEND_OVERLAP_UNCORRELATED_EXT)+ , ("BLEND_OVERLAP_DISJOINT_EXT", pure BLEND_OVERLAP_DISJOINT_EXT)+ , ("BLEND_OVERLAP_CONJOINT_EXT", pure BLEND_OVERLAP_CONJOINT_EXT)]+ ++++ prec 10 (do+ expectP (Ident "BlendOverlapEXT")+ v <- step readPrec+ pure (BlendOverlapEXT v)))+++type EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION"+pattern EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2+++type EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced"++-- No documentation found for TopLevel "VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME"+pattern EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs-boot view
@@ -0,0 +1,32 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced ( PhysicalDeviceBlendOperationAdvancedFeaturesEXT+ , PhysicalDeviceBlendOperationAdvancedPropertiesEXT+ , PipelineColorBlendAdvancedStateCreateInfoEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceBlendOperationAdvancedFeaturesEXT++instance ToCStruct PhysicalDeviceBlendOperationAdvancedFeaturesEXT+instance Show PhysicalDeviceBlendOperationAdvancedFeaturesEXT++instance FromCStruct PhysicalDeviceBlendOperationAdvancedFeaturesEXT+++data PhysicalDeviceBlendOperationAdvancedPropertiesEXT++instance ToCStruct PhysicalDeviceBlendOperationAdvancedPropertiesEXT+instance Show PhysicalDeviceBlendOperationAdvancedPropertiesEXT++instance FromCStruct PhysicalDeviceBlendOperationAdvancedPropertiesEXT+++data PipelineColorBlendAdvancedStateCreateInfoEXT++instance ToCStruct PipelineColorBlendAdvancedStateCreateInfoEXT+instance Show PipelineColorBlendAdvancedStateCreateInfoEXT++instance FromCStruct PipelineColorBlendAdvancedStateCreateInfoEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_buffer_device_address.hs view
@@ -0,0 +1,253 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT+ , pattern STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT+ , pattern BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT+ , pattern BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT+ , pattern ERROR_INVALID_DEVICE_ADDRESS_EXT+ , getBufferDeviceAddressEXT+ , PhysicalDeviceBufferDeviceAddressFeaturesEXT(..)+ , BufferDeviceAddressCreateInfoEXT(..)+ , PhysicalDeviceBufferAddressFeaturesEXT+ , BufferDeviceAddressInfoEXT+ , EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION+ , pattern EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION+ , EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME+ , pattern EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (getBufferDeviceAddress)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (BufferDeviceAddressInfo)+import Graphics.Vulkan.Core10.BaseType (DeviceAddress)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits (BufferCreateFlags)+import Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits (BufferCreateFlagBits(BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT))+import Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlags)+import Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlagBits(BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT))+import Graphics.Vulkan.Core10.Enums.Result (Result(ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT"+pattern STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO+++-- No documentation found for TopLevel "VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT"+pattern BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT+++-- No documentation found for TopLevel "VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT"+pattern BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT+++-- No documentation found for TopLevel "VK_ERROR_INVALID_DEVICE_ADDRESS_EXT"+pattern ERROR_INVALID_DEVICE_ADDRESS_EXT = ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS+++-- No documentation found for TopLevel "vkGetBufferDeviceAddressEXT"+getBufferDeviceAddressEXT = getBufferDeviceAddress+++-- | VkPhysicalDeviceBufferDeviceAddressFeaturesEXT - Structure describing+-- buffer address features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceBufferDeviceAddressFeaturesEXT'+-- structure describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceBufferDeviceAddressFeaturesEXT' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceBufferDeviceAddressFeaturesEXT' /can/ also be included in+-- the @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable features.+--+-- Note+--+-- The 'PhysicalDeviceBufferDeviceAddressFeaturesEXT' structure has the+-- same members as the+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures'+-- structure, but the functionality indicated by the members is expressed+-- differently. The features indicated by the+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.PhysicalDeviceBufferDeviceAddressFeatures'+-- structure requires additional flags to be passed at memory allocation+-- time, and the capture and replay mechanism is built around opaque+-- capture addresses for buffer and memory objects.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceBufferDeviceAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT+ { -- | @bufferDeviceAddress@ indicates that the implementation supports+ -- accessing buffer memory in shaders as storage buffers via an address+ -- queried from 'getBufferDeviceAddressEXT'.+ bufferDeviceAddress :: Bool+ , -- | @bufferDeviceAddressCaptureReplay@ indicates that the implementation+ -- supports saving and reusing buffer addresses, e.g. for trace capture and+ -- replay.+ bufferDeviceAddressCaptureReplay :: Bool+ , -- | @bufferDeviceAddressMultiDevice@ indicates that the implementation+ -- supports the @bufferDeviceAddress@ feature for logical devices created+ -- with multiple physical devices. If this feature is not supported, buffer+ -- addresses /must/ not be queried on a logical device created with more+ -- than one physical device.+ bufferDeviceAddressMultiDevice :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceBufferDeviceAddressFeaturesEXT++instance ToCStruct PhysicalDeviceBufferDeviceAddressFeaturesEXT where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceBufferDeviceAddressFeaturesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (bufferDeviceAddress))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (bufferDeviceAddressCaptureReplay))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (bufferDeviceAddressMultiDevice))+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceBufferDeviceAddressFeaturesEXT where+ peekCStruct p = do+ bufferDeviceAddress <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ bufferDeviceAddressCaptureReplay <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ bufferDeviceAddressMultiDevice <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ pure $ PhysicalDeviceBufferDeviceAddressFeaturesEXT+ (bool32ToBool bufferDeviceAddress) (bool32ToBool bufferDeviceAddressCaptureReplay) (bool32ToBool bufferDeviceAddressMultiDevice)++instance Storable PhysicalDeviceBufferDeviceAddressFeaturesEXT where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceBufferDeviceAddressFeaturesEXT where+ zero = PhysicalDeviceBufferDeviceAddressFeaturesEXT+ zero+ zero+ zero+++-- | VkBufferDeviceAddressCreateInfoEXT - Request a specific address for a+-- buffer+--+-- = Description+--+-- If 'Graphics.Vulkan.Core10.BaseType.DeviceAddress' is zero, no specific+-- address is requested.+--+-- If 'Graphics.Vulkan.Core10.BaseType.DeviceAddress' is not zero, then it+-- /must/ be an address retrieved from an identically created buffer on the+-- same implementation. The buffer /must/ also be bound to an identically+-- created 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object.+--+-- If this structure is not present, it is as if+-- 'Graphics.Vulkan.Core10.BaseType.DeviceAddress' is zero.+--+-- Apps /should/ avoid creating buffers with app-provided addresses and+-- implementation-provided addresses in the same process, to reduce the+-- likelihood of 'ERROR_INVALID_DEVICE_ADDRESS_EXT' errors.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.DeviceAddress',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data BufferDeviceAddressCreateInfoEXT = BufferDeviceAddressCreateInfoEXT+ { -- | 'Graphics.Vulkan.Core10.BaseType.DeviceAddress' is the device address+ -- requested for the buffer.+ deviceAddress :: DeviceAddress }+ deriving (Typeable)+deriving instance Show BufferDeviceAddressCreateInfoEXT++instance ToCStruct BufferDeviceAddressCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p BufferDeviceAddressCreateInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DeviceAddress)) (deviceAddress)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DeviceAddress)) (zero)+ f++instance FromCStruct BufferDeviceAddressCreateInfoEXT where+ peekCStruct p = do+ deviceAddress <- peek @DeviceAddress ((p `plusPtr` 16 :: Ptr DeviceAddress))+ pure $ BufferDeviceAddressCreateInfoEXT+ deviceAddress++instance Storable BufferDeviceAddressCreateInfoEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero BufferDeviceAddressCreateInfoEXT where+ zero = BufferDeviceAddressCreateInfoEXT+ zero+++-- No documentation found for TopLevel "VkPhysicalDeviceBufferAddressFeaturesEXT"+type PhysicalDeviceBufferAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT+++-- No documentation found for TopLevel "VkBufferDeviceAddressInfoEXT"+type BufferDeviceAddressInfoEXT = BufferDeviceAddressInfo+++type EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION"+pattern EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2+++type EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address"++-- No documentation found for TopLevel "VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME"+pattern EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_buffer_device_address.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address ( BufferDeviceAddressCreateInfoEXT+ , PhysicalDeviceBufferDeviceAddressFeaturesEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data BufferDeviceAddressCreateInfoEXT++instance ToCStruct BufferDeviceAddressCreateInfoEXT+instance Show BufferDeviceAddressCreateInfoEXT++instance FromCStruct BufferDeviceAddressCreateInfoEXT+++data PhysicalDeviceBufferDeviceAddressFeaturesEXT++instance ToCStruct PhysicalDeviceBufferDeviceAddressFeaturesEXT+instance Show PhysicalDeviceBufferDeviceAddressFeaturesEXT++instance FromCStruct PhysicalDeviceBufferDeviceAddressFeaturesEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs view
@@ -0,0 +1,371 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_calibrated_timestamps ( getPhysicalDeviceCalibrateableTimeDomainsEXT+ , getCalibratedTimestampsEXT+ , CalibratedTimestampInfoEXT(..)+ , TimeDomainEXT( TIME_DOMAIN_DEVICE_EXT+ , TIME_DOMAIN_CLOCK_MONOTONIC_EXT+ , TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT+ , TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT+ , ..+ )+ , EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION+ , pattern EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION+ , EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME+ , pattern EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+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 Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Data.Word (Word64)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetCalibratedTimestampsEXT))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceCalibrateableTimeDomainsEXT))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceCalibrateableTimeDomainsEXT+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr TimeDomainEXT -> IO Result) -> Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr TimeDomainEXT -> IO Result++-- | vkGetPhysicalDeviceCalibrateableTimeDomainsEXT - Query calibrateable+-- time domains+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device from which to query the set of calibrateable time domains.+--+-- - @pTimeDomainCount@ is a pointer to an integer related to the number+-- of calibrateable time domains available or queried, as described+-- below.+--+-- - @pTimeDomains@ is either @NULL@ or a pointer to an array of+-- 'TimeDomainEXT' values, indicating the supported calibrateable time+-- domains.+--+-- = Description+--+-- If @pTimeDomains@ is @NULL@, then the number of calibrateable time+-- domains supported for the given+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is returned in+-- @pTimeDomainCount@. Otherwise, @pTimeDomainCount@ /must/ point to a+-- variable set by the user to the number of elements in the @pTimeDomains@+-- array, and on return the variable is overwritten with the number of+-- values actually written to @pTimeDomains@. If the value of+-- @pTimeDomainCount@ is less than the number of calibrateable time domains+-- supported, at most @pTimeDomainCount@ values will be written to+-- @pTimeDomains@. If @pTimeDomainCount@ is smaller than the number of+-- calibrateable time domains supported for the given+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned+-- instead of 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' to indicate+-- that not all the available values were returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @pTimeDomainCount@ /must/ be a valid pointer to a @uint32_t@ value+--+-- - If the value referenced by @pTimeDomainCount@ is not @0@, and+-- @pTimeDomains@ is not @NULL@, @pTimeDomains@ /must/ be a valid+-- pointer to an array of @pTimeDomainCount@ 'TimeDomainEXT' values+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice', 'TimeDomainEXT'+getPhysicalDeviceCalibrateableTimeDomainsEXT :: PhysicalDevice -> IO (Result, ("timeDomains" ::: Vector TimeDomainEXT))+getPhysicalDeviceCalibrateableTimeDomainsEXT physicalDevice = evalContT $ do+ let vkGetPhysicalDeviceCalibrateableTimeDomainsEXT' = mkVkGetPhysicalDeviceCalibrateableTimeDomainsEXT (pVkGetPhysicalDeviceCalibrateableTimeDomainsEXT (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pPTimeDomainCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkGetPhysicalDeviceCalibrateableTimeDomainsEXT' physicalDevice' (pPTimeDomainCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pTimeDomainCount <- lift $ peek @Word32 pPTimeDomainCount+ pPTimeDomains <- ContT $ bracket (callocBytes @TimeDomainEXT ((fromIntegral (pTimeDomainCount)) * 4)) free+ r' <- lift $ vkGetPhysicalDeviceCalibrateableTimeDomainsEXT' physicalDevice' (pPTimeDomainCount) (pPTimeDomains)+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pTimeDomainCount' <- lift $ peek @Word32 pPTimeDomainCount+ pTimeDomains' <- lift $ generateM (fromIntegral (pTimeDomainCount')) (\i -> peek @TimeDomainEXT ((pPTimeDomains `advancePtrBytes` (4 * (i)) :: Ptr TimeDomainEXT)))+ pure $ ((r'), pTimeDomains')+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetCalibratedTimestampsEXT+ :: FunPtr (Ptr Device_T -> Word32 -> Ptr CalibratedTimestampInfoEXT -> Ptr Word64 -> Ptr Word64 -> IO Result) -> Ptr Device_T -> Word32 -> Ptr CalibratedTimestampInfoEXT -> Ptr Word64 -> Ptr Word64 -> IO Result++-- | vkGetCalibratedTimestampsEXT - Query calibrated timestamps+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device used+-- to perform the query.+--+-- - @timestampCount@ is the number of timestamps to query.+--+-- - @pTimestampInfos@ is a pointer to an array of @timestampCount@+-- 'CalibratedTimestampInfoEXT' structures, describing the time domains+-- the calibrated timestamps should be captured from.+--+-- - @pTimestamps@ is a pointer to an array of @timestampCount@ 64-bit+-- unsigned integer values in which the requested calibrated timestamp+-- values are returned.+--+-- - @pMaxDeviation@ is a pointer to a 64-bit unsigned integer value in+-- which the strictly positive maximum deviation, in nanoseconds, of+-- the calibrated timestamp values is returned.+--+-- = Description+--+-- Note+--+-- The maximum deviation /may/ vary between calls to+-- 'getCalibratedTimestampsEXT' even for the same set of time domains due+-- to implementation and platform specific reasons. It is the application’s+-- responsibility to assess whether the returned maximum deviation makes+-- the timestamp values suitable for any particular purpose and /can/+-- choose to re-issue the timestamp calibration call pursuing a lower+-- devation value.+--+-- Calibrated timestamp values /can/ be extrapolated to estimate future+-- coinciding timestamp values, however, depending on the nature of the+-- time domains and other properties of the platform extrapolating values+-- over a sufficiently long period of time /may/ no longer be accurate+-- enough to fit any particular purpose so applications are expected to+-- re-calibrate the timestamps on a regular basis.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'CalibratedTimestampInfoEXT', 'Graphics.Vulkan.Core10.Handles.Device'+getCalibratedTimestampsEXT :: Device -> ("timestampInfos" ::: Vector CalibratedTimestampInfoEXT) -> IO (("timestamps" ::: Vector Word64), ("maxDeviation" ::: Word64))+getCalibratedTimestampsEXT device timestampInfos = evalContT $ do+ let vkGetCalibratedTimestampsEXT' = mkVkGetCalibratedTimestampsEXT (pVkGetCalibratedTimestampsEXT (deviceCmds (device :: Device)))+ pPTimestampInfos <- ContT $ allocaBytesAligned @CalibratedTimestampInfoEXT ((Data.Vector.length (timestampInfos)) * 24) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPTimestampInfos `plusPtr` (24 * (i)) :: Ptr CalibratedTimestampInfoEXT) (e) . ($ ())) (timestampInfos)+ pPTimestamps <- ContT $ bracket (callocBytes @Word64 ((fromIntegral ((fromIntegral (Data.Vector.length $ (timestampInfos)) :: Word32))) * 8)) free+ pPMaxDeviation <- ContT $ bracket (callocBytes @Word64 8) free+ r <- lift $ vkGetCalibratedTimestampsEXT' (deviceHandle (device)) ((fromIntegral (Data.Vector.length $ (timestampInfos)) :: Word32)) (pPTimestampInfos) (pPTimestamps) (pPMaxDeviation)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pTimestamps <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (timestampInfos)) :: Word32))) (\i -> peek @Word64 ((pPTimestamps `advancePtrBytes` (8 * (i)) :: Ptr Word64)))+ pMaxDeviation <- lift $ peek @Word64 pPMaxDeviation+ pure $ (pTimestamps, pMaxDeviation)+++-- | VkCalibratedTimestampInfoEXT - Structure specifying the input parameters+-- of a calibrated timestamp query+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'TimeDomainEXT', 'getCalibratedTimestampsEXT'+data CalibratedTimestampInfoEXT = CalibratedTimestampInfoEXT+ { -- | @timeDomain@ /must/ be a valid 'TimeDomainEXT' value+ timeDomain :: TimeDomainEXT }+ deriving (Typeable)+deriving instance Show CalibratedTimestampInfoEXT++instance ToCStruct CalibratedTimestampInfoEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p CalibratedTimestampInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr TimeDomainEXT)) (timeDomain)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr TimeDomainEXT)) (zero)+ f++instance FromCStruct CalibratedTimestampInfoEXT where+ peekCStruct p = do+ timeDomain <- peek @TimeDomainEXT ((p `plusPtr` 16 :: Ptr TimeDomainEXT))+ pure $ CalibratedTimestampInfoEXT+ timeDomain++instance Storable CalibratedTimestampInfoEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero CalibratedTimestampInfoEXT where+ zero = CalibratedTimestampInfoEXT+ zero+++-- | VkTimeDomainEXT - Supported time domains+--+-- = Description+--+-- > struct timespec tv;+-- > clock_gettime(CLOCK_MONOTONIC, &tv);+-- > return tv.tv_nsec + tv.tv_sec*1000000000ull;+--+-- > struct timespec tv;+-- > clock_gettime(CLOCK_MONOTONIC_RAW, &tv);+-- > return tv.tv_nsec + tv.tv_sec*1000000000ull;+--+-- > LARGE_INTEGER counter;+-- > QueryPerformanceCounter(&counter);+-- > return counter.QuadPart;+--+-- = See Also+--+-- 'CalibratedTimestampInfoEXT',+-- 'getPhysicalDeviceCalibrateableTimeDomainsEXT'+newtype TimeDomainEXT = TimeDomainEXT Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'TIME_DOMAIN_DEVICE_EXT' specifies the device time domain. Timestamp+-- values in this time domain use the same units and are comparable with+-- device timestamp values captured using+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp' and are+-- defined to be incrementing according to the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-timestampPeriod timestampPeriod>+-- of the device.+pattern TIME_DOMAIN_DEVICE_EXT = TimeDomainEXT 0+-- | 'TIME_DOMAIN_CLOCK_MONOTONIC_EXT' specifies the CLOCK_MONOTONIC time+-- domain available on POSIX platforms. Timestamp values in this time+-- domain are in units of nanoseconds and are comparable with platform+-- timestamp values captured using the POSIX clock_gettime API as computed+-- by this example:+pattern TIME_DOMAIN_CLOCK_MONOTONIC_EXT = TimeDomainEXT 1+-- | 'TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT' specifies the CLOCK_MONOTONIC_RAW+-- time domain available on POSIX platforms. Timestamp values in this time+-- domain are in units of nanoseconds and are comparable with platform+-- timestamp values captured using the POSIX clock_gettime API as computed+-- by this example:+pattern TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = TimeDomainEXT 2+-- | 'TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT' specifies the performance+-- counter (QPC) time domain available on Windows. Timestamp values in this+-- time domain are in the same units as those provided by the Windows+-- QueryPerformanceCounter API and are comparable with platform timestamp+-- values captured using that API as computed by this example:+pattern TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = TimeDomainEXT 3+{-# complete TIME_DOMAIN_DEVICE_EXT,+ TIME_DOMAIN_CLOCK_MONOTONIC_EXT,+ TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT,+ TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT :: TimeDomainEXT #-}++instance Show TimeDomainEXT where+ showsPrec p = \case+ TIME_DOMAIN_DEVICE_EXT -> showString "TIME_DOMAIN_DEVICE_EXT"+ TIME_DOMAIN_CLOCK_MONOTONIC_EXT -> showString "TIME_DOMAIN_CLOCK_MONOTONIC_EXT"+ TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT -> showString "TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT"+ TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT -> showString "TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT"+ TimeDomainEXT x -> showParen (p >= 11) (showString "TimeDomainEXT " . showsPrec 11 x)++instance Read TimeDomainEXT where+ readPrec = parens (choose [("TIME_DOMAIN_DEVICE_EXT", pure TIME_DOMAIN_DEVICE_EXT)+ , ("TIME_DOMAIN_CLOCK_MONOTONIC_EXT", pure TIME_DOMAIN_CLOCK_MONOTONIC_EXT)+ , ("TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT", pure TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT)+ , ("TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT", pure TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT)]+ ++++ prec 10 (do+ expectP (Ident "TimeDomainEXT")+ v <- step readPrec+ pure (TimeDomainEXT v)))+++type EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION"+pattern EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1+++type EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps"++-- No documentation found for TopLevel "VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME"+pattern EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs-boot view
@@ -0,0 +1,18 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_calibrated_timestamps ( CalibratedTimestampInfoEXT+ , TimeDomainEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data CalibratedTimestampInfoEXT++instance ToCStruct CalibratedTimestampInfoEXT+instance Show CalibratedTimestampInfoEXT++instance FromCStruct CalibratedTimestampInfoEXT+++data TimeDomainEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_conditional_rendering.hs view
@@ -0,0 +1,494 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering ( cmdBeginConditionalRenderingEXT+ , cmdEndConditionalRenderingEXT+ , ConditionalRenderingBeginInfoEXT(..)+ , CommandBufferInheritanceConditionalRenderingInfoEXT(..)+ , PhysicalDeviceConditionalRenderingFeaturesEXT(..)+ , ConditionalRenderingFlagBitsEXT( CONDITIONAL_RENDERING_INVERTED_BIT_EXT+ , ..+ )+ , ConditionalRenderingFlagsEXT+ , EXT_CONDITIONAL_RENDERING_SPEC_VERSION+ , pattern EXT_CONDITIONAL_RENDERING_SPEC_VERSION+ , EXT_CONDITIONAL_RENDERING_EXTENSION_NAME+ , pattern EXT_CONDITIONAL_RENDERING_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Bits (Bits)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdBeginConditionalRenderingEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdEndConditionalRenderingEXT))+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdBeginConditionalRenderingEXT+ :: FunPtr (Ptr CommandBuffer_T -> Ptr ConditionalRenderingBeginInfoEXT -> IO ()) -> Ptr CommandBuffer_T -> Ptr ConditionalRenderingBeginInfoEXT -> IO ()++-- | vkCmdBeginConditionalRenderingEXT - Define the beginning of a+-- conditional rendering block+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which this command will be recorded.+--+-- - @pConditionalRenderingBegin@ is a pointer to a+-- 'ConditionalRenderingBeginInfoEXT' structure specifying parameters+-- of conditional rendering.+--+-- == Valid Usage+--+-- - Conditional rendering /must/ not already be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-rendering active>+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pConditionalRenderingBegin@ /must/ be a valid pointer to a valid+-- 'ConditionalRenderingBeginInfoEXT' structure+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'ConditionalRenderingBeginInfoEXT'+cmdBeginConditionalRenderingEXT :: CommandBuffer -> ConditionalRenderingBeginInfoEXT -> IO ()+cmdBeginConditionalRenderingEXT commandBuffer conditionalRenderingBegin = evalContT $ do+ let vkCmdBeginConditionalRenderingEXT' = mkVkCmdBeginConditionalRenderingEXT (pVkCmdBeginConditionalRenderingEXT (deviceCmds (commandBuffer :: CommandBuffer)))+ pConditionalRenderingBegin <- ContT $ withCStruct (conditionalRenderingBegin)+ lift $ vkCmdBeginConditionalRenderingEXT' (commandBufferHandle (commandBuffer)) pConditionalRenderingBegin+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdEndConditionalRenderingEXT+ :: FunPtr (Ptr CommandBuffer_T -> IO ()) -> Ptr CommandBuffer_T -> IO ()++-- | vkCmdEndConditionalRenderingEXT - Define the end of a conditional+-- rendering block+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which this command will be recorded.+--+-- = Description+--+-- Once ended, conditional rendering becomes inactive.+--+-- == Valid Usage+--+-- - Conditional rendering /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-rendering active>+--+-- - If conditional rendering was made+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-rendering active>+-- outside of a render pass instance, it must not be ended inside a+-- render pass instance+--+-- - If conditional rendering was made+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-rendering active>+-- within a subpass it must be ended in the same subpass+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdEndConditionalRenderingEXT :: CommandBuffer -> IO ()+cmdEndConditionalRenderingEXT commandBuffer = do+ let vkCmdEndConditionalRenderingEXT' = mkVkCmdEndConditionalRenderingEXT (pVkCmdEndConditionalRenderingEXT (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdEndConditionalRenderingEXT' (commandBufferHandle (commandBuffer))+ pure $ ()+++-- | VkConditionalRenderingBeginInfoEXT - Structure specifying conditional+-- rendering begin info+--+-- = Description+--+-- If the 32-bit value at @offset@ in+-- 'Graphics.Vulkan.Core10.Handles.Buffer' memory is zero, then the+-- rendering commands are discarded, otherwise they are executed as normal.+-- If the value of the predicate in buffer memory changes while conditional+-- rendering is active, the rendering commands /may/ be discarded in an+-- implementation-dependent way. Some implementations may latch the value+-- of the predicate upon beginning conditional rendering while others may+-- read it before every rendering command.+--+-- == Valid Usage+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is non-sparse then it+-- /must/ be bound completely and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ have been created+-- with the+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT'+-- bit set+--+-- - @offset@ /must/ be less than the size of+-- 'Graphics.Vulkan.Core10.Handles.Buffer' by at least 32 bits.+--+-- - @offset@ /must/ be a multiple of 4+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT'+--+-- - @pNext@ /must/ be @NULL@+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of 'ConditionalRenderingFlagBitsEXT' values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer', 'ConditionalRenderingFlagsEXT',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'cmdBeginConditionalRenderingEXT'+data ConditionalRenderingBeginInfoEXT = ConditionalRenderingBeginInfoEXT+ { -- | 'Graphics.Vulkan.Core10.Handles.Buffer' is a buffer containing the+ -- predicate for conditional rendering.+ buffer :: Buffer+ , -- | @offset@ is the byte offset into 'Graphics.Vulkan.Core10.Handles.Buffer'+ -- where the predicate is located.+ offset :: DeviceSize+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'ConditionalRenderingFlagsEXT' specifying the behavior of conditional+ -- rendering.+ flags :: ConditionalRenderingFlagsEXT+ }+ deriving (Typeable)+deriving instance Show ConditionalRenderingBeginInfoEXT++instance ToCStruct ConditionalRenderingBeginInfoEXT where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ConditionalRenderingBeginInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Buffer)) (buffer)+ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (offset)+ poke ((p `plusPtr` 32 :: Ptr ConditionalRenderingFlagsEXT)) (flags)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Buffer)) (zero)+ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)+ f++instance FromCStruct ConditionalRenderingBeginInfoEXT where+ peekCStruct p = do+ buffer <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))+ offset <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))+ flags <- peek @ConditionalRenderingFlagsEXT ((p `plusPtr` 32 :: Ptr ConditionalRenderingFlagsEXT))+ pure $ ConditionalRenderingBeginInfoEXT+ buffer offset flags++instance Storable ConditionalRenderingBeginInfoEXT where+ sizeOf ~_ = 40+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ConditionalRenderingBeginInfoEXT where+ zero = ConditionalRenderingBeginInfoEXT+ zero+ zero+ zero+++-- | VkCommandBufferInheritanceConditionalRenderingInfoEXT - Structure+-- specifying command buffer inheritance info+--+-- = Description+--+-- If this structure is not present, the behavior is as if+-- @conditionalRenderingEnable@ is 'Graphics.Vulkan.Core10.BaseType.FALSE'.+--+-- == Valid Usage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedConditionalRendering inherited conditional rendering>+-- feature is not enabled, @conditionalRenderingEnable@ /must/ be+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data CommandBufferInheritanceConditionalRenderingInfoEXT = CommandBufferInheritanceConditionalRenderingInfoEXT+ { -- | @conditionalRenderingEnable@ specifies whether the command buffer /can/+ -- be executed while conditional rendering is active in the primary command+ -- buffer. If this is 'Graphics.Vulkan.Core10.BaseType.TRUE', then this+ -- command buffer /can/ be executed whether the primary command buffer has+ -- active conditional rendering or not. If this is+ -- 'Graphics.Vulkan.Core10.BaseType.FALSE', then the primary command buffer+ -- /must/ not have conditional rendering active.+ conditionalRenderingEnable :: Bool }+ deriving (Typeable)+deriving instance Show CommandBufferInheritanceConditionalRenderingInfoEXT++instance ToCStruct CommandBufferInheritanceConditionalRenderingInfoEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p CommandBufferInheritanceConditionalRenderingInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (conditionalRenderingEnable))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct CommandBufferInheritanceConditionalRenderingInfoEXT where+ peekCStruct p = do+ conditionalRenderingEnable <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ CommandBufferInheritanceConditionalRenderingInfoEXT+ (bool32ToBool conditionalRenderingEnable)++instance Storable CommandBufferInheritanceConditionalRenderingInfoEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero CommandBufferInheritanceConditionalRenderingInfoEXT where+ zero = CommandBufferInheritanceConditionalRenderingInfoEXT+ zero+++-- | VkPhysicalDeviceConditionalRenderingFeaturesEXT - Structure describing+-- if a secondary command buffer can be executed if conditional rendering+-- is active in the primary command buffer+--+-- = Description+--+-- If the 'PhysicalDeviceConditionalRenderingFeaturesEXT' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating the implementation-dependent+-- behavior. 'PhysicalDeviceConditionalRenderingFeaturesEXT' /can/ also be+-- included in @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to enable the features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceConditionalRenderingFeaturesEXT = PhysicalDeviceConditionalRenderingFeaturesEXT+ { -- | @conditionalRendering@ specifies whether conditional rendering is+ -- supported.+ conditionalRendering :: Bool+ , -- | @inheritedConditionalRendering@ specifies whether a secondary command+ -- buffer /can/ be executed while conditional rendering is active in the+ -- primary command buffer.+ inheritedConditionalRendering :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceConditionalRenderingFeaturesEXT++instance ToCStruct PhysicalDeviceConditionalRenderingFeaturesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceConditionalRenderingFeaturesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (conditionalRendering))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (inheritedConditionalRendering))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceConditionalRenderingFeaturesEXT where+ peekCStruct p = do+ conditionalRendering <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ inheritedConditionalRendering <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ pure $ PhysicalDeviceConditionalRenderingFeaturesEXT+ (bool32ToBool conditionalRendering) (bool32ToBool inheritedConditionalRendering)++instance Storable PhysicalDeviceConditionalRenderingFeaturesEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceConditionalRenderingFeaturesEXT where+ zero = PhysicalDeviceConditionalRenderingFeaturesEXT+ zero+ zero+++-- | VkConditionalRenderingFlagBitsEXT - Specify the behavior of conditional+-- rendering+--+-- = See Also+--+-- 'ConditionalRenderingFlagsEXT'+newtype ConditionalRenderingFlagBitsEXT = ConditionalRenderingFlagBitsEXT Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'CONDITIONAL_RENDERING_INVERTED_BIT_EXT' specifies the condition used to+-- determine whether to discard rendering commands or not. That is, if the+-- 32-bit predicate read from 'Graphics.Vulkan.Core10.Handles.Buffer'+-- memory at @offset@ is zero, the rendering commands are not discarded,+-- and if non zero, then they are discarded.+pattern CONDITIONAL_RENDERING_INVERTED_BIT_EXT = ConditionalRenderingFlagBitsEXT 0x00000001++type ConditionalRenderingFlagsEXT = ConditionalRenderingFlagBitsEXT++instance Show ConditionalRenderingFlagBitsEXT where+ showsPrec p = \case+ CONDITIONAL_RENDERING_INVERTED_BIT_EXT -> showString "CONDITIONAL_RENDERING_INVERTED_BIT_EXT"+ ConditionalRenderingFlagBitsEXT x -> showParen (p >= 11) (showString "ConditionalRenderingFlagBitsEXT 0x" . showHex x)++instance Read ConditionalRenderingFlagBitsEXT where+ readPrec = parens (choose [("CONDITIONAL_RENDERING_INVERTED_BIT_EXT", pure CONDITIONAL_RENDERING_INVERTED_BIT_EXT)]+ ++++ prec 10 (do+ expectP (Ident "ConditionalRenderingFlagBitsEXT")+ v <- step readPrec+ pure (ConditionalRenderingFlagBitsEXT v)))+++type EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION"+pattern EXT_CONDITIONAL_RENDERING_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2+++type EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering"++-- No documentation found for TopLevel "VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME"+pattern EXT_CONDITIONAL_RENDERING_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_conditional_rendering.hs-boot view
@@ -0,0 +1,32 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering ( CommandBufferInheritanceConditionalRenderingInfoEXT+ , ConditionalRenderingBeginInfoEXT+ , PhysicalDeviceConditionalRenderingFeaturesEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data CommandBufferInheritanceConditionalRenderingInfoEXT++instance ToCStruct CommandBufferInheritanceConditionalRenderingInfoEXT+instance Show CommandBufferInheritanceConditionalRenderingInfoEXT++instance FromCStruct CommandBufferInheritanceConditionalRenderingInfoEXT+++data ConditionalRenderingBeginInfoEXT++instance ToCStruct ConditionalRenderingBeginInfoEXT+instance Show ConditionalRenderingBeginInfoEXT++instance FromCStruct ConditionalRenderingBeginInfoEXT+++data PhysicalDeviceConditionalRenderingFeaturesEXT++instance ToCStruct PhysicalDeviceConditionalRenderingFeaturesEXT+instance Show PhysicalDeviceConditionalRenderingFeaturesEXT++instance FromCStruct PhysicalDeviceConditionalRenderingFeaturesEXT+
src/Graphics/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs view
@@ -1,157 +1,58 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization- ( VkConservativeRasterizationModeEXT(..)- , pattern VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT- , pattern VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT- , pattern VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT- , VkPipelineRasterizationConservativeStateCreateFlagsEXT(..)- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT- , pattern VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT- , pattern VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION- , pattern VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME- , VkPhysicalDeviceConservativeRasterizationPropertiesEXT(..)- , VkPipelineRasterizationConservativeStateCreateInfoEXT(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Int- ( Int32- )-import Data.String- ( IsString- )-import Foreign.C.Types- ( CFloat(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- , VkFlags- )----- ** VkConservativeRasterizationModeEXT---- | VkConservativeRasterizationModeEXT - Specify the conservative--- rasterization mode------ = See Also------ 'VkPipelineRasterizationConservativeStateCreateInfoEXT'-newtype VkConservativeRasterizationModeEXT = VkConservativeRasterizationModeEXT Int32- deriving (Eq, Ord, Storable)--instance Show VkConservativeRasterizationModeEXT where- showsPrec _ VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = showString "VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT"- showsPrec _ VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = showString "VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT"- showsPrec _ VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = showString "VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT"- showsPrec p (VkConservativeRasterizationModeEXT x) = showParen (p >= 11) (showString "VkConservativeRasterizationModeEXT " . showsPrec 11 x)--instance Read VkConservativeRasterizationModeEXT where- readPrec = parens ( choose [ ("VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT", pure VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT)- , ("VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT", pure VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT)- , ("VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT", pure VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT)- ] +++- prec 10 (do- expectP (Ident "VkConservativeRasterizationModeEXT")- v <- step readPrec- pure (VkConservativeRasterizationModeEXT v)- )- )---- | @VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT@ specifies that--- conservative rasterization is disabled and rasterization proceeds as--- normal.-pattern VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT :: VkConservativeRasterizationModeEXT-pattern VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = VkConservativeRasterizationModeEXT 0---- | @VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT@ specifies that--- conservative rasterization is enabled in overestimation mode.-pattern VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT :: VkConservativeRasterizationModeEXT-pattern VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = VkConservativeRasterizationModeEXT 1---- | @VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT@ specifies that--- conservative rasterization is enabled in underestimation mode.-pattern VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT :: VkConservativeRasterizationModeEXT-pattern VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = VkConservativeRasterizationModeEXT 2--- ** VkPipelineRasterizationConservativeStateCreateFlagsEXT---- | VkPipelineRasterizationConservativeStateCreateFlagsEXT - Reserved for--- future use------ = Description------ @VkPipelineRasterizationConservativeStateCreateFlagsEXT@ is a bitmask--- type for setting a mask, but is currently reserved for future use.------ = See Also------ 'VkPipelineRasterizationConservativeStateCreateInfoEXT'-newtype VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkPipelineRasterizationConservativeStateCreateFlagsEXT VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineRasterizationConservativeStateCreateFlagsEXT where- - showsPrec p (VkPipelineRasterizationConservativeStateCreateFlagsEXT x) = showParen (p >= 11) (showString "VkPipelineRasterizationConservativeStateCreateFlagsEXT " . showsPrec 11 x)--instance Read VkPipelineRasterizationConservativeStateCreateFlagsEXT where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineRasterizationConservativeStateCreateFlagsEXT")- v <- step readPrec- pure (VkPipelineRasterizationConservativeStateCreateFlagsEXT v)- )- )-+module Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization ( PhysicalDeviceConservativeRasterizationPropertiesEXT(..)+ , PipelineRasterizationConservativeStateCreateInfoEXT(..)+ , PipelineRasterizationConservativeStateCreateFlagsEXT(..)+ , ConservativeRasterizationModeEXT( CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT+ , CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT+ , CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT+ , ..+ )+ , EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION+ , pattern EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION+ , EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME+ , pattern EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME+ ) where --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = VkStructureType 1000101000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"-pattern VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = VkStructureType 1000101001--- No documentation found for TopLevel "VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION"-pattern VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION :: Integral a => a-pattern VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME"-pattern VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization"+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CFloat(CFloat))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Data.Int (Int32)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT)) -- | VkPhysicalDeviceConservativeRasterizationPropertiesEXT - Structure -- describing conservative raster properties that can be supported by an -- implementation@@ -159,198 +60,303 @@ -- = Members -- -- The members of the--- @VkPhysicalDeviceConservativeRasterizationPropertiesEXT@ structure+-- 'PhysicalDeviceConservativeRasterizationPropertiesEXT' structure -- describe the following implementation-dependent limits: -- -- = Description ----- - @primitiveOverestimationSize@ is the size in pixels the generating--- primitive is increased at each of its edges during conservative--- rasterization overestimation mode. Even with a size of 0.0,--- conservative rasterization overestimation rules still apply and if--- any part of the pixel rectangle is covered by the generating--- primitive, fragments are generated for the entire pixel. However--- implementations /may/ make the pixel coverage area even more--- conservative by increasing the size of the generating primitive.------ - @maxExtraPrimitiveOverestimationSize@ is the maximum size in pixels--- of extra overestimation the implementation supports in the pipeline--- state. A value of 0.0 means the implementation does not support any--- additional overestimation of the generating primitive during--- conservative rasterization. A value above 0.0 allows the application--- to further increase the size of the generating primitive during--- conservative rasterization overestimation.------ - @extraPrimitiveOverestimationSizeGranularity@ is the granularity of--- extra overestimation that can be specified in the pipeline state--- between 0.0 and @maxExtraPrimitiveOverestimationSize@ inclusive. A--- value of 0.0 means the implementation can use the smallest--- representable non-zero value in the screen space pixel fixed-point--- grid.------ - @primitiveUnderestimation@ is true if the implementation supports--- the @VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT@--- conservative rasterization mode in addition to--- @VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT@. Otherwise the--- implementation only supports--- @VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT@.------ - @conservativePointAndLineRasterization@ is true if the--- implementation supports conservative rasterization of point and line--- primitives as well as triangle primitives. Otherwise the--- implementation only supports triangle primitives.------ - @degenerateTrianglesRasterized@ is false if the implementation culls--- primitives generated from triangles that become zero area after they--- are quantized to the fixed-point rasterization pixel grid.--- @degenerateTrianglesRasterized@ is true if these primitives are not--- culled and the provoking vertex attributes and depth value are used--- for the fragments. The primitive area calculation is done on the--- primitive generated from the clipped triangle if applicable. Zero--- area primitives are backfacing and the application /can/ enable--- backface culling if desired.------ - @degenerateLinesRasterized@ is false if the implementation culls--- lines that become zero length after they are quantized to the--- fixed-point rasterization pixel grid. @degenerateLinesRasterized@ is--- true if zero length lines are not culled and the provoking vertex--- attributes and depth value are used for the fragments.------ - @fullyCoveredFragmentShaderInputVariable@ is true if the--- implementation supports the SPIR-V builtin fragment shader input--- variable FullyCoveredEXT which specifies that conservative--- rasterization is enabled and the fragment pixel square is fully--- covered by the generating primitive.------ - @conservativeRasterizationPostDepthCoverage@ is true if the--- implementation supports conservative rasterization with the--- [@PostDepthCoverage@](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-fragment-earlytest-postdepthcoverage)--- execution mode enabled. When supported the @SampleMask@ built-in--- input variable will reflect the coverage after the early--- per-fragment depth and stencil tests are applied even when--- conservative rasterization is enabled. Otherwise--- [@PostDepthCoverage@](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#shaders-fragment-earlytest-postdepthcoverage)--- execution mode /must/ not be used when conservative rasterization is--- enabled.+-- If the 'PhysicalDeviceConservativeRasterizationPropertiesEXT' structure+-- is included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits and properties. -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT@------ If the @VkPhysicalDeviceConservativeRasterizationPropertiesEXT@--- structure is included in the @pNext@ chain of--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2KHR',--- it is filled with the implementation-dependent limits and properties.--- -- = See Also ----- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceConservativeRasterizationPropertiesEXT = VkPhysicalDeviceConservativeRasterizationPropertiesEXT- { -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "primitiveOverestimationSize"- vkPrimitiveOverestimationSize :: CFloat- , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "maxExtraPrimitiveOverestimationSize"- vkMaxExtraPrimitiveOverestimationSize :: CFloat- , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "extraPrimitiveOverestimationSizeGranularity"- vkExtraPrimitiveOverestimationSizeGranularity :: CFloat- , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "primitiveUnderestimation"- vkPrimitiveUnderestimation :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "conservativePointAndLineRasterization"- vkConservativePointAndLineRasterization :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "degenerateTrianglesRasterized"- vkDegenerateTrianglesRasterized :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "degenerateLinesRasterized"- vkDegenerateLinesRasterized :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "fullyCoveredFragmentShaderInputVariable"- vkFullyCoveredFragmentShaderInputVariable :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceConservativeRasterizationPropertiesEXT" "conservativeRasterizationPostDepthCoverage"- vkConservativeRasterizationPostDepthCoverage :: VkBool32+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceConservativeRasterizationPropertiesEXT = PhysicalDeviceConservativeRasterizationPropertiesEXT+ { -- | @primitiveOverestimationSize@ is the size in pixels the generating+ -- primitive is increased at each of its edges during conservative+ -- rasterization overestimation mode. Even with a size of 0.0, conservative+ -- rasterization overestimation rules still apply and if any part of the+ -- pixel rectangle is covered by the generating primitive, fragments are+ -- generated for the entire pixel. However implementations /may/ make the+ -- pixel coverage area even more conservative by increasing the size of the+ -- generating primitive.+ primitiveOverestimationSize :: Float+ , -- | @maxExtraPrimitiveOverestimationSize@ is the maximum size in pixels of+ -- extra overestimation the implementation supports in the pipeline state.+ -- A value of 0.0 means the implementation does not support any additional+ -- overestimation of the generating primitive during conservative+ -- rasterization. A value above 0.0 allows the application to further+ -- increase the size of the generating primitive during conservative+ -- rasterization overestimation.+ maxExtraPrimitiveOverestimationSize :: Float+ , -- | @extraPrimitiveOverestimationSizeGranularity@ is the granularity of+ -- extra overestimation that can be specified in the pipeline state between+ -- 0.0 and @maxExtraPrimitiveOverestimationSize@ inclusive. A value of 0.0+ -- means the implementation can use the smallest representable non-zero+ -- value in the screen space pixel fixed-point grid.+ extraPrimitiveOverestimationSizeGranularity :: Float+ , -- | @primitiveUnderestimation@ is true if the implementation supports the+ -- 'CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT' conservative+ -- rasterization mode in addition to+ -- 'CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT'. Otherwise the+ -- implementation only supports+ -- 'CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT'.+ primitiveUnderestimation :: Bool+ , -- | @conservativePointAndLineRasterization@ is true if the implementation+ -- supports conservative rasterization of point and line primitives as well+ -- as triangle primitives. Otherwise the implementation only supports+ -- triangle primitives.+ conservativePointAndLineRasterization :: Bool+ , -- | @degenerateTrianglesRasterized@ is false if the implementation culls+ -- primitives generated from triangles that become zero area after they are+ -- quantized to the fixed-point rasterization pixel grid.+ -- @degenerateTrianglesRasterized@ is true if these primitives are not+ -- culled and the provoking vertex attributes and depth value are used for+ -- the fragments. The primitive area calculation is done on the primitive+ -- generated from the clipped triangle if applicable. Zero area primitives+ -- are backfacing and the application /can/ enable backface culling if+ -- desired.+ degenerateTrianglesRasterized :: Bool+ , -- | @degenerateLinesRasterized@ is false if the implementation culls lines+ -- that become zero length after they are quantized to the fixed-point+ -- rasterization pixel grid. @degenerateLinesRasterized@ is true if zero+ -- length lines are not culled and the provoking vertex attributes and+ -- depth value are used for the fragments.+ degenerateLinesRasterized :: Bool+ , -- | @fullyCoveredFragmentShaderInputVariable@ is true if the implementation+ -- supports the SPIR-V builtin fragment shader input variable+ -- @FullyCoveredEXT@ which specifies that conservative rasterization is+ -- enabled and the fragment area is fully covered by the generating+ -- primitive.+ fullyCoveredFragmentShaderInputVariable :: Bool+ , -- | @conservativeRasterizationPostDepthCoverage@ is true if the+ -- implementation supports conservative rasterization with the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-earlytest-postdepthcoverage PostDepthCoverage>+ -- execution mode enabled. When supported the+ -- 'Graphics.Vulkan.Core10.BaseType.SampleMask' built-in input variable+ -- will reflect the coverage after the early per-fragment depth and stencil+ -- tests are applied even when conservative rasterization is enabled.+ -- Otherwise+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-earlytest-postdepthcoverage PostDepthCoverage>+ -- execution mode /must/ not be used when conservative rasterization is+ -- enabled.+ conservativeRasterizationPostDepthCoverage :: Bool }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show PhysicalDeviceConservativeRasterizationPropertiesEXT -instance Storable VkPhysicalDeviceConservativeRasterizationPropertiesEXT where+instance ToCStruct PhysicalDeviceConservativeRasterizationPropertiesEXT where+ withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceConservativeRasterizationPropertiesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (primitiveOverestimationSize))+ poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (maxExtraPrimitiveOverestimationSize))+ poke ((p `plusPtr` 24 :: Ptr CFloat)) (CFloat (extraPrimitiveOverestimationSizeGranularity))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (primitiveUnderestimation))+ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (conservativePointAndLineRasterization))+ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (degenerateTrianglesRasterized))+ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (degenerateLinesRasterized))+ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (fullyCoveredFragmentShaderInputVariable))+ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (conservativeRasterizationPostDepthCoverage))+ f+ cStructSize = 56+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (zero))+ poke ((p `plusPtr` 20 :: Ptr CFloat)) (CFloat (zero))+ poke ((p `plusPtr` 24 :: Ptr CFloat)) (CFloat (zero))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceConservativeRasterizationPropertiesEXT where+ peekCStruct p = do+ primitiveOverestimationSize <- peek @CFloat ((p `plusPtr` 16 :: Ptr CFloat))+ maxExtraPrimitiveOverestimationSize <- peek @CFloat ((p `plusPtr` 20 :: Ptr CFloat))+ extraPrimitiveOverestimationSizeGranularity <- peek @CFloat ((p `plusPtr` 24 :: Ptr CFloat))+ primitiveUnderestimation <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))+ conservativePointAndLineRasterization <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))+ degenerateTrianglesRasterized <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))+ degenerateLinesRasterized <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))+ fullyCoveredFragmentShaderInputVariable <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))+ conservativeRasterizationPostDepthCoverage <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))+ pure $ PhysicalDeviceConservativeRasterizationPropertiesEXT+ ((\(CFloat a) -> a) primitiveOverestimationSize) ((\(CFloat a) -> a) maxExtraPrimitiveOverestimationSize) ((\(CFloat a) -> a) extraPrimitiveOverestimationSizeGranularity) (bool32ToBool primitiveUnderestimation) (bool32ToBool conservativePointAndLineRasterization) (bool32ToBool degenerateTrianglesRasterized) (bool32ToBool degenerateLinesRasterized) (bool32ToBool fullyCoveredFragmentShaderInputVariable) (bool32ToBool conservativeRasterizationPostDepthCoverage)++instance Storable PhysicalDeviceConservativeRasterizationPropertiesEXT where sizeOf ~_ = 56 alignment ~_ = 8- peek ptr = VkPhysicalDeviceConservativeRasterizationPropertiesEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 48)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceConservativeRasterizationPropertiesEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceConservativeRasterizationPropertiesEXT))- *> poke (ptr `plusPtr` 16) (vkPrimitiveOverestimationSize (poked :: VkPhysicalDeviceConservativeRasterizationPropertiesEXT))- *> poke (ptr `plusPtr` 20) (vkMaxExtraPrimitiveOverestimationSize (poked :: VkPhysicalDeviceConservativeRasterizationPropertiesEXT))- *> poke (ptr `plusPtr` 24) (vkExtraPrimitiveOverestimationSizeGranularity (poked :: VkPhysicalDeviceConservativeRasterizationPropertiesEXT))- *> poke (ptr `plusPtr` 28) (vkPrimitiveUnderestimation (poked :: VkPhysicalDeviceConservativeRasterizationPropertiesEXT))- *> poke (ptr `plusPtr` 32) (vkConservativePointAndLineRasterization (poked :: VkPhysicalDeviceConservativeRasterizationPropertiesEXT))- *> poke (ptr `plusPtr` 36) (vkDegenerateTrianglesRasterized (poked :: VkPhysicalDeviceConservativeRasterizationPropertiesEXT))- *> poke (ptr `plusPtr` 40) (vkDegenerateLinesRasterized (poked :: VkPhysicalDeviceConservativeRasterizationPropertiesEXT))- *> poke (ptr `plusPtr` 44) (vkFullyCoveredFragmentShaderInputVariable (poked :: VkPhysicalDeviceConservativeRasterizationPropertiesEXT))- *> poke (ptr `plusPtr` 48) (vkConservativeRasterizationPostDepthCoverage (poked :: VkPhysicalDeviceConservativeRasterizationPropertiesEXT))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceConservativeRasterizationPropertiesEXT where+ zero = PhysicalDeviceConservativeRasterizationPropertiesEXT+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero++ -- | VkPipelineRasterizationConservativeStateCreateInfoEXT - Structure -- specifying conservative raster state ----- == Valid Usage+-- == Valid Usage (Implicit) ----- - @extraPrimitiveOverestimationSize@ /must/ be in the range of @0.0@--- to--- @VkPhysicalDeviceConservativeRasterizationPropertiesEXT@::@maxExtraPrimitiveOverestimationSize@--- inclusive+-- = See Also ----- == Valid Usage (Implicit)+-- 'ConservativeRasterizationModeEXT',+-- 'PipelineRasterizationConservativeStateCreateFlagsEXT',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineRasterizationConservativeStateCreateInfoEXT = PipelineRasterizationConservativeStateCreateInfoEXT+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+ flags :: PipelineRasterizationConservativeStateCreateFlagsEXT+ , -- | @conservativeRasterizationMode@ /must/ be a valid+ -- 'ConservativeRasterizationModeEXT' value+ conservativeRasterizationMode :: ConservativeRasterizationModeEXT+ , -- | @extraPrimitiveOverestimationSize@ /must/ be in the range of @0.0@ to+ -- 'PhysicalDeviceConservativeRasterizationPropertiesEXT'::@maxExtraPrimitiveOverestimationSize@+ -- inclusive+ extraPrimitiveOverestimationSize :: Float+ }+ deriving (Typeable)+deriving instance Show PipelineRasterizationConservativeStateCreateInfoEXT++instance ToCStruct PipelineRasterizationConservativeStateCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineRasterizationConservativeStateCreateInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr PipelineRasterizationConservativeStateCreateFlagsEXT)) (flags)+ poke ((p `plusPtr` 20 :: Ptr ConservativeRasterizationModeEXT)) (conservativeRasterizationMode)+ poke ((p `plusPtr` 24 :: Ptr CFloat)) (CFloat (extraPrimitiveOverestimationSize))+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 20 :: Ptr ConservativeRasterizationModeEXT)) (zero)+ poke ((p `plusPtr` 24 :: Ptr CFloat)) (CFloat (zero))+ f++instance FromCStruct PipelineRasterizationConservativeStateCreateInfoEXT where+ peekCStruct p = do+ flags <- peek @PipelineRasterizationConservativeStateCreateFlagsEXT ((p `plusPtr` 16 :: Ptr PipelineRasterizationConservativeStateCreateFlagsEXT))+ conservativeRasterizationMode <- peek @ConservativeRasterizationModeEXT ((p `plusPtr` 20 :: Ptr ConservativeRasterizationModeEXT))+ extraPrimitiveOverestimationSize <- peek @CFloat ((p `plusPtr` 24 :: Ptr CFloat))+ pure $ PipelineRasterizationConservativeStateCreateInfoEXT+ flags conservativeRasterizationMode ((\(CFloat a) -> a) extraPrimitiveOverestimationSize)++instance Storable PipelineRasterizationConservativeStateCreateInfoEXT where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineRasterizationConservativeStateCreateInfoEXT where+ zero = PipelineRasterizationConservativeStateCreateInfoEXT+ zero+ zero+ zero+++-- | VkPipelineRasterizationConservativeStateCreateFlagsEXT - Reserved for+-- future use ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT@+-- = Description ----- - @flags@ /must/ be @0@+-- 'PipelineRasterizationConservativeStateCreateFlagsEXT' is a bitmask type+-- for setting a mask, but is currently reserved for future use. ----- - @conservativeRasterizationMode@ /must/ be a valid--- 'VkConservativeRasterizationModeEXT' value+-- = See Also --+-- 'PipelineRasterizationConservativeStateCreateInfoEXT'+newtype PipelineRasterizationConservativeStateCreateFlagsEXT = PipelineRasterizationConservativeStateCreateFlagsEXT Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show PipelineRasterizationConservativeStateCreateFlagsEXT where+ showsPrec p = \case+ PipelineRasterizationConservativeStateCreateFlagsEXT x -> showParen (p >= 11) (showString "PipelineRasterizationConservativeStateCreateFlagsEXT 0x" . showHex x)++instance Read PipelineRasterizationConservativeStateCreateFlagsEXT where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "PipelineRasterizationConservativeStateCreateFlagsEXT")+ v <- step readPrec+ pure (PipelineRasterizationConservativeStateCreateFlagsEXT v)))+++-- | VkConservativeRasterizationModeEXT - Specify the conservative+-- rasterization mode+-- -- = See Also ----- 'VkConservativeRasterizationModeEXT',--- 'VkPipelineRasterizationConservativeStateCreateFlagsEXT',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineRasterizationConservativeStateCreateInfoEXT = VkPipelineRasterizationConservativeStateCreateInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkPipelineRasterizationConservativeStateCreateFlagsEXT- , -- | @conservativeRasterizationMode@ is the conservative rasterization mode- -- to use.- vkConservativeRasterizationMode :: VkConservativeRasterizationModeEXT- , -- | @extraPrimitiveOverestimationSize@ is the extra size in pixels to- -- increase the generating primitive during conservative rasterization at- -- each of its edges in @X@ and @Y@ equally in screen space beyond the base- -- overestimation specified in- -- @VkPhysicalDeviceConservativeRasterizationPropertiesEXT@::@primitiveOverestimationSize@.- vkExtraPrimitiveOverestimationSize :: CFloat- }- deriving (Eq, Show)+-- 'PipelineRasterizationConservativeStateCreateInfoEXT'+newtype ConservativeRasterizationModeEXT = ConservativeRasterizationModeEXT Int32+ deriving newtype (Eq, Ord, Storable, Zero) -instance Storable VkPipelineRasterizationConservativeStateCreateInfoEXT where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkPipelineRasterizationConservativeStateCreateInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineRasterizationConservativeStateCreateInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineRasterizationConservativeStateCreateInfoEXT))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineRasterizationConservativeStateCreateInfoEXT))- *> poke (ptr `plusPtr` 20) (vkConservativeRasterizationMode (poked :: VkPipelineRasterizationConservativeStateCreateInfoEXT))- *> poke (ptr `plusPtr` 24) (vkExtraPrimitiveOverestimationSize (poked :: VkPipelineRasterizationConservativeStateCreateInfoEXT))+-- | 'CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT' specifies that+-- conservative rasterization is disabled and rasterization proceeds as+-- normal.+pattern CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = ConservativeRasterizationModeEXT 0+-- | 'CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT' specifies that+-- conservative rasterization is enabled in overestimation mode.+pattern CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = ConservativeRasterizationModeEXT 1+-- | 'CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT' specifies that+-- conservative rasterization is enabled in underestimation mode.+pattern CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = ConservativeRasterizationModeEXT 2+{-# complete CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT,+ CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,+ CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT :: ConservativeRasterizationModeEXT #-}++instance Show ConservativeRasterizationModeEXT where+ showsPrec p = \case+ CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT -> showString "CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT"+ CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT -> showString "CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT"+ CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT -> showString "CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT"+ ConservativeRasterizationModeEXT x -> showParen (p >= 11) (showString "ConservativeRasterizationModeEXT " . showsPrec 11 x)++instance Read ConservativeRasterizationModeEXT where+ readPrec = parens (choose [("CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT", pure CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT)+ , ("CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT", pure CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT)+ , ("CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT", pure CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT)]+ ++++ prec 10 (do+ expectP (Ident "ConservativeRasterizationModeEXT")+ v <- step readPrec+ pure (ConservativeRasterizationModeEXT v)))+++type EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION"+pattern EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1+++type EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization"++-- No documentation found for TopLevel "VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME"+pattern EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization ( PhysicalDeviceConservativeRasterizationPropertiesEXT+ , PipelineRasterizationConservativeStateCreateInfoEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceConservativeRasterizationPropertiesEXT++instance ToCStruct PhysicalDeviceConservativeRasterizationPropertiesEXT+instance Show PhysicalDeviceConservativeRasterizationPropertiesEXT++instance FromCStruct PhysicalDeviceConservativeRasterizationPropertiesEXT+++data PipelineRasterizationConservativeStateCreateInfoEXT++instance ToCStruct PipelineRasterizationConservativeStateCreateInfoEXT+instance Show PipelineRasterizationConservativeStateCreateInfoEXT++instance FromCStruct PipelineRasterizationConservativeStateCreateInfoEXT+
src/Graphics/Vulkan/Extensions/VK_EXT_debug_marker.hs view
@@ -1,100 +1,99 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_EXT_debug_marker- ( pattern VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT- , pattern VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT- , pattern VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT- , pattern VK_EXT_DEBUG_MARKER_SPEC_VERSION- , pattern VK_EXT_DEBUG_MARKER_EXTENSION_NAME- , vkDebugMarkerSetObjectNameEXT- , vkDebugMarkerSetObjectTagEXT- , vkCmdDebugMarkerBeginEXT- , vkCmdDebugMarkerEndEXT- , vkCmdDebugMarkerInsertEXT- , VkDebugMarkerObjectNameInfoEXT(..)- , VkDebugMarkerObjectTagInfoEXT(..)- , VkDebugMarkerMarkerInfoEXT(..)- ) where--import Data.String- ( IsString- )-import Data.Vector.Storable.Sized- ( Vector- )-import Data.Word- ( Word64- )-import Foreign.C.Types- ( CChar(..)- , CFloat(..)- , CSize(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- )-import Graphics.Vulkan.Core10.Queue- ( VkCommandBuffer- )-import Graphics.Vulkan.Extensions.VK_EXT_debug_report- ( VkDebugReportObjectTypeEXT(..)- )+module Graphics.Vulkan.Extensions.VK_EXT_debug_marker ( debugMarkerSetObjectNameEXT+ , debugMarkerSetObjectTagEXT+ , cmdDebugMarkerBeginEXT+ , cmdDebugMarkerEndEXT+ , cmdDebugMarkerInsertEXT+ , DebugMarkerObjectNameInfoEXT(..)+ , DebugMarkerObjectTagInfoEXT(..)+ , DebugMarkerMarkerInfoEXT(..)+ , EXT_DEBUG_MARKER_SPEC_VERSION+ , pattern EXT_DEBUG_MARKER_SPEC_VERSION+ , EXT_DEBUG_MARKER_EXTENSION_NAME+ , pattern EXT_DEBUG_MARKER_EXTENSION_NAME+ , DebugReportObjectTypeEXT(..)+ ) where +import Foreign.Marshal.Alloc (allocaBytesAligned)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.ByteString (packCString)+import Data.ByteString (useAsCString)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CFloat(CFloat))+import Foreign.C.Types (CSize)+import Foreign.C.Types (CSize(CSize))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word64)+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import qualified Data.Vector.Storable.Sized (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdDebugMarkerBeginEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdDebugMarkerEndEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdDebugMarkerInsertEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDebugMarkerSetObjectNameEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDebugMarkerSetObjectTagEXT))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDebugMarkerSetObjectNameEXT+ :: FunPtr (Ptr Device_T -> Ptr DebugMarkerObjectNameInfoEXT -> IO Result) -> Ptr Device_T -> Ptr DebugMarkerObjectNameInfoEXT -> IO Result --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT"-pattern VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = VkStructureType 1000022000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT"-pattern VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = VkStructureType 1000022001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT"-pattern VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = VkStructureType 1000022002--- No documentation found for TopLevel "VK_EXT_DEBUG_MARKER_SPEC_VERSION"-pattern VK_EXT_DEBUG_MARKER_SPEC_VERSION :: Integral a => a-pattern VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4--- No documentation found for TopLevel "VK_EXT_DEBUG_MARKER_EXTENSION_NAME"-pattern VK_EXT_DEBUG_MARKER_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" -- | vkDebugMarkerSetObjectNameEXT - Give a user-friendly name to an object -- -- = Parameters ----- - @device@ is the device that created the object.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the device that created+-- the object. ----- - @pNameInfo@ is a pointer to an instance of the--- 'VkDebugMarkerObjectNameInfoEXT' structure specifying the parameters--- of the name to set on the object.+-- - @pNameInfo@ is a pointer to a 'DebugMarkerObjectNameInfoEXT'+-- structure specifying the parameters of the name to set on the+-- object. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle -- -- - @pNameInfo@ /must/ be a valid pointer to a valid--- @VkDebugMarkerObjectNameInfoEXT@ structure+-- 'DebugMarkerObjectNameInfoEXT' structure -- -- == Host Synchronization --@@ -102,39 +101,51 @@ -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'VkDebugMarkerObjectNameInfoEXT',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'+-- 'DebugMarkerObjectNameInfoEXT', 'Graphics.Vulkan.Core10.Handles.Device'+debugMarkerSetObjectNameEXT :: Device -> DebugMarkerObjectNameInfoEXT -> IO ()+debugMarkerSetObjectNameEXT device nameInfo = evalContT $ do+ let vkDebugMarkerSetObjectNameEXT' = mkVkDebugMarkerSetObjectNameEXT (pVkDebugMarkerSetObjectNameEXT (deviceCmds (device :: Device)))+ pNameInfo <- ContT $ withCStruct (nameInfo)+ r <- lift $ vkDebugMarkerSetObjectNameEXT' (deviceHandle (device)) pNameInfo+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkDebugMarkerSetObjectNameEXT" vkDebugMarkerSetObjectNameEXT :: ("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugMarkerObjectNameInfoEXT) -> IO VkResult+ "dynamic" mkVkDebugMarkerSetObjectTagEXT+ :: FunPtr (Ptr Device_T -> Ptr DebugMarkerObjectTagInfoEXT -> IO Result) -> Ptr Device_T -> Ptr DebugMarkerObjectTagInfoEXT -> IO Result+ -- | vkDebugMarkerSetObjectTagEXT - Attach arbitrary data to an object -- -- = Parameters ----- - @device@ is the device that created the object.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the device that created+-- the object. ----- - @pTagInfo@ is a pointer to an instance of the--- 'VkDebugMarkerObjectTagInfoEXT' structure specifying the parameters--- of the tag to attach to the object.+-- - @pTagInfo@ is a pointer to a 'DebugMarkerObjectTagInfoEXT' structure+-- specifying the parameters of the tag to attach to the object. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle -- -- - @pTagInfo@ /must/ be a valid pointer to a valid--- @VkDebugMarkerObjectTagInfoEXT@ structure+-- 'DebugMarkerObjectTagInfoEXT' structure -- -- == Host Synchronization --@@ -142,79 +153,101 @@ -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'VkDebugMarkerObjectTagInfoEXT',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'+-- 'DebugMarkerObjectTagInfoEXT', 'Graphics.Vulkan.Core10.Handles.Device'+debugMarkerSetObjectTagEXT :: Device -> DebugMarkerObjectTagInfoEXT -> IO ()+debugMarkerSetObjectTagEXT device tagInfo = evalContT $ do+ let vkDebugMarkerSetObjectTagEXT' = mkVkDebugMarkerSetObjectTagEXT (pVkDebugMarkerSetObjectTagEXT (deviceCmds (device :: Device)))+ pTagInfo <- ContT $ withCStruct (tagInfo)+ r <- lift $ vkDebugMarkerSetObjectTagEXT' (deviceHandle (device)) pTagInfo+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkDebugMarkerSetObjectTagEXT" vkDebugMarkerSetObjectTagEXT :: ("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugMarkerObjectTagInfoEXT) -> IO VkResult+ "dynamic" mkVkCmdDebugMarkerBeginEXT+ :: FunPtr (Ptr CommandBuffer_T -> Ptr DebugMarkerMarkerInfoEXT -> IO ()) -> Ptr CommandBuffer_T -> Ptr DebugMarkerMarkerInfoEXT -> IO ()+ -- | vkCmdDebugMarkerBeginEXT - Open a command buffer marker region -- -- = Parameters ----- - @commandBuffer@ is the command buffer into which the command is--- recorded.+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded. ----- - @pMarkerInfo@ is a pointer to an instance of the--- 'VkDebugMarkerMarkerInfoEXT' structure specifying the parameters of--- the marker region to open.+-- - @pMarkerInfo@ is a pointer to a 'DebugMarkerMarkerInfoEXT' structure+-- specifying the parameters of the marker region to open. -- -- == Valid Usage (Implicit) ----- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle -- -- - @pMarkerInfo@ /must/ be a valid pointer to a valid--- @VkDebugMarkerMarkerInfoEXT@ structure+-- 'DebugMarkerMarkerInfoEXT' structure ----- - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state> ----- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations -- -- == Host Synchronization ----- - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized -- -- == Command Properties -- -- \' ----- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ -- -- = See Also ----- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'VkDebugMarkerMarkerInfoEXT'+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'DebugMarkerMarkerInfoEXT'+cmdDebugMarkerBeginEXT :: CommandBuffer -> DebugMarkerMarkerInfoEXT -> IO ()+cmdDebugMarkerBeginEXT commandBuffer markerInfo = evalContT $ do+ let vkCmdDebugMarkerBeginEXT' = mkVkCmdDebugMarkerBeginEXT (pVkCmdDebugMarkerBeginEXT (deviceCmds (commandBuffer :: CommandBuffer)))+ pMarkerInfo <- ContT $ withCStruct (markerInfo)+ lift $ vkCmdDebugMarkerBeginEXT' (commandBufferHandle (commandBuffer)) pMarkerInfo+ pure $ ()++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkCmdDebugMarkerBeginEXT" vkCmdDebugMarkerBeginEXT :: ("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ()+ "dynamic" mkVkCmdDebugMarkerEndEXT+ :: FunPtr (Ptr CommandBuffer_T -> IO ()) -> Ptr CommandBuffer_T -> IO ()+ -- | vkCmdDebugMarkerEndEXT - Close a command buffer marker region -- -- = Parameters ----- - @commandBuffer@ is the command buffer into which the command is--- recorded.+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded. -- -- = Description --@@ -222,174 +255,188 @@ -- close it in another, or otherwise split marker regions across multiple -- command buffers or multiple queue submissions. When viewed from the -- linear series of submissions to a single queue, the calls to--- @vkCmdDebugMarkerBeginEXT@ and @vkCmdDebugMarkerEndEXT@ /must/ be--- matched and balanced.+-- 'cmdDebugMarkerBeginEXT' and 'cmdDebugMarkerEndEXT' /must/ be matched+-- and balanced. -- -- == Valid Usage ----- - There /must/ be an outstanding 'vkCmdDebugMarkerBeginEXT' command--- prior to the @vkCmdDebugMarkerEndEXT@ on the queue that--- @commandBuffer@ is submitted to+-- - There /must/ be an outstanding 'cmdDebugMarkerBeginEXT' command+-- prior to the 'cmdDebugMarkerEndEXT' on the queue that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is submitted to ----- - If @commandBuffer@ is a secondary command buffer, there /must/ be an--- outstanding 'vkCmdDebugMarkerBeginEXT' command recorded to--- @commandBuffer@ that has not previously been ended by a call to--- 'vkCmdDebugMarkerEndEXT'.+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a secondary+-- command buffer, there /must/ be an outstanding+-- 'cmdDebugMarkerBeginEXT' command recorded to+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' that has not+-- previously been ended by a call to 'cmdDebugMarkerEndEXT'. -- -- == Valid Usage (Implicit) ----- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle ----- - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state> ----- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations -- -- == Host Synchronization ----- - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized -- -- == Command Properties -- -- \' ----- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ -- -- = See Also ----- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdDebugMarkerEndEXT :: CommandBuffer -> IO ()+cmdDebugMarkerEndEXT commandBuffer = do+ let vkCmdDebugMarkerEndEXT' = mkVkCmdDebugMarkerEndEXT (pVkCmdDebugMarkerEndEXT (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdDebugMarkerEndEXT' (commandBufferHandle (commandBuffer))+ pure $ ()++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkCmdDebugMarkerEndEXT" vkCmdDebugMarkerEndEXT :: ("commandBuffer" ::: VkCommandBuffer) -> IO ()+ "dynamic" mkVkCmdDebugMarkerInsertEXT+ :: FunPtr (Ptr CommandBuffer_T -> Ptr DebugMarkerMarkerInfoEXT -> IO ()) -> Ptr CommandBuffer_T -> Ptr DebugMarkerMarkerInfoEXT -> IO ()+ -- | vkCmdDebugMarkerInsertEXT - Insert a marker label into a command buffer -- -- = Parameters ----- - @commandBuffer@ is the command buffer into which the command is--- recorded.+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded. ----- - @pMarkerInfo@ is a pointer to an instance of the--- 'VkDebugMarkerMarkerInfoEXT' structure specifying the parameters of--- the marker to insert.+-- - @pMarkerInfo@ is a pointer to a 'DebugMarkerMarkerInfoEXT' structure+-- specifying the parameters of the marker to insert. -- -- == Valid Usage (Implicit) ----- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle -- -- - @pMarkerInfo@ /must/ be a valid pointer to a valid--- @VkDebugMarkerMarkerInfoEXT@ structure+-- 'DebugMarkerMarkerInfoEXT' structure ----- - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state> ----- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations -- -- == Host Synchronization ----- - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized -- -- == Command Properties -- -- \' ----- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ -- -- = See Also ----- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'VkDebugMarkerMarkerInfoEXT'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdDebugMarkerInsertEXT" vkCmdDebugMarkerInsertEXT :: ("commandBuffer" ::: VkCommandBuffer) -> ("pMarkerInfo" ::: Ptr VkDebugMarkerMarkerInfoEXT) -> IO ()+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'DebugMarkerMarkerInfoEXT'+cmdDebugMarkerInsertEXT :: CommandBuffer -> DebugMarkerMarkerInfoEXT -> IO ()+cmdDebugMarkerInsertEXT commandBuffer markerInfo = evalContT $ do+ let vkCmdDebugMarkerInsertEXT' = mkVkCmdDebugMarkerInsertEXT (pVkCmdDebugMarkerInsertEXT (deviceCmds (commandBuffer :: CommandBuffer)))+ pMarkerInfo <- ContT $ withCStruct (markerInfo)+ lift $ vkCmdDebugMarkerInsertEXT' (commandBufferHandle (commandBuffer)) pMarkerInfo+ pure $ ()++ -- | VkDebugMarkerObjectNameInfoEXT - Specify parameters of a name to give to -- an object -- -- = Description -- -- Applications /may/ change the name associated with an object simply by--- calling @vkDebugMarkerSetObjectNameEXT@ again with a new string. To--- remove a previously set name, @pObjectName@ /should/ be set to an empty--- string.------ == Valid Usage------ - @objectType@ /must/ not be @VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT@------ - @object@ /must/ not be--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'------ - @object@ /must/ be a Vulkan object of the type associated with--- @objectType@ as defined in--- [{html_spec_relative}#debug-report-object-types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#debug-report-object-types).+-- calling 'debugMarkerSetObjectNameEXT' again with a new string. To remove+-- a previously set name, @pObjectName@ /should/ be set to an empty string. -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT@------ - @pNext@ /must/ be @NULL@------ - @objectType@ /must/ be a valid--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.VkDebugReportObjectTypeEXT'--- value------ - @pObjectName@ /must/ be a null-terminated UTF-8 string--- -- = See Also ----- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.VkDebugReportObjectTypeEXT',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkDebugMarkerSetObjectNameEXT'-data VkDebugMarkerObjectNameInfoEXT = VkDebugMarkerObjectNameInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @objectType@ is a- -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.VkDebugReportObjectTypeEXT'- -- specifying the type of the object to be named.- vkObjectType :: VkDebugReportObjectTypeEXT- , -- | @object@ is the object to be named.- vkObject :: Word64- , -- | @pObjectName@ is a null-terminated UTF-8 string specifying the name to- -- apply to @object@.- vkPObjectName :: Ptr CChar+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'debugMarkerSetObjectNameEXT'+data DebugMarkerObjectNameInfoEXT = DebugMarkerObjectNameInfoEXT+ { -- | 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' /must/ be a valid+ -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT'+ -- value+ objectType :: DebugReportObjectTypeEXT+ , -- | @object@ /must/ be a Vulkan object of the type associated with+ -- 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' as defined in+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-types>.+ object :: Word64+ , -- | @pObjectName@ /must/ be a null-terminated UTF-8 string+ objectName :: ByteString }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show DebugMarkerObjectNameInfoEXT -instance Storable VkDebugMarkerObjectNameInfoEXT where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkDebugMarkerObjectNameInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDebugMarkerObjectNameInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDebugMarkerObjectNameInfoEXT))- *> poke (ptr `plusPtr` 16) (vkObjectType (poked :: VkDebugMarkerObjectNameInfoEXT))- *> poke (ptr `plusPtr` 24) (vkObject (poked :: VkDebugMarkerObjectNameInfoEXT))- *> poke (ptr `plusPtr` 32) (vkPObjectName (poked :: VkDebugMarkerObjectNameInfoEXT))+instance ToCStruct DebugMarkerObjectNameInfoEXT where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DebugMarkerObjectNameInfoEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr DebugReportObjectTypeEXT)) (objectType)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word64)) (object)+ pObjectName'' <- ContT $ useAsCString (objectName)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CChar))) pObjectName''+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr DebugReportObjectTypeEXT)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)+ pObjectName'' <- ContT $ useAsCString (mempty)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CChar))) pObjectName''+ lift $ f++instance FromCStruct DebugMarkerObjectNameInfoEXT where+ peekCStruct p = do+ objectType <- peek @DebugReportObjectTypeEXT ((p `plusPtr` 16 :: Ptr DebugReportObjectTypeEXT))+ object <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))+ pObjectName <- packCString =<< peek ((p `plusPtr` 32 :: Ptr (Ptr CChar)))+ pure $ DebugMarkerObjectNameInfoEXT+ objectType object pObjectName++instance Zero DebugMarkerObjectNameInfoEXT where+ zero = DebugMarkerObjectNameInfoEXT+ zero+ zero+ mempty++ -- | VkDebugMarkerObjectTagInfoEXT - Specify parameters of a tag to attach to -- an object --@@ -399,114 +446,152 @@ -- being tagged. This can be used by debugging layers to easily filter for -- only data that can be used by that implementation. ----- == Valid Usage------ - @objectType@ /must/ not be @VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT@------ - @object@ /must/ not be--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'------ - @object@ /must/ be a Vulkan object of the type associated with--- @objectType@ as defined in--- [{html_spec_relative}#debug-report-object-types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#debug-report-object-types).--- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT@------ - @pNext@ /must/ be @NULL@------ - @objectType@ /must/ be a valid--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.VkDebugReportObjectTypeEXT'--- value------ - @pTag@ /must/ be a valid pointer to an array of @tagSize@ bytes------ - @tagSize@ /must/ be greater than @0@--- -- = See Also ----- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.VkDebugReportObjectTypeEXT',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkDebugMarkerSetObjectTagEXT'-data VkDebugMarkerObjectTagInfoEXT = VkDebugMarkerObjectTagInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @objectType@ is a- -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.VkDebugReportObjectTypeEXT'- -- specifying the type of the object to be named.- vkObjectType :: VkDebugReportObjectTypeEXT- , -- | @object@ is the object to be tagged.- vkObject :: Word64+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'debugMarkerSetObjectTagEXT'+data DebugMarkerObjectTagInfoEXT = DebugMarkerObjectTagInfoEXT+ { -- | 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' /must/ be a valid+ -- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.DebugReportObjectTypeEXT'+ -- value+ objectType :: DebugReportObjectTypeEXT+ , -- | @object@ /must/ be a Vulkan object of the type associated with+ -- 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' as defined in+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-types>.+ object :: Word64 , -- | @tagName@ is a numerical identifier of the tag.- vkTagName :: Word64- , -- | @tagSize@ is the number of bytes of data to attach to the object.- vkTagSize :: CSize- , -- | @pTag@ is an array of @tagSize@ bytes containing the data to be- -- associated with the object.- vkPTag :: Ptr ()+ tagName :: Word64+ , -- | @tagSize@ /must/ be greater than @0@+ tagSize :: Word64+ , -- | @pTag@ /must/ be a valid pointer to an array of @tagSize@ bytes+ tag :: Ptr () }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show DebugMarkerObjectTagInfoEXT -instance Storable VkDebugMarkerObjectTagInfoEXT where+instance ToCStruct DebugMarkerObjectTagInfoEXT where+ withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DebugMarkerObjectTagInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DebugReportObjectTypeEXT)) (objectType)+ poke ((p `plusPtr` 24 :: Ptr Word64)) (object)+ poke ((p `plusPtr` 32 :: Ptr Word64)) (tagName)+ poke ((p `plusPtr` 40 :: Ptr CSize)) (CSize (tagSize))+ poke ((p `plusPtr` 48 :: Ptr (Ptr ()))) (tag)+ f+ cStructSize = 56+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DebugReportObjectTypeEXT)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)+ poke ((p `plusPtr` 32 :: Ptr Word64)) (zero)+ poke ((p `plusPtr` 40 :: Ptr CSize)) (CSize (zero))+ poke ((p `plusPtr` 48 :: Ptr (Ptr ()))) (zero)+ f++instance FromCStruct DebugMarkerObjectTagInfoEXT where+ peekCStruct p = do+ objectType <- peek @DebugReportObjectTypeEXT ((p `plusPtr` 16 :: Ptr DebugReportObjectTypeEXT))+ object <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))+ tagName <- peek @Word64 ((p `plusPtr` 32 :: Ptr Word64))+ tagSize <- peek @CSize ((p `plusPtr` 40 :: Ptr CSize))+ pTag <- peek @(Ptr ()) ((p `plusPtr` 48 :: Ptr (Ptr ())))+ pure $ DebugMarkerObjectTagInfoEXT+ objectType object tagName ((\(CSize a) -> a) tagSize) pTag++instance Storable DebugMarkerObjectTagInfoEXT where sizeOf ~_ = 56 alignment ~_ = 8- peek ptr = VkDebugMarkerObjectTagInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDebugMarkerObjectTagInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDebugMarkerObjectTagInfoEXT))- *> poke (ptr `plusPtr` 16) (vkObjectType (poked :: VkDebugMarkerObjectTagInfoEXT))- *> poke (ptr `plusPtr` 24) (vkObject (poked :: VkDebugMarkerObjectTagInfoEXT))- *> poke (ptr `plusPtr` 32) (vkTagName (poked :: VkDebugMarkerObjectTagInfoEXT))- *> poke (ptr `plusPtr` 40) (vkTagSize (poked :: VkDebugMarkerObjectTagInfoEXT))- *> poke (ptr `plusPtr` 48) (vkPTag (poked :: VkDebugMarkerObjectTagInfoEXT))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DebugMarkerObjectTagInfoEXT where+ zero = DebugMarkerObjectTagInfoEXT+ zero+ zero+ zero+ zero+ zero++ -- | VkDebugMarkerMarkerInfoEXT - Specify parameters of a command buffer -- marker region -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT@------ - @pNext@ /must/ be @NULL@------ - @pMarkerName@ /must/ be a null-terminated UTF-8 string--- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkCmdDebugMarkerBeginEXT', 'vkCmdDebugMarkerInsertEXT'-data VkDebugMarkerMarkerInfoEXT = VkDebugMarkerMarkerInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @pMarkerName@ is a pointer to a null-terminated UTF-8 string that- -- contains the name of the marker.- vkPMarkerName :: Ptr CChar+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'cmdDebugMarkerBeginEXT', 'cmdDebugMarkerInsertEXT'+data DebugMarkerMarkerInfoEXT = DebugMarkerMarkerInfoEXT+ { -- | @pMarkerName@ /must/ be a null-terminated UTF-8 string+ markerName :: ByteString , -- | @color@ is an /optional/ RGBA color value that can be associated with- -- the marker. A particular implementation /may/ choose to ignore this- -- color value. The values contain RGBA values in order, in the range 0.0- -- to 1.0. If all elements in @color@ are set to 0.0 then it is ignored.- vkColor :: Vector 4 CFloat+ -- the marker. A particular implementation /may/ choose to ignore this+ -- color value. The values contain RGBA values in order, in the range 0.0+ -- to 1.0. If all elements in @color@ are set to 0.0 then it is ignored.+ color :: (Float, Float, Float, Float) }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show DebugMarkerMarkerInfoEXT -instance Storable VkDebugMarkerMarkerInfoEXT where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkDebugMarkerMarkerInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDebugMarkerMarkerInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDebugMarkerMarkerInfoEXT))- *> poke (ptr `plusPtr` 16) (vkPMarkerName (poked :: VkDebugMarkerMarkerInfoEXT))- *> poke (ptr `plusPtr` 24) (vkColor (poked :: VkDebugMarkerMarkerInfoEXT))+instance ToCStruct DebugMarkerMarkerInfoEXT where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DebugMarkerMarkerInfoEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pMarkerName'' <- ContT $ useAsCString (markerName)+ lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CChar))) pMarkerName''+ let pColor' = lowerArrayPtr ((p `plusPtr` 24 :: Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat)))+ lift $ case (color) of+ (e0, e1, e2, e3) -> do+ poke (pColor' :: Ptr CFloat) (CFloat (e0))+ poke (pColor' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+ poke (pColor' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))+ poke (pColor' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pMarkerName'' <- ContT $ useAsCString (mempty)+ lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CChar))) pMarkerName''+ lift $ f++instance FromCStruct DebugMarkerMarkerInfoEXT where+ peekCStruct p = do+ pMarkerName <- packCString =<< peek ((p `plusPtr` 16 :: Ptr (Ptr CChar)))+ let pcolor = lowerArrayPtr @CFloat ((p `plusPtr` 24 :: Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat)))+ color0 <- peek @CFloat ((pcolor `advancePtrBytes` 0 :: Ptr CFloat))+ color1 <- peek @CFloat ((pcolor `advancePtrBytes` 4 :: Ptr CFloat))+ color2 <- peek @CFloat ((pcolor `advancePtrBytes` 8 :: Ptr CFloat))+ color3 <- peek @CFloat ((pcolor `advancePtrBytes` 12 :: Ptr CFloat))+ pure $ DebugMarkerMarkerInfoEXT+ pMarkerName ((((\(CFloat a) -> a) color0), ((\(CFloat a) -> a) color1), ((\(CFloat a) -> a) color2), ((\(CFloat a) -> a) color3)))++instance Zero DebugMarkerMarkerInfoEXT where+ zero = DebugMarkerMarkerInfoEXT+ mempty+ (zero, zero, zero, zero)+++type EXT_DEBUG_MARKER_SPEC_VERSION = 4++-- No documentation found for TopLevel "VK_EXT_DEBUG_MARKER_SPEC_VERSION"+pattern EXT_DEBUG_MARKER_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_DEBUG_MARKER_SPEC_VERSION = 4+++type EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker"++-- No documentation found for TopLevel "VK_EXT_DEBUG_MARKER_EXTENSION_NAME"+pattern EXT_DEBUG_MARKER_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_debug_marker.hs-boot view
@@ -0,0 +1,32 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_debug_marker ( DebugMarkerMarkerInfoEXT+ , DebugMarkerObjectNameInfoEXT+ , DebugMarkerObjectTagInfoEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data DebugMarkerMarkerInfoEXT++instance ToCStruct DebugMarkerMarkerInfoEXT+instance Show DebugMarkerMarkerInfoEXT++instance FromCStruct DebugMarkerMarkerInfoEXT+++data DebugMarkerObjectNameInfoEXT++instance ToCStruct DebugMarkerObjectNameInfoEXT+instance Show DebugMarkerObjectNameInfoEXT++instance FromCStruct DebugMarkerObjectNameInfoEXT+++data DebugMarkerObjectTagInfoEXT++instance ToCStruct DebugMarkerObjectTagInfoEXT+instance Show DebugMarkerObjectTagInfoEXT++instance FromCStruct DebugMarkerObjectTagInfoEXT+
src/Graphics/Vulkan/Extensions/VK_EXT_debug_report.hs view
@@ -1,846 +1,880 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_EXT_debug_report- ( VkDebugReportObjectTypeEXT(..)- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT- , VkDebugReportFlagBitsEXT(..)- , pattern VK_DEBUG_REPORT_INFORMATION_BIT_EXT- , pattern VK_DEBUG_REPORT_WARNING_BIT_EXT- , pattern VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT- , pattern VK_DEBUG_REPORT_ERROR_BIT_EXT- , pattern VK_DEBUG_REPORT_DEBUG_BIT_EXT- , pattern VK_ERROR_VALIDATION_FAILED_EXT- , pattern VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT- , pattern VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT- , pattern VK_EXT_DEBUG_REPORT_SPEC_VERSION- , pattern VK_EXT_DEBUG_REPORT_EXTENSION_NAME- , pattern VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT- , PFN_vkDebugReportCallbackEXT- , VkDebugReportCallbackEXT- , vkCreateDebugReportCallbackEXT- , vkDestroyDebugReportCallbackEXT- , vkDebugReportMessageEXT- , VkDebugReportCallbackCreateInfoEXT(..)- , VkDebugReportFlagsEXT- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Int- ( Int32- )-import Data.String- ( IsString- )-import Data.Word- ( Word64- )-import Foreign.C.Types- ( CChar(..)- , CSize(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkObjectType(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkInstance- )----- ** VkDebugReportObjectTypeEXT---- | VkDebugReportObjectTypeEXT - Specify the type of an object handle------ = Description------ \'------ +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | 'VkDebugReportObjectTypeEXT' | Vulkan Handle Type |--- +==================================================================+=====================================================================================================+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT@ | Unknown\/Undefined Handle |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT@ | 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT@ | 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT@ | 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT@ | 'Graphics.Vulkan.Core10.Queue.VkQueue' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT@ | 'Graphics.Vulkan.Core10.Queue.VkSemaphore' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT@ | 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT@ | 'Graphics.Vulkan.Core10.Queue.VkFence' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT@ | 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT@ | 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT@ | 'Graphics.Vulkan.Core10.MemoryManagement.VkImage' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT@ | 'Graphics.Vulkan.Core10.Event.VkEvent' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT@ | 'Graphics.Vulkan.Core10.Query.VkQueryPool' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT@ | 'Graphics.Vulkan.Core10.BufferView.VkBufferView' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT@ | 'Graphics.Vulkan.Core10.ImageView.VkImageView' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT@ | 'Graphics.Vulkan.Core10.Shader.VkShaderModule' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT@ | 'Graphics.Vulkan.Core10.PipelineCache.VkPipelineCache' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT@ | 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT@ | 'Graphics.Vulkan.Core10.Pipeline.VkRenderPass' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT@ | 'Graphics.Vulkan.Core10.Pipeline.VkPipeline' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT@ | 'Graphics.Vulkan.Core10.PipelineLayout.VkDescriptorSetLayout' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT@ | 'Graphics.Vulkan.Core10.Sampler.VkSampler' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT@ | 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorPool' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT@ | 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSet' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT@ | 'Graphics.Vulkan.Core10.Pass.VkFramebuffer' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT@ | 'Graphics.Vulkan.Core10.CommandPool.VkCommandPool' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT@ | 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT@ | 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainKHR' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT@ | 'VkDebugReportCallbackEXT' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT@ | 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayKHR' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT@ | 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayModeKHR' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT@ | 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkObjectTableNVX' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT@ | 'Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands.VkIndirectCommandsLayoutNVX' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+--- | @VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT@ | 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.VkDescriptorUpdateTemplate' |--- +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+------ VkDebugReportObjectTypeEXT and Vulkan Handle Relationship------ __Note__------ The primary expected use of @VK_ERROR_VALIDATION_FAILED_EXT@ is for--- validation layer testing. It is not expected that an application would--- see this error code during normal use of the validation layers.------ = See Also------ 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.VkDebugMarkerObjectNameInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.VkDebugMarkerObjectTagInfoEXT',--- 'vkDebugReportMessageEXT'-newtype VkDebugReportObjectTypeEXT = VkDebugReportObjectTypeEXT Int32- deriving (Eq, Ord, Storable)--instance Show VkDebugReportObjectTypeEXT where- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT"- showsPrec _ VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = showString "VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkDebugReportObjectTypeEXT 1000156000) = showString "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT"- showsPrec _ (VkDebugReportObjectTypeEXT 1000085000) = showString "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT"- showsPrec p (VkDebugReportObjectTypeEXT x) = showParen (p >= 11) (showString "VkDebugReportObjectTypeEXT " . showsPrec 11 x)--instance Read VkDebugReportObjectTypeEXT where- readPrec = parens ( choose [ ("VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT)- , ("VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT", pure VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT", pure (VkDebugReportObjectTypeEXT 1000156000))- , ("VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT", pure (VkDebugReportObjectTypeEXT 1000085000))- , ("VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT", pure (VkDebugReportObjectTypeEXT 1000156000))- ] +++- prec 10 (do- expectP (Ident "VkDebugReportObjectTypeEXT")- v <- step readPrec- pure (VkDebugReportObjectTypeEXT v)- )- )---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = VkDebugReportObjectTypeEXT 0---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = VkDebugReportObjectTypeEXT 1---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = VkDebugReportObjectTypeEXT 2---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = VkDebugReportObjectTypeEXT 3---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = VkDebugReportObjectTypeEXT 4---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = VkDebugReportObjectTypeEXT 5---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = VkDebugReportObjectTypeEXT 6---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = VkDebugReportObjectTypeEXT 7---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = VkDebugReportObjectTypeEXT 8---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = VkDebugReportObjectTypeEXT 9---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = VkDebugReportObjectTypeEXT 10---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = VkDebugReportObjectTypeEXT 11---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = VkDebugReportObjectTypeEXT 12---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = VkDebugReportObjectTypeEXT 13---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = VkDebugReportObjectTypeEXT 14---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = VkDebugReportObjectTypeEXT 15---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = VkDebugReportObjectTypeEXT 16---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = VkDebugReportObjectTypeEXT 17---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = VkDebugReportObjectTypeEXT 18---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = VkDebugReportObjectTypeEXT 19---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = VkDebugReportObjectTypeEXT 20---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = VkDebugReportObjectTypeEXT 21---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = VkDebugReportObjectTypeEXT 22---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = VkDebugReportObjectTypeEXT 23---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = VkDebugReportObjectTypeEXT 24---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = VkDebugReportObjectTypeEXT 25---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = VkDebugReportObjectTypeEXT 26---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = VkDebugReportObjectTypeEXT 27---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = VkDebugReportObjectTypeEXT 28---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = VkDebugReportObjectTypeEXT 29---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = VkDebugReportObjectTypeEXT 30---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = VkDebugReportObjectTypeEXT 31---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = VkDebugReportObjectTypeEXT 32---- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = VkDebugReportObjectTypeEXT 33--- ** VkDebugReportFlagBitsEXT---- | VkDebugReportFlagBitsEXT - Bitmask specifying events which cause a debug--- report callback------ = See Also------ 'VkDebugReportFlagsEXT'-newtype VkDebugReportFlagBitsEXT = VkDebugReportFlagBitsEXT VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkDebugReportFlagBitsEXT where- showsPrec _ VK_DEBUG_REPORT_INFORMATION_BIT_EXT = showString "VK_DEBUG_REPORT_INFORMATION_BIT_EXT"- showsPrec _ VK_DEBUG_REPORT_WARNING_BIT_EXT = showString "VK_DEBUG_REPORT_WARNING_BIT_EXT"- showsPrec _ VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = showString "VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT"- showsPrec _ VK_DEBUG_REPORT_ERROR_BIT_EXT = showString "VK_DEBUG_REPORT_ERROR_BIT_EXT"- showsPrec _ VK_DEBUG_REPORT_DEBUG_BIT_EXT = showString "VK_DEBUG_REPORT_DEBUG_BIT_EXT"- showsPrec p (VkDebugReportFlagBitsEXT x) = showParen (p >= 11) (showString "VkDebugReportFlagBitsEXT " . showsPrec 11 x)--instance Read VkDebugReportFlagBitsEXT where- readPrec = parens ( choose [ ("VK_DEBUG_REPORT_INFORMATION_BIT_EXT", pure VK_DEBUG_REPORT_INFORMATION_BIT_EXT)- , ("VK_DEBUG_REPORT_WARNING_BIT_EXT", pure VK_DEBUG_REPORT_WARNING_BIT_EXT)- , ("VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT", pure VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT)- , ("VK_DEBUG_REPORT_ERROR_BIT_EXT", pure VK_DEBUG_REPORT_ERROR_BIT_EXT)- , ("VK_DEBUG_REPORT_DEBUG_BIT_EXT", pure VK_DEBUG_REPORT_DEBUG_BIT_EXT)- ] +++- prec 10 (do- expectP (Ident "VkDebugReportFlagBitsEXT")- v <- step readPrec- pure (VkDebugReportFlagBitsEXT v)- )- )---- | @VK_DEBUG_REPORT_INFORMATION_BIT_EXT@ specifies an informational message--- such as resource details that may be handy when debugging an--- application.-pattern VK_DEBUG_REPORT_INFORMATION_BIT_EXT :: VkDebugReportFlagBitsEXT-pattern VK_DEBUG_REPORT_INFORMATION_BIT_EXT = VkDebugReportFlagBitsEXT 0x00000001---- | @VK_DEBUG_REPORT_WARNING_BIT_EXT@ specifies use of Vulkan that /may/--- expose an app bug. Such cases may not be immediately harmful, such as a--- fragment shader outputting to a location with no attachment. Other cases--- /may/ point to behavior that is almost certainly bad when unintended--- such as using an image whose memory has not been filled. In general if--- you see a warning but you know that the behavior is intended\/desired,--- then simply ignore the warning.-pattern VK_DEBUG_REPORT_WARNING_BIT_EXT :: VkDebugReportFlagBitsEXT-pattern VK_DEBUG_REPORT_WARNING_BIT_EXT = VkDebugReportFlagBitsEXT 0x00000002---- | @VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT@ specifies a potentially--- non-optimal use of Vulkan, e.g. using--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdClearColorImage' when--- setting 'Graphics.Vulkan.Core10.Pass.VkAttachmentDescription'::@loadOp@--- to @VK_ATTACHMENT_LOAD_OP_CLEAR@ would have worked.-pattern VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT :: VkDebugReportFlagBitsEXT-pattern VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = VkDebugReportFlagBitsEXT 0x00000004---- | @VK_DEBUG_REPORT_ERROR_BIT_EXT@ specifies that an error that may cause--- undefined results, including an application crash.-pattern VK_DEBUG_REPORT_ERROR_BIT_EXT :: VkDebugReportFlagBitsEXT-pattern VK_DEBUG_REPORT_ERROR_BIT_EXT = VkDebugReportFlagBitsEXT 0x00000008---- | @VK_DEBUG_REPORT_DEBUG_BIT_EXT@ specifies diagnostic information from--- the implementation and layers.-pattern VK_DEBUG_REPORT_DEBUG_BIT_EXT :: VkDebugReportFlagBitsEXT-pattern VK_DEBUG_REPORT_DEBUG_BIT_EXT = VkDebugReportFlagBitsEXT 0x00000010--- No documentation found for Nested "VkResult" "VK_ERROR_VALIDATION_FAILED_EXT"-pattern VK_ERROR_VALIDATION_FAILED_EXT :: VkResult-pattern VK_ERROR_VALIDATION_FAILED_EXT = VkResult (-1000011001)--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"-pattern VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = VkStructureType 1000011000--- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT"-pattern VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT :: VkObjectType-pattern VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = VkObjectType 1000011000--- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = VkDebugReportObjectTypeEXT 1000156000--- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = VkDebugReportObjectTypeEXT 1000085000--- No documentation found for TopLevel "VK_EXT_DEBUG_REPORT_SPEC_VERSION"-pattern VK_EXT_DEBUG_REPORT_SPEC_VERSION :: Integral a => a-pattern VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9--- No documentation found for TopLevel "VK_EXT_DEBUG_REPORT_EXTENSION_NAME"-pattern VK_EXT_DEBUG_REPORT_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report"--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT"-pattern VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT--- No documentation found for TopLevel "VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT--- | PFN_vkDebugReportCallbackEXT - Application-defined debug report callback--- function------ = Parameters------ - @flags@ specifies the 'VkDebugReportFlagBitsEXT' that triggered this--- callback.------ - @objectType@ is a 'VkDebugReportObjectTypeEXT' value specifying the--- type of object being used or created at the time the event was--- triggered.------ - @object@ is the object where the issue was detected. If @objectType@--- is @VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT@, @object@ is undefined.------ - @location@ is a component (layer, driver, loader) defined value that--- specifies the /location/ of the trigger. This is an /optional/--- value.------ - @messageCode@ is a layer-defined value indicating what test--- triggered this callback.------ - @pLayerPrefix@ is a null-terminated string that is an abbreviation--- of the name of the component making the callback. @pLayerPrefix@ is--- only valid for the duration of the callback.------ - @pMessage@ is a null-terminated string detailing the trigger--- conditions. @pMessage@ is only valid for the duration of the--- callback.------ - @pUserData@ is the user data given when the--- 'VkDebugReportCallbackEXT' was created.------ = Description------ The callback /must/ not call @vkDestroyDebugReportCallbackEXT@.------ The callback returns a @VkBool32@, which is interpreted in a--- layer-specified manner. The application /should/ always return--- @VK_FALSE@. The @VK_TRUE@ value is reserved for use in layer--- development.------ @object@ /must/ be a Vulkan object or @VK_NULL_HANDLE@. If @objectType@--- is not @VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT@ and @object@ is not--- @VK_NULL_HANDLE@, @object@ /must/ be a Vulkan object of the--- corresponding type associated with @objectType@ as defined in--- [{html_spec_relative}#debug-report-object-types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#debug-report-object-types).------ = See Also------ 'VkDebugReportCallbackCreateInfoEXT'-type PFN_vkDebugReportCallbackEXT = Ptr (("flags" ::: VkDebugReportFlagsEXT) -> ("objectType" ::: VkDebugReportObjectTypeEXT) -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> ("pUserData" ::: Ptr ()) -> IO VkBool32)--- | Dummy data to tag the 'Ptr' with-data VkDebugReportCallbackEXT_T--- | VkDebugReportCallbackEXT - Opaque handle to a debug report callback--- object------ = See Also------ 'vkCreateDebugReportCallbackEXT', 'vkDestroyDebugReportCallbackEXT'-type VkDebugReportCallbackEXT = Ptr VkDebugReportCallbackEXT_T--- | vkCreateDebugReportCallbackEXT - Create a debug report callback object------ = Parameters------ - @instance@ the instance the callback will be logged on.------ - @pCreateInfo@ points to a 'VkDebugReportCallbackCreateInfoEXT'--- structure which defines the conditions under which this callback--- will be called.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ - @pCallback@ is a pointer to record the @VkDebugReportCallbackEXT@--- object created.------ == Valid Usage (Implicit)------ - @instance@ /must/ be a valid @VkInstance@ handle------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkDebugReportCallbackCreateInfoEXT@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pCallback@ /must/ be a valid pointer to a--- @VkDebugReportCallbackEXT@ handle------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'VkDebugReportCallbackCreateInfoEXT', 'VkDebugReportCallbackEXT',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateDebugReportCallbackEXT" vkCreateDebugReportCallbackEXT :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugReportCallbackCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pCallback" ::: Ptr VkDebugReportCallbackEXT) -> IO VkResult--- | vkDestroyDebugReportCallbackEXT - Destroy a debug report callback object------ = Parameters------ - @instance@ the instance where the callback was created.------ - @callback@ the @VkDebugReportCallbackEXT@ object to destroy.--- @callback@ is an externally synchronized object and /must/ not be--- used on more than one thread at a time. This means that--- @vkDestroyDebugReportCallbackEXT@ /must/ not be called when a--- callback is active.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ == Valid Usage------ - If @VkAllocationCallbacks@ were provided when @callback@ was--- created, a compatible set of callbacks /must/ be provided here------ - If no @VkAllocationCallbacks@ were provided when @callback@ was--- created, @pAllocator@ /must/ be @NULL@------ == Valid Usage (Implicit)------ - @instance@ /must/ be a valid @VkInstance@ handle------ - @callback@ /must/ be a valid @VkDebugReportCallbackEXT@ handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @callback@ /must/ have been created, allocated, or retrieved from--- @instance@------ == Host Synchronization------ - Host access to @callback@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'VkDebugReportCallbackEXT',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroyDebugReportCallbackEXT" vkDestroyDebugReportCallbackEXT :: ("instance" ::: VkInstance) -> ("callback" ::: VkDebugReportCallbackEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | vkDebugReportMessageEXT - Inject a message into a debug stream------ = Parameters------ - @instance@ is the debug stream’s @VkInstance@.------ - @flags@ specifies the 'VkDebugReportFlagBitsEXT' classification of--- this event\/message.------ - @objectType@ is a 'VkDebugReportObjectTypeEXT' specifying the type--- of object being used or created at the time the event was triggered.------ - @object@ this is the object where the issue was detected. @object@--- /can/ be @VK_NULL_HANDLE@ if there is no object associated with the--- event.------ - @location@ is an application defined value.------ - @messageCode@ is an application defined value.------ - @pLayerPrefix@ is the abbreviation of the component making this--- event\/message.------ - @pMessage@ is a null-terminated string detailing the trigger--- conditions.------ = Description------ The call will propagate through the layers and generate callback(s) as--- indicated by the message’s flags. The parameters are passed on to the--- callback in addition to the @pUserData@ value that was defined at the--- time the callback was registered.------ == Valid Usage------ - @object@ /must/ be a Vulkan object or @VK_NULL_HANDLE@------ - If @objectType@ is not @VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT@ and--- @object@ is not @VK_NULL_HANDLE@, @object@ /must/ be a Vulkan object--- of the corresponding type associated with @objectType@ as defined in--- [{html_spec_relative}#debug-report-object-types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#debug-report-object-types).------ == Valid Usage (Implicit)------ - @instance@ /must/ be a valid @VkInstance@ handle------ - @flags@ /must/ be a valid combination of 'VkDebugReportFlagBitsEXT'--- values------ - @flags@ /must/ not be @0@------ - @objectType@ /must/ be a valid 'VkDebugReportObjectTypeEXT' value------ - @pLayerPrefix@ /must/ be a null-terminated UTF-8 string------ - @pMessage@ /must/ be a null-terminated UTF-8 string------ = See Also------ 'VkDebugReportFlagsEXT', 'VkDebugReportObjectTypeEXT',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDebugReportMessageEXT" vkDebugReportMessageEXT :: ("instance" ::: VkInstance) -> ("flags" ::: VkDebugReportFlagsEXT) -> ("objectType" ::: VkDebugReportObjectTypeEXT) -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> IO ()--- | VkDebugReportCallbackCreateInfoEXT - Structure specifying parameters of--- a newly created debug report callback------ = Description------ For each @VkDebugReportCallbackEXT@ that is created the--- @VkDebugReportCallbackCreateInfoEXT@::@flags@ determine when that--- @VkDebugReportCallbackCreateInfoEXT@::@pfnCallback@ is called. When an--- event happens, the implementation will do a bitwise AND of the event’s--- 'VkDebugReportFlagBitsEXT' flags to each @VkDebugReportCallbackEXT@--- object’s flags. For each non-zero result the corresponding callback will--- be called. The callback will come directly from the component that--- detected the event, unless some other layer intercepts the calls for its--- own purposes (filter them in a different way, log to a system error log,--- etc.).------ An application /may/ receive multiple callbacks if multiple--- @VkDebugReportCallbackEXT@ objects were created. A callback will always--- be executed in the same thread as the originating Vulkan call.------ A callback may be called from multiple threads simultaneously (if the--- application is making Vulkan calls from multiple threads).------ == Valid Usage------ - @pfnCallback@ /must/ be a valid 'PFN_vkDebugReportCallbackEXT'------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT@------ - @flags@ /must/ be a valid combination of 'VkDebugReportFlagBitsEXT'--- values------ = See Also------ 'PFN_vkDebugReportCallbackEXT', 'VkDebugReportFlagsEXT',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkCreateDebugReportCallbackEXT'-data VkDebugReportCallbackCreateInfoEXT = VkDebugReportCallbackCreateInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is a bitmask of 'VkDebugReportFlagBitsEXT' specifying which- -- event(s) will cause this callback to be called.- vkFlags :: VkDebugReportFlagsEXT- , -- | @pfnCallback@ is the application callback function to call.- vkPfnCallback :: PFN_vkDebugReportCallbackEXT- , -- | @pUserData@ is user data to be passed to the callback.- vkPUserData :: Ptr ()- }- deriving (Eq, Show)--instance Storable VkDebugReportCallbackCreateInfoEXT where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkDebugReportCallbackCreateInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDebugReportCallbackCreateInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDebugReportCallbackCreateInfoEXT))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkDebugReportCallbackCreateInfoEXT))- *> poke (ptr `plusPtr` 24) (vkPfnCallback (poked :: VkDebugReportCallbackCreateInfoEXT))- *> poke (ptr `plusPtr` 32) (vkPUserData (poked :: VkDebugReportCallbackCreateInfoEXT))--- | VkDebugReportFlagsEXT - Bitmask of VkDebugReportFlagBitsEXT------ = Description------ @VkDebugReportFlagsEXT@ is a bitmask type for setting a mask of zero or--- more 'VkDebugReportFlagBitsEXT'.------ = See Also------ 'VkDebugReportCallbackCreateInfoEXT', 'VkDebugReportFlagBitsEXT',--- 'vkDebugReportMessageEXT'-type VkDebugReportFlagsEXT = VkDebugReportFlagBitsEXT+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_debug_report ( createDebugReportCallbackEXT+ , withDebugReportCallbackEXT+ , destroyDebugReportCallbackEXT+ , debugReportMessageEXT+ , pattern STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT+ , DebugReportCallbackCreateInfoEXT(..)+ , DebugReportFlagBitsEXT( DEBUG_REPORT_INFORMATION_BIT_EXT+ , DEBUG_REPORT_WARNING_BIT_EXT+ , DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT+ , DEBUG_REPORT_ERROR_BIT_EXT+ , DEBUG_REPORT_DEBUG_BIT_EXT+ , ..+ )+ , DebugReportFlagsEXT+ , DebugReportObjectTypeEXT( DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT+ , DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT+ , DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT+ , DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT+ , DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT+ , DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT+ , DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT+ , DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT+ , DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT+ , DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT+ , DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT+ , DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT+ , DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT+ , DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT+ , DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT+ , DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT+ , DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT+ , DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT+ , DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT+ , DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT+ , DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT+ , DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT+ , DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT+ , DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT+ , DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT+ , DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT+ , DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT+ , DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT+ , DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT+ , DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT+ , DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT+ , DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT+ , DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT+ , DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT+ , DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT+ , DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT+ , DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT+ , ..+ )+ , PFN_vkDebugReportCallbackEXT+ , FN_vkDebugReportCallbackEXT+ , EXT_DEBUG_REPORT_SPEC_VERSION+ , pattern EXT_DEBUG_REPORT_SPEC_VERSION+ , EXT_DEBUG_REPORT_EXTENSION_NAME+ , pattern EXT_DEBUG_REPORT_EXTENSION_NAME+ , DebugReportCallbackEXT(..)+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.ByteString (useAsCString)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Bits (Bits)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.C.Types (CChar(..))+import Foreign.C.Types (CSize)+import Foreign.C.Types (CSize(..))+import Foreign.C.Types (CSize(CSize))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word64)+import Text.Read.Lex (Lexeme(Ident))+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Extensions.Handles (DebugReportCallbackEXT)+import Graphics.Vulkan.Extensions.Handles (DebugReportCallbackEXT(..))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Instance)+import Graphics.Vulkan.Core10.Handles (Instance(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkCreateDebugReportCallbackEXT))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkDebugReportMessageEXT))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkDestroyDebugReportCallbackEXT))+import Graphics.Vulkan.Core10.Handles (Instance_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.Handles (DebugReportCallbackEXT(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateDebugReportCallbackEXT+ :: FunPtr (Ptr Instance_T -> Ptr DebugReportCallbackCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr DebugReportCallbackEXT -> IO Result) -> Ptr Instance_T -> Ptr DebugReportCallbackCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr DebugReportCallbackEXT -> IO Result++-- | vkCreateDebugReportCallbackEXT - Create a debug report callback object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' the instance the callback+-- will be logged on.+--+-- - @pCreateInfo@ is a pointer to a 'DebugReportCallbackCreateInfoEXT'+-- structure defining the conditions under which this callback will be+-- called.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pCallback@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.DebugReportCallbackEXT' handle+-- in which the created object is returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'DebugReportCallbackCreateInfoEXT' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pCallback@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.DebugReportCallbackEXT' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'DebugReportCallbackCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.Handles.DebugReportCallbackEXT',+-- 'Graphics.Vulkan.Core10.Handles.Instance'+createDebugReportCallbackEXT :: Instance -> DebugReportCallbackCreateInfoEXT -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (DebugReportCallbackEXT)+createDebugReportCallbackEXT instance' createInfo allocator = evalContT $ do+ let vkCreateDebugReportCallbackEXT' = mkVkCreateDebugReportCallbackEXT (pVkCreateDebugReportCallbackEXT (instanceCmds (instance' :: Instance)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPCallback <- ContT $ bracket (callocBytes @DebugReportCallbackEXT 8) free+ r <- lift $ vkCreateDebugReportCallbackEXT' (instanceHandle (instance')) pCreateInfo pAllocator (pPCallback)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pCallback <- lift $ peek @DebugReportCallbackEXT pPCallback+ pure $ (pCallback)++-- | A safe wrapper for 'createDebugReportCallbackEXT' and+-- 'destroyDebugReportCallbackEXT' using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withDebugReportCallbackEXT :: Instance -> DebugReportCallbackCreateInfoEXT -> Maybe AllocationCallbacks -> (DebugReportCallbackEXT -> IO r) -> IO r+withDebugReportCallbackEXT instance' debugReportCallbackCreateInfoEXT allocationCallbacks =+ bracket+ (createDebugReportCallbackEXT instance' debugReportCallbackCreateInfoEXT allocationCallbacks)+ (\o -> destroyDebugReportCallbackEXT instance' o allocationCallbacks)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDestroyDebugReportCallbackEXT+ :: FunPtr (Ptr Instance_T -> DebugReportCallbackEXT -> Ptr AllocationCallbacks -> IO ()) -> Ptr Instance_T -> DebugReportCallbackEXT -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyDebugReportCallbackEXT - Destroy a debug report callback object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' the instance where the+-- callback was created.+--+-- - @callback@ the+-- 'Graphics.Vulkan.Extensions.Handles.DebugReportCallbackEXT' object+-- to destroy. @callback@ is an externally synchronized object and+-- /must/ not be used on more than one thread at a time. This means+-- that 'destroyDebugReportCallbackEXT' /must/ not be called when a+-- callback is active.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- == Valid Usage+--+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when @callback@ was created, a compatible set of+-- callbacks /must/ be provided here+--+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when @callback@ was created, @pAllocator@ /must/ be+-- @NULL@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle+--+-- - @callback@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.DebugReportCallbackEXT' handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @callback@ /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Instance'+--+-- == Host Synchronization+--+-- - Host access to @callback@ /must/ be externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Extensions.Handles.DebugReportCallbackEXT',+-- 'Graphics.Vulkan.Core10.Handles.Instance'+destroyDebugReportCallbackEXT :: Instance -> DebugReportCallbackEXT -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyDebugReportCallbackEXT instance' callback allocator = evalContT $ do+ let vkDestroyDebugReportCallbackEXT' = mkVkDestroyDebugReportCallbackEXT (pVkDestroyDebugReportCallbackEXT (instanceCmds (instance' :: Instance)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyDebugReportCallbackEXT' (instanceHandle (instance')) (callback) pAllocator+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDebugReportMessageEXT+ :: FunPtr (Ptr Instance_T -> DebugReportFlagsEXT -> DebugReportObjectTypeEXT -> Word64 -> CSize -> Int32 -> Ptr CChar -> Ptr CChar -> IO ()) -> Ptr Instance_T -> DebugReportFlagsEXT -> DebugReportObjectTypeEXT -> Word64 -> CSize -> Int32 -> Ptr CChar -> Ptr CChar -> IO ()++-- | vkDebugReportMessageEXT - Inject a message into a debug stream+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' is the debug stream’s+-- 'Graphics.Vulkan.Core10.Handles.Instance'.+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' specifies the+-- 'DebugReportFlagBitsEXT' classification of this event\/message.+--+-- - 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' is a+-- 'DebugReportObjectTypeEXT' specifying the type of object being used+-- or created at the time the event was triggered.+--+-- - @object@ this is the object where the issue was detected. @object@+-- /can/ be 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' if there+-- is no object associated with the event.+--+-- - @location@ is an application defined value.+--+-- - @messageCode@ is an application defined value.+--+-- - @pLayerPrefix@ is the abbreviation of the component making this+-- event\/message.+--+-- - @pMessage@ is a null-terminated string detailing the trigger+-- conditions.+--+-- = Description+--+-- The call will propagate through the layers and generate callback(s) as+-- indicated by the message’s flags. The parameters are passed on to the+-- callback in addition to the @pUserData@ value that was defined at the+-- time the callback was registered.+--+-- == Valid Usage+--+-- - @object@ /must/ be a Vulkan object or+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- - If 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' is not+-- 'DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT' and @object@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @object@ /must/+-- be a Vulkan object of the corresponding type associated with+-- 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' as defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-types>.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of 'DebugReportFlagBitsEXT' values+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not be @0@+--+-- - 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' /must/ be a+-- valid 'DebugReportObjectTypeEXT' value+--+-- - @pLayerPrefix@ /must/ be a null-terminated UTF-8 string+--+-- - @pMessage@ /must/ be a null-terminated UTF-8 string+--+-- = See Also+--+-- 'DebugReportFlagsEXT', 'DebugReportObjectTypeEXT',+-- 'Graphics.Vulkan.Core10.Handles.Instance'+debugReportMessageEXT :: Instance -> DebugReportFlagsEXT -> DebugReportObjectTypeEXT -> ("object" ::: Word64) -> ("location" ::: Word64) -> ("messageCode" ::: Int32) -> ("layerPrefix" ::: ByteString) -> ("message" ::: ByteString) -> IO ()+debugReportMessageEXT instance' flags objectType object location messageCode layerPrefix message = evalContT $ do+ let vkDebugReportMessageEXT' = mkVkDebugReportMessageEXT (pVkDebugReportMessageEXT (instanceCmds (instance' :: Instance)))+ pLayerPrefix <- ContT $ useAsCString (layerPrefix)+ pMessage <- ContT $ useAsCString (message)+ lift $ vkDebugReportMessageEXT' (instanceHandle (instance')) (flags) (objectType) (object) (CSize (location)) (messageCode) pLayerPrefix pMessage+ pure $ ()+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT+++-- | VkDebugReportCallbackCreateInfoEXT - Structure specifying parameters of+-- a newly created debug report callback+--+-- = Description+--+-- For each 'Graphics.Vulkan.Extensions.Handles.DebugReportCallbackEXT'+-- that is created the+-- 'DebugReportCallbackCreateInfoEXT'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- determine when that 'DebugReportCallbackCreateInfoEXT'::@pfnCallback@ is+-- called. When an event happens, the implementation will do a bitwise AND+-- of the event’s 'DebugReportFlagBitsEXT' flags to each+-- 'Graphics.Vulkan.Extensions.Handles.DebugReportCallbackEXT' object’s+-- flags. For each non-zero result the corresponding callback will be+-- called. The callback will come directly from the component that detected+-- the event, unless some other layer intercepts the calls for its own+-- purposes (filter them in a different way, log to a system error log,+-- etc.).+--+-- An application /may/ receive multiple callbacks if multiple+-- 'Graphics.Vulkan.Extensions.Handles.DebugReportCallbackEXT' objects were+-- created. A callback will always be executed in the same thread as the+-- originating Vulkan call.+--+-- A callback may be called from multiple threads simultaneously (if the+-- application is making Vulkan calls from multiple threads).+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'PFN_vkDebugReportCallbackEXT', 'DebugReportFlagsEXT',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createDebugReportCallbackEXT'+data DebugReportCallbackCreateInfoEXT = DebugReportCallbackCreateInfoEXT+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid combination of+ -- 'DebugReportFlagBitsEXT' values+ flags :: DebugReportFlagsEXT+ , -- | @pfnCallback@ /must/ be a valid 'PFN_vkDebugReportCallbackEXT' value+ pfnCallback :: PFN_vkDebugReportCallbackEXT+ , -- | @pUserData@ is user data to be passed to the callback.+ userData :: Ptr ()+ }+ deriving (Typeable)+deriving instance Show DebugReportCallbackCreateInfoEXT++instance ToCStruct DebugReportCallbackCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DebugReportCallbackCreateInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DebugReportFlagsEXT)) (flags)+ poke ((p `plusPtr` 24 :: Ptr PFN_vkDebugReportCallbackEXT)) (pfnCallback)+ poke ((p `plusPtr` 32 :: Ptr (Ptr ()))) (userData)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 24 :: Ptr PFN_vkDebugReportCallbackEXT)) (zero)+ f++instance FromCStruct DebugReportCallbackCreateInfoEXT where+ peekCStruct p = do+ flags <- peek @DebugReportFlagsEXT ((p `plusPtr` 16 :: Ptr DebugReportFlagsEXT))+ pfnCallback <- peek @PFN_vkDebugReportCallbackEXT ((p `plusPtr` 24 :: Ptr PFN_vkDebugReportCallbackEXT))+ pUserData <- peek @(Ptr ()) ((p `plusPtr` 32 :: Ptr (Ptr ())))+ pure $ DebugReportCallbackCreateInfoEXT+ flags pfnCallback pUserData++instance Storable DebugReportCallbackCreateInfoEXT where+ sizeOf ~_ = 40+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DebugReportCallbackCreateInfoEXT where+ zero = DebugReportCallbackCreateInfoEXT+ zero+ zero+ zero+++-- | VkDebugReportFlagBitsEXT - Bitmask specifying events which cause a debug+-- report callback+--+-- = See Also+--+-- 'DebugReportFlagsEXT'+newtype DebugReportFlagBitsEXT = DebugReportFlagBitsEXT Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'DEBUG_REPORT_INFORMATION_BIT_EXT' specifies an informational message+-- such as resource details that may be handy when debugging an+-- application.+pattern DEBUG_REPORT_INFORMATION_BIT_EXT = DebugReportFlagBitsEXT 0x00000001+-- | 'DEBUG_REPORT_WARNING_BIT_EXT' specifies use of Vulkan that /may/ expose+-- an app bug. Such cases may not be immediately harmful, such as a+-- fragment shader outputting to a location with no attachment. Other cases+-- /may/ point to behavior that is almost certainly bad when unintended+-- such as using an image whose memory has not been filled. In general if+-- you see a warning but you know that the behavior is intended\/desired,+-- then simply ignore the warning.+pattern DEBUG_REPORT_WARNING_BIT_EXT = DebugReportFlagBitsEXT 0x00000002+-- | 'DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT' specifies a potentially+-- non-optimal use of Vulkan, e.g. using+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdClearColorImage' when+-- setting 'Graphics.Vulkan.Core10.Pass.AttachmentDescription'::@loadOp@ to+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'+-- would have worked.+pattern DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = DebugReportFlagBitsEXT 0x00000004+-- | 'DEBUG_REPORT_ERROR_BIT_EXT' specifies that the application has violated+-- a valid usage condition of the specification.+pattern DEBUG_REPORT_ERROR_BIT_EXT = DebugReportFlagBitsEXT 0x00000008+-- | 'DEBUG_REPORT_DEBUG_BIT_EXT' specifies diagnostic information from the+-- implementation and layers.+pattern DEBUG_REPORT_DEBUG_BIT_EXT = DebugReportFlagBitsEXT 0x00000010++type DebugReportFlagsEXT = DebugReportFlagBitsEXT++instance Show DebugReportFlagBitsEXT where+ showsPrec p = \case+ DEBUG_REPORT_INFORMATION_BIT_EXT -> showString "DEBUG_REPORT_INFORMATION_BIT_EXT"+ DEBUG_REPORT_WARNING_BIT_EXT -> showString "DEBUG_REPORT_WARNING_BIT_EXT"+ DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT -> showString "DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT"+ DEBUG_REPORT_ERROR_BIT_EXT -> showString "DEBUG_REPORT_ERROR_BIT_EXT"+ DEBUG_REPORT_DEBUG_BIT_EXT -> showString "DEBUG_REPORT_DEBUG_BIT_EXT"+ DebugReportFlagBitsEXT x -> showParen (p >= 11) (showString "DebugReportFlagBitsEXT 0x" . showHex x)++instance Read DebugReportFlagBitsEXT where+ readPrec = parens (choose [("DEBUG_REPORT_INFORMATION_BIT_EXT", pure DEBUG_REPORT_INFORMATION_BIT_EXT)+ , ("DEBUG_REPORT_WARNING_BIT_EXT", pure DEBUG_REPORT_WARNING_BIT_EXT)+ , ("DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT", pure DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT)+ , ("DEBUG_REPORT_ERROR_BIT_EXT", pure DEBUG_REPORT_ERROR_BIT_EXT)+ , ("DEBUG_REPORT_DEBUG_BIT_EXT", pure DEBUG_REPORT_DEBUG_BIT_EXT)]+ ++++ prec 10 (do+ expectP (Ident "DebugReportFlagBitsEXT")+ v <- step readPrec+ pure (DebugReportFlagBitsEXT v)))+++-- | VkDebugReportObjectTypeEXT - Specify the type of an object handle+--+-- = Description+--+-- \'+--+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DebugReportObjectTypeEXT' | Vulkan Handle Type |+-- +=============================================================+================================================================++-- | 'DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT' | Unknown\/Undefined Handle |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT' | 'Graphics.Vulkan.Core10.Handles.Instance' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT' | 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT' | 'Graphics.Vulkan.Core10.Handles.Device' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT' | 'Graphics.Vulkan.Core10.Handles.Queue' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT' | 'Graphics.Vulkan.Core10.Handles.Semaphore' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT' | 'Graphics.Vulkan.Core10.Handles.CommandBuffer' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT' | 'Graphics.Vulkan.Core10.Handles.Fence' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT' | 'Graphics.Vulkan.Core10.Handles.DeviceMemory' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT' | 'Graphics.Vulkan.Core10.Handles.Buffer' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT' | 'Graphics.Vulkan.Core10.Handles.Image' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT' | 'Graphics.Vulkan.Core10.Handles.Event' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT' | 'Graphics.Vulkan.Core10.Handles.QueryPool' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT' | 'Graphics.Vulkan.Core10.Handles.BufferView' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT' | 'Graphics.Vulkan.Core10.Handles.ImageView' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT' | 'Graphics.Vulkan.Core10.Handles.ShaderModule' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT' | 'Graphics.Vulkan.Core10.Handles.PipelineCache' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT' | 'Graphics.Vulkan.Core10.Handles.PipelineLayout' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT' | 'Graphics.Vulkan.Core10.Handles.RenderPass' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT' | 'Graphics.Vulkan.Core10.Handles.Pipeline' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT' | 'Graphics.Vulkan.Core10.Handles.DescriptorSetLayout' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT' | 'Graphics.Vulkan.Core10.Handles.Sampler' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT' | 'Graphics.Vulkan.Core10.Handles.DescriptorPool' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT' | 'Graphics.Vulkan.Core10.Handles.DescriptorSet' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT' | 'Graphics.Vulkan.Core10.Handles.Framebuffer' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT' | 'Graphics.Vulkan.Core10.Handles.CommandPool' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT' | 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT' | 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT' | 'Graphics.Vulkan.Extensions.Handles.DebugReportCallbackEXT' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT' | 'Graphics.Vulkan.Extensions.Handles.DisplayKHR' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT' | 'Graphics.Vulkan.Extensions.Handles.DisplayModeKHR' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT' | 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT' | 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++-- | 'DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT' | 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate' |+-- +-------------------------------------------------------------+----------------------------------------------------------------++--+-- VkDebugReportObjectTypeEXT and Vulkan Handle Relationship+--+-- Note+--+-- The primary expected use of+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED_EXT' is for+-- validation layer testing. It is not expected that an application would+-- see this error code during normal use of the validation layers.+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.DebugMarkerObjectNameInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_marker.DebugMarkerObjectTagInfoEXT',+-- 'debugReportMessageEXT'+newtype DebugReportObjectTypeEXT = DebugReportObjectTypeEXT Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = DebugReportObjectTypeEXT 0+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = DebugReportObjectTypeEXT 1+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = DebugReportObjectTypeEXT 2+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = DebugReportObjectTypeEXT 3+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = DebugReportObjectTypeEXT 4+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = DebugReportObjectTypeEXT 5+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = DebugReportObjectTypeEXT 6+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = DebugReportObjectTypeEXT 7+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = DebugReportObjectTypeEXT 8+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = DebugReportObjectTypeEXT 9+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = DebugReportObjectTypeEXT 10+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = DebugReportObjectTypeEXT 11+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = DebugReportObjectTypeEXT 12+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = DebugReportObjectTypeEXT 13+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = DebugReportObjectTypeEXT 14+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = DebugReportObjectTypeEXT 15+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = DebugReportObjectTypeEXT 16+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = DebugReportObjectTypeEXT 17+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = DebugReportObjectTypeEXT 18+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = DebugReportObjectTypeEXT 19+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = DebugReportObjectTypeEXT 20+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = DebugReportObjectTypeEXT 21+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = DebugReportObjectTypeEXT 22+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = DebugReportObjectTypeEXT 23+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = DebugReportObjectTypeEXT 24+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = DebugReportObjectTypeEXT 25+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = DebugReportObjectTypeEXT 26+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = DebugReportObjectTypeEXT 27+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = DebugReportObjectTypeEXT 28+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = DebugReportObjectTypeEXT 29+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = DebugReportObjectTypeEXT 30+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = DebugReportObjectTypeEXT 31+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = DebugReportObjectTypeEXT 32+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = DebugReportObjectTypeEXT 33+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = DebugReportObjectTypeEXT 1000165000+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = DebugReportObjectTypeEXT 1000156000+-- No documentation found for Nested "VkDebugReportObjectTypeEXT" "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = DebugReportObjectTypeEXT 1000085000+{-# complete DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,+ DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT,+ DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,+ DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,+ DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT,+ DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT,+ DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT,+ DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT,+ DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT,+ DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,+ DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,+ DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT,+ DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT,+ DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT,+ DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT,+ DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT,+ DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT,+ DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT,+ DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT,+ DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT,+ DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT,+ DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT,+ DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT,+ DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT,+ DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT,+ DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT,+ DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT,+ DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT,+ DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,+ DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT,+ DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT,+ DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT,+ DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT,+ DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT,+ DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT,+ DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT,+ DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT :: DebugReportObjectTypeEXT #-}++instance Show DebugReportObjectTypeEXT where+ showsPrec p = \case+ DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT"+ DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT"+ DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT"+ DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT"+ DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT"+ DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT"+ DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT"+ DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT"+ DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT"+ DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT"+ DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT"+ DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT"+ DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT"+ DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT"+ DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT"+ DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT"+ DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT"+ DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT"+ DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT"+ DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT"+ DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT"+ DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT"+ DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT"+ DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT"+ DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT"+ DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT"+ DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT"+ DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT"+ DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT"+ DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT"+ DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT"+ DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT"+ DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT"+ DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT"+ DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT"+ DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT"+ DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT -> showString "DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT"+ DebugReportObjectTypeEXT x -> showParen (p >= 11) (showString "DebugReportObjectTypeEXT " . showsPrec 11 x)++instance Read DebugReportObjectTypeEXT where+ readPrec = parens (choose [("DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT", pure DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT", pure DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT", pure DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT", pure DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT", pure DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT", pure DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT", pure DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT", pure DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT", pure DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT", pure DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT", pure DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT", pure DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT", pure DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT", pure DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT", pure DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT", pure DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT", pure DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT", pure DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT", pure DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT)+ , ("DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT", pure DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT)]+ ++++ prec 10 (do+ expectP (Ident "DebugReportObjectTypeEXT")+ v <- step readPrec+ pure (DebugReportObjectTypeEXT v)))+++type FN_vkDebugReportCallbackEXT = DebugReportFlagsEXT -> DebugReportObjectTypeEXT -> ("object" ::: Word64) -> ("location" ::: CSize) -> ("messageCode" ::: Int32) -> ("pLayerPrefix" ::: Ptr CChar) -> ("pMessage" ::: Ptr CChar) -> ("pUserData" ::: Ptr ()) -> IO Bool32+-- | PFN_vkDebugReportCallbackEXT - Application-defined debug report callback+-- function+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' specifies the+-- 'DebugReportFlagBitsEXT' that triggered this callback.+--+-- - 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' is a+-- 'DebugReportObjectTypeEXT' value specifying the type of object being+-- used or created at the time the event was triggered.+--+-- - @object@ is the object where the issue was detected. If+-- 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' is+-- 'DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT', @object@ is undefined.+--+-- - @location@ is a component (layer, driver, loader) defined value+-- specifying the /location/ of the trigger. This is an /optional/+-- value.+--+-- - @messageCode@ is a layer-defined value indicating what test+-- triggered this callback.+--+-- - @pLayerPrefix@ is a null-terminated string that is an abbreviation+-- of the name of the component making the callback. @pLayerPrefix@ is+-- only valid for the duration of the callback.+--+-- - @pMessage@ is a null-terminated string detailing the trigger+-- conditions. @pMessage@ is only valid for the duration of the+-- callback.+--+-- - @pUserData@ is the user data given when the+-- 'Graphics.Vulkan.Extensions.Handles.DebugReportCallbackEXT' was+-- created.+--+-- = Description+--+-- The callback /must/ not call 'destroyDebugReportCallbackEXT'.+--+-- The callback returns a 'Graphics.Vulkan.Core10.BaseType.Bool32', which+-- is interpreted in a layer-specified manner. The application /should/+-- always return 'Graphics.Vulkan.Core10.BaseType.FALSE'. The+-- 'Graphics.Vulkan.Core10.BaseType.TRUE' value is reserved for use in+-- layer development.+--+-- @object@ /must/ be a Vulkan object or+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'. If+-- 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' is not+-- 'DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT' and @object@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @object@ /must/ be a+-- Vulkan object of the corresponding type associated with+-- 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' as defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-types>.+--+-- = See Also+--+-- 'DebugReportCallbackCreateInfoEXT'+type PFN_vkDebugReportCallbackEXT = FunPtr FN_vkDebugReportCallbackEXT+++type EXT_DEBUG_REPORT_SPEC_VERSION = 9++-- No documentation found for TopLevel "VK_EXT_DEBUG_REPORT_SPEC_VERSION"+pattern EXT_DEBUG_REPORT_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_DEBUG_REPORT_SPEC_VERSION = 9+++type EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report"++-- No documentation found for TopLevel "VK_EXT_DEBUG_REPORT_EXTENSION_NAME"+pattern EXT_DEBUG_REPORT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_debug_report.hs-boot view
@@ -0,0 +1,25 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_debug_report ( DebugReportCallbackCreateInfoEXT+ , DebugReportFlagBitsEXT+ , DebugReportFlagsEXT+ , DebugReportObjectTypeEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data DebugReportCallbackCreateInfoEXT++instance ToCStruct DebugReportCallbackCreateInfoEXT+instance Show DebugReportCallbackCreateInfoEXT++instance FromCStruct DebugReportCallbackCreateInfoEXT+++data DebugReportFlagBitsEXT++type DebugReportFlagsEXT = DebugReportFlagBitsEXT+++data DebugReportObjectTypeEXT+
src/Graphics/Vulkan/Extensions/VK_EXT_debug_utils.hs view
@@ -1,1266 +1,1516 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_EXT_debug_utils- ( VkDebugUtilsMessageSeverityFlagBitsEXT(..)- , pattern VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT- , pattern VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT- , pattern VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT- , pattern VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT- , VkDebugUtilsMessageTypeFlagBitsEXT(..)- , pattern VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT- , pattern VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT- , pattern VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT- , VkDebugUtilsMessengerCreateFlagsEXT(..)- , VkDebugUtilsMessengerCallbackDataFlagsEXT(..)- , pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT- , pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT- , pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT- , pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT- , pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT- , pattern VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT- , pattern VK_EXT_DEBUG_UTILS_SPEC_VERSION- , pattern VK_EXT_DEBUG_UTILS_EXTENSION_NAME- , PFN_vkDebugUtilsMessengerCallbackEXT- , VkDebugUtilsMessengerEXT- , vkSetDebugUtilsObjectNameEXT- , vkSetDebugUtilsObjectTagEXT- , vkQueueBeginDebugUtilsLabelEXT- , vkQueueEndDebugUtilsLabelEXT- , vkQueueInsertDebugUtilsLabelEXT- , vkCmdBeginDebugUtilsLabelEXT- , vkCmdEndDebugUtilsLabelEXT- , vkCmdInsertDebugUtilsLabelEXT- , vkCreateDebugUtilsMessengerEXT- , vkDestroyDebugUtilsMessengerEXT- , vkSubmitDebugUtilsMessageEXT- , VkDebugUtilsObjectNameInfoEXT(..)- , VkDebugUtilsObjectTagInfoEXT(..)- , VkDebugUtilsLabelEXT(..)- , VkDebugUtilsMessengerCreateInfoEXT(..)- , VkDebugUtilsMessengerCallbackDataEXT(..)- , VkDebugUtilsMessageSeverityFlagsEXT- , VkDebugUtilsMessageTypeFlagsEXT- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Int- ( Int32- )-import Data.String- ( IsString- )-import Data.Vector.Storable.Sized- ( Vector- )-import Data.Word- ( Word32- , Word64- )-import Foreign.C.Types- ( CChar(..)- , CFloat(..)- , CSize(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkObjectType(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- , VkInstance- )-import Graphics.Vulkan.Core10.Queue- ( VkCommandBuffer- , VkQueue- )----- ** VkDebugUtilsMessageSeverityFlagBitsEXT---- | VkDebugUtilsMessageSeverityFlagBitsEXT - Bitmask specifying which--- severities of events cause a debug messenger callback------ = See Also------ 'VkDebugUtilsMessageSeverityFlagsEXT', 'vkSubmitDebugUtilsMessageEXT'-newtype VkDebugUtilsMessageSeverityFlagBitsEXT = VkDebugUtilsMessageSeverityFlagBitsEXT VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkDebugUtilsMessageSeverityFlagBitsEXT where- showsPrec _ VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = showString "VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT"- showsPrec _ VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = showString "VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT"- showsPrec _ VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = showString "VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT"- showsPrec _ VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = showString "VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT"- showsPrec p (VkDebugUtilsMessageSeverityFlagBitsEXT x) = showParen (p >= 11) (showString "VkDebugUtilsMessageSeverityFlagBitsEXT " . showsPrec 11 x)--instance Read VkDebugUtilsMessageSeverityFlagBitsEXT where- readPrec = parens ( choose [ ("VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT", pure VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT)- , ("VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT", pure VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT)- , ("VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT", pure VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT)- , ("VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT", pure VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT)- ] +++- prec 10 (do- expectP (Ident "VkDebugUtilsMessageSeverityFlagBitsEXT")- v <- step readPrec- pure (VkDebugUtilsMessageSeverityFlagBitsEXT v)- )- )---- | @VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT@ specifies the most--- verbose output indicating all diagnostic messages from the Vulkan--- loader, layers, and drivers should be captured.-pattern VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT :: VkDebugUtilsMessageSeverityFlagBitsEXT-pattern VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = VkDebugUtilsMessageSeverityFlagBitsEXT 0x00000001---- | @VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT@ specifies an--- informational message such as resource details that may be handy when--- debugging an application.-pattern VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT :: VkDebugUtilsMessageSeverityFlagBitsEXT-pattern VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = VkDebugUtilsMessageSeverityFlagBitsEXT 0x00000010---- | @VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT@ specifies use of--- Vulkan that /may/ expose an app bug. Such cases may not be immediately--- harmful, such as a fragment shader outputting to a location with no--- attachment. Other cases /may/ point to behavior that is almost certainly--- bad when unintended such as using an image whose memory has not been--- filled. In general if you see a warning but you know that the behavior--- is intended\/desired, then simply ignore the warning.-pattern VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT :: VkDebugUtilsMessageSeverityFlagBitsEXT-pattern VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = VkDebugUtilsMessageSeverityFlagBitsEXT 0x00000100---- | @VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT@ specifies that an error--- that may cause undefined results, including an application crash.-pattern VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT :: VkDebugUtilsMessageSeverityFlagBitsEXT-pattern VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = VkDebugUtilsMessageSeverityFlagBitsEXT 0x00001000--- ** VkDebugUtilsMessageTypeFlagBitsEXT---- | VkDebugUtilsMessageTypeFlagBitsEXT - Bitmask specifying which types of--- events cause a debug messenger callback------ = See Also------ 'VkDebugUtilsMessageTypeFlagsEXT'-newtype VkDebugUtilsMessageTypeFlagBitsEXT = VkDebugUtilsMessageTypeFlagBitsEXT VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkDebugUtilsMessageTypeFlagBitsEXT where- showsPrec _ VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = showString "VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT"- showsPrec _ VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = showString "VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT"- showsPrec _ VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = showString "VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT"- showsPrec p (VkDebugUtilsMessageTypeFlagBitsEXT x) = showParen (p >= 11) (showString "VkDebugUtilsMessageTypeFlagBitsEXT " . showsPrec 11 x)--instance Read VkDebugUtilsMessageTypeFlagBitsEXT where- readPrec = parens ( choose [ ("VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT", pure VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT)- , ("VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT", pure VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT)- , ("VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT", pure VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT)- ] +++- prec 10 (do- expectP (Ident "VkDebugUtilsMessageTypeFlagBitsEXT")- v <- step readPrec- pure (VkDebugUtilsMessageTypeFlagBitsEXT v)- )- )---- | @VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT@ specifies that some--- general event has occurred. This is typically a non-specification,--- non-performance event.-pattern VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT :: VkDebugUtilsMessageTypeFlagBitsEXT-pattern VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = VkDebugUtilsMessageTypeFlagBitsEXT 0x00000001---- | @VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT@ specifies that--- something has occurred during validation against the Vulkan--- specification that may indicate invalid behavior.-pattern VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT :: VkDebugUtilsMessageTypeFlagBitsEXT-pattern VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = VkDebugUtilsMessageTypeFlagBitsEXT 0x00000002---- | @VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT@ specifies a--- potentially non-optimal use of Vulkan, e.g. using--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.vkCmdClearColorImage' when--- setting 'Graphics.Vulkan.Core10.Pass.VkAttachmentDescription'::@loadOp@--- to @VK_ATTACHMENT_LOAD_OP_CLEAR@ would have worked.-pattern VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT :: VkDebugUtilsMessageTypeFlagBitsEXT-pattern VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = VkDebugUtilsMessageTypeFlagBitsEXT 0x00000004--- ** VkDebugUtilsMessengerCreateFlagsEXT---- No documentation found for TopLevel "VkDebugUtilsMessengerCreateFlagsEXT"-newtype VkDebugUtilsMessengerCreateFlagsEXT = VkDebugUtilsMessengerCreateFlagsEXT VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkDebugUtilsMessengerCreateFlagsEXT where- - showsPrec p (VkDebugUtilsMessengerCreateFlagsEXT x) = showParen (p >= 11) (showString "VkDebugUtilsMessengerCreateFlagsEXT " . showsPrec 11 x)--instance Read VkDebugUtilsMessengerCreateFlagsEXT where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkDebugUtilsMessengerCreateFlagsEXT")- v <- step readPrec- pure (VkDebugUtilsMessengerCreateFlagsEXT v)- )- )----- ** VkDebugUtilsMessengerCallbackDataFlagsEXT---- No documentation found for TopLevel "VkDebugUtilsMessengerCallbackDataFlagsEXT"-newtype VkDebugUtilsMessengerCallbackDataFlagsEXT = VkDebugUtilsMessengerCallbackDataFlagsEXT VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkDebugUtilsMessengerCallbackDataFlagsEXT where- - showsPrec p (VkDebugUtilsMessengerCallbackDataFlagsEXT x) = showParen (p >= 11) (showString "VkDebugUtilsMessengerCallbackDataFlagsEXT " . showsPrec 11 x)--instance Read VkDebugUtilsMessengerCallbackDataFlagsEXT where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkDebugUtilsMessengerCallbackDataFlagsEXT")- v <- step readPrec- pure (VkDebugUtilsMessengerCallbackDataFlagsEXT v)- )- )----- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT"-pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = VkStructureType 1000128000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT"-pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = VkStructureType 1000128001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT"-pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = VkStructureType 1000128002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"-pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = VkStructureType 1000128003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"-pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = VkStructureType 1000128004--- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT"-pattern VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT :: VkObjectType-pattern VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = VkObjectType 1000128000--- No documentation found for TopLevel "VK_EXT_DEBUG_UTILS_SPEC_VERSION"-pattern VK_EXT_DEBUG_UTILS_SPEC_VERSION :: Integral a => a-pattern VK_EXT_DEBUG_UTILS_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_EXT_DEBUG_UTILS_EXTENSION_NAME"-pattern VK_EXT_DEBUG_UTILS_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils"--- | PFN_vkDebugUtilsMessengerCallbackEXT - Application-defined debug--- messenger callback function------ = Parameters------ - @messageSeverity@ specifies the--- 'VkDebugUtilsMessageSeverityFlagBitsEXT' that triggered this--- callback.------ - @messageTypes@ specifies the 'VkDebugUtilsMessageTypeFlagBitsEXT'--- that triggered this callback.------ - @pCallbackData@ contains all the callback related data in the--- 'VkDebugUtilsMessengerCallbackDataEXT' structure.------ - @pUserData@ is the user data provided when the--- 'VkDebugUtilsMessengerEXT' was created.------ = Description------ The callback /must/ not call 'vkDestroyDebugUtilsMessengerEXT'.------ The callback returns a @VkBool32@, which is interpreted in a--- layer-specified manner. The application /should/ always return--- @VK_FALSE@. The @VK_TRUE@ value is reserved for use in layer--- development.------ = See Also------ 'VkDebugUtilsMessengerCreateInfoEXT'-type PFN_vkDebugUtilsMessengerCallbackEXT = Ptr (("messageSeverity" ::: VkDebugUtilsMessageSeverityFlagBitsEXT) -> ("messageType" ::: VkDebugUtilsMessageTypeFlagsEXT) -> ("pCallbackData" ::: Ptr VkDebugUtilsMessengerCallbackDataEXT) -> ("pUserData" ::: Ptr ()) -> IO VkBool32)--- | Dummy data to tag the 'Ptr' with-data VkDebugUtilsMessengerEXT_T--- | VkDebugUtilsMessengerEXT - Opaque handle to a debug messenger object------ = Description------ The debug messenger will provide detailed feedback on the application’s--- use of Vulkan when events of interest occur. When an event of interest--- does occur, the debug messenger will submit a debug message to the debug--- callback that was provided during its creation. Additionally, the debug--- messenger is responsible with filtering out debug messages that the--- callback isn’t interested in and will only provide desired debug--- messages.------ = See Also------ 'vkCreateDebugUtilsMessengerEXT', 'vkDestroyDebugUtilsMessengerEXT'-type VkDebugUtilsMessengerEXT = Ptr VkDebugUtilsMessengerEXT_T--- | vkSetDebugUtilsObjectNameEXT - Give a user-friendly name to an object------ = Parameters------ - @device@ is the device that created the object.------ - @pNameInfo@ is a pointer to an instance of the--- 'VkDebugUtilsObjectNameInfoEXT' structure specifying the parameters--- of the name to set on the object.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pNameInfo@ /must/ be a valid pointer to a valid--- @VkDebugUtilsObjectNameInfoEXT@ structure------ == Host Synchronization------ - Host access to @pNameInfo.objectHandle@ /must/ be externally--- synchronized------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'VkDebugUtilsObjectNameInfoEXT',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkSetDebugUtilsObjectNameEXT" vkSetDebugUtilsObjectNameEXT :: ("device" ::: VkDevice) -> ("pNameInfo" ::: Ptr VkDebugUtilsObjectNameInfoEXT) -> IO VkResult--- | vkSetDebugUtilsObjectTagEXT - Attach arbitrary data to an object------ = Parameters------ - @device@ is the device that created the object.------ - @pTagInfo@ is a pointer to an instance of the--- 'VkDebugUtilsObjectTagInfoEXT' structure specifying the parameters--- of the tag to attach to the object.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pTagInfo@ /must/ be a valid pointer to a valid--- @VkDebugUtilsObjectTagInfoEXT@ structure------ == Host Synchronization------ - Host access to @pTagInfo.objectHandle@ /must/ be externally--- synchronized------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'VkDebugUtilsObjectTagInfoEXT',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkSetDebugUtilsObjectTagEXT" vkSetDebugUtilsObjectTagEXT :: ("device" ::: VkDevice) -> ("pTagInfo" ::: Ptr VkDebugUtilsObjectTagInfoEXT) -> IO VkResult--- | vkQueueBeginDebugUtilsLabelEXT - Open a queue debug label region------ = Parameters------ - @queue@ is the queue in which to start a debug label region.------ - @pLabelInfo@ is a pointer to an instance of the--- 'VkDebugUtilsLabelEXT' structure specifying the parameters of the--- label region to open.------ == Valid Usage (Implicit)------ - @queue@ /must/ be a valid @VkQueue@ handle------ - @pLabelInfo@ /must/ be a valid pointer to a valid--- @VkDebugUtilsLabelEXT@ structure------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | - | - | Any | - |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'VkDebugUtilsLabelEXT', 'Graphics.Vulkan.Core10.Queue.VkQueue'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkQueueBeginDebugUtilsLabelEXT" vkQueueBeginDebugUtilsLabelEXT :: ("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ()--- | vkQueueEndDebugUtilsLabelEXT - Close a queue debug label region------ = Parameters------ - @queue@ is the queue in which a debug label region should be closed.------ = Description------ The calls to 'vkQueueBeginDebugUtilsLabelEXT' and--- 'vkQueueEndDebugUtilsLabelEXT' /must/ be matched and balanced.------ == Valid Usage------ - There /must/ be an outstanding @vkQueueBeginDebugUtilsLabelEXT@--- command prior to the @vkQueueEndDebugUtilsLabelEXT@ on the queue------ == Valid Usage (Implicit)------ - @queue@ /must/ be a valid @VkQueue@ handle------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | - | - | Any | - |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkQueue'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkQueueEndDebugUtilsLabelEXT" vkQueueEndDebugUtilsLabelEXT :: ("queue" ::: VkQueue) -> IO ()--- | vkQueueInsertDebugUtilsLabelEXT - Insert a label into a queue------ = Parameters------ - @queue@ is the queue into which a debug label will be inserted.------ - @pLabelInfo@ is a pointer to an instance of the--- 'VkDebugUtilsLabelEXT' structure specifying the parameters of the--- label to insert.------ == Valid Usage (Implicit)------ - @queue@ /must/ be a valid @VkQueue@ handle------ - @pLabelInfo@ /must/ be a valid pointer to a valid--- @VkDebugUtilsLabelEXT@ structure------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | - | - | Any | - |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'VkDebugUtilsLabelEXT', 'Graphics.Vulkan.Core10.Queue.VkQueue'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkQueueInsertDebugUtilsLabelEXT" vkQueueInsertDebugUtilsLabelEXT :: ("queue" ::: VkQueue) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ()--- | vkCmdBeginDebugUtilsLabelEXT - Open a command buffer debug label region------ = Parameters------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @pLabelInfo@ is a pointer to an instance of the--- 'VkDebugUtilsLabelEXT' structure specifying the parameters of the--- label region to open.------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pLabelInfo@ /must/ be a valid pointer to a valid--- @VkDebugUtilsLabelEXT@ structure------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ == Host Synchronization------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkDebugUtilsLabelEXT'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdBeginDebugUtilsLabelEXT" vkCmdBeginDebugUtilsLabelEXT :: ("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ()--- | vkCmdEndDebugUtilsLabelEXT - Close a command buffer label region------ = Parameters------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ = Description------ An application /may/ open a debug label region in one command buffer and--- close it in another, or otherwise split debug label regions across--- multiple command buffers or multiple queue submissions. When viewed from--- the linear series of submissions to a single queue, the calls to--- 'vkCmdBeginDebugUtilsLabelEXT' and 'vkCmdEndDebugUtilsLabelEXT' /must/--- be matched and balanced.------ == Valid Usage------ - There /must/ be an outstanding @vkCmdBeginDebugUtilsLabelEXT@--- command prior to the @vkCmdEndDebugUtilsLabelEXT@ on the queue that--- @commandBuffer@ is submitted to------ - If @commandBuffer@ is a secondary command buffer, there /must/ be an--- outstanding @vkCmdBeginDebugUtilsLabelEXT@ command recorded to--- @commandBuffer@ that has not previously been ended by a call to--- @vkCmdEndDebugUtilsLabelEXT@.------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ == Host Synchronization------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdEndDebugUtilsLabelEXT" vkCmdEndDebugUtilsLabelEXT :: ("commandBuffer" ::: VkCommandBuffer) -> IO ()--- | vkCmdInsertDebugUtilsLabelEXT - Insert a label into a command buffer------ = Parameters------ - @commandBuffer@ is the command buffer into which the command is--- recorded.------ - @pInfo@ is a pointer to an instance of the 'VkDebugUtilsLabelEXT'--- structure specifying the parameters of the label to insert.------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pLabelInfo@ /must/ be a valid pointer to a valid--- @VkDebugUtilsLabelEXT@ structure------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ == Host Synchronization------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkDebugUtilsLabelEXT'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdInsertDebugUtilsLabelEXT" vkCmdInsertDebugUtilsLabelEXT :: ("commandBuffer" ::: VkCommandBuffer) -> ("pLabelInfo" ::: Ptr VkDebugUtilsLabelEXT) -> IO ()--- | vkCreateDebugUtilsMessengerEXT - Create a debug messenger object------ = Parameters------ - @instance@ the instance the messenger will be used with.------ - @pCreateInfo@ points to a 'VkDebugUtilsMessengerCreateInfoEXT'--- structure which contains the callback pointer as well as defines the--- conditions under which this messenger will trigger the callback.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ - @pMessenger@ is a pointer to record the @VkDebugUtilsMessengerEXT@--- object created.------ == Valid Usage (Implicit)------ - @instance@ /must/ be a valid @VkInstance@ handle------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkDebugUtilsMessengerCreateInfoEXT@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pMessenger@ /must/ be a valid pointer to a--- @VkDebugUtilsMessengerEXT@ handle------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'VkDebugUtilsMessengerCreateInfoEXT', 'VkDebugUtilsMessengerEXT',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateDebugUtilsMessengerEXT" vkCreateDebugUtilsMessengerEXT :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDebugUtilsMessengerCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMessenger" ::: Ptr VkDebugUtilsMessengerEXT) -> IO VkResult--- | vkDestroyDebugUtilsMessengerEXT - Destroy a debug messenger object------ = Parameters------ - @instance@ the instance where the callback was created.------ - @messenger@ the @VkDebugUtilsMessengerEXT@ object to destroy.--- @messenger@ is an externally synchronized object and /must/ not be--- used on more than one thread at a time. This means that--- @vkDestroyDebugUtilsMessengerEXT@ /must/ not be called when a--- callback is active.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ == Valid Usage------ - If @VkAllocationCallbacks@ were provided when @messenger@ was--- created, a compatible set of callbacks /must/ be provided here------ - If no @VkAllocationCallbacks@ were provided when @messenger@ was--- created, @pAllocator@ /must/ be @NULL@------ == Valid Usage (Implicit)------ - @instance@ /must/ be a valid @VkInstance@ handle------ - @messenger@ /must/ be a valid @VkDebugUtilsMessengerEXT@ handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @messenger@ /must/ have been created, allocated, or retrieved from--- @instance@------ == Host Synchronization------ - Host access to @messenger@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'VkDebugUtilsMessengerEXT',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroyDebugUtilsMessengerEXT" vkDestroyDebugUtilsMessengerEXT :: ("instance" ::: VkInstance) -> ("messenger" ::: VkDebugUtilsMessengerEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | vkSubmitDebugUtilsMessageEXT - Inject a message into a debug stream------ = Parameters------ - @instance@ is the debug stream’s @VkInstance@.------ - @messageSeverity@ is the 'VkDebugUtilsMessageSeverityFlagBitsEXT'--- severity of this event\/message.------ - @messageTypes@ is a bitmask of 'VkDebugUtilsMessageTypeFlagBitsEXT'--- specifying which type of event(s) to identify with this message.------ - @pCallbackData@ contains all the callback related data in the--- 'VkDebugUtilsMessengerCallbackDataEXT' structure.------ = Description------ The call will propagate through the layers and generate callback(s) as--- indicated by the message’s flags. The parameters are passed on to the--- callback in addition to the @pUserData@ value that was defined at the--- time the messenger was registered.------ == Valid Usage (Implicit)------ - @instance@ /must/ be a valid @VkInstance@ handle------ - @messageSeverity@ /must/ be a valid--- 'VkDebugUtilsMessageSeverityFlagBitsEXT' value------ - @messageTypes@ /must/ be a valid combination of--- 'VkDebugUtilsMessageTypeFlagBitsEXT' values------ - @messageTypes@ /must/ not be @0@------ - @pCallbackData@ /must/ be a valid pointer to a valid--- @VkDebugUtilsMessengerCallbackDataEXT@ structure------ = See Also------ 'VkDebugUtilsMessageSeverityFlagBitsEXT',--- 'VkDebugUtilsMessageTypeFlagsEXT',--- 'VkDebugUtilsMessengerCallbackDataEXT',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkSubmitDebugUtilsMessageEXT" vkSubmitDebugUtilsMessageEXT :: ("instance" ::: VkInstance) -> ("messageSeverity" ::: VkDebugUtilsMessageSeverityFlagBitsEXT) -> ("messageTypes" ::: VkDebugUtilsMessageTypeFlagsEXT) -> ("pCallbackData" ::: Ptr VkDebugUtilsMessengerCallbackDataEXT) -> IO ()--- | VkDebugUtilsObjectNameInfoEXT - Specify parameters of a name to give to--- an object------ = Description------ Applications /may/ change the name associated with an object simply by--- calling @vkSetDebugUtilsObjectNameEXT@ again with a new string. If--- @pObjectName@ is an empty string, then any previously set name is--- removed.------ == Valid Usage------ - @objectType@ /must/ not be @VK_OBJECT_TYPE_UNKNOWN@------ - @objectHandle@ /must/ not be--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'------ - @objectHandle@ /must/ be a Vulkan object of the type associated with--- @objectType@ as defined in--- [{html_spec_relative}#debugging-object-types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#debugging-object-types).------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT@------ - @pNext@ /must/ be @NULL@------ - @objectType@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Core.VkObjectType' value------ - If @pObjectName@ is not @NULL@, @pObjectName@ /must/ be a--- null-terminated UTF-8 string------ = See Also------ 'VkDebugUtilsMessengerCallbackDataEXT',--- 'Graphics.Vulkan.Core10.Core.VkObjectType',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkSetDebugUtilsObjectNameEXT'-data VkDebugUtilsObjectNameInfoEXT = VkDebugUtilsObjectNameInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @objectType@ is a 'Graphics.Vulkan.Core10.Core.VkObjectType' specifying- -- the type of the object to be named.- vkObjectType :: VkObjectType- , -- | @objectHandle@ is the object to be named.- vkObjectHandle :: Word64- , -- | @pObjectName@ is a null-terminated UTF-8 string specifying the name to- -- apply to @objectHandle@.- vkPObjectName :: Ptr CChar- }- deriving (Eq, Show)--instance Storable VkDebugUtilsObjectNameInfoEXT where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkDebugUtilsObjectNameInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDebugUtilsObjectNameInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDebugUtilsObjectNameInfoEXT))- *> poke (ptr `plusPtr` 16) (vkObjectType (poked :: VkDebugUtilsObjectNameInfoEXT))- *> poke (ptr `plusPtr` 24) (vkObjectHandle (poked :: VkDebugUtilsObjectNameInfoEXT))- *> poke (ptr `plusPtr` 32) (vkPObjectName (poked :: VkDebugUtilsObjectNameInfoEXT))--- | VkDebugUtilsObjectTagInfoEXT - Specify parameters of a tag to attach to--- an object------ = Description------ The @tagName@ parameter gives a name or identifier to the type of data--- being tagged. This can be used by debugging layers to easily filter for--- only data that can be used by that implementation.------ == Valid Usage------ - @objectType@ /must/ not be @VK_OBJECT_TYPE_UNKNOWN@------ - @objectHandle@ /must/ not be--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'------ - @objectHandle@ /must/ be a Vulkan object of the type associated with--- @objectType@ as defined in--- [{html_spec_relative}#debugging-object-types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#debugging-object-types).------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT@------ - @pNext@ /must/ be @NULL@------ - @objectType@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Core.VkObjectType' value------ - @pTag@ /must/ be a valid pointer to an array of @tagSize@ bytes------ - @tagSize@ /must/ be greater than @0@------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkObjectType',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkSetDebugUtilsObjectTagEXT'-data VkDebugUtilsObjectTagInfoEXT = VkDebugUtilsObjectTagInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @objectType@ is a 'Graphics.Vulkan.Core10.Core.VkObjectType' specifying- -- the type of the object to be named.- vkObjectType :: VkObjectType- , -- | @objectHandle@ is the object to be tagged.- vkObjectHandle :: Word64- , -- | @tagName@ is a numerical identifier of the tag.- vkTagName :: Word64- , -- | @tagSize@ is the number of bytes of data to attach to the object.- vkTagSize :: CSize- , -- | @pTag@ is an array of @tagSize@ bytes containing the data to be- -- associated with the object.- vkPTag :: Ptr ()- }- deriving (Eq, Show)--instance Storable VkDebugUtilsObjectTagInfoEXT where- sizeOf ~_ = 56- alignment ~_ = 8- peek ptr = VkDebugUtilsObjectTagInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDebugUtilsObjectTagInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDebugUtilsObjectTagInfoEXT))- *> poke (ptr `plusPtr` 16) (vkObjectType (poked :: VkDebugUtilsObjectTagInfoEXT))- *> poke (ptr `plusPtr` 24) (vkObjectHandle (poked :: VkDebugUtilsObjectTagInfoEXT))- *> poke (ptr `plusPtr` 32) (vkTagName (poked :: VkDebugUtilsObjectTagInfoEXT))- *> poke (ptr `plusPtr` 40) (vkTagSize (poked :: VkDebugUtilsObjectTagInfoEXT))- *> poke (ptr `plusPtr` 48) (vkPTag (poked :: VkDebugUtilsObjectTagInfoEXT))--- | VkDebugUtilsLabelEXT - Specify parameters of a label region------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT@------ - @pNext@ /must/ be @NULL@------ - @pLabelName@ /must/ be a null-terminated UTF-8 string------ = See Also------ 'VkDebugUtilsMessengerCallbackDataEXT',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkCmdBeginDebugUtilsLabelEXT', 'vkCmdInsertDebugUtilsLabelEXT',--- 'vkQueueBeginDebugUtilsLabelEXT', 'vkQueueInsertDebugUtilsLabelEXT'-data VkDebugUtilsLabelEXT = VkDebugUtilsLabelEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @pLabelName@ is a pointer to a null-terminated UTF-8 string that- -- contains the name of the label.- vkPLabelName :: Ptr CChar- , -- | @color@ is an optional RGBA color value that can be associated with the- -- label. A particular implementation /may/ choose to ignore this color- -- value. The values contain RGBA values in order, in the range 0.0 to 1.0.- -- If all elements in @color@ are set to 0.0 then it is ignored.- vkColor :: Vector 4 CFloat- }- deriving (Eq, Show)--instance Storable VkDebugUtilsLabelEXT where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkDebugUtilsLabelEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDebugUtilsLabelEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDebugUtilsLabelEXT))- *> poke (ptr `plusPtr` 16) (vkPLabelName (poked :: VkDebugUtilsLabelEXT))- *> poke (ptr `plusPtr` 24) (vkColor (poked :: VkDebugUtilsLabelEXT))--- | VkDebugUtilsMessengerCreateInfoEXT - Structure specifying parameters of--- a newly created debug messenger------ = Description------ For each @VkDebugUtilsMessengerEXT@ that is created the--- @VkDebugUtilsMessengerCreateInfoEXT@::@messageSeverity@ and--- @VkDebugUtilsMessengerCreateInfoEXT@::@messageTypes@ determine when that--- @VkDebugUtilsMessengerCreateInfoEXT@::@pfnUserCallback@ is called. The--- process to determine if the user’s pfnUserCallback is triggered when an--- event occurs is as follows:------ 1. The implementation will perform a bitwise AND of the event’s--- 'VkDebugUtilsMessageSeverityFlagBitsEXT' with the @messageSeverity@--- provided during creation of the 'VkDebugUtilsMessengerEXT' object.------ 1. If the value is 0, the message is skipped.------ 2. The implementation will perform bitwise AND of the event’s--- 'VkDebugUtilsMessageTypeFlagBitsEXT' with the @messageType@ provided--- during the creation of the 'VkDebugUtilsMessengerEXT' object.------ 1. If the value is 0, the message is skipped.------ 3. The callback will trigger a debug message for the current event------ The callback will come directly from the component that detected the--- event, unless some other layer intercepts the calls for its own purposes--- (filter them in a different way, log to a system error log, etc.).------ An application /can/ receive multiple callbacks if multiple--- @VkDebugUtilsMessengerEXT@ objects are created. A callback will always--- be executed in the same thread as the originating Vulkan call.------ A callback /can/ be called from multiple threads simultaneously (if the--- application is making Vulkan calls from multiple threads).------ == Valid Usage------ - @pfnUserCallback@ /must/ be a valid--- 'PFN_vkDebugUtilsMessengerCallbackEXT'------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT@------ - @flags@ /must/ be @0@------ - @messageSeverity@ /must/ be a valid combination of--- 'VkDebugUtilsMessageSeverityFlagBitsEXT' values------ - @messageSeverity@ /must/ not be @0@------ - @messageType@ /must/ be a valid combination of--- 'VkDebugUtilsMessageTypeFlagBitsEXT' values------ - @messageType@ /must/ not be @0@------ = See Also------ 'PFN_vkDebugUtilsMessengerCallbackEXT',--- 'VkDebugUtilsMessageSeverityFlagsEXT',--- 'VkDebugUtilsMessageTypeFlagsEXT',--- 'VkDebugUtilsMessengerCreateFlagsEXT',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkCreateDebugUtilsMessengerEXT'-data VkDebugUtilsMessengerCreateInfoEXT = VkDebugUtilsMessengerCreateInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is 0 and reserved for future use.- vkFlags :: VkDebugUtilsMessengerCreateFlagsEXT- , -- | @messageSeverity@ is a bitmask of- -- 'VkDebugUtilsMessageSeverityFlagBitsEXT' specifying which severity of- -- event(s) will cause this callback to be called.- vkMessageSeverity :: VkDebugUtilsMessageSeverityFlagsEXT- , -- No documentation found for Nested "VkDebugUtilsMessengerCreateInfoEXT" "messageType"- vkMessageType :: VkDebugUtilsMessageTypeFlagsEXT- , -- | @pfnUserCallback@ is the application callback function to call.- vkPfnUserCallback :: PFN_vkDebugUtilsMessengerCallbackEXT- , -- | @pUserData@ is user data to be passed to the callback.- vkPUserData :: Ptr ()- }- deriving (Eq, Show)--instance Storable VkDebugUtilsMessengerCreateInfoEXT where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkDebugUtilsMessengerCreateInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDebugUtilsMessengerCreateInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDebugUtilsMessengerCreateInfoEXT))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkDebugUtilsMessengerCreateInfoEXT))- *> poke (ptr `plusPtr` 20) (vkMessageSeverity (poked :: VkDebugUtilsMessengerCreateInfoEXT))- *> poke (ptr `plusPtr` 24) (vkMessageType (poked :: VkDebugUtilsMessengerCreateInfoEXT))- *> poke (ptr `plusPtr` 32) (vkPfnUserCallback (poked :: VkDebugUtilsMessengerCreateInfoEXT))- *> poke (ptr `plusPtr` 40) (vkPUserData (poked :: VkDebugUtilsMessengerCreateInfoEXT))--- | VkDebugUtilsMessengerCallbackDataEXT - Structure specifying parameters--- returned to the callback------ = Description------ __Note__------ This structure should only be considered valid during the lifetime of--- the triggered callback.------ Since adding queue and command buffer labels behaves like pushing and--- popping onto a stack, the order of both @pQueueLabels@ and--- @pCmdBufLabels@ is based on the order the labels were defined. The--- result is that the first label in either @pQueueLabels@ or--- @pCmdBufLabels@ will be the first defined (and therefore the oldest)--- while the last label in each list will be the most recent.------ __Note__------ @pQueueLabels@ will only be non-NULL if one of the objects in @pObjects@--- can be related directly to a defined @VkQueue@ which has had one or more--- labels associated with it.------ Likewise, @pCmdBufLabels@ will only be non-NULL if one of the objects in--- @pObjects@ can be related directly to a defined @VkCommandBuffer@ which--- has had one or more labels associated with it. Additionally, while--- command buffer labels allow for beginning and ending across different--- command buffers, the debug messaging framework /cannot/ guarantee that--- labels in @pCmdBufLables@ will contain those defined outside of the--- associated command buffer. This is partially due to the fact that the--- association of one command buffer with another may not have been defined--- at the time the debug message is triggered.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@------ - If @pMessageIdName@ is not @NULL@, @pMessageIdName@ /must/ be a--- null-terminated UTF-8 string------ - @pMessage@ /must/ be a null-terminated UTF-8 string------ - @objectCount@ /must/ be greater than @0@------ = See Also------ 'VkDebugUtilsLabelEXT', 'VkDebugUtilsMessengerCallbackDataFlagsEXT',--- 'VkDebugUtilsObjectNameInfoEXT',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkSubmitDebugUtilsMessageEXT'-data VkDebugUtilsMessengerCallbackDataEXT = VkDebugUtilsMessengerCallbackDataEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is 0 and reserved for future use.- vkFlags :: VkDebugUtilsMessengerCallbackDataFlagsEXT- , -- | @pMessageIdName@ is a null-terminated string that identifies the the- -- particular message ID that is associated with the provided message. If- -- the message corresponds to a validation layer message, then this string- -- may contain the portion of the Vulkan specification that is believed to- -- have been violated.- vkPMessageIdName :: Ptr CChar- , -- | @messageIdNumber@ is the ID number of the triggering message. If the- -- message corresponds to a validation layer message, then this number is- -- related to the internal number associated with the message being- -- triggered.- vkMessageIdNumber :: Int32- , -- | @pMessage@ is a null-terminated string detailing the trigger conditions.- vkPMessage :: Ptr CChar- , -- | @queueLabelCount@ is a count of items contained in the @pQueueLabels@- -- array.- vkQueueLabelCount :: Word32- , -- | @pQueueLabels@ is NULL or a pointer to an array of- -- 'VkDebugUtilsLabelEXT' active in the current @VkQueue@ at the time the- -- callback was triggered. Refer to [Queue- -- Labels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#debugging-queue-labels)- -- for more information.- vkPQueueLabels :: Ptr VkDebugUtilsLabelEXT- , -- | @cmdBufLabelCount@ is a count of items contained in the @pCmdBufLabels@- -- array.- vkCmdBufLabelCount :: Word32- , -- | @pCmdBufLabels@ is NULL or a pointer to an array of- -- 'VkDebugUtilsLabelEXT' active in the current @VkCommandBuffer@ at the- -- time the callback was triggered. Refer to [Command Buffer- -- Labels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#debugging-command-buffer-labels)- -- for more information.- vkPCmdBufLabels :: Ptr VkDebugUtilsLabelEXT- , -- | @objectCount@ is a count of items contained in the @pObjects@ array.- vkObjectCount :: Word32- , -- | @pObjects@ is a pointer to an array of 'VkDebugUtilsObjectNameInfoEXT'- -- objects related to the detected issue. The array is roughly in order or- -- importance, but the 0th element is always guaranteed to be the most- -- important object for this message.- vkPObjects :: Ptr VkDebugUtilsObjectNameInfoEXT- }- deriving (Eq, Show)--instance Storable VkDebugUtilsMessengerCallbackDataEXT where- sizeOf ~_ = 96- alignment ~_ = 8- peek ptr = VkDebugUtilsMessengerCallbackDataEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 64)- <*> peek (ptr `plusPtr` 72)- <*> peek (ptr `plusPtr` 80)- <*> peek (ptr `plusPtr` 88)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDebugUtilsMessengerCallbackDataEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDebugUtilsMessengerCallbackDataEXT))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkDebugUtilsMessengerCallbackDataEXT))- *> poke (ptr `plusPtr` 24) (vkPMessageIdName (poked :: VkDebugUtilsMessengerCallbackDataEXT))- *> poke (ptr `plusPtr` 32) (vkMessageIdNumber (poked :: VkDebugUtilsMessengerCallbackDataEXT))- *> poke (ptr `plusPtr` 40) (vkPMessage (poked :: VkDebugUtilsMessengerCallbackDataEXT))- *> poke (ptr `plusPtr` 48) (vkQueueLabelCount (poked :: VkDebugUtilsMessengerCallbackDataEXT))- *> poke (ptr `plusPtr` 56) (vkPQueueLabels (poked :: VkDebugUtilsMessengerCallbackDataEXT))- *> poke (ptr `plusPtr` 64) (vkCmdBufLabelCount (poked :: VkDebugUtilsMessengerCallbackDataEXT))- *> poke (ptr `plusPtr` 72) (vkPCmdBufLabels (poked :: VkDebugUtilsMessengerCallbackDataEXT))- *> poke (ptr `plusPtr` 80) (vkObjectCount (poked :: VkDebugUtilsMessengerCallbackDataEXT))- *> poke (ptr `plusPtr` 88) (vkPObjects (poked :: VkDebugUtilsMessengerCallbackDataEXT))--- No documentation found for TopLevel "VkDebugUtilsMessageSeverityFlagsEXT"-type VkDebugUtilsMessageSeverityFlagsEXT = VkDebugUtilsMessageSeverityFlagBitsEXT--- No documentation found for TopLevel "VkDebugUtilsMessageTypeFlagsEXT"-type VkDebugUtilsMessageTypeFlagsEXT = VkDebugUtilsMessageTypeFlagBitsEXT+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_debug_utils ( setDebugUtilsObjectNameEXT+ , setDebugUtilsObjectTagEXT+ , queueBeginDebugUtilsLabelEXT+ , queueEndDebugUtilsLabelEXT+ , queueInsertDebugUtilsLabelEXT+ , cmdBeginDebugUtilsLabelEXT+ , cmdEndDebugUtilsLabelEXT+ , cmdInsertDebugUtilsLabelEXT+ , createDebugUtilsMessengerEXT+ , withDebugUtilsMessengerEXT+ , destroyDebugUtilsMessengerEXT+ , submitDebugUtilsMessageEXT+ , DebugUtilsObjectNameInfoEXT(..)+ , DebugUtilsObjectTagInfoEXT(..)+ , DebugUtilsLabelEXT(..)+ , DebugUtilsMessengerCreateInfoEXT(..)+ , DebugUtilsMessengerCallbackDataEXT(..)+ , DebugUtilsMessengerCreateFlagsEXT(..)+ , DebugUtilsMessengerCallbackDataFlagsEXT(..)+ , DebugUtilsMessageSeverityFlagBitsEXT( DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT+ , DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT+ , DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT+ , DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT+ , ..+ )+ , DebugUtilsMessageSeverityFlagsEXT+ , DebugUtilsMessageTypeFlagBitsEXT( DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT+ , DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT+ , DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT+ , ..+ )+ , DebugUtilsMessageTypeFlagsEXT+ , PFN_vkDebugUtilsMessengerCallbackEXT+ , FN_vkDebugUtilsMessengerCallbackEXT+ , EXT_DEBUG_UTILS_SPEC_VERSION+ , pattern EXT_DEBUG_UTILS_SPEC_VERSION+ , EXT_DEBUG_UTILS_EXTENSION_NAME+ , pattern EXT_DEBUG_UTILS_EXTENSION_NAME+ , DebugUtilsMessengerEXT(..)+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Marshal.Utils (maybePeek)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.ByteString (packCString)+import Data.ByteString (useAsCString)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Bits (Bits)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CFloat(CFloat))+import Foreign.C.Types (CSize)+import Foreign.C.Types (CSize(CSize))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Data.Word (Word64)+import Text.Read.Lex (Lexeme(Ident))+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import qualified Data.Vector.Storable.Sized (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Extensions.Handles (DebugUtilsMessengerEXT)+import Graphics.Vulkan.Extensions.Handles (DebugUtilsMessengerEXT(..))+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdBeginDebugUtilsLabelEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdEndDebugUtilsLabelEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdInsertDebugUtilsLabelEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkQueueBeginDebugUtilsLabelEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkQueueEndDebugUtilsLabelEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkQueueInsertDebugUtilsLabelEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkSetDebugUtilsObjectNameEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkSetDebugUtilsObjectTagEXT))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Instance)+import Graphics.Vulkan.Core10.Handles (Instance(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkCreateDebugUtilsMessengerEXT))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkDestroyDebugUtilsMessengerEXT))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkSubmitDebugUtilsMessageEXT))+import Graphics.Vulkan.Core10.Handles (Instance_T)+import Graphics.Vulkan.Core10.Enums.ObjectType (ObjectType)+import Graphics.Vulkan.Core10.Handles (Queue)+import Graphics.Vulkan.Core10.Handles (Queue(..))+import Graphics.Vulkan.Core10.Handles (Queue_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.Handles (DebugUtilsMessengerEXT(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkSetDebugUtilsObjectNameEXT+ :: FunPtr (Ptr Device_T -> Ptr DebugUtilsObjectNameInfoEXT -> IO Result) -> Ptr Device_T -> Ptr DebugUtilsObjectNameInfoEXT -> IO Result++-- | vkSetDebugUtilsObjectNameEXT - Give a user-friendly name to an object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the device that created+-- the object.+--+-- - @pNameInfo@ is a pointer to a 'DebugUtilsObjectNameInfoEXT'+-- structure specifying parameters of the name to set on the object.+--+-- == Valid Usage+--+-- - @pNameInfo->objectType@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_UNKNOWN'+--+-- - @pNameInfo->objectHandle@ /must/ not be+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pNameInfo@ /must/ be a valid pointer to a valid+-- 'DebugUtilsObjectNameInfoEXT' structure+--+-- == Host Synchronization+--+-- - Host access to @pNameInfo.objectHandle@ /must/ be externally+-- synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'DebugUtilsObjectNameInfoEXT', 'Graphics.Vulkan.Core10.Handles.Device'+setDebugUtilsObjectNameEXT :: Device -> DebugUtilsObjectNameInfoEXT -> IO ()+setDebugUtilsObjectNameEXT device nameInfo = evalContT $ do+ let vkSetDebugUtilsObjectNameEXT' = mkVkSetDebugUtilsObjectNameEXT (pVkSetDebugUtilsObjectNameEXT (deviceCmds (device :: Device)))+ pNameInfo <- ContT $ withCStruct (nameInfo)+ r <- lift $ vkSetDebugUtilsObjectNameEXT' (deviceHandle (device)) pNameInfo+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkSetDebugUtilsObjectTagEXT+ :: FunPtr (Ptr Device_T -> Ptr DebugUtilsObjectTagInfoEXT -> IO Result) -> Ptr Device_T -> Ptr DebugUtilsObjectTagInfoEXT -> IO Result++-- | vkSetDebugUtilsObjectTagEXT - Attach arbitrary data to an object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the device that created+-- the object.+--+-- - @pTagInfo@ is a pointer to a 'DebugUtilsObjectTagInfoEXT' structure+-- specifying parameters of the tag to attach to the object.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pTagInfo@ /must/ be a valid pointer to a valid+-- 'DebugUtilsObjectTagInfoEXT' structure+--+-- == Host Synchronization+--+-- - Host access to @pTagInfo.objectHandle@ /must/ be externally+-- synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'DebugUtilsObjectTagInfoEXT', 'Graphics.Vulkan.Core10.Handles.Device'+setDebugUtilsObjectTagEXT :: Device -> DebugUtilsObjectTagInfoEXT -> IO ()+setDebugUtilsObjectTagEXT device tagInfo = evalContT $ do+ let vkSetDebugUtilsObjectTagEXT' = mkVkSetDebugUtilsObjectTagEXT (pVkSetDebugUtilsObjectTagEXT (deviceCmds (device :: Device)))+ pTagInfo <- ContT $ withCStruct (tagInfo)+ r <- lift $ vkSetDebugUtilsObjectTagEXT' (deviceHandle (device)) pTagInfo+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkQueueBeginDebugUtilsLabelEXT+ :: FunPtr (Ptr Queue_T -> Ptr DebugUtilsLabelEXT -> IO ()) -> Ptr Queue_T -> Ptr DebugUtilsLabelEXT -> IO ()++-- | vkQueueBeginDebugUtilsLabelEXT - Open a queue debug label region+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Queue' is the queue in which to+-- start a debug label region.+--+-- - @pLabelInfo@ is a pointer to a 'DebugUtilsLabelEXT' structure+-- specifying parameters of the label region to open.+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | - | - | Any | - |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'DebugUtilsLabelEXT', 'Graphics.Vulkan.Core10.Handles.Queue'+queueBeginDebugUtilsLabelEXT :: Queue -> ("labelInfo" ::: DebugUtilsLabelEXT) -> IO ()+queueBeginDebugUtilsLabelEXT queue labelInfo = evalContT $ do+ let vkQueueBeginDebugUtilsLabelEXT' = mkVkQueueBeginDebugUtilsLabelEXT (pVkQueueBeginDebugUtilsLabelEXT (deviceCmds (queue :: Queue)))+ pLabelInfo <- ContT $ withCStruct (labelInfo)+ lift $ vkQueueBeginDebugUtilsLabelEXT' (queueHandle (queue)) pLabelInfo+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkQueueEndDebugUtilsLabelEXT+ :: FunPtr (Ptr Queue_T -> IO ()) -> Ptr Queue_T -> IO ()++-- | vkQueueEndDebugUtilsLabelEXT - Close a queue debug label region+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Queue' is the queue in which a debug+-- label region should be closed.+--+-- = Description+--+-- The calls to 'queueBeginDebugUtilsLabelEXT' and+-- 'queueEndDebugUtilsLabelEXT' /must/ be matched and balanced.+--+-- == Valid Usage+--+-- - There /must/ be an outstanding 'queueBeginDebugUtilsLabelEXT'+-- command prior to the 'queueEndDebugUtilsLabelEXT' on the queue+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Queue' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Queue' handle+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | - | - | Any | - |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Queue'+queueEndDebugUtilsLabelEXT :: Queue -> IO ()+queueEndDebugUtilsLabelEXT queue = do+ let vkQueueEndDebugUtilsLabelEXT' = mkVkQueueEndDebugUtilsLabelEXT (pVkQueueEndDebugUtilsLabelEXT (deviceCmds (queue :: Queue)))+ vkQueueEndDebugUtilsLabelEXT' (queueHandle (queue))+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkQueueInsertDebugUtilsLabelEXT+ :: FunPtr (Ptr Queue_T -> Ptr DebugUtilsLabelEXT -> IO ()) -> Ptr Queue_T -> Ptr DebugUtilsLabelEXT -> IO ()++-- | vkQueueInsertDebugUtilsLabelEXT - Insert a label into a queue+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Queue' is the queue into which a+-- debug label will be inserted.+--+-- - @pLabelInfo@ is a pointer to a 'DebugUtilsLabelEXT' structure+-- specifying parameters of the label to insert.+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | - | - | Any | - |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'DebugUtilsLabelEXT', 'Graphics.Vulkan.Core10.Handles.Queue'+queueInsertDebugUtilsLabelEXT :: Queue -> ("labelInfo" ::: DebugUtilsLabelEXT) -> IO ()+queueInsertDebugUtilsLabelEXT queue labelInfo = evalContT $ do+ let vkQueueInsertDebugUtilsLabelEXT' = mkVkQueueInsertDebugUtilsLabelEXT (pVkQueueInsertDebugUtilsLabelEXT (deviceCmds (queue :: Queue)))+ pLabelInfo <- ContT $ withCStruct (labelInfo)+ lift $ vkQueueInsertDebugUtilsLabelEXT' (queueHandle (queue)) pLabelInfo+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdBeginDebugUtilsLabelEXT+ :: FunPtr (Ptr CommandBuffer_T -> Ptr DebugUtilsLabelEXT -> IO ()) -> Ptr CommandBuffer_T -> Ptr DebugUtilsLabelEXT -> IO ()++-- | vkCmdBeginDebugUtilsLabelEXT - Open a command buffer debug label region+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded.+--+-- - @pLabelInfo@ is a pointer to a 'DebugUtilsLabelEXT' structure+-- specifying parameters of the label region to open.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pLabelInfo@ /must/ be a valid pointer to a valid+-- 'DebugUtilsLabelEXT' structure+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations+--+-- == Host Synchronization+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', 'DebugUtilsLabelEXT'+cmdBeginDebugUtilsLabelEXT :: CommandBuffer -> ("labelInfo" ::: DebugUtilsLabelEXT) -> IO ()+cmdBeginDebugUtilsLabelEXT commandBuffer labelInfo = evalContT $ do+ let vkCmdBeginDebugUtilsLabelEXT' = mkVkCmdBeginDebugUtilsLabelEXT (pVkCmdBeginDebugUtilsLabelEXT (deviceCmds (commandBuffer :: CommandBuffer)))+ pLabelInfo <- ContT $ withCStruct (labelInfo)+ lift $ vkCmdBeginDebugUtilsLabelEXT' (commandBufferHandle (commandBuffer)) pLabelInfo+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdEndDebugUtilsLabelEXT+ :: FunPtr (Ptr CommandBuffer_T -> IO ()) -> Ptr CommandBuffer_T -> IO ()++-- | vkCmdEndDebugUtilsLabelEXT - Close a command buffer label region+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded.+--+-- = Description+--+-- An application /may/ open a debug label region in one command buffer and+-- close it in another, or otherwise split debug label regions across+-- multiple command buffers or multiple queue submissions. When viewed from+-- the linear series of submissions to a single queue, the calls to+-- 'cmdBeginDebugUtilsLabelEXT' and 'cmdEndDebugUtilsLabelEXT' /must/ be+-- matched and balanced.+--+-- == Valid Usage+--+-- - There /must/ be an outstanding 'cmdBeginDebugUtilsLabelEXT' command+-- prior to the 'cmdEndDebugUtilsLabelEXT' on the queue that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is submitted to+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a secondary+-- command buffer, there /must/ be an outstanding+-- 'cmdBeginDebugUtilsLabelEXT' command recorded to+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' that has not+-- previously been ended by a call to 'cmdEndDebugUtilsLabelEXT'.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations+--+-- == Host Synchronization+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdEndDebugUtilsLabelEXT :: CommandBuffer -> IO ()+cmdEndDebugUtilsLabelEXT commandBuffer = do+ let vkCmdEndDebugUtilsLabelEXT' = mkVkCmdEndDebugUtilsLabelEXT (pVkCmdEndDebugUtilsLabelEXT (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdEndDebugUtilsLabelEXT' (commandBufferHandle (commandBuffer))+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdInsertDebugUtilsLabelEXT+ :: FunPtr (Ptr CommandBuffer_T -> Ptr DebugUtilsLabelEXT -> IO ()) -> Ptr CommandBuffer_T -> Ptr DebugUtilsLabelEXT -> IO ()++-- | vkCmdInsertDebugUtilsLabelEXT - Insert a label into a command buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded.+--+-- - @pInfo@ is a pointer to a 'DebugUtilsLabelEXT' structure specifying+-- parameters of the label to insert.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pLabelInfo@ /must/ be a valid pointer to a valid+-- 'DebugUtilsLabelEXT' structure+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations+--+-- == Host Synchronization+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', 'DebugUtilsLabelEXT'+cmdInsertDebugUtilsLabelEXT :: CommandBuffer -> ("labelInfo" ::: DebugUtilsLabelEXT) -> IO ()+cmdInsertDebugUtilsLabelEXT commandBuffer labelInfo = evalContT $ do+ let vkCmdInsertDebugUtilsLabelEXT' = mkVkCmdInsertDebugUtilsLabelEXT (pVkCmdInsertDebugUtilsLabelEXT (deviceCmds (commandBuffer :: CommandBuffer)))+ pLabelInfo <- ContT $ withCStruct (labelInfo)+ lift $ vkCmdInsertDebugUtilsLabelEXT' (commandBufferHandle (commandBuffer)) pLabelInfo+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateDebugUtilsMessengerEXT+ :: FunPtr (Ptr Instance_T -> Ptr DebugUtilsMessengerCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr DebugUtilsMessengerEXT -> IO Result) -> Ptr Instance_T -> Ptr DebugUtilsMessengerCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr DebugUtilsMessengerEXT -> IO Result++-- | vkCreateDebugUtilsMessengerEXT - Create a debug messenger object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' the instance the messenger+-- will be used with.+--+-- - @pCreateInfo@ is a pointer to a 'DebugUtilsMessengerCreateInfoEXT'+-- structure containing the callback pointer, as well as defining+-- conditions under which this messenger will trigger the callback.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pMessenger@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.DebugUtilsMessengerEXT' handle+-- in which the created object is returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'DebugUtilsMessengerCreateInfoEXT' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pMessenger@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.DebugUtilsMessengerEXT' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- The application /must/ ensure that 'createDebugUtilsMessengerEXT' is not+-- executed in parallel with any Vulkan command that is also called with+-- 'Graphics.Vulkan.Core10.Handles.Instance' or child of+-- 'Graphics.Vulkan.Core10.Handles.Instance' as the dispatchable argument.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'DebugUtilsMessengerCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.Handles.DebugUtilsMessengerEXT',+-- 'Graphics.Vulkan.Core10.Handles.Instance'+createDebugUtilsMessengerEXT :: Instance -> DebugUtilsMessengerCreateInfoEXT -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (DebugUtilsMessengerEXT)+createDebugUtilsMessengerEXT instance' createInfo allocator = evalContT $ do+ let vkCreateDebugUtilsMessengerEXT' = mkVkCreateDebugUtilsMessengerEXT (pVkCreateDebugUtilsMessengerEXT (instanceCmds (instance' :: Instance)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPMessenger <- ContT $ bracket (callocBytes @DebugUtilsMessengerEXT 8) free+ r <- lift $ vkCreateDebugUtilsMessengerEXT' (instanceHandle (instance')) pCreateInfo pAllocator (pPMessenger)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pMessenger <- lift $ peek @DebugUtilsMessengerEXT pPMessenger+ pure $ (pMessenger)++-- | A safe wrapper for 'createDebugUtilsMessengerEXT' and+-- 'destroyDebugUtilsMessengerEXT' using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withDebugUtilsMessengerEXT :: Instance -> DebugUtilsMessengerCreateInfoEXT -> Maybe AllocationCallbacks -> (DebugUtilsMessengerEXT -> IO r) -> IO r+withDebugUtilsMessengerEXT instance' debugUtilsMessengerCreateInfoEXT allocationCallbacks =+ bracket+ (createDebugUtilsMessengerEXT instance' debugUtilsMessengerCreateInfoEXT allocationCallbacks)+ (\o -> destroyDebugUtilsMessengerEXT instance' o allocationCallbacks)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDestroyDebugUtilsMessengerEXT+ :: FunPtr (Ptr Instance_T -> DebugUtilsMessengerEXT -> Ptr AllocationCallbacks -> IO ()) -> Ptr Instance_T -> DebugUtilsMessengerEXT -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyDebugUtilsMessengerEXT - Destroy a debug messenger object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' the instance where the+-- callback was created.+--+-- - @messenger@ the+-- 'Graphics.Vulkan.Extensions.Handles.DebugUtilsMessengerEXT' object+-- to destroy. @messenger@ is an externally synchronized object and+-- /must/ not be used on more than one thread at a time. This means+-- that 'destroyDebugUtilsMessengerEXT' /must/ not be called when a+-- callback is active.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- == Valid Usage+--+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when @messenger@ was created, a compatible set of+-- callbacks /must/ be provided here+--+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when @messenger@ was created, @pAllocator@ /must/ be+-- @NULL@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle+--+-- - @messenger@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.DebugUtilsMessengerEXT' handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @messenger@ /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Instance'+--+-- == Host Synchronization+--+-- - Host access to @messenger@ /must/ be externally synchronized+--+-- The application /must/ ensure that 'destroyDebugUtilsMessengerEXT' is+-- not executed in parallel with any Vulkan command that is also called+-- with 'Graphics.Vulkan.Core10.Handles.Instance' or child of+-- 'Graphics.Vulkan.Core10.Handles.Instance' as the dispatchable argument.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Extensions.Handles.DebugUtilsMessengerEXT',+-- 'Graphics.Vulkan.Core10.Handles.Instance'+destroyDebugUtilsMessengerEXT :: Instance -> DebugUtilsMessengerEXT -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyDebugUtilsMessengerEXT instance' messenger allocator = evalContT $ do+ let vkDestroyDebugUtilsMessengerEXT' = mkVkDestroyDebugUtilsMessengerEXT (pVkDestroyDebugUtilsMessengerEXT (instanceCmds (instance' :: Instance)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyDebugUtilsMessengerEXT' (instanceHandle (instance')) (messenger) pAllocator+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkSubmitDebugUtilsMessageEXT+ :: FunPtr (Ptr Instance_T -> DebugUtilsMessageSeverityFlagBitsEXT -> DebugUtilsMessageTypeFlagsEXT -> Ptr DebugUtilsMessengerCallbackDataEXT -> IO ()) -> Ptr Instance_T -> DebugUtilsMessageSeverityFlagBitsEXT -> DebugUtilsMessageTypeFlagsEXT -> Ptr DebugUtilsMessengerCallbackDataEXT -> IO ()++-- | vkSubmitDebugUtilsMessageEXT - Inject a message into a debug stream+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' is the debug stream’s+-- 'Graphics.Vulkan.Core10.Handles.Instance'.+--+-- - @messageSeverity@ is the 'DebugUtilsMessageSeverityFlagBitsEXT'+-- severity of this event\/message.+--+-- - @messageTypes@ is a bitmask of 'DebugUtilsMessageTypeFlagBitsEXT'+-- specifying which type of event(s) to identify with this message.+--+-- - @pCallbackData@ contains all the callback related data in the+-- 'DebugUtilsMessengerCallbackDataEXT' structure.+--+-- = Description+--+-- The call will propagate through the layers and generate callback(s) as+-- indicated by the message’s flags. The parameters are passed on to the+-- callback in addition to the @pUserData@ value that was defined at the+-- time the messenger was registered.+--+-- == Valid Usage+--+-- - The 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' member of+-- each element of @pCallbackData->pObjects@ /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_UNKNOWN'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle+--+-- - @messageSeverity@ /must/ be a valid+-- 'DebugUtilsMessageSeverityFlagBitsEXT' value+--+-- - @messageTypes@ /must/ be a valid combination of+-- 'DebugUtilsMessageTypeFlagBitsEXT' values+--+-- - @messageTypes@ /must/ not be @0@+--+-- - @pCallbackData@ /must/ be a valid pointer to a valid+-- 'DebugUtilsMessengerCallbackDataEXT' structure+--+-- = See Also+--+-- 'DebugUtilsMessageSeverityFlagBitsEXT', 'DebugUtilsMessageTypeFlagsEXT',+-- 'DebugUtilsMessengerCallbackDataEXT',+-- 'Graphics.Vulkan.Core10.Handles.Instance'+submitDebugUtilsMessageEXT :: Instance -> DebugUtilsMessageSeverityFlagBitsEXT -> ("messageTypes" ::: DebugUtilsMessageTypeFlagsEXT) -> DebugUtilsMessengerCallbackDataEXT -> IO ()+submitDebugUtilsMessageEXT instance' messageSeverity messageTypes callbackData = evalContT $ do+ let vkSubmitDebugUtilsMessageEXT' = mkVkSubmitDebugUtilsMessageEXT (pVkSubmitDebugUtilsMessageEXT (instanceCmds (instance' :: Instance)))+ pCallbackData <- ContT $ withCStruct (callbackData)+ lift $ vkSubmitDebugUtilsMessageEXT' (instanceHandle (instance')) (messageSeverity) (messageTypes) pCallbackData+ pure $ ()+++-- | VkDebugUtilsObjectNameInfoEXT - Specify parameters of a name to give to+-- an object+--+-- = Description+--+-- Applications /may/ change the name associated with an object simply by+-- calling 'setDebugUtilsObjectNameEXT' again with a new string. If+-- @pObjectName@ is an empty string, then any previously set name is+-- removed.+--+-- == Valid Usage+--+-- - If 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' is+-- 'Graphics.Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_UNKNOWN',+-- @objectHandle@ /must/ not be+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- - If 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' is not+-- 'Graphics.Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_UNKNOWN',+-- @objectHandle@ /must/ be+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' or a valid Vulkan+-- handle of the type associated with+-- 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' as defined in+-- the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-object-types VkObjectType and Vulkan Handle Relationship>+-- table+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT'+--+-- - @pNext@ /must/ be @NULL@+--+-- - 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' /must/ be a+-- valid 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' value+--+-- - @pObjectName@ /must/ be a null-terminated UTF-8 string+--+-- = See Also+--+-- 'DebugUtilsMessengerCallbackDataEXT',+-- 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'setDebugUtilsObjectNameEXT'+data DebugUtilsObjectNameInfoEXT = DebugUtilsObjectNameInfoEXT+ { -- | 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' is a+ -- 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' specifying the type+ -- of the object to be named.+ objectType :: ObjectType+ , -- | @objectHandle@ is the object to be named.+ objectHandle :: Word64+ , -- | @pObjectName@ is a null-terminated UTF-8 string specifying the name to+ -- apply to @objectHandle@.+ objectName :: ByteString+ }+ deriving (Typeable)+deriving instance Show DebugUtilsObjectNameInfoEXT++instance ToCStruct DebugUtilsObjectNameInfoEXT where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DebugUtilsObjectNameInfoEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr ObjectType)) (objectType)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word64)) (objectHandle)+ pObjectName'' <- ContT $ useAsCString (objectName)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CChar))) pObjectName''+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr ObjectType)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)+ pObjectName'' <- ContT $ useAsCString (mempty)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CChar))) pObjectName''+ lift $ f++instance FromCStruct DebugUtilsObjectNameInfoEXT where+ peekCStruct p = do+ objectType <- peek @ObjectType ((p `plusPtr` 16 :: Ptr ObjectType))+ objectHandle <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))+ pObjectName <- packCString =<< peek ((p `plusPtr` 32 :: Ptr (Ptr CChar)))+ pure $ DebugUtilsObjectNameInfoEXT+ objectType objectHandle pObjectName++instance Zero DebugUtilsObjectNameInfoEXT where+ zero = DebugUtilsObjectNameInfoEXT+ zero+ zero+ mempty+++-- | VkDebugUtilsObjectTagInfoEXT - Specify parameters of a tag to attach to+-- an object+--+-- = Description+--+-- The @tagName@ parameter gives a name or identifier to the type of data+-- being tagged. This can be used by debugging layers to easily filter for+-- only data that can be used by that implementation.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'setDebugUtilsObjectTagEXT'+data DebugUtilsObjectTagInfoEXT = DebugUtilsObjectTagInfoEXT+ { -- | 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' value+ objectType :: ObjectType+ , -- | @objectHandle@ /must/ be a valid Vulkan handle of the type associated+ -- with 'Graphics.Vulkan.Core10.Enums.ObjectType.ObjectType' as defined in+ -- the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-object-types VkObjectType and Vulkan Handle Relationship>+ -- table+ objectHandle :: Word64+ , -- | @tagName@ is a numerical identifier of the tag.+ tagName :: Word64+ , -- | @tagSize@ /must/ be greater than @0@+ tagSize :: Word64+ , -- | @pTag@ /must/ be a valid pointer to an array of @tagSize@ bytes+ tag :: Ptr ()+ }+ deriving (Typeable)+deriving instance Show DebugUtilsObjectTagInfoEXT++instance ToCStruct DebugUtilsObjectTagInfoEXT where+ withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DebugUtilsObjectTagInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ObjectType)) (objectType)+ poke ((p `plusPtr` 24 :: Ptr Word64)) (objectHandle)+ poke ((p `plusPtr` 32 :: Ptr Word64)) (tagName)+ poke ((p `plusPtr` 40 :: Ptr CSize)) (CSize (tagSize))+ poke ((p `plusPtr` 48 :: Ptr (Ptr ()))) (tag)+ f+ cStructSize = 56+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ObjectType)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)+ poke ((p `plusPtr` 32 :: Ptr Word64)) (zero)+ poke ((p `plusPtr` 40 :: Ptr CSize)) (CSize (zero))+ poke ((p `plusPtr` 48 :: Ptr (Ptr ()))) (zero)+ f++instance FromCStruct DebugUtilsObjectTagInfoEXT where+ peekCStruct p = do+ objectType <- peek @ObjectType ((p `plusPtr` 16 :: Ptr ObjectType))+ objectHandle <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))+ tagName <- peek @Word64 ((p `plusPtr` 32 :: Ptr Word64))+ tagSize <- peek @CSize ((p `plusPtr` 40 :: Ptr CSize))+ pTag <- peek @(Ptr ()) ((p `plusPtr` 48 :: Ptr (Ptr ())))+ pure $ DebugUtilsObjectTagInfoEXT+ objectType objectHandle tagName ((\(CSize a) -> a) tagSize) pTag++instance Storable DebugUtilsObjectTagInfoEXT where+ sizeOf ~_ = 56+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DebugUtilsObjectTagInfoEXT where+ zero = DebugUtilsObjectTagInfoEXT+ zero+ zero+ zero+ zero+ zero+++-- | VkDebugUtilsLabelEXT - Specify parameters of a label region+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'DebugUtilsMessengerCallbackDataEXT',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'cmdBeginDebugUtilsLabelEXT', 'cmdInsertDebugUtilsLabelEXT',+-- 'queueBeginDebugUtilsLabelEXT', 'queueInsertDebugUtilsLabelEXT'+data DebugUtilsLabelEXT = DebugUtilsLabelEXT+ { -- | @pLabelName@ /must/ be a null-terminated UTF-8 string+ labelName :: ByteString+ , -- | @color@ is an optional RGBA color value that can be associated with the+ -- label. A particular implementation /may/ choose to ignore this color+ -- value. The values contain RGBA values in order, in the range 0.0 to 1.0.+ -- If all elements in @color@ are set to 0.0 then it is ignored.+ color :: (Float, Float, Float, Float)+ }+ deriving (Typeable)+deriving instance Show DebugUtilsLabelEXT++instance ToCStruct DebugUtilsLabelEXT where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DebugUtilsLabelEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pLabelName'' <- ContT $ useAsCString (labelName)+ lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CChar))) pLabelName''+ let pColor' = lowerArrayPtr ((p `plusPtr` 24 :: Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat)))+ lift $ case (color) of+ (e0, e1, e2, e3) -> do+ poke (pColor' :: Ptr CFloat) (CFloat (e0))+ poke (pColor' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+ poke (pColor' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))+ poke (pColor' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pLabelName'' <- ContT $ useAsCString (mempty)+ lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CChar))) pLabelName''+ lift $ f++instance FromCStruct DebugUtilsLabelEXT where+ peekCStruct p = do+ pLabelName <- packCString =<< peek ((p `plusPtr` 16 :: Ptr (Ptr CChar)))+ let pcolor = lowerArrayPtr @CFloat ((p `plusPtr` 24 :: Ptr (Data.Vector.Storable.Sized.Vector 4 CFloat)))+ color0 <- peek @CFloat ((pcolor `advancePtrBytes` 0 :: Ptr CFloat))+ color1 <- peek @CFloat ((pcolor `advancePtrBytes` 4 :: Ptr CFloat))+ color2 <- peek @CFloat ((pcolor `advancePtrBytes` 8 :: Ptr CFloat))+ color3 <- peek @CFloat ((pcolor `advancePtrBytes` 12 :: Ptr CFloat))+ pure $ DebugUtilsLabelEXT+ pLabelName ((((\(CFloat a) -> a) color0), ((\(CFloat a) -> a) color1), ((\(CFloat a) -> a) color2), ((\(CFloat a) -> a) color3)))++instance Zero DebugUtilsLabelEXT where+ zero = DebugUtilsLabelEXT+ mempty+ (zero, zero, zero, zero)+++-- | VkDebugUtilsMessengerCreateInfoEXT - Structure specifying parameters of+-- a newly created debug messenger+--+-- = Description+--+-- For each 'Graphics.Vulkan.Extensions.Handles.DebugUtilsMessengerEXT'+-- that is created the+-- 'DebugUtilsMessengerCreateInfoEXT'::@messageSeverity@ and+-- 'DebugUtilsMessengerCreateInfoEXT'::@messageType@ determine when that+-- 'DebugUtilsMessengerCreateInfoEXT'::@pfnUserCallback@ is called. The+-- process to determine if the user’s @pfnUserCallback@ is triggered when+-- an event occurs is as follows:+--+-- 1. The implementation will perform a bitwise AND of the event’s+-- 'DebugUtilsMessageSeverityFlagBitsEXT' with the @messageSeverity@+-- provided during creation of the+-- 'Graphics.Vulkan.Extensions.Handles.DebugUtilsMessengerEXT' object.+--+-- 1. If the value is 0, the message is skipped.+--+-- 2. The implementation will perform bitwise AND of the event’s+-- 'DebugUtilsMessageTypeFlagBitsEXT' with the @messageType@ provided+-- during the creation of the+-- 'Graphics.Vulkan.Extensions.Handles.DebugUtilsMessengerEXT' object.+--+-- 1. If the value is 0, the message is skipped.+--+-- 3. The callback will trigger a debug message for the current event+--+-- The callback will come directly from the component that detected the+-- event, unless some other layer intercepts the calls for its own purposes+-- (filter them in a different way, log to a system error log, etc.).+--+-- An application /can/ receive multiple callbacks if multiple+-- 'Graphics.Vulkan.Extensions.Handles.DebugUtilsMessengerEXT' objects are+-- created. A callback will always be executed in the same thread as the+-- originating Vulkan call.+--+-- A callback /can/ be called from multiple threads simultaneously (if the+-- application is making Vulkan calls from multiple threads).+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'PFN_vkDebugUtilsMessengerCallbackEXT',+-- 'DebugUtilsMessageSeverityFlagsEXT', 'DebugUtilsMessageTypeFlagsEXT',+-- 'DebugUtilsMessengerCreateFlagsEXT',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createDebugUtilsMessengerEXT'+data DebugUtilsMessengerCreateInfoEXT = DebugUtilsMessengerCreateInfoEXT+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+ flags :: DebugUtilsMessengerCreateFlagsEXT+ , -- | @messageSeverity@ /must/ not be @0@+ messageSeverity :: DebugUtilsMessageSeverityFlagsEXT+ , -- | @messageType@ /must/ not be @0@+ messageType :: DebugUtilsMessageTypeFlagsEXT+ , -- | @pfnUserCallback@ /must/ be a valid+ -- 'PFN_vkDebugUtilsMessengerCallbackEXT' value+ pfnUserCallback :: PFN_vkDebugUtilsMessengerCallbackEXT+ , -- | @pUserData@ is user data to be passed to the callback.+ userData :: Ptr ()+ }+ deriving (Typeable)+deriving instance Show DebugUtilsMessengerCreateInfoEXT++instance ToCStruct DebugUtilsMessengerCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DebugUtilsMessengerCreateInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DebugUtilsMessengerCreateFlagsEXT)) (flags)+ poke ((p `plusPtr` 20 :: Ptr DebugUtilsMessageSeverityFlagsEXT)) (messageSeverity)+ poke ((p `plusPtr` 24 :: Ptr DebugUtilsMessageTypeFlagsEXT)) (messageType)+ poke ((p `plusPtr` 32 :: Ptr PFN_vkDebugUtilsMessengerCallbackEXT)) (pfnUserCallback)+ poke ((p `plusPtr` 40 :: Ptr (Ptr ()))) (userData)+ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 20 :: Ptr DebugUtilsMessageSeverityFlagsEXT)) (zero)+ poke ((p `plusPtr` 24 :: Ptr DebugUtilsMessageTypeFlagsEXT)) (zero)+ poke ((p `plusPtr` 32 :: Ptr PFN_vkDebugUtilsMessengerCallbackEXT)) (zero)+ f++instance FromCStruct DebugUtilsMessengerCreateInfoEXT where+ peekCStruct p = do+ flags <- peek @DebugUtilsMessengerCreateFlagsEXT ((p `plusPtr` 16 :: Ptr DebugUtilsMessengerCreateFlagsEXT))+ messageSeverity <- peek @DebugUtilsMessageSeverityFlagsEXT ((p `plusPtr` 20 :: Ptr DebugUtilsMessageSeverityFlagsEXT))+ messageType <- peek @DebugUtilsMessageTypeFlagsEXT ((p `plusPtr` 24 :: Ptr DebugUtilsMessageTypeFlagsEXT))+ pfnUserCallback <- peek @PFN_vkDebugUtilsMessengerCallbackEXT ((p `plusPtr` 32 :: Ptr PFN_vkDebugUtilsMessengerCallbackEXT))+ pUserData <- peek @(Ptr ()) ((p `plusPtr` 40 :: Ptr (Ptr ())))+ pure $ DebugUtilsMessengerCreateInfoEXT+ flags messageSeverity messageType pfnUserCallback pUserData++instance Storable DebugUtilsMessengerCreateInfoEXT where+ sizeOf ~_ = 48+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DebugUtilsMessengerCreateInfoEXT where+ zero = DebugUtilsMessengerCreateInfoEXT+ zero+ zero+ zero+ zero+ zero+++-- | VkDebugUtilsMessengerCallbackDataEXT - Structure specifying parameters+-- returned to the callback+--+-- = Description+--+-- Note+--+-- This structure should only be considered valid during the lifetime of+-- the triggered callback.+--+-- Since adding queue and command buffer labels behaves like pushing and+-- popping onto a stack, the order of both @pQueueLabels@ and+-- @pCmdBufLabels@ is based on the order the labels were defined. The+-- result is that the first label in either @pQueueLabels@ or+-- @pCmdBufLabels@ will be the first defined (and therefore the oldest)+-- while the last label in each list will be the most recent.+--+-- Note+--+-- @pQueueLabels@ will only be non-NULL if one of the objects in @pObjects@+-- can be related directly to a defined+-- 'Graphics.Vulkan.Core10.Handles.Queue' which has had one or more labels+-- associated with it.+--+-- Likewise, @pCmdBufLabels@ will only be non-NULL if one of the objects in+-- @pObjects@ can be related directly to a defined+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' which has had one or more+-- labels associated with it. Additionally, while command buffer labels+-- allow for beginning and ending across different command buffers, the+-- debug messaging framework /cannot/ guarantee that labels in+-- @pCmdBufLables@ will contain those defined outside of the associated+-- command buffer. This is partially due to the fact that the association+-- of one command buffer with another may not have been defined at the time+-- the debug message is triggered.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT'+--+-- - @pNext@ /must/ be @NULL@+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+--+-- - If @pMessageIdName@ is not @NULL@, @pMessageIdName@ /must/ be a+-- null-terminated UTF-8 string+--+-- - @pMessage@ /must/ be a null-terminated UTF-8 string+--+-- - If @queueLabelCount@ is not @0@, @pQueueLabels@ /must/ be a valid+-- pointer to an array of @queueLabelCount@ valid 'DebugUtilsLabelEXT'+-- structures+--+-- - If @cmdBufLabelCount@ is not @0@, @pCmdBufLabels@ /must/ be a valid+-- pointer to an array of @cmdBufLabelCount@ valid 'DebugUtilsLabelEXT'+-- structures+--+-- - If @objectCount@ is not @0@, @pObjects@ /must/ be a valid pointer to+-- an array of @objectCount@ valid 'DebugUtilsObjectNameInfoEXT'+-- structures+--+-- = See Also+--+-- 'DebugUtilsLabelEXT', 'DebugUtilsMessengerCallbackDataFlagsEXT',+-- 'DebugUtilsObjectNameInfoEXT',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'submitDebugUtilsMessageEXT'+data DebugUtilsMessengerCallbackDataEXT = DebugUtilsMessengerCallbackDataEXT+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is 0 and reserved for future+ -- use.+ flags :: DebugUtilsMessengerCallbackDataFlagsEXT+ , -- | @pMessageIdName@ is a null-terminated string that identifies the+ -- particular message ID that is associated with the provided message. If+ -- the message corresponds to a validation layer message, then this string+ -- may contain the portion of the Vulkan specification that is believed to+ -- have been violated.+ messageIdName :: Maybe ByteString+ , -- | @messageIdNumber@ is the ID number of the triggering message. If the+ -- message corresponds to a validation layer message, then this number is+ -- related to the internal number associated with the message being+ -- triggered.+ messageIdNumber :: Int32+ , -- | @pMessage@ is a null-terminated string detailing the trigger conditions.+ message :: ByteString+ , -- | @pQueueLabels@ is NULL or a pointer to an array of 'DebugUtilsLabelEXT'+ -- active in the current 'Graphics.Vulkan.Core10.Handles.Queue' at the time+ -- the callback was triggered. Refer to+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-queue-labels Queue Labels>+ -- for more information.+ queueLabels :: Vector DebugUtilsLabelEXT+ , -- | @pCmdBufLabels@ is NULL or a pointer to an array of 'DebugUtilsLabelEXT'+ -- active in the current 'Graphics.Vulkan.Core10.Handles.CommandBuffer' at+ -- the time the callback was triggered. Refer to+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-command-buffer-labels Command Buffer Labels>+ -- for more information.+ cmdBufLabels :: Vector DebugUtilsLabelEXT+ , -- | @pObjects@ is a pointer to an array of 'DebugUtilsObjectNameInfoEXT'+ -- objects related to the detected issue. The array is roughly in order or+ -- importance, but the 0th element is always guaranteed to be the most+ -- important object for this message.+ objects :: Vector DebugUtilsObjectNameInfoEXT+ }+ deriving (Typeable)+deriving instance Show DebugUtilsMessengerCallbackDataEXT++instance ToCStruct DebugUtilsMessengerCallbackDataEXT where+ withCStruct x f = allocaBytesAligned 96 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DebugUtilsMessengerCallbackDataEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr DebugUtilsMessengerCallbackDataFlagsEXT)) (flags)+ pMessageIdName'' <- case (messageIdName) of+ Nothing -> pure nullPtr+ Just j -> ContT $ useAsCString (j)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr CChar))) pMessageIdName''+ lift $ poke ((p `plusPtr` 32 :: Ptr Int32)) (messageIdNumber)+ pMessage'' <- ContT $ useAsCString (message)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr CChar))) pMessage''+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (queueLabels)) :: Word32))+ pPQueueLabels' <- ContT $ allocaBytesAligned @DebugUtilsLabelEXT ((Data.Vector.length (queueLabels)) * 40) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPQueueLabels' `plusPtr` (40 * (i)) :: Ptr DebugUtilsLabelEXT) (e) . ($ ())) (queueLabels)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr DebugUtilsLabelEXT))) (pPQueueLabels')+ lift $ poke ((p `plusPtr` 64 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (cmdBufLabels)) :: Word32))+ pPCmdBufLabels' <- ContT $ allocaBytesAligned @DebugUtilsLabelEXT ((Data.Vector.length (cmdBufLabels)) * 40) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPCmdBufLabels' `plusPtr` (40 * (i)) :: Ptr DebugUtilsLabelEXT) (e) . ($ ())) (cmdBufLabels)+ lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr DebugUtilsLabelEXT))) (pPCmdBufLabels')+ lift $ poke ((p `plusPtr` 80 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (objects)) :: Word32))+ pPObjects' <- ContT $ allocaBytesAligned @DebugUtilsObjectNameInfoEXT ((Data.Vector.length (objects)) * 40) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPObjects' `plusPtr` (40 * (i)) :: Ptr DebugUtilsObjectNameInfoEXT) (e) . ($ ())) (objects)+ lift $ poke ((p `plusPtr` 88 :: Ptr (Ptr DebugUtilsObjectNameInfoEXT))) (pPObjects')+ lift $ f+ cStructSize = 96+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pMessage'' <- ContT $ useAsCString (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr CChar))) pMessage''+ pPQueueLabels' <- ContT $ allocaBytesAligned @DebugUtilsLabelEXT ((Data.Vector.length (mempty)) * 40) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPQueueLabels' `plusPtr` (40 * (i)) :: Ptr DebugUtilsLabelEXT) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr DebugUtilsLabelEXT))) (pPQueueLabels')+ pPCmdBufLabels' <- ContT $ allocaBytesAligned @DebugUtilsLabelEXT ((Data.Vector.length (mempty)) * 40) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPCmdBufLabels' `plusPtr` (40 * (i)) :: Ptr DebugUtilsLabelEXT) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr DebugUtilsLabelEXT))) (pPCmdBufLabels')+ pPObjects' <- ContT $ allocaBytesAligned @DebugUtilsObjectNameInfoEXT ((Data.Vector.length (mempty)) * 40) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPObjects' `plusPtr` (40 * (i)) :: Ptr DebugUtilsObjectNameInfoEXT) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 88 :: Ptr (Ptr DebugUtilsObjectNameInfoEXT))) (pPObjects')+ lift $ f++instance FromCStruct DebugUtilsMessengerCallbackDataEXT where+ peekCStruct p = do+ flags <- peek @DebugUtilsMessengerCallbackDataFlagsEXT ((p `plusPtr` 16 :: Ptr DebugUtilsMessengerCallbackDataFlagsEXT))+ pMessageIdName <- peek @(Ptr CChar) ((p `plusPtr` 24 :: Ptr (Ptr CChar)))+ pMessageIdName' <- maybePeek (\j -> packCString (j)) pMessageIdName+ messageIdNumber <- peek @Int32 ((p `plusPtr` 32 :: Ptr Int32))+ pMessage <- packCString =<< peek ((p `plusPtr` 40 :: Ptr (Ptr CChar)))+ queueLabelCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+ pQueueLabels <- peek @(Ptr DebugUtilsLabelEXT) ((p `plusPtr` 56 :: Ptr (Ptr DebugUtilsLabelEXT)))+ pQueueLabels' <- generateM (fromIntegral queueLabelCount) (\i -> peekCStruct @DebugUtilsLabelEXT ((pQueueLabels `advancePtrBytes` (40 * (i)) :: Ptr DebugUtilsLabelEXT)))+ cmdBufLabelCount <- peek @Word32 ((p `plusPtr` 64 :: Ptr Word32))+ pCmdBufLabels <- peek @(Ptr DebugUtilsLabelEXT) ((p `plusPtr` 72 :: Ptr (Ptr DebugUtilsLabelEXT)))+ pCmdBufLabels' <- generateM (fromIntegral cmdBufLabelCount) (\i -> peekCStruct @DebugUtilsLabelEXT ((pCmdBufLabels `advancePtrBytes` (40 * (i)) :: Ptr DebugUtilsLabelEXT)))+ objectCount <- peek @Word32 ((p `plusPtr` 80 :: Ptr Word32))+ pObjects <- peek @(Ptr DebugUtilsObjectNameInfoEXT) ((p `plusPtr` 88 :: Ptr (Ptr DebugUtilsObjectNameInfoEXT)))+ pObjects' <- generateM (fromIntegral objectCount) (\i -> peekCStruct @DebugUtilsObjectNameInfoEXT ((pObjects `advancePtrBytes` (40 * (i)) :: Ptr DebugUtilsObjectNameInfoEXT)))+ pure $ DebugUtilsMessengerCallbackDataEXT+ flags pMessageIdName' messageIdNumber pMessage pQueueLabels' pCmdBufLabels' pObjects'++instance Zero DebugUtilsMessengerCallbackDataEXT where+ zero = DebugUtilsMessengerCallbackDataEXT+ zero+ Nothing+ zero+ mempty+ mempty+ mempty+ mempty+++-- No documentation found for TopLevel "VkDebugUtilsMessengerCreateFlagsEXT"+newtype DebugUtilsMessengerCreateFlagsEXT = DebugUtilsMessengerCreateFlagsEXT Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show DebugUtilsMessengerCreateFlagsEXT where+ showsPrec p = \case+ DebugUtilsMessengerCreateFlagsEXT x -> showParen (p >= 11) (showString "DebugUtilsMessengerCreateFlagsEXT 0x" . showHex x)++instance Read DebugUtilsMessengerCreateFlagsEXT where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "DebugUtilsMessengerCreateFlagsEXT")+ v <- step readPrec+ pure (DebugUtilsMessengerCreateFlagsEXT v)))+++-- No documentation found for TopLevel "VkDebugUtilsMessengerCallbackDataFlagsEXT"+newtype DebugUtilsMessengerCallbackDataFlagsEXT = DebugUtilsMessengerCallbackDataFlagsEXT Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show DebugUtilsMessengerCallbackDataFlagsEXT where+ showsPrec p = \case+ DebugUtilsMessengerCallbackDataFlagsEXT x -> showParen (p >= 11) (showString "DebugUtilsMessengerCallbackDataFlagsEXT 0x" . showHex x)++instance Read DebugUtilsMessengerCallbackDataFlagsEXT where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "DebugUtilsMessengerCallbackDataFlagsEXT")+ v <- step readPrec+ pure (DebugUtilsMessengerCallbackDataFlagsEXT v)))+++-- | VkDebugUtilsMessageSeverityFlagBitsEXT - Bitmask specifying which+-- severities of events cause a debug messenger callback+--+-- = See Also+--+-- 'DebugUtilsMessageSeverityFlagsEXT', 'submitDebugUtilsMessageEXT'+newtype DebugUtilsMessageSeverityFlagBitsEXT = DebugUtilsMessageSeverityFlagBitsEXT Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT' specifies the most+-- verbose output indicating all diagnostic messages from the Vulkan+-- loader, layers, and drivers should be captured.+pattern DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = DebugUtilsMessageSeverityFlagBitsEXT 0x00000001+-- | 'DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT' specifies an informational+-- message such as resource details that may be handy when debugging an+-- application.+pattern DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = DebugUtilsMessageSeverityFlagBitsEXT 0x00000010+-- | 'DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT' specifies use of Vulkan+-- that /may/ expose an app bug. Such cases may not be immediately harmful,+-- such as a fragment shader outputting to a location with no attachment.+-- Other cases /may/ point to behavior that is almost certainly bad when+-- unintended such as using an image whose memory has not been filled. In+-- general if you see a warning but you know that the behavior is+-- intended\/desired, then simply ignore the warning.+pattern DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = DebugUtilsMessageSeverityFlagBitsEXT 0x00000100+-- | 'DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT' specifies that the+-- application has violated a valid usage condition of the specification.+pattern DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = DebugUtilsMessageSeverityFlagBitsEXT 0x00001000++type DebugUtilsMessageSeverityFlagsEXT = DebugUtilsMessageSeverityFlagBitsEXT++instance Show DebugUtilsMessageSeverityFlagBitsEXT where+ showsPrec p = \case+ DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT -> showString "DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT"+ DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT -> showString "DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT"+ DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT -> showString "DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT"+ DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT -> showString "DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT"+ DebugUtilsMessageSeverityFlagBitsEXT x -> showParen (p >= 11) (showString "DebugUtilsMessageSeverityFlagBitsEXT 0x" . showHex x)++instance Read DebugUtilsMessageSeverityFlagBitsEXT where+ readPrec = parens (choose [("DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT", pure DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT)+ , ("DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT", pure DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT)+ , ("DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT", pure DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT)+ , ("DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT", pure DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT)]+ ++++ prec 10 (do+ expectP (Ident "DebugUtilsMessageSeverityFlagBitsEXT")+ v <- step readPrec+ pure (DebugUtilsMessageSeverityFlagBitsEXT v)))+++-- | VkDebugUtilsMessageTypeFlagBitsEXT - Bitmask specifying which types of+-- events cause a debug messenger callback+--+-- = See Also+--+-- 'DebugUtilsMessageTypeFlagsEXT'+newtype DebugUtilsMessageTypeFlagBitsEXT = DebugUtilsMessageTypeFlagBitsEXT Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT' specifies that some general+-- event has occurred. This is typically a non-specification,+-- non-performance event.+pattern DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = DebugUtilsMessageTypeFlagBitsEXT 0x00000001+-- | 'DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT' specifies that something+-- has occurred during validation against the Vulkan specification that may+-- indicate invalid behavior.+pattern DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = DebugUtilsMessageTypeFlagBitsEXT 0x00000002+-- | 'DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT' specifies a potentially+-- non-optimal use of Vulkan, e.g. using+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdClearColorImage' when+-- setting 'Graphics.Vulkan.Core10.Pass.AttachmentDescription'::@loadOp@ to+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'+-- would have worked.+pattern DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = DebugUtilsMessageTypeFlagBitsEXT 0x00000004++type DebugUtilsMessageTypeFlagsEXT = DebugUtilsMessageTypeFlagBitsEXT++instance Show DebugUtilsMessageTypeFlagBitsEXT where+ showsPrec p = \case+ DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT -> showString "DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT"+ DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT -> showString "DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT"+ DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT -> showString "DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT"+ DebugUtilsMessageTypeFlagBitsEXT x -> showParen (p >= 11) (showString "DebugUtilsMessageTypeFlagBitsEXT 0x" . showHex x)++instance Read DebugUtilsMessageTypeFlagBitsEXT where+ readPrec = parens (choose [("DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT", pure DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT)+ , ("DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT", pure DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT)+ , ("DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT", pure DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT)]+ ++++ prec 10 (do+ expectP (Ident "DebugUtilsMessageTypeFlagBitsEXT")+ v <- step readPrec+ pure (DebugUtilsMessageTypeFlagBitsEXT v)))+++type FN_vkDebugUtilsMessengerCallbackEXT = DebugUtilsMessageSeverityFlagBitsEXT -> ("messageTypes" ::: DebugUtilsMessageTypeFlagsEXT) -> ("pCallbackData" ::: Ptr DebugUtilsMessengerCallbackDataEXT) -> ("pUserData" ::: Ptr ()) -> IO Bool32+-- | PFN_vkDebugUtilsMessengerCallbackEXT - Application-defined debug+-- messenger callback function+--+-- = Parameters+--+-- - @messageSeverity@ specifies the+-- 'DebugUtilsMessageSeverityFlagBitsEXT' that triggered this callback.+--+-- - @messageTypes@ is a bitmask of 'DebugUtilsMessageTypeFlagBitsEXT'+-- specifying which type of event(s) triggered this callback.+--+-- - @pCallbackData@ contains all the callback related data in the+-- 'DebugUtilsMessengerCallbackDataEXT' structure.+--+-- - @pUserData@ is the user data provided when the+-- 'Graphics.Vulkan.Extensions.Handles.DebugUtilsMessengerEXT' was+-- created.+--+-- = Description+--+-- The callback /must/ not call 'destroyDebugUtilsMessengerEXT'.+--+-- The callback returns a 'Graphics.Vulkan.Core10.BaseType.Bool32', which+-- is interpreted in a layer-specified manner. The application /should/+-- always return 'Graphics.Vulkan.Core10.BaseType.FALSE'. The+-- 'Graphics.Vulkan.Core10.BaseType.TRUE' value is reserved for use in+-- layer development.+--+-- = See Also+--+-- 'DebugUtilsMessengerCreateInfoEXT'+type PFN_vkDebugUtilsMessengerCallbackEXT = FunPtr FN_vkDebugUtilsMessengerCallbackEXT+++type EXT_DEBUG_UTILS_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_DEBUG_UTILS_SPEC_VERSION"+pattern EXT_DEBUG_UTILS_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_DEBUG_UTILS_SPEC_VERSION = 1+++type EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils"++-- No documentation found for TopLevel "VK_EXT_DEBUG_UTILS_EXTENSION_NAME"+pattern EXT_DEBUG_UTILS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_debug_utils.hs-boot view
@@ -0,0 +1,64 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_debug_utils ( DebugUtilsLabelEXT+ , DebugUtilsMessengerCallbackDataEXT+ , DebugUtilsMessengerCreateInfoEXT+ , DebugUtilsObjectNameInfoEXT+ , DebugUtilsObjectTagInfoEXT+ , DebugUtilsMessageSeverityFlagBitsEXT+ , DebugUtilsMessageSeverityFlagsEXT+ , DebugUtilsMessageTypeFlagBitsEXT+ , DebugUtilsMessageTypeFlagsEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data DebugUtilsLabelEXT++instance ToCStruct DebugUtilsLabelEXT+instance Show DebugUtilsLabelEXT++instance FromCStruct DebugUtilsLabelEXT+++data DebugUtilsMessengerCallbackDataEXT++instance ToCStruct DebugUtilsMessengerCallbackDataEXT+instance Show DebugUtilsMessengerCallbackDataEXT++instance FromCStruct DebugUtilsMessengerCallbackDataEXT+++data DebugUtilsMessengerCreateInfoEXT++instance ToCStruct DebugUtilsMessengerCreateInfoEXT+instance Show DebugUtilsMessengerCreateInfoEXT++instance FromCStruct DebugUtilsMessengerCreateInfoEXT+++data DebugUtilsObjectNameInfoEXT++instance ToCStruct DebugUtilsObjectNameInfoEXT+instance Show DebugUtilsObjectNameInfoEXT++instance FromCStruct DebugUtilsObjectNameInfoEXT+++data DebugUtilsObjectTagInfoEXT++instance ToCStruct DebugUtilsObjectTagInfoEXT+instance Show DebugUtilsObjectTagInfoEXT++instance FromCStruct DebugUtilsObjectTagInfoEXT+++data DebugUtilsMessageSeverityFlagBitsEXT++type DebugUtilsMessageSeverityFlagsEXT = DebugUtilsMessageSeverityFlagBitsEXT+++data DebugUtilsMessageTypeFlagBitsEXT++type DebugUtilsMessageTypeFlagsEXT = DebugUtilsMessageTypeFlagBitsEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs view
@@ -0,0 +1,211 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable ( PhysicalDeviceDepthClipEnableFeaturesEXT(..)+ , PipelineRasterizationDepthClipStateCreateInfoEXT(..)+ , PipelineRasterizationDepthClipStateCreateFlagsEXT(..)+ , EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION+ , pattern EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION+ , EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME+ , pattern EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+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 Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT))+-- | VkPhysicalDeviceDepthClipEnableFeaturesEXT - Structure indicating+-- support for explicit enable of depth clip+--+-- = Members+--+-- The members of the 'PhysicalDeviceDepthClipEnableFeaturesEXT' structure+-- describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceDepthClipEnableFeaturesEXT' structure is included+-- in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceDepthClipEnableFeaturesEXT' /can/ also be included in the+-- @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable this feature.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceDepthClipEnableFeaturesEXT = PhysicalDeviceDepthClipEnableFeaturesEXT+ { -- | @depthClipEnable@ indicates that the implementation supports setting the+ -- depth clipping operation explicitly via the+ -- 'PipelineRasterizationDepthClipStateCreateInfoEXT' pipeline state.+ -- Otherwise depth clipping is only enabled when+ -- 'Graphics.Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@depthClampEnable@+ -- is set to 'Graphics.Vulkan.Core10.BaseType.FALSE'.+ depthClipEnable :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceDepthClipEnableFeaturesEXT++instance ToCStruct PhysicalDeviceDepthClipEnableFeaturesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceDepthClipEnableFeaturesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (depthClipEnable))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceDepthClipEnableFeaturesEXT where+ peekCStruct p = do+ depthClipEnable <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceDepthClipEnableFeaturesEXT+ (bool32ToBool depthClipEnable)++instance Storable PhysicalDeviceDepthClipEnableFeaturesEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceDepthClipEnableFeaturesEXT where+ zero = PhysicalDeviceDepthClipEnableFeaturesEXT+ zero+++-- | VkPipelineRasterizationDepthClipStateCreateInfoEXT - Structure+-- specifying depth clipping state+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'PipelineRasterizationDepthClipStateCreateFlagsEXT',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineRasterizationDepthClipStateCreateInfoEXT = PipelineRasterizationDepthClipStateCreateInfoEXT+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+ flags :: PipelineRasterizationDepthClipStateCreateFlagsEXT+ , -- | @depthClipEnable@ controls whether depth clipping is enabled as+ -- described in+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>.+ depthClipEnable :: Bool+ }+ deriving (Typeable)+deriving instance Show PipelineRasterizationDepthClipStateCreateInfoEXT++instance ToCStruct PipelineRasterizationDepthClipStateCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineRasterizationDepthClipStateCreateInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr PipelineRasterizationDepthClipStateCreateFlagsEXT)) (flags)+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (depthClipEnable))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PipelineRasterizationDepthClipStateCreateInfoEXT where+ peekCStruct p = do+ flags <- peek @PipelineRasterizationDepthClipStateCreateFlagsEXT ((p `plusPtr` 16 :: Ptr PipelineRasterizationDepthClipStateCreateFlagsEXT))+ depthClipEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ pure $ PipelineRasterizationDepthClipStateCreateInfoEXT+ flags (bool32ToBool depthClipEnable)++instance Storable PipelineRasterizationDepthClipStateCreateInfoEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineRasterizationDepthClipStateCreateInfoEXT where+ zero = PipelineRasterizationDepthClipStateCreateInfoEXT+ zero+ zero+++-- | VkPipelineRasterizationDepthClipStateCreateFlagsEXT - Reserved for+-- future use+--+-- = Description+--+-- 'PipelineRasterizationDepthClipStateCreateFlagsEXT' is a bitmask type+-- for setting a mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'PipelineRasterizationDepthClipStateCreateInfoEXT'+newtype PipelineRasterizationDepthClipStateCreateFlagsEXT = PipelineRasterizationDepthClipStateCreateFlagsEXT Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show PipelineRasterizationDepthClipStateCreateFlagsEXT where+ showsPrec p = \case+ PipelineRasterizationDepthClipStateCreateFlagsEXT x -> showParen (p >= 11) (showString "PipelineRasterizationDepthClipStateCreateFlagsEXT 0x" . showHex x)++instance Read PipelineRasterizationDepthClipStateCreateFlagsEXT where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "PipelineRasterizationDepthClipStateCreateFlagsEXT")+ v <- step readPrec+ pure (PipelineRasterizationDepthClipStateCreateFlagsEXT v)))+++type EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION"+pattern EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1+++type EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable"++-- No documentation found for TopLevel "VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME"+pattern EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable ( PhysicalDeviceDepthClipEnableFeaturesEXT+ , PipelineRasterizationDepthClipStateCreateInfoEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceDepthClipEnableFeaturesEXT++instance ToCStruct PhysicalDeviceDepthClipEnableFeaturesEXT+instance Show PhysicalDeviceDepthClipEnableFeaturesEXT++instance FromCStruct PhysicalDeviceDepthClipEnableFeaturesEXT+++data PipelineRasterizationDepthClipStateCreateInfoEXT++instance ToCStruct PipelineRasterizationDepthClipStateCreateInfoEXT+instance Show PipelineRasterizationDepthClipStateCreateInfoEXT++instance FromCStruct PipelineRasterizationDepthClipStateCreateInfoEXT+
src/Graphics/Vulkan/Extensions/VK_EXT_depth_range_unrestricted.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_EXT_depth_range_unrestricted- ( pattern VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION- , pattern VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_EXT_depth_range_unrestricted ( EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION+ , pattern EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION+ , EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME+ , pattern EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION"+pattern EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 +type EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" --- No documentation found for TopLevel "VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION"-pattern VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION :: Integral a => a-pattern VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME"-pattern VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted"+pattern EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted"+
src/Graphics/Vulkan/Extensions/VK_EXT_descriptor_indexing.hs view
@@ -1,1031 +1,141 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing- ( VkDescriptorBindingFlagBitsEXT(..)- , pattern VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT- , pattern VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT- , pattern VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT- , pattern VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT- , pattern VK_ERROR_FRAGMENTATION_EXT- , pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT- , pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT- , pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT- , pattern VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT- , pattern VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT- , pattern VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION- , pattern VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME- , VkPhysicalDeviceDescriptorIndexingFeaturesEXT(..)- , VkPhysicalDeviceDescriptorIndexingPropertiesEXT(..)- , VkDescriptorSetLayoutBindingFlagsCreateInfoEXT(..)- , VkDescriptorSetVariableDescriptorCountAllocateInfoEXT(..)- , VkDescriptorSetVariableDescriptorCountLayoutSupportEXT(..)- , VkDescriptorBindingFlagsEXT- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DescriptorSet- ( VkDescriptorPoolCreateFlagBits(..)- , VkDescriptorSetLayoutCreateFlagBits(..)- )----- ** VkDescriptorBindingFlagBitsEXT---- | VkDescriptorBindingFlagBitsEXT - Bitmask specifying descriptor set--- layout binding properties------ = Description------ - @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ indicates that if--- descriptors in this binding are updated between when the descriptor--- set is bound in a command buffer and when that command buffer is--- submitted to a queue, then the submission will use the most recently--- set descriptors for this binding and the updates do not invalidate--- the command buffer. Descriptor bindings created with this flag are--- also partially exempt from the external synchronization requirement--- in--- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkUpdateDescriptorSetWithTemplateKHR'--- and 'Graphics.Vulkan.Core10.DescriptorSet.vkUpdateDescriptorSets'.--- They /can/ be updated concurrently with the set being bound to a--- command buffer in another thread, but not concurrently with the set--- being reset or freed.------ - @VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT@ indicates that--- descriptors in this binding that are not /dynamically used/ need not--- contain valid descriptors at the time the descriptors are consumed.--- A descriptor is dynamically used if any shader invocation executes--- an instruction that performs any memory access using the descriptor.------ - @VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT@--- indicates that descriptors in this binding /can/ be updated after a--- command buffer has bound this descriptor set, or while a command--- buffer that uses this descriptor set is pending execution, as long--- as the descriptors that are updated are not used by those command--- buffers. If @VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT@ is also--- set, then descriptors /can/ be updated as long as they are not--- dynamically used by any shader invocations. If--- @VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT@ is not set, then--- descriptors /can/ be updated as long as they are not statically used--- by any shader invocations.------ - @VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT@ indicates--- that this descriptor binding has a variable size that will be--- specified when a descriptor set is allocated using this layout. The--- value of @descriptorCount@ is treated as an upper bound on the size--- of the binding. This /must/ only be used for the last binding in the--- descriptor set layout (i.e. the binding with the largest value of--- @binding@). For the purposes of counting against limits such as--- @maxDescriptorSet@* and @maxPerStageDescriptor@*, the full value of--- @descriptorCount@ is counted.------ __Note__------ Note that while @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ and--- @VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT@ both involve--- updates to descriptor sets after they are bound,--- @VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT@ is a weaker--- requirement since it is only about descriptors that are not used,--- whereas @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ requires the--- implementation to observe updates to descriptors that are used.------ = See Also------ 'VkDescriptorBindingFlagsEXT'-newtype VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBitsEXT VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkDescriptorBindingFlagBitsEXT where- showsPrec _ VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = showString "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT"- showsPrec _ VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = showString "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT"- showsPrec _ VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = showString "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT"- showsPrec _ VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = showString "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT"- showsPrec p (VkDescriptorBindingFlagBitsEXT x) = showParen (p >= 11) (showString "VkDescriptorBindingFlagBitsEXT " . showsPrec 11 x)--instance Read VkDescriptorBindingFlagBitsEXT where- readPrec = parens ( choose [ ("VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT", pure VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT)- , ("VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT", pure VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT)- , ("VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT", pure VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT)- , ("VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT", pure VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT)- ] +++- prec 10 (do- expectP (Ident "VkDescriptorBindingFlagBitsEXT")- v <- step readPrec- pure (VkDescriptorBindingFlagBitsEXT v)- )- )---- No documentation found for Nested "VkDescriptorBindingFlagBitsEXT" "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT"-pattern VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT :: VkDescriptorBindingFlagBitsEXT-pattern VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = VkDescriptorBindingFlagBitsEXT 0x00000001---- No documentation found for Nested "VkDescriptorBindingFlagBitsEXT" "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT"-pattern VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT :: VkDescriptorBindingFlagBitsEXT-pattern VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = VkDescriptorBindingFlagBitsEXT 0x00000002---- No documentation found for Nested "VkDescriptorBindingFlagBitsEXT" "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT"-pattern VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT :: VkDescriptorBindingFlagBitsEXT-pattern VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = VkDescriptorBindingFlagBitsEXT 0x00000004---- No documentation found for Nested "VkDescriptorBindingFlagBitsEXT" "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT"-pattern VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT :: VkDescriptorBindingFlagBitsEXT-pattern VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = VkDescriptorBindingFlagBitsEXT 0x00000008--- No documentation found for Nested "VkResult" "VK_ERROR_FRAGMENTATION_EXT"-pattern VK_ERROR_FRAGMENTATION_EXT :: VkResult-pattern VK_ERROR_FRAGMENTATION_EXT = VkResult (-1000161000)--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT"-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = VkStructureType 1000161000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = VkStructureType 1000161001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = VkStructureType 1000161002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT"-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = VkStructureType 1000161003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT"-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = VkStructureType 1000161004--- | @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@--- specifies that descriptor sets using this layout /must/ be allocated--- from a descriptor pool created with the--- @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@ bit set.--- Descriptor set layouts created with this bit set have alternate limits--- for the maximum number of descriptors per-stage and per-pipeline layout.--- The non-UpdateAfterBind limits only count descriptors in sets created--- without this flag. The UpdateAfterBind limits count all descriptors, but--- the limits /may/ be higher than the non-UpdateAfterBind limits.-pattern VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT :: VkDescriptorSetLayoutCreateFlagBits-pattern VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = VkDescriptorSetLayoutCreateFlagBits 0x00000002--- | @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@ specifies that--- descriptor sets allocated from this pool /can/ include bindings with the--- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ bit set. It is valid--- to allocate descriptor sets that have bindings that don’t set the--- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ bit from a pool that--- has @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@ set.-pattern VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT :: VkDescriptorPoolCreateFlagBits-pattern VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = VkDescriptorPoolCreateFlagBits 0x00000002--- No documentation found for TopLevel "VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION"-pattern VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION :: Integral a => a-pattern VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2--- No documentation found for TopLevel "VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME"-pattern VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing"--- | VkPhysicalDeviceDescriptorIndexingFeaturesEXT - Structure describing--- descriptor indexing features that can be supported by an implementation------ = Members------ The members of the @VkPhysicalDeviceDescriptorIndexingFeaturesEXT@--- structure describe the following features:------ = Description------ - @shaderInputAttachmentArrayDynamicIndexing@ indicates whether arrays--- of input attachments /can/ be indexed by dynamically uniform integer--- expressions in shader code. If this feature is not enabled,--- resources with a descriptor type of--- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ /must/ be indexed only by--- constant integral expressions when aggregated into arrays in shader--- code. This also indicates whether shader modules /can/ declare the--- @InputAttachmentArrayDynamicIndexingEXT@ capability.------ - @shaderUniformTexelBufferArrayDynamicIndexing@ indicates whether--- arrays of uniform texel buffers /can/ be indexed by dynamically--- uniform integer expressions in shader code. If this feature is not--- enabled, resources with a descriptor type of--- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ /must/ be indexed only by--- constant integral expressions when aggregated into arrays in shader--- code. This also indicates whether shader modules /can/ declare the--- @UniformTexelBufferArrayDynamicIndexingEXT@ capability.------ - @shaderStorageTexelBufferArrayDynamicIndexing@ indicates whether--- arrays of storage texel buffers /can/ be indexed by dynamically--- uniform integer expressions in shader code. If this feature is not--- enabled, resources with a descriptor type of--- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ /must/ be indexed only by--- constant integral expressions when aggregated into arrays in shader--- code. This also indicates whether shader modules /can/ declare the--- @StorageTexelBufferArrayDynamicIndexingEXT@ capability.------ - @shaderUniformBufferArrayNonUniformIndexing@ indicates whether--- arrays of uniform buffers /can/ be indexed by non-uniform integer--- expressions in shader code. If this feature is not enabled,--- resources with a descriptor type of--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ /must/ not be indexed by--- non-uniform integer expressions when aggregated into arrays in--- shader code. This also indicates whether shader modules /can/--- declare the @UniformBufferArrayNonUniformIndexingEXT@ capability.------ - @shaderSampledImageArrayNonUniformIndexing@ indicates whether arrays--- of samplers or sampled images /can/ be indexed by non-uniform--- integer expressions in shader code. If this feature is not enabled,--- resources with a descriptor type of @VK_DESCRIPTOR_TYPE_SAMPLER@,--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@, or--- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@ /must/ not be indexed by--- non-uniform integer expressions when aggregated into arrays in--- shader code. This also indicates whether shader modules /can/--- declare the @SampledImageArrayNonUniformIndexingEXT@ capability.------ - @shaderStorageBufferArrayNonUniformIndexing@ indicates whether--- arrays of storage buffers /can/ be indexed by non-uniform integer--- expressions in shader code. If this feature is not enabled,--- resources with a descriptor type of--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ /must/ not be indexed by--- non-uniform integer expressions when aggregated into arrays in--- shader code. This also indicates whether shader modules /can/--- declare the @StorageBufferArrayNonUniformIndexingEXT@ capability.------ - @shaderStorageImageArrayNonUniformIndexing@ indicates whether arrays--- of storage images /can/ be indexed by non-uniform integer--- expressions in shader code. If this feature is not enabled,--- resources with a descriptor type of--- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@ /must/ not be indexed by--- non-uniform integer expressions when aggregated into arrays in--- shader code. This also indicates whether shader modules /can/--- declare the @StorageImageArrayNonUniformIndexingEXT@ capability.------ - @shaderInputAttachmentArrayNonUniformIndexing@ indicates whether--- arrays of input attachments /can/ be indexed by non-uniform integer--- expressions in shader code. If this feature is not enabled,--- resources with a descriptor type of--- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ /must/ not be indexed by--- non-uniform integer expressions when aggregated into arrays in--- shader code. This also indicates whether shader modules /can/--- declare the @InputAttachmentArrayNonUniformIndexingEXT@ capability.------ - @shaderUniformTexelBufferArrayNonUniformIndexing@ indicates whether--- arrays of uniform texel buffers /can/ be indexed by non-uniform--- integer expressions in shader code. If this feature is not enabled,--- resources with a descriptor type of--- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ /must/ not be indexed by--- non-uniform integer expressions when aggregated into arrays in--- shader code. This also indicates whether shader modules /can/--- declare the @UniformTexelBufferArrayNonUniformIndexingEXT@--- capability.------ - @shaderStorageTexelBufferArrayNonUniformIndexing@ indicates whether--- arrays of storage texel buffers /can/ be indexed by non-uniform--- integer expressions in shader code. If this feature is not enabled,--- resources with a descriptor type of--- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ /must/ not be indexed by--- non-uniform integer expressions when aggregated into arrays in--- shader code. This also indicates whether shader modules /can/--- declare the @StorageTexelBufferArrayNonUniformIndexingEXT@--- capability.------ - @descriptorBindingUniformBufferUpdateAfterBind@ indicates whether--- the implementation supports updating uniform buffer descriptors--- after a set is bound. If this feature is not enabled,--- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ /must/ not be used--- with @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@.------ - @descriptorBindingSampledImageUpdateAfterBind@ indicates whether the--- implementation supports updating sampled image descriptors after a--- set is bound. If this feature is not enabled,--- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ /must/ not be used--- with @VK_DESCRIPTOR_TYPE_SAMPLER@,--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@, or--- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@.------ - @descriptorBindingStorageImageUpdateAfterBind@ indicates whether the--- implementation supports updating storage image descriptors after a--- set is bound. If this feature is not enabled,--- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ /must/ not be used--- with @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@.------ - @descriptorBindingStorageBufferUpdateAfterBind@ indicates whether--- the implementation supports updating storage buffer descriptors--- after a set is bound. If this feature is not enabled,--- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ /must/ not be used--- with @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@.------ - @descriptorBindingUniformTexelBufferUpdateAfterBind@ indicates--- whether the implementation supports updating uniform texel buffer--- descriptors after a set is bound. If this feature is not enabled,--- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ /must/ not be used--- with @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@.------ - @descriptorBindingStorageTexelBufferUpdateAfterBind@ indicates--- whether the implementation supports updating storage texel buffer--- descriptors after a set is bound. If this feature is not enabled,--- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@ /must/ not be used--- with @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@.------ - @descriptorBindingUpdateUnusedWhilePending@ indicates whether the--- implementation supports updating descriptors while the set is in--- use. If this feature is not enabled,--- @VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT@ /must/--- not be used.------ - @descriptorBindingPartiallyBound@ indicates whether the--- implementation supports statically using a descriptor set binding in--- which some descriptors are not valid. If this feature is not--- enabled, @VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT@ /must/ not--- be used.------ - @descriptorBindingVariableDescriptorCount@ indicates whether the--- implementation supports descriptor sets with a variable-sized last--- binding. If this feature is not enabled,--- @VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT@ /must/ not--- be used.------ - @runtimeDescriptorArray@ indicates whether the implementation--- supports the SPIR-V RuntimeDescriptorArrayEXT capability. If this--- feature is not enabled, descriptors /must/ not be declared in--- runtime arrays.------ If the @VkPhysicalDeviceDescriptorIndexingFeaturesEXT@ structure is--- included in the @pNext@ chain of--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.VkPhysicalDeviceFeatures2KHR',--- it is filled with values indicating whether each feature is supported.--- @VkPhysicalDeviceDescriptorIndexingFeaturesEXT@ /can/ also be used in--- the @pNext@ chain of 'Graphics.Vulkan.Core10.Device.VkDeviceCreateInfo'--- to enable features.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT@------ = See Also------ @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeaturesEXT- { -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderInputAttachmentArrayDynamicIndexing"- vkShaderInputAttachmentArrayDynamicIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderUniformTexelBufferArrayDynamicIndexing"- vkShaderUniformTexelBufferArrayDynamicIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderStorageTexelBufferArrayDynamicIndexing"- vkShaderStorageTexelBufferArrayDynamicIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderUniformBufferArrayNonUniformIndexing"- vkShaderUniformBufferArrayNonUniformIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderSampledImageArrayNonUniformIndexing"- vkShaderSampledImageArrayNonUniformIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderStorageBufferArrayNonUniformIndexing"- vkShaderStorageBufferArrayNonUniformIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderStorageImageArrayNonUniformIndexing"- vkShaderStorageImageArrayNonUniformIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderInputAttachmentArrayNonUniformIndexing"- vkShaderInputAttachmentArrayNonUniformIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderUniformTexelBufferArrayNonUniformIndexing"- vkShaderUniformTexelBufferArrayNonUniformIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "shaderStorageTexelBufferArrayNonUniformIndexing"- vkShaderStorageTexelBufferArrayNonUniformIndexing :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingUniformBufferUpdateAfterBind"- vkDescriptorBindingUniformBufferUpdateAfterBind :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingSampledImageUpdateAfterBind"- vkDescriptorBindingSampledImageUpdateAfterBind :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingStorageImageUpdateAfterBind"- vkDescriptorBindingStorageImageUpdateAfterBind :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingStorageBufferUpdateAfterBind"- vkDescriptorBindingStorageBufferUpdateAfterBind :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingUniformTexelBufferUpdateAfterBind"- vkDescriptorBindingUniformTexelBufferUpdateAfterBind :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingStorageTexelBufferUpdateAfterBind"- vkDescriptorBindingStorageTexelBufferUpdateAfterBind :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingUpdateUnusedWhilePending"- vkDescriptorBindingUpdateUnusedWhilePending :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingPartiallyBound"- vkDescriptorBindingPartiallyBound :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "descriptorBindingVariableDescriptorCount"- vkDescriptorBindingVariableDescriptorCount :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingFeaturesEXT" "runtimeDescriptorArray"- vkRuntimeDescriptorArray :: VkBool32- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceDescriptorIndexingFeaturesEXT where- sizeOf ~_ = 96- alignment ~_ = 8- peek ptr = VkPhysicalDeviceDescriptorIndexingFeaturesEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 52)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 60)- <*> peek (ptr `plusPtr` 64)- <*> peek (ptr `plusPtr` 68)- <*> peek (ptr `plusPtr` 72)- <*> peek (ptr `plusPtr` 76)- <*> peek (ptr `plusPtr` 80)- <*> peek (ptr `plusPtr` 84)- <*> peek (ptr `plusPtr` 88)- <*> peek (ptr `plusPtr` 92)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))- *> poke (ptr `plusPtr` 16) (vkShaderInputAttachmentArrayDynamicIndexing (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))- *> poke (ptr `plusPtr` 20) (vkShaderUniformTexelBufferArrayDynamicIndexing (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))- *> poke (ptr `plusPtr` 24) (vkShaderStorageTexelBufferArrayDynamicIndexing (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))- *> poke (ptr `plusPtr` 28) (vkShaderUniformBufferArrayNonUniformIndexing (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))- *> poke (ptr `plusPtr` 32) (vkShaderSampledImageArrayNonUniformIndexing (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))- *> poke (ptr `plusPtr` 36) (vkShaderStorageBufferArrayNonUniformIndexing (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))- *> poke (ptr `plusPtr` 40) (vkShaderStorageImageArrayNonUniformIndexing (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))- *> poke (ptr `plusPtr` 44) (vkShaderInputAttachmentArrayNonUniformIndexing (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))- *> poke (ptr `plusPtr` 48) (vkShaderUniformTexelBufferArrayNonUniformIndexing (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))- *> poke (ptr `plusPtr` 52) (vkShaderStorageTexelBufferArrayNonUniformIndexing (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))- *> poke (ptr `plusPtr` 56) (vkDescriptorBindingUniformBufferUpdateAfterBind (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))- *> poke (ptr `plusPtr` 60) (vkDescriptorBindingSampledImageUpdateAfterBind (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))- *> poke (ptr `plusPtr` 64) (vkDescriptorBindingStorageImageUpdateAfterBind (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))- *> poke (ptr `plusPtr` 68) (vkDescriptorBindingStorageBufferUpdateAfterBind (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))- *> poke (ptr `plusPtr` 72) (vkDescriptorBindingUniformTexelBufferUpdateAfterBind (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))- *> poke (ptr `plusPtr` 76) (vkDescriptorBindingStorageTexelBufferUpdateAfterBind (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))- *> poke (ptr `plusPtr` 80) (vkDescriptorBindingUpdateUnusedWhilePending (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))- *> poke (ptr `plusPtr` 84) (vkDescriptorBindingPartiallyBound (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))- *> poke (ptr `plusPtr` 88) (vkDescriptorBindingVariableDescriptorCount (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))- *> poke (ptr `plusPtr` 92) (vkRuntimeDescriptorArray (poked :: VkPhysicalDeviceDescriptorIndexingFeaturesEXT))--- | VkPhysicalDeviceDescriptorIndexingPropertiesEXT - Structure describing--- descriptor indexing properties that can be supported by an--- implementation------ = Members------ The members of the @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@--- structure describe the following implementation-dependent limits:------ = Description------ - @maxUpdateAfterBindDescriptorsInAllPools@ is the maximum number of--- descriptors (summed over all descriptor types) that /can/ be created--- across all pools that are created with the--- @VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT@ bit set. Pool--- creation /may/ fail when this limit is exceeded, or when the space--- this limit represents can’t satisfy a pool creation due to--- fragmentation.------ - @shaderUniformBufferArrayNonUniformIndexingNative@ is a boolean--- value indicating whether uniform buffer descriptors natively support--- nonuniform indexing. If this is @VK_FALSE@, then a single dynamic--- instance of an instruction that nonuniformly indexes an array of--- uniform buffers /may/ execute multiple times in order to access all--- the descriptors.------ - @shaderSampledImageArrayNonUniformIndexingNative@ is a boolean value--- indicating whether sampler and image descriptors natively support--- nonuniform indexing. If this is @VK_FALSE@, then a single dynamic--- instance of an instruction that nonuniformly indexes an array of--- samplers or images /may/ execute multiple times in order to access--- all the descriptors.------ - @shaderStorageBufferArrayNonUniformIndexingNative@ is a boolean--- value indicating whether storage buffer descriptors natively support--- nonuniform indexing. If this is @VK_FALSE@, then a single dynamic--- instance of an instruction that nonuniformly indexes an array of--- storage buffers /may/ execute multiple times in order to access all--- the descriptors.------ - @shaderStorageImageArrayNonUniformIndexingNative@ is a boolean value--- indicating whether storage image descriptors natively support--- nonuniform indexing. If this is @VK_FALSE@, then a single dynamic--- instance of an instruction that nonuniformly indexes an array of--- storage images /may/ execute multiple times in order to access all--- the descriptors.------ - @shaderInputAttachmentArrayNonUniformIndexingNative@ is a boolean--- value indicating whether input attachment descriptors natively--- support nonuniform indexing. If this is @VK_FALSE@, then a single--- dynamic instance of an instruction that nonuniformly indexes an--- array of input attachments /may/ execute multiple times in order to--- access all the descriptors.------ - @robustBufferAccessUpdateAfterBind@ is a boolean value indicating--- whether--- [@robustBufferAccess@](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#features-features-robustBufferAccess)--- /can/ be enabled in a device simultaneously with--- @descriptorBindingUniformBufferUpdateAfterBind@,--- @descriptorBindingStorageBufferUpdateAfterBind@,--- @descriptorBindingUniformTexelBufferUpdateAfterBind@, and\/or--- @descriptorBindingStorageTexelBufferUpdateAfterBind@. If this is--- @VK_FALSE@, then either @robustBufferAccess@ /must/ be disabled or--- all of these update-after-bind features /must/ be disabled.------ - @quadDivergentImplicitLod@ is a boolean value indicating whether--- implicit level of detail calculations for image operations have--- well-defined results when the image and\/or sampler objects used for--- the instruction are not uniform within a quad. See [Derivative Image--- Operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-derivative-image-operations).------ - @maxPerStageDescriptorUpdateAfterBindSamplers@ is similar to--- @maxPerStageDescriptorSamplers@ but counts descriptors from--- descriptor sets created with or without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set.------ - @maxPerStageDescriptorUpdateAfterBindUniformBuffers@ is similar to--- @maxPerStageDescriptorUniformBuffers@ but counts descriptors from--- descriptor sets created with or without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set.------ - @maxPerStageDescriptorUpdateAfterBindStorageBuffers@ is similar to--- @maxPerStageDescriptorStorageBuffers@ but counts descriptors from--- descriptor sets created with or without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set.------ - @maxPerStageDescriptorUpdateAfterBindSampledImages@ is similar to--- @maxPerStageDescriptorSampledImages@ but counts descriptors from--- descriptor sets created with or without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set.------ - @maxPerStageDescriptorUpdateAfterBindStorageImages@ is similar to--- @maxPerStageDescriptorStorageImages@ but counts descriptors from--- descriptor sets created with or without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set.------ - @maxPerStageDescriptorUpdateAfterBindInputAttachments@ is similar to--- @maxPerStageDescriptorInputAttachments@ but counts descriptors from--- descriptor sets created with or without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set.------ - @maxPerStageUpdateAfterBindResources@ is similar to--- @maxPerStageResources@ but counts descriptors from descriptor sets--- created with or without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set.------ - @maxDescriptorSetUpdateAfterBindSamplers@ is similar to--- @maxDescriptorSetSamplers@ but counts descriptors from descriptor--- sets created with or without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set.------ - @maxDescriptorSetUpdateAfterBindUniformBuffers@ is similar to--- @maxDescriptorSetUniformBuffers@ but counts descriptors from--- descriptor sets created with or without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set.------ - @maxDescriptorSetUpdateAfterBindUniformBuffersDynamic@ is similar to--- @maxDescriptorSetUniformBuffersDynamic@ but counts descriptors from--- descriptor sets created with or without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set.------ - @maxDescriptorSetUpdateAfterBindStorageBuffers@ is similar to--- @maxDescriptorSetStorageBuffers@ but counts descriptors from--- descriptor sets created with or without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set.------ - @maxDescriptorSetUpdateAfterBindStorageBuffersDynamic@ is similar to--- @maxDescriptorSetStorageBuffersDynamic@ but counts descriptors from--- descriptor sets created with or without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set.------ - @maxDescriptorSetUpdateAfterBindSampledImages@ is similar to--- @maxDescriptorSetSampledImages@ but counts descriptors from--- descriptor sets created with or without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set.------ - @maxDescriptorSetUpdateAfterBindStorageImages@ is similar to--- @maxDescriptorSetStorageImages@ but counts descriptors from--- descriptor sets created with or without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set.------ - @maxDescriptorSetUpdateAfterBindInputAttachments@ is similar to--- @maxDescriptorSetInputAttachments@ but counts descriptors from--- descriptor sets created with or without the--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT@ bit--- set.------ If the @VkPhysicalDeviceDescriptorIndexingPropertiesEXT@ structure is--- included in the @pNext@ chain of--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2KHR',--- it is filled with the implementation-dependent limits.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT@------ = See Also------ @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingPropertiesEXT- { -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxUpdateAfterBindDescriptorsInAllPools"- vkMaxUpdateAfterBindDescriptorsInAllPools :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "shaderUniformBufferArrayNonUniformIndexingNative"- vkShaderUniformBufferArrayNonUniformIndexingNative :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "shaderSampledImageArrayNonUniformIndexingNative"- vkShaderSampledImageArrayNonUniformIndexingNative :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "shaderStorageBufferArrayNonUniformIndexingNative"- vkShaderStorageBufferArrayNonUniformIndexingNative :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "shaderStorageImageArrayNonUniformIndexingNative"- vkShaderStorageImageArrayNonUniformIndexingNative :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "shaderInputAttachmentArrayNonUniformIndexingNative"- vkShaderInputAttachmentArrayNonUniformIndexingNative :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "robustBufferAccessUpdateAfterBind"- vkRobustBufferAccessUpdateAfterBind :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "quadDivergentImplicitLod"- vkQuadDivergentImplicitLod :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxPerStageDescriptorUpdateAfterBindSamplers"- vkMaxPerStageDescriptorUpdateAfterBindSamplers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxPerStageDescriptorUpdateAfterBindUniformBuffers"- vkMaxPerStageDescriptorUpdateAfterBindUniformBuffers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxPerStageDescriptorUpdateAfterBindStorageBuffers"- vkMaxPerStageDescriptorUpdateAfterBindStorageBuffers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxPerStageDescriptorUpdateAfterBindSampledImages"- vkMaxPerStageDescriptorUpdateAfterBindSampledImages :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxPerStageDescriptorUpdateAfterBindStorageImages"- vkMaxPerStageDescriptorUpdateAfterBindStorageImages :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxPerStageDescriptorUpdateAfterBindInputAttachments"- vkMaxPerStageDescriptorUpdateAfterBindInputAttachments :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxPerStageUpdateAfterBindResources"- vkMaxPerStageUpdateAfterBindResources :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindSamplers"- vkMaxDescriptorSetUpdateAfterBindSamplers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindUniformBuffers"- vkMaxDescriptorSetUpdateAfterBindUniformBuffers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindUniformBuffersDynamic"- vkMaxDescriptorSetUpdateAfterBindUniformBuffersDynamic :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindStorageBuffers"- vkMaxDescriptorSetUpdateAfterBindStorageBuffers :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindStorageBuffersDynamic"- vkMaxDescriptorSetUpdateAfterBindStorageBuffersDynamic :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindSampledImages"- vkMaxDescriptorSetUpdateAfterBindSampledImages :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindStorageImages"- vkMaxDescriptorSetUpdateAfterBindStorageImages :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceDescriptorIndexingPropertiesEXT" "maxDescriptorSetUpdateAfterBindInputAttachments"- vkMaxDescriptorSetUpdateAfterBindInputAttachments :: Word32- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceDescriptorIndexingPropertiesEXT where- sizeOf ~_ = 112- alignment ~_ = 8- peek ptr = VkPhysicalDeviceDescriptorIndexingPropertiesEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 52)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 60)- <*> peek (ptr `plusPtr` 64)- <*> peek (ptr `plusPtr` 68)- <*> peek (ptr `plusPtr` 72)- <*> peek (ptr `plusPtr` 76)- <*> peek (ptr `plusPtr` 80)- <*> peek (ptr `plusPtr` 84)- <*> peek (ptr `plusPtr` 88)- <*> peek (ptr `plusPtr` 92)- <*> peek (ptr `plusPtr` 96)- <*> peek (ptr `plusPtr` 100)- <*> peek (ptr `plusPtr` 104)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 16) (vkMaxUpdateAfterBindDescriptorsInAllPools (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 20) (vkShaderUniformBufferArrayNonUniformIndexingNative (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 24) (vkShaderSampledImageArrayNonUniformIndexingNative (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 28) (vkShaderStorageBufferArrayNonUniformIndexingNative (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 32) (vkShaderStorageImageArrayNonUniformIndexingNative (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 36) (vkShaderInputAttachmentArrayNonUniformIndexingNative (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 40) (vkRobustBufferAccessUpdateAfterBind (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 44) (vkQuadDivergentImplicitLod (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 48) (vkMaxPerStageDescriptorUpdateAfterBindSamplers (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 52) (vkMaxPerStageDescriptorUpdateAfterBindUniformBuffers (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 56) (vkMaxPerStageDescriptorUpdateAfterBindStorageBuffers (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 60) (vkMaxPerStageDescriptorUpdateAfterBindSampledImages (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 64) (vkMaxPerStageDescriptorUpdateAfterBindStorageImages (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 68) (vkMaxPerStageDescriptorUpdateAfterBindInputAttachments (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 72) (vkMaxPerStageUpdateAfterBindResources (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 76) (vkMaxDescriptorSetUpdateAfterBindSamplers (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 80) (vkMaxDescriptorSetUpdateAfterBindUniformBuffers (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 84) (vkMaxDescriptorSetUpdateAfterBindUniformBuffersDynamic (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 88) (vkMaxDescriptorSetUpdateAfterBindStorageBuffers (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 92) (vkMaxDescriptorSetUpdateAfterBindStorageBuffersDynamic (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 96) (vkMaxDescriptorSetUpdateAfterBindSampledImages (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 100) (vkMaxDescriptorSetUpdateAfterBindStorageImages (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))- *> poke (ptr `plusPtr` 104) (vkMaxDescriptorSetUpdateAfterBindInputAttachments (poked :: VkPhysicalDeviceDescriptorIndexingPropertiesEXT))--- | VkDescriptorSetLayoutBindingFlagsCreateInfoEXT - Structure specifying--- creation flags for descriptor set layout bindings------ = Description------ If @bindingCount@ is zero or if this structure is not in the @pNext@--- chain, the 'VkDescriptorBindingFlagsEXT' for each descriptor set layout--- binding is considered to be zero. Otherwise, the descriptor set layout--- binding at--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetLayoutCreateInfo'::@pBindings@[i]--- uses the flags in @pBindingFlags@[i].------ == Valid Usage------ - If @bindingCount@ is not zero, @bindingCount@ /must/ equal--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetLayoutCreateInfo'::@bindingCount@------ - If--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetLayoutCreateInfo'::@flags@--- includes @VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR@,--- then all elements of @pBindingFlags@ /must/ not include--- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@,--- @VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT@, or--- @VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT@------ - If an element of @pBindingFlags@ includes--- @VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT@, then all--- other elements of--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetLayoutCreateInfo'::@pBindings@--- /must/ have a smaller value of @binding@------ - If--- 'VkPhysicalDeviceDescriptorIndexingFeaturesEXT'::@descriptorBindingUniformBufferUpdateAfterBind@--- is not enabled, all bindings with descriptor type--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ /must/ not use--- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@------ - If--- 'VkPhysicalDeviceDescriptorIndexingFeaturesEXT'::@descriptorBindingSampledImageUpdateAfterBind@--- is not enabled, all bindings with descriptor type--- @VK_DESCRIPTOR_TYPE_SAMPLER@,--- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@, or--- @VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE@ /must/ not use--- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@------ - If--- 'VkPhysicalDeviceDescriptorIndexingFeaturesEXT'::@descriptorBindingStorageImageUpdateAfterBind@--- is not enabled, all bindings with descriptor type--- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@ /must/ not use--- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@------ - If--- 'VkPhysicalDeviceDescriptorIndexingFeaturesEXT'::@descriptorBindingStorageBufferUpdateAfterBind@--- is not enabled, all bindings with descriptor type--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ /must/ not use--- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@------ - If--- 'VkPhysicalDeviceDescriptorIndexingFeaturesEXT'::@descriptorBindingUniformTexelBufferUpdateAfterBind@--- is not enabled, all bindings with descriptor type--- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ /must/ not use--- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@------ - If--- 'VkPhysicalDeviceDescriptorIndexingFeaturesEXT'::@descriptorBindingStorageTexelBufferUpdateAfterBind@--- is not enabled, all bindings with descriptor type--- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ /must/ not use--- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@------ - All bindings with descriptor type--- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@,--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@, or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ /must/ not use--- @VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT@------ - If--- 'VkPhysicalDeviceDescriptorIndexingFeaturesEXT'::@descriptorBindingUpdateUnusedWhilePending@--- is not enabled, all elements of @pBindingFlags@ /must/ not include--- @VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT@------ - If--- 'VkPhysicalDeviceDescriptorIndexingFeaturesEXT'::@descriptorBindingPartiallyBound@--- is not enabled, all elements of @pBindingFlags@ /must/ not include--- @VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT@------ - If--- 'VkPhysicalDeviceDescriptorIndexingFeaturesEXT'::@descriptorBindingVariableDescriptorCount@--- is not enabled, all elements of @pBindingFlags@ /must/ not include--- @VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT@------ - If an element of @pBindingFlags@ includes--- @VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT@, that--- element’s @descriptorType@ /must/ not be--- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ or--- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT@------ - If @bindingCount@ is not @0@, @pBindingFlags@ /must/ be a valid--- pointer to an array of @bindingCount@ valid combinations of--- 'VkDescriptorBindingFlagBitsEXT' values------ - Each element of @pBindingFlags@ /must/ not be @0@------ = See Also------ 'VkDescriptorBindingFlagsEXT',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @bindingCount@ is zero or the number of elements in @pBindingFlags@.- vkBindingCount :: Word32- , -- | @pBindingFlags@ is a pointer to an array of- -- 'VkDescriptorBindingFlagsEXT' bitfields, one for each descriptor set- -- layout binding.- vkPBindingFlags :: Ptr VkDescriptorBindingFlagsEXT- }- deriving (Eq, Show)--instance Storable VkDescriptorSetLayoutBindingFlagsCreateInfoEXT where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkDescriptorSetLayoutBindingFlagsCreateInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDescriptorSetLayoutBindingFlagsCreateInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDescriptorSetLayoutBindingFlagsCreateInfoEXT))- *> poke (ptr `plusPtr` 16) (vkBindingCount (poked :: VkDescriptorSetLayoutBindingFlagsCreateInfoEXT))- *> poke (ptr `plusPtr` 24) (vkPBindingFlags (poked :: VkDescriptorSetLayoutBindingFlagsCreateInfoEXT))--- | VkDescriptorSetVariableDescriptorCountAllocateInfoEXT - Structure--- specifying additional allocation parameters for descriptor sets------ = Description------ If @descriptorSetCount@ is zero or this structure is not included in the--- @pNext@ chain, then the variable lengths are considered to be zero.--- Otherwise, @pDescriptorCounts@[i] is the number of descriptors in the--- variable count descriptor binding in the corresponding descriptor set--- layout. If--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetAllocateInfo'::@pSetLayouts@[i]--- does not include a variable count descriptor binding, then--- @pDescriptorCounts@[i] is ignored.------ == Valid Usage------ - If @descriptorSetCount@ is not zero, @descriptorSetCount@ /must/--- equal--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetAllocateInfo'::@descriptorSetCount@------ - If--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSetAllocateInfo'::@pSetLayouts@[i]--- has a variable descriptor count binding, then @pDescriptorCounts@[i]--- /must/ be less than or equal to the descriptor count specified for--- that binding when the descriptor set layout was created.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT@------ - If @descriptorSetCount@ is not @0@, @pDescriptorCounts@ /must/ be a--- valid pointer to an array of @descriptorSetCount@ @uint32_t@ values------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @descriptorSetCount@ is zero or the number of elements in- -- @pDescriptorCounts@.- vkDescriptorSetCount :: Word32- , -- | @pDescriptorCounts@ is an array of descriptor counts, with each member- -- specifying the number of descriptors in a variable descriptor count- -- binding in the corresponding descriptor set being allocated.- vkPDescriptorCounts :: Ptr Word32- }- deriving (Eq, Show)--instance Storable VkDescriptorSetVariableDescriptorCountAllocateInfoEXT where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkDescriptorSetVariableDescriptorCountAllocateInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDescriptorSetVariableDescriptorCountAllocateInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDescriptorSetVariableDescriptorCountAllocateInfoEXT))- *> poke (ptr `plusPtr` 16) (vkDescriptorSetCount (poked :: VkDescriptorSetVariableDescriptorCountAllocateInfoEXT))- *> poke (ptr `plusPtr` 24) (vkPDescriptorCounts (poked :: VkDescriptorSetVariableDescriptorCountAllocateInfoEXT))--- | VkDescriptorSetVariableDescriptorCountLayoutSupportEXT - Structure--- returning information about whether a descriptor set layout can be--- supported------ = Description------ If the create info includes a variable-sized descriptor, then--- @supported@ is determined assuming the requested size of the--- variable-sized descriptor, and @maxVariableDescriptorCount@ is set to--- the maximum size of that descriptor that /can/ be successfully created--- (which is greater than or equal to the requested size passed in). If the--- create info does not include a variable-sized descriptor or if the--- 'VkPhysicalDeviceDescriptorIndexingFeaturesEXT'::@descriptorBindingVariableDescriptorCount@--- feature is not enabled, then @maxVariableDescriptorCount@ is set to--- zero. For the purposes of this command, a variable-sized descriptor--- binding with a @descriptorCount@ of zero is treated as if the--- @descriptorCount@ is one, and thus the binding is not ignored and the--- maximum descriptor count will be returned. If the layout is not--- supported, then the value written to @maxVariableDescriptorCount@ is--- undefined.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT@------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupportEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @maxVariableDescriptorCount@ indicates the maximum number of descriptors- -- supported in the highest numbered binding of the layout, if that binding- -- is variable-sized.- vkMaxVariableDescriptorCount :: Word32- }- deriving (Eq, Show)--instance Storable VkDescriptorSetVariableDescriptorCountLayoutSupportEXT where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkDescriptorSetVariableDescriptorCountLayoutSupportEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDescriptorSetVariableDescriptorCountLayoutSupportEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDescriptorSetVariableDescriptorCountLayoutSupportEXT))- *> poke (ptr `plusPtr` 16) (vkMaxVariableDescriptorCount (poked :: VkDescriptorSetVariableDescriptorCountLayoutSupportEXT))--- No documentation found for TopLevel "VkDescriptorBindingFlagsEXT"-type VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlagBitsEXT+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing ( pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT+ , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT+ , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT+ , pattern STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT+ , pattern STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT+ , pattern DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT+ , pattern DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT+ , pattern DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT+ , pattern DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT+ , pattern DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT+ , pattern DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT+ , pattern ERROR_FRAGMENTATION_EXT+ , DescriptorBindingFlagsEXT+ , DescriptorBindingFlagBitsEXT+ , PhysicalDeviceDescriptorIndexingFeaturesEXT+ , PhysicalDeviceDescriptorIndexingPropertiesEXT+ , DescriptorSetLayoutBindingFlagsCreateInfoEXT+ , DescriptorSetVariableDescriptorCountAllocateInfoEXT+ , DescriptorSetVariableDescriptorCountLayoutSupportEXT+ , EXT_DESCRIPTOR_INDEXING_SPEC_VERSION+ , pattern EXT_DESCRIPTOR_INDEXING_SPEC_VERSION+ , EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+ , pattern EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME+ ) where++import Data.String (IsString)+import Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits (DescriptorBindingFlagBits)+import Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits (DescriptorBindingFlags)+import Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (DescriptorSetLayoutBindingFlagsCreateInfo)+import Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (DescriptorSetVariableDescriptorCountAllocateInfo)+import Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (DescriptorSetVariableDescriptorCountLayoutSupport)+import Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingFeatures)+import Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (PhysicalDeviceDescriptorIndexingProperties)+import Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits (DescriptorBindingFlags)+import Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits (DescriptorBindingFlagBits(DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT))+import Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits (DescriptorBindingFlags)+import Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits (DescriptorBindingFlagBits(DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT))+import Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits (DescriptorBindingFlags)+import Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits (DescriptorBindingFlagBits(DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT))+import Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits (DescriptorBindingFlags)+import Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits (DescriptorBindingFlagBits(DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT))+import Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits (DescriptorPoolCreateFlags)+import Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits (DescriptorPoolCreateFlagBits(DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT))+import Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits (DescriptorSetLayoutCreateFlags)+import Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits (DescriptorSetLayoutCreateFlagBits(DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT))+import Graphics.Vulkan.Core10.Enums.Result (Result(ERROR_FRAGMENTATION))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT"+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT"+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT+++-- No documentation found for TopLevel "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT"+pattern DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT+++-- No documentation found for TopLevel "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT"+pattern DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT+++-- No documentation found for TopLevel "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT"+pattern DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT+++-- No documentation found for TopLevel "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT"+pattern DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT+++-- No documentation found for TopLevel "VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT"+pattern DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT+++-- No documentation found for TopLevel "VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT"+pattern DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT+++-- No documentation found for TopLevel "VK_ERROR_FRAGMENTATION_EXT"+pattern ERROR_FRAGMENTATION_EXT = ERROR_FRAGMENTATION+++-- No documentation found for TopLevel "VkDescriptorBindingFlagsEXT"+type DescriptorBindingFlagsEXT = DescriptorBindingFlags+++-- No documentation found for TopLevel "VkDescriptorBindingFlagBitsEXT"+type DescriptorBindingFlagBitsEXT = DescriptorBindingFlagBits+++-- No documentation found for TopLevel "VkPhysicalDeviceDescriptorIndexingFeaturesEXT"+type PhysicalDeviceDescriptorIndexingFeaturesEXT = PhysicalDeviceDescriptorIndexingFeatures+++-- No documentation found for TopLevel "VkPhysicalDeviceDescriptorIndexingPropertiesEXT"+type PhysicalDeviceDescriptorIndexingPropertiesEXT = PhysicalDeviceDescriptorIndexingProperties+++-- No documentation found for TopLevel "VkDescriptorSetLayoutBindingFlagsCreateInfoEXT"+type DescriptorSetLayoutBindingFlagsCreateInfoEXT = DescriptorSetLayoutBindingFlagsCreateInfo+++-- No documentation found for TopLevel "VkDescriptorSetVariableDescriptorCountAllocateInfoEXT"+type DescriptorSetVariableDescriptorCountAllocateInfoEXT = DescriptorSetVariableDescriptorCountAllocateInfo+++-- No documentation found for TopLevel "VkDescriptorSetVariableDescriptorCountLayoutSupportEXT"+type DescriptorSetVariableDescriptorCountLayoutSupportEXT = DescriptorSetVariableDescriptorCountLayoutSupport+++type EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION"+pattern EXT_DESCRIPTOR_INDEXING_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2+++type EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing"++-- No documentation found for TopLevel "VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME"+pattern EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing"+
src/Graphics/Vulkan/Extensions/VK_EXT_direct_mode_display.hs view
@@ -1,66 +1,68 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}--module Graphics.Vulkan.Extensions.VK_EXT_direct_mode_display- ( pattern VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION- , pattern VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME- , vkReleaseDisplayEXT- ) where--import Data.String- ( IsString- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkPhysicalDevice- )-import Graphics.Vulkan.Extensions.VK_KHR_display- ( VkDisplayKHR- )+module Graphics.Vulkan.Extensions.VK_EXT_direct_mode_display ( releaseDisplayEXT+ , EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION+ , pattern EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION+ , EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME+ , pattern EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME+ , DisplayKHR(..)+ ) where +import Data.String (IsString)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Graphics.Vulkan.Extensions.Handles (DisplayKHR)+import Graphics.Vulkan.Extensions.Handles (DisplayKHR(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkReleaseDisplayEXT))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Extensions.Handles (DisplayKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkReleaseDisplayEXT+ :: FunPtr (Ptr PhysicalDevice_T -> DisplayKHR -> IO Result) -> Ptr PhysicalDevice_T -> DisplayKHR -> IO Result --- No documentation found for TopLevel "VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION"-pattern VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION :: Integral a => a-pattern VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME"-pattern VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" -- | vkReleaseDisplayEXT - Release access to an acquired VkDisplayKHR -- -- = Parameters ----- - @physicalDevice@ The physical device the display is on.------ - @display@ The display to release control of.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' The physical device+-- the display is on. ----- - @display@ /must/ be a valid @VkDisplayKHR@ handle+-- - 'Graphics.Vulkan.Extensions.WSITypes.Display' The display to release+-- control of. -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+-- -- = See Also ----- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayKHR',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkReleaseDisplayEXT" vkReleaseDisplayEXT :: ("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> IO VkResult+-- 'Graphics.Vulkan.Extensions.Handles.DisplayKHR',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+releaseDisplayEXT :: PhysicalDevice -> DisplayKHR -> IO ()+releaseDisplayEXT physicalDevice display = do+ let vkReleaseDisplayEXT' = mkVkReleaseDisplayEXT (pVkReleaseDisplayEXT (instanceCmds (physicalDevice :: PhysicalDevice)))+ _ <- vkReleaseDisplayEXT' (physicalDeviceHandle (physicalDevice)) (display)+ pure $ ()+++type EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION"+pattern EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1+++type EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display"++-- No documentation found for TopLevel "VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME"+pattern EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display"+
src/Graphics/Vulkan/Extensions/VK_EXT_discard_rectangles.hs view
@@ -1,168 +1,84 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles- ( VkDiscardRectangleModeEXT(..)- , pattern VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT- , pattern VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT- , VkPipelineDiscardRectangleStateCreateFlagsEXT(..)- , pattern VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT- , pattern VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT- , pattern VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION- , pattern VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME- , vkCmdSetDiscardRectangleEXT- , VkPhysicalDeviceDiscardRectanglePropertiesEXT(..)- , VkPipelineDiscardRectangleStateCreateInfoEXT(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Int- ( Int32- )-import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.Pipeline- ( VkDynamicState(..)- , VkRect2D(..)- )-import Graphics.Vulkan.Core10.Queue- ( VkCommandBuffer- )----- ** VkDiscardRectangleModeEXT---- | VkDiscardRectangleModeEXT - Specify the discard rectangle mode------ = See Also------ 'VkPipelineDiscardRectangleStateCreateInfoEXT'-newtype VkDiscardRectangleModeEXT = VkDiscardRectangleModeEXT Int32- deriving (Eq, Ord, Storable)--instance Show VkDiscardRectangleModeEXT where- showsPrec _ VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = showString "VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT"- showsPrec _ VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = showString "VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT"- showsPrec p (VkDiscardRectangleModeEXT x) = showParen (p >= 11) (showString "VkDiscardRectangleModeEXT " . showsPrec 11 x)--instance Read VkDiscardRectangleModeEXT where- readPrec = parens ( choose [ ("VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT", pure VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT)- , ("VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT", pure VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT)- ] +++- prec 10 (do- expectP (Ident "VkDiscardRectangleModeEXT")- v <- step readPrec- pure (VkDiscardRectangleModeEXT v)- )- )---- | @VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT@ specifies that a fragment--- within any discard rectangle satisfies the test.-pattern VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT :: VkDiscardRectangleModeEXT-pattern VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = VkDiscardRectangleModeEXT 0---- | @VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT@ specifies that a fragment not--- within any of the discard rectangles satisfies the test.-pattern VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT :: VkDiscardRectangleModeEXT-pattern VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = VkDiscardRectangleModeEXT 1--- ** VkPipelineDiscardRectangleStateCreateFlagsEXT---- | VkPipelineDiscardRectangleStateCreateFlagsEXT - Reserved for future use------ = Description------ @VkPipelineDiscardRectangleStateCreateFlagsEXT@ is a bitmask type for--- setting a mask, but is currently reserved for future use.------ = See Also------ 'VkPipelineDiscardRectangleStateCreateInfoEXT'-newtype VkPipelineDiscardRectangleStateCreateFlagsEXT = VkPipelineDiscardRectangleStateCreateFlagsEXT VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineDiscardRectangleStateCreateFlagsEXT where- - showsPrec p (VkPipelineDiscardRectangleStateCreateFlagsEXT x) = showParen (p >= 11) (showString "VkPipelineDiscardRectangleStateCreateFlagsEXT " . showsPrec 11 x)--instance Read VkPipelineDiscardRectangleStateCreateFlagsEXT where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineDiscardRectangleStateCreateFlagsEXT")- v <- step readPrec- pure (VkPipelineDiscardRectangleStateCreateFlagsEXT v)- )- )+module Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles ( cmdSetDiscardRectangleEXT+ , PhysicalDeviceDiscardRectanglePropertiesEXT(..)+ , PipelineDiscardRectangleStateCreateInfoEXT(..)+ , PipelineDiscardRectangleStateCreateFlagsEXT(..)+ , DiscardRectangleModeEXT( DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT+ , DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT+ , ..+ )+ , EXT_DISCARD_RECTANGLES_SPEC_VERSION+ , pattern EXT_DISCARD_RECTANGLES_SPEC_VERSION+ , EXT_DISCARD_RECTANGLES_EXTENSION_NAME+ , pattern EXT_DISCARD_RECTANGLES_EXTENSION_NAME+ ) where +import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Utils (maybePeek)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Bits (Bits)+import Data.Either (Either)+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 Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetDiscardRectangleEXT))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.CommandBufferBuilding (Rect2D)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetDiscardRectangleEXT+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Rect2D -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Rect2D -> IO () --- No documentation found for Nested "VkDynamicState" "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT"-pattern VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT :: VkDynamicState-pattern VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = VkDynamicState 1000099000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = VkStructureType 1000099000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"-pattern VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = VkStructureType 1000099001--- No documentation found for TopLevel "VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION"-pattern VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION :: Integral a => a-pattern VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME"-pattern VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" -- | vkCmdSetDiscardRectangleEXT - Set discard rectangles dynamically -- -- = Parameters ----- - @commandBuffer@ is the command buffer into which the command will be--- recorded.+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded. -- -- - @firstDiscardRectangle@ is the index of the first discard rectangle -- whose state is updated by the command.@@ -171,8 +87,8 @@ -- state are updated by the command. -- -- - @pDiscardRectangles@ is a pointer to an array of--- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D' structures specifying--- discard rectangles.+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D' structures+-- specifying discard rectangles. -- -- = Description --@@ -182,173 +98,272 @@ -- -- == Valid Usage ----- - The bound graphics pipeline /must/ have been created with the--- @VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT@ dynamic state enabled--- -- - The sum of @firstDiscardRectangle@ and @discardRectangleCount@ -- /must/ be less than or equal to--- 'VkPhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@+-- 'PhysicalDeviceDiscardRectanglePropertiesEXT'::@maxDiscardRectangles@ -- -- - The @x@ and @y@ member of @offset@ in each--- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D' element of+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D' element of -- @pDiscardRectangles@ /must/ be greater than or equal to @0@ -- -- - Evaluation of (@offset.x@ + @extent.width@) in each--- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D' element of+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D' element of -- @pDiscardRectangles@ /must/ not cause a signed integer addition -- overflow -- -- - Evaluation of (@offset.y@ + @extent.height@) in each--- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D' element of+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D' element of -- @pDiscardRectangles@ /must/ not cause a signed integer addition -- overflow -- -- == Valid Usage (Implicit) ----- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle -- -- - @pDiscardRectangles@ /must/ be a valid pointer to an array of--- @discardRectangleCount@ @VkRect2D@ structures+-- @discardRectangleCount@+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D' structures ----- - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state> ----- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations -- -- - @discardRectangleCount@ /must/ be greater than @0@ -- -- == Host Synchronization ----- - Host access to @commandBuffer@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized ----- - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized -- -- == Command Properties -- -- \' ----- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ -- -- = See Also ----- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdSetDiscardRectangleEXT" vkCmdSetDiscardRectangleEXT :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstDiscardRectangle" ::: Word32) -> ("discardRectangleCount" ::: Word32) -> ("pDiscardRectangles" ::: Ptr VkRect2D) -> IO ()+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D'+cmdSetDiscardRectangleEXT :: CommandBuffer -> ("firstDiscardRectangle" ::: Word32) -> ("discardRectangles" ::: Vector Rect2D) -> IO ()+cmdSetDiscardRectangleEXT commandBuffer firstDiscardRectangle discardRectangles = evalContT $ do+ let vkCmdSetDiscardRectangleEXT' = mkVkCmdSetDiscardRectangleEXT (pVkCmdSetDiscardRectangleEXT (deviceCmds (commandBuffer :: CommandBuffer)))+ pPDiscardRectangles <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (discardRectangles)) * 16) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDiscardRectangles `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (discardRectangles)+ lift $ vkCmdSetDiscardRectangleEXT' (commandBufferHandle (commandBuffer)) (firstDiscardRectangle) ((fromIntegral (Data.Vector.length $ (discardRectangles)) :: Word32)) (pPDiscardRectangles)+ pure $ ()++ -- | VkPhysicalDeviceDiscardRectanglePropertiesEXT - Structure describing -- discard rectangle limits that can be supported by an implementation -- -- = Members ----- The members of the @VkPhysicalDeviceDiscardRectanglePropertiesEXT@+-- The members of the 'PhysicalDeviceDiscardRectanglePropertiesEXT' -- structure describe the following implementation-dependent limits: -- -- = Description ----- - @maxDiscardRectangles@ is the maximum number of discard rectangles--- that /can/ be specified.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT@------ If the @VkPhysicalDeviceDiscardRectanglePropertiesEXT@ structure is+-- If the 'PhysicalDeviceDiscardRectanglePropertiesEXT' structure is -- included in the @pNext@ chain of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2', -- it is filled with the implementation-dependent limits. --+-- == Valid Usage (Implicit)+-- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceDiscardRectanglePropertiesEXT = VkPhysicalDeviceDiscardRectanglePropertiesEXT- { -- No documentation found for Nested "VkPhysicalDeviceDiscardRectanglePropertiesEXT" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceDiscardRectanglePropertiesEXT" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceDiscardRectanglePropertiesEXT" "maxDiscardRectangles"- vkMaxDiscardRectangles :: Word32- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceDiscardRectanglePropertiesEXT = PhysicalDeviceDiscardRectanglePropertiesEXT+ { -- | @maxDiscardRectangles@ is the maximum number of active discard+ -- rectangles that /can/ be specified.+ maxDiscardRectangles :: Word32 }+ deriving (Typeable)+deriving instance Show PhysicalDeviceDiscardRectanglePropertiesEXT -instance Storable VkPhysicalDeviceDiscardRectanglePropertiesEXT where+instance ToCStruct PhysicalDeviceDiscardRectanglePropertiesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceDiscardRectanglePropertiesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (maxDiscardRectangles)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ f++instance FromCStruct PhysicalDeviceDiscardRectanglePropertiesEXT where+ peekCStruct p = do+ maxDiscardRectangles <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pure $ PhysicalDeviceDiscardRectanglePropertiesEXT+ maxDiscardRectangles++instance Storable PhysicalDeviceDiscardRectanglePropertiesEXT where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkPhysicalDeviceDiscardRectanglePropertiesEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceDiscardRectanglePropertiesEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceDiscardRectanglePropertiesEXT))- *> poke (ptr `plusPtr` 16) (vkMaxDiscardRectangles (poked :: VkPhysicalDeviceDiscardRectanglePropertiesEXT))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceDiscardRectanglePropertiesEXT where+ zero = PhysicalDeviceDiscardRectanglePropertiesEXT+ zero++ -- | VkPipelineDiscardRectangleStateCreateInfoEXT - Structure specifying -- discard rectangle ----- == Valid Usage+-- == Valid Usage (Implicit) ----- - @discardRectangleCount@ /must/ be between @0@ and--- @VkPhysicalDeviceDiscardRectanglePropertiesEXT@::@maxDiscardRectangles@,--- inclusive+-- = See Also ----- == Valid Usage (Implicit)+-- 'DiscardRectangleModeEXT',+-- 'PipelineDiscardRectangleStateCreateFlagsEXT',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineDiscardRectangleStateCreateInfoEXT = PipelineDiscardRectangleStateCreateInfoEXT+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+ flags :: PipelineDiscardRectangleStateCreateFlagsEXT+ , -- | @discardRectangleMode@ /must/ be a valid 'DiscardRectangleModeEXT' value+ discardRectangleMode :: DiscardRectangleModeEXT+ , -- | @pDiscardRectangles@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D' structures,+ -- defining the discard rectangles. If the discard rectangle state is+ -- dynamic, this member is ignored.+ discardRectangles :: Either Word32 (Vector Rect2D)+ }+ deriving (Typeable)+deriving instance Show PipelineDiscardRectangleStateCreateInfoEXT++instance ToCStruct PipelineDiscardRectangleStateCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineDiscardRectangleStateCreateInfoEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr PipelineDiscardRectangleStateCreateFlagsEXT)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr DiscardRectangleModeEXT)) (discardRectangleMode)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral (either id (fromIntegral . Data.Vector.length) (discardRectangles)) :: Word32))+ pDiscardRectangles'' <- case (discardRectangles) of+ Left _ -> pure nullPtr+ Right v -> do+ pPDiscardRectangles' <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (v)) * 16) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDiscardRectangles' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (v)+ pure $ pPDiscardRectangles'+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Rect2D))) pDiscardRectangles''+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 20 :: Ptr DiscardRectangleModeEXT)) (zero)+ f++instance FromCStruct PipelineDiscardRectangleStateCreateInfoEXT where+ peekCStruct p = do+ flags <- peek @PipelineDiscardRectangleStateCreateFlagsEXT ((p `plusPtr` 16 :: Ptr PipelineDiscardRectangleStateCreateFlagsEXT))+ discardRectangleMode <- peek @DiscardRectangleModeEXT ((p `plusPtr` 20 :: Ptr DiscardRectangleModeEXT))+ discardRectangleCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ pDiscardRectangles <- peek @(Ptr Rect2D) ((p `plusPtr` 32 :: Ptr (Ptr Rect2D)))+ pDiscardRectangles' <- maybePeek (\j -> generateM (fromIntegral discardRectangleCount) (\i -> peekCStruct @Rect2D (((j) `advancePtrBytes` (16 * (i)) :: Ptr Rect2D)))) pDiscardRectangles+ let pDiscardRectangles'' = maybe (Left discardRectangleCount) Right pDiscardRectangles'+ pure $ PipelineDiscardRectangleStateCreateInfoEXT+ flags discardRectangleMode pDiscardRectangles''++instance Zero PipelineDiscardRectangleStateCreateInfoEXT where+ zero = PipelineDiscardRectangleStateCreateInfoEXT+ zero+ zero+ (Left 0)+++-- | VkPipelineDiscardRectangleStateCreateFlagsEXT - Reserved for future use ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT@+-- = Description ----- - @flags@ /must/ be @0@+-- 'PipelineDiscardRectangleStateCreateFlagsEXT' is a bitmask type for+-- setting a mask, but is currently reserved for future use. ----- - @discardRectangleMode@ /must/ be a valid 'VkDiscardRectangleModeEXT'--- value+-- = See Also --+-- 'PipelineDiscardRectangleStateCreateInfoEXT'+newtype PipelineDiscardRectangleStateCreateFlagsEXT = PipelineDiscardRectangleStateCreateFlagsEXT Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show PipelineDiscardRectangleStateCreateFlagsEXT where+ showsPrec p = \case+ PipelineDiscardRectangleStateCreateFlagsEXT x -> showParen (p >= 11) (showString "PipelineDiscardRectangleStateCreateFlagsEXT 0x" . showHex x)++instance Read PipelineDiscardRectangleStateCreateFlagsEXT where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "PipelineDiscardRectangleStateCreateFlagsEXT")+ v <- step readPrec+ pure (PipelineDiscardRectangleStateCreateFlagsEXT v)))+++-- | VkDiscardRectangleModeEXT - Specify the discard rectangle mode+-- -- = See Also ----- 'VkDiscardRectangleModeEXT',--- 'VkPipelineDiscardRectangleStateCreateFlagsEXT',--- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineDiscardRectangleStateCreateInfoEXT = VkPipelineDiscardRectangleStateCreateInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkPipelineDiscardRectangleStateCreateFlagsEXT- , -- | @discardRectangleMode@ is the mode used to determine whether fragments- -- that lie within the discard rectangle are discarded or not.- vkDiscardRectangleMode :: VkDiscardRectangleModeEXT- , -- | @discardRectangleCount@ is the number of discard rectangles used by the- -- pipeline.- vkDiscardRectangleCount :: Word32- , -- | @pDiscardRectangles@ is a pointer to an array of- -- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D' structures, defining the- -- discard rectangles. If the discard rectangle state is dynamic, this- -- member is ignored.- vkPDiscardRectangles :: Ptr VkRect2D- }- deriving (Eq, Show)+-- 'PipelineDiscardRectangleStateCreateInfoEXT'+newtype DiscardRectangleModeEXT = DiscardRectangleModeEXT Int32+ deriving newtype (Eq, Ord, Storable, Zero) -instance Storable VkPipelineDiscardRectangleStateCreateInfoEXT where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkPipelineDiscardRectangleStateCreateInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineDiscardRectangleStateCreateInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineDiscardRectangleStateCreateInfoEXT))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineDiscardRectangleStateCreateInfoEXT))- *> poke (ptr `plusPtr` 20) (vkDiscardRectangleMode (poked :: VkPipelineDiscardRectangleStateCreateInfoEXT))- *> poke (ptr `plusPtr` 24) (vkDiscardRectangleCount (poked :: VkPipelineDiscardRectangleStateCreateInfoEXT))- *> poke (ptr `plusPtr` 32) (vkPDiscardRectangles (poked :: VkPipelineDiscardRectangleStateCreateInfoEXT))+-- | 'DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT' specifies that a fragment within+-- any discard rectangle satisfies the test.+pattern DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = DiscardRectangleModeEXT 0+-- | 'DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT' specifies that a fragment not+-- within any of the discard rectangles satisfies the test.+pattern DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = DiscardRectangleModeEXT 1+{-# complete DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,+ DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT :: DiscardRectangleModeEXT #-}++instance Show DiscardRectangleModeEXT where+ showsPrec p = \case+ DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT -> showString "DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT"+ DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT -> showString "DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT"+ DiscardRectangleModeEXT x -> showParen (p >= 11) (showString "DiscardRectangleModeEXT " . showsPrec 11 x)++instance Read DiscardRectangleModeEXT where+ readPrec = parens (choose [("DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT", pure DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT)+ , ("DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT", pure DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT)]+ ++++ prec 10 (do+ expectP (Ident "DiscardRectangleModeEXT")+ v <- step readPrec+ pure (DiscardRectangleModeEXT v)))+++type EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION"+pattern EXT_DISCARD_RECTANGLES_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1+++type EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles"++-- No documentation found for TopLevel "VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME"+pattern EXT_DISCARD_RECTANGLES_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_discard_rectangles.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles ( PhysicalDeviceDiscardRectanglePropertiesEXT+ , PipelineDiscardRectangleStateCreateInfoEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceDiscardRectanglePropertiesEXT++instance ToCStruct PhysicalDeviceDiscardRectanglePropertiesEXT+instance Show PhysicalDeviceDiscardRectanglePropertiesEXT++instance FromCStruct PhysicalDeviceDiscardRectanglePropertiesEXT+++data PipelineDiscardRectangleStateCreateInfoEXT++instance ToCStruct PipelineDiscardRectangleStateCreateInfoEXT+instance Show PipelineDiscardRectangleStateCreateInfoEXT++instance FromCStruct PipelineDiscardRectangleStateCreateInfoEXT+
src/Graphics/Vulkan/Extensions/VK_EXT_display_control.hs view
@@ -1,356 +1,311 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_EXT_display_control- ( VkDisplayPowerStateEXT(..)- , pattern VK_DISPLAY_POWER_STATE_OFF_EXT- , pattern VK_DISPLAY_POWER_STATE_SUSPEND_EXT- , pattern VK_DISPLAY_POWER_STATE_ON_EXT- , VkDeviceEventTypeEXT(..)- , pattern VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT- , VkDisplayEventTypeEXT(..)- , pattern VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT- , pattern VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT- , pattern VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT- , pattern VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT- , pattern VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT- , pattern VK_EXT_DISPLAY_CONTROL_SPEC_VERSION- , pattern VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME- , vkDisplayPowerControlEXT- , vkRegisterDeviceEventEXT- , vkRegisterDisplayEventEXT- , vkGetSwapchainCounterEXT- , VkDisplayPowerInfoEXT(..)- , VkDeviceEventInfoEXT(..)- , VkDisplayEventInfoEXT(..)- , VkSwapchainCounterCreateInfoEXT(..)- ) where--import Data.Int- ( Int32- )-import Data.String- ( IsString- )-import Data.Word- ( Word64- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- )-import Graphics.Vulkan.Core10.Queue- ( VkFence- )-import Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter- ( VkSurfaceCounterFlagBitsEXT(..)- , VkSurfaceCounterFlagsEXT- )-import Graphics.Vulkan.Extensions.VK_KHR_display- ( VkDisplayKHR- )-import Graphics.Vulkan.Extensions.VK_KHR_swapchain- ( VkSwapchainKHR- )----- ** VkDisplayPowerStateEXT---- | VkDisplayPowerStateEXT - Possible power states for a display------ = See Also------ 'VkDisplayPowerInfoEXT'-newtype VkDisplayPowerStateEXT = VkDisplayPowerStateEXT Int32- deriving (Eq, Ord, Storable)--instance Show VkDisplayPowerStateEXT where- showsPrec _ VK_DISPLAY_POWER_STATE_OFF_EXT = showString "VK_DISPLAY_POWER_STATE_OFF_EXT"- showsPrec _ VK_DISPLAY_POWER_STATE_SUSPEND_EXT = showString "VK_DISPLAY_POWER_STATE_SUSPEND_EXT"- showsPrec _ VK_DISPLAY_POWER_STATE_ON_EXT = showString "VK_DISPLAY_POWER_STATE_ON_EXT"- showsPrec p (VkDisplayPowerStateEXT x) = showParen (p >= 11) (showString "VkDisplayPowerStateEXT " . showsPrec 11 x)--instance Read VkDisplayPowerStateEXT where- readPrec = parens ( choose [ ("VK_DISPLAY_POWER_STATE_OFF_EXT", pure VK_DISPLAY_POWER_STATE_OFF_EXT)- , ("VK_DISPLAY_POWER_STATE_SUSPEND_EXT", pure VK_DISPLAY_POWER_STATE_SUSPEND_EXT)- , ("VK_DISPLAY_POWER_STATE_ON_EXT", pure VK_DISPLAY_POWER_STATE_ON_EXT)- ] +++- prec 10 (do- expectP (Ident "VkDisplayPowerStateEXT")- v <- step readPrec- pure (VkDisplayPowerStateEXT v)- )- )---- | @VK_DISPLAY_POWER_STATE_OFF_EXT@ specifies that the display is powered--- down.-pattern VK_DISPLAY_POWER_STATE_OFF_EXT :: VkDisplayPowerStateEXT-pattern VK_DISPLAY_POWER_STATE_OFF_EXT = VkDisplayPowerStateEXT 0---- | @VK_DISPLAY_POWER_STATE_SUSPEND_EXT@ specifies that the display is put--- into a low power mode, from which it /may/ be able to transition back to--- @VK_DISPLAY_POWER_STATE_ON_EXT@ more quickly than if it were in--- @VK_DISPLAY_POWER_STATE_OFF_EXT@. This state /may/ be the same as--- @VK_DISPLAY_POWER_STATE_OFF_EXT@.-pattern VK_DISPLAY_POWER_STATE_SUSPEND_EXT :: VkDisplayPowerStateEXT-pattern VK_DISPLAY_POWER_STATE_SUSPEND_EXT = VkDisplayPowerStateEXT 1---- | @VK_DISPLAY_POWER_STATE_ON_EXT@ specifies that the display is powered--- on.-pattern VK_DISPLAY_POWER_STATE_ON_EXT :: VkDisplayPowerStateEXT-pattern VK_DISPLAY_POWER_STATE_ON_EXT = VkDisplayPowerStateEXT 2--- ** VkDeviceEventTypeEXT---- | VkDeviceEventTypeEXT - Events that can occur on a device object------ = See Also------ 'VkDeviceEventInfoEXT'-newtype VkDeviceEventTypeEXT = VkDeviceEventTypeEXT Int32- deriving (Eq, Ord, Storable)--instance Show VkDeviceEventTypeEXT where- showsPrec _ VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = showString "VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT"- showsPrec p (VkDeviceEventTypeEXT x) = showParen (p >= 11) (showString "VkDeviceEventTypeEXT " . showsPrec 11 x)--instance Read VkDeviceEventTypeEXT where- readPrec = parens ( choose [ ("VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT", pure VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT)- ] +++- prec 10 (do- expectP (Ident "VkDeviceEventTypeEXT")- v <- step readPrec- pure (VkDeviceEventTypeEXT v)- )- )---- | @VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT@ specifies that the fence is--- signaled when a display is plugged into or unplugged from the specified--- device. Applications /can/ use this notification to determine when they--- need to re-enumerate the available displays on a device.-pattern VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT :: VkDeviceEventTypeEXT-pattern VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = VkDeviceEventTypeEXT 0--- ** VkDisplayEventTypeEXT---- | VkDisplayEventTypeEXT - Events that can occur on a display object------ = See Also------ 'VkDisplayEventInfoEXT'-newtype VkDisplayEventTypeEXT = VkDisplayEventTypeEXT Int32- deriving (Eq, Ord, Storable)--instance Show VkDisplayEventTypeEXT where- showsPrec _ VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = showString "VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT"- showsPrec p (VkDisplayEventTypeEXT x) = showParen (p >= 11) (showString "VkDisplayEventTypeEXT " . showsPrec 11 x)+module Graphics.Vulkan.Extensions.VK_EXT_display_control ( displayPowerControlEXT+ , registerDeviceEventEXT+ , registerDisplayEventEXT+ , getSwapchainCounterEXT+ , DisplayPowerInfoEXT(..)+ , DeviceEventInfoEXT(..)+ , DisplayEventInfoEXT(..)+ , SwapchainCounterCreateInfoEXT(..)+ , DisplayPowerStateEXT( DISPLAY_POWER_STATE_OFF_EXT+ , DISPLAY_POWER_STATE_SUSPEND_EXT+ , DISPLAY_POWER_STATE_ON_EXT+ , ..+ )+ , DeviceEventTypeEXT( DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT+ , ..+ )+ , DisplayEventTypeEXT( DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT+ , ..+ )+ , EXT_DISPLAY_CONTROL_SPEC_VERSION+ , pattern EXT_DISPLAY_CONTROL_SPEC_VERSION+ , EXT_DISPLAY_CONTROL_EXTENSION_NAME+ , pattern EXT_DISPLAY_CONTROL_EXTENSION_NAME+ , DisplayKHR(..)+ , SwapchainKHR(..)+ , SurfaceCounterFlagBitsEXT(..)+ , SurfaceCounterFlagsEXT+ ) where -instance Read VkDisplayEventTypeEXT where- readPrec = parens ( choose [ ("VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT", pure VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT)- ] +++- prec 10 (do- expectP (Ident "VkDisplayEventTypeEXT")- v <- step readPrec- pure (VkDisplayEventTypeEXT v)- )- )+import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+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 Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word64)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDisplayPowerControlEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetSwapchainCounterEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkRegisterDeviceEventEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkRegisterDisplayEventEXT))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.Extensions.Handles (DisplayKHR)+import Graphics.Vulkan.Extensions.Handles (DisplayKHR(..))+import Graphics.Vulkan.Core10.Handles (Fence)+import Graphics.Vulkan.Core10.Handles (Fence(..))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter (SurfaceCounterFlagBitsEXT)+import Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter (SurfaceCounterFlagBitsEXT(..))+import Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter (SurfaceCounterFlagsEXT)+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR)+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.Handles (DisplayKHR(..))+import Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter (SurfaceCounterFlagBitsEXT(..))+import Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter (SurfaceCounterFlagsEXT)+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDisplayPowerControlEXT+ :: FunPtr (Ptr Device_T -> DisplayKHR -> Ptr DisplayPowerInfoEXT -> IO Result) -> Ptr Device_T -> DisplayKHR -> Ptr DisplayPowerInfoEXT -> IO Result --- | @VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT@ specifies that the fence is--- signaled when the first pixel of the next display refresh cycle leaves--- the display engine for the display.-pattern VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT :: VkDisplayEventTypeEXT-pattern VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = VkDisplayEventTypeEXT 0--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"-pattern VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = VkStructureType 1000091000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT"-pattern VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = VkStructureType 1000091001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT"-pattern VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = VkStructureType 1000091002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT"-pattern VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = VkStructureType 1000091003--- No documentation found for TopLevel "VK_EXT_DISPLAY_CONTROL_SPEC_VERSION"-pattern VK_EXT_DISPLAY_CONTROL_SPEC_VERSION :: Integral a => a-pattern VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME"-pattern VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" -- | vkDisplayPowerControlEXT - Set the power state of a display -- -- = Parameters ----- - @device@ is a logical device associated with @display@.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is a logical device+-- associated with 'Graphics.Vulkan.Extensions.WSITypes.Display'. ----- - @display@ is the display whose power state is modified.+-- - 'Graphics.Vulkan.Extensions.WSITypes.Display' is the display whose+-- power state is modified. ----- - @pDisplayPowerInfo@ is an instance of 'VkDisplayPowerInfoEXT'--- specifying the new power state of @display@.+-- - @pDisplayPowerInfo@ is a 'DisplayPowerInfoEXT' structure specifying+-- the new power state of+-- 'Graphics.Vulkan.Extensions.WSITypes.Display'. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - @display@ /must/ be a valid @VkDisplayKHR@ handle+-- - 'Graphics.Vulkan.Extensions.WSITypes.Display' /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.DisplayKHR' handle -- -- - @pDisplayPowerInfo@ /must/ be a valid pointer to a valid--- @VkDisplayPowerInfoEXT@ structure+-- 'DisplayPowerInfoEXT' structure --+-- - Both of 'Graphics.Vulkan.Core10.Handles.Device', and+-- 'Graphics.Vulkan.Extensions.WSITypes.Display' /must/ have been+-- created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+-- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayKHR',--- 'VkDisplayPowerInfoEXT'+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Extensions.Handles.DisplayKHR', 'DisplayPowerInfoEXT'+displayPowerControlEXT :: Device -> DisplayKHR -> DisplayPowerInfoEXT -> IO ()+displayPowerControlEXT device display displayPowerInfo = evalContT $ do+ let vkDisplayPowerControlEXT' = mkVkDisplayPowerControlEXT (pVkDisplayPowerControlEXT (deviceCmds (device :: Device)))+ pDisplayPowerInfo <- ContT $ withCStruct (displayPowerInfo)+ _ <- lift $ vkDisplayPowerControlEXT' (deviceHandle (device)) (display) pDisplayPowerInfo+ pure $ ()++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkDisplayPowerControlEXT" vkDisplayPowerControlEXT :: ("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayPowerInfo" ::: Ptr VkDisplayPowerInfoEXT) -> IO VkResult+ "dynamic" mkVkRegisterDeviceEventEXT+ :: FunPtr (Ptr Device_T -> Ptr DeviceEventInfoEXT -> Ptr AllocationCallbacks -> Ptr Fence -> IO Result) -> Ptr Device_T -> Ptr DeviceEventInfoEXT -> Ptr AllocationCallbacks -> Ptr Fence -> IO Result+ -- | vkRegisterDeviceEventEXT - Signal a fence when a device event occurs -- -- = Parameters ----- - @device@ is a logical device on which the event /may/ occur.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is a logical device on which+-- the event /may/ occur. ----- - @pDeviceEventInfo@ is a pointer to an instance of the--- 'VkDeviceEventInfoEXT' structure describing the event of interest to--- the application.+-- - @pDeviceEventInfo@ is a pointer to a 'DeviceEventInfoEXT' structure+-- describing the event of interest to the application. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. ----- - @pFence@ points to a handle in which the resulting fence object is--- returned.+-- - @pFence@ is a pointer to a handle in which the resulting fence+-- object is returned. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle -- -- - @pDeviceEventInfo@ /must/ be a valid pointer to a valid--- @VkDeviceEventInfoEXT@ structure+-- 'DeviceEventInfoEXT' structure -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - @pFence@ /must/ be a valid pointer to a @VkFence@ handle+-- - @pFence@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.Fence' handle -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkDeviceEventInfoEXT', 'Graphics.Vulkan.Core10.Queue.VkFence'+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device', 'DeviceEventInfoEXT',+-- 'Graphics.Vulkan.Core10.Handles.Fence'+registerDeviceEventEXT :: Device -> DeviceEventInfoEXT -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (Fence)+registerDeviceEventEXT device deviceEventInfo allocator = evalContT $ do+ let vkRegisterDeviceEventEXT' = mkVkRegisterDeviceEventEXT (pVkRegisterDeviceEventEXT (deviceCmds (device :: Device)))+ pDeviceEventInfo <- ContT $ withCStruct (deviceEventInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPFence <- ContT $ bracket (callocBytes @Fence 8) free+ _ <- lift $ vkRegisterDeviceEventEXT' (deviceHandle (device)) pDeviceEventInfo pAllocator (pPFence)+ pFence <- lift $ peek @Fence pPFence+ pure $ (pFence)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkRegisterDeviceEventEXT" vkRegisterDeviceEventEXT :: ("device" ::: VkDevice) -> ("pDeviceEventInfo" ::: Ptr VkDeviceEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult+ "dynamic" mkVkRegisterDisplayEventEXT+ :: FunPtr (Ptr Device_T -> DisplayKHR -> Ptr DisplayEventInfoEXT -> Ptr AllocationCallbacks -> Ptr Fence -> IO Result) -> Ptr Device_T -> DisplayKHR -> Ptr DisplayEventInfoEXT -> Ptr AllocationCallbacks -> Ptr Fence -> IO Result+ -- | vkRegisterDisplayEventEXT - Signal a fence when a display event occurs -- -- = Parameters ----- - @device@ is a logical device associated with @display@+-- - 'Graphics.Vulkan.Core10.Handles.Device' is a logical device+-- associated with 'Graphics.Vulkan.Extensions.WSITypes.Display' ----- - @display@ is the display on which the event /may/ occur.+-- - 'Graphics.Vulkan.Extensions.WSITypes.Display' is the display on+-- which the event /may/ occur. ----- - @pDisplayEventInfo@ is a pointer to an instance of the--- 'VkDisplayEventInfoEXT' structure describing the event of interest--- to the application.+-- - @pDisplayEventInfo@ is a pointer to a 'DisplayEventInfoEXT'+-- structure describing the event of interest to the application. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. ----- - @pFence@ points to a handle in which the resulting fence object is--- returned.+-- - @pFence@ is a pointer to a handle in which the resulting fence+-- object is returned. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - @display@ /must/ be a valid @VkDisplayKHR@ handle+-- - 'Graphics.Vulkan.Extensions.WSITypes.Display' /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.DisplayKHR' handle -- -- - @pDisplayEventInfo@ /must/ be a valid pointer to a valid--- @VkDisplayEventInfoEXT@ structure+-- 'DisplayEventInfoEXT' structure -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - @pFence@ /must/ be a valid pointer to a @VkFence@ handle+-- - @pFence@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.Handles.Fence' handle --+-- - Both of 'Graphics.Vulkan.Core10.Handles.Device', and+-- 'Graphics.Vulkan.Extensions.WSITypes.Display' /must/ have been+-- created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+-- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkDisplayEventInfoEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayKHR',--- 'Graphics.Vulkan.Core10.Queue.VkFence'+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device', 'DisplayEventInfoEXT',+-- 'Graphics.Vulkan.Extensions.Handles.DisplayKHR',+-- 'Graphics.Vulkan.Core10.Handles.Fence'+registerDisplayEventEXT :: Device -> DisplayKHR -> DisplayEventInfoEXT -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (Fence)+registerDisplayEventEXT device display displayEventInfo allocator = evalContT $ do+ let vkRegisterDisplayEventEXT' = mkVkRegisterDisplayEventEXT (pVkRegisterDisplayEventEXT (deviceCmds (device :: Device)))+ pDisplayEventInfo <- ContT $ withCStruct (displayEventInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPFence <- ContT $ bracket (callocBytes @Fence 8) free+ _ <- lift $ vkRegisterDisplayEventEXT' (deviceHandle (device)) (display) pDisplayEventInfo pAllocator (pPFence)+ pFence <- lift $ peek @Fence pPFence+ pure $ (pFence)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkRegisterDisplayEventEXT" vkRegisterDisplayEventEXT :: ("device" ::: VkDevice) -> ("display" ::: VkDisplayKHR) -> ("pDisplayEventInfo" ::: Ptr VkDisplayEventInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pFence" ::: Ptr VkFence) -> IO VkResult+ "dynamic" mkVkGetSwapchainCounterEXT+ :: FunPtr (Ptr Device_T -> SwapchainKHR -> SurfaceCounterFlagBitsEXT -> Ptr Word64 -> IO Result) -> Ptr Device_T -> SwapchainKHR -> SurfaceCounterFlagBitsEXT -> Ptr Word64 -> IO Result+ -- | vkGetSwapchainCounterEXT - Query the current value of a surface counter -- -- = Parameters ----- - @device@ is the @VkDevice@ associated with @swapchain@.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the+-- 'Graphics.Vulkan.Core10.Handles.Device' associated with @swapchain@. -- -- - @swapchain@ is the swapchain from which to query the counter value. --@@ -361,7 +316,8 @@ -- = Description -- -- If a counter is not available because the swapchain is out of date, the--- implementation /may/ return @VK_ERROR_OUT_OF_DATE_KHR@.+-- implementation /may/ return+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'. -- -- == Valid Usage --@@ -370,180 +326,359 @@ -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - @swapchain@ /must/ be a valid @VkSwapchainKHR@ handle+-- - @swapchain@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR' handle -- -- - @counter@ /must/ be a valid--- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCounterFlagBitsEXT'+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCounterFlagBitsEXT' -- value -- -- - @pCounterValue@ /must/ be a valid pointer to a @uint64_t@ value ----- - Both of @device@, and @swapchain@ /must/ have been created,--- allocated, or retrieved from the same @VkInstance@+-- - Both of 'Graphics.Vulkan.Core10.Handles.Device', and @swapchain@+-- /must/ have been created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Instance' -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_DEVICE_LOST@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DATE_KHR@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCounterFlagBitsEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetSwapchainCounterEXT" vkGetSwapchainCounterEXT :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("counter" ::: VkSurfaceCounterFlagBitsEXT) -> ("pCounterValue" ::: Ptr Word64) -> IO VkResult+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCounterFlagBitsEXT',+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR'+getSwapchainCounterEXT :: Device -> SwapchainKHR -> SurfaceCounterFlagBitsEXT -> IO (("counterValue" ::: Word64))+getSwapchainCounterEXT device swapchain counter = evalContT $ do+ let vkGetSwapchainCounterEXT' = mkVkGetSwapchainCounterEXT (pVkGetSwapchainCounterEXT (deviceCmds (device :: Device)))+ pPCounterValue <- ContT $ bracket (callocBytes @Word64 8) free+ r <- lift $ vkGetSwapchainCounterEXT' (deviceHandle (device)) (swapchain) (counter) (pPCounterValue)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pCounterValue <- lift $ peek @Word64 pPCounterValue+ pure $ (pCounterValue)++ -- | VkDisplayPowerInfoEXT - Describe the power state of a display -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT@------ - @pNext@ /must/ be @NULL@------ - @powerState@ /must/ be a valid 'VkDisplayPowerStateEXT' value--- -- = See Also ----- 'VkDisplayPowerStateEXT', 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkDisplayPowerControlEXT'-data VkDisplayPowerInfoEXT = VkDisplayPowerInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @powerState@ is a 'VkDisplayPowerStateEXT' value specifying the new- -- power state of the display.- vkPowerState :: VkDisplayPowerStateEXT- }- deriving (Eq, Show)+-- 'DisplayPowerStateEXT',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'displayPowerControlEXT'+data DisplayPowerInfoEXT = DisplayPowerInfoEXT+ { -- | @powerState@ /must/ be a valid 'DisplayPowerStateEXT' value+ powerState :: DisplayPowerStateEXT }+ deriving (Typeable)+deriving instance Show DisplayPowerInfoEXT -instance Storable VkDisplayPowerInfoEXT where+instance ToCStruct DisplayPowerInfoEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DisplayPowerInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DisplayPowerStateEXT)) (powerState)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DisplayPowerStateEXT)) (zero)+ f++instance FromCStruct DisplayPowerInfoEXT where+ peekCStruct p = do+ powerState <- peek @DisplayPowerStateEXT ((p `plusPtr` 16 :: Ptr DisplayPowerStateEXT))+ pure $ DisplayPowerInfoEXT+ powerState++instance Storable DisplayPowerInfoEXT where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkDisplayPowerInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDisplayPowerInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDisplayPowerInfoEXT))- *> poke (ptr `plusPtr` 16) (vkPowerState (poked :: VkDisplayPowerInfoEXT))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DisplayPowerInfoEXT where+ zero = DisplayPowerInfoEXT+ zero++ -- | VkDeviceEventInfoEXT - Describe a device event to create -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT@------ - @pNext@ /must/ be @NULL@------ - @deviceEvent@ /must/ be a valid 'VkDeviceEventTypeEXT' value--- -- = See Also ----- 'VkDeviceEventTypeEXT', 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkRegisterDeviceEventEXT'-data VkDeviceEventInfoEXT = VkDeviceEventInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkDeviceEventInfoEXT" "deviceEvent"- vkDeviceEvent :: VkDeviceEventTypeEXT- }- deriving (Eq, Show)+-- 'DeviceEventTypeEXT',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'registerDeviceEventEXT'+data DeviceEventInfoEXT = DeviceEventInfoEXT+ { -- | @deviceEvent@ /must/ be a valid 'DeviceEventTypeEXT' value+ deviceEvent :: DeviceEventTypeEXT }+ deriving (Typeable)+deriving instance Show DeviceEventInfoEXT -instance Storable VkDeviceEventInfoEXT where+instance ToCStruct DeviceEventInfoEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DeviceEventInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DeviceEventTypeEXT)) (deviceEvent)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DeviceEventTypeEXT)) (zero)+ f++instance FromCStruct DeviceEventInfoEXT where+ peekCStruct p = do+ deviceEvent <- peek @DeviceEventTypeEXT ((p `plusPtr` 16 :: Ptr DeviceEventTypeEXT))+ pure $ DeviceEventInfoEXT+ deviceEvent++instance Storable DeviceEventInfoEXT where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkDeviceEventInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDeviceEventInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDeviceEventInfoEXT))- *> poke (ptr `plusPtr` 16) (vkDeviceEvent (poked :: VkDeviceEventInfoEXT))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DeviceEventInfoEXT where+ zero = DeviceEventInfoEXT+ zero++ -- | VkDisplayEventInfoEXT - Describe a display event to create -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT@------ - @pNext@ /must/ be @NULL@------ - @displayEvent@ /must/ be a valid 'VkDisplayEventTypeEXT' value--- -- = See Also ----- 'VkDisplayEventTypeEXT', 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkRegisterDisplayEventEXT'-data VkDisplayEventInfoEXT = VkDisplayEventInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @displayEvent@ is a 'VkDisplayEventTypeEXT' specifying when the fence- -- will be signaled.- vkDisplayEvent :: VkDisplayEventTypeEXT- }- deriving (Eq, Show)+-- 'DisplayEventTypeEXT',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'registerDisplayEventEXT'+data DisplayEventInfoEXT = DisplayEventInfoEXT+ { -- | @displayEvent@ /must/ be a valid 'DisplayEventTypeEXT' value+ displayEvent :: DisplayEventTypeEXT }+ deriving (Typeable)+deriving instance Show DisplayEventInfoEXT -instance Storable VkDisplayEventInfoEXT where+instance ToCStruct DisplayEventInfoEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DisplayEventInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DisplayEventTypeEXT)) (displayEvent)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DisplayEventTypeEXT)) (zero)+ f++instance FromCStruct DisplayEventInfoEXT where+ peekCStruct p = do+ displayEvent <- peek @DisplayEventTypeEXT ((p `plusPtr` 16 :: Ptr DisplayEventTypeEXT))+ pure $ DisplayEventInfoEXT+ displayEvent++instance Storable DisplayEventInfoEXT where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkDisplayEventInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDisplayEventInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDisplayEventInfoEXT))- *> poke (ptr `plusPtr` 16) (vkDisplayEvent (poked :: VkDisplayEventInfoEXT))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DisplayEventInfoEXT where+ zero = DisplayEventInfoEXT+ zero++ -- | VkSwapchainCounterCreateInfoEXT - Specify the surface counters desired -- -- == Valid Usage -- -- - The bits in @surfaceCounters@ /must/ be supported by--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR'::@surface@,+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'::@surface@, -- as reported by--- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.vkGetPhysicalDeviceSurfaceCapabilities2EXT'.+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.getPhysicalDeviceSurfaceCapabilities2EXT'. -- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT' -- -- - @surfaceCounters@ /must/ be a valid combination of--- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCounterFlagBitsEXT'+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCounterFlagBitsEXT' -- values -- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCounterFlagsEXT'-data VkSwapchainCounterCreateInfoEXT = VkSwapchainCounterCreateInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @surfaceCounters@ is a bitmask of- -- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCounterFlagBitsEXT'- -- specifying surface counters to enable for the swapchain.- vkSurfaceCounters :: VkSurfaceCounterFlagsEXT- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCounterFlagsEXT'+data SwapchainCounterCreateInfoEXT = SwapchainCounterCreateInfoEXT+ { -- | @surfaceCounters@ is a bitmask of+ -- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCounterFlagBitsEXT'+ -- specifying surface counters to enable for the swapchain.+ surfaceCounters :: SurfaceCounterFlagsEXT }+ deriving (Typeable)+deriving instance Show SwapchainCounterCreateInfoEXT -instance Storable VkSwapchainCounterCreateInfoEXT where+instance ToCStruct SwapchainCounterCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SwapchainCounterCreateInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr SurfaceCounterFlagsEXT)) (surfaceCounters)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct SwapchainCounterCreateInfoEXT where+ peekCStruct p = do+ surfaceCounters <- peek @SurfaceCounterFlagsEXT ((p `plusPtr` 16 :: Ptr SurfaceCounterFlagsEXT))+ pure $ SwapchainCounterCreateInfoEXT+ surfaceCounters++instance Storable SwapchainCounterCreateInfoEXT where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkSwapchainCounterCreateInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkSwapchainCounterCreateInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkSwapchainCounterCreateInfoEXT))- *> poke (ptr `plusPtr` 16) (vkSurfaceCounters (poked :: VkSwapchainCounterCreateInfoEXT))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SwapchainCounterCreateInfoEXT where+ zero = SwapchainCounterCreateInfoEXT+ zero+++-- | VkDisplayPowerStateEXT - Possible power states for a display+--+-- = See Also+--+-- 'DisplayPowerInfoEXT'+newtype DisplayPowerStateEXT = DisplayPowerStateEXT Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'DISPLAY_POWER_STATE_OFF_EXT' specifies that the display is powered+-- down.+pattern DISPLAY_POWER_STATE_OFF_EXT = DisplayPowerStateEXT 0+-- | 'DISPLAY_POWER_STATE_SUSPEND_EXT' specifies that the display is put into+-- a low power mode, from which it /may/ be able to transition back to+-- 'DISPLAY_POWER_STATE_ON_EXT' more quickly than if it were in+-- 'DISPLAY_POWER_STATE_OFF_EXT'. This state /may/ be the same as+-- 'DISPLAY_POWER_STATE_OFF_EXT'.+pattern DISPLAY_POWER_STATE_SUSPEND_EXT = DisplayPowerStateEXT 1+-- | 'DISPLAY_POWER_STATE_ON_EXT' specifies that the display is powered on.+pattern DISPLAY_POWER_STATE_ON_EXT = DisplayPowerStateEXT 2+{-# complete DISPLAY_POWER_STATE_OFF_EXT,+ DISPLAY_POWER_STATE_SUSPEND_EXT,+ DISPLAY_POWER_STATE_ON_EXT :: DisplayPowerStateEXT #-}++instance Show DisplayPowerStateEXT where+ showsPrec p = \case+ DISPLAY_POWER_STATE_OFF_EXT -> showString "DISPLAY_POWER_STATE_OFF_EXT"+ DISPLAY_POWER_STATE_SUSPEND_EXT -> showString "DISPLAY_POWER_STATE_SUSPEND_EXT"+ DISPLAY_POWER_STATE_ON_EXT -> showString "DISPLAY_POWER_STATE_ON_EXT"+ DisplayPowerStateEXT x -> showParen (p >= 11) (showString "DisplayPowerStateEXT " . showsPrec 11 x)++instance Read DisplayPowerStateEXT where+ readPrec = parens (choose [("DISPLAY_POWER_STATE_OFF_EXT", pure DISPLAY_POWER_STATE_OFF_EXT)+ , ("DISPLAY_POWER_STATE_SUSPEND_EXT", pure DISPLAY_POWER_STATE_SUSPEND_EXT)+ , ("DISPLAY_POWER_STATE_ON_EXT", pure DISPLAY_POWER_STATE_ON_EXT)]+ ++++ prec 10 (do+ expectP (Ident "DisplayPowerStateEXT")+ v <- step readPrec+ pure (DisplayPowerStateEXT v)))+++-- | VkDeviceEventTypeEXT - Events that can occur on a device object+--+-- = See Also+--+-- 'DeviceEventInfoEXT'+newtype DeviceEventTypeEXT = DeviceEventTypeEXT Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT' specifies that the fence is+-- signaled when a display is plugged into or unplugged from the specified+-- device. Applications /can/ use this notification to determine when they+-- need to re-enumerate the available displays on a device.+pattern DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = DeviceEventTypeEXT 0+{-# complete DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT :: DeviceEventTypeEXT #-}++instance Show DeviceEventTypeEXT where+ showsPrec p = \case+ DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT -> showString "DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT"+ DeviceEventTypeEXT x -> showParen (p >= 11) (showString "DeviceEventTypeEXT " . showsPrec 11 x)++instance Read DeviceEventTypeEXT where+ readPrec = parens (choose [("DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT", pure DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT)]+ ++++ prec 10 (do+ expectP (Ident "DeviceEventTypeEXT")+ v <- step readPrec+ pure (DeviceEventTypeEXT v)))+++-- | VkDisplayEventTypeEXT - Events that can occur on a display object+--+-- = See Also+--+-- 'DisplayEventInfoEXT'+newtype DisplayEventTypeEXT = DisplayEventTypeEXT Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT' specifies that the fence is+-- signaled when the first pixel of the next display refresh cycle leaves+-- the display engine for the display.+pattern DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = DisplayEventTypeEXT 0+{-# complete DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT :: DisplayEventTypeEXT #-}++instance Show DisplayEventTypeEXT where+ showsPrec p = \case+ DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT -> showString "DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT"+ DisplayEventTypeEXT x -> showParen (p >= 11) (showString "DisplayEventTypeEXT " . showsPrec 11 x)++instance Read DisplayEventTypeEXT where+ readPrec = parens (choose [("DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT", pure DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT)]+ ++++ prec 10 (do+ expectP (Ident "DisplayEventTypeEXT")+ v <- step readPrec+ pure (DisplayEventTypeEXT v)))+++type EXT_DISPLAY_CONTROL_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_DISPLAY_CONTROL_SPEC_VERSION"+pattern EXT_DISPLAY_CONTROL_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_DISPLAY_CONTROL_SPEC_VERSION = 1+++type EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control"++-- No documentation found for TopLevel "VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME"+pattern EXT_DISPLAY_CONTROL_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_display_control.hs-boot view
@@ -0,0 +1,41 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_display_control ( DeviceEventInfoEXT+ , DisplayEventInfoEXT+ , DisplayPowerInfoEXT+ , SwapchainCounterCreateInfoEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data DeviceEventInfoEXT++instance ToCStruct DeviceEventInfoEXT+instance Show DeviceEventInfoEXT++instance FromCStruct DeviceEventInfoEXT+++data DisplayEventInfoEXT++instance ToCStruct DisplayEventInfoEXT+instance Show DisplayEventInfoEXT++instance FromCStruct DisplayEventInfoEXT+++data DisplayPowerInfoEXT++instance ToCStruct DisplayPowerInfoEXT+instance Show DisplayPowerInfoEXT++instance FromCStruct DisplayPowerInfoEXT+++data SwapchainCounterCreateInfoEXT++instance ToCStruct SwapchainCounterCreateInfoEXT+instance Show SwapchainCounterCreateInfoEXT++instance FromCStruct SwapchainCounterCreateInfoEXT+
src/Graphics/Vulkan/Extensions/VK_EXT_display_surface_counter.hs view
@@ -1,291 +1,370 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter- ( VkSurfaceCounterFlagBitsEXT(..)- , pattern VK_SURFACE_COUNTER_VBLANK_EXT- , pattern VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT- , pattern VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION- , pattern VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME- , pattern VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT- , vkGetPhysicalDeviceSurfaceCapabilities2EXT- , VkSurfaceCapabilities2EXT(..)- , VkSurfaceCounterFlagsEXT- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkImageUsageFlags- , VkPhysicalDevice- )-import Graphics.Vulkan.Core10.Pipeline- ( VkExtent2D(..)- )-import Graphics.Vulkan.Extensions.VK_KHR_surface- ( VkSurfaceTransformFlagBitsKHR(..)- , VkCompositeAlphaFlagsKHR- , VkSurfaceKHR- , VkSurfaceTransformFlagsKHR- )----- ** VkSurfaceCounterFlagBitsEXT---- | VkSurfaceCounterFlagBitsEXT - Surface-relative counter types------ = See Also------ 'VkSurfaceCounterFlagsEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkGetSwapchainCounterEXT'-newtype VkSurfaceCounterFlagBitsEXT = VkSurfaceCounterFlagBitsEXT VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkSurfaceCounterFlagBitsEXT where- showsPrec _ VK_SURFACE_COUNTER_VBLANK_EXT = showString "VK_SURFACE_COUNTER_VBLANK_EXT"- showsPrec p (VkSurfaceCounterFlagBitsEXT x) = showParen (p >= 11) (showString "VkSurfaceCounterFlagBitsEXT " . showsPrec 11 x)+module Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter ( getPhysicalDeviceSurfaceCapabilities2EXT+ , pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT+ , SurfaceCapabilities2EXT(..)+ , CompositeAlphaFlagBitsKHR( COMPOSITE_ALPHA_OPAQUE_BIT_KHR+ , COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR+ , COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR+ , COMPOSITE_ALPHA_INHERIT_BIT_KHR+ , ..+ )+ , CompositeAlphaFlagsKHR+ , SurfaceCounterFlagBitsEXT( SURFACE_COUNTER_VBLANK_EXT+ , ..+ )+ , SurfaceCounterFlagsEXT+ , EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION+ , pattern EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION+ , EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME+ , pattern EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME+ , SurfaceKHR(..)+ , SurfaceTransformFlagBitsKHR(..)+ , SurfaceTransformFlagsKHR+ ) where -instance Read VkSurfaceCounterFlagBitsEXT where- readPrec = parens ( choose [ ("VK_SURFACE_COUNTER_VBLANK_EXT", pure VK_SURFACE_COUNTER_VBLANK_EXT)- ] +++- prec 10 (do- expectP (Ident "VkSurfaceCounterFlagBitsEXT")- v <- step readPrec- pure (VkSurfaceCounterFlagBitsEXT v)- )- )+import Foreign.Marshal.Alloc (allocaBytesAligned)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Bits (Bits)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Core10.SharedTypes (Extent2D)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceSurfaceCapabilities2EXT))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (SurfaceTransformFlagBitsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_display (SurfaceTransformFlagsKHR)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (SurfaceTransformFlagBitsKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (SurfaceTransformFlagsKHR)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceSurfaceCapabilities2EXT+ :: FunPtr (Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr SurfaceCapabilities2EXT -> IO Result) -> Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr SurfaceCapabilities2EXT -> IO Result --- | @VK_SURFACE_COUNTER_VBLANK_EXT@ specifies a counter incrementing once--- every time a vertical blanking period occurs on the display associated--- with the surface.-pattern VK_SURFACE_COUNTER_VBLANK_EXT :: VkSurfaceCounterFlagBitsEXT-pattern VK_SURFACE_COUNTER_VBLANK_EXT = VkSurfaceCounterFlagBitsEXT 0x00000001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT"-pattern VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = VkStructureType 1000090000--- No documentation found for TopLevel "VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION"-pattern VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION :: Integral a => a-pattern VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME"-pattern VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter"--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT"-pattern VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT -- | vkGetPhysicalDeviceSurfaceCapabilities2EXT - Query surface capabilities -- -- = Parameters ----- - @physicalDevice@ is the physical device that will be associated with--- the swapchain to be created, as described for--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkCreateSwapchainKHR'.+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device that will be associated with the swapchain to be created, as+-- described for+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'. -- -- - @surface@ is the surface that will be associated with the swapchain. ----- - @pSurfaceCapabilities@ is a pointer to an instance of the--- 'VkSurfaceCapabilities2EXT' structure in which the capabilities are--- returned.+-- - @pSurfaceCapabilities@ is a pointer to a 'SurfaceCapabilities2EXT'+-- structure in which the capabilities are returned. -- -- = Description ----- @vkGetPhysicalDeviceSurfaceCapabilities2EXT@ behaves similarly to--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkGetPhysicalDeviceSurfaceCapabilitiesKHR',+-- 'getPhysicalDeviceSurfaceCapabilities2EXT' behaves similarly to+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR', -- with the ability to return extended information by adding extension -- structures to the @pNext@ chain of its @pSurfaceCapabilities@ parameter. -- -- == Valid Usage (Implicit) ----- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle ----- - @surface@ /must/ be a valid @VkSurfaceKHR@ handle+-- - @surface@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle -- -- - @pSurfaceCapabilities@ /must/ be a valid pointer to a--- @VkSurfaceCapabilities2EXT@ structure+-- 'SurfaceCapabilities2EXT' structure ----- - Both of @physicalDevice@, and @surface@ /must/ have been created,--- allocated, or retrieved from the same @VkInstance@+-- - Both of 'Graphics.Vulkan.Core10.Handles.PhysicalDevice', and+-- @surface@ /must/ have been created, allocated, or retrieved from the+-- same 'Graphics.Vulkan.Core10.Handles.Instance' -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- - @VK_ERROR_SURFACE_LOST_KHR@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',--- 'VkSurfaceCapabilities2EXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceSurfaceCapabilities2EXT" vkGetPhysicalDeviceSurfaceCapabilities2EXT :: ("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2EXT) -> IO VkResult+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'SurfaceCapabilities2EXT',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR'+getPhysicalDeviceSurfaceCapabilities2EXT :: PhysicalDevice -> SurfaceKHR -> IO (SurfaceCapabilities2EXT)+getPhysicalDeviceSurfaceCapabilities2EXT physicalDevice surface = evalContT $ do+ let vkGetPhysicalDeviceSurfaceCapabilities2EXT' = mkVkGetPhysicalDeviceSurfaceCapabilities2EXT (pVkGetPhysicalDeviceSurfaceCapabilities2EXT (instanceCmds (physicalDevice :: PhysicalDevice)))+ pPSurfaceCapabilities <- ContT (withZeroCStruct @SurfaceCapabilities2EXT)+ r <- lift $ vkGetPhysicalDeviceSurfaceCapabilities2EXT' (physicalDeviceHandle (physicalDevice)) (surface) (pPSurfaceCapabilities)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSurfaceCapabilities <- lift $ peekCStruct @SurfaceCapabilities2EXT pPSurfaceCapabilities+ pure $ (pSurfaceCapabilities)+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT"+pattern STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT++ -- | VkSurfaceCapabilities2EXT - Structure describing capabilities of a -- surface -- -- = Members ----- All members of @VkSurfaceCapabilities2EXT@ are identical to the+-- All members of 'SurfaceCapabilities2EXT' are identical to the -- corresponding members of--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceCapabilitiesKHR'--- where one exists. The remaining members are:------ = Description------ - @sType@ is the type of this structure.------ - @pNext@ is @NULL@ or a pointer to an extension-specific structure.------ - @supportedSurfaceCounters@ is a bitmask of--- 'VkSurfaceCounterFlagBitsEXT' indicating the supported surface--- counter types.------ == Valid Usage------ - @supportedSurfaceCounters@ /must/ not include--- @VK_SURFACE_COUNTER_VBLANK_EXT@ unless the surface queried is a--- [display--- surface](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#wsi-display-surfaces).+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR' where+-- one exists. The remaining members are: -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT@------ - @pNext@ /must/ be @NULL@--- -- = See Also ----- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkCompositeAlphaFlagsKHR',--- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'VkSurfaceCounterFlagsEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceTransformFlagBitsKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceTransformFlagsKHR',--- 'vkGetPhysicalDeviceSurfaceCapabilities2EXT'-data VkSurfaceCapabilities2EXT = VkSurfaceCapabilities2EXT- { -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "minImageCount"- vkMinImageCount :: Word32+-- 'CompositeAlphaFlagsKHR', 'Graphics.Vulkan.Core10.SharedTypes.Extent2D',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'SurfaceCounterFlagsEXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.SurfaceTransformFlagBitsKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.SurfaceTransformFlagsKHR',+-- 'getPhysicalDeviceSurfaceCapabilities2EXT'+data SurfaceCapabilities2EXT = SurfaceCapabilities2EXT+ { -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "minImageCount"+ minImageCount :: Word32 , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "maxImageCount"- vkMaxImageCount :: Word32+ maxImageCount :: Word32 , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "currentExtent"- vkCurrentExtent :: VkExtent2D+ currentExtent :: Extent2D , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "minImageExtent"- vkMinImageExtent :: VkExtent2D+ minImageExtent :: Extent2D , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "maxImageExtent"- vkMaxImageExtent :: VkExtent2D+ maxImageExtent :: Extent2D , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "maxImageArrayLayers"- vkMaxImageArrayLayers :: Word32+ maxImageArrayLayers :: Word32 , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "supportedTransforms"- vkSupportedTransforms :: VkSurfaceTransformFlagsKHR+ supportedTransforms :: SurfaceTransformFlagsKHR , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "currentTransform"- vkCurrentTransform :: VkSurfaceTransformFlagBitsKHR+ currentTransform :: SurfaceTransformFlagBitsKHR , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "supportedCompositeAlpha"- vkSupportedCompositeAlpha :: VkCompositeAlphaFlagsKHR+ supportedCompositeAlpha :: CompositeAlphaFlagsKHR , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "supportedUsageFlags"- vkSupportedUsageFlags :: VkImageUsageFlags- , -- No documentation found for Nested "VkSurfaceCapabilities2EXT" "supportedSurfaceCounters"- vkSupportedSurfaceCounters :: VkSurfaceCounterFlagsEXT+ supportedUsageFlags :: ImageUsageFlags+ , -- | @supportedSurfaceCounters@ /must/ not include+ -- 'SURFACE_COUNTER_VBLANK_EXT' unless the surface queried is a+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#wsi-display-surfaces display surface>.+ supportedSurfaceCounters :: SurfaceCounterFlagsEXT }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show SurfaceCapabilities2EXT -instance Storable VkSurfaceCapabilities2EXT where- sizeOf ~_ = 72- alignment ~_ = 8- peek ptr = VkSurfaceCapabilities2EXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 52)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 60)- <*> peek (ptr `plusPtr` 64)- <*> peek (ptr `plusPtr` 68)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkSurfaceCapabilities2EXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkSurfaceCapabilities2EXT))- *> poke (ptr `plusPtr` 16) (vkMinImageCount (poked :: VkSurfaceCapabilities2EXT))- *> poke (ptr `plusPtr` 20) (vkMaxImageCount (poked :: VkSurfaceCapabilities2EXT))- *> poke (ptr `plusPtr` 24) (vkCurrentExtent (poked :: VkSurfaceCapabilities2EXT))- *> poke (ptr `plusPtr` 32) (vkMinImageExtent (poked :: VkSurfaceCapabilities2EXT))- *> poke (ptr `plusPtr` 40) (vkMaxImageExtent (poked :: VkSurfaceCapabilities2EXT))- *> poke (ptr `plusPtr` 48) (vkMaxImageArrayLayers (poked :: VkSurfaceCapabilities2EXT))- *> poke (ptr `plusPtr` 52) (vkSupportedTransforms (poked :: VkSurfaceCapabilities2EXT))- *> poke (ptr `plusPtr` 56) (vkCurrentTransform (poked :: VkSurfaceCapabilities2EXT))- *> poke (ptr `plusPtr` 60) (vkSupportedCompositeAlpha (poked :: VkSurfaceCapabilities2EXT))- *> poke (ptr `plusPtr` 64) (vkSupportedUsageFlags (poked :: VkSurfaceCapabilities2EXT))- *> poke (ptr `plusPtr` 68) (vkSupportedSurfaceCounters (poked :: VkSurfaceCapabilities2EXT))--- | VkSurfaceCounterFlagsEXT - Bitmask of VkSurfaceCounterFlagBitsEXT+instance ToCStruct SurfaceCapabilities2EXT where+ withCStruct x f = allocaBytesAligned 72 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SurfaceCapabilities2EXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (minImageCount)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (maxImageCount)+ ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent2D)) (currentExtent) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr Extent2D)) (minImageExtent) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr Extent2D)) (maxImageExtent) . ($ ())+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (maxImageArrayLayers)+ lift $ poke ((p `plusPtr` 52 :: Ptr SurfaceTransformFlagsKHR)) (supportedTransforms)+ lift $ poke ((p `plusPtr` 56 :: Ptr SurfaceTransformFlagBitsKHR)) (currentTransform)+ lift $ poke ((p `plusPtr` 60 :: Ptr CompositeAlphaFlagsKHR)) (supportedCompositeAlpha)+ lift $ poke ((p `plusPtr` 64 :: Ptr ImageUsageFlags)) (supportedUsageFlags)+ lift $ poke ((p `plusPtr` 68 :: Ptr SurfaceCounterFlagsEXT)) (supportedSurfaceCounters)+ lift $ f+ cStructSize = 72+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent2D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr Extent2D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr Extent2D)) (zero) . ($ ())+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 56 :: Ptr SurfaceTransformFlagBitsKHR)) (zero)+ lift $ f++instance FromCStruct SurfaceCapabilities2EXT where+ peekCStruct p = do+ minImageCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ maxImageCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ currentExtent <- peekCStruct @Extent2D ((p `plusPtr` 24 :: Ptr Extent2D))+ minImageExtent <- peekCStruct @Extent2D ((p `plusPtr` 32 :: Ptr Extent2D))+ maxImageExtent <- peekCStruct @Extent2D ((p `plusPtr` 40 :: Ptr Extent2D))+ maxImageArrayLayers <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+ supportedTransforms <- peek @SurfaceTransformFlagsKHR ((p `plusPtr` 52 :: Ptr SurfaceTransformFlagsKHR))+ currentTransform <- peek @SurfaceTransformFlagBitsKHR ((p `plusPtr` 56 :: Ptr SurfaceTransformFlagBitsKHR))+ supportedCompositeAlpha <- peek @CompositeAlphaFlagsKHR ((p `plusPtr` 60 :: Ptr CompositeAlphaFlagsKHR))+ supportedUsageFlags <- peek @ImageUsageFlags ((p `plusPtr` 64 :: Ptr ImageUsageFlags))+ supportedSurfaceCounters <- peek @SurfaceCounterFlagsEXT ((p `plusPtr` 68 :: Ptr SurfaceCounterFlagsEXT))+ pure $ SurfaceCapabilities2EXT+ minImageCount maxImageCount currentExtent minImageExtent maxImageExtent maxImageArrayLayers supportedTransforms currentTransform supportedCompositeAlpha supportedUsageFlags supportedSurfaceCounters++instance Zero SurfaceCapabilities2EXT where+ zero = SurfaceCapabilities2EXT+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkCompositeAlphaFlagBitsKHR - alpha compositing modes supported on a+-- device -- -- = Description ----- @VkSurfaceCounterFlagsEXT@ is a bitmask type for setting a mask of zero--- or more 'VkSurfaceCounterFlagBitsEXT'.+-- These values are described as follows: -- -- = See Also ----- 'VkSurfaceCapabilities2EXT', 'VkSurfaceCounterFlagBitsEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.VkSwapchainCounterCreateInfoEXT'-type VkSurfaceCounterFlagsEXT = VkSurfaceCounterFlagBitsEXT+-- 'CompositeAlphaFlagsKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'+newtype CompositeAlphaFlagBitsKHR = CompositeAlphaFlagBitsKHR Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'COMPOSITE_ALPHA_OPAQUE_BIT_KHR': The alpha channel, if it exists, of+-- the images is ignored in the compositing process. Instead, the image is+-- treated as if it has a constant alpha of 1.0.+pattern COMPOSITE_ALPHA_OPAQUE_BIT_KHR = CompositeAlphaFlagBitsKHR 0x00000001+-- | 'COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR': The alpha channel, if it+-- exists, of the images is respected in the compositing process. The+-- non-alpha channels of the image are expected to already be multiplied by+-- the alpha channel by the application.+pattern COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = CompositeAlphaFlagBitsKHR 0x00000002+-- | 'COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR': The alpha channel, if it+-- exists, of the images is respected in the compositing process. The+-- non-alpha channels of the image are not expected to already be+-- multiplied by the alpha channel by the application; instead, the+-- compositor will multiply the non-alpha channels of the image by the+-- alpha channel during compositing.+pattern COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = CompositeAlphaFlagBitsKHR 0x00000004+-- | 'COMPOSITE_ALPHA_INHERIT_BIT_KHR': The way in which the presentation+-- engine treats the alpha channel in the images is unknown to the Vulkan+-- API. Instead, the application is responsible for setting the composite+-- alpha blending mode using native window system commands. If the+-- application does not set the blending mode using native window system+-- commands, then a platform-specific default will be used.+pattern COMPOSITE_ALPHA_INHERIT_BIT_KHR = CompositeAlphaFlagBitsKHR 0x00000008++type CompositeAlphaFlagsKHR = CompositeAlphaFlagBitsKHR++instance Show CompositeAlphaFlagBitsKHR where+ showsPrec p = \case+ COMPOSITE_ALPHA_OPAQUE_BIT_KHR -> showString "COMPOSITE_ALPHA_OPAQUE_BIT_KHR"+ COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR -> showString "COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"+ COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR -> showString "COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"+ COMPOSITE_ALPHA_INHERIT_BIT_KHR -> showString "COMPOSITE_ALPHA_INHERIT_BIT_KHR"+ CompositeAlphaFlagBitsKHR x -> showParen (p >= 11) (showString "CompositeAlphaFlagBitsKHR 0x" . showHex x)++instance Read CompositeAlphaFlagBitsKHR where+ readPrec = parens (choose [("COMPOSITE_ALPHA_OPAQUE_BIT_KHR", pure COMPOSITE_ALPHA_OPAQUE_BIT_KHR)+ , ("COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR", pure COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR)+ , ("COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR", pure COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR)+ , ("COMPOSITE_ALPHA_INHERIT_BIT_KHR", pure COMPOSITE_ALPHA_INHERIT_BIT_KHR)]+ ++++ prec 10 (do+ expectP (Ident "CompositeAlphaFlagBitsKHR")+ v <- step readPrec+ pure (CompositeAlphaFlagBitsKHR v)))+++-- | VkSurfaceCounterFlagBitsEXT - Surface-relative counter types+--+-- = See Also+--+-- 'SurfaceCounterFlagsEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.getSwapchainCounterEXT'+newtype SurfaceCounterFlagBitsEXT = SurfaceCounterFlagBitsEXT Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'SURFACE_COUNTER_VBLANK_EXT' specifies a counter incrementing once every+-- time a vertical blanking period occurs on the display associated with+-- the surface.+pattern SURFACE_COUNTER_VBLANK_EXT = SurfaceCounterFlagBitsEXT 0x00000001++type SurfaceCounterFlagsEXT = SurfaceCounterFlagBitsEXT++instance Show SurfaceCounterFlagBitsEXT where+ showsPrec p = \case+ SURFACE_COUNTER_VBLANK_EXT -> showString "SURFACE_COUNTER_VBLANK_EXT"+ SurfaceCounterFlagBitsEXT x -> showParen (p >= 11) (showString "SurfaceCounterFlagBitsEXT 0x" . showHex x)++instance Read SurfaceCounterFlagBitsEXT where+ readPrec = parens (choose [("SURFACE_COUNTER_VBLANK_EXT", pure SURFACE_COUNTER_VBLANK_EXT)]+ ++++ prec 10 (do+ expectP (Ident "SurfaceCounterFlagBitsEXT")+ v <- step readPrec+ pure (SurfaceCounterFlagBitsEXT v)))+++type EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION"+pattern EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1+++type EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter"++-- No documentation found for TopLevel "VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME"+pattern EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_display_surface_counter.hs-boot view
@@ -0,0 +1,21 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter ( SurfaceCapabilities2EXT+ , SurfaceCounterFlagBitsEXT+ , SurfaceCounterFlagsEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data SurfaceCapabilities2EXT++instance ToCStruct SurfaceCapabilities2EXT+instance Show SurfaceCapabilities2EXT++instance FromCStruct SurfaceCapabilities2EXT+++data SurfaceCounterFlagBitsEXT++type SurfaceCounterFlagsEXT = SurfaceCounterFlagBitsEXT+
src/Graphics/Vulkan/Extensions/VK_EXT_external_memory_dma_buf.hs view
@@ -1,30 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}+module Graphics.Vulkan.Extensions.VK_EXT_external_memory_dma_buf ( EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION+ , pattern EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION+ , EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME+ , pattern EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_EXT_external_memory_dma_buf- ( pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT- , pattern VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION- , pattern VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME- ) where+import Data.String (IsString) -import Data.String- ( IsString- )+type EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION"+pattern EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 -import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities- ( VkExternalMemoryHandleTypeFlagBits(..)- ) +type EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" --- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT"-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT :: VkExternalMemoryHandleTypeFlagBits-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = VkExternalMemoryHandleTypeFlagBits 0x00000200--- No documentation found for TopLevel "VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION"-pattern VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION :: Integral a => a-pattern VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME"-pattern VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf"+pattern EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf"+
src/Graphics/Vulkan/Extensions/VK_EXT_external_memory_host.hs view
@@ -1,136 +1,135 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_EXT_external_memory_host- ( pattern VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT- , pattern VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT- , pattern VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION- , pattern VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME- , vkGetMemoryHostPointerPropertiesEXT- , VkImportMemoryHostPointerInfoEXT(..)- , VkMemoryHostPointerPropertiesEXT(..)- , VkPhysicalDeviceExternalMemoryHostPropertiesEXT(..)- ) where--import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- , VkDeviceSize- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities- ( VkExternalMemoryHandleTypeFlagBits(..)- )+module Graphics.Vulkan.Extensions.VK_EXT_external_memory_host ( getMemoryHostPointerPropertiesEXT+ , ImportMemoryHostPointerInfoEXT(..)+ , MemoryHostPointerPropertiesEXT(..)+ , PhysicalDeviceExternalMemoryHostPropertiesEXT(..)+ , EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION+ , pattern EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION+ , EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME+ , pattern EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME+ , ExternalMemoryHandleTypeFlagsKHR+ , ExternalMemoryHandleTypeFlagBitsKHR+ ) where +import Foreign.Marshal.Alloc (allocaBytesAligned)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetMemoryHostPointerPropertiesEXT))+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits(..))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities (ExternalMemoryHandleTypeFlagBitsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities (ExternalMemoryHandleTypeFlagsKHR)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetMemoryHostPointerPropertiesEXT+ :: FunPtr (Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> Ptr () -> Ptr MemoryHostPointerPropertiesEXT -> IO Result) -> Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> Ptr () -> Ptr MemoryHostPointerPropertiesEXT -> IO Result --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT"-pattern VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = VkStructureType 1000178000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT"-pattern VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = VkStructureType 1000178001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = VkStructureType 1000178002--- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT"-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT :: VkExternalMemoryHandleTypeFlagBits-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = VkExternalMemoryHandleTypeFlagBits 0x00000080--- No documentation found for Nested "VkExternalMemoryHandleTypeFlagBits" "VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT"-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT :: VkExternalMemoryHandleTypeFlagBits-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = VkExternalMemoryHandleTypeFlagBits 0x00000100--- No documentation found for TopLevel "VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION"-pattern VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION :: Integral a => a-pattern VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME"-pattern VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" -- | vkGetMemoryHostPointerPropertiesEXT - Get properties of external memory -- host pointer -- -- = Parameters ----- - @device@ is the logical device that will be importing--- @pHostPointer@.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- will be importing @pHostPointer@. -- -- - @handleType@ is the type of the handle @pHostPointer@. -- -- - @pHostPointer@ is the host pointer to import from. --+-- - @pMemoryHostPointerProperties@ is a pointer to a+-- 'MemoryHostPointerPropertiesEXT' structure in which the host pointer+-- properties are returned.+-- -- == Valid Usage -- -- - @handleType@ /must/ be--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT@ or--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT@+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT'+-- or+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT' -- -- - @pHostPointer@ /must/ be a pointer aligned to an integer multiple of--- @VkPhysicalDeviceExternalMemoryHostPropertiesEXT@::@minImportedHostPointerAlignment@+-- 'PhysicalDeviceExternalMemoryHostPropertiesEXT'::@minImportedHostPointerAlignment@ -- -- - If @handleType@ is--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT@,+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT', -- @pHostPointer@ /must/ be a pointer to host memory -- -- - If @handleType@ is--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT@,+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT', -- @pHostPointer@ /must/ be a pointer to host mapped foreign memory -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle -- -- - @handleType@ /must/ be a valid--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits' -- value -- -- - @pMemoryHostPointerProperties@ /must/ be a valid pointer to a--- @VkMemoryHostPointerPropertiesEXT@ structure+-- 'MemoryHostPointerPropertiesEXT' structure -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_INVALID_EXTERNAL_HANDLE@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' --+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits',--- 'VkMemoryHostPointerPropertiesEXT'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetMemoryHostPointerPropertiesEXT" vkGetMemoryHostPointerPropertiesEXT :: ("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("pHostPointer" ::: Ptr ()) -> ("pMemoryHostPointerProperties" ::: Ptr VkMemoryHostPointerPropertiesEXT) -> IO VkResult+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',+-- 'MemoryHostPointerPropertiesEXT'+getMemoryHostPointerPropertiesEXT :: Device -> ExternalMemoryHandleTypeFlagBits -> ("hostPointer" ::: Ptr ()) -> IO (MemoryHostPointerPropertiesEXT)+getMemoryHostPointerPropertiesEXT device handleType hostPointer = evalContT $ do+ let vkGetMemoryHostPointerPropertiesEXT' = mkVkGetMemoryHostPointerPropertiesEXT (pVkGetMemoryHostPointerPropertiesEXT (deviceCmds (device :: Device)))+ pPMemoryHostPointerProperties <- ContT (withZeroCStruct @MemoryHostPointerPropertiesEXT)+ r <- lift $ vkGetMemoryHostPointerPropertiesEXT' (deviceHandle (device)) (handleType) (hostPointer) (pPMemoryHostPointerProperties)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pMemoryHostPointerProperties <- lift $ peekCStruct @MemoryHostPointerPropertiesEXT pPMemoryHostPointerProperties+ pure $ (pMemoryHostPointerProperties)++ -- | VkImportMemoryHostPointerInfoEXT - import memory from a host pointer -- -- = Description@@ -139,8 +138,8 @@ -- between the host and the Vulkan implementation. The application /can/ -- continue to access the memory through the host pointer but it is the -- application’s responsibility to synchronize device and non-device access--- to the underlying memory as defined in [Host Access to Device Memory--- Objects](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-device-hostaccess).+-- to the underlying memory as defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-hostaccess Host Access to Device Memory Objects>. -- -- Applications /can/ import the same underlying memory into multiple -- instances of Vulkan and multiple times into a given Vulkan instance.@@ -151,7 +150,7 @@ -- due to additional platform-specific restrictions beyond the scope of -- this specification in which case the implementation /must/ fail the -- memory import operation with the error code--- @VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR@.+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory.ERROR_INVALID_EXTERNAL_HANDLE_KHR'. -- -- The application /must/ ensure that the imported memory range remains -- valid and accessible for the lifetime of the imported memory object.@@ -160,128 +159,213 @@ -- -- - If @handleType@ is not @0@, it /must/ be supported for import, as -- reported in--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities.VkExternalMemoryPropertiesKHR'+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalMemoryProperties' -- -- - If @handleType@ is not @0@, it /must/ be--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT@ or--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT@+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT'+-- or+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT' -- -- - @pHostPointer@ /must/ be a pointer aligned to an integer multiple of--- @VkPhysicalDeviceExternalMemoryHostPropertiesEXT@::@minImportedHostPointerAlignment@+-- 'PhysicalDeviceExternalMemoryHostPropertiesEXT'::@minImportedHostPointerAlignment@ -- -- - If @handleType@ is--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT@,+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT', -- @pHostPointer@ /must/ be a pointer to @allocationSize@ number of -- bytes of host memory, where @allocationSize@ is the member of the--- @VkMemoryAllocateInfo@ structure this structure is chained to+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' structure this+-- structure is chained to -- -- - If @handleType@ is--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT@,+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT', -- @pHostPointer@ /must/ be a pointer to @allocationSize@ number of -- bytes of host mapped foreign memory, where @allocationSize@ is the--- member of the @VkMemoryAllocateInfo@ structure this structure is--- chained to+-- member of the 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo'+-- structure this structure is chained to -- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT' -- -- - @handleType@ /must/ be a valid--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits' -- value -- -- = See Also ----- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkImportMemoryHostPointerInfoEXT = VkImportMemoryHostPointerInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @handleType@ specifies the handle type.- vkHandleType :: VkExternalMemoryHandleTypeFlagBits+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ImportMemoryHostPointerInfoEXT = ImportMemoryHostPointerInfoEXT+ { -- | @handleType@ specifies the handle type.+ handleType :: ExternalMemoryHandleTypeFlagBits , -- | @pHostPointer@ is the host pointer to import from.- vkPHostPointer :: Ptr ()+ hostPointer :: Ptr () }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show ImportMemoryHostPointerInfoEXT -instance Storable VkImportMemoryHostPointerInfoEXT where+instance ToCStruct ImportMemoryHostPointerInfoEXT where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImportMemoryHostPointerInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlagBits)) (handleType)+ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (hostPointer)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlagBits)) (zero)+ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (zero)+ f++instance FromCStruct ImportMemoryHostPointerInfoEXT where+ peekCStruct p = do+ handleType <- peek @ExternalMemoryHandleTypeFlagBits ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlagBits))+ pHostPointer <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))+ pure $ ImportMemoryHostPointerInfoEXT+ handleType pHostPointer++instance Storable ImportMemoryHostPointerInfoEXT where sizeOf ~_ = 32 alignment ~_ = 8- peek ptr = VkImportMemoryHostPointerInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkImportMemoryHostPointerInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImportMemoryHostPointerInfoEXT))- *> poke (ptr `plusPtr` 16) (vkHandleType (poked :: VkImportMemoryHostPointerInfoEXT))- *> poke (ptr `plusPtr` 24) (vkPHostPointer (poked :: VkImportMemoryHostPointerInfoEXT))--- No documentation found for TopLevel "VkMemoryHostPointerPropertiesEXT"-data VkMemoryHostPointerPropertiesEXT = VkMemoryHostPointerPropertiesEXT- { -- No documentation found for Nested "VkMemoryHostPointerPropertiesEXT" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkMemoryHostPointerPropertiesEXT" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkMemoryHostPointerPropertiesEXT" "memoryTypeBits"- vkMemoryTypeBits :: Word32- }- deriving (Eq, Show)+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ()) -instance Storable VkMemoryHostPointerPropertiesEXT where+instance Zero ImportMemoryHostPointerInfoEXT where+ zero = ImportMemoryHostPointerInfoEXT+ zero+ zero+++-- | VkMemoryHostPointerPropertiesEXT - Properties of external memory host+-- pointer+--+-- = Description+--+-- The value returned by @memoryTypeBits@ /must/ only include bits that+-- identify memory types which are host visible.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getMemoryHostPointerPropertiesEXT'+data MemoryHostPointerPropertiesEXT = MemoryHostPointerPropertiesEXT+ { -- | @memoryTypeBits@ is a bitmask containing one bit set for every memory+ -- type which the specified host pointer /can/ be imported as.+ memoryTypeBits :: Word32 }+ deriving (Typeable)+deriving instance Show MemoryHostPointerPropertiesEXT++instance ToCStruct MemoryHostPointerPropertiesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p MemoryHostPointerPropertiesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (memoryTypeBits)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ f++instance FromCStruct MemoryHostPointerPropertiesEXT where+ peekCStruct p = do+ memoryTypeBits <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pure $ MemoryHostPointerPropertiesEXT+ memoryTypeBits++instance Storable MemoryHostPointerPropertiesEXT where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkMemoryHostPointerPropertiesEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkMemoryHostPointerPropertiesEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkMemoryHostPointerPropertiesEXT))- *> poke (ptr `plusPtr` 16) (vkMemoryTypeBits (poked :: VkMemoryHostPointerPropertiesEXT))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MemoryHostPointerPropertiesEXT where+ zero = MemoryHostPointerPropertiesEXT+ zero++ -- | VkPhysicalDeviceExternalMemoryHostPropertiesEXT - Structure describing -- external memory host pointer limits that can be supported by an -- implementation -- -- = Members ----- The members of the @VkPhysicalDeviceExternalMemoryHostPropertiesEXT@+-- The members of the 'PhysicalDeviceExternalMemoryHostPropertiesEXT' -- structure describe the following implementation-dependent limits: -- -- = Description ----- - @minImportedHostPointerAlignment@ is the minimum /required/--- alignment, in bytes, for the base address and size of host pointers--- that /can/ be imported to a Vulkan memory object.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT@------ If the @VkPhysicalDeviceExternalMemoryHostPropertiesEXT@ structure is+-- If the 'PhysicalDeviceExternalMemoryHostPropertiesEXT' structure is -- included in the @pNext@ chain of--- 'Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2KHR',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2', -- it is filled with the implementation-dependent limits. --+-- == Valid Usage (Implicit)+-- -- = See Also ----- @VkDeviceSize@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceExternalMemoryHostPropertiesEXT = VkPhysicalDeviceExternalMemoryHostPropertiesEXT- { -- No documentation found for Nested "VkPhysicalDeviceExternalMemoryHostPropertiesEXT" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceExternalMemoryHostPropertiesEXT" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceExternalMemoryHostPropertiesEXT" "minImportedHostPointerAlignment"- vkMinImportedHostPointerAlignment :: VkDeviceSize- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceExternalMemoryHostPropertiesEXT = PhysicalDeviceExternalMemoryHostPropertiesEXT+ { -- | @minImportedHostPointerAlignment@ is the minimum /required/ alignment,+ -- in bytes, for the base address and size of host pointers that /can/ be+ -- imported to a Vulkan memory object.+ minImportedHostPointerAlignment :: DeviceSize }+ deriving (Typeable)+deriving instance Show PhysicalDeviceExternalMemoryHostPropertiesEXT -instance Storable VkPhysicalDeviceExternalMemoryHostPropertiesEXT where+instance ToCStruct PhysicalDeviceExternalMemoryHostPropertiesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceExternalMemoryHostPropertiesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (minImportedHostPointerAlignment)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)+ f++instance FromCStruct PhysicalDeviceExternalMemoryHostPropertiesEXT where+ peekCStruct p = do+ minImportedHostPointerAlignment <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))+ pure $ PhysicalDeviceExternalMemoryHostPropertiesEXT+ minImportedHostPointerAlignment++instance Storable PhysicalDeviceExternalMemoryHostPropertiesEXT where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkPhysicalDeviceExternalMemoryHostPropertiesEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceExternalMemoryHostPropertiesEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceExternalMemoryHostPropertiesEXT))- *> poke (ptr `plusPtr` 16) (vkMinImportedHostPointerAlignment (poked :: VkPhysicalDeviceExternalMemoryHostPropertiesEXT))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceExternalMemoryHostPropertiesEXT where+ zero = PhysicalDeviceExternalMemoryHostPropertiesEXT+ zero+++type EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION"+pattern EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1+++type EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host"++-- No documentation found for TopLevel "VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME"+pattern EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_external_memory_host.hs-boot view
@@ -0,0 +1,32 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_external_memory_host ( ImportMemoryHostPointerInfoEXT+ , MemoryHostPointerPropertiesEXT+ , PhysicalDeviceExternalMemoryHostPropertiesEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ImportMemoryHostPointerInfoEXT++instance ToCStruct ImportMemoryHostPointerInfoEXT+instance Show ImportMemoryHostPointerInfoEXT++instance FromCStruct ImportMemoryHostPointerInfoEXT+++data MemoryHostPointerPropertiesEXT++instance ToCStruct MemoryHostPointerPropertiesEXT+instance Show MemoryHostPointerPropertiesEXT++instance FromCStruct MemoryHostPointerPropertiesEXT+++data PhysicalDeviceExternalMemoryHostPropertiesEXT++instance ToCStruct PhysicalDeviceExternalMemoryHostPropertiesEXT+instance Show PhysicalDeviceExternalMemoryHostPropertiesEXT++instance FromCStruct PhysicalDeviceExternalMemoryHostPropertiesEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_filter_cubic.hs view
@@ -0,0 +1,179 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_filter_cubic ( pattern FILTER_CUBIC_EXT+ , pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT+ , PhysicalDeviceImageViewImageFormatInfoEXT(..)+ , FilterCubicImageViewImageFormatPropertiesEXT(..)+ , EXT_FILTER_CUBIC_SPEC_VERSION+ , pattern EXT_FILTER_CUBIC_SPEC_VERSION+ , EXT_FILTER_CUBIC_EXTENSION_NAME+ , pattern EXT_FILTER_CUBIC_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.ImageViewType (ImageViewType)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.Filter (Filter(FILTER_CUBIC_IMG))+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlagBits(FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT))+-- No documentation found for TopLevel "VK_FILTER_CUBIC_EXT"+pattern FILTER_CUBIC_EXT = FILTER_CUBIC_IMG+++-- No documentation found for TopLevel "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT"+pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG+++-- | VkPhysicalDeviceImageViewImageFormatInfoEXT - Structure for providing+-- image view type+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceImageViewImageFormatInfoEXT = PhysicalDeviceImageViewImageFormatInfoEXT+ { -- | 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' /must/ be a+ -- valid 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' value+ imageViewType :: ImageViewType }+ deriving (Typeable)+deriving instance Show PhysicalDeviceImageViewImageFormatInfoEXT++instance ToCStruct PhysicalDeviceImageViewImageFormatInfoEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceImageViewImageFormatInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ImageViewType)) (imageViewType)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ImageViewType)) (zero)+ f++instance FromCStruct PhysicalDeviceImageViewImageFormatInfoEXT where+ peekCStruct p = do+ imageViewType <- peek @ImageViewType ((p `plusPtr` 16 :: Ptr ImageViewType))+ pure $ PhysicalDeviceImageViewImageFormatInfoEXT+ imageViewType++instance Storable PhysicalDeviceImageViewImageFormatInfoEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceImageViewImageFormatInfoEXT where+ zero = PhysicalDeviceImageViewImageFormatInfoEXT+ zero+++-- | VkFilterCubicImageViewImageFormatPropertiesEXT - Structure for querying+-- cubic filtering capabilities of an image view type+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT'+--+-- == Valid Usage+--+-- - If the @pNext@ chain of the+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2'+-- structure includes a 'FilterCubicImageViewImageFormatPropertiesEXT'+-- structure, the @pNext@ chain of the+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'+-- structure /must/ include a+-- 'PhysicalDeviceImageViewImageFormatInfoEXT' structure with an+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' that is+-- compatible with 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType'.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data FilterCubicImageViewImageFormatPropertiesEXT = FilterCubicImageViewImageFormatPropertiesEXT+ { -- | @filterCubic@ tells if image format, image type and image view type+ -- /can/ be used with cubic filtering. This field is set by the+ -- implementation. User-specified value is ignored.+ filterCubic :: Bool+ , -- | @filterCubicMinmax@ tells if image format, image type and image view+ -- type /can/ be used with cubic filtering and minmax filtering. This field+ -- is set by the implementation. User-specified value is ignored.+ filterCubicMinmax :: Bool+ }+ deriving (Typeable)+deriving instance Show FilterCubicImageViewImageFormatPropertiesEXT++instance ToCStruct FilterCubicImageViewImageFormatPropertiesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p FilterCubicImageViewImageFormatPropertiesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (filterCubic))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (filterCubicMinmax))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct FilterCubicImageViewImageFormatPropertiesEXT where+ peekCStruct p = do+ filterCubic <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ filterCubicMinmax <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ pure $ FilterCubicImageViewImageFormatPropertiesEXT+ (bool32ToBool filterCubic) (bool32ToBool filterCubicMinmax)++instance Storable FilterCubicImageViewImageFormatPropertiesEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero FilterCubicImageViewImageFormatPropertiesEXT where+ zero = FilterCubicImageViewImageFormatPropertiesEXT+ zero+ zero+++type EXT_FILTER_CUBIC_SPEC_VERSION = 3++-- No documentation found for TopLevel "VK_EXT_FILTER_CUBIC_SPEC_VERSION"+pattern EXT_FILTER_CUBIC_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_FILTER_CUBIC_SPEC_VERSION = 3+++type EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic"++-- No documentation found for TopLevel "VK_EXT_FILTER_CUBIC_EXTENSION_NAME"+pattern EXT_FILTER_CUBIC_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_filter_cubic.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_filter_cubic ( FilterCubicImageViewImageFormatPropertiesEXT+ , PhysicalDeviceImageViewImageFormatInfoEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data FilterCubicImageViewImageFormatPropertiesEXT++instance ToCStruct FilterCubicImageViewImageFormatPropertiesEXT+instance Show FilterCubicImageViewImageFormatPropertiesEXT++instance FromCStruct FilterCubicImageViewImageFormatPropertiesEXT+++data PhysicalDeviceImageViewImageFormatInfoEXT++instance ToCStruct PhysicalDeviceImageViewImageFormatInfoEXT+instance Show PhysicalDeviceImageViewImageFormatInfoEXT++instance FromCStruct PhysicalDeviceImageViewImageFormatInfoEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_fragment_density_map.hs view
@@ -0,0 +1,314 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map ( PhysicalDeviceFragmentDensityMapFeaturesEXT(..)+ , PhysicalDeviceFragmentDensityMapPropertiesEXT(..)+ , RenderPassFragmentDensityMapCreateInfoEXT(..)+ , EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION+ , pattern EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION+ , EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME+ , pattern EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.Pass (AttachmentReference)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.SharedTypes (Extent2D)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT))+-- | VkPhysicalDeviceFragmentDensityMapFeaturesEXT - Structure describing+-- fragment density map features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceFragmentDensityMapFeaturesEXT'+-- structure describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceFragmentDensityMapFeaturesEXT' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether each feature is supported.+-- 'PhysicalDeviceFragmentDensityMapFeaturesEXT' /can/ also be included in+-- @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable the features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceFragmentDensityMapFeaturesEXT = PhysicalDeviceFragmentDensityMapFeaturesEXT+ { -- | @fragmentDensityMap@ specifies whether the implementation supports+ -- render passes with a fragment density map attachment. If this feature is+ -- not enabled and the @pNext@ chain of+ -- 'Graphics.Vulkan.Core10.Pass.RenderPassCreateInfo' includes a+ -- 'RenderPassFragmentDensityMapCreateInfoEXT' structure,+ -- @fragmentDensityMapAttachment@ /must/ be+ -- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'.+ fragmentDensityMap :: Bool+ , -- | @fragmentDensityMapDynamic@ specifies whether the implementation+ -- supports dynamic fragment density map image views. If this feature is+ -- not enabled,+ -- 'Graphics.Vulkan.Core10.Enums.ImageViewCreateFlagBits.IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT'+ -- /must/ not be included in+ -- 'Graphics.Vulkan.Core10.ImageView.ImageViewCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'.+ fragmentDensityMapDynamic :: Bool+ , -- | @fragmentDensityMapNonSubsampledImages@ specifies whether the+ -- implementation supports regular non-subsampled image attachments with+ -- fragment density map render passes. If this feature is not enabled,+ -- render passes with a+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>+ -- /must/ only have+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-subsamplesampler subsampled attachments>+ -- bound.+ fragmentDensityMapNonSubsampledImages :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceFragmentDensityMapFeaturesEXT++instance ToCStruct PhysicalDeviceFragmentDensityMapFeaturesEXT where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceFragmentDensityMapFeaturesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (fragmentDensityMap))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (fragmentDensityMapDynamic))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (fragmentDensityMapNonSubsampledImages))+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceFragmentDensityMapFeaturesEXT where+ peekCStruct p = do+ fragmentDensityMap <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ fragmentDensityMapDynamic <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ fragmentDensityMapNonSubsampledImages <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ pure $ PhysicalDeviceFragmentDensityMapFeaturesEXT+ (bool32ToBool fragmentDensityMap) (bool32ToBool fragmentDensityMapDynamic) (bool32ToBool fragmentDensityMapNonSubsampledImages)++instance Storable PhysicalDeviceFragmentDensityMapFeaturesEXT where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceFragmentDensityMapFeaturesEXT where+ zero = PhysicalDeviceFragmentDensityMapFeaturesEXT+ zero+ zero+ zero+++-- | VkPhysicalDeviceFragmentDensityMapPropertiesEXT - Structure describing+-- fragment density map properties that can be supported by an+-- implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceFragmentDensityMapPropertiesEXT'+-- structure describe the following implementation-dependent limits:+--+-- == Valid Usage (Implicit)+--+-- If the 'PhysicalDeviceFragmentDensityMapPropertiesEXT' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits and properties.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent2D',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceFragmentDensityMapPropertiesEXT = PhysicalDeviceFragmentDensityMapPropertiesEXT+ { -- | @minFragmentDensityTexelSize@ is the minimum+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-fragment-density-texel-size fragment density texel size>.+ minFragmentDensityTexelSize :: Extent2D+ , -- | @maxFragmentDensityTexelSize@ is the maximum fragment density texel+ -- size.+ maxFragmentDensityTexelSize :: Extent2D+ , -- | @fragmentDensityInvocations@ specifies whether the implementation /may/+ -- invoke additional fragment shader invocations for each covered sample.+ fragmentDensityInvocations :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceFragmentDensityMapPropertiesEXT++instance ToCStruct PhysicalDeviceFragmentDensityMapPropertiesEXT where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceFragmentDensityMapPropertiesEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (minFragmentDensityTexelSize) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent2D)) (maxFragmentDensityTexelSize) . ($ ())+ lift $ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (fragmentDensityInvocations))+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent2D)) (zero) . ($ ())+ lift $ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ f++instance FromCStruct PhysicalDeviceFragmentDensityMapPropertiesEXT where+ peekCStruct p = do+ minFragmentDensityTexelSize <- peekCStruct @Extent2D ((p `plusPtr` 16 :: Ptr Extent2D))+ maxFragmentDensityTexelSize <- peekCStruct @Extent2D ((p `plusPtr` 24 :: Ptr Extent2D))+ fragmentDensityInvocations <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))+ pure $ PhysicalDeviceFragmentDensityMapPropertiesEXT+ minFragmentDensityTexelSize maxFragmentDensityTexelSize (bool32ToBool fragmentDensityInvocations)++instance Zero PhysicalDeviceFragmentDensityMapPropertiesEXT where+ zero = PhysicalDeviceFragmentDensityMapPropertiesEXT+ zero+ zero+ zero+++-- | VkRenderPassFragmentDensityMapCreateInfoEXT - Structure containing+-- fragment density map attachment for render pass+--+-- = Description+--+-- The fragment density map attachment is read at an+-- implementation-dependent time either by the host during+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBeginRenderPass' if the+-- attachment’s image view was not created with+-- 'Graphics.Vulkan.Core10.BaseType.Flags' containing+-- 'Graphics.Vulkan.Core10.Enums.ImageViewCreateFlagBits.IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT',+-- or by the device when drawing commands in the renderpass execute+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'.+--+-- If this structure is not present, it is as if+-- @fragmentDensityMapAttachment@ was given as+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'.+--+-- == Valid Usage+--+-- - If @fragmentDensityMapAttachment@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',+-- @fragmentDensityMapAttachment@ /must/ be less than+-- 'Graphics.Vulkan.Core10.Pass.RenderPassCreateInfo'::@attachmentCount@+--+-- - If @fragmentDensityMapAttachment@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',+-- @fragmentDensityMapAttachment@ /must/ not be an element of+-- 'Graphics.Vulkan.Core10.Pass.SubpassDescription'::@pInputAttachments@,+-- 'Graphics.Vulkan.Core10.Pass.SubpassDescription'::@pColorAttachments@,+-- 'Graphics.Vulkan.Core10.Pass.SubpassDescription'::@pResolveAttachments@,+-- 'Graphics.Vulkan.Core10.Pass.SubpassDescription'::@pDepthStencilAttachment@,+-- or+-- 'Graphics.Vulkan.Core10.Pass.SubpassDescription'::@pPreserveAttachments@+-- for any subpass+--+-- - If @fragmentDensityMapAttachment@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', @layout@+-- /must/ be equal to+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT',+-- or 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'+--+-- - If @fragmentDensityMapAttachment@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',+-- @fragmentDensityMapAttachment@ /must/ reference an attachment with a+-- @loadOp@ equal to+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_LOAD'+-- or+-- 'Graphics.Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_DONT_CARE'.+--+-- - If @fragmentDensityMapAttachment@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',+-- @fragmentDensityMapAttachment@ /must/ reference an attachment with a+-- @storeOp@ equal to+-- 'Graphics.Vulkan.Core10.Enums.AttachmentStoreOp.ATTACHMENT_STORE_OP_DONT_CARE'.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT'+--+-- - @fragmentDensityMapAttachment@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Pass.AttachmentReference' structure+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pass.AttachmentReference',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data RenderPassFragmentDensityMapCreateInfoEXT = RenderPassFragmentDensityMapCreateInfoEXT+ { -- | @fragmentDensityMapAttachment@ is the fragment density map to use for+ -- the render pass.+ fragmentDensityMapAttachment :: AttachmentReference }+ deriving (Typeable)+deriving instance Show RenderPassFragmentDensityMapCreateInfoEXT++instance ToCStruct RenderPassFragmentDensityMapCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p RenderPassFragmentDensityMapCreateInfoEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr AttachmentReference)) (fragmentDensityMapAttachment) . ($ ())+ lift $ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr AttachmentReference)) (zero) . ($ ())+ lift $ f++instance FromCStruct RenderPassFragmentDensityMapCreateInfoEXT where+ peekCStruct p = do+ fragmentDensityMapAttachment <- peekCStruct @AttachmentReference ((p `plusPtr` 16 :: Ptr AttachmentReference))+ pure $ RenderPassFragmentDensityMapCreateInfoEXT+ fragmentDensityMapAttachment++instance Zero RenderPassFragmentDensityMapCreateInfoEXT where+ zero = RenderPassFragmentDensityMapCreateInfoEXT+ zero+++type EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION"+pattern EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1+++type EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map"++-- No documentation found for TopLevel "VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME"+pattern EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_fragment_density_map.hs-boot view
@@ -0,0 +1,32 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map ( PhysicalDeviceFragmentDensityMapFeaturesEXT+ , PhysicalDeviceFragmentDensityMapPropertiesEXT+ , RenderPassFragmentDensityMapCreateInfoEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceFragmentDensityMapFeaturesEXT++instance ToCStruct PhysicalDeviceFragmentDensityMapFeaturesEXT+instance Show PhysicalDeviceFragmentDensityMapFeaturesEXT++instance FromCStruct PhysicalDeviceFragmentDensityMapFeaturesEXT+++data PhysicalDeviceFragmentDensityMapPropertiesEXT++instance ToCStruct PhysicalDeviceFragmentDensityMapPropertiesEXT+instance Show PhysicalDeviceFragmentDensityMapPropertiesEXT++instance FromCStruct PhysicalDeviceFragmentDensityMapPropertiesEXT+++data RenderPassFragmentDensityMapCreateInfoEXT++instance ToCStruct RenderPassFragmentDensityMapCreateInfoEXT+instance Show RenderPassFragmentDensityMapCreateInfoEXT++instance FromCStruct RenderPassFragmentDensityMapCreateInfoEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs view
@@ -0,0 +1,121 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_fragment_shader_interlock ( PhysicalDeviceFragmentShaderInterlockFeaturesEXT(..)+ , EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION+ , pattern EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION+ , EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME+ , pattern EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT))+-- | VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT - Structure+-- describing fragment shader interlock features that can be supported by+-- an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceFragmentShaderInterlockFeaturesEXT'+-- structure describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceFragmentShaderInterlockFeaturesEXT' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceFragmentShaderInterlockFeaturesEXT' /can/ also be+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceFragmentShaderInterlockFeaturesEXT = PhysicalDeviceFragmentShaderInterlockFeaturesEXT+ { -- | @fragmentShaderSampleInterlock@ indicates that the implementation+ -- supports the @FragmentShaderSampleInterlockEXT@ SPIR-V capability.+ fragmentShaderSampleInterlock :: Bool+ , -- | @fragmentShaderPixelInterlock@ indicates that the implementation+ -- supports the @FragmentShaderPixelInterlockEXT@ SPIR-V capability.+ fragmentShaderPixelInterlock :: Bool+ , -- | @fragmentShaderShadingRateInterlock@ indicates that the implementation+ -- supports the @FragmentShaderShadingRateInterlockEXT@ SPIR-V capability.+ fragmentShaderShadingRateInterlock :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceFragmentShaderInterlockFeaturesEXT++instance ToCStruct PhysicalDeviceFragmentShaderInterlockFeaturesEXT where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceFragmentShaderInterlockFeaturesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (fragmentShaderSampleInterlock))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (fragmentShaderPixelInterlock))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (fragmentShaderShadingRateInterlock))+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceFragmentShaderInterlockFeaturesEXT where+ peekCStruct p = do+ fragmentShaderSampleInterlock <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ fragmentShaderPixelInterlock <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ fragmentShaderShadingRateInterlock <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ pure $ PhysicalDeviceFragmentShaderInterlockFeaturesEXT+ (bool32ToBool fragmentShaderSampleInterlock) (bool32ToBool fragmentShaderPixelInterlock) (bool32ToBool fragmentShaderShadingRateInterlock)++instance Storable PhysicalDeviceFragmentShaderInterlockFeaturesEXT where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceFragmentShaderInterlockFeaturesEXT where+ zero = PhysicalDeviceFragmentShaderInterlockFeaturesEXT+ zero+ zero+ zero+++type EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION"+pattern EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1+++type EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock"++-- No documentation found for TopLevel "VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME"+pattern EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_fragment_shader_interlock (PhysicalDeviceFragmentShaderInterlockFeaturesEXT) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceFragmentShaderInterlockFeaturesEXT++instance ToCStruct PhysicalDeviceFragmentShaderInterlockFeaturesEXT+instance Show PhysicalDeviceFragmentShaderInterlockFeaturesEXT++instance FromCStruct PhysicalDeviceFragmentShaderInterlockFeaturesEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs view
@@ -0,0 +1,631 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive ( getPhysicalDeviceSurfacePresentModes2EXT+ , getDeviceGroupSurfacePresentModes2EXT+ , acquireFullScreenExclusiveModeEXT+ , releaseFullScreenExclusiveModeEXT+ , SurfaceFullScreenExclusiveInfoEXT(..)+ , SurfaceFullScreenExclusiveWin32InfoEXT(..)+ , SurfaceCapabilitiesFullScreenExclusiveEXT(..)+ , FullScreenExclusiveEXT( FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT+ , FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT+ , FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT+ , FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT+ , ..+ )+ , EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION+ , pattern EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION+ , EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME+ , pattern EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME+ , SurfaceKHR(..)+ , SwapchainKHR(..)+ , PhysicalDeviceSurfaceInfo2KHR(..)+ , PresentModeKHR(..)+ , DeviceGroupPresentModeFlagBitsKHR(..)+ , DeviceGroupPresentModeFlagsKHR+ , HMONITOR+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+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 Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkAcquireFullScreenExclusiveModeEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetDeviceGroupSurfacePresentModes2EXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkReleaseFullScreenExclusiveModeEXT))+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentModeFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentModeFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentModeFlagBitsKHR(..))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Extensions.WSITypes (HMONITOR)+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceSurfacePresentModes2EXT))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (PhysicalDeviceSurfaceInfo2KHR)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image (PresentModeKHR)+import Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image (PresentModeKHR(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR)+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentModeFlagBitsKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentModeFlagsKHR)+import Graphics.Vulkan.Extensions.WSITypes (HMONITOR)+import Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (PhysicalDeviceSurfaceInfo2KHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image (PresentModeKHR(..))+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceSurfacePresentModes2EXT+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr (PhysicalDeviceSurfaceInfo2KHR a) -> Ptr Word32 -> Ptr PresentModeKHR -> IO Result) -> Ptr PhysicalDevice_T -> Ptr (PhysicalDeviceSurfaceInfo2KHR a) -> Ptr Word32 -> Ptr PresentModeKHR -> IO Result++-- | vkGetPhysicalDeviceSurfacePresentModes2EXT - Query supported+-- presentation modes+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device that will be associated with the swapchain to be created, as+-- described for+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'.+--+-- - @pSurfaceInfo@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR'+-- structure describing the surface and other fixed parameters that+-- would be consumed by+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'.+--+-- - @pPresentModeCount@ is a pointer to an integer related to the number+-- of presentation modes available or queried, as described below.+--+-- - @pPresentModes@ is either @NULL@ or a pointer to an array of+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PresentModeKHR'+-- values, indicating the supported presentation modes.+--+-- = Description+--+-- 'getPhysicalDeviceSurfacePresentModes2EXT' behaves similarly to+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfacePresentModesKHR',+-- with the ability to specify extended inputs via chained input+-- structures.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @pSurfaceInfo@ /must/ be a valid pointer to a valid+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR'+-- structure+--+-- - @pPresentModeCount@ /must/ be a valid pointer to a @uint32_t@ value+--+-- - If the value referenced by @pPresentModeCount@ is not @0@, and+-- @pPresentModes@ is not @NULL@, @pPresentModes@ /must/ be a valid+-- pointer to an array of @pPresentModeCount@+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PresentModeKHR'+-- values+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PresentModeKHR'+getPhysicalDeviceSurfacePresentModes2EXT :: PokeChain a => PhysicalDevice -> PhysicalDeviceSurfaceInfo2KHR a -> IO (Result, ("presentModes" ::: Vector PresentModeKHR))+getPhysicalDeviceSurfacePresentModes2EXT physicalDevice surfaceInfo = evalContT $ do+ let vkGetPhysicalDeviceSurfacePresentModes2EXT' = mkVkGetPhysicalDeviceSurfacePresentModes2EXT (pVkGetPhysicalDeviceSurfacePresentModes2EXT (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pSurfaceInfo <- ContT $ withCStruct (surfaceInfo)+ pPPresentModeCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkGetPhysicalDeviceSurfacePresentModes2EXT' physicalDevice' pSurfaceInfo (pPPresentModeCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pPresentModeCount <- lift $ peek @Word32 pPPresentModeCount+ pPPresentModes <- ContT $ bracket (callocBytes @PresentModeKHR ((fromIntegral (pPresentModeCount)) * 4)) free+ r' <- lift $ vkGetPhysicalDeviceSurfacePresentModes2EXT' physicalDevice' pSurfaceInfo (pPPresentModeCount) (pPPresentModes)+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pPresentModeCount' <- lift $ peek @Word32 pPPresentModeCount+ pPresentModes' <- lift $ generateM (fromIntegral (pPresentModeCount')) (\i -> peek @PresentModeKHR ((pPPresentModes `advancePtrBytes` (4 * (i)) :: Ptr PresentModeKHR)))+ pure $ ((r'), pPresentModes')+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetDeviceGroupSurfacePresentModes2EXT+ :: FunPtr (Ptr Device_T -> Ptr (PhysicalDeviceSurfaceInfo2KHR a) -> Ptr DeviceGroupPresentModeFlagsKHR -> IO Result) -> Ptr Device_T -> Ptr (PhysicalDeviceSurfaceInfo2KHR a) -> Ptr DeviceGroupPresentModeFlagsKHR -> IO Result++-- | vkGetDeviceGroupSurfacePresentModes2EXT - Query device group present+-- capabilities for a surface+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device.+--+-- - @pSurfaceInfo@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR'+-- structure describing the surface and other fixed parameters that+-- would be consumed by+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'.+--+-- - @pModes@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupPresentModeFlagsKHR'+-- in which the supported device group present modes for the surface+-- are returned.+--+-- = Description+--+-- 'getDeviceGroupSurfacePresentModes2EXT' behaves similarly to+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.getDeviceGroupSurfacePresentModesKHR',+-- with the ability to specify extended inputs via chained input+-- structures.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupPresentModeFlagsKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR'+getDeviceGroupSurfacePresentModes2EXT :: PokeChain a => Device -> PhysicalDeviceSurfaceInfo2KHR a -> IO (("modes" ::: DeviceGroupPresentModeFlagsKHR))+getDeviceGroupSurfacePresentModes2EXT device surfaceInfo = evalContT $ do+ let vkGetDeviceGroupSurfacePresentModes2EXT' = mkVkGetDeviceGroupSurfacePresentModes2EXT (pVkGetDeviceGroupSurfacePresentModes2EXT (deviceCmds (device :: Device)))+ pSurfaceInfo <- ContT $ withCStruct (surfaceInfo)+ pPModes <- ContT $ bracket (callocBytes @DeviceGroupPresentModeFlagsKHR 4) free+ r <- lift $ vkGetDeviceGroupSurfacePresentModes2EXT' (deviceHandle (device)) pSurfaceInfo (pPModes)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pModes <- lift $ peek @DeviceGroupPresentModeFlagsKHR pPModes+ pure $ (pModes)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkAcquireFullScreenExclusiveModeEXT+ :: FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result) -> Ptr Device_T -> SwapchainKHR -> IO Result++-- | vkAcquireFullScreenExclusiveModeEXT - Acquire full-screen exclusive mode+-- for a swapchain+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the device associated+-- with @swapchain@.+--+-- - @swapchain@ is the swapchain to acquire exclusive full-screen access+-- for.+--+-- == Valid Usage+--+-- - @swapchain@ /must/ not be in the retired state+--+-- - @swapchain@ /must/ be a swapchain created with a+-- 'SurfaceFullScreenExclusiveInfoEXT' structure, with+-- @fullScreenExclusive@ set to+-- 'FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT'+--+-- - @swapchain@ /must/ not currently have exclusive full-screen access+--+-- A return value of 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+-- indicates that the @swapchain@ successfully acquired exclusive+-- full-screen access. The swapchain will retain this exclusivity until+-- either the application releases exclusive full-screen access with+-- 'releaseFullScreenExclusiveModeEXT', destroys the swapchain, or if any+-- of the swapchain commands return+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'+-- indicating that the mode was lost because of platform-specific changes.+--+-- If the swapchain was unable to acquire exclusive full-screen access to+-- the display then+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED' is+-- returned. An application /can/ attempt to acquire exclusive full-screen+-- access again for the same swapchain even if this command fails, or if+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'+-- has been returned by a swapchain command.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @swapchain@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR' handle+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.Device', and @swapchain@+-- /must/ have been created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Instance'+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR'+acquireFullScreenExclusiveModeEXT :: Device -> SwapchainKHR -> IO ()+acquireFullScreenExclusiveModeEXT device swapchain = do+ let vkAcquireFullScreenExclusiveModeEXT' = mkVkAcquireFullScreenExclusiveModeEXT (pVkAcquireFullScreenExclusiveModeEXT (deviceCmds (device :: Device)))+ r <- vkAcquireFullScreenExclusiveModeEXT' (deviceHandle (device)) (swapchain)+ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkReleaseFullScreenExclusiveModeEXT+ :: FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result) -> Ptr Device_T -> SwapchainKHR -> IO Result++-- | vkReleaseFullScreenExclusiveModeEXT - Release full-screen exclusive mode+-- from a swapchain+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the device associated+-- with @swapchain@.+--+-- - @swapchain@ is the swapchain to release exclusive full-screen access+-- from.+--+-- = Description+--+-- Note+--+-- Applications will not be able to present to @swapchain@ after this call+-- until exclusive full-screen access is reacquired. This is usually useful+-- to handle when an application is minimised or otherwise intends to stop+-- presenting for a time.+--+-- == Valid Usage+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR'+releaseFullScreenExclusiveModeEXT :: Device -> SwapchainKHR -> IO ()+releaseFullScreenExclusiveModeEXT device swapchain = do+ let vkReleaseFullScreenExclusiveModeEXT' = mkVkReleaseFullScreenExclusiveModeEXT (pVkReleaseFullScreenExclusiveModeEXT (deviceCmds (device :: Device)))+ r <- vkReleaseFullScreenExclusiveModeEXT' (deviceHandle (device)) (swapchain)+ when (r < SUCCESS) (throwIO (VulkanException r))+++-- | VkSurfaceFullScreenExclusiveInfoEXT - Structure specifying the preferred+-- full-screen transition behavior+--+-- = Description+--+-- If this structure is not present, @fullScreenExclusive@ is considered to+-- be 'FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT'.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'FullScreenExclusiveEXT',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data SurfaceFullScreenExclusiveInfoEXT = SurfaceFullScreenExclusiveInfoEXT+ { -- | @fullScreenExclusive@ /must/ be a valid 'FullScreenExclusiveEXT' value+ fullScreenExclusive :: FullScreenExclusiveEXT }+ deriving (Typeable)+deriving instance Show SurfaceFullScreenExclusiveInfoEXT++instance ToCStruct SurfaceFullScreenExclusiveInfoEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SurfaceFullScreenExclusiveInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr FullScreenExclusiveEXT)) (fullScreenExclusive)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr FullScreenExclusiveEXT)) (zero)+ f++instance FromCStruct SurfaceFullScreenExclusiveInfoEXT where+ peekCStruct p = do+ fullScreenExclusive <- peek @FullScreenExclusiveEXT ((p `plusPtr` 16 :: Ptr FullScreenExclusiveEXT))+ pure $ SurfaceFullScreenExclusiveInfoEXT+ fullScreenExclusive++instance Storable SurfaceFullScreenExclusiveInfoEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SurfaceFullScreenExclusiveInfoEXT where+ zero = SurfaceFullScreenExclusiveInfoEXT+ zero+++-- | VkSurfaceFullScreenExclusiveWin32InfoEXT - Structure specifying+-- additional creation parameters specific to Win32 fullscreen exclusive+-- mode+--+-- = Description+--+-- Note+--+-- If @hmonitor@ is invalidated (e.g. the monitor is unplugged) during the+-- lifetime of a swapchain created with this structure, operations on that+-- swapchain will return+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'.+--+-- Note+--+-- It’s the responsibility of the application to change the display+-- settings of the targeted Win32 display using the appropriate platform+-- APIs. Such changes /may/ alter the surface capabilities reported for the+-- created surface.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data SurfaceFullScreenExclusiveWin32InfoEXT = SurfaceFullScreenExclusiveWin32InfoEXT+ { -- | @hmonitor@ /must/ be a valid+ -- 'Graphics.Vulkan.Extensions.WSITypes.HMONITOR'+ hmonitor :: HMONITOR }+ deriving (Typeable)+deriving instance Show SurfaceFullScreenExclusiveWin32InfoEXT++instance ToCStruct SurfaceFullScreenExclusiveWin32InfoEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SurfaceFullScreenExclusiveWin32InfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr HMONITOR)) (hmonitor)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr HMONITOR)) (zero)+ f++instance FromCStruct SurfaceFullScreenExclusiveWin32InfoEXT where+ peekCStruct p = do+ hmonitor <- peek @HMONITOR ((p `plusPtr` 16 :: Ptr HMONITOR))+ pure $ SurfaceFullScreenExclusiveWin32InfoEXT+ hmonitor++instance Storable SurfaceFullScreenExclusiveWin32InfoEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SurfaceFullScreenExclusiveWin32InfoEXT where+ zero = SurfaceFullScreenExclusiveWin32InfoEXT+ zero+++-- | VkSurfaceCapabilitiesFullScreenExclusiveEXT - Structure describing full+-- screen exclusive capabilities of a surface+--+-- = Description+--+-- This structure /can/ be included in the @pNext@ chain of+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR'+-- to determine support for exclusive full-screen access. If+-- @fullScreenExclusiveSupported@ is+-- 'Graphics.Vulkan.Core10.BaseType.FALSE', it indicates that exclusive+-- full-screen access is not obtainable for this surface.+--+-- Applications /must/ not attempt to create swapchains with+-- 'FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT' set if+-- @fullScreenExclusiveSupported@ is+-- 'Graphics.Vulkan.Core10.BaseType.FALSE'.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data SurfaceCapabilitiesFullScreenExclusiveEXT = SurfaceCapabilitiesFullScreenExclusiveEXT+ { -- No documentation found for Nested "VkSurfaceCapabilitiesFullScreenExclusiveEXT" "fullScreenExclusiveSupported"+ fullScreenExclusiveSupported :: Bool }+ deriving (Typeable)+deriving instance Show SurfaceCapabilitiesFullScreenExclusiveEXT++instance ToCStruct SurfaceCapabilitiesFullScreenExclusiveEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SurfaceCapabilitiesFullScreenExclusiveEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (fullScreenExclusiveSupported))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct SurfaceCapabilitiesFullScreenExclusiveEXT where+ peekCStruct p = do+ fullScreenExclusiveSupported <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ SurfaceCapabilitiesFullScreenExclusiveEXT+ (bool32ToBool fullScreenExclusiveSupported)++instance Storable SurfaceCapabilitiesFullScreenExclusiveEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SurfaceCapabilitiesFullScreenExclusiveEXT where+ zero = SurfaceCapabilitiesFullScreenExclusiveEXT+ zero+++-- | VkFullScreenExclusiveEXT - Hint values an application can specify+-- affecting full-screen transition behavior+--+-- = See Also+--+-- 'SurfaceFullScreenExclusiveInfoEXT'+newtype FullScreenExclusiveEXT = FullScreenExclusiveEXT Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT' indicates the implementation+-- /should/ determine the appropriate full-screen method by whatever means+-- it deems appropriate.+pattern FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = FullScreenExclusiveEXT 0+-- | 'FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT' indicates the implementation /may/+-- use full-screen exclusive mechanisms when available. Such mechanisms+-- /may/ result in better performance and\/or the availability of different+-- presentation capabilities, but /may/ require a more disruptive+-- transition during swapchain initialization, first presentation and\/or+-- destruction.+pattern FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = FullScreenExclusiveEXT 1+-- | 'FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT' indicates the implementation+-- /should/ avoid using full-screen mechanisms which rely on disruptive+-- transitions.+pattern FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = FullScreenExclusiveEXT 2+-- | 'FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT' indicates the+-- application will manage full-screen exclusive mode by using the+-- 'acquireFullScreenExclusiveModeEXT' and+-- 'releaseFullScreenExclusiveModeEXT' commands.+pattern FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = FullScreenExclusiveEXT 3+{-# complete FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT,+ FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT,+ FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT,+ FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT :: FullScreenExclusiveEXT #-}++instance Show FullScreenExclusiveEXT where+ showsPrec p = \case+ FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT -> showString "FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT"+ FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT -> showString "FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT"+ FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT -> showString "FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT"+ FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT -> showString "FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT"+ FullScreenExclusiveEXT x -> showParen (p >= 11) (showString "FullScreenExclusiveEXT " . showsPrec 11 x)++instance Read FullScreenExclusiveEXT where+ readPrec = parens (choose [("FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT", pure FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT)+ , ("FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT", pure FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT)+ , ("FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT", pure FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT)+ , ("FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT", pure FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT)]+ ++++ prec 10 (do+ expectP (Ident "FullScreenExclusiveEXT")+ v <- step readPrec+ pure (FullScreenExclusiveEXT v)))+++type EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION = 4++-- No documentation found for TopLevel "VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION"+pattern EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION = 4+++type EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME = "VK_EXT_full_screen_exclusive"++-- No documentation found for TopLevel "VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME"+pattern EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME = "VK_EXT_full_screen_exclusive"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs-boot view
@@ -0,0 +1,32 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive ( SurfaceCapabilitiesFullScreenExclusiveEXT+ , SurfaceFullScreenExclusiveInfoEXT+ , SurfaceFullScreenExclusiveWin32InfoEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data SurfaceCapabilitiesFullScreenExclusiveEXT++instance ToCStruct SurfaceCapabilitiesFullScreenExclusiveEXT+instance Show SurfaceCapabilitiesFullScreenExclusiveEXT++instance FromCStruct SurfaceCapabilitiesFullScreenExclusiveEXT+++data SurfaceFullScreenExclusiveInfoEXT++instance ToCStruct SurfaceFullScreenExclusiveInfoEXT+instance Show SurfaceFullScreenExclusiveInfoEXT++instance FromCStruct SurfaceFullScreenExclusiveInfoEXT+++data SurfaceFullScreenExclusiveWin32InfoEXT++instance ToCStruct SurfaceFullScreenExclusiveWin32InfoEXT+instance Show SurfaceFullScreenExclusiveWin32InfoEXT++instance FromCStruct SurfaceFullScreenExclusiveWin32InfoEXT+
src/Graphics/Vulkan/Extensions/VK_EXT_global_priority.hs view
@@ -1,62 +1,100 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DuplicateRecordFields #-}+module Graphics.Vulkan.Extensions.VK_EXT_global_priority ( DeviceQueueGlobalPriorityCreateInfoEXT(..)+ , QueueGlobalPriorityEXT( QUEUE_GLOBAL_PRIORITY_LOW_EXT+ , QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT+ , QUEUE_GLOBAL_PRIORITY_HIGH_EXT+ , QUEUE_GLOBAL_PRIORITY_REALTIME_EXT+ , ..+ )+ , EXT_GLOBAL_PRIORITY_SPEC_VERSION+ , pattern EXT_GLOBAL_PRIORITY_SPEC_VERSION+ , EXT_GLOBAL_PRIORITY_EXTENSION_NAME+ , pattern EXT_GLOBAL_PRIORITY_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_EXT_global_priority- ( VkQueueGlobalPriorityEXT(..)- , pattern VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT- , pattern VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT- , pattern VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT- , pattern VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT- , pattern VK_ERROR_NOT_PERMITTED_EXT- , pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT- , pattern VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION- , pattern VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME- , VkDeviceQueueGlobalPriorityCreateInfoEXT(..)- ) where+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+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 Data.Int (Int32)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT))+-- | VkDeviceQueueGlobalPriorityCreateInfoEXT - Specify a system wide+-- priority+--+-- = Description+--+-- A queue created without specifying+-- 'DeviceQueueGlobalPriorityCreateInfoEXT' will default to+-- 'QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT'.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'QueueGlobalPriorityEXT',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DeviceQueueGlobalPriorityCreateInfoEXT = DeviceQueueGlobalPriorityCreateInfoEXT+ { -- | @globalPriority@ /must/ be a valid 'QueueGlobalPriorityEXT' value+ globalPriority :: QueueGlobalPriorityEXT }+ deriving (Typeable)+deriving instance Show DeviceQueueGlobalPriorityCreateInfoEXT -import Data.Int- ( Int32- )-import Data.String- ( IsString- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )+instance ToCStruct DeviceQueueGlobalPriorityCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DeviceQueueGlobalPriorityCreateInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr QueueGlobalPriorityEXT)) (globalPriority)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr QueueGlobalPriorityEXT)) (zero)+ f +instance FromCStruct DeviceQueueGlobalPriorityCreateInfoEXT where+ peekCStruct p = do+ globalPriority <- peek @QueueGlobalPriorityEXT ((p `plusPtr` 16 :: Ptr QueueGlobalPriorityEXT))+ pure $ DeviceQueueGlobalPriorityCreateInfoEXT+ globalPriority -import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- )+instance Storable DeviceQueueGlobalPriorityCreateInfoEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ()) +instance Zero DeviceQueueGlobalPriorityCreateInfoEXT where+ zero = DeviceQueueGlobalPriorityCreateInfoEXT+ zero --- ** VkQueueGlobalPriorityEXT -- | VkQueueGlobalPriorityEXT - Values specifying a system-wide queue -- priority@@ -66,107 +104,58 @@ -- Priority values are sorted in ascending order. A comparison operation on -- the enum values can be used to determine the priority order. ----- - @VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT@ is below the system default.--- Useful for non-interactive tasks.------ - @VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT@ is the system default--- priority.------ - @VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT@ is above the system default.------ - @VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT@ is the highest priority.--- Useful for critical tasks.--- -- = See Also ----- 'VkDeviceQueueGlobalPriorityCreateInfoEXT'-newtype VkQueueGlobalPriorityEXT = VkQueueGlobalPriorityEXT Int32- deriving (Eq, Ord, Storable)+-- 'DeviceQueueGlobalPriorityCreateInfoEXT'+newtype QueueGlobalPriorityEXT = QueueGlobalPriorityEXT Int32+ deriving newtype (Eq, Ord, Storable, Zero)+-- Note that the zero instance does not produce a valid value, passing 'zero' to Vulkan will result in an error -instance Show VkQueueGlobalPriorityEXT where- showsPrec _ VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = showString "VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT"- showsPrec _ VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = showString "VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT"- showsPrec _ VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = showString "VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT"- showsPrec _ VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = showString "VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT"- showsPrec p (VkQueueGlobalPriorityEXT x) = showParen (p >= 11) (showString "VkQueueGlobalPriorityEXT " . showsPrec 11 x)+-- | 'QUEUE_GLOBAL_PRIORITY_LOW_EXT' is below the system default. Useful for+-- non-interactive tasks.+pattern QUEUE_GLOBAL_PRIORITY_LOW_EXT = QueueGlobalPriorityEXT 128+-- | 'QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT' is the system default priority.+pattern QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = QueueGlobalPriorityEXT 256+-- | 'QUEUE_GLOBAL_PRIORITY_HIGH_EXT' is above the system default.+pattern QUEUE_GLOBAL_PRIORITY_HIGH_EXT = QueueGlobalPriorityEXT 512+-- | 'QUEUE_GLOBAL_PRIORITY_REALTIME_EXT' is the highest priority. Useful for+-- critical tasks.+pattern QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = QueueGlobalPriorityEXT 1024+{-# complete QUEUE_GLOBAL_PRIORITY_LOW_EXT,+ QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT,+ QUEUE_GLOBAL_PRIORITY_HIGH_EXT,+ QUEUE_GLOBAL_PRIORITY_REALTIME_EXT :: QueueGlobalPriorityEXT #-} -instance Read VkQueueGlobalPriorityEXT where- readPrec = parens ( choose [ ("VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT", pure VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT)- , ("VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT", pure VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT)- , ("VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT", pure VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT)- , ("VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT", pure VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT)- ] +++- prec 10 (do- expectP (Ident "VkQueueGlobalPriorityEXT")- v <- step readPrec- pure (VkQueueGlobalPriorityEXT v)- )- )+instance Show QueueGlobalPriorityEXT where+ showsPrec p = \case+ QUEUE_GLOBAL_PRIORITY_LOW_EXT -> showString "QUEUE_GLOBAL_PRIORITY_LOW_EXT"+ QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT -> showString "QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT"+ QUEUE_GLOBAL_PRIORITY_HIGH_EXT -> showString "QUEUE_GLOBAL_PRIORITY_HIGH_EXT"+ QUEUE_GLOBAL_PRIORITY_REALTIME_EXT -> showString "QUEUE_GLOBAL_PRIORITY_REALTIME_EXT"+ QueueGlobalPriorityEXT x -> showParen (p >= 11) (showString "QueueGlobalPriorityEXT " . showsPrec 11 x) --- No documentation found for Nested "VkQueueGlobalPriorityEXT" "VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT"-pattern VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT :: VkQueueGlobalPriorityEXT-pattern VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = VkQueueGlobalPriorityEXT 128+instance Read QueueGlobalPriorityEXT where+ readPrec = parens (choose [("QUEUE_GLOBAL_PRIORITY_LOW_EXT", pure QUEUE_GLOBAL_PRIORITY_LOW_EXT)+ , ("QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT", pure QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT)+ , ("QUEUE_GLOBAL_PRIORITY_HIGH_EXT", pure QUEUE_GLOBAL_PRIORITY_HIGH_EXT)+ , ("QUEUE_GLOBAL_PRIORITY_REALTIME_EXT", pure QUEUE_GLOBAL_PRIORITY_REALTIME_EXT)]+ ++++ prec 10 (do+ expectP (Ident "QueueGlobalPriorityEXT")+ v <- step readPrec+ pure (QueueGlobalPriorityEXT v))) --- No documentation found for Nested "VkQueueGlobalPriorityEXT" "VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT"-pattern VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT :: VkQueueGlobalPriorityEXT-pattern VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = VkQueueGlobalPriorityEXT 256 --- No documentation found for Nested "VkQueueGlobalPriorityEXT" "VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT"-pattern VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT :: VkQueueGlobalPriorityEXT-pattern VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = VkQueueGlobalPriorityEXT 512+type EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 --- No documentation found for Nested "VkQueueGlobalPriorityEXT" "VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT"-pattern VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT :: VkQueueGlobalPriorityEXT-pattern VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = VkQueueGlobalPriorityEXT 1024--- No documentation found for Nested "VkResult" "VK_ERROR_NOT_PERMITTED_EXT"-pattern VK_ERROR_NOT_PERMITTED_EXT :: VkResult-pattern VK_ERROR_NOT_PERMITTED_EXT = VkResult (-1000174001)--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT"-pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = VkStructureType 1000174000 -- No documentation found for TopLevel "VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION"-pattern VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION :: Integral a => a-pattern VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2+pattern EXT_GLOBAL_PRIORITY_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2+++type EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority"+ -- No documentation found for TopLevel "VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME"-pattern VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority"--- | VkDeviceQueueGlobalPriorityCreateInfoEXT - Specify a system wide--- priority------ = Description------ A queue created without specifying--- @VkDeviceQueueGlobalPriorityCreateInfoEXT@ will default to--- @VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT@------ - @globalPriority@ /must/ be a valid 'VkQueueGlobalPriorityEXT' value------ = See Also------ 'VkQueueGlobalPriorityEXT',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkDeviceQueueGlobalPriorityCreateInfoEXT = VkDeviceQueueGlobalPriorityCreateInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @globalPriority@ is the system-wide priority associated to this queue as- -- specified by 'VkQueueGlobalPriorityEXT'- vkGlobalPriority :: VkQueueGlobalPriorityEXT- }- deriving (Eq, Show)+pattern EXT_GLOBAL_PRIORITY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" -instance Storable VkDeviceQueueGlobalPriorityCreateInfoEXT where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkDeviceQueueGlobalPriorityCreateInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDeviceQueueGlobalPriorityCreateInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDeviceQueueGlobalPriorityCreateInfoEXT))- *> poke (ptr `plusPtr` 16) (vkGlobalPriority (poked :: VkDeviceQueueGlobalPriorityCreateInfoEXT))
+ src/Graphics/Vulkan/Extensions/VK_EXT_global_priority.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_global_priority (DeviceQueueGlobalPriorityCreateInfoEXT) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data DeviceQueueGlobalPriorityCreateInfoEXT++instance ToCStruct DeviceQueueGlobalPriorityCreateInfoEXT+instance Show DeviceQueueGlobalPriorityCreateInfoEXT++instance FromCStruct DeviceQueueGlobalPriorityCreateInfoEXT+
src/Graphics/Vulkan/Extensions/VK_EXT_hdr_metadata.hs view
@@ -1,184 +1,262 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata- ( pattern VK_STRUCTURE_TYPE_HDR_METADATA_EXT- , pattern VK_EXT_HDR_METADATA_SPEC_VERSION- , pattern VK_EXT_HDR_METADATA_EXTENSION_NAME- , vkSetHdrMetadataEXT- , VkXYColorEXT(..)- , VkHdrMetadataEXT(..)- ) where--import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.C.Types- ( CFloat(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- )-import Graphics.Vulkan.Extensions.VK_KHR_swapchain- ( VkSwapchainKHR- )+module Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata ( setHdrMetadataEXT+ , XYColorEXT(..)+ , HdrMetadataEXT(..)+ , EXT_HDR_METADATA_SPEC_VERSION+ , pattern EXT_HDR_METADATA_SPEC_VERSION+ , EXT_HDR_METADATA_EXTENSION_NAME+ , pattern EXT_HDR_METADATA_EXTENSION_NAME+ , SwapchainKHR(..)+ ) where +import Control.Monad (unless)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CFloat(CFloat))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import GHC.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkSetHdrMetadataEXT))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR)+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_HDR_METADATA_EXT))+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkSetHdrMetadataEXT+ :: FunPtr (Ptr Device_T -> Word32 -> Ptr SwapchainKHR -> Ptr HdrMetadataEXT -> IO ()) -> Ptr Device_T -> Word32 -> Ptr SwapchainKHR -> Ptr HdrMetadataEXT -> IO () --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_HDR_METADATA_EXT"-pattern VK_STRUCTURE_TYPE_HDR_METADATA_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_HDR_METADATA_EXT = VkStructureType 1000105000--- No documentation found for TopLevel "VK_EXT_HDR_METADATA_SPEC_VERSION"-pattern VK_EXT_HDR_METADATA_SPEC_VERSION :: Integral a => a-pattern VK_EXT_HDR_METADATA_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_EXT_HDR_METADATA_EXTENSION_NAME"-pattern VK_EXT_HDR_METADATA_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" -- | vkSetHdrMetadataEXT - function to set Hdr metadata -- -- = Parameters ----- - @device@ is the logical device where the swapchain(s) were created.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device where+-- the swapchain(s) were created. -- -- - @swapchainCount@ is the number of swapchains included in -- @pSwapchains@. ----- - @pSwapchains@ is a pointer to the array of @swapchainCount@--- @VkSwapchainKHR@ handles.+-- - @pSwapchains@ is a pointer to an array of @swapchainCount@+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR' handles. ----- - @pMetadata@ is a pointer to the array of @swapchainCount@--- @VkHdrMetadataEXT@ structures.+-- - @pMetadata@ is a pointer to an array of @swapchainCount@+-- 'HdrMetadataEXT' structures. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle -- -- - @pSwapchains@ /must/ be a valid pointer to an array of--- @swapchainCount@ valid @VkSwapchainKHR@ handles+-- @swapchainCount@ valid+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR' handles -- -- - @pMetadata@ /must/ be a valid pointer to an array of--- @swapchainCount@ valid @VkHdrMetadataEXT@ structures+-- @swapchainCount@ valid 'HdrMetadataEXT' structures -- -- - @swapchainCount@ /must/ be greater than @0@ ----- - Both of @device@, and the elements of @pSwapchains@ /must/ have been--- created, allocated, or retrieved from the same @VkInstance@+-- - Both of 'Graphics.Vulkan.Core10.Handles.Device', and the elements of+-- @pSwapchains@ /must/ have been created, allocated, or retrieved from+-- the same 'Graphics.Vulkan.Core10.Handles.Instance' -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkHdrMetadataEXT',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkSetHdrMetadataEXT" vkSetHdrMetadataEXT :: ("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> ("pMetadata" ::: Ptr VkHdrMetadataEXT) -> IO ()+-- 'Graphics.Vulkan.Core10.Handles.Device', 'HdrMetadataEXT',+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR'+setHdrMetadataEXT :: Device -> ("swapchains" ::: Vector SwapchainKHR) -> ("metadata" ::: Vector HdrMetadataEXT) -> IO ()+setHdrMetadataEXT device swapchains metadata = evalContT $ do+ let vkSetHdrMetadataEXT' = mkVkSetHdrMetadataEXT (pVkSetHdrMetadataEXT (deviceCmds (device :: Device)))+ let pSwapchainsLength = Data.Vector.length $ (swapchains)+ let pMetadataLength = Data.Vector.length $ (metadata)+ lift $ unless (pMetadataLength == pSwapchainsLength) $+ throwIO $ IOError Nothing InvalidArgument "" "pMetadata and pSwapchains must have the same length" Nothing Nothing+ pPSwapchains <- ContT $ allocaBytesAligned @SwapchainKHR ((Data.Vector.length (swapchains)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPSwapchains `plusPtr` (8 * (i)) :: Ptr SwapchainKHR) (e)) (swapchains)+ pPMetadata <- ContT $ allocaBytesAligned @HdrMetadataEXT ((Data.Vector.length (metadata)) * 64) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPMetadata `plusPtr` (64 * (i)) :: Ptr HdrMetadataEXT) (e) . ($ ())) (metadata)+ lift $ vkSetHdrMetadataEXT' (deviceHandle (device)) ((fromIntegral pSwapchainsLength :: Word32)) (pPSwapchains) (pPMetadata)+ pure $ ()++ -- | VkXYColorEXT - structure to specify X,Y chromaticity coordinates -- -- = See Also ----- 'VkHdrMetadataEXT'-data VkXYColorEXT = VkXYColorEXT+-- 'HdrMetadataEXT'+data XYColorEXT = XYColorEXT { -- No documentation found for Nested "VkXYColorEXT" "x"- vkX :: CFloat+ x :: Float , -- No documentation found for Nested "VkXYColorEXT" "y"- vkY :: CFloat+ y :: Float }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show XYColorEXT -instance Storable VkXYColorEXT where+instance ToCStruct XYColorEXT where+ withCStruct x f = allocaBytesAligned 8 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p XYColorEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (x))+ poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (y))+ f+ cStructSize = 8+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (zero))+ poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (zero))+ f++instance FromCStruct XYColorEXT where+ peekCStruct p = do+ x <- peek @CFloat ((p `plusPtr` 0 :: Ptr CFloat))+ y <- peek @CFloat ((p `plusPtr` 4 :: Ptr CFloat))+ pure $ XYColorEXT+ ((\(CFloat a) -> a) x) ((\(CFloat a) -> a) y)++instance Storable XYColorEXT where sizeOf ~_ = 8 alignment ~_ = 4- peek ptr = VkXYColorEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- poke ptr poked = poke (ptr `plusPtr` 0) (vkX (poked :: VkXYColorEXT))- *> poke (ptr `plusPtr` 4) (vkY (poked :: VkXYColorEXT))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero XYColorEXT where+ zero = XYColorEXT+ zero+ zero++ -- | VkHdrMetadataEXT - structure to specify Hdr metadata ----- = Description+-- == Valid Usage (Implicit) ----- __Note__+-- Note ----- The validity and use of this data is outside the scope of Vulkan and--- thus no Valid Usage is given.+-- The validity and use of this data is outside the scope of Vulkan. -- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkXYColorEXT',--- 'vkSetHdrMetadataEXT'-data VkHdrMetadataEXT = VkHdrMetadataEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @displayPrimaryRed@ is the mastering display’s red primary in- -- chromaticity coordinates- vkDisplayPrimaryRed :: VkXYColorEXT+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'XYColorEXT', 'setHdrMetadataEXT'+data HdrMetadataEXT = HdrMetadataEXT+ { -- | @displayPrimaryRed@ is the mastering display’s red primary in+ -- chromaticity coordinates+ displayPrimaryRed :: XYColorEXT , -- | @displayPrimaryGreen@ is the mastering display’s green primary in- -- chromaticity coordinates- vkDisplayPrimaryGreen :: VkXYColorEXT+ -- chromaticity coordinates+ displayPrimaryGreen :: XYColorEXT , -- | @displayPrimaryBlue@ is the mastering display’s blue primary in- -- chromaticity coordinates- vkDisplayPrimaryBlue :: VkXYColorEXT+ -- chromaticity coordinates+ displayPrimaryBlue :: XYColorEXT , -- | @whitePoint@ is the mastering display’s white-point in chromaticity- -- coordinates- vkWhitePoint :: VkXYColorEXT+ -- coordinates+ whitePoint :: XYColorEXT , -- | @maxLuminance@ is the maximum luminance of the mastering display in nits- vkMaxLuminance :: CFloat+ maxLuminance :: Float , -- | @minLuminance@ is the minimum luminance of the mastering display in nits- vkMinLuminance :: CFloat+ minLuminance :: Float , -- | @maxContentLightLevel@ is content’s maximum luminance in nits- vkMaxContentLightLevel :: CFloat+ maxContentLightLevel :: Float , -- | @maxFrameAverageLightLevel@ is the maximum frame average light level in- -- nits- vkMaxFrameAverageLightLevel :: CFloat+ -- nits+ maxFrameAverageLightLevel :: Float }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show HdrMetadataEXT -instance Storable VkHdrMetadataEXT where- sizeOf ~_ = 64- alignment ~_ = 8- peek ptr = VkHdrMetadataEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 52)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 60)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkHdrMetadataEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkHdrMetadataEXT))- *> poke (ptr `plusPtr` 16) (vkDisplayPrimaryRed (poked :: VkHdrMetadataEXT))- *> poke (ptr `plusPtr` 24) (vkDisplayPrimaryGreen (poked :: VkHdrMetadataEXT))- *> poke (ptr `plusPtr` 32) (vkDisplayPrimaryBlue (poked :: VkHdrMetadataEXT))- *> poke (ptr `plusPtr` 40) (vkWhitePoint (poked :: VkHdrMetadataEXT))- *> poke (ptr `plusPtr` 48) (vkMaxLuminance (poked :: VkHdrMetadataEXT))- *> poke (ptr `plusPtr` 52) (vkMinLuminance (poked :: VkHdrMetadataEXT))- *> poke (ptr `plusPtr` 56) (vkMaxContentLightLevel (poked :: VkHdrMetadataEXT))- *> poke (ptr `plusPtr` 60) (vkMaxFrameAverageLightLevel (poked :: VkHdrMetadataEXT))+instance ToCStruct HdrMetadataEXT where+ withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p HdrMetadataEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_HDR_METADATA_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr XYColorEXT)) (displayPrimaryRed) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr XYColorEXT)) (displayPrimaryGreen) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr XYColorEXT)) (displayPrimaryBlue) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr XYColorEXT)) (whitePoint) . ($ ())+ lift $ poke ((p `plusPtr` 48 :: Ptr CFloat)) (CFloat (maxLuminance))+ lift $ poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (minLuminance))+ lift $ poke ((p `plusPtr` 56 :: Ptr CFloat)) (CFloat (maxContentLightLevel))+ lift $ poke ((p `plusPtr` 60 :: Ptr CFloat)) (CFloat (maxFrameAverageLightLevel))+ lift $ f+ cStructSize = 64+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_HDR_METADATA_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr XYColorEXT)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr XYColorEXT)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr XYColorEXT)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 40 :: Ptr XYColorEXT)) (zero) . ($ ())+ lift $ poke ((p `plusPtr` 48 :: Ptr CFloat)) (CFloat (zero))+ lift $ poke ((p `plusPtr` 52 :: Ptr CFloat)) (CFloat (zero))+ lift $ poke ((p `plusPtr` 56 :: Ptr CFloat)) (CFloat (zero))+ lift $ poke ((p `plusPtr` 60 :: Ptr CFloat)) (CFloat (zero))+ lift $ f++instance FromCStruct HdrMetadataEXT where+ peekCStruct p = do+ displayPrimaryRed <- peekCStruct @XYColorEXT ((p `plusPtr` 16 :: Ptr XYColorEXT))+ displayPrimaryGreen <- peekCStruct @XYColorEXT ((p `plusPtr` 24 :: Ptr XYColorEXT))+ displayPrimaryBlue <- peekCStruct @XYColorEXT ((p `plusPtr` 32 :: Ptr XYColorEXT))+ whitePoint <- peekCStruct @XYColorEXT ((p `plusPtr` 40 :: Ptr XYColorEXT))+ maxLuminance <- peek @CFloat ((p `plusPtr` 48 :: Ptr CFloat))+ minLuminance <- peek @CFloat ((p `plusPtr` 52 :: Ptr CFloat))+ maxContentLightLevel <- peek @CFloat ((p `plusPtr` 56 :: Ptr CFloat))+ maxFrameAverageLightLevel <- peek @CFloat ((p `plusPtr` 60 :: Ptr CFloat))+ pure $ HdrMetadataEXT+ displayPrimaryRed displayPrimaryGreen displayPrimaryBlue whitePoint ((\(CFloat a) -> a) maxLuminance) ((\(CFloat a) -> a) minLuminance) ((\(CFloat a) -> a) maxContentLightLevel) ((\(CFloat a) -> a) maxFrameAverageLightLevel)++instance Zero HdrMetadataEXT where+ zero = HdrMetadataEXT+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++type EXT_HDR_METADATA_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_EXT_HDR_METADATA_SPEC_VERSION"+pattern EXT_HDR_METADATA_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_HDR_METADATA_SPEC_VERSION = 2+++type EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata"++-- No documentation found for TopLevel "VK_EXT_HDR_METADATA_EXTENSION_NAME"+pattern EXT_HDR_METADATA_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_hdr_metadata.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata ( HdrMetadataEXT+ , XYColorEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data HdrMetadataEXT++instance ToCStruct HdrMetadataEXT+instance Show HdrMetadataEXT++instance FromCStruct HdrMetadataEXT+++data XYColorEXT++instance ToCStruct XYColorEXT+instance Show XYColorEXT++instance FromCStruct XYColorEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_headless_surface.hs view
@@ -0,0 +1,220 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_headless_surface ( createHeadlessSurfaceEXT+ , HeadlessSurfaceCreateInfoEXT(..)+ , HeadlessSurfaceCreateFlagsEXT(..)+ , EXT_HEADLESS_SURFACE_SPEC_VERSION+ , pattern EXT_HEADLESS_SURFACE_SPEC_VERSION+ , EXT_HEADLESS_SURFACE_EXTENSION_NAME+ , pattern EXT_HEADLESS_SURFACE_EXTENSION_NAME+ , SurfaceKHR(..)+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Bits (Bits)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Instance)+import Graphics.Vulkan.Core10.Handles (Instance(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkCreateHeadlessSurfaceEXT))+import Graphics.Vulkan.Core10.Handles (Instance_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateHeadlessSurfaceEXT+ :: FunPtr (Ptr Instance_T -> Ptr HeadlessSurfaceCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result) -> Ptr Instance_T -> Ptr HeadlessSurfaceCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result++-- | vkCreateHeadlessSurfaceEXT - Create a headless+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' is the instance to+-- associate the surface with.+--+-- - @pCreateInfo@ is a pointer to a 'HeadlessSurfaceCreateInfoEXT'+-- structure containing parameters affecting the creation of the+-- surface object.+--+-- - @pAllocator@ is the allocator used for host memory allocated for the+-- surface object when there is no more specific allocator available+-- (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).+--+-- - @pSurface@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle in which the+-- created surface object is returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'HeadlessSurfaceCreateInfoEXT' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pSurface@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'HeadlessSurfaceCreateInfoEXT',+-- 'Graphics.Vulkan.Core10.Handles.Instance',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR'+createHeadlessSurfaceEXT :: Instance -> HeadlessSurfaceCreateInfoEXT -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (SurfaceKHR)+createHeadlessSurfaceEXT instance' createInfo allocator = evalContT $ do+ let vkCreateHeadlessSurfaceEXT' = mkVkCreateHeadlessSurfaceEXT (pVkCreateHeadlessSurfaceEXT (instanceCmds (instance' :: Instance)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPSurface <- ContT $ bracket (callocBytes @SurfaceKHR 8) free+ r <- lift $ vkCreateHeadlessSurfaceEXT' (instanceHandle (instance')) pCreateInfo pAllocator (pPSurface)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSurface <- lift $ peek @SurfaceKHR pPSurface+ pure $ (pSurface)+++-- | VkHeadlessSurfaceCreateInfoEXT - Structure specifying parameters of a+-- newly created headless surface object+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'HeadlessSurfaceCreateFlagsEXT',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createHeadlessSurfaceEXT'+data HeadlessSurfaceCreateInfoEXT = HeadlessSurfaceCreateInfoEXT+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+ flags :: HeadlessSurfaceCreateFlagsEXT }+ deriving (Typeable)+deriving instance Show HeadlessSurfaceCreateInfoEXT++instance ToCStruct HeadlessSurfaceCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p HeadlessSurfaceCreateInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr HeadlessSurfaceCreateFlagsEXT)) (flags)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct HeadlessSurfaceCreateInfoEXT where+ peekCStruct p = do+ flags <- peek @HeadlessSurfaceCreateFlagsEXT ((p `plusPtr` 16 :: Ptr HeadlessSurfaceCreateFlagsEXT))+ pure $ HeadlessSurfaceCreateInfoEXT+ flags++instance Storable HeadlessSurfaceCreateInfoEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero HeadlessSurfaceCreateInfoEXT where+ zero = HeadlessSurfaceCreateInfoEXT+ zero+++-- No documentation found for TopLevel "VkHeadlessSurfaceCreateFlagsEXT"+newtype HeadlessSurfaceCreateFlagsEXT = HeadlessSurfaceCreateFlagsEXT Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show HeadlessSurfaceCreateFlagsEXT where+ showsPrec p = \case+ HeadlessSurfaceCreateFlagsEXT x -> showParen (p >= 11) (showString "HeadlessSurfaceCreateFlagsEXT 0x" . showHex x)++instance Read HeadlessSurfaceCreateFlagsEXT where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "HeadlessSurfaceCreateFlagsEXT")+ v <- step readPrec+ pure (HeadlessSurfaceCreateFlagsEXT v)))+++type EXT_HEADLESS_SURFACE_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_HEADLESS_SURFACE_SPEC_VERSION"+pattern EXT_HEADLESS_SURFACE_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_HEADLESS_SURFACE_SPEC_VERSION = 1+++type EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface"++-- No documentation found for TopLevel "VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME"+pattern EXT_HEADLESS_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_headless_surface.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_headless_surface (HeadlessSurfaceCreateInfoEXT) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data HeadlessSurfaceCreateInfoEXT++instance ToCStruct HeadlessSurfaceCreateInfoEXT+instance Show HeadlessSurfaceCreateInfoEXT++instance FromCStruct HeadlessSurfaceCreateInfoEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_host_query_reset.hs view
@@ -0,0 +1,39 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_host_query_reset ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT+ , resetQueryPoolEXT+ , PhysicalDeviceHostQueryResetFeaturesEXT+ , EXT_HOST_QUERY_RESET_SPEC_VERSION+ , pattern EXT_HOST_QUERY_RESET_SPEC_VERSION+ , EXT_HOST_QUERY_RESET_EXTENSION_NAME+ , pattern EXT_HOST_QUERY_RESET_EXTENSION_NAME+ ) where++import Data.String (IsString)+import Graphics.Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset (resetQueryPool)+import Graphics.Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset (PhysicalDeviceHostQueryResetFeatures)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES+++-- No documentation found for TopLevel "vkResetQueryPoolEXT"+resetQueryPoolEXT = resetQueryPool+++-- No documentation found for TopLevel "VkPhysicalDeviceHostQueryResetFeaturesEXT"+type PhysicalDeviceHostQueryResetFeaturesEXT = PhysicalDeviceHostQueryResetFeatures+++type EXT_HOST_QUERY_RESET_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_HOST_QUERY_RESET_SPEC_VERSION"+pattern EXT_HOST_QUERY_RESET_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_HOST_QUERY_RESET_SPEC_VERSION = 1+++type EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset"++-- No documentation found for TopLevel "VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME"+pattern EXT_HOST_QUERY_RESET_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs view
@@ -0,0 +1,659 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier ( getImageDrmFormatModifierPropertiesEXT+ , DrmFormatModifierPropertiesListEXT(..)+ , DrmFormatModifierPropertiesEXT(..)+ , PhysicalDeviceImageDrmFormatModifierInfoEXT(..)+ , ImageDrmFormatModifierListCreateInfoEXT(..)+ , ImageDrmFormatModifierExplicitCreateInfoEXT(..)+ , ImageDrmFormatModifierPropertiesEXT(..)+ , EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION+ , pattern EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION+ , EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME+ , pattern EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Word (Word64)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetImageDrmFormatModifierPropertiesEXT))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Image)+import Graphics.Vulkan.Core10.Handles (Image(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.SharingMode (SharingMode)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Core10.Image (SubresourceLayout)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetImageDrmFormatModifierPropertiesEXT+ :: FunPtr (Ptr Device_T -> Image -> Ptr ImageDrmFormatModifierPropertiesEXT -> IO Result) -> Ptr Device_T -> Image -> Ptr ImageDrmFormatModifierPropertiesEXT -> IO Result++-- | vkGetImageDrmFormatModifierPropertiesEXT - Returns an image’s DRM format+-- modifier+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the image.+--+-- - 'Graphics.Vulkan.Core10.Handles.Image' is the queried image.+--+-- - @pProperties@ will return properties of the image’s /DRM format+-- modifier/.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Image',+-- 'ImageDrmFormatModifierPropertiesEXT'+getImageDrmFormatModifierPropertiesEXT :: Device -> Image -> IO (ImageDrmFormatModifierPropertiesEXT)+getImageDrmFormatModifierPropertiesEXT device image = evalContT $ do+ let vkGetImageDrmFormatModifierPropertiesEXT' = mkVkGetImageDrmFormatModifierPropertiesEXT (pVkGetImageDrmFormatModifierPropertiesEXT (deviceCmds (device :: Device)))+ pPProperties <- ContT (withZeroCStruct @ImageDrmFormatModifierPropertiesEXT)+ _ <- lift $ vkGetImageDrmFormatModifierPropertiesEXT' (deviceHandle (device)) (image) (pPProperties)+ pProperties <- lift $ peekCStruct @ImageDrmFormatModifierPropertiesEXT pPProperties+ pure $ (pProperties)+++-- | VkDrmFormatModifierPropertiesListEXT - Structure specifying the list of+-- DRM format modifiers supported for a format+--+-- = Description+--+-- If @pDrmFormatModifierProperties@ is @NULL@, then the function returns+-- in @drmFormatModifierCount@ the number of modifiers compatible with the+-- queried 'Graphics.Vulkan.Core10.Enums.Format.Format'. Otherwise, the+-- application /must/ set @drmFormatModifierCount@ to the length of the+-- array @pDrmFormatModifierProperties@; the function will write at most+-- @drmFormatModifierCount@ elements to the array, and will return in+-- @drmFormatModifierCount@ the number of elements written.+--+-- Among the elements in array @pDrmFormatModifierProperties@, each+-- returned @drmFormatModifier@ /must/ be unique.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'DrmFormatModifierPropertiesEXT',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DrmFormatModifierPropertiesListEXT = DrmFormatModifierPropertiesListEXT+ { -- | @drmFormatModifierCount@ is an inout parameter related to the number of+ -- modifiers compatible with the+ -- 'Graphics.Vulkan.Core10.Enums.Format.Format', as described below.+ drmFormatModifierCount :: Word32+ , -- | @pDrmFormatModifierProperties@ is either @NULL@ or an array of+ -- 'DrmFormatModifierPropertiesEXT' structures.+ drmFormatModifierProperties :: Ptr DrmFormatModifierPropertiesEXT+ }+ deriving (Typeable)+deriving instance Show DrmFormatModifierPropertiesListEXT++instance ToCStruct DrmFormatModifierPropertiesListEXT where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DrmFormatModifierPropertiesListEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (drmFormatModifierCount)+ poke ((p `plusPtr` 24 :: Ptr (Ptr DrmFormatModifierPropertiesEXT))) (drmFormatModifierProperties)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct DrmFormatModifierPropertiesListEXT where+ peekCStruct p = do+ drmFormatModifierCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pDrmFormatModifierProperties <- peek @(Ptr DrmFormatModifierPropertiesEXT) ((p `plusPtr` 24 :: Ptr (Ptr DrmFormatModifierPropertiesEXT)))+ pure $ DrmFormatModifierPropertiesListEXT+ drmFormatModifierCount pDrmFormatModifierProperties++instance Storable DrmFormatModifierPropertiesListEXT where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DrmFormatModifierPropertiesListEXT where+ zero = DrmFormatModifierPropertiesListEXT+ zero+ zero+++-- | VkDrmFormatModifierPropertiesEXT - Structure specifying properties of a+-- format when combined with a DRM format modifier+--+-- = Description+--+-- The returned @drmFormatModifierTilingFeatures@ /must/ contain at least+-- one bit.+--+-- The implementation /must/ not return @DRM_FORMAT_MOD_INVALID@ in+-- @drmFormatModifier@.+--+-- An image’s /memory planecount/ (as returned by+-- @drmFormatModifierPlaneCount@) is distinct from its /format planecount/+-- (in the sense of+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>+-- Y′CBCR formats). In+-- 'Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags',+-- each @VK_IMAGE_ASPECT_MEMORY_PLANE@//i/_BIT_EXT represents a _memory+-- plane/ and each @VK_IMAGE_ASPECT_PLANE@//i/_BIT a _format plane/.+--+-- An image’s set of /format planes/ is an ordered partition of the image’s+-- __content__ into separable groups of format channels. The ordered+-- partition is encoded in the name of each+-- 'Graphics.Vulkan.Core10.Enums.Format.Format'. For example,+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_G8_B8R8_2PLANE_420_UNORM'+-- contains two /format planes/; the first plane contains the green channel+-- and the second plane contains the blue channel and red channel. If the+-- format name does not contain @PLANE@, then the format contains a single+-- plane; for example,+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R8G8B8A8_UNORM'. Some+-- commands, such as+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage', do+-- not operate on all format channels in the image, but instead operate+-- only on the /format planes/ explicitly chosen by the application and+-- operate on each /format plane/ independently.+--+-- An image’s set of /memory planes/ is an ordered partition of the image’s+-- __memory__ rather than the image’s __content__. Each /memory plane/ is a+-- contiguous range of memory. The union of an image’s /memory planes/ is+-- not necessarily contiguous.+--+-- If an image is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource linear>,+-- then the partition is the same for /memory planes/ and for /format+-- planes/. Therefore, if the returned @drmFormatModifier@ is+-- @DRM_FORMAT_MOD_LINEAR@, then @drmFormatModifierPlaneCount@ /must/ equal+-- the /format planecount/, and @drmFormatModifierTilingFeatures@ /must/ be+-- identical to the+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2'::@linearTilingFeatures@+-- returned in the same @pNext@ chain.+--+-- If an image is+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource non-linear>,+-- then the partition of the image’s __memory__ into /memory planes/ is+-- implementation-specific and /may/ be unrelated to the partition of the+-- image’s __content__ into /format planes/. For example, consider an image+-- whose 'Graphics.Vulkan.Core10.Enums.Format.Format' is+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_G8_B8_R8_3PLANE_420_UNORM',+-- @tiling@ is+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',+-- whose @drmFormatModifier@ is not @DRM_FORMAT_MOD_LINEAR@, and+-- 'Graphics.Vulkan.Core10.BaseType.Flags' lacks+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'.+-- The image has 3 /format planes/, and commands such+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage' act+-- on each /format plane/ independently as if the data of each /format+-- plane/ were separable from the data of the other planes. In a+-- straightforward implementation, the implementation /may/ store the+-- image’s content in 3 adjacent /memory planes/ where each /memory plane/+-- corresponds exactly to a /format plane/. However, the implementation+-- /may/ also store the image’s content in a single /memory plane/ where+-- all format channels are combined using an implementation-private+-- block-compressed format; or the implementation /may/ store the image’s+-- content in a collection of 7 adjacent /memory planes/ using an+-- implementation-private sharding technique. Because the image is+-- non-linear and non-disjoint, the implementation has much freedom when+-- choosing the image’s placement in memory.+--+-- The /memory planecount/ applies to function parameters and structures+-- only when the API specifies an explicit requirement on+-- @drmFormatModifierPlaneCount@. In all other cases, the /memory+-- planecount/ is ignored.+--+-- = See Also+--+-- 'DrmFormatModifierPropertiesListEXT',+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlags'+data DrmFormatModifierPropertiesEXT = DrmFormatModifierPropertiesEXT+ { -- | @drmFormatModifier@ is a /Linux DRM format modifier/.+ drmFormatModifier :: Word64+ , -- | @drmFormatModifierPlaneCount@ is the number of /memory planes/ in any+ -- image created with 'Graphics.Vulkan.Core10.Enums.Format.Format' and+ -- @drmFormatModifier@. An image’s /memory planecount/ is distinct from its+ -- /format planecount/, as explained below.+ drmFormatModifierPlaneCount :: Word32+ , -- | @drmFormatModifierTilingFeatures@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits'+ -- that are supported by any image created with+ -- 'Graphics.Vulkan.Core10.Enums.Format.Format' and @drmFormatModifier@.+ drmFormatModifierTilingFeatures :: FormatFeatureFlags+ }+ deriving (Typeable)+deriving instance Show DrmFormatModifierPropertiesEXT++instance ToCStruct DrmFormatModifierPropertiesEXT where+ withCStruct x f = allocaBytesAligned 16 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DrmFormatModifierPropertiesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word64)) (drmFormatModifier)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (drmFormatModifierPlaneCount)+ poke ((p `plusPtr` 12 :: Ptr FormatFeatureFlags)) (drmFormatModifierTilingFeatures)+ f+ cStructSize = 16+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word64)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 12 :: Ptr FormatFeatureFlags)) (zero)+ f++instance FromCStruct DrmFormatModifierPropertiesEXT where+ peekCStruct p = do+ drmFormatModifier <- peek @Word64 ((p `plusPtr` 0 :: Ptr Word64))+ drmFormatModifierPlaneCount <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ drmFormatModifierTilingFeatures <- peek @FormatFeatureFlags ((p `plusPtr` 12 :: Ptr FormatFeatureFlags))+ pure $ DrmFormatModifierPropertiesEXT+ drmFormatModifier drmFormatModifierPlaneCount drmFormatModifierTilingFeatures++instance Storable DrmFormatModifierPropertiesEXT where+ sizeOf ~_ = 16+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DrmFormatModifierPropertiesEXT where+ zero = DrmFormatModifierPropertiesEXT+ zero+ zero+ zero+++-- | VkPhysicalDeviceImageDrmFormatModifierInfoEXT - Structure specifying a+-- DRM format modifier as image creation parameter+--+-- = Description+--+-- If the @drmFormatModifier@ is incompatible with the parameters specified+-- in+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'+-- and its @pNext@ chain, then+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+-- returns+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_FORMAT_NOT_SUPPORTED'. The+-- implementation /must/ support the query of any @drmFormatModifier@,+-- including unknown and invalid modifier values.+--+-- == Valid Usage+--+-- - If 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' is+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',+-- then @pQueueFamilyIndices@ /must/ be a valid pointer to an array of+-- @queueFamilyIndexCount@ @uint32_t@ values.+--+-- - If 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' is+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',+-- then @queueFamilyIndexCount@ /must/ be greater than @1@.+--+-- - If 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' is+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',+-- each element of @pQueueFamilyIndices@ /must/ be unique and /must/ be+-- less than the @pQueueFamilyPropertyCount@ returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2'+-- for the 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' that was+-- used to create 'Graphics.Vulkan.Core10.Handles.Device'.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT'+--+-- - 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' /must/ be a+-- valid 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceImageDrmFormatModifierInfoEXT = PhysicalDeviceImageDrmFormatModifierInfoEXT+ { -- | @drmFormatModifier@ is the image’s /Linux DRM format modifier/,+ -- corresponding to+ -- 'ImageDrmFormatModifierExplicitCreateInfoEXT'::@modifier@ or to+ -- 'ImageDrmFormatModifierListCreateInfoEXT'::@pModifiers@.+ drmFormatModifier :: Word64+ , -- | 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' specifies how the+ -- image will be accessed by multiple queue families.+ sharingMode :: SharingMode+ , -- | @pQueueFamilyIndices@ is a list of queue families that will access the+ -- image (ignored if 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode'+ -- is not+ -- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT').+ queueFamilyIndices :: Vector Word32+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceImageDrmFormatModifierInfoEXT++instance ToCStruct PhysicalDeviceImageDrmFormatModifierInfoEXT where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceImageDrmFormatModifierInfoEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word64)) (drmFormatModifier)+ lift $ poke ((p `plusPtr` 24 :: Ptr SharingMode)) (sharingMode)+ lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (queueFamilyIndices)) :: Word32))+ pPQueueFamilyIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (queueFamilyIndices)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPQueueFamilyIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (queueFamilyIndices)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Word32))) (pPQueueFamilyIndices')+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word64)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr SharingMode)) (zero)+ pPQueueFamilyIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPQueueFamilyIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Word32))) (pPQueueFamilyIndices')+ lift $ f++instance FromCStruct PhysicalDeviceImageDrmFormatModifierInfoEXT where+ peekCStruct p = do+ drmFormatModifier <- peek @Word64 ((p `plusPtr` 16 :: Ptr Word64))+ sharingMode <- peek @SharingMode ((p `plusPtr` 24 :: Ptr SharingMode))+ queueFamilyIndexCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+ pQueueFamilyIndices <- peek @(Ptr Word32) ((p `plusPtr` 32 :: Ptr (Ptr Word32)))+ pQueueFamilyIndices' <- generateM (fromIntegral queueFamilyIndexCount) (\i -> peek @Word32 ((pQueueFamilyIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ pure $ PhysicalDeviceImageDrmFormatModifierInfoEXT+ drmFormatModifier sharingMode pQueueFamilyIndices'++instance Zero PhysicalDeviceImageDrmFormatModifierInfoEXT where+ zero = PhysicalDeviceImageDrmFormatModifierInfoEXT+ zero+ zero+ mempty+++-- | VkImageDrmFormatModifierListCreateInfoEXT - Specify that an image must+-- be created with a DRM format modifier from the provided list+--+-- == Valid Usage+--+-- - Each /modifier/ in @pDrmFormatModifiers@ must be compatible with the+-- parameters in 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' and its+-- @pNext@ chain, as determined by querying+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'+-- extended with 'PhysicalDeviceImageDrmFormatModifierInfoEXT'.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT'+--+-- - @pDrmFormatModifiers@ /must/ be a valid pointer to an array of+-- @drmFormatModifierCount@ @uint64_t@ values+--+-- - @drmFormatModifierCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ImageDrmFormatModifierListCreateInfoEXT = ImageDrmFormatModifierListCreateInfoEXT+ { -- | @pDrmFormatModifiers@ is a pointer to an array of /Linux DRM format+ -- modifiers/.+ drmFormatModifiers :: Vector Word64 }+ deriving (Typeable)+deriving instance Show ImageDrmFormatModifierListCreateInfoEXT++instance ToCStruct ImageDrmFormatModifierListCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageDrmFormatModifierListCreateInfoEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (drmFormatModifiers)) :: Word32))+ pPDrmFormatModifiers' <- ContT $ allocaBytesAligned @Word64 ((Data.Vector.length (drmFormatModifiers)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPDrmFormatModifiers' `plusPtr` (8 * (i)) :: Ptr Word64) (e)) (drmFormatModifiers)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word64))) (pPDrmFormatModifiers')+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPDrmFormatModifiers' <- ContT $ allocaBytesAligned @Word64 ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPDrmFormatModifiers' `plusPtr` (8 * (i)) :: Ptr Word64) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word64))) (pPDrmFormatModifiers')+ lift $ f++instance FromCStruct ImageDrmFormatModifierListCreateInfoEXT where+ peekCStruct p = do+ drmFormatModifierCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pDrmFormatModifiers <- peek @(Ptr Word64) ((p `plusPtr` 24 :: Ptr (Ptr Word64)))+ pDrmFormatModifiers' <- generateM (fromIntegral drmFormatModifierCount) (\i -> peek @Word64 ((pDrmFormatModifiers `advancePtrBytes` (8 * (i)) :: Ptr Word64)))+ pure $ ImageDrmFormatModifierListCreateInfoEXT+ pDrmFormatModifiers'++instance Zero ImageDrmFormatModifierListCreateInfoEXT where+ zero = ImageDrmFormatModifierListCreateInfoEXT+ mempty+++-- | VkImageDrmFormatModifierExplicitCreateInfoEXT - Specify that an image be+-- created with the provided DRM format modifier and explicit memory layout+--+-- = Description+--+-- The @i@th member of @pPlaneLayouts@ describes the layout of the image’s+-- @i@th /memory plane/ (that is,+-- @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@). In each element of+-- @pPlaneLayouts@, the implementation /must/ ignore @size@. The+-- implementation calculates the size of each plane, which the application+-- /can/ query with+-- 'Graphics.Vulkan.Core10.Image.getImageSubresourceLayout'.+--+-- When creating an image with+-- 'ImageDrmFormatModifierExplicitCreateInfoEXT', it is the application’s+-- responsibility to satisfy all valid usage requirements. However, the+-- implementation /must/ validate that the provided @pPlaneLayouts@, when+-- combined with the provided @drmFormatModifier@ and other creation+-- parameters in 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' and its+-- @pNext@ chain, produce a valid image. (This validation is necessarily+-- implementation-dependent and outside the scope of Vulkan, and therefore+-- not described by valid usage requirements). If this validation fails,+-- then 'Graphics.Vulkan.Core10.Image.createImage' returns+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT'.+--+-- == Valid Usage+--+-- - @drmFormatModifier@ must be compatible with the parameters in+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' and its @pNext@+-- chain, as determined by querying+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'+-- extended with 'PhysicalDeviceImageDrmFormatModifierInfoEXT'.+--+-- - @drmFormatModifierPlaneCount@ /must/ be equal to the+-- 'DrmFormatModifierPropertiesEXT'::@drmFormatModifierPlaneCount@+-- associated with+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.Enums.Format.Format'+-- and @drmFormatModifier@, as found by querying+-- 'DrmFormatModifierPropertiesListEXT'.+--+-- - For each element of @pPlaneLayouts@, @size@ /must/ be 0+--+-- - For each element of @pPlaneLayouts@, @arrayPitch@ /must/ be 0 if+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@arrayLayers@ is 1.+--+-- - For each element of @pPlaneLayouts@, @depthPitch@ /must/ be 0 if+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@extent.depth@ is 1.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT'+--+-- - If @drmFormatModifierPlaneCount@ is not @0@, @pPlaneLayouts@ /must/+-- be a valid pointer to an array of @drmFormatModifierPlaneCount@+-- 'Graphics.Vulkan.Core10.Image.SubresourceLayout' structures+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Core10.Image.SubresourceLayout'+data ImageDrmFormatModifierExplicitCreateInfoEXT = ImageDrmFormatModifierExplicitCreateInfoEXT+ { -- | @drmFormatModifier@ is the /Linux DRM format modifier/ with which the+ -- image will be created.+ drmFormatModifier :: Word64+ , -- | @pPlaneLayouts@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.Image.SubresourceLayout' structures describing+ -- the image’s /memory planes/.+ planeLayouts :: Vector SubresourceLayout+ }+ deriving (Typeable)+deriving instance Show ImageDrmFormatModifierExplicitCreateInfoEXT++instance ToCStruct ImageDrmFormatModifierExplicitCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageDrmFormatModifierExplicitCreateInfoEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word64)) (drmFormatModifier)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (planeLayouts)) :: Word32))+ pPPlaneLayouts' <- ContT $ allocaBytesAligned @SubresourceLayout ((Data.Vector.length (planeLayouts)) * 40) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPPlaneLayouts' `plusPtr` (40 * (i)) :: Ptr SubresourceLayout) (e) . ($ ())) (planeLayouts)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr SubresourceLayout))) (pPPlaneLayouts')+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word64)) (zero)+ pPPlaneLayouts' <- ContT $ allocaBytesAligned @SubresourceLayout ((Data.Vector.length (mempty)) * 40) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPPlaneLayouts' `plusPtr` (40 * (i)) :: Ptr SubresourceLayout) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr SubresourceLayout))) (pPPlaneLayouts')+ lift $ f++instance FromCStruct ImageDrmFormatModifierExplicitCreateInfoEXT where+ peekCStruct p = do+ drmFormatModifier <- peek @Word64 ((p `plusPtr` 16 :: Ptr Word64))+ drmFormatModifierPlaneCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ pPlaneLayouts <- peek @(Ptr SubresourceLayout) ((p `plusPtr` 32 :: Ptr (Ptr SubresourceLayout)))+ pPlaneLayouts' <- generateM (fromIntegral drmFormatModifierPlaneCount) (\i -> peekCStruct @SubresourceLayout ((pPlaneLayouts `advancePtrBytes` (40 * (i)) :: Ptr SubresourceLayout)))+ pure $ ImageDrmFormatModifierExplicitCreateInfoEXT+ drmFormatModifier pPlaneLayouts'++instance Zero ImageDrmFormatModifierExplicitCreateInfoEXT where+ zero = ImageDrmFormatModifierExplicitCreateInfoEXT+ zero+ mempty+++-- | VkImageDrmFormatModifierPropertiesEXT - Properties of an image’s Linux+-- DRM format modifier+--+-- = Description+--+-- If the 'Graphics.Vulkan.Core10.Handles.Image' was created with+-- 'ImageDrmFormatModifierListCreateInfoEXT', then the returned+-- @drmFormatModifier@ /must/ belong to the list of modifiers provided at+-- time of image creation in+-- 'ImageDrmFormatModifierListCreateInfoEXT'::@pDrmFormatModifiers@. If the+-- 'Graphics.Vulkan.Core10.Handles.Image' was created with+-- 'ImageDrmFormatModifierExplicitCreateInfoEXT', then the returned+-- @drmFormatModifier@ /must/ be the modifier provided at time of image+-- creation in+-- 'ImageDrmFormatModifierExplicitCreateInfoEXT'::@drmFormatModifier@.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getImageDrmFormatModifierPropertiesEXT'+data ImageDrmFormatModifierPropertiesEXT = ImageDrmFormatModifierPropertiesEXT+ { -- | @drmFormatModifier@ returns the image’s+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifier Linux DRM format modifier>.+ drmFormatModifier :: Word64 }+ deriving (Typeable)+deriving instance Show ImageDrmFormatModifierPropertiesEXT++instance ToCStruct ImageDrmFormatModifierPropertiesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageDrmFormatModifierPropertiesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word64)) (drmFormatModifier)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word64)) (zero)+ f++instance FromCStruct ImageDrmFormatModifierPropertiesEXT where+ peekCStruct p = do+ drmFormatModifier <- peek @Word64 ((p `plusPtr` 16 :: Ptr Word64))+ pure $ ImageDrmFormatModifierPropertiesEXT+ drmFormatModifier++instance Storable ImageDrmFormatModifierPropertiesEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImageDrmFormatModifierPropertiesEXT where+ zero = ImageDrmFormatModifierPropertiesEXT+ zero+++type EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION"+pattern EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1+++type EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier"++-- No documentation found for TopLevel "VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME"+pattern EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs-boot view
@@ -0,0 +1,59 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier ( DrmFormatModifierPropertiesEXT+ , DrmFormatModifierPropertiesListEXT+ , ImageDrmFormatModifierExplicitCreateInfoEXT+ , ImageDrmFormatModifierListCreateInfoEXT+ , ImageDrmFormatModifierPropertiesEXT+ , PhysicalDeviceImageDrmFormatModifierInfoEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data DrmFormatModifierPropertiesEXT++instance ToCStruct DrmFormatModifierPropertiesEXT+instance Show DrmFormatModifierPropertiesEXT++instance FromCStruct DrmFormatModifierPropertiesEXT+++data DrmFormatModifierPropertiesListEXT++instance ToCStruct DrmFormatModifierPropertiesListEXT+instance Show DrmFormatModifierPropertiesListEXT++instance FromCStruct DrmFormatModifierPropertiesListEXT+++data ImageDrmFormatModifierExplicitCreateInfoEXT++instance ToCStruct ImageDrmFormatModifierExplicitCreateInfoEXT+instance Show ImageDrmFormatModifierExplicitCreateInfoEXT++instance FromCStruct ImageDrmFormatModifierExplicitCreateInfoEXT+++data ImageDrmFormatModifierListCreateInfoEXT++instance ToCStruct ImageDrmFormatModifierListCreateInfoEXT+instance Show ImageDrmFormatModifierListCreateInfoEXT++instance FromCStruct ImageDrmFormatModifierListCreateInfoEXT+++data ImageDrmFormatModifierPropertiesEXT++instance ToCStruct ImageDrmFormatModifierPropertiesEXT+instance Show ImageDrmFormatModifierPropertiesEXT++instance FromCStruct ImageDrmFormatModifierPropertiesEXT+++data PhysicalDeviceImageDrmFormatModifierInfoEXT++instance ToCStruct PhysicalDeviceImageDrmFormatModifierInfoEXT+instance Show PhysicalDeviceImageDrmFormatModifierInfoEXT++instance FromCStruct PhysicalDeviceImageDrmFormatModifierInfoEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_index_type_uint8.hs view
@@ -0,0 +1,107 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_index_type_uint8 ( PhysicalDeviceIndexTypeUint8FeaturesEXT(..)+ , EXT_INDEX_TYPE_UINT8_SPEC_VERSION+ , pattern EXT_INDEX_TYPE_UINT8_SPEC_VERSION+ , EXT_INDEX_TYPE_UINT8_EXTENSION_NAME+ , pattern EXT_INDEX_TYPE_UINT8_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT))+-- | VkPhysicalDeviceIndexTypeUint8FeaturesEXT - Structure describing whether+-- uint8 index type can be used+--+-- = Members+--+-- The members of the 'PhysicalDeviceIndexTypeUint8FeaturesEXT' structure+-- describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceIndexTypeUint8FeaturesEXT' structure is included+-- in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceIndexTypeUint8FeaturesEXT' /can/ also be included in the+-- @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceIndexTypeUint8FeaturesEXT = PhysicalDeviceIndexTypeUint8FeaturesEXT+ { -- | @indexTypeUint8@ indicates that+ -- 'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_EXT' can be+ -- used with+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'.+ indexTypeUint8 :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceIndexTypeUint8FeaturesEXT++instance ToCStruct PhysicalDeviceIndexTypeUint8FeaturesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceIndexTypeUint8FeaturesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (indexTypeUint8))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceIndexTypeUint8FeaturesEXT where+ peekCStruct p = do+ indexTypeUint8 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceIndexTypeUint8FeaturesEXT+ (bool32ToBool indexTypeUint8)++instance Storable PhysicalDeviceIndexTypeUint8FeaturesEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceIndexTypeUint8FeaturesEXT where+ zero = PhysicalDeviceIndexTypeUint8FeaturesEXT+ zero+++type EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION"+pattern EXT_INDEX_TYPE_UINT8_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1+++type EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8"++-- No documentation found for TopLevel "VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME"+pattern EXT_INDEX_TYPE_UINT8_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_index_type_uint8.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_index_type_uint8 (PhysicalDeviceIndexTypeUint8FeaturesEXT) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceIndexTypeUint8FeaturesEXT++instance ToCStruct PhysicalDeviceIndexTypeUint8FeaturesEXT+instance Show PhysicalDeviceIndexTypeUint8FeaturesEXT++instance FromCStruct PhysicalDeviceIndexTypeUint8FeaturesEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs view
@@ -0,0 +1,329 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block ( PhysicalDeviceInlineUniformBlockFeaturesEXT(..)+ , PhysicalDeviceInlineUniformBlockPropertiesEXT(..)+ , WriteDescriptorSetInlineUniformBlockEXT(..)+ , DescriptorPoolInlineUniformBlockCreateInfoEXT(..)+ , EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION+ , pattern EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION+ , EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME+ , pattern EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT))+-- | VkPhysicalDeviceInlineUniformBlockFeaturesEXT - Structure describing+-- inline uniform block features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceInlineUniformBlockFeaturesEXT'+-- structure describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceInlineUniformBlockFeaturesEXT' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether each feature is supported.+-- 'PhysicalDeviceInlineUniformBlockFeaturesEXT' /can/ also be included in+-- the @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceInlineUniformBlockFeaturesEXT = PhysicalDeviceInlineUniformBlockFeaturesEXT+ { -- | @inlineUniformBlock@ indicates whether the implementation supports+ -- inline uniform block descriptors. If this feature is not enabled,+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+ -- /must/ not be used.+ inlineUniformBlock :: Bool+ , -- | @descriptorBindingInlineUniformBlockUpdateAfterBind@ indicates whether+ -- the implementation supports updating inline uniform block descriptors+ -- after a set is bound. If this feature is not enabled,+ -- 'Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'+ -- /must/ not be used with+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'.+ descriptorBindingInlineUniformBlockUpdateAfterBind :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceInlineUniformBlockFeaturesEXT++instance ToCStruct PhysicalDeviceInlineUniformBlockFeaturesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceInlineUniformBlockFeaturesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (inlineUniformBlock))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (descriptorBindingInlineUniformBlockUpdateAfterBind))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceInlineUniformBlockFeaturesEXT where+ peekCStruct p = do+ inlineUniformBlock <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ descriptorBindingInlineUniformBlockUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ pure $ PhysicalDeviceInlineUniformBlockFeaturesEXT+ (bool32ToBool inlineUniformBlock) (bool32ToBool descriptorBindingInlineUniformBlockUpdateAfterBind)++instance Storable PhysicalDeviceInlineUniformBlockFeaturesEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceInlineUniformBlockFeaturesEXT where+ zero = PhysicalDeviceInlineUniformBlockFeaturesEXT+ zero+ zero+++-- | VkPhysicalDeviceInlineUniformBlockPropertiesEXT - Structure describing+-- inline uniform block properties that can be supported by an+-- implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceInlineUniformBlockPropertiesEXT'+-- structure describe the following implementation-dependent limits:+--+-- = Description+--+-- If the 'PhysicalDeviceInlineUniformBlockPropertiesEXT' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceInlineUniformBlockPropertiesEXT = PhysicalDeviceInlineUniformBlockPropertiesEXT+ { -- | @maxInlineUniformBlockSize@ is the maximum size in bytes of an+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inlineuniformblock inline uniform block>+ -- binding.+ maxInlineUniformBlockSize :: Word32+ , -- No documentation found for Nested "VkPhysicalDeviceInlineUniformBlockPropertiesEXT" "maxPerStageDescriptorInlineUniformBlocks"+ maxPerStageDescriptorInlineUniformBlocks :: Word32+ , -- | @maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks@ is similar to+ -- @maxPerStageDescriptorInlineUniformBlocks@ but counts descriptor+ -- bindings from descriptor sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks :: Word32+ , -- | @maxDescriptorSetInlineUniformBlocks@ is the maximum number of inline+ -- uniform block bindings that /can/ be included in descriptor bindings in+ -- a pipeline layout across all pipeline shader stages and descriptor set+ -- numbers. Descriptor bindings with a descriptor type of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'+ -- count against this limit. Only descriptor bindings in descriptor set+ -- layouts created without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set count against this limit.+ maxDescriptorSetInlineUniformBlocks :: Word32+ , -- | @maxDescriptorSetUpdateAfterBindInlineUniformBlocks@ is similar to+ -- @maxDescriptorSetInlineUniformBlocks@ but counts descriptor bindings+ -- from descriptor sets created with or without the+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'+ -- bit set.+ maxDescriptorSetUpdateAfterBindInlineUniformBlocks :: Word32+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceInlineUniformBlockPropertiesEXT++instance ToCStruct PhysicalDeviceInlineUniformBlockPropertiesEXT where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceInlineUniformBlockPropertiesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (maxInlineUniformBlockSize)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (maxPerStageDescriptorInlineUniformBlocks)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (maxDescriptorSetInlineUniformBlocks)+ poke ((p `plusPtr` 32 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindInlineUniformBlocks)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+ f++instance FromCStruct PhysicalDeviceInlineUniformBlockPropertiesEXT where+ peekCStruct p = do+ maxInlineUniformBlockSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ maxPerStageDescriptorInlineUniformBlocks <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ maxDescriptorSetInlineUniformBlocks <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+ maxDescriptorSetUpdateAfterBindInlineUniformBlocks <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pure $ PhysicalDeviceInlineUniformBlockPropertiesEXT+ maxInlineUniformBlockSize maxPerStageDescriptorInlineUniformBlocks maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks maxDescriptorSetInlineUniformBlocks maxDescriptorSetUpdateAfterBindInlineUniformBlocks++instance Storable PhysicalDeviceInlineUniformBlockPropertiesEXT where+ sizeOf ~_ = 40+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceInlineUniformBlockPropertiesEXT where+ zero = PhysicalDeviceInlineUniformBlockPropertiesEXT+ zero+ zero+ zero+ zero+ zero+++-- | VkWriteDescriptorSetInlineUniformBlockEXT - Structure specifying inline+-- uniform block data+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data WriteDescriptorSetInlineUniformBlockEXT = WriteDescriptorSetInlineUniformBlockEXT+ { -- | @dataSize@ /must/ be greater than @0@+ dataSize :: Word32+ , -- | @pData@ /must/ be a valid pointer to an array of @dataSize@ bytes+ data' :: Ptr ()+ }+ deriving (Typeable)+deriving instance Show WriteDescriptorSetInlineUniformBlockEXT++instance ToCStruct WriteDescriptorSetInlineUniformBlockEXT where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p WriteDescriptorSetInlineUniformBlockEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (dataSize)+ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (data')+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (zero)+ f++instance FromCStruct WriteDescriptorSetInlineUniformBlockEXT where+ peekCStruct p = do+ dataSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pData <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))+ pure $ WriteDescriptorSetInlineUniformBlockEXT+ dataSize pData++instance Storable WriteDescriptorSetInlineUniformBlockEXT where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero WriteDescriptorSetInlineUniformBlockEXT where+ zero = WriteDescriptorSetInlineUniformBlockEXT+ zero+ zero+++-- | VkDescriptorPoolInlineUniformBlockCreateInfoEXT - Structure specifying+-- the maximum number of inline uniform block bindings of a newly created+-- descriptor pool+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DescriptorPoolInlineUniformBlockCreateInfoEXT = DescriptorPoolInlineUniformBlockCreateInfoEXT+ { -- | @maxInlineUniformBlockBindings@ is the number of inline uniform block+ -- bindings to allocate.+ maxInlineUniformBlockBindings :: Word32 }+ deriving (Typeable)+deriving instance Show DescriptorPoolInlineUniformBlockCreateInfoEXT++instance ToCStruct DescriptorPoolInlineUniformBlockCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DescriptorPoolInlineUniformBlockCreateInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (maxInlineUniformBlockBindings)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ f++instance FromCStruct DescriptorPoolInlineUniformBlockCreateInfoEXT where+ peekCStruct p = do+ maxInlineUniformBlockBindings <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pure $ DescriptorPoolInlineUniformBlockCreateInfoEXT+ maxInlineUniformBlockBindings++instance Storable DescriptorPoolInlineUniformBlockCreateInfoEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DescriptorPoolInlineUniformBlockCreateInfoEXT where+ zero = DescriptorPoolInlineUniformBlockCreateInfoEXT+ zero+++type EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION"+pattern EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1+++type EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block"++-- No documentation found for TopLevel "VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME"+pattern EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs-boot view
@@ -0,0 +1,41 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block ( DescriptorPoolInlineUniformBlockCreateInfoEXT+ , PhysicalDeviceInlineUniformBlockFeaturesEXT+ , PhysicalDeviceInlineUniformBlockPropertiesEXT+ , WriteDescriptorSetInlineUniformBlockEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data DescriptorPoolInlineUniformBlockCreateInfoEXT++instance ToCStruct DescriptorPoolInlineUniformBlockCreateInfoEXT+instance Show DescriptorPoolInlineUniformBlockCreateInfoEXT++instance FromCStruct DescriptorPoolInlineUniformBlockCreateInfoEXT+++data PhysicalDeviceInlineUniformBlockFeaturesEXT++instance ToCStruct PhysicalDeviceInlineUniformBlockFeaturesEXT+instance Show PhysicalDeviceInlineUniformBlockFeaturesEXT++instance FromCStruct PhysicalDeviceInlineUniformBlockFeaturesEXT+++data PhysicalDeviceInlineUniformBlockPropertiesEXT++instance ToCStruct PhysicalDeviceInlineUniformBlockPropertiesEXT+instance Show PhysicalDeviceInlineUniformBlockPropertiesEXT++instance FromCStruct PhysicalDeviceInlineUniformBlockPropertiesEXT+++data WriteDescriptorSetInlineUniformBlockEXT++instance ToCStruct WriteDescriptorSetInlineUniformBlockEXT+instance Show WriteDescriptorSetInlineUniformBlockEXT++instance FromCStruct WriteDescriptorSetInlineUniformBlockEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_line_rasterization.hs view
@@ -0,0 +1,475 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_line_rasterization ( cmdSetLineStippleEXT+ , PhysicalDeviceLineRasterizationFeaturesEXT(..)+ , PhysicalDeviceLineRasterizationPropertiesEXT(..)+ , PipelineRasterizationLineStateCreateInfoEXT(..)+ , LineRasterizationModeEXT( LINE_RASTERIZATION_MODE_DEFAULT_EXT+ , LINE_RASTERIZATION_MODE_RECTANGULAR_EXT+ , LINE_RASTERIZATION_MODE_BRESENHAM_EXT+ , LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT+ , ..+ )+ , EXT_LINE_RASTERIZATION_SPEC_VERSION+ , pattern EXT_LINE_RASTERIZATION_SPEC_VERSION+ , EXT_LINE_RASTERIZATION_EXTENSION_NAME+ , pattern EXT_LINE_RASTERIZATION_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+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 Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word16)+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetLineStippleEXT))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetLineStippleEXT+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word16 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word16 -> IO ()++-- | vkCmdSetLineStippleEXT - Set the dynamic line width state+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @lineStippleFactor@ is the repeat factor used in stippled line+-- rasterization.+--+-- - @lineStipplePattern@ is the bit pattern used in stippled line+-- rasterization.+--+-- == Valid Usage+--+-- - @lineStippleFactor@ /must/ be in the range [1,256]+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdSetLineStippleEXT :: CommandBuffer -> ("lineStippleFactor" ::: Word32) -> ("lineStipplePattern" ::: Word16) -> IO ()+cmdSetLineStippleEXT commandBuffer lineStippleFactor lineStipplePattern = do+ let vkCmdSetLineStippleEXT' = mkVkCmdSetLineStippleEXT (pVkCmdSetLineStippleEXT (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdSetLineStippleEXT' (commandBufferHandle (commandBuffer)) (lineStippleFactor) (lineStipplePattern)+ pure $ ()+++-- | VkPhysicalDeviceLineRasterizationFeaturesEXT - Structure describing the+-- line rasterization features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceLineRasterizationFeaturesEXT'+-- structure describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceLineRasterizationFeaturesEXT' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceLineRasterizationFeaturesEXT' /can/ also be included in+-- the @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable the feature.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceLineRasterizationFeaturesEXT = PhysicalDeviceLineRasterizationFeaturesEXT+ { -- | @rectangularLines@ indicates whether the implementation supports+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines rectangular line rasterization>.+ rectangularLines :: Bool+ , -- | @bresenhamLines@ indicates whether the implementation supports+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-bresenham Bresenham-style line rasterization>.+ bresenhamLines :: Bool+ , -- | @smoothLines@ indicates whether the implementation supports+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-smooth smooth line rasterization>.+ smoothLines :: Bool+ , -- | @stippledRectangularLines@ indicates whether the implementation supports+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>+ -- with 'LINE_RASTERIZATION_MODE_RECTANGULAR_EXT' lines, or with+ -- 'LINE_RASTERIZATION_MODE_DEFAULT_EXT' lines if+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@+ -- is 'Graphics.Vulkan.Core10.BaseType.TRUE'.+ stippledRectangularLines :: Bool+ , -- | @stippledBresenhamLines@ indicates whether the implementation supports+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>+ -- with 'LINE_RASTERIZATION_MODE_BRESENHAM_EXT' lines.+ stippledBresenhamLines :: Bool+ , -- | @stippledSmoothLines@ indicates whether the implementation supports+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>+ -- with 'LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT' lines.+ stippledSmoothLines :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceLineRasterizationFeaturesEXT++instance ToCStruct PhysicalDeviceLineRasterizationFeaturesEXT where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceLineRasterizationFeaturesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (rectangularLines))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (bresenhamLines))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (smoothLines))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (stippledRectangularLines))+ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (stippledBresenhamLines))+ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (stippledSmoothLines))+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceLineRasterizationFeaturesEXT where+ peekCStruct p = do+ rectangularLines <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ bresenhamLines <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ smoothLines <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ stippledRectangularLines <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))+ stippledBresenhamLines <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))+ stippledSmoothLines <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))+ pure $ PhysicalDeviceLineRasterizationFeaturesEXT+ (bool32ToBool rectangularLines) (bool32ToBool bresenhamLines) (bool32ToBool smoothLines) (bool32ToBool stippledRectangularLines) (bool32ToBool stippledBresenhamLines) (bool32ToBool stippledSmoothLines)++instance Storable PhysicalDeviceLineRasterizationFeaturesEXT where+ sizeOf ~_ = 40+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceLineRasterizationFeaturesEXT where+ zero = PhysicalDeviceLineRasterizationFeaturesEXT+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkPhysicalDeviceLineRasterizationPropertiesEXT - Structure describing+-- line rasterization properties supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceLineRasterizationPropertiesEXT'+-- structure describe the following implementation-dependent limits:+--+-- = Description+--+-- If the 'PhysicalDeviceLineRasterizationPropertiesEXT' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceLineRasterizationPropertiesEXT = PhysicalDeviceLineRasterizationPropertiesEXT+ { -- | @lineSubPixelPrecisionBits@ is the number of bits of subpixel precision+ -- in framebuffer coordinates xf and yf when rasterizing+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines line segments>.+ lineSubPixelPrecisionBits :: Word32 }+ deriving (Typeable)+deriving instance Show PhysicalDeviceLineRasterizationPropertiesEXT++instance ToCStruct PhysicalDeviceLineRasterizationPropertiesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceLineRasterizationPropertiesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (lineSubPixelPrecisionBits)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ f++instance FromCStruct PhysicalDeviceLineRasterizationPropertiesEXT where+ peekCStruct p = do+ lineSubPixelPrecisionBits <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pure $ PhysicalDeviceLineRasterizationPropertiesEXT+ lineSubPixelPrecisionBits++instance Storable PhysicalDeviceLineRasterizationPropertiesEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceLineRasterizationPropertiesEXT where+ zero = PhysicalDeviceLineRasterizationPropertiesEXT+ zero+++-- | VkPipelineRasterizationLineStateCreateInfoEXT - Structure specifying+-- parameters of a newly created pipeline line rasterization state+--+-- == Valid Usage+--+-- - If @lineRasterizationMode@ is+-- 'LINE_RASTERIZATION_MODE_RECTANGULAR_EXT', then the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rectangularLines rectangularLines>+-- feature /must/ be enabled+--+-- - If @lineRasterizationMode@ is+-- 'LINE_RASTERIZATION_MODE_BRESENHAM_EXT', then the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bresenhamLines bresenhamLines>+-- feature /must/ be enabled+--+-- - If @lineRasterizationMode@ is+-- 'LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT', then the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bresenhamLines smoothLines>+-- feature /must/ be enabled+--+-- - If @stippledLineEnable@ is 'Graphics.Vulkan.Core10.BaseType.TRUE'+-- and @lineRasterizationMode@ is+-- 'LINE_RASTERIZATION_MODE_RECTANGULAR_EXT', then the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>+-- feature /must/ be enabled+--+-- - If @stippledLineEnable@ is 'Graphics.Vulkan.Core10.BaseType.TRUE'+-- and @lineRasterizationMode@ is+-- 'LINE_RASTERIZATION_MODE_BRESENHAM_EXT', then the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>+-- feature /must/ be enabled+--+-- - If @stippledLineEnable@ is 'Graphics.Vulkan.Core10.BaseType.TRUE'+-- and @lineRasterizationMode@ is+-- 'LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT', then the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>+-- feature /must/ be enabled+--+-- - If @stippledLineEnable@ is 'Graphics.Vulkan.Core10.BaseType.TRUE'+-- and @lineRasterizationMode@ is+-- 'LINE_RASTERIZATION_MODE_DEFAULT_EXT', then the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>+-- feature /must/ be enabled and+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@+-- /must/ be 'Graphics.Vulkan.Core10.BaseType.TRUE'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT'+--+-- - @lineRasterizationMode@ /must/ be a valid 'LineRasterizationModeEXT'+-- value+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32', 'LineRasterizationModeEXT',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineRasterizationLineStateCreateInfoEXT = PipelineRasterizationLineStateCreateInfoEXT+ { -- | @lineRasterizationMode@ is a 'LineRasterizationModeEXT' value selecting+ -- the style of line rasterization.+ lineRasterizationMode :: LineRasterizationModeEXT+ , -- | @stippledLineEnable@ enables+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>.+ stippledLineEnable :: Bool+ , -- | @lineStippleFactor@ is the repeat factor used in stippled line+ -- rasterization.+ lineStippleFactor :: Word32+ , -- | @lineStipplePattern@ is the bit pattern used in stippled line+ -- rasterization.+ lineStipplePattern :: Word16+ }+ deriving (Typeable)+deriving instance Show PipelineRasterizationLineStateCreateInfoEXT++instance ToCStruct PipelineRasterizationLineStateCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineRasterizationLineStateCreateInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr LineRasterizationModeEXT)) (lineRasterizationMode)+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (stippledLineEnable))+ poke ((p `plusPtr` 24 :: Ptr Word32)) (lineStippleFactor)+ poke ((p `plusPtr` 28 :: Ptr Word16)) (lineStipplePattern)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr LineRasterizationModeEXT)) (zero)+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PipelineRasterizationLineStateCreateInfoEXT where+ peekCStruct p = do+ lineRasterizationMode <- peek @LineRasterizationModeEXT ((p `plusPtr` 16 :: Ptr LineRasterizationModeEXT))+ stippledLineEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ lineStippleFactor <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ lineStipplePattern <- peek @Word16 ((p `plusPtr` 28 :: Ptr Word16))+ pure $ PipelineRasterizationLineStateCreateInfoEXT+ lineRasterizationMode (bool32ToBool stippledLineEnable) lineStippleFactor lineStipplePattern++instance Storable PipelineRasterizationLineStateCreateInfoEXT where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineRasterizationLineStateCreateInfoEXT where+ zero = PipelineRasterizationLineStateCreateInfoEXT+ zero+ zero+ zero+ zero+++-- | VkLineRasterizationModeEXT - Line rasterization modes+--+-- = See Also+--+-- 'PipelineRasterizationLineStateCreateInfoEXT'+newtype LineRasterizationModeEXT = LineRasterizationModeEXT Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'LINE_RASTERIZATION_MODE_DEFAULT_EXT' is equivalent to+-- 'LINE_RASTERIZATION_MODE_RECTANGULAR_EXT' if+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@+-- is 'Graphics.Vulkan.Core10.BaseType.TRUE', otherwise lines are drawn as+-- non-@strictLines@ parallelograms. Both of these modes are defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-basic Basic Line Segment Rasterization>.+pattern LINE_RASTERIZATION_MODE_DEFAULT_EXT = LineRasterizationModeEXT 0+-- | 'LINE_RASTERIZATION_MODE_RECTANGULAR_EXT' specifies lines drawn as if+-- they were rectangles extruded from the line+pattern LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = LineRasterizationModeEXT 1+-- | 'LINE_RASTERIZATION_MODE_BRESENHAM_EXT' specifies lines drawn by+-- determining which pixel diamonds the line intersects and exits, as+-- defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-bresenham Bresenham Line Segment Rasterization>.+pattern LINE_RASTERIZATION_MODE_BRESENHAM_EXT = LineRasterizationModeEXT 2+-- | 'LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT' specifies lines drawn+-- if they were rectangles extruded from the line, with alpha falloff, as+-- defined in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-smooth Smooth Lines>.+pattern LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = LineRasterizationModeEXT 3+{-# complete LINE_RASTERIZATION_MODE_DEFAULT_EXT,+ LINE_RASTERIZATION_MODE_RECTANGULAR_EXT,+ LINE_RASTERIZATION_MODE_BRESENHAM_EXT,+ LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT :: LineRasterizationModeEXT #-}++instance Show LineRasterizationModeEXT where+ showsPrec p = \case+ LINE_RASTERIZATION_MODE_DEFAULT_EXT -> showString "LINE_RASTERIZATION_MODE_DEFAULT_EXT"+ LINE_RASTERIZATION_MODE_RECTANGULAR_EXT -> showString "LINE_RASTERIZATION_MODE_RECTANGULAR_EXT"+ LINE_RASTERIZATION_MODE_BRESENHAM_EXT -> showString "LINE_RASTERIZATION_MODE_BRESENHAM_EXT"+ LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT -> showString "LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT"+ LineRasterizationModeEXT x -> showParen (p >= 11) (showString "LineRasterizationModeEXT " . showsPrec 11 x)++instance Read LineRasterizationModeEXT where+ readPrec = parens (choose [("LINE_RASTERIZATION_MODE_DEFAULT_EXT", pure LINE_RASTERIZATION_MODE_DEFAULT_EXT)+ , ("LINE_RASTERIZATION_MODE_RECTANGULAR_EXT", pure LINE_RASTERIZATION_MODE_RECTANGULAR_EXT)+ , ("LINE_RASTERIZATION_MODE_BRESENHAM_EXT", pure LINE_RASTERIZATION_MODE_BRESENHAM_EXT)+ , ("LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT", pure LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT)]+ ++++ prec 10 (do+ expectP (Ident "LineRasterizationModeEXT")+ v <- step readPrec+ pure (LineRasterizationModeEXT v)))+++type EXT_LINE_RASTERIZATION_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_LINE_RASTERIZATION_SPEC_VERSION"+pattern EXT_LINE_RASTERIZATION_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_LINE_RASTERIZATION_SPEC_VERSION = 1+++type EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization"++-- No documentation found for TopLevel "VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME"+pattern EXT_LINE_RASTERIZATION_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_line_rasterization.hs-boot view
@@ -0,0 +1,32 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_line_rasterization ( PhysicalDeviceLineRasterizationFeaturesEXT+ , PhysicalDeviceLineRasterizationPropertiesEXT+ , PipelineRasterizationLineStateCreateInfoEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceLineRasterizationFeaturesEXT++instance ToCStruct PhysicalDeviceLineRasterizationFeaturesEXT+instance Show PhysicalDeviceLineRasterizationFeaturesEXT++instance FromCStruct PhysicalDeviceLineRasterizationFeaturesEXT+++data PhysicalDeviceLineRasterizationPropertiesEXT++instance ToCStruct PhysicalDeviceLineRasterizationPropertiesEXT+instance Show PhysicalDeviceLineRasterizationPropertiesEXT++instance FromCStruct PhysicalDeviceLineRasterizationPropertiesEXT+++data PipelineRasterizationLineStateCreateInfoEXT++instance ToCStruct PipelineRasterizationLineStateCreateInfoEXT+instance Show PipelineRasterizationLineStateCreateInfoEXT++instance FromCStruct PipelineRasterizationLineStateCreateInfoEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_memory_budget.hs view
@@ -0,0 +1,138 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_memory_budget ( PhysicalDeviceMemoryBudgetPropertiesEXT(..)+ , EXT_MEMORY_BUDGET_SPEC_VERSION+ , pattern EXT_MEMORY_BUDGET_SPEC_VERSION+ , EXT_MEMORY_BUDGET_EXTENSION_NAME+ , pattern EXT_MEMORY_BUDGET_EXTENSION_NAME+ ) where++import Control.Monad (unless)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+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.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Data.Vector (Vector)+import qualified Data.Vector.Storable.Sized (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.APIConstants (MAX_MEMORY_HEAPS)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.APIConstants (pattern MAX_MEMORY_HEAPS)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT))+-- | VkPhysicalDeviceMemoryBudgetPropertiesEXT - Structure specifying+-- physical device memory budget and usage+--+-- = Description+--+-- The values returned in this structure are not invariant. The+-- @heapBudget@ and @heapUsage@ values /must/ be zero for array elements+-- greater than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties'::@memoryHeapCount@.+-- The @heapBudget@ value /must/ be non-zero for array elements less than+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceMemoryProperties'::@memoryHeapCount@.+-- The @heapBudget@ value /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.MemoryHeap'::@size@ for+-- each heap.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceMemoryBudgetPropertiesEXT = PhysicalDeviceMemoryBudgetPropertiesEXT+ { -- | @heapBudget@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.MAX_MEMORY_HEAPS'+ -- 'Graphics.Vulkan.Core10.BaseType.DeviceSize' values in which memory+ -- budgets are returned, with one element for each memory heap. A heap’s+ -- budget is a rough estimate of how much memory the process /can/ allocate+ -- from that heap before allocations /may/ fail or cause performance+ -- degradation. The budget includes any currently allocated device memory.+ heapBudget :: Vector DeviceSize+ , -- | @heapUsage@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.MAX_MEMORY_HEAPS'+ -- 'Graphics.Vulkan.Core10.BaseType.DeviceSize' values in which memory+ -- usages are returned, with one element for each memory heap. A heap’s+ -- usage is an estimate of how much memory the process is currently using+ -- in that heap.+ heapUsage :: Vector DeviceSize+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceMemoryBudgetPropertiesEXT++instance ToCStruct PhysicalDeviceMemoryBudgetPropertiesEXT where+ withCStruct x f = allocaBytesAligned 272 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceMemoryBudgetPropertiesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ unless ((Data.Vector.length $ (heapBudget)) <= MAX_MEMORY_HEAPS) $+ throwIO $ IOError Nothing InvalidArgument "" "heapBudget is too long, a maximum of MAX_MEMORY_HEAPS elements are allowed" Nothing Nothing+ Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_HEAPS DeviceSize)))) `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (heapBudget)+ unless ((Data.Vector.length $ (heapUsage)) <= MAX_MEMORY_HEAPS) $+ throwIO $ IOError Nothing InvalidArgument "" "heapUsage is too long, a maximum of MAX_MEMORY_HEAPS elements are allowed" Nothing Nothing+ Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 144 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_HEAPS DeviceSize)))) `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (heapUsage)+ f+ cStructSize = 272+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ unless ((Data.Vector.length $ (mempty)) <= MAX_MEMORY_HEAPS) $+ throwIO $ IOError Nothing InvalidArgument "" "heapBudget is too long, a maximum of MAX_MEMORY_HEAPS elements are allowed" Nothing Nothing+ Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_HEAPS DeviceSize)))) `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (mempty)+ unless ((Data.Vector.length $ (mempty)) <= MAX_MEMORY_HEAPS) $+ throwIO $ IOError Nothing InvalidArgument "" "heapUsage is too long, a maximum of MAX_MEMORY_HEAPS elements are allowed" Nothing Nothing+ Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 144 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_HEAPS DeviceSize)))) `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (mempty)+ f++instance FromCStruct PhysicalDeviceMemoryBudgetPropertiesEXT where+ peekCStruct p = do+ heapBudget <- generateM (MAX_MEMORY_HEAPS) (\i -> peek @DeviceSize (((lowerArrayPtr @DeviceSize ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_HEAPS DeviceSize)))) `advancePtrBytes` (8 * (i)) :: Ptr DeviceSize)))+ heapUsage <- generateM (MAX_MEMORY_HEAPS) (\i -> peek @DeviceSize (((lowerArrayPtr @DeviceSize ((p `plusPtr` 144 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_MEMORY_HEAPS DeviceSize)))) `advancePtrBytes` (8 * (i)) :: Ptr DeviceSize)))+ pure $ PhysicalDeviceMemoryBudgetPropertiesEXT+ heapBudget heapUsage++instance Storable PhysicalDeviceMemoryBudgetPropertiesEXT where+ sizeOf ~_ = 272+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceMemoryBudgetPropertiesEXT where+ zero = PhysicalDeviceMemoryBudgetPropertiesEXT+ mempty+ mempty+++type EXT_MEMORY_BUDGET_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_MEMORY_BUDGET_SPEC_VERSION"+pattern EXT_MEMORY_BUDGET_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_MEMORY_BUDGET_SPEC_VERSION = 1+++type EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget"++-- No documentation found for TopLevel "VK_EXT_MEMORY_BUDGET_EXTENSION_NAME"+pattern EXT_MEMORY_BUDGET_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_memory_budget.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_memory_budget (PhysicalDeviceMemoryBudgetPropertiesEXT) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceMemoryBudgetPropertiesEXT++instance ToCStruct PhysicalDeviceMemoryBudgetPropertiesEXT+instance Show PhysicalDeviceMemoryBudgetPropertiesEXT++instance FromCStruct PhysicalDeviceMemoryBudgetPropertiesEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_memory_priority.hs view
@@ -0,0 +1,163 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_memory_priority ( PhysicalDeviceMemoryPriorityFeaturesEXT(..)+ , MemoryPriorityAllocateInfoEXT(..)+ , EXT_MEMORY_PRIORITY_SPEC_VERSION+ , pattern EXT_MEMORY_PRIORITY_SPEC_VERSION+ , EXT_MEMORY_PRIORITY_EXTENSION_NAME+ , pattern EXT_MEMORY_PRIORITY_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CFloat(CFloat))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT))+-- | VkPhysicalDeviceMemoryPriorityFeaturesEXT - Structure describing memory+-- priority features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceMemoryPriorityFeaturesEXT' structure+-- describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceMemoryPriorityFeaturesEXT' structure is included+-- in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceMemoryPriorityFeaturesEXT' /can/ also be included in the+-- @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceMemoryPriorityFeaturesEXT = PhysicalDeviceMemoryPriorityFeaturesEXT+ { -- | @memoryPriority@ indicates that the implementation supports memory+ -- priorities specified at memory allocation time via+ -- 'MemoryPriorityAllocateInfoEXT'.+ memoryPriority :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceMemoryPriorityFeaturesEXT++instance ToCStruct PhysicalDeviceMemoryPriorityFeaturesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceMemoryPriorityFeaturesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (memoryPriority))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceMemoryPriorityFeaturesEXT where+ peekCStruct p = do+ memoryPriority <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceMemoryPriorityFeaturesEXT+ (bool32ToBool memoryPriority)++instance Storable PhysicalDeviceMemoryPriorityFeaturesEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceMemoryPriorityFeaturesEXT where+ zero = PhysicalDeviceMemoryPriorityFeaturesEXT+ zero+++-- | VkMemoryPriorityAllocateInfoEXT - Specify a memory allocation priority+--+-- = Description+--+-- Memory allocations with higher priority /may/ be more likely to stay in+-- device-local memory when the system is under memory pressure.+--+-- If this structure is not included, it is as if the @priority@ value were+-- @0.5@.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data MemoryPriorityAllocateInfoEXT = MemoryPriorityAllocateInfoEXT+ { -- | @priority@ /must/ be between @0@ and @1@, inclusive+ priority :: Float }+ deriving (Typeable)+deriving instance Show MemoryPriorityAllocateInfoEXT++instance ToCStruct MemoryPriorityAllocateInfoEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p MemoryPriorityAllocateInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (priority))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr CFloat)) (CFloat (zero))+ f++instance FromCStruct MemoryPriorityAllocateInfoEXT where+ peekCStruct p = do+ priority <- peek @CFloat ((p `plusPtr` 16 :: Ptr CFloat))+ pure $ MemoryPriorityAllocateInfoEXT+ ((\(CFloat a) -> a) priority)++instance Storable MemoryPriorityAllocateInfoEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MemoryPriorityAllocateInfoEXT where+ zero = MemoryPriorityAllocateInfoEXT+ zero+++type EXT_MEMORY_PRIORITY_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_MEMORY_PRIORITY_SPEC_VERSION"+pattern EXT_MEMORY_PRIORITY_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_MEMORY_PRIORITY_SPEC_VERSION = 1+++type EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority"++-- No documentation found for TopLevel "VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME"+pattern EXT_MEMORY_PRIORITY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_memory_priority.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_memory_priority ( MemoryPriorityAllocateInfoEXT+ , PhysicalDeviceMemoryPriorityFeaturesEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data MemoryPriorityAllocateInfoEXT++instance ToCStruct MemoryPriorityAllocateInfoEXT+instance Show MemoryPriorityAllocateInfoEXT++instance FromCStruct MemoryPriorityAllocateInfoEXT+++data PhysicalDeviceMemoryPriorityFeaturesEXT++instance ToCStruct PhysicalDeviceMemoryPriorityFeaturesEXT+instance Show PhysicalDeviceMemoryPriorityFeaturesEXT++instance FromCStruct PhysicalDeviceMemoryPriorityFeaturesEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_metal_surface.hs view
@@ -0,0 +1,232 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_metal_surface ( createMetalSurfaceEXT+ , MetalSurfaceCreateInfoEXT(..)+ , MetalSurfaceCreateFlagsEXT(..)+ , EXT_METAL_SURFACE_SPEC_VERSION+ , pattern EXT_METAL_SURFACE_SPEC_VERSION+ , EXT_METAL_SURFACE_EXTENSION_NAME+ , pattern EXT_METAL_SURFACE_EXTENSION_NAME+ , SurfaceKHR(..)+ , CAMetalLayer+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Bits (Bits)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Extensions.WSITypes (CAMetalLayer)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Instance)+import Graphics.Vulkan.Core10.Handles (Instance(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkCreateMetalSurfaceEXT))+import Graphics.Vulkan.Core10.Handles (Instance_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.WSITypes (CAMetalLayer)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateMetalSurfaceEXT+ :: FunPtr (Ptr Instance_T -> Ptr MetalSurfaceCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result) -> Ptr Instance_T -> Ptr MetalSurfaceCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result++-- | vkCreateMetalSurfaceEXT - Create a VkSurfaceKHR object for CAMetalLayer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' is the instance with which+-- to associate the surface.+--+-- - @pCreateInfo@ is a pointer to a 'MetalSurfaceCreateInfoEXT'+-- structure specifying parameters affecting the creation of the+-- surface object.+--+-- - @pAllocator@ is the allocator used for host memory allocated for the+-- surface object when there is no more specific allocator available+-- (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).+--+-- - @pSurface@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle in which the+-- created surface object is returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'MetalSurfaceCreateInfoEXT' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pSurface@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Instance', 'MetalSurfaceCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR'+createMetalSurfaceEXT :: Instance -> MetalSurfaceCreateInfoEXT -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (SurfaceKHR)+createMetalSurfaceEXT instance' createInfo allocator = evalContT $ do+ let vkCreateMetalSurfaceEXT' = mkVkCreateMetalSurfaceEXT (pVkCreateMetalSurfaceEXT (instanceCmds (instance' :: Instance)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPSurface <- ContT $ bracket (callocBytes @SurfaceKHR 8) free+ r <- lift $ vkCreateMetalSurfaceEXT' (instanceHandle (instance')) pCreateInfo pAllocator (pPSurface)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSurface <- lift $ peek @SurfaceKHR pPSurface+ pure $ (pSurface)+++-- | VkMetalSurfaceCreateInfoEXT - Structure specifying parameters of a newly+-- created Metal surface object+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'MetalSurfaceCreateFlagsEXT',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createMetalSurfaceEXT'+data MetalSurfaceCreateInfoEXT = MetalSurfaceCreateInfoEXT+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+ flags :: MetalSurfaceCreateFlagsEXT+ , -- | @pLayer@ is a reference to a+ -- 'Graphics.Vulkan.Extensions.WSITypes.CAMetalLayer' object representing a+ -- renderable surface.+ layer :: Ptr CAMetalLayer+ }+ deriving (Typeable)+deriving instance Show MetalSurfaceCreateInfoEXT++instance ToCStruct MetalSurfaceCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p MetalSurfaceCreateInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr MetalSurfaceCreateFlagsEXT)) (flags)+ poke ((p `plusPtr` 24 :: Ptr (Ptr CAMetalLayer))) (layer)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 24 :: Ptr (Ptr CAMetalLayer))) (zero)+ f++instance FromCStruct MetalSurfaceCreateInfoEXT where+ peekCStruct p = do+ flags <- peek @MetalSurfaceCreateFlagsEXT ((p `plusPtr` 16 :: Ptr MetalSurfaceCreateFlagsEXT))+ pLayer <- peek @(Ptr CAMetalLayer) ((p `plusPtr` 24 :: Ptr (Ptr CAMetalLayer)))+ pure $ MetalSurfaceCreateInfoEXT+ flags pLayer++instance Storable MetalSurfaceCreateInfoEXT where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MetalSurfaceCreateInfoEXT where+ zero = MetalSurfaceCreateInfoEXT+ zero+ zero+++-- No documentation found for TopLevel "VkMetalSurfaceCreateFlagsEXT"+newtype MetalSurfaceCreateFlagsEXT = MetalSurfaceCreateFlagsEXT Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show MetalSurfaceCreateFlagsEXT where+ showsPrec p = \case+ MetalSurfaceCreateFlagsEXT x -> showParen (p >= 11) (showString "MetalSurfaceCreateFlagsEXT 0x" . showHex x)++instance Read MetalSurfaceCreateFlagsEXT where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "MetalSurfaceCreateFlagsEXT")+ v <- step readPrec+ pure (MetalSurfaceCreateFlagsEXT v)))+++type EXT_METAL_SURFACE_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_METAL_SURFACE_SPEC_VERSION"+pattern EXT_METAL_SURFACE_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_METAL_SURFACE_SPEC_VERSION = 1+++type EXT_METAL_SURFACE_EXTENSION_NAME = "VK_EXT_metal_surface"++-- No documentation found for TopLevel "VK_EXT_METAL_SURFACE_EXTENSION_NAME"+pattern EXT_METAL_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_METAL_SURFACE_EXTENSION_NAME = "VK_EXT_metal_surface"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_metal_surface.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_metal_surface (MetalSurfaceCreateInfoEXT) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data MetalSurfaceCreateInfoEXT++instance ToCStruct MetalSurfaceCreateInfoEXT+instance Show MetalSurfaceCreateInfoEXT++instance FromCStruct MetalSurfaceCreateInfoEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_pci_bus_info.hs view
@@ -0,0 +1,105 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_pci_bus_info ( PhysicalDevicePCIBusInfoPropertiesEXT(..)+ , EXT_PCI_BUS_INFO_SPEC_VERSION+ , pattern EXT_PCI_BUS_INFO_SPEC_VERSION+ , EXT_PCI_BUS_INFO_EXTENSION_NAME+ , pattern EXT_PCI_BUS_INFO_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT))+-- | VkPhysicalDevicePCIBusInfoPropertiesEXT - Structure containing PCI bus+-- information of a physical device+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDevicePCIBusInfoPropertiesEXT = PhysicalDevicePCIBusInfoPropertiesEXT+ { -- | @pciDomain@ is the PCI bus domain.+ pciDomain :: Word32+ , -- | @pciBus@ is the PCI bus identifier.+ pciBus :: Word32+ , -- | @pciDevice@ is the PCI device identifier.+ pciDevice :: Word32+ , -- | @pciFunction@ is the PCI device function identifier.+ pciFunction :: Word32+ }+ deriving (Typeable)+deriving instance Show PhysicalDevicePCIBusInfoPropertiesEXT++instance ToCStruct PhysicalDevicePCIBusInfoPropertiesEXT where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDevicePCIBusInfoPropertiesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (pciDomain)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (pciBus)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (pciDevice)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (pciFunction)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+ f++instance FromCStruct PhysicalDevicePCIBusInfoPropertiesEXT where+ peekCStruct p = do+ pciDomain <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pciBus <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pciDevice <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ pciFunction <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+ pure $ PhysicalDevicePCIBusInfoPropertiesEXT+ pciDomain pciBus pciDevice pciFunction++instance Storable PhysicalDevicePCIBusInfoPropertiesEXT where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDevicePCIBusInfoPropertiesEXT where+ zero = PhysicalDevicePCIBusInfoPropertiesEXT+ zero+ zero+ zero+ zero+++type EXT_PCI_BUS_INFO_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_EXT_PCI_BUS_INFO_SPEC_VERSION"+pattern EXT_PCI_BUS_INFO_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_PCI_BUS_INFO_SPEC_VERSION = 2+++type EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info"++-- No documentation found for TopLevel "VK_EXT_PCI_BUS_INFO_EXTENSION_NAME"+pattern EXT_PCI_BUS_INFO_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_pci_bus_info.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_pci_bus_info (PhysicalDevicePCIBusInfoPropertiesEXT) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDevicePCIBusInfoPropertiesEXT++instance ToCStruct PhysicalDevicePCIBusInfoPropertiesEXT+instance Show PhysicalDevicePCIBusInfoPropertiesEXT++instance FromCStruct PhysicalDevicePCIBusInfoPropertiesEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_pipeline_creation_feedback.hs view
@@ -0,0 +1,324 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback ( PipelineCreationFeedbackEXT(..)+ , PipelineCreationFeedbackCreateInfoEXT(..)+ , PipelineCreationFeedbackFlagBitsEXT( PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT+ , PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT+ , PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT+ , ..+ )+ , PipelineCreationFeedbackFlagsEXT+ , EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION+ , pattern EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION+ , EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME+ , pattern EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+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 Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Data.Word (Word64)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT))+-- | VkPipelineCreationFeedbackEXT - Feedback about the creation of a+-- pipeline or pipeline stage+--+-- = Description+--+-- If the 'PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT' is not set in+-- 'Graphics.Vulkan.Core10.BaseType.Flags', an implementation /must/ not+-- set any other bits in 'Graphics.Vulkan.Core10.BaseType.Flags', and all+-- other 'PipelineCreationFeedbackEXT' data members are undefined.+--+-- = See Also+--+-- 'PipelineCreationFeedbackCreateInfoEXT',+-- 'PipelineCreationFeedbackFlagBitsEXT',+-- 'PipelineCreationFeedbackFlagsEXT'+data PipelineCreationFeedbackEXT = PipelineCreationFeedbackEXT+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'PipelineCreationFeedbackFlagBitsEXT' providing feedback about the+ -- creation of a pipeline or of a pipeline stage.+ flags :: PipelineCreationFeedbackFlagsEXT+ , -- | @duration@ is the duration spent creating a pipeline or pipeline stage+ -- in nanoseconds.+ duration :: Word64+ }+ deriving (Typeable)+deriving instance Show PipelineCreationFeedbackEXT++instance ToCStruct PipelineCreationFeedbackEXT where+ withCStruct x f = allocaBytesAligned 16 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineCreationFeedbackEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr PipelineCreationFeedbackFlagsEXT)) (flags)+ poke ((p `plusPtr` 8 :: Ptr Word64)) (duration)+ f+ cStructSize = 16+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr PipelineCreationFeedbackFlagsEXT)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Word64)) (zero)+ f++instance FromCStruct PipelineCreationFeedbackEXT where+ peekCStruct p = do+ flags <- peek @PipelineCreationFeedbackFlagsEXT ((p `plusPtr` 0 :: Ptr PipelineCreationFeedbackFlagsEXT))+ duration <- peek @Word64 ((p `plusPtr` 8 :: Ptr Word64))+ pure $ PipelineCreationFeedbackEXT+ flags duration++instance Storable PipelineCreationFeedbackEXT where+ sizeOf ~_ = 16+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineCreationFeedbackEXT where+ zero = PipelineCreationFeedbackEXT+ zero+ zero+++-- | VkPipelineCreationFeedbackCreateInfoEXT - Request for feedback about the+-- creation of a pipeline+--+-- = Description+--+-- An implementation /should/ write pipeline creation feedback to+-- @pPipelineCreationFeedback@ and /may/ write pipeline stage creation+-- feedback to @pPipelineStageCreationFeedbacks@. An implementation /must/+-- set or clear the 'PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT' in+-- 'PipelineCreationFeedbackEXT'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- for @pPipelineCreationFeedback@ and every element of+-- @pPipelineStageCreationFeedbacks@.+--+-- Note+--+-- One common scenario for an implementation to skip per-stage feedback is+-- when 'PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT'+-- is set in @pPipelineCreationFeedback@.+--+-- When chained to+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'+-- or 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', the @i@+-- element of @pPipelineStageCreationFeedbacks@ corresponds to the @i@+-- element of+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'::@pStages@+-- or+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@.+-- When chained to+-- 'Graphics.Vulkan.Core10.Pipeline.ComputePipelineCreateInfo', the first+-- element of @pPipelineStageCreationFeedbacks@ corresponds to+-- 'Graphics.Vulkan.Core10.Pipeline.ComputePipelineCreateInfo'::@stage@.+--+-- == Valid Usage+--+-- - When chained to+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',+-- 'PipelineCreationFeedbackEXT'::@pipelineStageCreationFeedbackCount@+-- /must/ equal+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@stageCount@+--+-- - When chained to+-- 'Graphics.Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',+-- 'PipelineCreationFeedbackEXT'::@pipelineStageCreationFeedbackCount@+-- /must/ equal 1+--+-- - When chained to+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',+-- 'PipelineCreationFeedbackEXT'::@pipelineStageCreationFeedbackCount@+-- /must/ equal+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'::@stageCount@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT'+--+-- - @pPipelineCreationFeedback@ /must/ be a valid pointer to a+-- 'PipelineCreationFeedbackEXT' structure+--+-- - @pPipelineStageCreationFeedbacks@ /must/ be a valid pointer to an+-- array of @pipelineStageCreationFeedbackCount@+-- 'PipelineCreationFeedbackEXT' structures+--+-- - @pipelineStageCreationFeedbackCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',+-- 'PipelineCreationFeedbackEXT',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineCreationFeedbackCreateInfoEXT = PipelineCreationFeedbackCreateInfoEXT+ { -- | @pPipelineCreationFeedback@ is a pointer to a+ -- 'PipelineCreationFeedbackEXT' structure.+ pipelineCreationFeedback :: Ptr PipelineCreationFeedbackEXT+ , -- | @pipelineStageCreationFeedbackCount@ is the number of elements in+ -- @pPipelineStageCreationFeedbacks@.+ pipelineStageCreationFeedbackCount :: Word32+ , -- | @pPipelineStageCreationFeedbacks@ is a pointer to an array of+ -- @pipelineStageCreationFeedbackCount@ 'PipelineCreationFeedbackEXT'+ -- structures.+ pipelineStageCreationFeedbacks :: Ptr PipelineCreationFeedbackEXT+ }+ deriving (Typeable)+deriving instance Show PipelineCreationFeedbackCreateInfoEXT++instance ToCStruct PipelineCreationFeedbackCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineCreationFeedbackCreateInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr (Ptr PipelineCreationFeedbackEXT))) (pipelineCreationFeedback)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (pipelineStageCreationFeedbackCount)+ poke ((p `plusPtr` 32 :: Ptr (Ptr PipelineCreationFeedbackEXT))) (pipelineStageCreationFeedbacks)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr (Ptr PipelineCreationFeedbackEXT))) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 32 :: Ptr (Ptr PipelineCreationFeedbackEXT))) (zero)+ f++instance FromCStruct PipelineCreationFeedbackCreateInfoEXT where+ peekCStruct p = do+ pPipelineCreationFeedback <- peek @(Ptr PipelineCreationFeedbackEXT) ((p `plusPtr` 16 :: Ptr (Ptr PipelineCreationFeedbackEXT)))+ pipelineStageCreationFeedbackCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ pPipelineStageCreationFeedbacks <- peek @(Ptr PipelineCreationFeedbackEXT) ((p `plusPtr` 32 :: Ptr (Ptr PipelineCreationFeedbackEXT)))+ pure $ PipelineCreationFeedbackCreateInfoEXT+ pPipelineCreationFeedback pipelineStageCreationFeedbackCount pPipelineStageCreationFeedbacks++instance Storable PipelineCreationFeedbackCreateInfoEXT where+ sizeOf ~_ = 40+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineCreationFeedbackCreateInfoEXT where+ zero = PipelineCreationFeedbackCreateInfoEXT+ zero+ zero+ zero+++-- | VkPipelineCreationFeedbackFlagBitsEXT - Bitmask specifying pipeline or+-- pipeline stage creation feedback+--+-- = See Also+--+-- 'PipelineCreationFeedbackCreateInfoEXT', 'PipelineCreationFeedbackEXT',+-- 'PipelineCreationFeedbackFlagsEXT'+newtype PipelineCreationFeedbackFlagBitsEXT = PipelineCreationFeedbackFlagBitsEXT Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT' indicates that the feedback+-- information is valid.+pattern PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = PipelineCreationFeedbackFlagBitsEXT 0x00000001+-- | 'PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT'+-- indicates that a readily usable pipeline or pipeline stage was found in+-- the 'Graphics.Vulkan.Core10.Handles.PipelineCache' specified by the+-- application in the pipeline creation command.+--+-- An implementation /should/ set the+-- 'PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT' bit+-- if it was able to avoid the large majority of pipeline or pipeline stage+-- creation work by using the+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache' parameter of+-- 'Graphics.Vulkan.Core10.Pipeline.createGraphicsPipelines',+-- 'Graphics.Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV',+-- or 'Graphics.Vulkan.Core10.Pipeline.createComputePipelines'. When an+-- implementation sets this bit for the entire pipeline, it /may/ leave it+-- unset for any stage.+--+-- Note+--+-- Implementations are encouraged to provide a meaningful signal to+-- applications using this bit. The intention is to communicate to the+-- application that the pipeline or pipeline stage was created \"as fast as+-- it gets\" using the pipeline cache provided by the application. If an+-- implementation uses an internal cache, it is discouraged from setting+-- this bit as the feedback would be unactionable.+pattern PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = PipelineCreationFeedbackFlagBitsEXT 0x00000002+-- | 'PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT'+-- indicates that the base pipeline specified by the @basePipelineHandle@+-- or @basePipelineIndex@ member of the @Vk*PipelineCreateInfo@ structure+-- was used to accelerate the creation of the pipeline.+--+-- An implementation /should/ set the+-- 'PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT' bit if+-- it was able to avoid a significant amount of work by using the base+-- pipeline.+--+-- Note+--+-- While \"significant amount of work\" is subjective, implementations are+-- encouraged to provide a meaningful signal to applications using this+-- bit. For example, a 1% reduction in duration may not warrant setting+-- this bit, while a 50% reduction would.+pattern PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = PipelineCreationFeedbackFlagBitsEXT 0x00000004++type PipelineCreationFeedbackFlagsEXT = PipelineCreationFeedbackFlagBitsEXT++instance Show PipelineCreationFeedbackFlagBitsEXT where+ showsPrec p = \case+ PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT -> showString "PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT"+ PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT -> showString "PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT"+ PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT -> showString "PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT"+ PipelineCreationFeedbackFlagBitsEXT x -> showParen (p >= 11) (showString "PipelineCreationFeedbackFlagBitsEXT 0x" . showHex x)++instance Read PipelineCreationFeedbackFlagBitsEXT where+ readPrec = parens (choose [("PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT", pure PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT)+ , ("PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT", pure PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT)+ , ("PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT", pure PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT)]+ ++++ prec 10 (do+ expectP (Ident "PipelineCreationFeedbackFlagBitsEXT")+ v <- step readPrec+ pure (PipelineCreationFeedbackFlagBitsEXT v)))+++type EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION"+pattern EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1+++type EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback"++-- No documentation found for TopLevel "VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME"+pattern EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_pipeline_creation_feedback.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback ( PipelineCreationFeedbackCreateInfoEXT+ , PipelineCreationFeedbackEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PipelineCreationFeedbackCreateInfoEXT++instance ToCStruct PipelineCreationFeedbackCreateInfoEXT+instance Show PipelineCreationFeedbackCreateInfoEXT++instance FromCStruct PipelineCreationFeedbackCreateInfoEXT+++data PipelineCreationFeedbackEXT++instance ToCStruct PipelineCreationFeedbackEXT+instance Show PipelineCreationFeedbackEXT++instance FromCStruct PipelineCreationFeedbackEXT+
src/Graphics/Vulkan/Extensions/VK_EXT_post_depth_coverage.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_EXT_post_depth_coverage- ( pattern VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION- , pattern VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_EXT_post_depth_coverage ( EXT_POST_DEPTH_COVERAGE_SPEC_VERSION+ , pattern EXT_POST_DEPTH_COVERAGE_SPEC_VERSION+ , EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME+ , pattern EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION"+pattern EXT_POST_DEPTH_COVERAGE_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 +type EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" --- No documentation found for TopLevel "VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION"-pattern VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION :: Integral a => a-pattern VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME"-pattern VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage"+pattern EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage"+
src/Graphics/Vulkan/Extensions/VK_EXT_queue_family_foreign.hs view
@@ -1,31 +1,25 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_EXT_queue_family_foreign- ( pattern VK_QUEUE_FAMILY_FOREIGN_EXT- , pattern VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION- , pattern VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME- ) where--import Data.String- ( IsString- )-import Data.Word- ( Word32- )+module Graphics.Vulkan.Extensions.VK_EXT_queue_family_foreign ( EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION+ , pattern EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION+ , EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME+ , pattern EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME+ , QUEUE_FAMILY_FOREIGN_EXT+ , pattern QUEUE_FAMILY_FOREIGN_EXT+ ) where +import Data.String (IsString)+import Graphics.Vulkan.Core10.APIConstants (QUEUE_FAMILY_FOREIGN_EXT)+import Graphics.Vulkan.Core10.APIConstants (pattern QUEUE_FAMILY_FOREIGN_EXT)+type EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION"+pattern EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 +type EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" --- No documentation found for Nested "Word32" "VK_QUEUE_FAMILY_FOREIGN_EXT"-pattern VK_QUEUE_FAMILY_FOREIGN_EXT :: Word32-pattern VK_QUEUE_FAMILY_FOREIGN_EXT = 0xfffffffd--- No documentation found for TopLevel "VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION"-pattern VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION :: Integral a => a-pattern VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME"-pattern VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign"+pattern EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign"+
src/Graphics/Vulkan/Extensions/VK_EXT_sample_locations.hs view
@@ -1,661 +1,779 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_EXT_sample_locations- ( pattern VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT- , pattern VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT- , pattern VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT- , pattern VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT- , pattern VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT- , pattern VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT- , pattern VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION- , pattern VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME- , vkCmdSetSampleLocationsEXT- , vkGetPhysicalDeviceMultisamplePropertiesEXT- , VkSampleLocationEXT(..)- , VkSampleLocationsInfoEXT(..)- , VkAttachmentSampleLocationsEXT(..)- , VkSubpassSampleLocationsEXT(..)- , VkRenderPassSampleLocationsBeginInfoEXT(..)- , VkPipelineSampleLocationsStateCreateInfoEXT(..)- , VkPhysicalDeviceSampleLocationsPropertiesEXT(..)- , VkMultisamplePropertiesEXT(..)- ) where--import Data.String- ( IsString- )-import Data.Vector.Storable.Sized- ( Vector- )-import Data.Word- ( Word32- )-import Foreign.C.Types- ( CFloat(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkImageCreateFlagBits(..)- , VkSampleCountFlagBits(..)- , VkPhysicalDevice- , VkSampleCountFlags- )-import Graphics.Vulkan.Core10.Pipeline- ( VkDynamicState(..)- , VkExtent2D(..)- )-import Graphics.Vulkan.Core10.Queue- ( VkCommandBuffer- )----- | @VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT@ specifies that the--- @sampleLocationsInfo@ state in--- 'VkPipelineSampleLocationsStateCreateInfoEXT' will be ignored and /must/--- be set dynamically with 'vkCmdSetSampleLocationsEXT' before any draw or--- clear commands. Enabling custom sample locations is still indicated by--- the @sampleLocationsEnable@ member of--- @VkPipelineSampleLocationsStateCreateInfoEXT@.-pattern VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT :: VkDynamicState-pattern VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = VkDynamicState 1000143000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"-pattern VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = VkStructureType 1000143000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"-pattern VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = VkStructureType 1000143001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"-pattern VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = VkStructureType 1000143002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = VkStructureType 1000143003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT"-pattern VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = VkStructureType 1000143004--- No documentation found for Nested "VkImageCreateFlagBits" "VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"-pattern VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = VkImageCreateFlagBits 0x00001000--- No documentation found for TopLevel "VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION"-pattern VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION :: Integral a => a-pattern VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME"-pattern VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations"--- | vkCmdSetSampleLocationsEXT - Set the dynamic sample locations state------ = Parameters------ - @commandBuffer@ is the command buffer into which the command will be--- recorded.------ - @pSampleLocationsInfo@ is the sample locations state to set.------ == Valid Usage------ - The bound graphics pipeline /must/ have been created with the--- @VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT@ dynamic state enabled------ - The @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@--- /must/ equal the @rasterizationSamples@ member of the--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineMultisampleStateCreateInfo'--- structure the bound graphics pipeline has been created with------ - If--- 'VkPhysicalDeviceSampleLocationsPropertiesEXT'::@variableSampleLocations@--- is @VK_FALSE@ then the current render pass /must/ have been begun by--- specifying a 'VkRenderPassSampleLocationsBeginInfoEXT' structure--- whose @pPostSubpassSampleLocations@ member contains an element with--- a @subpassIndex@ matching the current subpass index and the--- @sampleLocationsInfo@ member of that element /must/ match the sample--- locations state pointed to by @pSampleLocationsInfo@------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pSampleLocationsInfo@ /must/ be a valid pointer to a valid--- @VkSampleLocationsInfoEXT@ structure------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'VkSampleLocationsInfoEXT'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdSetSampleLocationsEXT" vkCmdSetSampleLocationsEXT :: ("commandBuffer" ::: VkCommandBuffer) -> ("pSampleLocationsInfo" ::: Ptr VkSampleLocationsInfoEXT) -> IO ()--- | vkGetPhysicalDeviceMultisamplePropertiesEXT - Report sample count--- specific multisampling capabilities of a physical device------ = Parameters------ - @physicalDevice@ is the physical device from which to query the--- additional multisampling capabilities.------ - @samples@ is the sample count to query the capabilities for.------ - @pMultisampleProperties@ is a pointer to a structure of type--- 'VkMultisamplePropertiesEXT', in which information about the--- additional multisampling capabilities specific to the sample count--- is returned.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @samples@ /must/ be a valid--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'--- value------ - @pMultisampleProperties@ /must/ be a valid pointer to a--- @VkMultisamplePropertiesEXT@ structure------ = See Also------ 'VkMultisamplePropertiesEXT',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceMultisamplePropertiesEXT" vkGetPhysicalDeviceMultisamplePropertiesEXT :: ("physicalDevice" ::: VkPhysicalDevice) -> ("samples" ::: VkSampleCountFlagBits) -> ("pMultisampleProperties" ::: Ptr VkMultisamplePropertiesEXT) -> IO ()--- | VkSampleLocationEXT - Structure specifying the coordinates of a sample--- location------ = Description------ The domain space of the sample location coordinates has an upper-left--- origin within the pixel in framebuffer space.------ The values specified in a @VkSampleLocationEXT@ structure are always--- clamped to the implementation-dependent sample location coordinate range--- [@sampleLocationCoordinateRange@[0],@sampleLocationCoordinateRange@[1]]--- that /can/ be queried by chaining the--- 'VkPhysicalDeviceSampleLocationsPropertiesEXT' structure to the @pNext@--- chain of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2'.------ = See Also------ 'VkSampleLocationsInfoEXT'-data VkSampleLocationEXT = VkSampleLocationEXT- { -- | @x@ is the horizontal coordinate of the sample’s location.- vkX :: CFloat- , -- | @y@ is the vertical coordinate of the sample’s location.- vkY :: CFloat- }- deriving (Eq, Show)--instance Storable VkSampleLocationEXT where- sizeOf ~_ = 8- alignment ~_ = 4- peek ptr = VkSampleLocationEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- poke ptr poked = poke (ptr `plusPtr` 0) (vkX (poked :: VkSampleLocationEXT))- *> poke (ptr `plusPtr` 4) (vkY (poked :: VkSampleLocationEXT))--- | VkSampleLocationsInfoEXT - Structure specifying a set of sample--- locations------ = Description------ This structure /can/ be used either to specify the sample locations to--- be used for rendering or to specify the set of sample locations an image--- subresource has been last rendered with for the purposes of layout--- transitions of depth\/stencil images created with--- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@.------ The sample locations in @pSampleLocations@ specify--- @sampleLocationsPerPixel@ number of sample locations for each pixel in--- the grid of the size specified in @sampleLocationGridSize@. The sample--- location for sample i at the pixel grid location (x,y) is taken from--- @pSampleLocations@[(x + y * @sampleLocationGridSize.width@) *--- @sampleLocationsPerPixel@ + i].------ == Valid Usage------ - @sampleLocationsPerPixel@ /must/ be a bit value that is set in--- 'VkPhysicalDeviceSampleLocationsPropertiesEXT'::@sampleLocationSampleCounts@------ - @sampleLocationsCount@ /must/ equal @sampleLocationsPerPixel@ ×--- @sampleLocationGridSize.width@ × @sampleLocationGridSize.height@------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT@------ - @sampleLocationsPerPixel@ /must/ be a valid--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'--- value------ - @pSampleLocations@ /must/ be a valid pointer to an array of--- @sampleLocationsCount@ @VkSampleLocationEXT@ structures------ - @sampleLocationsCount@ /must/ be greater than @0@------ = See Also------ 'VkAttachmentSampleLocationsEXT',--- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D',--- 'VkPipelineSampleLocationsStateCreateInfoEXT',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits',--- 'VkSampleLocationEXT', 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'VkSubpassSampleLocationsEXT', 'vkCmdSetSampleLocationsEXT'-data VkSampleLocationsInfoEXT = VkSampleLocationsInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @sampleLocationsPerPixel@ is a- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'- -- specifying the number of sample locations per pixel.- vkSampleLocationsPerPixel :: VkSampleCountFlagBits- , -- | @sampleLocationGridSize@ is the size of the sample location grid to- -- select custom sample locations for.- vkSampleLocationGridSize :: VkExtent2D- , -- | @sampleLocationsCount@ is the number of sample locations in- -- @pSampleLocations@.- vkSampleLocationsCount :: Word32- , -- | @pSampleLocations@ is an array of @sampleLocationsCount@- -- 'VkSampleLocationEXT' structures.- vkPSampleLocations :: Ptr VkSampleLocationEXT- }- deriving (Eq, Show)--instance Storable VkSampleLocationsInfoEXT where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkSampleLocationsInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkSampleLocationsInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkSampleLocationsInfoEXT))- *> poke (ptr `plusPtr` 16) (vkSampleLocationsPerPixel (poked :: VkSampleLocationsInfoEXT))- *> poke (ptr `plusPtr` 20) (vkSampleLocationGridSize (poked :: VkSampleLocationsInfoEXT))- *> poke (ptr `plusPtr` 28) (vkSampleLocationsCount (poked :: VkSampleLocationsInfoEXT))- *> poke (ptr `plusPtr` 32) (vkPSampleLocations (poked :: VkSampleLocationsInfoEXT))--- | VkAttachmentSampleLocationsEXT - Structure specifying the sample--- locations state to use in the initial layout transition of attachments------ = Description------ If the image referenced by the framebuffer attachment at index--- @attachmentIndex@ was not created with--- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ then the--- values specified in @sampleLocationsInfo@ are ignored.------ == Valid Usage------ - @attachmentIndex@ /must/ be less than the @attachmentCount@--- specified in 'Graphics.Vulkan.Core10.Pass.VkRenderPassCreateInfo'--- the render pass specified by--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo'::@renderPass@--- was created with------ == Valid Usage (Implicit)------ - @sampleLocationsInfo@ /must/ be a valid @VkSampleLocationsInfoEXT@--- structure------ = See Also------ 'VkRenderPassSampleLocationsBeginInfoEXT', 'VkSampleLocationsInfoEXT'-data VkAttachmentSampleLocationsEXT = VkAttachmentSampleLocationsEXT- { -- | @attachmentIndex@ is the index of the attachment for which the sample- -- locations state is provided.- vkAttachmentIndex :: Word32- , -- | @sampleLocationsInfo@ is the sample locations state to use for the- -- layout transition of the given attachment from the initial layout of the- -- attachment to the image layout specified for the attachment in the first- -- subpass using it.- vkSampleLocationsInfo :: VkSampleLocationsInfoEXT- }- deriving (Eq, Show)--instance Storable VkAttachmentSampleLocationsEXT where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkAttachmentSampleLocationsEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkAttachmentIndex (poked :: VkAttachmentSampleLocationsEXT))- *> poke (ptr `plusPtr` 8) (vkSampleLocationsInfo (poked :: VkAttachmentSampleLocationsEXT))--- | VkSubpassSampleLocationsEXT - Structure specifying the sample locations--- state to use for layout transitions of attachments performed after a--- given subpass------ = Description------ If the image referenced by the depth\/stencil attachment used in the--- subpass identified by @subpassIndex@ was not created with--- @VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT@ or if the--- subpass does not use a depth\/stencil attachment, and--- 'VkPhysicalDeviceSampleLocationsPropertiesEXT'::@variableSampleLocations@--- is @VK_TRUE@ then the values specified in @sampleLocationsInfo@ are--- ignored.------ == Valid Usage------ - @subpassIndex@ /must/ be less than the @subpassCount@ specified in--- 'Graphics.Vulkan.Core10.Pass.VkRenderPassCreateInfo' the render pass--- specified by--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkRenderPassBeginInfo'::@renderPass@--- was created with------ == Valid Usage (Implicit)------ - @sampleLocationsInfo@ /must/ be a valid @VkSampleLocationsInfoEXT@--- structure------ = See Also------ 'VkRenderPassSampleLocationsBeginInfoEXT', 'VkSampleLocationsInfoEXT'-data VkSubpassSampleLocationsEXT = VkSubpassSampleLocationsEXT- { -- | @subpassIndex@ is the index of the subpass for which the sample- -- locations state is provided.- vkSubpassIndex :: Word32- , -- | @sampleLocationsInfo@ is the sample locations state to use for the- -- layout transition of the depth\/stencil attachment away from the image- -- layout the attachment is used with in the subpass specified in- -- @subpassIndex@.- vkSampleLocationsInfo :: VkSampleLocationsInfoEXT- }- deriving (Eq, Show)--instance Storable VkSubpassSampleLocationsEXT where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkSubpassSampleLocationsEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSubpassIndex (poked :: VkSubpassSampleLocationsEXT))- *> poke (ptr `plusPtr` 8) (vkSampleLocationsInfo (poked :: VkSubpassSampleLocationsEXT))--- | VkRenderPassSampleLocationsBeginInfoEXT - Structure specifying sample--- locations to use for the layout transition of custom sample locations--- compatible depth\/stencil attachments------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT@------ - If @attachmentInitialSampleLocationsCount@ is not @0@,--- @pAttachmentInitialSampleLocations@ /must/ be a valid pointer to an--- array of @attachmentInitialSampleLocationsCount@ valid--- @VkAttachmentSampleLocationsEXT@ structures------ - If @postSubpassSampleLocationsCount@ is not @0@,--- @pPostSubpassSampleLocations@ /must/ be a valid pointer to an array--- of @postSubpassSampleLocationsCount@ valid--- @VkSubpassSampleLocationsEXT@ structures------ = See Also------ 'VkAttachmentSampleLocationsEXT',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'VkSubpassSampleLocationsEXT'-data VkRenderPassSampleLocationsBeginInfoEXT = VkRenderPassSampleLocationsBeginInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @attachmentInitialSampleLocationsCount@ is the number of elements in the- -- @pAttachmentInitialSampleLocations@ array.- vkAttachmentInitialSampleLocationsCount :: Word32- , -- | @pAttachmentInitialSampleLocations@ is an array of- -- @attachmentInitialSampleLocationsCount@ 'VkAttachmentSampleLocationsEXT'- -- structures specifying the attachment indices and their corresponding- -- sample location state. Each element of- -- @pAttachmentInitialSampleLocations@ /can/ specify the sample location- -- state to use in the automatic layout transition performed to transition- -- a depth\/stencil attachment from the initial layout of the attachment to- -- the image layout specified for the attachment in the first subpass using- -- it.- vkPAttachmentInitialSampleLocations :: Ptr VkAttachmentSampleLocationsEXT- , -- | @postSubpassSampleLocationsCount@ is the number of elements in the- -- @pPostSubpassSampleLocations@ array.- vkPostSubpassSampleLocationsCount :: Word32- , -- | @pPostSubpassSampleLocations@ is an array of- -- @postSubpassSampleLocationsCount@ 'VkSubpassSampleLocationsEXT'- -- structures specifying the subpass indices and their corresponding sample- -- location state. Each element of @pPostSubpassSampleLocations@ /can/- -- specify the sample location state to use in the automatic layout- -- transition performed to transition the depth\/stencil attachment used by- -- the specified subpass to the image layout specified in a dependent- -- subpass or to the final layout of the attachment in case the specified- -- subpass is the last subpass using that attachment. In addition, if- -- 'VkPhysicalDeviceSampleLocationsPropertiesEXT'::@variableSampleLocations@- -- is @VK_FALSE@, each element of @pPostSubpassSampleLocations@ /must/- -- specify the sample location state that matches the sample locations used- -- by all pipelines that will be bound to a command buffer during the- -- specified subpass. If @variableSampleLocations@ is @VK_TRUE@, the sample- -- locations used for rasterization do not depend on- -- @pPostSubpassSampleLocations@.- vkPPostSubpassSampleLocations :: Ptr VkSubpassSampleLocationsEXT- }- deriving (Eq, Show)--instance Storable VkRenderPassSampleLocationsBeginInfoEXT where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkRenderPassSampleLocationsBeginInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkRenderPassSampleLocationsBeginInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkRenderPassSampleLocationsBeginInfoEXT))- *> poke (ptr `plusPtr` 16) (vkAttachmentInitialSampleLocationsCount (poked :: VkRenderPassSampleLocationsBeginInfoEXT))- *> poke (ptr `plusPtr` 24) (vkPAttachmentInitialSampleLocations (poked :: VkRenderPassSampleLocationsBeginInfoEXT))- *> poke (ptr `plusPtr` 32) (vkPostSubpassSampleLocationsCount (poked :: VkRenderPassSampleLocationsBeginInfoEXT))- *> poke (ptr `plusPtr` 40) (vkPPostSubpassSampleLocations (poked :: VkRenderPassSampleLocationsBeginInfoEXT))--- | VkPipelineSampleLocationsStateCreateInfoEXT - Structure specifying--- sample locations for a pipeline------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT@------ - @sampleLocationsInfo@ /must/ be a valid @VkSampleLocationsInfoEXT@--- structure------ = See Also------ @VkBool32@, 'VkSampleLocationsInfoEXT',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineSampleLocationsStateCreateInfoEXT = VkPipelineSampleLocationsStateCreateInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @sampleLocationsEnable@ controls whether custom sample locations are- -- used. If @sampleLocationsEnable@ is @VK_FALSE@, the default sample- -- locations are used and the values specified in @sampleLocationsInfo@ are- -- ignored.- vkSampleLocationsEnable :: VkBool32- , -- | @sampleLocationsInfo@ is the sample locations to use during- -- rasterization if @sampleLocationsEnable@ is @VK_TRUE@ and the graphics- -- pipeline isn’t created with @VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT@.- vkSampleLocationsInfo :: VkSampleLocationsInfoEXT- }- deriving (Eq, Show)--instance Storable VkPipelineSampleLocationsStateCreateInfoEXT where- sizeOf ~_ = 64- alignment ~_ = 8- peek ptr = VkPipelineSampleLocationsStateCreateInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineSampleLocationsStateCreateInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineSampleLocationsStateCreateInfoEXT))- *> poke (ptr `plusPtr` 16) (vkSampleLocationsEnable (poked :: VkPipelineSampleLocationsStateCreateInfoEXT))- *> poke (ptr `plusPtr` 24) (vkSampleLocationsInfo (poked :: VkPipelineSampleLocationsStateCreateInfoEXT))--- | VkPhysicalDeviceSampleLocationsPropertiesEXT - Structure describing--- sample location limits that can be supported by an implementation------ = Members------ The members of the @VkPhysicalDeviceSampleLocationsPropertiesEXT@--- structure describe the following implementation-dependent limits:------ = Description------ - @sampleLocationSampleCounts@ is a bitmask of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlagBits'--- indicating the sample counts supporting custom sample locations.------ - @maxSampleLocationGridSize@ is the maximum size of the pixel grid in--- which sample locations /can/ vary that is supported for all sample--- counts in @sampleLocationSampleCounts@.------ - @sampleLocationCoordinateRange@[2] is the range of supported sample--- location coordinates.------ - @sampleLocationSubPixelBits@ is the number of bits of subpixel--- precision for sample locations.------ - @variableSampleLocations@ specifies whether the sample locations--- used by all pipelines that will be bound to a command buffer during--- a subpass /must/ match. If set to @VK_TRUE@, the implementation--- supports variable sample locations in a subpass. If set to--- @VK_FALSE@, then the sample locations /must/ stay constant in each--- subpass.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT@------ If the @VkPhysicalDeviceSampleLocationsPropertiesEXT@ structure is--- included in the @pNext@ chain of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2',--- it is filled with the implementation-dependent limits.------ = See Also------ @VkBool32@, 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkSampleCountFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceSampleLocationsPropertiesEXT = VkPhysicalDeviceSampleLocationsPropertiesEXT- { -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "sampleLocationSampleCounts"- vkSampleLocationSampleCounts :: VkSampleCountFlags- , -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "maxSampleLocationGridSize"- vkMaxSampleLocationGridSize :: VkExtent2D- , -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "sampleLocationCoordinateRange"- vkSampleLocationCoordinateRange :: Vector 2 CFloat- , -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "sampleLocationSubPixelBits"- vkSampleLocationSubPixelBits :: Word32- , -- No documentation found for Nested "VkPhysicalDeviceSampleLocationsPropertiesEXT" "variableSampleLocations"- vkVariableSampleLocations :: VkBool32- }- deriving (Eq, Show)--instance Storable VkPhysicalDeviceSampleLocationsPropertiesEXT where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkPhysicalDeviceSampleLocationsPropertiesEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceSampleLocationsPropertiesEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceSampleLocationsPropertiesEXT))- *> poke (ptr `plusPtr` 16) (vkSampleLocationSampleCounts (poked :: VkPhysicalDeviceSampleLocationsPropertiesEXT))- *> poke (ptr `plusPtr` 20) (vkMaxSampleLocationGridSize (poked :: VkPhysicalDeviceSampleLocationsPropertiesEXT))- *> poke (ptr `plusPtr` 28) (vkSampleLocationCoordinateRange (poked :: VkPhysicalDeviceSampleLocationsPropertiesEXT))- *> poke (ptr `plusPtr` 36) (vkSampleLocationSubPixelBits (poked :: VkPhysicalDeviceSampleLocationsPropertiesEXT))- *> poke (ptr `plusPtr` 40) (vkVariableSampleLocations (poked :: VkPhysicalDeviceSampleLocationsPropertiesEXT))--- | VkMultisamplePropertiesEXT - Structure returning information about--- sample count specific additional multisampling capabilities------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT@------ - @pNext@ /must/ be @NULL@------ = See Also------ 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetPhysicalDeviceMultisamplePropertiesEXT'-data VkMultisamplePropertiesEXT = VkMultisamplePropertiesEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @maxSampleLocationGridSize@ is the maximum size of the pixel grid in- -- which sample locations /can/ vary.- vkMaxSampleLocationGridSize :: VkExtent2D- }- deriving (Eq, Show)--instance Storable VkMultisamplePropertiesEXT where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkMultisamplePropertiesEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkMultisamplePropertiesEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkMultisamplePropertiesEXT))- *> poke (ptr `plusPtr` 16) (vkMaxSampleLocationGridSize (poked :: VkMultisamplePropertiesEXT))+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_sample_locations ( cmdSetSampleLocationsEXT+ , getPhysicalDeviceMultisamplePropertiesEXT+ , SampleLocationEXT(..)+ , SampleLocationsInfoEXT(..)+ , AttachmentSampleLocationsEXT(..)+ , SubpassSampleLocationsEXT(..)+ , RenderPassSampleLocationsBeginInfoEXT(..)+ , PipelineSampleLocationsStateCreateInfoEXT(..)+ , PhysicalDeviceSampleLocationsPropertiesEXT(..)+ , MultisamplePropertiesEXT(..)+ , EXT_SAMPLE_LOCATIONS_SPEC_VERSION+ , pattern EXT_SAMPLE_LOCATIONS_SPEC_VERSION+ , EXT_SAMPLE_LOCATIONS_EXTENSION_NAME+ , pattern EXT_SAMPLE_LOCATIONS_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CFloat(CFloat))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import qualified Data.Vector.Storable.Sized (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetSampleLocationsEXT))+import Graphics.Vulkan.Core10.SharedTypes (Extent2D)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceMultisamplePropertiesEXT))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)+import Graphics.Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits(..))+import Graphics.Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetSampleLocationsEXT+ :: FunPtr (Ptr CommandBuffer_T -> Ptr SampleLocationsInfoEXT -> IO ()) -> Ptr CommandBuffer_T -> Ptr SampleLocationsInfoEXT -> IO ()++-- | vkCmdSetSampleLocationsEXT - Set the dynamic sample locations state+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @pSampleLocationsInfo@ is the sample locations state to set.+--+-- == Valid Usage+--+-- - The @sampleLocationsPerPixel@ member of @pSampleLocationsInfo@+-- /must/ equal the @rasterizationSamples@ member of the+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'+-- structure the bound graphics pipeline has been created with+--+-- - If+-- 'PhysicalDeviceSampleLocationsPropertiesEXT'::@variableSampleLocations@+-- is 'Graphics.Vulkan.Core10.BaseType.FALSE' then the current render+-- pass /must/ have been begun by specifying a+-- 'RenderPassSampleLocationsBeginInfoEXT' structure whose+-- @pPostSubpassSampleLocations@ member contains an element with a+-- @subpassIndex@ matching the current subpass index and the+-- @sampleLocationsInfo@ member of that element /must/ match the sample+-- locations state pointed to by @pSampleLocationsInfo@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pSampleLocationsInfo@ /must/ be a valid pointer to a valid+-- 'SampleLocationsInfoEXT' structure+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', 'SampleLocationsInfoEXT'+cmdSetSampleLocationsEXT :: CommandBuffer -> SampleLocationsInfoEXT -> IO ()+cmdSetSampleLocationsEXT commandBuffer sampleLocationsInfo = evalContT $ do+ let vkCmdSetSampleLocationsEXT' = mkVkCmdSetSampleLocationsEXT (pVkCmdSetSampleLocationsEXT (deviceCmds (commandBuffer :: CommandBuffer)))+ pSampleLocationsInfo <- ContT $ withCStruct (sampleLocationsInfo)+ lift $ vkCmdSetSampleLocationsEXT' (commandBufferHandle (commandBuffer)) pSampleLocationsInfo+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceMultisamplePropertiesEXT+ :: FunPtr (Ptr PhysicalDevice_T -> SampleCountFlagBits -> Ptr MultisamplePropertiesEXT -> IO ()) -> Ptr PhysicalDevice_T -> SampleCountFlagBits -> Ptr MultisamplePropertiesEXT -> IO ()++-- | vkGetPhysicalDeviceMultisamplePropertiesEXT - Report sample count+-- specific multisampling capabilities of a physical device+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device from which to query the additional multisampling+-- capabilities.+--+-- - @samples@ is the sample count to query the capabilities for.+--+-- - @pMultisampleProperties@ is a pointer to a+-- 'MultisamplePropertiesEXT' structure in which information about the+-- additional multisampling capabilities specific to the sample count+-- is returned.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'MultisamplePropertiesEXT',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+getPhysicalDeviceMultisamplePropertiesEXT :: PhysicalDevice -> ("samples" ::: SampleCountFlagBits) -> IO (MultisamplePropertiesEXT)+getPhysicalDeviceMultisamplePropertiesEXT physicalDevice samples = evalContT $ do+ let vkGetPhysicalDeviceMultisamplePropertiesEXT' = mkVkGetPhysicalDeviceMultisamplePropertiesEXT (pVkGetPhysicalDeviceMultisamplePropertiesEXT (instanceCmds (physicalDevice :: PhysicalDevice)))+ pPMultisampleProperties <- ContT (withZeroCStruct @MultisamplePropertiesEXT)+ lift $ vkGetPhysicalDeviceMultisamplePropertiesEXT' (physicalDeviceHandle (physicalDevice)) (samples) (pPMultisampleProperties)+ pMultisampleProperties <- lift $ peekCStruct @MultisamplePropertiesEXT pPMultisampleProperties+ pure $ (pMultisampleProperties)+++-- | VkSampleLocationEXT - Structure specifying the coordinates of a sample+-- location+--+-- = Description+--+-- The domain space of the sample location coordinates has an upper-left+-- origin within the pixel in framebuffer space.+--+-- The values specified in a 'SampleLocationEXT' structure are always+-- clamped to the implementation-dependent sample location coordinate range+-- [@sampleLocationCoordinateRange@[0],@sampleLocationCoordinateRange@[1]]+-- that /can/ be queried by adding a+-- 'PhysicalDeviceSampleLocationsPropertiesEXT' structure to the @pNext@+-- chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'.+--+-- = See Also+--+-- 'SampleLocationsInfoEXT'+data SampleLocationEXT = SampleLocationEXT+ { -- | @x@ is the horizontal coordinate of the sample’s location.+ x :: Float+ , -- | @y@ is the vertical coordinate of the sample’s location.+ y :: Float+ }+ deriving (Typeable)+deriving instance Show SampleLocationEXT++instance ToCStruct SampleLocationEXT where+ withCStruct x f = allocaBytesAligned 8 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SampleLocationEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (x))+ poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (y))+ f+ cStructSize = 8+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (zero))+ poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (zero))+ f++instance FromCStruct SampleLocationEXT where+ peekCStruct p = do+ x <- peek @CFloat ((p `plusPtr` 0 :: Ptr CFloat))+ y <- peek @CFloat ((p `plusPtr` 4 :: Ptr CFloat))+ pure $ SampleLocationEXT+ ((\(CFloat a) -> a) x) ((\(CFloat a) -> a) y)++instance Storable SampleLocationEXT where+ sizeOf ~_ = 8+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SampleLocationEXT where+ zero = SampleLocationEXT+ zero+ zero+++-- | VkSampleLocationsInfoEXT - Structure specifying a set of sample+-- locations+--+-- = Description+--+-- This structure /can/ be used either to specify the sample locations to+-- be used for rendering or to specify the set of sample locations an image+-- subresource has been last rendered with for the purposes of layout+-- transitions of depth\/stencil images created with+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'.+--+-- The sample locations in @pSampleLocations@ specify+-- @sampleLocationsPerPixel@ number of sample locations for each pixel in+-- the grid of the size specified in @sampleLocationGridSize@. The sample+-- location for sample i at the pixel grid location (x,y) is taken from+-- @pSampleLocations@[(x + y * @sampleLocationGridSize.width@) *+-- @sampleLocationsPerPixel@ + i].+--+-- If the render pass has a fragment density map, the implementation will+-- choose the sample locations for the fragment and the contents of+-- @pSampleLocations@ /may/ be ignored.+--+-- == Valid Usage+--+-- - @sampleLocationsPerPixel@ /must/ be a bit value that is set in+-- 'PhysicalDeviceSampleLocationsPropertiesEXT'::@sampleLocationSampleCounts@+--+-- - @sampleLocationsCount@ /must/ equal @sampleLocationsPerPixel@ ×+-- @sampleLocationGridSize.width@ × @sampleLocationGridSize.height@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT'+--+-- - If @sampleLocationsPerPixel@ is not @0@, @sampleLocationsPerPixel@+-- /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+-- value+--+-- - If @sampleLocationsCount@ is not @0@, @pSampleLocations@ /must/ be a+-- valid pointer to an array of @sampleLocationsCount@+-- 'SampleLocationEXT' structures+--+-- = See Also+--+-- 'AttachmentSampleLocationsEXT',+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent2D',+-- 'PipelineSampleLocationsStateCreateInfoEXT',+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',+-- 'SampleLocationEXT',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'SubpassSampleLocationsEXT', 'cmdSetSampleLocationsEXT'+data SampleLocationsInfoEXT = SampleLocationsInfoEXT+ { -- | @sampleLocationsPerPixel@ is a+ -- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+ -- specifying the number of sample locations per pixel.+ sampleLocationsPerPixel :: SampleCountFlagBits+ , -- | @sampleLocationGridSize@ is the size of the sample location grid to+ -- select custom sample locations for.+ sampleLocationGridSize :: Extent2D+ , -- | @pSampleLocations@ is a pointer to an array of @sampleLocationsCount@+ -- 'SampleLocationEXT' structures.+ sampleLocations :: Vector SampleLocationEXT+ }+ deriving (Typeable)+deriving instance Show SampleLocationsInfoEXT++instance ToCStruct SampleLocationsInfoEXT where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SampleLocationsInfoEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr SampleCountFlagBits)) (sampleLocationsPerPixel)+ ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr Extent2D)) (sampleLocationGridSize) . ($ ())+ lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (sampleLocations)) :: Word32))+ pPSampleLocations' <- ContT $ allocaBytesAligned @SampleLocationEXT ((Data.Vector.length (sampleLocations)) * 8) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPSampleLocations' `plusPtr` (8 * (i)) :: Ptr SampleLocationEXT) (e) . ($ ())) (sampleLocations)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr SampleLocationEXT))) (pPSampleLocations')+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr Extent2D)) (zero) . ($ ())+ pPSampleLocations' <- ContT $ allocaBytesAligned @SampleLocationEXT ((Data.Vector.length (mempty)) * 8) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPSampleLocations' `plusPtr` (8 * (i)) :: Ptr SampleLocationEXT) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr SampleLocationEXT))) (pPSampleLocations')+ lift $ f++instance FromCStruct SampleLocationsInfoEXT where+ peekCStruct p = do+ sampleLocationsPerPixel <- peek @SampleCountFlagBits ((p `plusPtr` 16 :: Ptr SampleCountFlagBits))+ sampleLocationGridSize <- peekCStruct @Extent2D ((p `plusPtr` 20 :: Ptr Extent2D))+ sampleLocationsCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+ pSampleLocations <- peek @(Ptr SampleLocationEXT) ((p `plusPtr` 32 :: Ptr (Ptr SampleLocationEXT)))+ pSampleLocations' <- generateM (fromIntegral sampleLocationsCount) (\i -> peekCStruct @SampleLocationEXT ((pSampleLocations `advancePtrBytes` (8 * (i)) :: Ptr SampleLocationEXT)))+ pure $ SampleLocationsInfoEXT+ sampleLocationsPerPixel sampleLocationGridSize pSampleLocations'++instance Zero SampleLocationsInfoEXT where+ zero = SampleLocationsInfoEXT+ zero+ zero+ mempty+++-- | VkAttachmentSampleLocationsEXT - Structure specifying the sample+-- locations state to use in the initial layout transition of attachments+--+-- = Description+--+-- If the image referenced by the framebuffer attachment at index+-- @attachmentIndex@ was not created with+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+-- then the values specified in @sampleLocationsInfo@ are ignored.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'RenderPassSampleLocationsBeginInfoEXT', 'SampleLocationsInfoEXT'+data AttachmentSampleLocationsEXT = AttachmentSampleLocationsEXT+ { -- | @attachmentIndex@ /must/ be less than the @attachmentCount@ specified in+ -- 'Graphics.Vulkan.Core10.Pass.RenderPassCreateInfo' the render pass+ -- specified by+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo'::'Graphics.Vulkan.Core10.Handles.RenderPass'+ -- was created with+ attachmentIndex :: Word32+ , -- | @sampleLocationsInfo@ /must/ be a valid 'SampleLocationsInfoEXT'+ -- structure+ sampleLocationsInfo :: SampleLocationsInfoEXT+ }+ deriving (Typeable)+deriving instance Show AttachmentSampleLocationsEXT++instance ToCStruct AttachmentSampleLocationsEXT where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p AttachmentSampleLocationsEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (attachmentIndex)+ ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr SampleLocationsInfoEXT)) (sampleLocationsInfo) . ($ ())+ lift $ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr SampleLocationsInfoEXT)) (zero) . ($ ())+ lift $ f++instance FromCStruct AttachmentSampleLocationsEXT where+ peekCStruct p = do+ attachmentIndex <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ sampleLocationsInfo <- peekCStruct @SampleLocationsInfoEXT ((p `plusPtr` 8 :: Ptr SampleLocationsInfoEXT))+ pure $ AttachmentSampleLocationsEXT+ attachmentIndex sampleLocationsInfo++instance Zero AttachmentSampleLocationsEXT where+ zero = AttachmentSampleLocationsEXT+ zero+ zero+++-- | VkSubpassSampleLocationsEXT - Structure specifying the sample locations+-- state to use for layout transitions of attachments performed after a+-- given subpass+--+-- = Description+--+-- If the image referenced by the depth\/stencil attachment used in the+-- subpass identified by @subpassIndex@ was not created with+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+-- or if the subpass does not use a depth\/stencil attachment, and+-- 'PhysicalDeviceSampleLocationsPropertiesEXT'::@variableSampleLocations@+-- is 'Graphics.Vulkan.Core10.BaseType.TRUE' then the values specified in+-- @sampleLocationsInfo@ are ignored.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'RenderPassSampleLocationsBeginInfoEXT', 'SampleLocationsInfoEXT'+data SubpassSampleLocationsEXT = SubpassSampleLocationsEXT+ { -- | @subpassIndex@ /must/ be less than the @subpassCount@ specified in+ -- 'Graphics.Vulkan.Core10.Pass.RenderPassCreateInfo' the render pass+ -- specified by+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo'::'Graphics.Vulkan.Core10.Handles.RenderPass'+ -- was created with+ subpassIndex :: Word32+ , -- | @sampleLocationsInfo@ /must/ be a valid 'SampleLocationsInfoEXT'+ -- structure+ sampleLocationsInfo :: SampleLocationsInfoEXT+ }+ deriving (Typeable)+deriving instance Show SubpassSampleLocationsEXT++instance ToCStruct SubpassSampleLocationsEXT where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SubpassSampleLocationsEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (subpassIndex)+ ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr SampleLocationsInfoEXT)) (sampleLocationsInfo) . ($ ())+ lift $ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr SampleLocationsInfoEXT)) (zero) . ($ ())+ lift $ f++instance FromCStruct SubpassSampleLocationsEXT where+ peekCStruct p = do+ subpassIndex <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ sampleLocationsInfo <- peekCStruct @SampleLocationsInfoEXT ((p `plusPtr` 8 :: Ptr SampleLocationsInfoEXT))+ pure $ SubpassSampleLocationsEXT+ subpassIndex sampleLocationsInfo++instance Zero SubpassSampleLocationsEXT where+ zero = SubpassSampleLocationsEXT+ zero+ zero+++-- | VkRenderPassSampleLocationsBeginInfoEXT - Structure specifying sample+-- locations to use for the layout transition of custom sample locations+-- compatible depth\/stencil attachments+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT'+--+-- - If @attachmentInitialSampleLocationsCount@ is not @0@,+-- @pAttachmentInitialSampleLocations@ /must/ be a valid pointer to an+-- array of @attachmentInitialSampleLocationsCount@ valid+-- 'AttachmentSampleLocationsEXT' structures+--+-- - If @postSubpassSampleLocationsCount@ is not @0@,+-- @pPostSubpassSampleLocations@ /must/ be a valid pointer to an array+-- of @postSubpassSampleLocationsCount@ valid+-- 'SubpassSampleLocationsEXT' structures+--+-- = See Also+--+-- 'AttachmentSampleLocationsEXT',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'SubpassSampleLocationsEXT'+data RenderPassSampleLocationsBeginInfoEXT = RenderPassSampleLocationsBeginInfoEXT+ { -- | @pAttachmentInitialSampleLocations@ is a pointer to an array of+ -- @attachmentInitialSampleLocationsCount@ 'AttachmentSampleLocationsEXT'+ -- structures specifying the attachment indices and their corresponding+ -- sample location state. Each element of+ -- @pAttachmentInitialSampleLocations@ /can/ specify the sample location+ -- state to use in the automatic layout transition performed to transition+ -- a depth\/stencil attachment from the initial layout of the attachment to+ -- the image layout specified for the attachment in the first subpass using+ -- it.+ attachmentInitialSampleLocations :: Vector AttachmentSampleLocationsEXT+ , -- | @pPostSubpassSampleLocations@ is a pointer to an array of+ -- @postSubpassSampleLocationsCount@ 'SubpassSampleLocationsEXT' structures+ -- specifying the subpass indices and their corresponding sample location+ -- state. Each element of @pPostSubpassSampleLocations@ /can/ specify the+ -- sample location state to use in the automatic layout transition+ -- performed to transition the depth\/stencil attachment used by the+ -- specified subpass to the image layout specified in a dependent subpass+ -- or to the final layout of the attachment in case the specified subpass+ -- is the last subpass using that attachment. In addition, if+ -- 'PhysicalDeviceSampleLocationsPropertiesEXT'::@variableSampleLocations@+ -- is 'Graphics.Vulkan.Core10.BaseType.FALSE', each element of+ -- @pPostSubpassSampleLocations@ /must/ specify the sample location state+ -- that matches the sample locations used by all pipelines that will be+ -- bound to a command buffer during the specified subpass. If+ -- @variableSampleLocations@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', the+ -- sample locations used for rasterization do not depend on+ -- @pPostSubpassSampleLocations@.+ postSubpassSampleLocations :: Vector SubpassSampleLocationsEXT+ }+ deriving (Typeable)+deriving instance Show RenderPassSampleLocationsBeginInfoEXT++instance ToCStruct RenderPassSampleLocationsBeginInfoEXT where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p RenderPassSampleLocationsBeginInfoEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (attachmentInitialSampleLocations)) :: Word32))+ pPAttachmentInitialSampleLocations' <- ContT $ allocaBytesAligned @AttachmentSampleLocationsEXT ((Data.Vector.length (attachmentInitialSampleLocations)) * 48) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAttachmentInitialSampleLocations' `plusPtr` (48 * (i)) :: Ptr AttachmentSampleLocationsEXT) (e) . ($ ())) (attachmentInitialSampleLocations)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AttachmentSampleLocationsEXT))) (pPAttachmentInitialSampleLocations')+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (postSubpassSampleLocations)) :: Word32))+ pPPostSubpassSampleLocations' <- ContT $ allocaBytesAligned @SubpassSampleLocationsEXT ((Data.Vector.length (postSubpassSampleLocations)) * 48) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPPostSubpassSampleLocations' `plusPtr` (48 * (i)) :: Ptr SubpassSampleLocationsEXT) (e) . ($ ())) (postSubpassSampleLocations)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr SubpassSampleLocationsEXT))) (pPPostSubpassSampleLocations')+ lift $ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPAttachmentInitialSampleLocations' <- ContT $ allocaBytesAligned @AttachmentSampleLocationsEXT ((Data.Vector.length (mempty)) * 48) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAttachmentInitialSampleLocations' `plusPtr` (48 * (i)) :: Ptr AttachmentSampleLocationsEXT) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AttachmentSampleLocationsEXT))) (pPAttachmentInitialSampleLocations')+ pPPostSubpassSampleLocations' <- ContT $ allocaBytesAligned @SubpassSampleLocationsEXT ((Data.Vector.length (mempty)) * 48) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPPostSubpassSampleLocations' `plusPtr` (48 * (i)) :: Ptr SubpassSampleLocationsEXT) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr SubpassSampleLocationsEXT))) (pPPostSubpassSampleLocations')+ lift $ f++instance FromCStruct RenderPassSampleLocationsBeginInfoEXT where+ peekCStruct p = do+ attachmentInitialSampleLocationsCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pAttachmentInitialSampleLocations <- peek @(Ptr AttachmentSampleLocationsEXT) ((p `plusPtr` 24 :: Ptr (Ptr AttachmentSampleLocationsEXT)))+ pAttachmentInitialSampleLocations' <- generateM (fromIntegral attachmentInitialSampleLocationsCount) (\i -> peekCStruct @AttachmentSampleLocationsEXT ((pAttachmentInitialSampleLocations `advancePtrBytes` (48 * (i)) :: Ptr AttachmentSampleLocationsEXT)))+ postSubpassSampleLocationsCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pPostSubpassSampleLocations <- peek @(Ptr SubpassSampleLocationsEXT) ((p `plusPtr` 40 :: Ptr (Ptr SubpassSampleLocationsEXT)))+ pPostSubpassSampleLocations' <- generateM (fromIntegral postSubpassSampleLocationsCount) (\i -> peekCStruct @SubpassSampleLocationsEXT ((pPostSubpassSampleLocations `advancePtrBytes` (48 * (i)) :: Ptr SubpassSampleLocationsEXT)))+ pure $ RenderPassSampleLocationsBeginInfoEXT+ pAttachmentInitialSampleLocations' pPostSubpassSampleLocations'++instance Zero RenderPassSampleLocationsBeginInfoEXT where+ zero = RenderPassSampleLocationsBeginInfoEXT+ mempty+ mempty+++-- | VkPipelineSampleLocationsStateCreateInfoEXT - Structure specifying+-- sample locations for a pipeline+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32', 'SampleLocationsInfoEXT',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineSampleLocationsStateCreateInfoEXT = PipelineSampleLocationsStateCreateInfoEXT+ { -- | @sampleLocationsEnable@ controls whether custom sample locations are+ -- used. If @sampleLocationsEnable@ is+ -- 'Graphics.Vulkan.Core10.BaseType.FALSE', the default sample locations+ -- are used and the values specified in @sampleLocationsInfo@ are ignored.+ sampleLocationsEnable :: Bool+ , -- | @sampleLocationsInfo@ /must/ be a valid 'SampleLocationsInfoEXT'+ -- structure+ sampleLocationsInfo :: SampleLocationsInfoEXT+ }+ deriving (Typeable)+deriving instance Show PipelineSampleLocationsStateCreateInfoEXT++instance ToCStruct PipelineSampleLocationsStateCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineSampleLocationsStateCreateInfoEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (sampleLocationsEnable))+ ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr SampleLocationsInfoEXT)) (sampleLocationsInfo) . ($ ())+ lift $ f+ cStructSize = 64+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr SampleLocationsInfoEXT)) (zero) . ($ ())+ lift $ f++instance FromCStruct PipelineSampleLocationsStateCreateInfoEXT where+ peekCStruct p = do+ sampleLocationsEnable <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ sampleLocationsInfo <- peekCStruct @SampleLocationsInfoEXT ((p `plusPtr` 24 :: Ptr SampleLocationsInfoEXT))+ pure $ PipelineSampleLocationsStateCreateInfoEXT+ (bool32ToBool sampleLocationsEnable) sampleLocationsInfo++instance Zero PipelineSampleLocationsStateCreateInfoEXT where+ zero = PipelineSampleLocationsStateCreateInfoEXT+ zero+ zero+++-- | VkPhysicalDeviceSampleLocationsPropertiesEXT - Structure describing+-- sample location limits that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceSampleLocationsPropertiesEXT'+-- structure describe the following implementation-dependent limits:+--+-- = Description+--+-- If the 'PhysicalDeviceSampleLocationsPropertiesEXT' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent2D',+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceSampleLocationsPropertiesEXT = PhysicalDeviceSampleLocationsPropertiesEXT+ { -- | @sampleLocationSampleCounts@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'+ -- indicating the sample counts supporting custom sample locations.+ sampleLocationSampleCounts :: SampleCountFlags+ , -- | @maxSampleLocationGridSize@ is the maximum size of the pixel grid in+ -- which sample locations /can/ vary that is supported for all sample+ -- counts in @sampleLocationSampleCounts@.+ maxSampleLocationGridSize :: Extent2D+ , -- | @sampleLocationCoordinateRange@[2] is the range of supported sample+ -- location coordinates.+ sampleLocationCoordinateRange :: (Float, Float)+ , -- | @sampleLocationSubPixelBits@ is the number of bits of subpixel precision+ -- for sample locations.+ sampleLocationSubPixelBits :: Word32+ , -- | @variableSampleLocations@ specifies whether the sample locations used by+ -- all pipelines that will be bound to a command buffer during a subpass+ -- /must/ match. If set to 'Graphics.Vulkan.Core10.BaseType.TRUE', the+ -- implementation supports variable sample locations in a subpass. If set+ -- to 'Graphics.Vulkan.Core10.BaseType.FALSE', then the sample locations+ -- /must/ stay constant in each subpass.+ variableSampleLocations :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceSampleLocationsPropertiesEXT++instance ToCStruct PhysicalDeviceSampleLocationsPropertiesEXT where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceSampleLocationsPropertiesEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr SampleCountFlags)) (sampleLocationSampleCounts)+ ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr Extent2D)) (maxSampleLocationGridSize) . ($ ())+ let pSampleLocationCoordinateRange' = lowerArrayPtr ((p `plusPtr` 28 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+ lift $ case (sampleLocationCoordinateRange) of+ (e0, e1) -> do+ poke (pSampleLocationCoordinateRange' :: Ptr CFloat) (CFloat (e0))+ poke (pSampleLocationCoordinateRange' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+ lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (sampleLocationSubPixelBits)+ lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (variableSampleLocations))+ lift $ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr SampleCountFlags)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr Extent2D)) (zero) . ($ ())+ let pSampleLocationCoordinateRange' = lowerArrayPtr ((p `plusPtr` 28 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+ lift $ case ((zero, zero)) of+ (e0, e1) -> do+ poke (pSampleLocationCoordinateRange' :: Ptr CFloat) (CFloat (e0))+ poke (pSampleLocationCoordinateRange' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))+ lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ f++instance FromCStruct PhysicalDeviceSampleLocationsPropertiesEXT where+ peekCStruct p = do+ sampleLocationSampleCounts <- peek @SampleCountFlags ((p `plusPtr` 16 :: Ptr SampleCountFlags))+ maxSampleLocationGridSize <- peekCStruct @Extent2D ((p `plusPtr` 20 :: Ptr Extent2D))+ let psampleLocationCoordinateRange = lowerArrayPtr @CFloat ((p `plusPtr` 28 :: Ptr (Data.Vector.Storable.Sized.Vector 2 CFloat)))+ sampleLocationCoordinateRange0 <- peek @CFloat ((psampleLocationCoordinateRange `advancePtrBytes` 0 :: Ptr CFloat))+ sampleLocationCoordinateRange1 <- peek @CFloat ((psampleLocationCoordinateRange `advancePtrBytes` 4 :: Ptr CFloat))+ sampleLocationSubPixelBits <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))+ variableSampleLocations <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))+ pure $ PhysicalDeviceSampleLocationsPropertiesEXT+ sampleLocationSampleCounts maxSampleLocationGridSize ((((\(CFloat a) -> a) sampleLocationCoordinateRange0), ((\(CFloat a) -> a) sampleLocationCoordinateRange1))) sampleLocationSubPixelBits (bool32ToBool variableSampleLocations)++instance Zero PhysicalDeviceSampleLocationsPropertiesEXT where+ zero = PhysicalDeviceSampleLocationsPropertiesEXT+ zero+ zero+ (zero, zero)+ zero+ zero+++-- | VkMultisamplePropertiesEXT - Structure returning information about+-- sample count specific additional multisampling capabilities+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent2D',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceMultisamplePropertiesEXT'+data MultisamplePropertiesEXT = MultisamplePropertiesEXT+ { -- | @maxSampleLocationGridSize@ is the maximum size of the pixel grid in+ -- which sample locations /can/ vary.+ maxSampleLocationGridSize :: Extent2D }+ deriving (Typeable)+deriving instance Show MultisamplePropertiesEXT++instance ToCStruct MultisamplePropertiesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p MultisamplePropertiesEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (maxSampleLocationGridSize) . ($ ())+ lift $ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (zero) . ($ ())+ lift $ f++instance FromCStruct MultisamplePropertiesEXT where+ peekCStruct p = do+ maxSampleLocationGridSize <- peekCStruct @Extent2D ((p `plusPtr` 16 :: Ptr Extent2D))+ pure $ MultisamplePropertiesEXT+ maxSampleLocationGridSize++instance Zero MultisamplePropertiesEXT where+ zero = MultisamplePropertiesEXT+ zero+++type EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION"+pattern EXT_SAMPLE_LOCATIONS_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1+++type EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations"++-- No documentation found for TopLevel "VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME"+pattern EXT_SAMPLE_LOCATIONS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_sample_locations.hs-boot view
@@ -0,0 +1,77 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_sample_locations ( AttachmentSampleLocationsEXT+ , MultisamplePropertiesEXT+ , PhysicalDeviceSampleLocationsPropertiesEXT+ , PipelineSampleLocationsStateCreateInfoEXT+ , RenderPassSampleLocationsBeginInfoEXT+ , SampleLocationEXT+ , SampleLocationsInfoEXT+ , SubpassSampleLocationsEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data AttachmentSampleLocationsEXT++instance ToCStruct AttachmentSampleLocationsEXT+instance Show AttachmentSampleLocationsEXT++instance FromCStruct AttachmentSampleLocationsEXT+++data MultisamplePropertiesEXT++instance ToCStruct MultisamplePropertiesEXT+instance Show MultisamplePropertiesEXT++instance FromCStruct MultisamplePropertiesEXT+++data PhysicalDeviceSampleLocationsPropertiesEXT++instance ToCStruct PhysicalDeviceSampleLocationsPropertiesEXT+instance Show PhysicalDeviceSampleLocationsPropertiesEXT++instance FromCStruct PhysicalDeviceSampleLocationsPropertiesEXT+++data PipelineSampleLocationsStateCreateInfoEXT++instance ToCStruct PipelineSampleLocationsStateCreateInfoEXT+instance Show PipelineSampleLocationsStateCreateInfoEXT++instance FromCStruct PipelineSampleLocationsStateCreateInfoEXT+++data RenderPassSampleLocationsBeginInfoEXT++instance ToCStruct RenderPassSampleLocationsBeginInfoEXT+instance Show RenderPassSampleLocationsBeginInfoEXT++instance FromCStruct RenderPassSampleLocationsBeginInfoEXT+++data SampleLocationEXT++instance ToCStruct SampleLocationEXT+instance Show SampleLocationEXT++instance FromCStruct SampleLocationEXT+++data SampleLocationsInfoEXT++instance ToCStruct SampleLocationsInfoEXT+instance Show SampleLocationsInfoEXT++instance FromCStruct SampleLocationsInfoEXT+++data SubpassSampleLocationsEXT++instance ToCStruct SubpassSampleLocationsEXT+instance Show SubpassSampleLocationsEXT++instance FromCStruct SubpassSampleLocationsEXT+
src/Graphics/Vulkan/Extensions/VK_EXT_sampler_filter_minmax.hs view
@@ -1,259 +1,76 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DuplicateRecordFields #-}+module Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT+ , pattern STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT+ , pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT+ , pattern SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT+ , pattern SAMPLER_REDUCTION_MODE_MIN_EXT+ , pattern SAMPLER_REDUCTION_MODE_MAX_EXT+ , SamplerReductionModeEXT+ , PhysicalDeviceSamplerFilterMinmaxPropertiesEXT+ , SamplerReductionModeCreateInfoEXT+ , EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION+ , pattern EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION+ , EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME+ , pattern EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax- ( VkSamplerReductionModeEXT(..)- , pattern VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT- , pattern VK_SAMPLER_REDUCTION_MODE_MIN_EXT- , pattern VK_SAMPLER_REDUCTION_MODE_MAX_EXT- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT- , pattern VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT- , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT- , pattern VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION- , pattern VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME- , VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT(..)- , VkSamplerReductionModeCreateInfoEXT(..)- ) where+import Data.String (IsString)+import Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax (PhysicalDeviceSamplerFilterMinmaxProperties)+import Graphics.Vulkan.Core12.Enums.SamplerReductionMode (SamplerReductionMode)+import Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax (SamplerReductionModeCreateInfo)+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlagBits(FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT))+import Graphics.Vulkan.Core12.Enums.SamplerReductionMode (SamplerReductionMode(SAMPLER_REDUCTION_MODE_MAX))+import Graphics.Vulkan.Core12.Enums.SamplerReductionMode (SamplerReductionMode(SAMPLER_REDUCTION_MODE_MIN))+import Graphics.Vulkan.Core12.Enums.SamplerReductionMode (SamplerReductionMode(SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES -import Data.Int- ( Int32- )-import Data.String- ( IsString- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- ) +-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO -import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkFormatFeatureFlagBits(..)- ) +-- No documentation found for TopLevel "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT"+pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT --- ** VkSamplerReductionModeEXT --- | VkSamplerReductionModeEXT - Specify reduction mode for texture filtering------ = See Also------ 'VkSamplerReductionModeCreateInfoEXT'-newtype VkSamplerReductionModeEXT = VkSamplerReductionModeEXT Int32- deriving (Eq, Ord, Storable)+-- No documentation found for TopLevel "VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT"+pattern SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE -instance Show VkSamplerReductionModeEXT where- showsPrec _ VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = showString "VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT"- showsPrec _ VK_SAMPLER_REDUCTION_MODE_MIN_EXT = showString "VK_SAMPLER_REDUCTION_MODE_MIN_EXT"- showsPrec _ VK_SAMPLER_REDUCTION_MODE_MAX_EXT = showString "VK_SAMPLER_REDUCTION_MODE_MAX_EXT"- showsPrec p (VkSamplerReductionModeEXT x) = showParen (p >= 11) (showString "VkSamplerReductionModeEXT " . showsPrec 11 x) -instance Read VkSamplerReductionModeEXT where- readPrec = parens ( choose [ ("VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT", pure VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT)- , ("VK_SAMPLER_REDUCTION_MODE_MIN_EXT", pure VK_SAMPLER_REDUCTION_MODE_MIN_EXT)- , ("VK_SAMPLER_REDUCTION_MODE_MAX_EXT", pure VK_SAMPLER_REDUCTION_MODE_MAX_EXT)- ] +++- prec 10 (do- expectP (Ident "VkSamplerReductionModeEXT")- v <- step readPrec- pure (VkSamplerReductionModeEXT v)- )- )+-- No documentation found for TopLevel "VK_SAMPLER_REDUCTION_MODE_MIN_EXT"+pattern SAMPLER_REDUCTION_MODE_MIN_EXT = SAMPLER_REDUCTION_MODE_MIN --- | @VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT@ specifies that texel--- values are combined by computing a weighted average of values in the--- footprint, using weights as specified in [the image operations--- chapter](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#textures-unnormalized-to-integer).-pattern VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT :: VkSamplerReductionModeEXT-pattern VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = VkSamplerReductionModeEXT 0 --- | @VK_SAMPLER_REDUCTION_MODE_MIN_EXT@ specifies that texel values are--- combined by taking the component-wise minimum of values in the footprint--- with non-zero weights.-pattern VK_SAMPLER_REDUCTION_MODE_MIN_EXT :: VkSamplerReductionModeEXT-pattern VK_SAMPLER_REDUCTION_MODE_MIN_EXT = VkSamplerReductionModeEXT 1+-- No documentation found for TopLevel "VK_SAMPLER_REDUCTION_MODE_MAX_EXT"+pattern SAMPLER_REDUCTION_MODE_MAX_EXT = SAMPLER_REDUCTION_MODE_MAX --- | @VK_SAMPLER_REDUCTION_MODE_MAX_EXT@ specifies that texel values are--- combined by taking the component-wise maximum of values in the footprint--- with non-zero weights.-pattern VK_SAMPLER_REDUCTION_MODE_MAX_EXT :: VkSamplerReductionModeEXT-pattern VK_SAMPLER_REDUCTION_MODE_MAX_EXT = VkSamplerReductionModeEXT 2--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = VkStructureType 1000130000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT"-pattern VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = VkStructureType 1000130001--- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT"-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = VkFormatFeatureFlagBits 0x00010000++-- No documentation found for TopLevel "VkSamplerReductionModeEXT"+type SamplerReductionModeEXT = SamplerReductionMode+++-- No documentation found for TopLevel "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT"+type PhysicalDeviceSamplerFilterMinmaxPropertiesEXT = PhysicalDeviceSamplerFilterMinmaxProperties+++-- No documentation found for TopLevel "VkSamplerReductionModeCreateInfoEXT"+type SamplerReductionModeCreateInfoEXT = SamplerReductionModeCreateInfo+++type EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2+ -- No documentation found for TopLevel "VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION"-pattern VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION :: Integral a => a-pattern VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME"-pattern VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax"--- | VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT - Structure describing--- sampler filter minmax limits that can be supported by an implementation------ = Members------ The members of the @VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT@--- structure describe the following implementation-dependent limits:------ = Description------ - @filterMinmaxSingleComponentFormats@ is a boolean value indicating--- whether a minimum set of required formats support min\/max--- filtering.------ - @filterMinmaxImageComponentMapping@ is a boolean value indicating--- whether the implementation supports non-identity component mapping--- of the image when doing min\/max filtering.------ If the @VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT@ structure is--- included in the @pNext@ chain of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2',--- it is filled with the implementation-dependent limits.------ If @filterMinmaxSingleComponentFormats@ is @VK_TRUE@, the following--- formats /must/ support the--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT@ feature with--- @VK_IMAGE_TILING_OPTIMAL@, if they support--- @VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT@.------ - @VK_FORMAT_R8_UNORM@------ - @VK_FORMAT_R8_SNORM@------ - @VK_FORMAT_R16_UNORM@------ - @VK_FORMAT_R16_SNORM@------ - @VK_FORMAT_R16_SFLOAT@------ - @VK_FORMAT_R32_SFLOAT@------ - @VK_FORMAT_D16_UNORM@------ - @VK_FORMAT_X8_D24_UNORM_PACK32@------ - @VK_FORMAT_D32_SFLOAT@------ - @VK_FORMAT_D16_UNORM_S8_UINT@------ - @VK_FORMAT_D24_UNORM_S8_UINT@------ - @VK_FORMAT_D32_SFLOAT_S8_UINT@------ If the format is a depth\/stencil format, this bit only specifies that--- the depth aspect (not the stencil aspect) of an image of this format--- supports min\/max filtering, and that min\/max filtering of the depth--- aspect is supported when depth compare is disabled in the sampler.------ If @filterMinmaxImageComponentMapping@ is @VK_FALSE@ the component--- mapping of the image view used with min\/max filtering /must/ have been--- created with the @r@ component set to @VK_COMPONENT_SWIZZLE_IDENTITY@.--- Only the @r@ component of the sampled image value is defined and the--- other component values are undefined. If--- @filterMinmaxImageComponentMapping@ is @VK_TRUE@ this restriction does--- not apply and image component mapping works as normal.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT@------ = See Also------ @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT- { -- No documentation found for Nested "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT" "filterMinmaxSingleComponentFormats"- vkFilterMinmaxSingleComponentFormats :: VkBool32- , -- No documentation found for Nested "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT" "filterMinmaxImageComponentMapping"- vkFilterMinmaxImageComponentMapping :: VkBool32- }- deriving (Eq, Show)+pattern EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 -instance Storable VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT))- *> poke (ptr `plusPtr` 16) (vkFilterMinmaxSingleComponentFormats (poked :: VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT))- *> poke (ptr `plusPtr` 20) (vkFilterMinmaxImageComponentMapping (poked :: VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT))--- | VkSamplerReductionModeCreateInfoEXT - Structure specifying sampler--- reduction mode------ = Description------ If this structure is not present, @reductionMode@ is considered to be--- @VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT@------ - @reductionMode@ /must/ be a valid 'VkSamplerReductionModeEXT' value------ = See Also------ 'VkSamplerReductionModeEXT',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @reductionMode@ is an enum of type 'VkSamplerReductionModeEXT' that- -- controls how texture filtering combines texel values.- vkReductionMode :: VkSamplerReductionModeEXT- }- deriving (Eq, Show) -instance Storable VkSamplerReductionModeCreateInfoEXT where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkSamplerReductionModeCreateInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkSamplerReductionModeCreateInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkSamplerReductionModeCreateInfoEXT))- *> poke (ptr `plusPtr` 16) (vkReductionMode (poked :: VkSamplerReductionModeCreateInfoEXT))+type EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax"++-- No documentation found for TopLevel "VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME"+pattern EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_scalar_block_layout.hs view
@@ -0,0 +1,33 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_scalar_block_layout ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT+ , PhysicalDeviceScalarBlockLayoutFeaturesEXT+ , EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION+ , pattern EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION+ , EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME+ , pattern EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME+ ) where++import Data.String (IsString)+import Graphics.Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout (PhysicalDeviceScalarBlockLayoutFeatures)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES+++-- No documentation found for TopLevel "VkPhysicalDeviceScalarBlockLayoutFeaturesEXT"+type PhysicalDeviceScalarBlockLayoutFeaturesEXT = PhysicalDeviceScalarBlockLayoutFeatures+++type EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION"+pattern EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1+++type EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout"++-- No documentation found for TopLevel "VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME"+pattern EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_separate_stencil_usage.hs view
@@ -0,0 +1,33 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_separate_stencil_usage ( pattern STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT+ , ImageStencilUsageCreateInfoEXT+ , EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION+ , pattern EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION+ , EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME+ , pattern EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME+ ) where++import Data.String (IsString)+import Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage (ImageStencilUsageCreateInfo)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT"+pattern STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO+++-- No documentation found for TopLevel "VkImageStencilUsageCreateInfoEXT"+type ImageStencilUsageCreateInfoEXT = ImageStencilUsageCreateInfo+++type EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION"+pattern EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1+++type EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage"++-- No documentation found for TopLevel "VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME"+pattern EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs view
@@ -0,0 +1,107 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation ( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(..)+ , EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION+ , pattern EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION+ , EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME+ , pattern EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT))+-- | VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT - Structure+-- describing the shader demote to helper invocations features that can be+-- supported by an implementation+--+-- = Members+--+-- The members of the+-- 'PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT' structure+-- describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT'+-- structure is included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT' /can/ also be+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to enable the feature.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT+ { -- | @shaderDemoteToHelperInvocation@ indicates whether the implementation+ -- supports the SPIR-V @DemoteToHelperInvocationEXT@ capability.+ shaderDemoteToHelperInvocation :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT++instance ToCStruct PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderDemoteToHelperInvocation))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT where+ peekCStruct p = do+ shaderDemoteToHelperInvocation <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT+ (bool32ToBool shaderDemoteToHelperInvocation)++instance Storable PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT where+ zero = PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT+ zero+++type EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION"+pattern EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1+++type EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation"++-- No documentation found for TopLevel "VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME"+pattern EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation (PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT++instance ToCStruct PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT+instance Show PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT++instance FromCStruct PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT+
src/Graphics/Vulkan/Extensions/VK_EXT_shader_stencil_export.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_EXT_shader_stencil_export- ( pattern VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION- , pattern VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_EXT_shader_stencil_export ( EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION+ , pattern EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION+ , EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME+ , pattern EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION"+pattern EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 +type EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" --- No documentation found for TopLevel "VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION"-pattern VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION :: Integral a => a-pattern VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME"-pattern VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export"+pattern EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export"+
src/Graphics/Vulkan/Extensions/VK_EXT_shader_subgroup_ballot.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_EXT_shader_subgroup_ballot- ( pattern VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION- , pattern VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_EXT_shader_subgroup_ballot ( EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION+ , pattern EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION+ , EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME+ , pattern EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION"+pattern EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 +type EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" --- No documentation found for TopLevel "VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION"-pattern VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION :: Integral a => a-pattern VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME"-pattern VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot"+pattern EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot"+
src/Graphics/Vulkan/Extensions/VK_EXT_shader_subgroup_vote.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_EXT_shader_subgroup_vote- ( pattern VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION- , pattern VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_EXT_shader_subgroup_vote ( EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION+ , pattern EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION+ , EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME+ , pattern EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION"+pattern EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 +type EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" --- No documentation found for TopLevel "VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION"-pattern VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION :: Integral a => a-pattern VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME"-pattern VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote"+pattern EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote"+
src/Graphics/Vulkan/Extensions/VK_EXT_shader_viewport_index_layer.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_EXT_shader_viewport_index_layer- ( pattern VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION- , pattern VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_EXT_shader_viewport_index_layer ( EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION+ , pattern EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION+ , EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME+ , pattern EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION"+pattern EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 +type EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" --- No documentation found for TopLevel "VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION"-pattern VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION :: Integral a => a-pattern VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME"-pattern VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer"+pattern EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs view
@@ -0,0 +1,300 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control ( PhysicalDeviceSubgroupSizeControlFeaturesEXT(..)+ , PhysicalDeviceSubgroupSizeControlPropertiesEXT(..)+ , PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT(..)+ , EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION+ , pattern EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION+ , EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME+ , pattern EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT))+-- | VkPhysicalDeviceSubgroupSizeControlFeaturesEXT - Structure describing+-- the subgroup size control features that can be supported by an+-- implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceSubgroupSizeControlFeaturesEXT'+-- structure describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceSubgroupSizeControlFeaturesEXT' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceSubgroupSizeControlFeaturesEXT' /can/ also be included in+-- the @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable the feature.+--+-- Note+--+-- The 'PhysicalDeviceSubgroupSizeControlFeaturesEXT' structure was added+-- in version 2 of the+-- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_EXT_subgroup_size_control@+-- extension. Version 1 implementations of this extension will not fill out+-- the features structure but applications may assume that both+-- @subgroupSizeControl@ and @computeFullSubgroups@ are supported if the+-- extension is supported. (See also the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-requirements Feature Requirements>+-- section.) Applications are advised to add a+-- 'PhysicalDeviceSubgroupSizeControlFeaturesEXT' structure to the @pNext@+-- chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to enable the+-- features regardless of the version of the extension supported by the+-- implementation. If the implementation only supports version 1, it will+-- safely ignore the 'PhysicalDeviceSubgroupSizeControlFeaturesEXT'+-- structure.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceSubgroupSizeControlFeaturesEXT = PhysicalDeviceSubgroupSizeControlFeaturesEXT+ { -- | @subgroupSizeControl@ indicates whether the implementation supports+ -- controlling shader subgroup sizes via the+ -- 'Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT'+ -- flag and the 'PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'+ -- structure.+ subgroupSizeControl :: Bool+ , -- | @computeFullSubgroups@ indicates whether the implementation supports+ -- requiring full subgroups in compute shaders via the+ -- 'Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT'+ -- flag.+ computeFullSubgroups :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceSubgroupSizeControlFeaturesEXT++instance ToCStruct PhysicalDeviceSubgroupSizeControlFeaturesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceSubgroupSizeControlFeaturesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (subgroupSizeControl))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (computeFullSubgroups))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceSubgroupSizeControlFeaturesEXT where+ peekCStruct p = do+ subgroupSizeControl <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ computeFullSubgroups <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ pure $ PhysicalDeviceSubgroupSizeControlFeaturesEXT+ (bool32ToBool subgroupSizeControl) (bool32ToBool computeFullSubgroups)++instance Storable PhysicalDeviceSubgroupSizeControlFeaturesEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceSubgroupSizeControlFeaturesEXT where+ zero = PhysicalDeviceSubgroupSizeControlFeaturesEXT+ zero+ zero+++-- | VkPhysicalDeviceSubgroupSizeControlPropertiesEXT - Structure describing+-- the control subgroup size properties of an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceSubgroupSizeControlPropertiesEXT'+-- structure describe the following properties:+--+-- = Description+--+-- If the 'PhysicalDeviceSubgroupSizeControlPropertiesEXT' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- If+-- 'Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties'::@supportedOperations@+-- includes+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroup-quad >,+-- @minSubgroupSize@ /must/ be greater than or equal to 4.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceSubgroupSizeControlPropertiesEXT = PhysicalDeviceSubgroupSizeControlPropertiesEXT+ { -- | @minSubgroupSize@ is the minimum subgroup size supported by this device.+ -- @minSubgroupSize@ is at least one if any of the physical device’s queues+ -- support 'Graphics.Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT'+ -- or 'Graphics.Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'.+ -- @minSubgroupSize@ is a power-of-two. @minSubgroupSize@ is less than or+ -- equal to @maxSubgroupSize@. @minSubgroupSize@ is less than or equal to+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subgroup-size subgroupSize>.+ minSubgroupSize :: Word32+ , -- | @maxSubgroupSize@ is the maximum subgroup size supported by this device.+ -- @maxSubgroupSize@ is at least one if any of the physical device’s queues+ -- support 'Graphics.Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT'+ -- or 'Graphics.Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'.+ -- @maxSubgroupSize@ is a power-of-two. @maxSubgroupSize@ is greater than+ -- or equal to @minSubgroupSize@. @maxSubgroupSize@ is greater than or+ -- equal to+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subgroup-size subgroupSize>.+ maxSubgroupSize :: Word32+ , -- | @maxComputeWorkgroupSubgroups@ is the maximum number of subgroups+ -- supported by the implementation within a workgroup.+ maxComputeWorkgroupSubgroups :: Word32+ , -- | @requiredSubgroupSizeStages@ is a bitfield of what shader stages support+ -- having a required subgroup size specified.+ requiredSubgroupSizeStages :: ShaderStageFlags+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceSubgroupSizeControlPropertiesEXT++instance ToCStruct PhysicalDeviceSubgroupSizeControlPropertiesEXT where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceSubgroupSizeControlPropertiesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (minSubgroupSize)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (maxSubgroupSize)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (maxComputeWorkgroupSubgroups)+ poke ((p `plusPtr` 28 :: Ptr ShaderStageFlags)) (requiredSubgroupSizeStages)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 28 :: Ptr ShaderStageFlags)) (zero)+ f++instance FromCStruct PhysicalDeviceSubgroupSizeControlPropertiesEXT where+ peekCStruct p = do+ minSubgroupSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ maxSubgroupSize <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ maxComputeWorkgroupSubgroups <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ requiredSubgroupSizeStages <- peek @ShaderStageFlags ((p `plusPtr` 28 :: Ptr ShaderStageFlags))+ pure $ PhysicalDeviceSubgroupSizeControlPropertiesEXT+ minSubgroupSize maxSubgroupSize maxComputeWorkgroupSubgroups requiredSubgroupSizeStages++instance Storable PhysicalDeviceSubgroupSizeControlPropertiesEXT where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceSubgroupSizeControlPropertiesEXT where+ zero = PhysicalDeviceSubgroupSizeControlPropertiesEXT+ zero+ zero+ zero+ zero+++-- | VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT - Structure+-- specifying the required subgroup size of a newly created pipeline shader+-- stage+--+-- == Valid Usage+--+-- = Description+--+-- If a 'PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo', it+-- specifies that the pipeline shader stage being compiled has a required+-- subgroup size.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT+ { -- | @requiredSubgroupSize@ /must/ be less than or equal to+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-max-subgroup-size maxSubgroupSize>.+ requiredSubgroupSize :: Word32 }+ deriving (Typeable)+deriving instance Show PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT++instance ToCStruct PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (requiredSubgroupSize)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ f++instance FromCStruct PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT where+ peekCStruct p = do+ requiredSubgroupSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pure $ PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT+ requiredSubgroupSize++instance Storable PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT where+ zero = PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT+ zero+++type EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION"+pattern EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2+++type EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control"++-- No documentation found for TopLevel "VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME"+pattern EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs-boot view
@@ -0,0 +1,32 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control ( PhysicalDeviceSubgroupSizeControlFeaturesEXT+ , PhysicalDeviceSubgroupSizeControlPropertiesEXT+ , PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceSubgroupSizeControlFeaturesEXT++instance ToCStruct PhysicalDeviceSubgroupSizeControlFeaturesEXT+instance Show PhysicalDeviceSubgroupSizeControlFeaturesEXT++instance FromCStruct PhysicalDeviceSubgroupSizeControlFeaturesEXT+++data PhysicalDeviceSubgroupSizeControlPropertiesEXT++instance ToCStruct PhysicalDeviceSubgroupSizeControlPropertiesEXT+instance Show PhysicalDeviceSubgroupSizeControlPropertiesEXT++instance FromCStruct PhysicalDeviceSubgroupSizeControlPropertiesEXT+++data PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT++instance ToCStruct PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT+instance Show PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT++instance FromCStruct PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT+
src/Graphics/Vulkan/Extensions/VK_EXT_swapchain_colorspace.hs view
@@ -1,82 +1,275 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}+module Graphics.Vulkan.Extensions.VK_EXT_swapchain_colorspace ( pattern COLOR_SPACE_DCI_P3_LINEAR_EXT+ , ColorSpaceKHR( COLOR_SPACE_SRGB_NONLINEAR_KHR+ , COLOR_SPACE_DISPLAY_NATIVE_AMD+ , COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT+ , COLOR_SPACE_PASS_THROUGH_EXT+ , COLOR_SPACE_ADOBERGB_NONLINEAR_EXT+ , COLOR_SPACE_ADOBERGB_LINEAR_EXT+ , COLOR_SPACE_HDR10_HLG_EXT+ , COLOR_SPACE_DOLBYVISION_EXT+ , COLOR_SPACE_HDR10_ST2084_EXT+ , COLOR_SPACE_BT2020_LINEAR_EXT+ , COLOR_SPACE_BT709_NONLINEAR_EXT+ , COLOR_SPACE_BT709_LINEAR_EXT+ , COLOR_SPACE_DCI_P3_NONLINEAR_EXT+ , COLOR_SPACE_DISPLAY_P3_LINEAR_EXT+ , COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT+ , COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT+ , ..+ )+ , EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION+ , pattern EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION+ , EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME+ , pattern EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_EXT_swapchain_colorspace- ( pattern VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT- , pattern VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT- , pattern VK_COLOR_SPACE_DCI_P3_LINEAR_EXT- , pattern VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT- , pattern VK_COLOR_SPACE_BT709_LINEAR_EXT- , pattern VK_COLOR_SPACE_BT709_NONLINEAR_EXT- , pattern VK_COLOR_SPACE_BT2020_LINEAR_EXT- , pattern VK_COLOR_SPACE_HDR10_ST2084_EXT- , pattern VK_COLOR_SPACE_DOLBYVISION_EXT- , pattern VK_COLOR_SPACE_HDR10_HLG_EXT- , pattern VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT- , pattern VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT- , pattern VK_COLOR_SPACE_PASS_THROUGH_EXT- , pattern VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT- , pattern VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION- , pattern VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME- ) where+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.String (IsString)+import Foreign.Storable (Storable)+import Data.Int (Int32)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Graphics.Vulkan.Zero (Zero)+-- No documentation found for TopLevel "VK_COLOR_SPACE_DCI_P3_LINEAR_EXT"+pattern COLOR_SPACE_DCI_P3_LINEAR_EXT = COLOR_SPACE_DISPLAY_P3_LINEAR_EXT -import Data.String- ( IsString- ) +-- | VkColorSpaceKHR - supported color space of the presentation engine+--+-- = Description+--+-- Note+--+-- In the initial release of the @VK_KHR_surface@ and+-- @https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.2-extensions\/html\/vkspec.html#VK_KHR_swapchain@+-- extensions, the token @VK_COLORSPACE_SRGB_NONLINEAR_KHR@ was used.+-- Starting in the 2016-05-13 updates to the extension branches, matching+-- release 1.0.13 of the core API specification,+-- 'COLOR_SPACE_SRGB_NONLINEAR_KHR' is used instead for consistency with+-- Vulkan naming rules. The older enum is still available for backwards+-- compatibility.+--+-- Note+--+-- In older versions of this extension 'COLOR_SPACE_DISPLAY_P3_LINEAR_EXT'+-- was misnamed 'COLOR_SPACE_DCI_P3_LINEAR_EXT'. This has been updated to+-- indicate that it uses RGB color encoding, not XYZ. The old name is+-- deprecated but is maintained for backwards compatibility.+--+-- The color components of non-linear color space swap chain images /must/+-- have had the appropriate transfer function applied. The color space+-- selected for the swap chain image will not affect the processing of data+-- written into the image by the implementation. Vulkan requires that all+-- implementations support the sRGB transfer function by use of an SRGB+-- pixel format. Other transfer functions, such as SMPTE 170M or SMPTE2084,+-- /can/ be performed by the application shader. This extension defines+-- enums for 'ColorSpaceKHR' that correspond to the following color spaces:+--+-- +--------------+----------+----------+----------+-------------+------------++-- | Name | Red | Green | Blue | White-point | Transfer |+-- | | Primary | Primary | Primary | | function |+-- +==============+==========+==========+==========+=============+============++-- | DCI-P3 | 1.000, | 0.000, | 0.000, | 0.3333, | DCI P3 |+-- | | 0.000 | 1.000 | 0.000 | 0.3333 | |+-- +--------------+----------+----------+----------+-------------+------------++-- | Display-P3 | 0.680, | 0.265, | 0.150, | 0.3127, | Display-P3 |+-- | | 0.320 | 0.690 | 0.060 | 0.3290 | |+-- | | | | | (D65) | |+-- +--------------+----------+----------+----------+-------------+------------++-- | BT709 | 0.640, | 0.300, | 0.150, | 0.3127, | ITU (SMPTE |+-- | | 0.330 | 0.600 | 0.060 | 0.3290 | 170M) |+-- | | | | | (D65) | |+-- +--------------+----------+----------+----------+-------------+------------++-- | sRGB | 0.640, | 0.300, | 0.150, | 0.3127, | sRGB |+-- | | 0.330 | 0.600 | 0.060 | 0.3290 | |+-- | | | | | (D65) | |+-- +--------------+----------+----------+----------+-------------+------------++-- | extended | 0.640, | 0.300, | 0.150, | 0.3127, | extended |+-- | sRGB | 0.330 | 0.600 | 0.060 | 0.3290 | sRGB |+-- | | | | | (D65) | |+-- +--------------+----------+----------+----------+-------------+------------++-- | HDR10_ST2084 | 0.708, | 0.170, | 0.131, | 0.3127, | ST2084 PQ |+-- | | 0.292 | 0.797 | 0.046 | 0.3290 | |+-- | | | | | (D65) | |+-- +--------------+----------+----------+----------+-------------+------------++-- | DOLBYVISION | 0.708, | 0.170, | 0.131, | 0.3127, | ST2084 PQ |+-- | | 0.292 | 0.797 | 0.046 | 0.3290 | |+-- | | | | | (D65) | |+-- +--------------+----------+----------+----------+-------------+------------++-- | HDR10_HLG | 0.708, | 0.170, | 0.131, | 0.3127, | HLG |+-- | | 0.292 | 0.797 | 0.046 | 0.3290 | |+-- | | | | | (D65) | |+-- +--------------+----------+----------+----------+-------------+------------++-- | AdobeRGB | 0.640, | 0.210, | 0.150, | 0.3127, | AdobeRGB |+-- | | 0.330 | 0.710 | 0.060 | 0.3290 | |+-- | | | | | (D65) | |+-- +--------------+----------+----------+----------+-------------+------------++--+-- Color Spaces and Attributes+--+-- The transfer functions are described in the “Transfer Functions” chapter+-- of the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#data-format Khronos Data Format Specification>.+--+-- Except Display-P3 OETF, which is:+--+-- \[\begin{aligned}+-- E & =+-- \begin{cases}+-- 1.055 \times L^{1 \over 2.4} - 0.055 & \text{for}\ 0.0030186 \leq L \leq 1 \\+-- 12.92 \times L & \text{for}\ 0 \leq L < 0.0030186+-- \end{cases}+-- \end{aligned}\]+--+-- where L is the linear value of a color channel and E is the encoded+-- value (as stored in the image in memory).+--+-- Note+--+-- For most uses, the sRGB OETF is equivalent.+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceFormatKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'+newtype ColorSpaceKHR = ColorSpaceKHR Int32+ deriving newtype (Eq, Ord, Storable, Zero) -import Graphics.Vulkan.Extensions.VK_KHR_surface- ( VkColorSpaceKHR(..)- )+-- | 'COLOR_SPACE_SRGB_NONLINEAR_KHR' specifies support for the sRGB color+-- space.+pattern COLOR_SPACE_SRGB_NONLINEAR_KHR = ColorSpaceKHR 0+-- | 'COLOR_SPACE_DISPLAY_NATIVE_AMD' specifies support for the display’s+-- native color space. This matches the color space expectations of AMD’s+-- FreeSync2 standard, for displays supporting it.+pattern COLOR_SPACE_DISPLAY_NATIVE_AMD = ColorSpaceKHR 1000213000+-- | 'COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT' specifies support for the+-- extended sRGB color space to be displayed using an sRGB EOTF.+pattern COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = ColorSpaceKHR 1000104014+-- | 'COLOR_SPACE_PASS_THROUGH_EXT' specifies that color components are used+-- “as is”. This is intended to allow applications to supply data for color+-- spaces not described here.+pattern COLOR_SPACE_PASS_THROUGH_EXT = ColorSpaceKHR 1000104013+-- | 'COLOR_SPACE_ADOBERGB_NONLINEAR_EXT' specifies support for the AdobeRGB+-- color space to be displayed using the Gamma 2.2 EOTF.+pattern COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = ColorSpaceKHR 1000104012+-- | 'COLOR_SPACE_ADOBERGB_LINEAR_EXT' specifies support for the AdobeRGB+-- color space to be displayed using a linear EOTF.+pattern COLOR_SPACE_ADOBERGB_LINEAR_EXT = ColorSpaceKHR 1000104011+-- | 'COLOR_SPACE_HDR10_HLG_EXT' specifies support for the HDR10 (BT2020+-- color space) to be displayed using the Hybrid Log Gamma (HLG) EOTF.+pattern COLOR_SPACE_HDR10_HLG_EXT = ColorSpaceKHR 1000104010+-- | 'COLOR_SPACE_DOLBYVISION_EXT' specifies support for the Dolby Vision+-- (BT2020 color space), proprietary encoding, to be displayed using the+-- SMPTE ST2084 EOTF.+pattern COLOR_SPACE_DOLBYVISION_EXT = ColorSpaceKHR 1000104009+-- | 'COLOR_SPACE_HDR10_ST2084_EXT' specifies support for the HDR10 (BT2020+-- color) space to be displayed using the SMPTE ST2084 Perceptual Quantizer+-- (PQ) EOTF.+pattern COLOR_SPACE_HDR10_ST2084_EXT = ColorSpaceKHR 1000104008+-- | 'COLOR_SPACE_BT2020_LINEAR_EXT' specifies support for the BT2020 color+-- space to be displayed using a linear EOTF.+pattern COLOR_SPACE_BT2020_LINEAR_EXT = ColorSpaceKHR 1000104007+-- | 'COLOR_SPACE_BT709_NONLINEAR_EXT' specifies support for the BT709 color+-- space to be displayed using the SMPTE 170M EOTF.+pattern COLOR_SPACE_BT709_NONLINEAR_EXT = ColorSpaceKHR 1000104006+-- | 'COLOR_SPACE_BT709_LINEAR_EXT' specifies support for the BT709 color+-- space to be displayed using a linear EOTF.+pattern COLOR_SPACE_BT709_LINEAR_EXT = ColorSpaceKHR 1000104005+-- | 'COLOR_SPACE_DCI_P3_NONLINEAR_EXT' specifies support for the DCI-P3+-- color space to be displayed using the DCI-P3 EOTF. Note that values in+-- such an image are interpreted as XYZ encoded color data by the+-- presentation engine.+pattern COLOR_SPACE_DCI_P3_NONLINEAR_EXT = ColorSpaceKHR 1000104004+-- | 'COLOR_SPACE_DISPLAY_P3_LINEAR_EXT' specifies support for the Display-P3+-- color space to be displayed using a linear EOTF.+pattern COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = ColorSpaceKHR 1000104003+-- | 'COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT' specifies support for the+-- extended sRGB color space to be displayed using a linear EOTF.+pattern COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = ColorSpaceKHR 1000104002+-- | 'COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT' specifies support for the+-- Display-P3 color space to be displayed using an sRGB-like EOTF (defined+-- below).+pattern COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = ColorSpaceKHR 1000104001+{-# complete COLOR_SPACE_SRGB_NONLINEAR_KHR,+ COLOR_SPACE_DISPLAY_NATIVE_AMD,+ COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT,+ COLOR_SPACE_PASS_THROUGH_EXT,+ COLOR_SPACE_ADOBERGB_NONLINEAR_EXT,+ COLOR_SPACE_ADOBERGB_LINEAR_EXT,+ COLOR_SPACE_HDR10_HLG_EXT,+ COLOR_SPACE_DOLBYVISION_EXT,+ COLOR_SPACE_HDR10_ST2084_EXT,+ COLOR_SPACE_BT2020_LINEAR_EXT,+ COLOR_SPACE_BT709_NONLINEAR_EXT,+ COLOR_SPACE_BT709_LINEAR_EXT,+ COLOR_SPACE_DCI_P3_NONLINEAR_EXT,+ COLOR_SPACE_DISPLAY_P3_LINEAR_EXT,+ COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT,+ COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT :: ColorSpaceKHR #-} +instance Show ColorSpaceKHR where+ showsPrec p = \case+ COLOR_SPACE_SRGB_NONLINEAR_KHR -> showString "COLOR_SPACE_SRGB_NONLINEAR_KHR"+ COLOR_SPACE_DISPLAY_NATIVE_AMD -> showString "COLOR_SPACE_DISPLAY_NATIVE_AMD"+ COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT -> showString "COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT"+ COLOR_SPACE_PASS_THROUGH_EXT -> showString "COLOR_SPACE_PASS_THROUGH_EXT"+ COLOR_SPACE_ADOBERGB_NONLINEAR_EXT -> showString "COLOR_SPACE_ADOBERGB_NONLINEAR_EXT"+ COLOR_SPACE_ADOBERGB_LINEAR_EXT -> showString "COLOR_SPACE_ADOBERGB_LINEAR_EXT"+ COLOR_SPACE_HDR10_HLG_EXT -> showString "COLOR_SPACE_HDR10_HLG_EXT"+ COLOR_SPACE_DOLBYVISION_EXT -> showString "COLOR_SPACE_DOLBYVISION_EXT"+ COLOR_SPACE_HDR10_ST2084_EXT -> showString "COLOR_SPACE_HDR10_ST2084_EXT"+ COLOR_SPACE_BT2020_LINEAR_EXT -> showString "COLOR_SPACE_BT2020_LINEAR_EXT"+ COLOR_SPACE_BT709_NONLINEAR_EXT -> showString "COLOR_SPACE_BT709_NONLINEAR_EXT"+ COLOR_SPACE_BT709_LINEAR_EXT -> showString "COLOR_SPACE_BT709_LINEAR_EXT"+ COLOR_SPACE_DCI_P3_NONLINEAR_EXT -> showString "COLOR_SPACE_DCI_P3_NONLINEAR_EXT"+ COLOR_SPACE_DISPLAY_P3_LINEAR_EXT -> showString "COLOR_SPACE_DISPLAY_P3_LINEAR_EXT"+ COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT -> showString "COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT"+ COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT -> showString "COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT"+ ColorSpaceKHR x -> showParen (p >= 11) (showString "ColorSpaceKHR " . showsPrec 11 x) --- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT"-pattern VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT :: VkColorSpaceKHR-pattern VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = VkColorSpaceKHR 1000104001--- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT"-pattern VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT :: VkColorSpaceKHR-pattern VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = VkColorSpaceKHR 1000104002--- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_DCI_P3_LINEAR_EXT"-pattern VK_COLOR_SPACE_DCI_P3_LINEAR_EXT :: VkColorSpaceKHR-pattern VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = VkColorSpaceKHR 1000104003--- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT"-pattern VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT :: VkColorSpaceKHR-pattern VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = VkColorSpaceKHR 1000104004--- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_BT709_LINEAR_EXT"-pattern VK_COLOR_SPACE_BT709_LINEAR_EXT :: VkColorSpaceKHR-pattern VK_COLOR_SPACE_BT709_LINEAR_EXT = VkColorSpaceKHR 1000104005--- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_BT709_NONLINEAR_EXT"-pattern VK_COLOR_SPACE_BT709_NONLINEAR_EXT :: VkColorSpaceKHR-pattern VK_COLOR_SPACE_BT709_NONLINEAR_EXT = VkColorSpaceKHR 1000104006--- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_BT2020_LINEAR_EXT"-pattern VK_COLOR_SPACE_BT2020_LINEAR_EXT :: VkColorSpaceKHR-pattern VK_COLOR_SPACE_BT2020_LINEAR_EXT = VkColorSpaceKHR 1000104007--- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_HDR10_ST2084_EXT"-pattern VK_COLOR_SPACE_HDR10_ST2084_EXT :: VkColorSpaceKHR-pattern VK_COLOR_SPACE_HDR10_ST2084_EXT = VkColorSpaceKHR 1000104008--- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_DOLBYVISION_EXT"-pattern VK_COLOR_SPACE_DOLBYVISION_EXT :: VkColorSpaceKHR-pattern VK_COLOR_SPACE_DOLBYVISION_EXT = VkColorSpaceKHR 1000104009--- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_HDR10_HLG_EXT"-pattern VK_COLOR_SPACE_HDR10_HLG_EXT :: VkColorSpaceKHR-pattern VK_COLOR_SPACE_HDR10_HLG_EXT = VkColorSpaceKHR 1000104010--- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT"-pattern VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT :: VkColorSpaceKHR-pattern VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = VkColorSpaceKHR 1000104011--- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT"-pattern VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT :: VkColorSpaceKHR-pattern VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = VkColorSpaceKHR 1000104012--- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_PASS_THROUGH_EXT"-pattern VK_COLOR_SPACE_PASS_THROUGH_EXT :: VkColorSpaceKHR-pattern VK_COLOR_SPACE_PASS_THROUGH_EXT = VkColorSpaceKHR 1000104013--- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT"-pattern VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT :: VkColorSpaceKHR-pattern VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = VkColorSpaceKHR 1000104014+instance Read ColorSpaceKHR where+ readPrec = parens (choose [("COLOR_SPACE_SRGB_NONLINEAR_KHR", pure COLOR_SPACE_SRGB_NONLINEAR_KHR)+ , ("COLOR_SPACE_DISPLAY_NATIVE_AMD", pure COLOR_SPACE_DISPLAY_NATIVE_AMD)+ , ("COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT", pure COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT)+ , ("COLOR_SPACE_PASS_THROUGH_EXT", pure COLOR_SPACE_PASS_THROUGH_EXT)+ , ("COLOR_SPACE_ADOBERGB_NONLINEAR_EXT", pure COLOR_SPACE_ADOBERGB_NONLINEAR_EXT)+ , ("COLOR_SPACE_ADOBERGB_LINEAR_EXT", pure COLOR_SPACE_ADOBERGB_LINEAR_EXT)+ , ("COLOR_SPACE_HDR10_HLG_EXT", pure COLOR_SPACE_HDR10_HLG_EXT)+ , ("COLOR_SPACE_DOLBYVISION_EXT", pure COLOR_SPACE_DOLBYVISION_EXT)+ , ("COLOR_SPACE_HDR10_ST2084_EXT", pure COLOR_SPACE_HDR10_ST2084_EXT)+ , ("COLOR_SPACE_BT2020_LINEAR_EXT", pure COLOR_SPACE_BT2020_LINEAR_EXT)+ , ("COLOR_SPACE_BT709_NONLINEAR_EXT", pure COLOR_SPACE_BT709_NONLINEAR_EXT)+ , ("COLOR_SPACE_BT709_LINEAR_EXT", pure COLOR_SPACE_BT709_LINEAR_EXT)+ , ("COLOR_SPACE_DCI_P3_NONLINEAR_EXT", pure COLOR_SPACE_DCI_P3_NONLINEAR_EXT)+ , ("COLOR_SPACE_DISPLAY_P3_LINEAR_EXT", pure COLOR_SPACE_DISPLAY_P3_LINEAR_EXT)+ , ("COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT", pure COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT)+ , ("COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT", pure COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT)]+ ++++ prec 10 (do+ expectP (Ident "ColorSpaceKHR")+ v <- step readPrec+ pure (ColorSpaceKHR v)))+++type EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4+ -- No documentation found for TopLevel "VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION"-pattern VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION :: Integral a => a-pattern VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 3+pattern EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4+++type EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace"+ -- No documentation found for TopLevel "VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME"-pattern VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace"+pattern EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs view
@@ -0,0 +1,211 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment ( PhysicalDeviceTexelBufferAlignmentFeaturesEXT(..)+ , PhysicalDeviceTexelBufferAlignmentPropertiesEXT(..)+ , EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION+ , pattern EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION+ , EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME+ , pattern EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT))+-- | VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT - Structure describing+-- the texel buffer alignment features that can be supported by an+-- implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceTexelBufferAlignmentFeaturesEXT'+-- structure describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceTexelBufferAlignmentFeaturesEXT' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceTexelBufferAlignmentFeaturesEXT' /can/ also be included+-- in the @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo'+-- to enable the feature.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceTexelBufferAlignmentFeaturesEXT = PhysicalDeviceTexelBufferAlignmentFeaturesEXT+ { -- | @texelBufferAlignment@ indicates whether the implementation uses more+ -- specific alignment requirements advertised in+ -- 'PhysicalDeviceTexelBufferAlignmentPropertiesEXT' rather than+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minTexelBufferOffsetAlignment@.+ texelBufferAlignment :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceTexelBufferAlignmentFeaturesEXT++instance ToCStruct PhysicalDeviceTexelBufferAlignmentFeaturesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceTexelBufferAlignmentFeaturesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (texelBufferAlignment))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceTexelBufferAlignmentFeaturesEXT where+ peekCStruct p = do+ texelBufferAlignment <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceTexelBufferAlignmentFeaturesEXT+ (bool32ToBool texelBufferAlignment)++instance Storable PhysicalDeviceTexelBufferAlignmentFeaturesEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceTexelBufferAlignmentFeaturesEXT where+ zero = PhysicalDeviceTexelBufferAlignmentFeaturesEXT+ zero+++-- | VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT - Structure describing+-- the texel buffer alignment requirements supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceTexelBufferAlignmentPropertiesEXT'+-- structure describe the following implementation-dependent limits:+--+-- = Description+--+-- If the 'PhysicalDeviceTexelBufferAlignmentPropertiesEXT' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- If the single texel alignment property is+-- 'Graphics.Vulkan.Core10.BaseType.FALSE', then the buffer view’s offset+-- /must/ be aligned to the corresponding byte alignment value. If the+-- single texel alignment property is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', then the buffer view’s offset+-- /must/ be aligned to the lesser of the corresponding byte alignment+-- value or the size of a single texel, based on+-- 'Graphics.Vulkan.Core10.BufferView.BufferViewCreateInfo'::'Graphics.Vulkan.Core10.Enums.Format.Format'.+-- If the size of a single texel is a multiple of three bytes, then the+-- size of a single component of the format is used instead.+--+-- These limits /must/ not advertise a larger alignment than the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-required required>+-- maximum minimum value of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minTexelBufferOffsetAlignment@,+-- for any format that supports use as a texel buffer.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceTexelBufferAlignmentPropertiesEXT = PhysicalDeviceTexelBufferAlignmentPropertiesEXT+ { -- | @storageTexelBufferOffsetAlignmentBytes@ is a byte alignment that is+ -- sufficient for a storage texel buffer of any format.+ storageTexelBufferOffsetAlignmentBytes :: DeviceSize+ , -- | @storageTexelBufferOffsetSingleTexelAlignment@ indicates whether single+ -- texel alignment is sufficient for a storage texel buffer of any format.+ storageTexelBufferOffsetSingleTexelAlignment :: Bool+ , -- | @uniformTexelBufferOffsetAlignmentBytes@ is a byte alignment that is+ -- sufficient for a uniform texel buffer of any format.+ uniformTexelBufferOffsetAlignmentBytes :: DeviceSize+ , -- | @uniformTexelBufferOffsetSingleTexelAlignment@ indicates whether single+ -- texel alignment is sufficient for a uniform texel buffer of any format.+ uniformTexelBufferOffsetSingleTexelAlignment :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceTexelBufferAlignmentPropertiesEXT++instance ToCStruct PhysicalDeviceTexelBufferAlignmentPropertiesEXT where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceTexelBufferAlignmentPropertiesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (storageTexelBufferOffsetAlignmentBytes)+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (storageTexelBufferOffsetSingleTexelAlignment))+ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (uniformTexelBufferOffsetAlignmentBytes)+ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (uniformTexelBufferOffsetSingleTexelAlignment))+ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceTexelBufferAlignmentPropertiesEXT where+ peekCStruct p = do+ storageTexelBufferOffsetAlignmentBytes <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))+ storageTexelBufferOffsetSingleTexelAlignment <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ uniformTexelBufferOffsetAlignmentBytes <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))+ uniformTexelBufferOffsetSingleTexelAlignment <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))+ pure $ PhysicalDeviceTexelBufferAlignmentPropertiesEXT+ storageTexelBufferOffsetAlignmentBytes (bool32ToBool storageTexelBufferOffsetSingleTexelAlignment) uniformTexelBufferOffsetAlignmentBytes (bool32ToBool uniformTexelBufferOffsetSingleTexelAlignment)++instance Storable PhysicalDeviceTexelBufferAlignmentPropertiesEXT where+ sizeOf ~_ = 48+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceTexelBufferAlignmentPropertiesEXT where+ zero = PhysicalDeviceTexelBufferAlignmentPropertiesEXT+ zero+ zero+ zero+ zero+++type EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION"+pattern EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1+++type EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment"++-- No documentation found for TopLevel "VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME"+pattern EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment ( PhysicalDeviceTexelBufferAlignmentFeaturesEXT+ , PhysicalDeviceTexelBufferAlignmentPropertiesEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceTexelBufferAlignmentFeaturesEXT++instance ToCStruct PhysicalDeviceTexelBufferAlignmentFeaturesEXT+instance Show PhysicalDeviceTexelBufferAlignmentFeaturesEXT++instance FromCStruct PhysicalDeviceTexelBufferAlignmentFeaturesEXT+++data PhysicalDeviceTexelBufferAlignmentPropertiesEXT++instance ToCStruct PhysicalDeviceTexelBufferAlignmentPropertiesEXT+instance Show PhysicalDeviceTexelBufferAlignmentPropertiesEXT++instance FromCStruct PhysicalDeviceTexelBufferAlignmentPropertiesEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_texture_compression_astc_hdr.hs view
@@ -0,0 +1,147 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr ( PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(..)+ , EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION+ , pattern EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION+ , EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME+ , pattern EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT))+-- | VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT - Structure+-- describing ASTC HDR features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT'+-- structure describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether each feature is supported.+-- 'PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT' /can/ also be+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Device.createDevice' to enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT+ { -- | @textureCompressionASTC_HDR@ indicates whether all of the ASTC HDR+ -- compressed texture formats are supported. If this feature is enabled,+ -- then the+ -- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_BIT',+ -- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_SRC_BIT'+ -- and+ -- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+ -- features /must/ be supported in @optimalTilingFeatures@ for the+ -- following formats:+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT'+ --+ -- - 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT'+ --+ -- To query for additional properties, or if the feature is not enabled,+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties'+ -- and+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties'+ -- /can/ be used to check for supported properties of individual formats as+ -- normal.+ textureCompressionASTC_HDR :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT++instance ToCStruct PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (textureCompressionASTC_HDR))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT where+ peekCStruct p = do+ textureCompressionASTC_HDR <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT+ (bool32ToBool textureCompressionASTC_HDR)++instance Storable PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT where+ zero = PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT+ zero+++type EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION"+pattern EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1+++type EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr"++-- No documentation found for TopLevel "VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME"+pattern EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_texture_compression_astc_hdr.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr (PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT++instance ToCStruct PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT+instance Show PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT++instance FromCStruct PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_tooling_info.hs view
@@ -0,0 +1,313 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_tooling_info ( getPhysicalDeviceToolPropertiesEXT+ , PhysicalDeviceToolPropertiesEXT(..)+ , ToolPurposeFlagBitsEXT( TOOL_PURPOSE_VALIDATION_BIT_EXT+ , TOOL_PURPOSE_PROFILING_BIT_EXT+ , TOOL_PURPOSE_TRACING_BIT_EXT+ , TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT+ , TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT+ , TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT+ , TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT+ , ..+ )+ , ToolPurposeFlagsEXT+ , EXT_TOOLING_INFO_SPEC_VERSION+ , pattern EXT_TOOLING_INFO_SPEC_VERSION+ , EXT_TOOLING_INFO_EXTENSION_NAME+ , pattern EXT_TOOLING_INFO_EXTENSION_NAME+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.ByteString (packCString)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import Data.Bits (Bits)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import qualified Data.Vector.Storable.Sized (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)+import Graphics.Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceToolPropertiesEXT))+import Graphics.Vulkan.Core10.APIConstants (MAX_DESCRIPTION_SIZE)+import Graphics.Vulkan.Core10.APIConstants (MAX_EXTENSION_NAME_SIZE)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceToolPropertiesEXT+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr PhysicalDeviceToolPropertiesEXT -> IO Result) -> Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr PhysicalDeviceToolPropertiesEXT -> IO Result++-- | vkGetPhysicalDeviceToolPropertiesEXT - Reports properties of tools+-- active on the specified physical device+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the handle to the+-- physical device to query for active tools.+--+-- - @pToolCount@ is a pointer to an integer describing the number of+-- tools active on 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'.+--+-- - @pToolProperties@ is either @NULL@ or a pointer to an array of+-- 'PhysicalDeviceToolPropertiesEXT' structures.+--+-- = Description+--+-- If @pToolProperties@ is @NULL@, then the number of tools currently+-- active on 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is returned in+-- @pToolCount@. Otherwise, @pToolCount@ /must/ point to a variable set by+-- the user to the number of elements in the @pToolProperties@ array, and+-- on return the variable is overwritten with the number of structures+-- actually written to @pToolProperties@. If @pToolCount@ is less than the+-- number of currently active tools, at most @pToolCount@ structures will+-- be written.+--+-- The count and properties of active tools /may/ change in response to+-- events outside the scope of the specification. An application /should/+-- assume these properties might change at any given time.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @pToolCount@ /must/ be a valid pointer to a @uint32_t@ value+--+-- - If the value referenced by @pToolCount@ is not @0@, and+-- @pToolProperties@ is not @NULL@, @pToolProperties@ /must/ be a valid+-- pointer to an array of @pToolCount@+-- 'PhysicalDeviceToolPropertiesEXT' structures+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'PhysicalDeviceToolPropertiesEXT'+getPhysicalDeviceToolPropertiesEXT :: PhysicalDevice -> IO (Result, ("toolProperties" ::: Vector PhysicalDeviceToolPropertiesEXT))+getPhysicalDeviceToolPropertiesEXT physicalDevice = evalContT $ do+ let vkGetPhysicalDeviceToolPropertiesEXT' = mkVkGetPhysicalDeviceToolPropertiesEXT (pVkGetPhysicalDeviceToolPropertiesEXT (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pPToolCount <- ContT $ bracket (callocBytes @Word32 4) free+ _ <- lift $ vkGetPhysicalDeviceToolPropertiesEXT' physicalDevice' (pPToolCount) (nullPtr)+ pToolCount <- lift $ peek @Word32 pPToolCount+ pPToolProperties <- ContT $ bracket (callocBytes @PhysicalDeviceToolPropertiesEXT ((fromIntegral (pToolCount)) * 1048)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPToolProperties `advancePtrBytes` (i * 1048) :: Ptr PhysicalDeviceToolPropertiesEXT) . ($ ())) [0..(fromIntegral (pToolCount)) - 1]+ r <- lift $ vkGetPhysicalDeviceToolPropertiesEXT' physicalDevice' (pPToolCount) ((pPToolProperties))+ pToolCount' <- lift $ peek @Word32 pPToolCount+ pToolProperties' <- lift $ generateM (fromIntegral (pToolCount')) (\i -> peekCStruct @PhysicalDeviceToolPropertiesEXT (((pPToolProperties) `advancePtrBytes` (1048 * (i)) :: Ptr PhysicalDeviceToolPropertiesEXT)))+ pure $ (r, pToolProperties')+++-- | VkPhysicalDeviceToolPropertiesEXT - Structure providing information+-- about an active tool+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'ToolPurposeFlagsEXT', 'getPhysicalDeviceToolPropertiesEXT'+data PhysicalDeviceToolPropertiesEXT = PhysicalDeviceToolPropertiesEXT+ { -- | @name@ is a null-terminated UTF-8 string containing the name of the+ -- tool.+ name :: ByteString+ , -- | @version@ is a null-terminated UTF-8 string containing the version of+ -- the tool.+ version :: ByteString+ , -- | @purposes@ is a bitmask of 'ToolPurposeFlagBitsEXT' which is populated+ -- with purposes supported by the tool.+ purposes :: ToolPurposeFlagsEXT+ , -- | @description@ is a null-terminated UTF-8 string containing a description+ -- of the tool.+ description :: ByteString+ , -- | @layer@ is a null-terminated UTF-8 string that contains the name of the+ -- layer implementing the tool, if the tool is implemented in a layer -+ -- otherwise it /may/ be an empty string.+ layer :: ByteString+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceToolPropertiesEXT++instance ToCStruct PhysicalDeviceToolPropertiesEXT where+ withCStruct x f = allocaBytesAligned 1048 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceToolPropertiesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))) (name)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))) (version)+ poke ((p `plusPtr` 528 :: Ptr ToolPurposeFlagsEXT)) (purposes)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 532 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (description)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 788 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))) (layer)+ f+ cStructSize = 1048+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))) (mempty)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))) (mempty)+ poke ((p `plusPtr` 528 :: Ptr ToolPurposeFlagsEXT)) (zero)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 532 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 788 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))) (mempty)+ f++instance FromCStruct PhysicalDeviceToolPropertiesEXT where+ peekCStruct p = do+ name <- packCString (lowerArrayPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))))+ version <- packCString (lowerArrayPtr ((p `plusPtr` 272 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))))+ purposes <- peek @ToolPurposeFlagsEXT ((p `plusPtr` 528 :: Ptr ToolPurposeFlagsEXT))+ description <- packCString (lowerArrayPtr ((p `plusPtr` 532 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))+ layer <- packCString (lowerArrayPtr ((p `plusPtr` 788 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_EXTENSION_NAME_SIZE CChar))))+ pure $ PhysicalDeviceToolPropertiesEXT+ name version purposes description layer++instance Storable PhysicalDeviceToolPropertiesEXT where+ sizeOf ~_ = 1048+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceToolPropertiesEXT where+ zero = PhysicalDeviceToolPropertiesEXT+ mempty+ mempty+ zero+ mempty+ mempty+++-- | VkToolPurposeFlagBitsEXT - Bitmask specifying the purposes of an active+-- tool+--+-- = See Also+--+-- 'ToolPurposeFlagsEXT'+newtype ToolPurposeFlagBitsEXT = ToolPurposeFlagBitsEXT Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'TOOL_PURPOSE_VALIDATION_BIT_EXT' specifies that the tool provides+-- validation of API usage.+pattern TOOL_PURPOSE_VALIDATION_BIT_EXT = ToolPurposeFlagBitsEXT 0x00000001+-- | 'TOOL_PURPOSE_PROFILING_BIT_EXT' specifies that the tool provides+-- profiling of API usage.+pattern TOOL_PURPOSE_PROFILING_BIT_EXT = ToolPurposeFlagBitsEXT 0x00000002+-- | 'TOOL_PURPOSE_TRACING_BIT_EXT' specifies that the tool is capturing data+-- about the application’s API usage, including anything from simple+-- logging to capturing data for later replay.+pattern TOOL_PURPOSE_TRACING_BIT_EXT = ToolPurposeFlagBitsEXT 0x00000004+-- | 'TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT' specifies that the tool+-- provides additional API features\/extensions on top of the underlying+-- implementation.+pattern TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = ToolPurposeFlagBitsEXT 0x00000008+-- | 'TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT' specifies that the tool+-- modifies the API features\/limits\/extensions presented to the+-- application.+pattern TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = ToolPurposeFlagBitsEXT 0x00000010+-- | 'TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT' specifies that the tool consumes+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-debug-markers debug markers>+-- or+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-object-debug-annotation object debug annotation>,+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-queue-labels queue labels>,+-- or+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-command-buffer-labels command buffer labels>+pattern TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = ToolPurposeFlagBitsEXT 0x00000040+-- | 'TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT' specifies that the tool reports+-- additional information to the application via callbacks specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_report.createDebugReportCallbackEXT'+-- or+-- 'Graphics.Vulkan.Extensions.VK_EXT_debug_utils.createDebugUtilsMessengerEXT'+pattern TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = ToolPurposeFlagBitsEXT 0x00000020++type ToolPurposeFlagsEXT = ToolPurposeFlagBitsEXT++instance Show ToolPurposeFlagBitsEXT where+ showsPrec p = \case+ TOOL_PURPOSE_VALIDATION_BIT_EXT -> showString "TOOL_PURPOSE_VALIDATION_BIT_EXT"+ TOOL_PURPOSE_PROFILING_BIT_EXT -> showString "TOOL_PURPOSE_PROFILING_BIT_EXT"+ TOOL_PURPOSE_TRACING_BIT_EXT -> showString "TOOL_PURPOSE_TRACING_BIT_EXT"+ TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT -> showString "TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT"+ TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT -> showString "TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT"+ TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT -> showString "TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT"+ TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT -> showString "TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT"+ ToolPurposeFlagBitsEXT x -> showParen (p >= 11) (showString "ToolPurposeFlagBitsEXT 0x" . showHex x)++instance Read ToolPurposeFlagBitsEXT where+ readPrec = parens (choose [("TOOL_PURPOSE_VALIDATION_BIT_EXT", pure TOOL_PURPOSE_VALIDATION_BIT_EXT)+ , ("TOOL_PURPOSE_PROFILING_BIT_EXT", pure TOOL_PURPOSE_PROFILING_BIT_EXT)+ , ("TOOL_PURPOSE_TRACING_BIT_EXT", pure TOOL_PURPOSE_TRACING_BIT_EXT)+ , ("TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT", pure TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT)+ , ("TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT", pure TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT)+ , ("TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT", pure TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT)+ , ("TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT", pure TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT)]+ ++++ prec 10 (do+ expectP (Ident "ToolPurposeFlagBitsEXT")+ v <- step readPrec+ pure (ToolPurposeFlagBitsEXT v)))+++type EXT_TOOLING_INFO_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_TOOLING_INFO_SPEC_VERSION"+pattern EXT_TOOLING_INFO_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_TOOLING_INFO_SPEC_VERSION = 1+++type EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info"++-- No documentation found for TopLevel "VK_EXT_TOOLING_INFO_EXTENSION_NAME"+pattern EXT_TOOLING_INFO_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_tooling_info.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_tooling_info (PhysicalDeviceToolPropertiesEXT) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceToolPropertiesEXT++instance ToCStruct PhysicalDeviceToolPropertiesEXT+instance Show PhysicalDeviceToolPropertiesEXT++instance FromCStruct PhysicalDeviceToolPropertiesEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_transform_feedback.hs view
@@ -0,0 +1,1502 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_transform_feedback ( cmdBindTransformFeedbackBuffersEXT+ , cmdBeginTransformFeedbackEXT+ , cmdEndTransformFeedbackEXT+ , cmdBeginQueryIndexedEXT+ , cmdEndQueryIndexedEXT+ , cmdDrawIndirectByteCountEXT+ , PhysicalDeviceTransformFeedbackFeaturesEXT(..)+ , PhysicalDeviceTransformFeedbackPropertiesEXT(..)+ , PipelineRasterizationStateStreamCreateInfoEXT(..)+ , PipelineRasterizationStateStreamCreateFlagsEXT(..)+ , EXT_TRANSFORM_FEEDBACK_SPEC_VERSION+ , pattern EXT_TRANSFORM_FEEDBACK_SPEC_VERSION+ , EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME+ , pattern EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME+ ) where++import Control.Monad (unless)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import qualified Data.Vector (null)+import Data.Bits (Bits)+import Data.Either (Either)+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.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.Core10.Handles (Buffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdBeginQueryIndexedEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdBeginTransformFeedbackEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdBindTransformFeedbackBuffersEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdDrawIndirectByteCountEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdEndQueryIndexedEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdEndTransformFeedbackEXT))+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlags)+import Graphics.Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlags)+import Graphics.Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlagBits(..))+import Graphics.Vulkan.Core10.Handles (QueryPool)+import Graphics.Vulkan.Core10.Handles (QueryPool(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdBindTransformFeedbackBuffersEXT+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> IO ()++-- | vkCmdBindTransformFeedbackBuffersEXT - Bind transform feedback buffers+-- to a command buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded.+--+-- - @firstBinding@ is the index of the first transform feedback binding+-- whose state is updated by the command.+--+-- - @bindingCount@ is the number of transform feedback bindings whose+-- state is updated by the command.+--+-- - @pBuffers@ is a pointer to an array of buffer handles.+--+-- - @pOffsets@ is a pointer to an array of buffer offsets.+--+-- - @pSizes@ is an optional array of buffer sizes, specifying the+-- maximum number of bytes to capture to the corresponding transform+-- feedback buffer. If @pSizes@ is @NULL@, or the value of the @pSizes@+-- array element is 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE',+-- then the maximum bytes captured will be the size of the+-- corresponding buffer minus the buffer offset.+--+-- = Description+--+-- The values taken from elements i of @pBuffers@, @pOffsets@ and @pSizes@+-- replace the current state for the transform feedback binding+-- @firstBinding@ + i, for i in [0, @bindingCount@). The transform feedback+-- binding is updated to start at the offset indicated by @pOffsets@[i]+-- from the start of the buffer @pBuffers@[i].+--+-- == Valid Usage+--+-- - 'PhysicalDeviceTransformFeedbackFeaturesEXT'::@transformFeedback@+-- /must/ be enabled+--+-- - @firstBinding@ /must/ be less than+-- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@+--+-- - The sum of @firstBinding@ and @bindingCount@ /must/ be less than or+-- equal to+-- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@+--+-- - All elements of @pOffsets@ /must/ be less than the size of the+-- corresponding element in @pBuffers@+--+-- - All elements of @pOffsets@ /must/ be a multiple of 4+--+-- - All elements of @pBuffers@ /must/ have been created with the+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT'+-- flag+--+-- - If the optional @pSize@ array is specified, each element of @pSizes@+-- /must/ either be 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE',+-- or be less than or equal to+-- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBufferSize@+--+-- - All elements of @pSizes@ /must/ be less than or equal to the size of+-- the corresponding buffer in @pBuffers@+--+-- - All elements of @pOffsets@ plus @pSizes@, where the @pSizes@,+-- element is not 'Graphics.Vulkan.Core10.APIConstants.WHOLE_SIZE',+-- /must/ be less than or equal to the size of the corresponding+-- element in @pBuffers@+--+-- - Each element of @pBuffers@ that is non-sparse /must/ be bound+-- completely and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - Transform feedback /must/ not be active when the+-- 'cmdBindTransformFeedbackBuffersEXT' command is recorded+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pBuffers@ /must/ be a valid pointer to an array of @bindingCount@+-- valid 'Graphics.Vulkan.Core10.Handles.Buffer' handles+--+-- - @pOffsets@ /must/ be a valid pointer to an array of @bindingCount@+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize' values+--+-- - If @pSizes@ is not @NULL@, @pSizes@ /must/ be a valid pointer to an+-- array of @bindingCount@ 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+-- values+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - If @pSizes@ is not @NULL@, @bindingCount@ /must/ be greater than @0@+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and the+-- elements of @pBuffers@ /must/ have been created, allocated, or+-- retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+cmdBindTransformFeedbackBuffersEXT :: CommandBuffer -> ("firstBinding" ::: Word32) -> ("buffers" ::: Vector Buffer) -> ("offsets" ::: Vector DeviceSize) -> ("sizes" ::: Either Word32 (Vector DeviceSize)) -> IO ()+cmdBindTransformFeedbackBuffersEXT commandBuffer firstBinding buffers offsets sizes = evalContT $ do+ let vkCmdBindTransformFeedbackBuffersEXT' = mkVkCmdBindTransformFeedbackBuffersEXT (pVkCmdBindTransformFeedbackBuffersEXT (deviceCmds (commandBuffer :: CommandBuffer)))+ let pBuffersLength = Data.Vector.length $ (buffers)+ let pOffsetsLength = Data.Vector.length $ (offsets)+ lift $ unless (pOffsetsLength == pBuffersLength) $+ throwIO $ IOError Nothing InvalidArgument "" "pOffsets and pBuffers must have the same length" Nothing Nothing+ let pSizesLength = either id (fromIntegral . Data.Vector.length) (sizes)+ lift $ unless (fromIntegral pSizesLength == pBuffersLength || pSizesLength == 0) $+ throwIO $ IOError Nothing InvalidArgument "" "pSizes and pBuffers must have the same length" Nothing Nothing+ pPBuffers <- ContT $ allocaBytesAligned @Buffer ((Data.Vector.length (buffers)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPBuffers `plusPtr` (8 * (i)) :: Ptr Buffer) (e)) (buffers)+ pPOffsets <- ContT $ allocaBytesAligned @DeviceSize ((Data.Vector.length (offsets)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPOffsets `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (offsets)+ pSizes <- case (sizes) of+ Left _ -> pure nullPtr+ Right v -> do+ pPSizes <- ContT $ allocaBytesAligned @DeviceSize ((Data.Vector.length (v)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPSizes `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (v)+ pure $ pPSizes+ lift $ vkCmdBindTransformFeedbackBuffersEXT' (commandBufferHandle (commandBuffer)) (firstBinding) ((fromIntegral pBuffersLength :: Word32)) (pPBuffers) (pPOffsets) pSizes+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdBeginTransformFeedbackEXT+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()++-- | vkCmdBeginTransformFeedbackEXT - Make transform feedback active in the+-- command buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded.+--+-- - @firstCounterBuffer@ is the index of the first transform feedback+-- buffer corresponding to @pCounterBuffers@[0] and+-- @pCounterBufferOffsets@[0].+--+-- - @counterBufferCount@ is the size of the @pCounterBuffers@ and+-- @pCounterBufferOffsets@ arrays.+--+-- - @pCounterBuffers@ is an optional array of buffer handles to the+-- counter buffers which contain a 4 byte integer value representing+-- the byte offset from the start of the corresponding transform+-- feedback buffer from where to start capturing vertex data. If the+-- byte offset stored to the counter buffer location was done using+-- 'cmdEndTransformFeedbackEXT' it can be used to resume transform+-- feedback from the previous location. If @pCounterBuffers@ is @NULL@,+-- then transform feedback will start capturing vertex data to byte+-- offset zero in all bound transform feedback buffers. For each+-- element of @pCounterBuffers@ that is+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', transform+-- feedback will start capturing vertex data to byte zero in the+-- corresponding bound transform feedback buffer.+--+-- - @pCounterBufferOffsets@ is an optional array of offsets within each+-- of the @pCounterBuffers@ where the counter values were previously+-- written. The location in each counter buffer at these offsets /must/+-- be large enough to contain 4 bytes of data. This data is the number+-- of bytes captured by the previous transform feedback to this buffer.+-- If @pCounterBufferOffsets@ is @NULL@, then it is assumed the offsets+-- are zero.+--+-- = Description+--+-- The active transform feedback buffers will capture primitives emitted+-- from the corresponding @XfbBuffer@ in the bound graphics pipeline. Any+-- @XfbBuffer@ emitted that does not output to an active transform feedback+-- buffer will not be captured.+--+-- == Valid Usage+--+-- - 'PhysicalDeviceTransformFeedbackFeaturesEXT'::@transformFeedback@+-- /must/ be enabled+--+-- - Transform feedback /must/ not be active+--+-- - @firstCounterBuffer@ /must/ be less than+-- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@+--+-- - The sum of @firstCounterBuffer@ and @counterBufferCount@ /must/ be+-- less than or equal to+-- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@+--+-- - If @counterBufferCount@ is not @0@, and @pCounterBuffers@ is not+-- @NULL@, @pCounterBuffers@ /must/ be a valid pointer to an array of+-- @counterBufferCount@ 'Graphics.Vulkan.Core10.Handles.Buffer' handles+-- that are either valid or+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- - For each buffer handle in the array, if it is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/+-- reference a buffer large enough to hold 4 bytes at the corresponding+-- offset from the @pCounterBufferOffsets@ array+--+-- - If @pCounterBuffer@ is @NULL@, then @pCounterBufferOffsets@ /must/+-- also be @NULL@+--+-- - For each buffer handle in the @pCounterBuffers@ array that is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ have+-- been created with a @usage@ value containing+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT'+--+-- - Transform feedback /must/ not be made active in a render pass+-- instance with multiview enabled+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - If @counterBufferCount@ is not @0@, and @pCounterBufferOffsets@ is+-- not @NULL@, @pCounterBufferOffsets@ /must/ be a valid pointer to an+-- array of @counterBufferCount@+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize' values+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and the+-- elements of @pCounterBuffers@ that are valid handles of non-ignored+-- parameters /must/ have been created, allocated, or retrieved from+-- the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Inside | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+cmdBeginTransformFeedbackEXT :: CommandBuffer -> ("firstCounterBuffer" ::: Word32) -> ("counterBuffers" ::: Vector Buffer) -> ("counterBufferOffsets" ::: Either Word32 (Vector DeviceSize)) -> IO ()+cmdBeginTransformFeedbackEXT commandBuffer firstCounterBuffer counterBuffers counterBufferOffsets = evalContT $ do+ let vkCmdBeginTransformFeedbackEXT' = mkVkCmdBeginTransformFeedbackEXT (pVkCmdBeginTransformFeedbackEXT (deviceCmds (commandBuffer :: CommandBuffer)))+ let pCounterBuffersLength = Data.Vector.length $ (counterBuffers)+ let pCounterBufferOffsetsLength = either id (fromIntegral . Data.Vector.length) (counterBufferOffsets)+ lift $ unless (fromIntegral pCounterBufferOffsetsLength == pCounterBuffersLength || pCounterBufferOffsetsLength == 0) $+ throwIO $ IOError Nothing InvalidArgument "" "pCounterBufferOffsets and pCounterBuffers must have the same length" Nothing Nothing+ pPCounterBuffers <- ContT $ allocaBytesAligned @Buffer ((Data.Vector.length (counterBuffers)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPCounterBuffers `plusPtr` (8 * (i)) :: Ptr Buffer) (e)) (counterBuffers)+ pCounterBufferOffsets <- case (counterBufferOffsets) of+ Left _ -> pure nullPtr+ Right v -> do+ pPCounterBufferOffsets <- ContT $ allocaBytesAligned @DeviceSize ((Data.Vector.length (v)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPCounterBufferOffsets `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (v)+ pure $ pPCounterBufferOffsets+ lift $ vkCmdBeginTransformFeedbackEXT' (commandBufferHandle (commandBuffer)) (firstCounterBuffer) ((fromIntegral pCounterBuffersLength :: Word32)) (pPCounterBuffers) pCounterBufferOffsets+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdEndTransformFeedbackEXT+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()++-- | vkCmdEndTransformFeedbackEXT - Make transform feedback inactive in the+-- command buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded.+--+-- - @firstCounterBuffer@ is the index of the first transform feedback+-- buffer corresponding to @pCounterBuffers@[0] and+-- @pCounterBufferOffsets@[0].+--+-- - @counterBufferCount@ is the size of the @pCounterBuffers@ and+-- @pCounterBufferOffsets@ arrays.+--+-- - @pCounterBuffers@ is an optional array of buffer handles to the+-- counter buffers used to record the current byte positions of each+-- transform feedback buffer where the next vertex output data would be+-- captured. This /can/ be used by a subsequent+-- 'cmdBeginTransformFeedbackEXT' call to resume transform feedback+-- capture from this position. It can also be used by+-- 'cmdDrawIndirectByteCountEXT' to determine the vertex count of the+-- draw call.+--+-- - @pCounterBufferOffsets@ is an optional array of offsets within each+-- of the @pCounterBuffers@ where the counter values can be written.+-- The location in each counter buffer at these offsets /must/ be large+-- enough to contain 4 bytes of data. The data stored at this location+-- is the byte offset from the start of the transform feedback buffer+-- binding where the next vertex data would be written. If+-- @pCounterBufferOffsets@ is @NULL@, then it is assumed the offsets+-- are zero.+--+-- == Valid Usage+--+-- - 'PhysicalDeviceTransformFeedbackFeaturesEXT'::@transformFeedback@+-- /must/ be enabled+--+-- - Transform feedback /must/ be active+--+-- - @firstCounterBuffer@ /must/ be less than+-- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@+--+-- - The sum of @firstCounterBuffer@ and @counterBufferCount@ /must/ be+-- less than or equal to+-- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackBuffers@+--+-- - If @counterBufferCount@ is not @0@, and @pCounterBuffers@ is not+-- @NULL@, @pCounterBuffers@ /must/ be a valid pointer to an array of+-- @counterBufferCount@ 'Graphics.Vulkan.Core10.Handles.Buffer' handles+-- that are either valid or+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- - For each buffer handle in the array, if it is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/+-- reference a buffer large enough to hold 4 bytes at the corresponding+-- offset from the @pCounterBufferOffsets@ array+--+-- - If @pCounterBuffer@ is @NULL@, then @pCounterBufferOffsets@ /must/+-- also be @NULL@+--+-- - For each buffer handle in the @pCounterBuffers@ array that is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ have+-- been created with a @usage@ value containing+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - If @counterBufferCount@ is not @0@, and @pCounterBufferOffsets@ is+-- not @NULL@, @pCounterBufferOffsets@ /must/ be a valid pointer to an+-- array of @counterBufferCount@+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize' values+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and the+-- elements of @pCounterBuffers@ that are valid handles of non-ignored+-- parameters /must/ have been created, allocated, or retrieved from+-- the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Inside | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+cmdEndTransformFeedbackEXT :: CommandBuffer -> ("firstCounterBuffer" ::: Word32) -> ("counterBuffers" ::: Vector Buffer) -> ("counterBufferOffsets" ::: Either Word32 (Vector DeviceSize)) -> IO ()+cmdEndTransformFeedbackEXT commandBuffer firstCounterBuffer counterBuffers counterBufferOffsets = evalContT $ do+ let vkCmdEndTransformFeedbackEXT' = mkVkCmdEndTransformFeedbackEXT (pVkCmdEndTransformFeedbackEXT (deviceCmds (commandBuffer :: CommandBuffer)))+ let pCounterBuffersLength = Data.Vector.length $ (counterBuffers)+ let pCounterBufferOffsetsLength = either id (fromIntegral . Data.Vector.length) (counterBufferOffsets)+ lift $ unless (fromIntegral pCounterBufferOffsetsLength == pCounterBuffersLength || pCounterBufferOffsetsLength == 0) $+ throwIO $ IOError Nothing InvalidArgument "" "pCounterBufferOffsets and pCounterBuffers must have the same length" Nothing Nothing+ pPCounterBuffers <- ContT $ allocaBytesAligned @Buffer ((Data.Vector.length (counterBuffers)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPCounterBuffers `plusPtr` (8 * (i)) :: Ptr Buffer) (e)) (counterBuffers)+ pCounterBufferOffsets <- case (counterBufferOffsets) of+ Left _ -> pure nullPtr+ Right v -> do+ pPCounterBufferOffsets <- ContT $ allocaBytesAligned @DeviceSize ((Data.Vector.length (v)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPCounterBufferOffsets `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (v)+ pure $ pPCounterBufferOffsets+ lift $ vkCmdEndTransformFeedbackEXT' (commandBufferHandle (commandBuffer)) (firstCounterBuffer) ((fromIntegral pCounterBuffersLength :: Word32)) (pPCounterBuffers) pCounterBufferOffsets+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdBeginQueryIndexedEXT+ :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> QueryControlFlags -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> QueryControlFlags -> Word32 -> IO ()++-- | vkCmdBeginQueryIndexedEXT - Begin an indexed query+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which this command will be recorded.+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' is the query pool that+-- will manage the results of the query.+--+-- - @query@ is the query index within the query pool that will contain+-- the results.+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+-- 'Graphics.Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlagBits'+-- specifying constraints on the types of queries that /can/ be+-- performed.+--+-- - @index@ is the query type specific index. When the query type is+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'+-- the index represents the vertex stream.+--+-- = Description+--+-- The 'cmdBeginQueryIndexedEXT' command operates the same as the+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery' command,+-- except that it also accepts a query type specific @index@ parameter.+--+-- == Valid Usage+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ have been created+-- with a 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' that+-- differs from that of any queries that are+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>+-- within 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+--+-- - All queries used by the command /must/ be unavailable+--+-- - The 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP'+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-occlusionQueryPrecise precise occlusion queries>+-- feature is not enabled, or the+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to create+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' was not+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION',+-- 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not contain+-- 'Graphics.Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT'+--+-- - @query@ /must/ be less than the number of queries in+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION', the+-- 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS'+-- and any of the @pipelineStatistics@ indicate graphics operations,+-- the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS'+-- and any of the @pipelineStatistics@ indicate compute operations, the+-- 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support compute operations+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ not be a+-- protected command buffer+--+-- - If called within a render pass instance, the sum of @query@ and the+-- number of bits set in the current subpass’s view mask /must/ be less+-- than or equal to the number of queries in+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'+-- the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'+-- the @index@ parameter /must/ be less than+-- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackStreams@+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was not+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'+-- the @index@ /must/ be zero+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'+-- then+-- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@transformFeedbackQueries@+-- /must/ be supported+--+-- - If 'Graphics.Vulkan.Core10.Handles.QueryPool' was created with a+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' of+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',+-- the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#profiling-lock profiling lock>+-- /must/ have been held before+-- 'Graphics.Vulkan.Core10.CommandBuffer.beginCommandBuffer' was called+-- on 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+--+-- - If 'Graphics.Vulkan.Core10.Handles.QueryPool' was created with a+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' of+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR'+-- and one of the counters used to create+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR',+-- the query begin /must/ be the first recorded command in+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+--+-- - If 'Graphics.Vulkan.Core10.Handles.QueryPool' was created with a+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' of+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR'+-- and one of the counters used to create+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR',+-- the begin command /must/ not be recorded within a render pass+-- instance+--+-- - If 'Graphics.Vulkan.Core10.Handles.QueryPool' was created with a+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' of+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR'+-- and another query pool with a+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType'+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR'+-- has been used within 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- its parent primary command buffer or secondary command buffer+-- recorded within the same parent primary command buffer as+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-features-performanceCounterMultipleQueryPools performanceCounterMultipleQueryPools>+-- feature /must/ be enabled+--+-- - If 'Graphics.Vulkan.Core10.Handles.QueryPool' was created with a+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' of+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',+-- this command /must/ not be recorded in a command buffer that, either+-- directly or through secondary command buffers, also contains a+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdResetQueryPool'+-- command affecting the same query.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' handle+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlagBits'+-- values+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ have been created,+-- allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlags',+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+cmdBeginQueryIndexedEXT :: CommandBuffer -> QueryPool -> ("query" ::: Word32) -> QueryControlFlags -> ("index" ::: Word32) -> IO ()+cmdBeginQueryIndexedEXT commandBuffer queryPool query flags index = do+ let vkCmdBeginQueryIndexedEXT' = mkVkCmdBeginQueryIndexedEXT (pVkCmdBeginQueryIndexedEXT (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdBeginQueryIndexedEXT' (commandBufferHandle (commandBuffer)) (queryPool) (query) (flags) (index)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdEndQueryIndexedEXT+ :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> IO ()++-- | vkCmdEndQueryIndexedEXT - Ends a query+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which this command will be recorded.+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' is the query pool that is+-- managing the results of the query.+--+-- - @query@ is the query index within the query pool where the result is+-- stored.+--+-- - @index@ is the query type specific index.+--+-- = Description+--+-- The 'cmdEndQueryIndexedEXT' command operates the same as the+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdEndQuery' command,+-- except that it also accepts a query type specific @index@ parameter.+--+-- == Valid Usage+--+-- - All queries used by the command /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>+--+-- - @query@ /must/ be less than the number of queries in+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ not be a+-- protected command buffer+--+-- - If 'cmdEndQueryIndexedEXT' is called within a render pass instance,+-- the sum of @query@ and the number of bits set in the current+-- subpass’s view mask /must/ be less than or equal to the number of+-- queries in 'Graphics.Vulkan.Core10.Handles.QueryPool'+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'+-- the @index@ parameter /must/ be less than+-- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@maxTransformFeedbackStreams@+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was not+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'+-- the @index@ /must/ be zero+--+-- - If the 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' used to+-- create 'Graphics.Vulkan.Core10.Handles.QueryPool' was+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'+-- @index@ /must/ equal the @index@ used to begin the query+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ have been created,+-- allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Handles.QueryPool'+cmdEndQueryIndexedEXT :: CommandBuffer -> QueryPool -> ("query" ::: Word32) -> ("index" ::: Word32) -> IO ()+cmdEndQueryIndexedEXT commandBuffer queryPool query index = do+ let vkCmdEndQueryIndexedEXT' = mkVkCmdEndQueryIndexedEXT (pVkCmdEndQueryIndexedEXT (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdEndQueryIndexedEXT' (commandBufferHandle (commandBuffer)) (queryPool) (query) (index)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdDrawIndirectByteCountEXT+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()++-- | vkCmdDrawIndirectByteCountEXT - Draw primitives where the vertex count+-- is derived from the counter byte value in the counter buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded.+--+-- - @instanceCount@ is the number of instances to draw.+--+-- - @firstInstance@ is the instance ID of the first instance to draw.+--+-- - @counterBuffer@ is the buffer handle from where the byte count is+-- read.+--+-- - @counterBufferOffset@ is the offset into the buffer used to read the+-- byte count, which is used to calculate the vertex count for this+-- draw call.+--+-- - @counterOffset@ is subtracted from the byte count read from the+-- @counterBuffer@ at the @counterBufferOffset@+--+-- - @vertexStride@ is the stride in bytes between each element of the+-- vertex data that is used to calculate the vertex count from the+-- counter value. This value is typically the same value that was used+-- in the graphics pipeline state when the transform feedback was+-- captured as the @XfbStride@.+--+-- = Description+--+-- When the command is executed, primitives are assembled in the same way+-- as done with 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDraw'+-- except the @vertexCount@ is calculated based on the byte count read from+-- @counterBuffer@ at offset @counterBufferOffset@. The assembled+-- primitives execute the bound graphics pipeline.+--+-- The effective @vertexCount@ is calculated as follows:+--+-- > const uint32_t * counterBufferPtr = (const uint8_t *)counterBuffer.address + counterBufferOffset;+-- > vertexCount = floor(max(0, (*counterBufferPtr - counterOffset)) / vertexStride);+--+-- The effective @firstVertex@ is zero.+--+-- == Valid Usage+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' as a result of+-- this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is accessed using+-- atomic operations as a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering, as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'+-- with a reduction mode of either+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+-- or+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+-- as a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering together with minmax filtering,+-- as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.Image' created with a+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- containing+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+-- sampled as a result of this command /must/ only be sampled using a+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+-- of+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--+-- - For each set /n/ that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a descriptor set /must/ have been bound+-- to /n/ at the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for set /n/, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - For each push constant that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a push constant value /must/ have been+-- set for the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for push constants, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - Descriptors in each bound descriptor set, specified via+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',+-- /must/ be valid if they are statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command+--+-- - A valid pipeline /must/ be bound to the pipeline bind point used by+-- this command+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command requires any dynamic state,+-- that state /must/ have been set for+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and done so after+-- any previously bound pipeline with the corresponding state not+-- specified as dynamic+--+-- - There /must/ not have been any calls to dynamic state setting+-- commands for any state not specified as dynamic in the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command, since that pipeline was+-- bound+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used to sample+-- from any 'Graphics.Vulkan.Core10.Handles.Image' with a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' of the type+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY',+-- in any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions with @ImplicitLod@, @Dref@ or @Proj@ in their name, in+-- any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions that includes a LOD bias or any offset values, in any+-- shader stage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a uniform buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a storage buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, any resource accessed by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command /must/ not be a protected+-- resource+--+-- - The current render pass /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>+-- with the 'Graphics.Vulkan.Core10.Handles.RenderPass' member of the+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+-- structure specified when creating the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--+-- - The subpass index of the current render pass /must/ be equal to the+-- @subpass@ member of the+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+-- structure specified when creating the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--+-- - Every input attachment used by the current subpass /must/ be bound+-- to the pipeline via a descriptor set+--+-- - Image subresources used as attachments in the current render pass+-- /must/ not be accessed in any way other than as an attachment by+-- this command.+--+-- - If the draw is recorded in a render pass instance with multiview+-- enabled, the maximum instance index /must/ be less than or equal to+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--+-- - If the bound graphics pipeline was created with+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@+-- set to 'Graphics.Vulkan.Core10.BaseType.TRUE' and the current+-- subpass has a depth\/stencil attachment, then that attachment /must/+-- have been created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+-- bit set+--+-- - All vertex input bindings accessed via vertex input variables+-- declared in the vertex shader entry point’s interface /must/ have+-- valid buffers bound+--+-- - For a given vertex buffer binding, any attribute data fetched /must/+-- be entirely contained within the corresponding vertex buffer+-- binding, as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>+--+-- - 'PhysicalDeviceTransformFeedbackFeaturesEXT'::@transformFeedback@+-- /must/ be enabled+--+-- - The implementation /must/ support+-- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@transformFeedbackDraw@+--+-- - @vertexStride@ /must/ be greater than 0 and less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxTransformFeedbackBufferDataStride@+--+-- - @counterBuffer@ /must/ have been created with the+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+-- bit set+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ not be a+-- protected command buffer+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @counterBuffer@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and+-- @counterBuffer@ /must/ have been created, allocated, or retrieved+-- from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+cmdDrawIndirectByteCountEXT :: CommandBuffer -> ("instanceCount" ::: Word32) -> ("firstInstance" ::: Word32) -> ("counterBuffer" ::: Buffer) -> ("counterBufferOffset" ::: DeviceSize) -> ("counterOffset" ::: Word32) -> ("vertexStride" ::: Word32) -> IO ()+cmdDrawIndirectByteCountEXT commandBuffer instanceCount firstInstance counterBuffer counterBufferOffset counterOffset vertexStride = do+ let vkCmdDrawIndirectByteCountEXT' = mkVkCmdDrawIndirectByteCountEXT (pVkCmdDrawIndirectByteCountEXT (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdDrawIndirectByteCountEXT' (commandBufferHandle (commandBuffer)) (instanceCount) (firstInstance) (counterBuffer) (counterBufferOffset) (counterOffset) (vertexStride)+ pure $ ()+++-- | VkPhysicalDeviceTransformFeedbackFeaturesEXT - Structure describing+-- transform feedback features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceTransformFeedbackFeaturesEXT'+-- structure describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceTransformFeedbackFeaturesEXT' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether each feature is supported.+-- 'PhysicalDeviceTransformFeedbackFeaturesEXT' /can/ also be included in+-- the @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceTransformFeedbackFeaturesEXT = PhysicalDeviceTransformFeedbackFeaturesEXT+ { -- | @transformFeedback@ indicates whether the implementation supports+ -- transform feedback and shader modules /can/ declare the+ -- @TransformFeedback@ capability.+ transformFeedback :: Bool+ , -- | @geometryStreams@ indicates whether the implementation supports the+ -- @GeometryStreams@ SPIR-V capability.+ geometryStreams :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceTransformFeedbackFeaturesEXT++instance ToCStruct PhysicalDeviceTransformFeedbackFeaturesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceTransformFeedbackFeaturesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (transformFeedback))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (geometryStreams))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceTransformFeedbackFeaturesEXT where+ peekCStruct p = do+ transformFeedback <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ geometryStreams <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ pure $ PhysicalDeviceTransformFeedbackFeaturesEXT+ (bool32ToBool transformFeedback) (bool32ToBool geometryStreams)++instance Storable PhysicalDeviceTransformFeedbackFeaturesEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceTransformFeedbackFeaturesEXT where+ zero = PhysicalDeviceTransformFeedbackFeaturesEXT+ zero+ zero+++-- | VkPhysicalDeviceTransformFeedbackPropertiesEXT - Structure describing+-- transform feedback properties that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceTransformFeedbackPropertiesEXT'+-- structure describe the following implementation-dependent limits:+--+-- = Description+--+-- If the 'PhysicalDeviceTransformFeedbackPropertiesEXT' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits and properties.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceTransformFeedbackPropertiesEXT = PhysicalDeviceTransformFeedbackPropertiesEXT+ { -- | @maxTransformFeedbackStreams@ is the maximum number of vertex streams+ -- that can be output from geometry shaders declared with the+ -- @GeometryStreams@ capability. If the implementation does not support+ -- 'PhysicalDeviceTransformFeedbackFeaturesEXT'::@geometryStreams@ then+ -- @maxTransformFeedbackStreams@ /must/ be set to @1@.+ maxTransformFeedbackStreams :: Word32+ , -- | @maxTransformFeedbackBuffers@ is the maximum number of transform+ -- feedback buffers that can be bound for capturing shader outputs from the+ -- last vertex processing stage.+ maxTransformFeedbackBuffers :: Word32+ , -- | @maxTransformFeedbackBufferSize@ is the maximum size that can be+ -- specified when binding a buffer for transform feedback in+ -- 'cmdBindTransformFeedbackBuffersEXT'.+ maxTransformFeedbackBufferSize :: DeviceSize+ , -- | @maxTransformFeedbackStreamDataSize@ is the maximum amount of data in+ -- bytes for each vertex that captured to one or more transform feedback+ -- buffers associated with a specific vertex stream.+ maxTransformFeedbackStreamDataSize :: Word32+ , -- | @maxTransformFeedbackBufferDataSize@ is the maximum amount of data in+ -- bytes for each vertex that can be captured to a specific transform+ -- feedback buffer.+ maxTransformFeedbackBufferDataSize :: Word32+ , -- | @maxTransformFeedbackBufferDataStride@ is the maximum stride between+ -- each capture of vertex data to the buffer.+ maxTransformFeedbackBufferDataStride :: Word32+ , -- | @transformFeedbackQueries@ is true if the implementation supports the+ -- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'+ -- query type. @transformFeedbackQueries@ is false if queries of this type+ -- /cannot/ be created.+ transformFeedbackQueries :: Bool+ , -- | @transformFeedbackStreamsLinesTriangles@ is true if the implementation+ -- supports the geometry shader @OpExecutionMode@ of @OutputLineStrip@ and+ -- @OutputTriangleStrip@ in addition to @OutputPoints@ when more than one+ -- vertex stream is output. If @transformFeedbackStreamsLinesTriangles@ is+ -- false the implementation only supports an @OpExecutionMode@ of+ -- @OutputPoints@ when more than one vertex stream is output from the+ -- geometry shader.+ transformFeedbackStreamsLinesTriangles :: Bool+ , -- | @transformFeedbackRasterizationStreamSelect@ is true if the+ -- implementation supports the @GeometryStreams@ SPIR-V capability and the+ -- application can use 'PipelineRasterizationStateStreamCreateInfoEXT' to+ -- modify which vertex stream output is used for rasterization. Otherwise+ -- vertex stream @0@ /must/ always be used for rasterization.+ transformFeedbackRasterizationStreamSelect :: Bool+ , -- | @transformFeedbackDraw@ is true if the implementation supports the+ -- 'cmdDrawIndirectByteCountEXT' function otherwise the function /must/ not+ -- be called.+ transformFeedbackDraw :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceTransformFeedbackPropertiesEXT++instance ToCStruct PhysicalDeviceTransformFeedbackPropertiesEXT where+ withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceTransformFeedbackPropertiesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (maxTransformFeedbackStreams)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (maxTransformFeedbackBuffers)+ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (maxTransformFeedbackBufferSize)+ poke ((p `plusPtr` 32 :: Ptr Word32)) (maxTransformFeedbackStreamDataSize)+ poke ((p `plusPtr` 36 :: Ptr Word32)) (maxTransformFeedbackBufferDataSize)+ poke ((p `plusPtr` 40 :: Ptr Word32)) (maxTransformFeedbackBufferDataStride)+ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (transformFeedbackQueries))+ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (transformFeedbackStreamsLinesTriangles))+ poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (transformFeedbackRasterizationStreamSelect))+ poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (transformFeedbackDraw))+ f+ cStructSize = 64+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceTransformFeedbackPropertiesEXT where+ peekCStruct p = do+ maxTransformFeedbackStreams <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ maxTransformFeedbackBuffers <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ maxTransformFeedbackBufferSize <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))+ maxTransformFeedbackStreamDataSize <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ maxTransformFeedbackBufferDataSize <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))+ maxTransformFeedbackBufferDataStride <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))+ transformFeedbackQueries <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))+ transformFeedbackStreamsLinesTriangles <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))+ transformFeedbackRasterizationStreamSelect <- peek @Bool32 ((p `plusPtr` 52 :: Ptr Bool32))+ transformFeedbackDraw <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))+ pure $ PhysicalDeviceTransformFeedbackPropertiesEXT+ maxTransformFeedbackStreams maxTransformFeedbackBuffers maxTransformFeedbackBufferSize maxTransformFeedbackStreamDataSize maxTransformFeedbackBufferDataSize maxTransformFeedbackBufferDataStride (bool32ToBool transformFeedbackQueries) (bool32ToBool transformFeedbackStreamsLinesTriangles) (bool32ToBool transformFeedbackRasterizationStreamSelect) (bool32ToBool transformFeedbackDraw)++instance Storable PhysicalDeviceTransformFeedbackPropertiesEXT where+ sizeOf ~_ = 64+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceTransformFeedbackPropertiesEXT where+ zero = PhysicalDeviceTransformFeedbackPropertiesEXT+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkPipelineRasterizationStateStreamCreateInfoEXT - Structure defining the+-- geometry stream used for rasterization+--+-- = Description+--+-- If this structure is not present, @rasterizationStream@ is assumed to be+-- zero.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'PipelineRasterizationStateStreamCreateFlagsEXT',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineRasterizationStateStreamCreateInfoEXT = PipelineRasterizationStateStreamCreateInfoEXT+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+ flags :: PipelineRasterizationStateStreamCreateFlagsEXT+ , -- | @rasterizationStream@ /must/ be zero if+ -- 'PhysicalDeviceTransformFeedbackPropertiesEXT'::@transformFeedbackRasterizationStreamSelect@+ -- is 'Graphics.Vulkan.Core10.BaseType.FALSE'+ rasterizationStream :: Word32+ }+ deriving (Typeable)+deriving instance Show PipelineRasterizationStateStreamCreateInfoEXT++instance ToCStruct PipelineRasterizationStateStreamCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineRasterizationStateStreamCreateInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT)) (flags)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (rasterizationStream)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ f++instance FromCStruct PipelineRasterizationStateStreamCreateInfoEXT where+ peekCStruct p = do+ flags <- peek @PipelineRasterizationStateStreamCreateFlagsEXT ((p `plusPtr` 16 :: Ptr PipelineRasterizationStateStreamCreateFlagsEXT))+ rasterizationStream <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pure $ PipelineRasterizationStateStreamCreateInfoEXT+ flags rasterizationStream++instance Storable PipelineRasterizationStateStreamCreateInfoEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineRasterizationStateStreamCreateInfoEXT where+ zero = PipelineRasterizationStateStreamCreateInfoEXT+ zero+ zero+++-- | VkPipelineRasterizationStateStreamCreateFlagsEXT - Reserved for future+-- use+--+-- = Description+--+-- 'PipelineRasterizationStateStreamCreateFlagsEXT' is a bitmask type for+-- setting a mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'PipelineRasterizationStateStreamCreateInfoEXT'+newtype PipelineRasterizationStateStreamCreateFlagsEXT = PipelineRasterizationStateStreamCreateFlagsEXT Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show PipelineRasterizationStateStreamCreateFlagsEXT where+ showsPrec p = \case+ PipelineRasterizationStateStreamCreateFlagsEXT x -> showParen (p >= 11) (showString "PipelineRasterizationStateStreamCreateFlagsEXT 0x" . showHex x)++instance Read PipelineRasterizationStateStreamCreateFlagsEXT where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "PipelineRasterizationStateStreamCreateFlagsEXT")+ v <- step readPrec+ pure (PipelineRasterizationStateStreamCreateFlagsEXT v)))+++type EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION"+pattern EXT_TRANSFORM_FEEDBACK_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1+++type EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback"++-- No documentation found for TopLevel "VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME"+pattern EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_transform_feedback.hs-boot view
@@ -0,0 +1,32 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_transform_feedback ( PhysicalDeviceTransformFeedbackFeaturesEXT+ , PhysicalDeviceTransformFeedbackPropertiesEXT+ , PipelineRasterizationStateStreamCreateInfoEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceTransformFeedbackFeaturesEXT++instance ToCStruct PhysicalDeviceTransformFeedbackFeaturesEXT+instance Show PhysicalDeviceTransformFeedbackFeaturesEXT++instance FromCStruct PhysicalDeviceTransformFeedbackFeaturesEXT+++data PhysicalDeviceTransformFeedbackPropertiesEXT++instance ToCStruct PhysicalDeviceTransformFeedbackPropertiesEXT+instance Show PhysicalDeviceTransformFeedbackPropertiesEXT++instance FromCStruct PhysicalDeviceTransformFeedbackPropertiesEXT+++data PipelineRasterizationStateStreamCreateInfoEXT++instance ToCStruct PipelineRasterizationStateStreamCreateInfoEXT+instance Show PipelineRasterizationStateStreamCreateInfoEXT++instance FromCStruct PipelineRasterizationStateStreamCreateInfoEXT+
src/Graphics/Vulkan/Extensions/VK_EXT_validation_cache.hs view
@@ -1,292 +1,255 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_EXT_validation_cache- ( VkValidationCacheHeaderVersionEXT(..)- , pattern VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT- , VkValidationCacheCreateFlagsEXT(..)- , pattern VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT- , pattern VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT- , pattern VK_OBJECT_TYPE_VALIDATION_CACHE_EXT- , pattern VK_EXT_VALIDATION_CACHE_SPEC_VERSION- , pattern VK_EXT_VALIDATION_CACHE_EXTENSION_NAME- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT- , VkValidationCacheEXT- , vkCreateValidationCacheEXT- , vkDestroyValidationCacheEXT- , vkGetValidationCacheDataEXT- , vkMergeValidationCachesEXT- , VkValidationCacheCreateInfoEXT(..)- , VkShaderModuleValidationCacheCreateInfoEXT(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Int- ( Int32- )-import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.C.Types- ( CSize(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkObjectType(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- )-import Graphics.Vulkan.Extensions.VK_EXT_debug_report- ( VkDebugReportObjectTypeEXT(..)- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT- )----- ** VkValidationCacheHeaderVersionEXT---- | VkValidationCacheHeaderVersionEXT - Encode validation cache version------ = See Also------ UNKNOWN:vkCreateValdiationCacheEXT, 'vkGetValidationCacheDataEXT'-newtype VkValidationCacheHeaderVersionEXT = VkValidationCacheHeaderVersionEXT Int32- deriving (Eq, Ord, Storable)--instance Show VkValidationCacheHeaderVersionEXT where- showsPrec _ VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = showString "VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT"- showsPrec p (VkValidationCacheHeaderVersionEXT x) = showParen (p >= 11) (showString "VkValidationCacheHeaderVersionEXT " . showsPrec 11 x)--instance Read VkValidationCacheHeaderVersionEXT where- readPrec = parens ( choose [ ("VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT", pure VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT)- ] +++- prec 10 (do- expectP (Ident "VkValidationCacheHeaderVersionEXT")- v <- step readPrec- pure (VkValidationCacheHeaderVersionEXT v)- )- )---- | @VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT@ specifies version one of--- the validation cache.-pattern VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT :: VkValidationCacheHeaderVersionEXT-pattern VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = VkValidationCacheHeaderVersionEXT 1--- ** VkValidationCacheCreateFlagsEXT---- | VkValidationCacheCreateFlagsEXT - Reserved for future use------ = Description------ @VkValidationCacheCreateFlagsEXT@ is a bitmask type for setting a mask,--- but is currently reserved for future use.------ = See Also------ 'VkValidationCacheCreateInfoEXT'-newtype VkValidationCacheCreateFlagsEXT = VkValidationCacheCreateFlagsEXT VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkValidationCacheCreateFlagsEXT where- - showsPrec p (VkValidationCacheCreateFlagsEXT x) = showParen (p >= 11) (showString "VkValidationCacheCreateFlagsEXT " . showsPrec 11 x)--instance Read VkValidationCacheCreateFlagsEXT where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkValidationCacheCreateFlagsEXT")- v <- step readPrec- pure (VkValidationCacheCreateFlagsEXT v)- )- )+module Graphics.Vulkan.Extensions.VK_EXT_validation_cache ( createValidationCacheEXT+ , withValidationCacheEXT+ , destroyValidationCacheEXT+ , getValidationCacheDataEXT+ , mergeValidationCachesEXT+ , ValidationCacheCreateInfoEXT(..)+ , ShaderModuleValidationCacheCreateInfoEXT(..)+ , ValidationCacheCreateFlagsEXT(..)+ , ValidationCacheHeaderVersionEXT( VALIDATION_CACHE_HEADER_VERSION_ONE_EXT+ , ..+ )+ , EXT_VALIDATION_CACHE_SPEC_VERSION+ , pattern EXT_VALIDATION_CACHE_SPEC_VERSION+ , EXT_VALIDATION_CACHE_EXTENSION_NAME+ , pattern EXT_VALIDATION_CACHE_EXTENSION_NAME+ , ValidationCacheEXT(..)+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.ByteString (packCStringLen)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Bits (Bits)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.C.Types (CSize)+import Foreign.C.Types (CSize(..))+import Foreign.C.Types (CSize(CSize))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Data.Word (Word64)+import Text.Read.Lex (Lexeme(Ident))+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateValidationCacheEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyValidationCacheEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetValidationCacheDataEXT))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkMergeValidationCachesEXT))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Extensions.Handles (ValidationCacheEXT)+import Graphics.Vulkan.Extensions.Handles (ValidationCacheEXT(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.Handles (ValidationCacheEXT(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateValidationCacheEXT+ :: FunPtr (Ptr Device_T -> Ptr ValidationCacheCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr ValidationCacheEXT -> IO Result) -> Ptr Device_T -> Ptr ValidationCacheCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr ValidationCacheEXT -> IO Result --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT"-pattern VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = VkStructureType 1000160000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"-pattern VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = VkStructureType 1000160001--- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_VALIDATION_CACHE_EXT"-pattern VK_OBJECT_TYPE_VALIDATION_CACHE_EXT :: VkObjectType-pattern VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = VkObjectType 1000160000--- No documentation found for TopLevel "VK_EXT_VALIDATION_CACHE_SPEC_VERSION"-pattern VK_EXT_VALIDATION_CACHE_SPEC_VERSION :: Integral a => a-pattern VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_EXT_VALIDATION_CACHE_EXTENSION_NAME"-pattern VK_EXT_VALIDATION_CACHE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache"--- No documentation found for TopLevel "VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT--- | Dummy data to tag the 'Ptr' with-data VkValidationCacheEXT_T--- | VkValidationCacheEXT - Opaque handle to a validation cache object------ = See Also------ 'VkShaderModuleValidationCacheCreateInfoEXT',--- 'vkCreateValidationCacheEXT', 'vkDestroyValidationCacheEXT',--- 'vkGetValidationCacheDataEXT', 'vkMergeValidationCachesEXT'-type VkValidationCacheEXT = Ptr VkValidationCacheEXT_T -- | vkCreateValidationCacheEXT - Creates a new validation cache -- -- = Parameters ----- - @device@ is the logical device that creates the validation cache--- object.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the validation cache object. ----- - @pCreateInfo@ is a pointer to a @VkValidationCacheCreateInfoEXT@--- structure that contains the initial parameters for the validation--- cache object.+-- - @pCreateInfo@ is a pointer to a 'ValidationCacheCreateInfoEXT'+-- structure containing the initial parameters for the validation cache+-- object. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. ----- - @pValidationCache@ is a pointer to a @VkValidationCacheEXT@ handle--- in which the resulting validation cache object is returned.+-- - @pValidationCache@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.ValidationCacheEXT' handle in+-- which the resulting validation cache object is returned. -- -- = Description ----- __Note__+-- Note -- -- Applications /can/ track and manage the total host memory size of a -- validation cache object using the @pAllocator@. Applications /can/ limit -- the amount of data retrieved from a validation cache object in--- @vkGetValidationCacheDataEXT@. Implementations /should/ not internally+-- 'getValidationCacheDataEXT'. Implementations /should/ not internally -- limit the total number of entries added to a validation cache object or -- the total host memory consumed. -- -- Once created, a validation cache /can/ be passed to the--- @vkCreateShaderModule@ command as part of the @VkShaderModuleCreateInfo@--- @pNext@ chain. If a @VkShaderModuleValidationCacheCreateInfoEXT@ object--- is part of the @VkShaderModuleCreateInfo@::@pNext@ chain, and its--- @validationCache@ field is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', the implementation+-- 'Graphics.Vulkan.Core10.Shader.createShaderModule' command by adding+-- this object to the+-- 'Graphics.Vulkan.Core10.Shader.ShaderModuleCreateInfo' structure’s+-- @pNext@ chain. If a 'ShaderModuleValidationCacheCreateInfoEXT' object is+-- included in the+-- 'Graphics.Vulkan.Core10.Shader.ShaderModuleCreateInfo'::@pNext@ chain,+-- and its @validationCache@ field is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', the implementation -- will query it for possible reuse opportunities and update it with new -- content. The use of the validation cache object in these commands is -- internally synchronized, and the same validation cache object /can/ be -- used in multiple threads simultaneously. ----- __Note__+-- Note -- -- Implementations /should/ make every effort to limit any critical -- sections to the actual accesses to the cache, which is expected to be--- significantly shorter than the duration of the @vkCreateShaderModule@--- command.+-- significantly shorter than the duration of the+-- 'Graphics.Vulkan.Core10.Shader.createShaderModule' command. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle -- -- - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkValidationCacheCreateInfoEXT@ structure+-- 'ValidationCacheCreateInfoEXT' structure -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure -- -- - @pValidationCache@ /must/ be a valid pointer to a--- @VkValidationCacheEXT@ handle+-- 'Graphics.Vulkan.Extensions.Handles.ValidationCacheEXT' handle -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' --+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkValidationCacheCreateInfoEXT', 'VkValidationCacheEXT'+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device', 'ValidationCacheCreateInfoEXT',+-- 'Graphics.Vulkan.Extensions.Handles.ValidationCacheEXT'+createValidationCacheEXT :: Device -> ValidationCacheCreateInfoEXT -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (ValidationCacheEXT)+createValidationCacheEXT device createInfo allocator = evalContT $ do+ let vkCreateValidationCacheEXT' = mkVkCreateValidationCacheEXT (pVkCreateValidationCacheEXT (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPValidationCache <- ContT $ bracket (callocBytes @ValidationCacheEXT 8) free+ r <- lift $ vkCreateValidationCacheEXT' (deviceHandle (device)) pCreateInfo pAllocator (pPValidationCache)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pValidationCache <- lift $ peek @ValidationCacheEXT pPValidationCache+ pure $ (pValidationCache)++-- | A safe wrapper for 'createValidationCacheEXT' and+-- 'destroyValidationCacheEXT' using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withValidationCacheEXT :: Device -> ValidationCacheCreateInfoEXT -> Maybe AllocationCallbacks -> (ValidationCacheEXT -> IO r) -> IO r+withValidationCacheEXT device validationCacheCreateInfoEXT allocationCallbacks =+ bracket+ (createValidationCacheEXT device validationCacheCreateInfoEXT allocationCallbacks)+ (\o -> destroyValidationCacheEXT device o allocationCallbacks)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkCreateValidationCacheEXT" vkCreateValidationCacheEXT :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkValidationCacheCreateInfoEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pValidationCache" ::: Ptr VkValidationCacheEXT) -> IO VkResult+ "dynamic" mkVkDestroyValidationCacheEXT+ :: FunPtr (Ptr Device_T -> ValidationCacheEXT -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> ValidationCacheEXT -> Ptr AllocationCallbacks -> IO ()+ -- | vkDestroyValidationCacheEXT - Destroy a validation cache object -- -- = Parameters ----- - @device@ is the logical device that destroys the validation cache--- object.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the validation cache object. -- -- - @validationCache@ is the handle of the validation cache to destroy. -- -- - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation> -- chapter. -- -- == Valid Usage ----- - If @VkAllocationCallbacks@ were provided when @validationCache@ was--- created, a compatible set of callbacks /must/ be provided here+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when @validationCache@ was created, a compatible set+-- of callbacks /must/ be provided here ----- - If no @VkAllocationCallbacks@ were provided when @validationCache@--- was created, @pAllocator@ /must/ be @NULL@+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when @validationCache@ was created, @pAllocator@+-- /must/ be @NULL@ -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle -- -- - If @validationCache@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @validationCache@--- /must/ be a valid @VkValidationCacheEXT@ handle+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @validationCache@+-- /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.ValidationCacheEXT' handle -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure -- -- - If @validationCache@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@+-- allocated, or retrieved from 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization --@@ -294,19 +257,32 @@ -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkValidationCacheEXT'+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Extensions.Handles.ValidationCacheEXT'+destroyValidationCacheEXT :: Device -> ValidationCacheEXT -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyValidationCacheEXT device validationCache allocator = evalContT $ do+ let vkDestroyValidationCacheEXT' = mkVkDestroyValidationCacheEXT (pVkDestroyValidationCacheEXT (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyValidationCacheEXT' (deviceHandle (device)) (validationCache) pAllocator+ pure $ ()++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkDestroyValidationCacheEXT" vkDestroyValidationCacheEXT :: ("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()+ "dynamic" mkVkGetValidationCacheDataEXT+ :: FunPtr (Ptr Device_T -> ValidationCacheEXT -> Ptr CSize -> Ptr () -> IO Result) -> Ptr Device_T -> ValidationCacheEXT -> Ptr CSize -> Ptr () -> IO Result+ -- | vkGetValidationCacheDataEXT - Get the data store from a validation cache -- -- = Parameters ----- - @device@ is the logical device that owns the validation cache.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the validation cache. -- -- - @validationCache@ is the validation cache to retrieve data from. --@@ -326,14 +302,15 @@ -- -- If @pDataSize@ is less than the maximum size that /can/ be retrieved by -- the validation cache, at most @pDataSize@ bytes will be written to--- @pData@, and @vkGetValidationCacheDataEXT@ will return @VK_INCOMPLETE@.--- Any data written to @pData@ is valid and /can/ be provided as the--- @pInitialData@ member of the @VkValidationCacheCreateInfoEXT@ structure--- passed to @vkCreateValidationCacheEXT@.+-- @pData@, and 'getValidationCacheDataEXT' will return+-- 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'. Any data written to+-- @pData@ is valid and /can/ be provided as the @pInitialData@ member of+-- the 'ValidationCacheCreateInfoEXT' structure passed to+-- 'createValidationCacheEXT'. ----- Two calls to @vkGetValidationCacheDataEXT@ with the same parameters--- /must/ retrieve the same data unless a command that modifies the--- contents of the cache is called between them.+-- Two calls to 'getValidationCacheDataEXT' with the same parameters /must/+-- retrieve the same data unless a command that modifies the contents of+-- the cache is called between them. -- -- Applications /can/ store the data retrieved from the validation cache, -- and use these data, possibly in a future run of the application, to@@ -344,32 +321,32 @@ -- bytes written to @pData@ /must/ be a header consisting of the following -- members: ----- +--------+----------------+--------------------------------------------------+--- | Offset | Size | Meaning |--- +========+================+==================================================+--- | 0 | 4 | length in bytes of the entire validation cache |--- | | | header written as a stream of bytes, with the |--- | | | least significant byte first |--- +--------+----------------+--------------------------------------------------+--- | 4 | 4 | a 'VkValidationCacheHeaderVersionEXT' value |--- | | | written as a stream of bytes, with the least |--- | | | significant byte first |--- +--------+----------------+--------------------------------------------------+--- | 8 | @VK_UUID_SIZE@ | a layer commit ID expressed as a UUID, which |--- | | | uniquely identifies the version of the |--- | | | validation layers used to generate these |--- | | | validation results |--- +--------+----------------+--------------------------------------------------++-- +--------+-------------------------------------------------+--------------------------------------------------++-- | Offset | Size | Meaning |+-- +========+=================================================+==================================================++-- | 0 | 4 | length in bytes of the entire validation cache |+-- | | | header written as a stream of bytes, with the |+-- | | | least significant byte first |+-- +--------+-------------------------------------------------+--------------------------------------------------++-- | 4 | 4 | a 'ValidationCacheHeaderVersionEXT' value |+-- | | | written as a stream of bytes, with the least |+-- | | | significant byte first |+-- +--------+-------------------------------------------------+--------------------------------------------------++-- | 8 | 'Graphics.Vulkan.Core10.APIConstants.UUID_SIZE' | a layer commit ID expressed as a UUID, which |+-- | | | uniquely identifies the version of the |+-- | | | validation layers used to generate these |+-- | | | validation results |+-- +--------+-------------------------------------------------+--------------------------------------------------+ -- -- Layout for validation cache header version--- @VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT@+-- 'VALIDATION_CACHE_HEADER_VERSION_ONE_EXT' -- -- The first four bytes encode the length of the entire validation cache -- header, in bytes. This value includes all fields in the header including -- the validation cache version field and the size of the length field. -- -- The next four bytes encode the validation cache version, as described--- for 'VkValidationCacheHeaderVersionEXT'. A consumer of the validation+-- for 'ValidationCacheHeaderVersionEXT'. A consumer of the validation -- cache /should/ use the cache version to interpret the remainder of the -- cache header. --@@ -379,9 +356,11 @@ -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - @validationCache@ /must/ be a valid @VkValidationCacheEXT@ handle+-- - @validationCache@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.ValidationCacheEXT' handle -- -- - @pDataSize@ /must/ be a valid pointer to a @size_t@ value --@@ -390,49 +369,69 @@ -- @pDataSize@ bytes -- -- - @validationCache@ /must/ have been created, allocated, or retrieved--- from @device@+-- from 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- - @VK_INCOMPLETE@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkValidationCacheEXT'+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Extensions.Handles.ValidationCacheEXT'+getValidationCacheDataEXT :: Device -> ValidationCacheEXT -> IO (Result, ("data" ::: ByteString))+getValidationCacheDataEXT device validationCache = evalContT $ do+ let vkGetValidationCacheDataEXT' = mkVkGetValidationCacheDataEXT (pVkGetValidationCacheDataEXT (deviceCmds (device :: Device)))+ let device' = deviceHandle (device)+ pPDataSize <- ContT $ bracket (callocBytes @CSize 8) free+ r <- lift $ vkGetValidationCacheDataEXT' device' (validationCache) (pPDataSize) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pDataSize <- lift $ peek @CSize pPDataSize+ pPData <- ContT $ bracket (callocBytes @(()) (fromIntegral (((\(CSize a) -> a) pDataSize)))) free+ r' <- lift $ vkGetValidationCacheDataEXT' device' (validationCache) (pPDataSize) (pPData)+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pDataSize'' <- lift $ peek @CSize pPDataSize+ pData' <- lift $ packCStringLen (castPtr @() @CChar pPData, (fromIntegral (((\(CSize a) -> a) pDataSize''))))+ pure $ ((r'), pData')++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkGetValidationCacheDataEXT" vkGetValidationCacheDataEXT :: ("device" ::: VkDevice) -> ("validationCache" ::: VkValidationCacheEXT) -> ("pDataSize" ::: Ptr CSize) -> ("pData" ::: Ptr ()) -> IO VkResult+ "dynamic" mkVkMergeValidationCachesEXT+ :: FunPtr (Ptr Device_T -> ValidationCacheEXT -> Word32 -> Ptr ValidationCacheEXT -> IO Result) -> Ptr Device_T -> ValidationCacheEXT -> Word32 -> Ptr ValidationCacheEXT -> IO Result+ -- | vkMergeValidationCachesEXT - Combine the data stores of validation -- caches -- -- = Parameters ----- - @device@ is the logical device that owns the validation cache--- objects.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the validation cache objects. -- -- - @dstCache@ is the handle of the validation cache to merge results -- into. -- -- - @srcCacheCount@ is the length of the @pSrcCaches@ array. ----- - @pSrcCaches@ is an array of validation cache handles, which will be--- merged into @dstCache@. The previous contents of @dstCache@ are--- included after the merge.+-- - @pSrcCaches@ is a pointer to an array of validation cache handles,+-- which will be merged into @dstCache@. The previous contents of+-- @dstCache@ are included after the merge. -- -- = Description ----- __Note__+-- Note -- -- The details of the merge operation are implementation dependent, but -- implementations /should/ merge the contents of the specified validation@@ -444,20 +443,23 @@ -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - @dstCache@ /must/ be a valid @VkValidationCacheEXT@ handle+-- - @dstCache@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.ValidationCacheEXT' handle -- -- - @pSrcCaches@ /must/ be a valid pointer to an array of--- @srcCacheCount@ valid @VkValidationCacheEXT@ handles+-- @srcCacheCount@ valid+-- 'Graphics.Vulkan.Extensions.Handles.ValidationCacheEXT' handles -- -- - @srcCacheCount@ /must/ be greater than @0@ -- -- - @dstCache@ /must/ have been created, allocated, or retrieved from--- @device@+-- 'Graphics.Vulkan.Core10.Handles.Device' -- -- - Each element of @pSrcCaches@ /must/ have been created, allocated, or--- retrieved from @device@+-- retrieved from 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization --@@ -465,114 +467,224 @@ -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkValidationCacheEXT'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkMergeValidationCachesEXT" vkMergeValidationCachesEXT :: ("device" ::: VkDevice) -> ("dstCache" ::: VkValidationCacheEXT) -> ("srcCacheCount" ::: Word32) -> ("pSrcCaches" ::: Ptr VkValidationCacheEXT) -> IO VkResult+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Extensions.Handles.ValidationCacheEXT'+mergeValidationCachesEXT :: Device -> ("dstCache" ::: ValidationCacheEXT) -> ("srcCaches" ::: Vector ValidationCacheEXT) -> IO ()+mergeValidationCachesEXT device dstCache srcCaches = evalContT $ do+ let vkMergeValidationCachesEXT' = mkVkMergeValidationCachesEXT (pVkMergeValidationCachesEXT (deviceCmds (device :: Device)))+ pPSrcCaches <- ContT $ allocaBytesAligned @ValidationCacheEXT ((Data.Vector.length (srcCaches)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPSrcCaches `plusPtr` (8 * (i)) :: Ptr ValidationCacheEXT) (e)) (srcCaches)+ r <- lift $ vkMergeValidationCachesEXT' (deviceHandle (device)) (dstCache) ((fromIntegral (Data.Vector.length $ (srcCaches)) :: Word32)) (pPSrcCaches)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))++ -- | VkValidationCacheCreateInfoEXT - Structure specifying parameters of a -- newly created validation cache -- -- == Valid Usage -- -- - If @initialDataSize@ is not @0@, it /must/ be equal to the size of--- @pInitialData@, as returned by @vkGetValidationCacheDataEXT@ when+-- @pInitialData@, as returned by 'getValidationCacheDataEXT' when -- @pInitialData@ was originally retrieved -- -- - If @initialDataSize@ is not @0@, @pInitialData@ /must/ have been--- retrieved from a previous call to @vkGetValidationCacheDataEXT@+-- retrieved from a previous call to 'getValidationCacheDataEXT' -- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT' -- -- - @pNext@ /must/ be @NULL@ ----- - @flags@ /must/ be @0@+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@ -- -- - If @initialDataSize@ is not @0@, @pInitialData@ /must/ be a valid -- pointer to an array of @initialDataSize@ bytes -- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'VkValidationCacheCreateFlagsEXT', 'vkCreateValidationCacheEXT'-data VkValidationCacheCreateInfoEXT = VkValidationCacheCreateInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkValidationCacheCreateFlagsEXT+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'ValidationCacheCreateFlagsEXT', 'createValidationCacheEXT'+data ValidationCacheCreateInfoEXT = ValidationCacheCreateInfoEXT+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: ValidationCacheCreateFlagsEXT , -- | @initialDataSize@ is the number of bytes in @pInitialData@. If- -- @initialDataSize@ is zero, the validation cache will initially be empty.- vkInitialDataSize :: CSize+ -- @initialDataSize@ is zero, the validation cache will initially be empty.+ initialDataSize :: Word64 , -- | @pInitialData@ is a pointer to previously retrieved validation cache- -- data. If the validation cache data is incompatible (as defined below)- -- with the device, the validation cache will be initially empty. If- -- @initialDataSize@ is zero, @pInitialData@ is ignored.- vkPInitialData :: Ptr ()+ -- data. If the validation cache data is incompatible (as defined below)+ -- with the device, the validation cache will be initially empty. If+ -- @initialDataSize@ is zero, @pInitialData@ is ignored.+ initialData :: Ptr () }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show ValidationCacheCreateInfoEXT -instance Storable VkValidationCacheCreateInfoEXT where+instance ToCStruct ValidationCacheCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ValidationCacheCreateInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ValidationCacheCreateFlagsEXT)) (flags)+ poke ((p `plusPtr` 24 :: Ptr CSize)) (CSize (initialDataSize))+ poke ((p `plusPtr` 32 :: Ptr (Ptr ()))) (initialData)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 32 :: Ptr (Ptr ()))) (zero)+ f++instance FromCStruct ValidationCacheCreateInfoEXT where+ peekCStruct p = do+ flags <- peek @ValidationCacheCreateFlagsEXT ((p `plusPtr` 16 :: Ptr ValidationCacheCreateFlagsEXT))+ initialDataSize <- peek @CSize ((p `plusPtr` 24 :: Ptr CSize))+ pInitialData <- peek @(Ptr ()) ((p `plusPtr` 32 :: Ptr (Ptr ())))+ pure $ ValidationCacheCreateInfoEXT+ flags ((\(CSize a) -> a) initialDataSize) pInitialData++instance Storable ValidationCacheCreateInfoEXT where sizeOf ~_ = 40 alignment ~_ = 8- peek ptr = VkValidationCacheCreateInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkValidationCacheCreateInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkValidationCacheCreateInfoEXT))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkValidationCacheCreateInfoEXT))- *> poke (ptr `plusPtr` 24) (vkInitialDataSize (poked :: VkValidationCacheCreateInfoEXT))- *> poke (ptr `plusPtr` 32) (vkPInitialData (poked :: VkValidationCacheCreateInfoEXT))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ValidationCacheCreateInfoEXT where+ zero = ValidationCacheCreateInfoEXT+ zero+ zero+ zero++ -- | VkShaderModuleValidationCacheCreateInfoEXT - Specify validation cache to -- use during shader module creation -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT@------ - @validationCache@ /must/ be a valid @VkValidationCacheEXT@ handle--- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkValidationCacheEXT'-data VkShaderModuleValidationCacheCreateInfoEXT = VkShaderModuleValidationCacheCreateInfoEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @validationCache@ is the validation cache object from which the results- -- of prior validation attempts will be written, and to which new- -- validation results for this VkShaderModule will be written (if not- -- already present).- vkValidationCache :: VkValidationCacheEXT- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Extensions.Handles.ValidationCacheEXT'+data ShaderModuleValidationCacheCreateInfoEXT = ShaderModuleValidationCacheCreateInfoEXT+ { -- | @validationCache@ /must/ be a valid+ -- 'Graphics.Vulkan.Extensions.Handles.ValidationCacheEXT' handle+ validationCache :: ValidationCacheEXT }+ deriving (Typeable)+deriving instance Show ShaderModuleValidationCacheCreateInfoEXT -instance Storable VkShaderModuleValidationCacheCreateInfoEXT where+instance ToCStruct ShaderModuleValidationCacheCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ShaderModuleValidationCacheCreateInfoEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ValidationCacheEXT)) (validationCache)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ValidationCacheEXT)) (zero)+ f++instance FromCStruct ShaderModuleValidationCacheCreateInfoEXT where+ peekCStruct p = do+ validationCache <- peek @ValidationCacheEXT ((p `plusPtr` 16 :: Ptr ValidationCacheEXT))+ pure $ ShaderModuleValidationCacheCreateInfoEXT+ validationCache++instance Storable ShaderModuleValidationCacheCreateInfoEXT where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkShaderModuleValidationCacheCreateInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkShaderModuleValidationCacheCreateInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkShaderModuleValidationCacheCreateInfoEXT))- *> poke (ptr `plusPtr` 16) (vkValidationCache (poked :: VkShaderModuleValidationCacheCreateInfoEXT))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ShaderModuleValidationCacheCreateInfoEXT where+ zero = ShaderModuleValidationCacheCreateInfoEXT+ zero+++-- | VkValidationCacheCreateFlagsEXT - Reserved for future use+--+-- = Description+--+-- 'ValidationCacheCreateFlagsEXT' is a bitmask type for setting a mask,+-- but is currently reserved for future use.+--+-- = See Also+--+-- 'ValidationCacheCreateInfoEXT'+newtype ValidationCacheCreateFlagsEXT = ValidationCacheCreateFlagsEXT Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show ValidationCacheCreateFlagsEXT where+ showsPrec p = \case+ ValidationCacheCreateFlagsEXT x -> showParen (p >= 11) (showString "ValidationCacheCreateFlagsEXT 0x" . showHex x)++instance Read ValidationCacheCreateFlagsEXT where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "ValidationCacheCreateFlagsEXT")+ v <- step readPrec+ pure (ValidationCacheCreateFlagsEXT v)))+++-- | VkValidationCacheHeaderVersionEXT - Encode validation cache version+--+-- = See Also+--+-- 'createValidationCacheEXT', 'getValidationCacheDataEXT'+newtype ValidationCacheHeaderVersionEXT = ValidationCacheHeaderVersionEXT Int32+ deriving newtype (Eq, Ord, Storable, Zero)+-- Note that the zero instance does not produce a valid value, passing 'zero' to Vulkan will result in an error++-- | 'VALIDATION_CACHE_HEADER_VERSION_ONE_EXT' specifies version one of the+-- validation cache.+pattern VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = ValidationCacheHeaderVersionEXT 1+{-# complete VALIDATION_CACHE_HEADER_VERSION_ONE_EXT :: ValidationCacheHeaderVersionEXT #-}++instance Show ValidationCacheHeaderVersionEXT where+ showsPrec p = \case+ VALIDATION_CACHE_HEADER_VERSION_ONE_EXT -> showString "VALIDATION_CACHE_HEADER_VERSION_ONE_EXT"+ ValidationCacheHeaderVersionEXT x -> showParen (p >= 11) (showString "ValidationCacheHeaderVersionEXT " . showsPrec 11 x)++instance Read ValidationCacheHeaderVersionEXT where+ readPrec = parens (choose [("VALIDATION_CACHE_HEADER_VERSION_ONE_EXT", pure VALIDATION_CACHE_HEADER_VERSION_ONE_EXT)]+ ++++ prec 10 (do+ expectP (Ident "ValidationCacheHeaderVersionEXT")+ v <- step readPrec+ pure (ValidationCacheHeaderVersionEXT v)))+++type EXT_VALIDATION_CACHE_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_VALIDATION_CACHE_SPEC_VERSION"+pattern EXT_VALIDATION_CACHE_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_VALIDATION_CACHE_SPEC_VERSION = 1+++type EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache"++-- No documentation found for TopLevel "VK_EXT_VALIDATION_CACHE_EXTENSION_NAME"+pattern EXT_VALIDATION_CACHE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_validation_cache.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_validation_cache ( ShaderModuleValidationCacheCreateInfoEXT+ , ValidationCacheCreateInfoEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ShaderModuleValidationCacheCreateInfoEXT++instance ToCStruct ShaderModuleValidationCacheCreateInfoEXT+instance Show ShaderModuleValidationCacheCreateInfoEXT++instance FromCStruct ShaderModuleValidationCacheCreateInfoEXT+++data ValidationCacheCreateInfoEXT++instance ToCStruct ValidationCacheCreateInfoEXT+instance Show ValidationCacheCreateInfoEXT++instance FromCStruct ValidationCacheCreateInfoEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_validation_features.hs view
@@ -0,0 +1,270 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_validation_features ( ValidationFeaturesEXT(..)+ , ValidationFeatureEnableEXT( VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT+ , VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT+ , VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT+ , ..+ )+ , ValidationFeatureDisableEXT( VALIDATION_FEATURE_DISABLE_ALL_EXT+ , VALIDATION_FEATURE_DISABLE_SHADERS_EXT+ , VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT+ , VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT+ , VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT+ , VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT+ , VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT+ , ..+ )+ , EXT_VALIDATION_FEATURES_SPEC_VERSION+ , pattern EXT_VALIDATION_FEATURES_SPEC_VERSION+ , EXT_VALIDATION_FEATURES_EXTENSION_NAME+ , pattern EXT_VALIDATION_FEATURES_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import Data.Int (Int32)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_VALIDATION_FEATURES_EXT))+-- | VkValidationFeaturesEXT - Specify validation features to enable or+-- disable for a Vulkan instance+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_VALIDATION_FEATURES_EXT'+--+-- - If @enabledValidationFeatureCount@ is not @0@,+-- @pEnabledValidationFeatures@ /must/ be a valid pointer to an array+-- of @enabledValidationFeatureCount@ valid+-- 'ValidationFeatureEnableEXT' values+--+-- - If @disabledValidationFeatureCount@ is not @0@,+-- @pDisabledValidationFeatures@ /must/ be a valid pointer to an array+-- of @disabledValidationFeatureCount@ valid+-- 'ValidationFeatureDisableEXT' values+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'ValidationFeatureDisableEXT', 'ValidationFeatureEnableEXT'+data ValidationFeaturesEXT = ValidationFeaturesEXT+ { -- | @pEnabledValidationFeatures@ is a pointer to an array of+ -- 'ValidationFeatureEnableEXT' values specifying the validation features+ -- to be enabled.+ enabledValidationFeatures :: Vector ValidationFeatureEnableEXT+ , -- | @pDisabledValidationFeatures@ is a pointer to an array of+ -- 'ValidationFeatureDisableEXT' values specifying the validation features+ -- to be disabled.+ disabledValidationFeatures :: Vector ValidationFeatureDisableEXT+ }+ deriving (Typeable)+deriving instance Show ValidationFeaturesEXT++instance ToCStruct ValidationFeaturesEXT where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ValidationFeaturesEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_VALIDATION_FEATURES_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (enabledValidationFeatures)) :: Word32))+ pPEnabledValidationFeatures' <- ContT $ allocaBytesAligned @ValidationFeatureEnableEXT ((Data.Vector.length (enabledValidationFeatures)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPEnabledValidationFeatures' `plusPtr` (4 * (i)) :: Ptr ValidationFeatureEnableEXT) (e)) (enabledValidationFeatures)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ValidationFeatureEnableEXT))) (pPEnabledValidationFeatures')+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (disabledValidationFeatures)) :: Word32))+ pPDisabledValidationFeatures' <- ContT $ allocaBytesAligned @ValidationFeatureDisableEXT ((Data.Vector.length (disabledValidationFeatures)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPDisabledValidationFeatures' `plusPtr` (4 * (i)) :: Ptr ValidationFeatureDisableEXT) (e)) (disabledValidationFeatures)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr ValidationFeatureDisableEXT))) (pPDisabledValidationFeatures')+ lift $ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_VALIDATION_FEATURES_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPEnabledValidationFeatures' <- ContT $ allocaBytesAligned @ValidationFeatureEnableEXT ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPEnabledValidationFeatures' `plusPtr` (4 * (i)) :: Ptr ValidationFeatureEnableEXT) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ValidationFeatureEnableEXT))) (pPEnabledValidationFeatures')+ pPDisabledValidationFeatures' <- ContT $ allocaBytesAligned @ValidationFeatureDisableEXT ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPDisabledValidationFeatures' `plusPtr` (4 * (i)) :: Ptr ValidationFeatureDisableEXT) (e)) (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr ValidationFeatureDisableEXT))) (pPDisabledValidationFeatures')+ lift $ f++instance FromCStruct ValidationFeaturesEXT where+ peekCStruct p = do+ enabledValidationFeatureCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pEnabledValidationFeatures <- peek @(Ptr ValidationFeatureEnableEXT) ((p `plusPtr` 24 :: Ptr (Ptr ValidationFeatureEnableEXT)))+ pEnabledValidationFeatures' <- generateM (fromIntegral enabledValidationFeatureCount) (\i -> peek @ValidationFeatureEnableEXT ((pEnabledValidationFeatures `advancePtrBytes` (4 * (i)) :: Ptr ValidationFeatureEnableEXT)))+ disabledValidationFeatureCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pDisabledValidationFeatures <- peek @(Ptr ValidationFeatureDisableEXT) ((p `plusPtr` 40 :: Ptr (Ptr ValidationFeatureDisableEXT)))+ pDisabledValidationFeatures' <- generateM (fromIntegral disabledValidationFeatureCount) (\i -> peek @ValidationFeatureDisableEXT ((pDisabledValidationFeatures `advancePtrBytes` (4 * (i)) :: Ptr ValidationFeatureDisableEXT)))+ pure $ ValidationFeaturesEXT+ pEnabledValidationFeatures' pDisabledValidationFeatures'++instance Zero ValidationFeaturesEXT where+ zero = ValidationFeaturesEXT+ mempty+ mempty+++-- | VkValidationFeatureEnableEXT - Specify validation features to enable+--+-- = See Also+--+-- 'ValidationFeaturesEXT'+newtype ValidationFeatureEnableEXT = ValidationFeatureEnableEXT Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT' specifies that GPU-assisted+-- validation is enabled. Activating this feature instruments shader+-- programs to generate additional diagnostic data. This feature is+-- disabled by default.+pattern VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = ValidationFeatureEnableEXT 0+-- | 'VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT'+-- specifies that the validation layers reserve a descriptor set binding+-- slot for their own use. The layer reports a value for+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxBoundDescriptorSets@+-- that is one less than the value reported by the device. If the device+-- supports the binding of only one descriptor set, the validation layer+-- does not perform GPU-assisted validation. This feature is disabled by+-- default. The GPU-assisted validation feature must be enabled in order to+-- use this feature.+pattern VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = ValidationFeatureEnableEXT 1+-- | 'VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT' specifies that Vulkan+-- best-practices validation is enabled. Activating this feature enables+-- the output of warnings related to common misuse of the API, but which+-- are not explicitly prohibited by the specification. This feature is+-- disabled by default.+pattern VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = ValidationFeatureEnableEXT 2+{-# complete VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT,+ VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT,+ VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT :: ValidationFeatureEnableEXT #-}++instance Show ValidationFeatureEnableEXT where+ showsPrec p = \case+ VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT -> showString "VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT"+ VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT -> showString "VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT"+ VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT -> showString "VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT"+ ValidationFeatureEnableEXT x -> showParen (p >= 11) (showString "ValidationFeatureEnableEXT " . showsPrec 11 x)++instance Read ValidationFeatureEnableEXT where+ readPrec = parens (choose [("VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT", pure VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT)+ , ("VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT", pure VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT)+ , ("VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT", pure VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT)]+ ++++ prec 10 (do+ expectP (Ident "ValidationFeatureEnableEXT")+ v <- step readPrec+ pure (ValidationFeatureEnableEXT v)))+++-- | VkValidationFeatureDisableEXT - Specify validation features to disable+--+-- = See Also+--+-- 'ValidationFeaturesEXT'+newtype ValidationFeatureDisableEXT = ValidationFeatureDisableEXT Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'VALIDATION_FEATURE_DISABLE_ALL_EXT' specifies that all validation+-- checks are disabled.+pattern VALIDATION_FEATURE_DISABLE_ALL_EXT = ValidationFeatureDisableEXT 0+-- | 'VALIDATION_FEATURE_DISABLE_SHADERS_EXT' specifies that shader+-- validation is disabled. This feature is enabled by default.+pattern VALIDATION_FEATURE_DISABLE_SHADERS_EXT = ValidationFeatureDisableEXT 1+-- | 'VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT' specifies that thread+-- safety validation is disabled. This feature is enabled by default.+pattern VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = ValidationFeatureDisableEXT 2+-- | 'VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT' specifies that stateless+-- parameter validation is disabled. This feature is enabled by default.+pattern VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = ValidationFeatureDisableEXT 3+-- | 'VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT' specifies that object+-- lifetime validation is disabled. This feature is enabled by default.+pattern VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = ValidationFeatureDisableEXT 4+-- | 'VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT' specifies that core+-- validation checks are disabled. This feature is enabled by default. If+-- this feature is disabled, the shader validation and GPU-assisted+-- validation features are also disabled.+pattern VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = ValidationFeatureDisableEXT 5+-- | 'VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT' specifies that+-- protection against duplicate non-dispatchable object handles is+-- disabled. This feature is enabled by default.+pattern VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = ValidationFeatureDisableEXT 6+{-# complete VALIDATION_FEATURE_DISABLE_ALL_EXT,+ VALIDATION_FEATURE_DISABLE_SHADERS_EXT,+ VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT,+ VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT,+ VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT,+ VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT,+ VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT :: ValidationFeatureDisableEXT #-}++instance Show ValidationFeatureDisableEXT where+ showsPrec p = \case+ VALIDATION_FEATURE_DISABLE_ALL_EXT -> showString "VALIDATION_FEATURE_DISABLE_ALL_EXT"+ VALIDATION_FEATURE_DISABLE_SHADERS_EXT -> showString "VALIDATION_FEATURE_DISABLE_SHADERS_EXT"+ VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT -> showString "VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT"+ VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT -> showString "VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT"+ VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT -> showString "VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT"+ VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT -> showString "VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT"+ VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT -> showString "VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT"+ ValidationFeatureDisableEXT x -> showParen (p >= 11) (showString "ValidationFeatureDisableEXT " . showsPrec 11 x)++instance Read ValidationFeatureDisableEXT where+ readPrec = parens (choose [("VALIDATION_FEATURE_DISABLE_ALL_EXT", pure VALIDATION_FEATURE_DISABLE_ALL_EXT)+ , ("VALIDATION_FEATURE_DISABLE_SHADERS_EXT", pure VALIDATION_FEATURE_DISABLE_SHADERS_EXT)+ , ("VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT", pure VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT)+ , ("VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT", pure VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT)+ , ("VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT", pure VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT)+ , ("VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT", pure VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT)+ , ("VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT", pure VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT)]+ ++++ prec 10 (do+ expectP (Ident "ValidationFeatureDisableEXT")+ v <- step readPrec+ pure (ValidationFeatureDisableEXT v)))+++type EXT_VALIDATION_FEATURES_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_EXT_VALIDATION_FEATURES_SPEC_VERSION"+pattern EXT_VALIDATION_FEATURES_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_VALIDATION_FEATURES_SPEC_VERSION = 2+++type EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features"++-- No documentation found for TopLevel "VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME"+pattern EXT_VALIDATION_FEATURES_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_validation_features.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_validation_features (ValidationFeaturesEXT) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ValidationFeaturesEXT++instance ToCStruct ValidationFeaturesEXT+instance Show ValidationFeaturesEXT++instance FromCStruct ValidationFeaturesEXT+
src/Graphics/Vulkan/Extensions/VK_EXT_validation_flags.hs view
@@ -1,141 +1,146 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DuplicateRecordFields #-}+module Graphics.Vulkan.Extensions.VK_EXT_validation_flags ( ValidationFlagsEXT(..)+ , ValidationCheckEXT( VALIDATION_CHECK_ALL_EXT+ , VALIDATION_CHECK_SHADERS_EXT+ , ..+ )+ , EXT_VALIDATION_FLAGS_SPEC_VERSION+ , pattern EXT_VALIDATION_FLAGS_SPEC_VERSION+ , EXT_VALIDATION_FLAGS_EXTENSION_NAME+ , pattern EXT_VALIDATION_FLAGS_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_EXT_validation_flags- ( VkValidationCheckEXT(..)- , pattern VK_VALIDATION_CHECK_ALL_EXT- , pattern VK_VALIDATION_CHECK_SHADERS_EXT- , pattern VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT- , pattern VK_EXT_VALIDATION_FLAGS_SPEC_VERSION- , pattern VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME- , VkValidationFlagsEXT(..)- ) where+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import Data.Int (Int32)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_VALIDATION_FLAGS_EXT))+-- | VkValidationFlagsEXT - Specify validation checks to disable for a Vulkan+-- instance+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'ValidationCheckEXT'+data ValidationFlagsEXT = ValidationFlagsEXT+ { -- | @pDisabledValidationChecks@ /must/ be a valid pointer to an array of+ -- @disabledValidationCheckCount@ valid 'ValidationCheckEXT' values+ disabledValidationChecks :: Vector ValidationCheckEXT }+ deriving (Typeable)+deriving instance Show ValidationFlagsEXT -import Data.Int- ( Int32- )-import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )+instance ToCStruct ValidationFlagsEXT where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ValidationFlagsEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_VALIDATION_FLAGS_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (disabledValidationChecks)) :: Word32))+ pPDisabledValidationChecks' <- ContT $ allocaBytesAligned @ValidationCheckEXT ((Data.Vector.length (disabledValidationChecks)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPDisabledValidationChecks' `plusPtr` (4 * (i)) :: Ptr ValidationCheckEXT) (e)) (disabledValidationChecks)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ValidationCheckEXT))) (pPDisabledValidationChecks')+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_VALIDATION_FLAGS_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPDisabledValidationChecks' <- ContT $ allocaBytesAligned @ValidationCheckEXT ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPDisabledValidationChecks' `plusPtr` (4 * (i)) :: Ptr ValidationCheckEXT) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ValidationCheckEXT))) (pPDisabledValidationChecks')+ lift $ f +instance FromCStruct ValidationFlagsEXT where+ peekCStruct p = do+ disabledValidationCheckCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pDisabledValidationChecks <- peek @(Ptr ValidationCheckEXT) ((p `plusPtr` 24 :: Ptr (Ptr ValidationCheckEXT)))+ pDisabledValidationChecks' <- generateM (fromIntegral disabledValidationCheckCount) (\i -> peek @ValidationCheckEXT ((pDisabledValidationChecks `advancePtrBytes` (4 * (i)) :: Ptr ValidationCheckEXT)))+ pure $ ValidationFlagsEXT+ pDisabledValidationChecks' -import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- )+instance Zero ValidationFlagsEXT where+ zero = ValidationFlagsEXT+ mempty --- ** VkValidationCheckEXT- -- | VkValidationCheckEXT - Specify validation checks to disable -- -- = See Also ----- 'VkValidationFlagsEXT'-newtype VkValidationCheckEXT = VkValidationCheckEXT Int32- deriving (Eq, Ord, Storable)+-- 'ValidationFlagsEXT'+newtype ValidationCheckEXT = ValidationCheckEXT Int32+ deriving newtype (Eq, Ord, Storable, Zero) -instance Show VkValidationCheckEXT where- showsPrec _ VK_VALIDATION_CHECK_ALL_EXT = showString "VK_VALIDATION_CHECK_ALL_EXT"- showsPrec _ VK_VALIDATION_CHECK_SHADERS_EXT = showString "VK_VALIDATION_CHECK_SHADERS_EXT"- showsPrec p (VkValidationCheckEXT x) = showParen (p >= 11) (showString "VkValidationCheckEXT " . showsPrec 11 x)+-- | 'VALIDATION_CHECK_ALL_EXT' specifies that all validation checks are+-- disabled.+pattern VALIDATION_CHECK_ALL_EXT = ValidationCheckEXT 0+-- | 'VALIDATION_CHECK_SHADERS_EXT' specifies that shader validation is+-- disabled.+pattern VALIDATION_CHECK_SHADERS_EXT = ValidationCheckEXT 1+{-# complete VALIDATION_CHECK_ALL_EXT,+ VALIDATION_CHECK_SHADERS_EXT :: ValidationCheckEXT #-} -instance Read VkValidationCheckEXT where- readPrec = parens ( choose [ ("VK_VALIDATION_CHECK_ALL_EXT", pure VK_VALIDATION_CHECK_ALL_EXT)- , ("VK_VALIDATION_CHECK_SHADERS_EXT", pure VK_VALIDATION_CHECK_SHADERS_EXT)- ] +++- prec 10 (do- expectP (Ident "VkValidationCheckEXT")- v <- step readPrec- pure (VkValidationCheckEXT v)- )- )+instance Show ValidationCheckEXT where+ showsPrec p = \case+ VALIDATION_CHECK_ALL_EXT -> showString "VALIDATION_CHECK_ALL_EXT"+ VALIDATION_CHECK_SHADERS_EXT -> showString "VALIDATION_CHECK_SHADERS_EXT"+ ValidationCheckEXT x -> showParen (p >= 11) (showString "ValidationCheckEXT " . showsPrec 11 x) --- | @VK_VALIDATION_CHECK_ALL_EXT@ specifies that all validation checks are--- disabled.-pattern VK_VALIDATION_CHECK_ALL_EXT :: VkValidationCheckEXT-pattern VK_VALIDATION_CHECK_ALL_EXT = VkValidationCheckEXT 0+instance Read ValidationCheckEXT where+ readPrec = parens (choose [("VALIDATION_CHECK_ALL_EXT", pure VALIDATION_CHECK_ALL_EXT)+ , ("VALIDATION_CHECK_SHADERS_EXT", pure VALIDATION_CHECK_SHADERS_EXT)]+ ++++ prec 10 (do+ expectP (Ident "ValidationCheckEXT")+ v <- step readPrec+ pure (ValidationCheckEXT v))) --- | @VK_VALIDATION_CHECK_SHADERS_EXT@ specifies that shader validation is--- disabled.-pattern VK_VALIDATION_CHECK_SHADERS_EXT :: VkValidationCheckEXT-pattern VK_VALIDATION_CHECK_SHADERS_EXT = VkValidationCheckEXT 1--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT"-pattern VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = VkStructureType 1000061000++type EXT_VALIDATION_FLAGS_SPEC_VERSION = 2+ -- No documentation found for TopLevel "VK_EXT_VALIDATION_FLAGS_SPEC_VERSION"-pattern VK_EXT_VALIDATION_FLAGS_SPEC_VERSION :: Integral a => a-pattern VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 1+pattern EXT_VALIDATION_FLAGS_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_VALIDATION_FLAGS_SPEC_VERSION = 2+++type EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags"+ -- No documentation found for TopLevel "VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME"-pattern VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags"--- | VkValidationFlagsEXT - Specify validation checks to disable for a Vulkan--- instance------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT@------ - @pDisabledValidationChecks@ /must/ be a valid pointer to an array of--- @disabledValidationCheckCount@ 'VkValidationCheckEXT' values------ - @disabledValidationCheckCount@ /must/ be greater than @0@------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkValidationCheckEXT'-data VkValidationFlagsEXT = VkValidationFlagsEXT- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @disabledValidationCheckCount@ is the number of checks to disable.- vkDisabledValidationCheckCount :: Word32- , -- | @pDisabledValidationChecks@ is a pointer to an array of- -- 'VkValidationCheckEXT' values specifying the validation checks to be- -- disabled.- vkPDisabledValidationChecks :: Ptr VkValidationCheckEXT- }- deriving (Eq, Show)+pattern EXT_VALIDATION_FLAGS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" -instance Storable VkValidationFlagsEXT where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkValidationFlagsEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkValidationFlagsEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkValidationFlagsEXT))- *> poke (ptr `plusPtr` 16) (vkDisabledValidationCheckCount (poked :: VkValidationFlagsEXT))- *> poke (ptr `plusPtr` 24) (vkPDisabledValidationChecks (poked :: VkValidationFlagsEXT))
+ src/Graphics/Vulkan/Extensions/VK_EXT_validation_flags.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_validation_flags (ValidationFlagsEXT) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ValidationFlagsEXT++instance ToCStruct ValidationFlagsEXT+instance Show ValidationFlagsEXT++instance FromCStruct ValidationFlagsEXT+
src/Graphics/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs view
@@ -1,52 +1,46 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor- ( pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT- , pattern VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT- , pattern VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION- , pattern VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME- , VkVertexInputBindingDivisorDescriptionEXT(..)- , VkPipelineVertexInputDivisorStateCreateInfoEXT(..)- , VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(..)- ) where--import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )---import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- )-+module Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor ( VertexInputBindingDivisorDescriptionEXT(..)+ , PipelineVertexInputDivisorStateCreateInfoEXT(..)+ , PhysicalDeviceVertexAttributeDivisorPropertiesEXT(..)+ , PhysicalDeviceVertexAttributeDivisorFeaturesEXT(..)+ , EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION+ , pattern EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION+ , EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME+ , pattern EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME+ ) where --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = VkStructureType 1000190000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT"-pattern VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = VkStructureType 1000190001--- No documentation found for TopLevel "VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION"-pattern VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION :: Integral a => a-pattern VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME"-pattern VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor"+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+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 Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT)) -- | VkVertexInputBindingDivisorDescriptionEXT - Structure specifying a -- divisor used in instanced rendering --@@ -58,124 +52,264 @@ -- == Valid Usage -- -- - @binding@ /must/ be less than--- @VkPhysicalDeviceLimits@::@maxVertexInputBindings@+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@ --+-- - If the @vertexAttributeInstanceRateZeroDivisor@ feature is not+-- enabled, @divisor@ /must/ not be @0@+--+-- - If the @vertexAttributeInstanceRateDivisor@ feature is not enabled,+-- @divisor@ /must/ be @1@+-- -- - @divisor@ /must/ be a value between @0@ and--- @VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT@::@maxVertexAttribDivisor@,+-- 'PhysicalDeviceVertexAttributeDivisorPropertiesEXT'::@maxVertexAttribDivisor@, -- inclusive. ----- - 'Graphics.Vulkan.Core10.Pipeline.VkVertexInputBindingDescription'::@inputRate@--- /must/ be of type @VK_VERTEX_INPUT_RATE_INSTANCE@ for this--- @binding@.+-- - 'Graphics.Vulkan.Core10.Pipeline.VertexInputBindingDescription'::@inputRate@+-- /must/ be of type+-- 'Graphics.Vulkan.Core10.Enums.VertexInputRate.VERTEX_INPUT_RATE_INSTANCE'+-- for this @binding@. -- -- = See Also ----- 'VkPipelineVertexInputDivisorStateCreateInfoEXT'-data VkVertexInputBindingDivisorDescriptionEXT = VkVertexInputBindingDivisorDescriptionEXT+-- 'PipelineVertexInputDivisorStateCreateInfoEXT'+data VertexInputBindingDivisorDescriptionEXT = VertexInputBindingDivisorDescriptionEXT { -- | @binding@ is the binding number for which the divisor is specified.- vkBinding :: Word32- , -- | @divisor@ is the the number of successive instances that will use the- -- same value of the vertex attribute when instanced rendering is enabled.- -- For example, if the divisor is N, the same vertex attribute will applied- -- to N successive instances before moving on to the next vertex attribute.- -- If a value of 0 is used for the divisor, then the first vertex attribute- -- will be applied to all instances. The maximum value of divisor is- -- implementation dependent and can be queried using- -- @VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT@::@maxVertexAttribDivisor@.- vkDivisor :: Word32+ binding :: Word32+ , -- | @divisor@ is the number of successive instances that will use the same+ -- value of the vertex attribute when instanced rendering is enabled. For+ -- example, if the divisor is N, the same vertex attribute will be applied+ -- to N successive instances before moving on to the next vertex attribute.+ -- The maximum value of divisor is implementation dependent and can be+ -- queried using+ -- 'PhysicalDeviceVertexAttributeDivisorPropertiesEXT'::@maxVertexAttribDivisor@.+ -- A value of @0@ /can/ be used for the divisor if the+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeInstanceRateZeroDivisor vertexAttributeInstanceRateZeroDivisor>+ -- feature is enabled. In this case, the same vertex attribute will be+ -- applied to all instances.+ divisor :: Word32 }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show VertexInputBindingDivisorDescriptionEXT -instance Storable VkVertexInputBindingDivisorDescriptionEXT where+instance ToCStruct VertexInputBindingDivisorDescriptionEXT where+ withCStruct x f = allocaBytesAligned 8 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p VertexInputBindingDivisorDescriptionEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (binding)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (divisor)+ f+ cStructSize = 8+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ f++instance FromCStruct VertexInputBindingDivisorDescriptionEXT where+ peekCStruct p = do+ binding <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ divisor <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ pure $ VertexInputBindingDivisorDescriptionEXT+ binding divisor++instance Storable VertexInputBindingDivisorDescriptionEXT where sizeOf ~_ = 8 alignment ~_ = 4- peek ptr = VkVertexInputBindingDivisorDescriptionEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- poke ptr poked = poke (ptr `plusPtr` 0) (vkBinding (poked :: VkVertexInputBindingDivisorDescriptionEXT))- *> poke (ptr `plusPtr` 4) (vkDivisor (poked :: VkVertexInputBindingDivisorDescriptionEXT))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero VertexInputBindingDivisorDescriptionEXT where+ zero = VertexInputBindingDivisorDescriptionEXT+ zero+ zero++ -- | VkPipelineVertexInputDivisorStateCreateInfoEXT - Structure specifying -- vertex attributes assignment during instanced rendering -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT@------ - @pVertexBindingDivisors@ /must/ be a valid pointer to an array of--- @vertexBindingDivisorCount@--- @VkVertexInputBindingDivisorDescriptionEXT@ structures------ - @vertexBindingDivisorCount@ /must/ be greater than @0@--- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'VkVertexInputBindingDivisorDescriptionEXT'-data VkPipelineVertexInputDivisorStateCreateInfoEXT = VkPipelineVertexInputDivisorStateCreateInfoEXT- { -- | @sType@ is the type of this structure- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure- vkPNext :: Ptr ()- , -- | @vertexBindingDivisorCount@ is the number of elements in the- -- @pVertexBindingDivisors@ array.- vkVertexBindingDivisorCount :: Word32- , -- | @pVertexBindingDivisors@ is a pointer to an array of- -- @VkVertexInputBindingDivisorDescriptionEXT@ structures, which specifies- -- the divisor value for each binding.- vkPVertexBindingDivisors :: Ptr VkVertexInputBindingDivisorDescriptionEXT- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'VertexInputBindingDivisorDescriptionEXT'+data PipelineVertexInputDivisorStateCreateInfoEXT = PipelineVertexInputDivisorStateCreateInfoEXT+ { -- | @pVertexBindingDivisors@ /must/ be a valid pointer to an array of+ -- @vertexBindingDivisorCount@ 'VertexInputBindingDivisorDescriptionEXT'+ -- structures+ vertexBindingDivisors :: Vector VertexInputBindingDivisorDescriptionEXT }+ deriving (Typeable)+deriving instance Show PipelineVertexInputDivisorStateCreateInfoEXT -instance Storable VkPipelineVertexInputDivisorStateCreateInfoEXT where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkPipelineVertexInputDivisorStateCreateInfoEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineVertexInputDivisorStateCreateInfoEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineVertexInputDivisorStateCreateInfoEXT))- *> poke (ptr `plusPtr` 16) (vkVertexBindingDivisorCount (poked :: VkPipelineVertexInputDivisorStateCreateInfoEXT))- *> poke (ptr `plusPtr` 24) (vkPVertexBindingDivisors (poked :: VkPipelineVertexInputDivisorStateCreateInfoEXT))+instance ToCStruct PipelineVertexInputDivisorStateCreateInfoEXT where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineVertexInputDivisorStateCreateInfoEXT{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (vertexBindingDivisors)) :: Word32))+ pPVertexBindingDivisors' <- ContT $ allocaBytesAligned @VertexInputBindingDivisorDescriptionEXT ((Data.Vector.length (vertexBindingDivisors)) * 8) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPVertexBindingDivisors' `plusPtr` (8 * (i)) :: Ptr VertexInputBindingDivisorDescriptionEXT) (e) . ($ ())) (vertexBindingDivisors)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDivisorDescriptionEXT))) (pPVertexBindingDivisors')+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPVertexBindingDivisors' <- ContT $ allocaBytesAligned @VertexInputBindingDivisorDescriptionEXT ((Data.Vector.length (mempty)) * 8) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPVertexBindingDivisors' `plusPtr` (8 * (i)) :: Ptr VertexInputBindingDivisorDescriptionEXT) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDivisorDescriptionEXT))) (pPVertexBindingDivisors')+ lift $ f++instance FromCStruct PipelineVertexInputDivisorStateCreateInfoEXT where+ peekCStruct p = do+ vertexBindingDivisorCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pVertexBindingDivisors <- peek @(Ptr VertexInputBindingDivisorDescriptionEXT) ((p `plusPtr` 24 :: Ptr (Ptr VertexInputBindingDivisorDescriptionEXT)))+ pVertexBindingDivisors' <- generateM (fromIntegral vertexBindingDivisorCount) (\i -> peekCStruct @VertexInputBindingDivisorDescriptionEXT ((pVertexBindingDivisors `advancePtrBytes` (8 * (i)) :: Ptr VertexInputBindingDivisorDescriptionEXT)))+ pure $ PipelineVertexInputDivisorStateCreateInfoEXT+ pVertexBindingDivisors'++instance Zero PipelineVertexInputDivisorStateCreateInfoEXT where+ zero = PipelineVertexInputDivisorStateCreateInfoEXT+ mempty++ -- | VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT - Structure -- describing max value of vertex attribute divisor that can be supported -- by an implementation -- -- = Members ----- The members of the @VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT@+-- The members of the 'PhysicalDeviceVertexAttributeDivisorPropertiesEXT' -- structure describe the following implementation-dependent limits: -- -- = Description ----- - @maxVertexAttribDivisor@ is the maximum value of the number of--- instances that will repeat the value of vertex attribute data when--- instanced rendering is enabled.+-- If the 'PhysicalDeviceVertexAttributeDivisorPropertiesEXT' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits. -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT@+-- = See Also --+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceVertexAttributeDivisorPropertiesEXT = PhysicalDeviceVertexAttributeDivisorPropertiesEXT+ { -- | @maxVertexAttribDivisor@ is the maximum value of the number of instances+ -- that will repeat the value of vertex attribute data when instanced+ -- rendering is enabled.+ maxVertexAttribDivisor :: Word32 }+ deriving (Typeable)+deriving instance Show PhysicalDeviceVertexAttributeDivisorPropertiesEXT++instance ToCStruct PhysicalDeviceVertexAttributeDivisorPropertiesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceVertexAttributeDivisorPropertiesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (maxVertexAttribDivisor)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ f++instance FromCStruct PhysicalDeviceVertexAttributeDivisorPropertiesEXT where+ peekCStruct p = do+ maxVertexAttribDivisor <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pure $ PhysicalDeviceVertexAttributeDivisorPropertiesEXT+ maxVertexAttribDivisor++instance Storable PhysicalDeviceVertexAttributeDivisorPropertiesEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceVertexAttributeDivisorPropertiesEXT where+ zero = PhysicalDeviceVertexAttributeDivisorPropertiesEXT+ zero+++-- | VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT - Structure describing+-- if fetching of vertex attribute may be repeated for instanced rendering+--+-- = Description+--+-- If the 'PhysicalDeviceVertexAttributeDivisorFeaturesEXT' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating the implementation-dependent+-- behavior. 'PhysicalDeviceVertexAttributeDivisorFeaturesEXT' /can/ also+-- be included in @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to enable the feature.+--+-- == Valid Usage (Implicit)+-- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT = VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT- { -- No documentation found for Nested "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT" "maxVertexAttribDivisor"- vkMaxVertexAttribDivisor :: Word32+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceVertexAttributeDivisorFeaturesEXT = PhysicalDeviceVertexAttributeDivisorFeaturesEXT+ { -- | @vertexAttributeInstanceRateDivisor@ specifies whether vertex attribute+ -- fetching may be repeated in case of instanced rendering.+ vertexAttributeInstanceRateDivisor :: Bool+ , -- | @vertexAttributeInstanceRateZeroDivisor@ specifies whether a zero value+ -- for 'VertexInputBindingDivisorDescriptionEXT'::@divisor@ is supported.+ vertexAttributeInstanceRateZeroDivisor :: Bool }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show PhysicalDeviceVertexAttributeDivisorFeaturesEXT -instance Storable VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT where+instance ToCStruct PhysicalDeviceVertexAttributeDivisorFeaturesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceVertexAttributeDivisorFeaturesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (vertexAttributeInstanceRateDivisor))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (vertexAttributeInstanceRateZeroDivisor))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceVertexAttributeDivisorFeaturesEXT where+ peekCStruct p = do+ vertexAttributeInstanceRateDivisor <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ vertexAttributeInstanceRateZeroDivisor <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ pure $ PhysicalDeviceVertexAttributeDivisorFeaturesEXT+ (bool32ToBool vertexAttributeInstanceRateDivisor) (bool32ToBool vertexAttributeInstanceRateZeroDivisor)++instance Storable PhysicalDeviceVertexAttributeDivisorFeaturesEXT where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT))- *> poke (ptr `plusPtr` 16) (vkMaxVertexAttribDivisor (poked :: VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceVertexAttributeDivisorFeaturesEXT where+ zero = PhysicalDeviceVertexAttributeDivisorFeaturesEXT+ zero+ zero+++type EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3++-- No documentation found for TopLevel "VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION"+pattern EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3+++type EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor"++-- No documentation found for TopLevel "VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME"+pattern EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs-boot view
@@ -0,0 +1,41 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor ( PhysicalDeviceVertexAttributeDivisorFeaturesEXT+ , PhysicalDeviceVertexAttributeDivisorPropertiesEXT+ , PipelineVertexInputDivisorStateCreateInfoEXT+ , VertexInputBindingDivisorDescriptionEXT+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceVertexAttributeDivisorFeaturesEXT++instance ToCStruct PhysicalDeviceVertexAttributeDivisorFeaturesEXT+instance Show PhysicalDeviceVertexAttributeDivisorFeaturesEXT++instance FromCStruct PhysicalDeviceVertexAttributeDivisorFeaturesEXT+++data PhysicalDeviceVertexAttributeDivisorPropertiesEXT++instance ToCStruct PhysicalDeviceVertexAttributeDivisorPropertiesEXT+instance Show PhysicalDeviceVertexAttributeDivisorPropertiesEXT++instance FromCStruct PhysicalDeviceVertexAttributeDivisorPropertiesEXT+++data PipelineVertexInputDivisorStateCreateInfoEXT++instance ToCStruct PipelineVertexInputDivisorStateCreateInfoEXT+instance Show PipelineVertexInputDivisorStateCreateInfoEXT++instance FromCStruct PipelineVertexInputDivisorStateCreateInfoEXT+++data VertexInputBindingDivisorDescriptionEXT++instance ToCStruct VertexInputBindingDivisorDescriptionEXT+instance Show VertexInputBindingDivisorDescriptionEXT++instance FromCStruct VertexInputBindingDivisorDescriptionEXT+
+ src/Graphics/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs view
@@ -0,0 +1,108 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_ycbcr_image_arrays ( PhysicalDeviceYcbcrImageArraysFeaturesEXT(..)+ , EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION+ , pattern EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION+ , EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME+ , pattern EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT))+-- | VkPhysicalDeviceYcbcrImageArraysFeaturesEXT - Structure describing+-- extended Y’CbCr image creation features that can be supported by an+-- implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceYcbcrImageArraysFeaturesEXT' structure+-- describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceYcbcrImageArraysFeaturesEXT' structure is included+-- in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceYcbcrImageArraysFeaturesEXT' /can/ also be included in+-- the @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceYcbcrImageArraysFeaturesEXT = PhysicalDeviceYcbcrImageArraysFeaturesEXT+ { -- | @ycbcrImageArrays@ indicates that the implementation supports creating+ -- images with a format that requires+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion Y′CBCR conversion>+ -- and has multiple array layers.+ ycbcrImageArrays :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceYcbcrImageArraysFeaturesEXT++instance ToCStruct PhysicalDeviceYcbcrImageArraysFeaturesEXT where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceYcbcrImageArraysFeaturesEXT{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (ycbcrImageArrays))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceYcbcrImageArraysFeaturesEXT where+ peekCStruct p = do+ ycbcrImageArrays <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceYcbcrImageArraysFeaturesEXT+ (bool32ToBool ycbcrImageArrays)++instance Storable PhysicalDeviceYcbcrImageArraysFeaturesEXT where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceYcbcrImageArraysFeaturesEXT where+ zero = PhysicalDeviceYcbcrImageArraysFeaturesEXT+ zero+++type EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION"+pattern EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION :: forall a . Integral a => a+pattern EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1+++type EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays"++-- No documentation found for TopLevel "VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME"+pattern EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays"+
+ src/Graphics/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_EXT_ycbcr_image_arrays (PhysicalDeviceYcbcrImageArraysFeaturesEXT) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceYcbcrImageArraysFeaturesEXT++instance ToCStruct PhysicalDeviceYcbcrImageArraysFeaturesEXT+instance Show PhysicalDeviceYcbcrImageArraysFeaturesEXT++instance FromCStruct PhysicalDeviceYcbcrImageArraysFeaturesEXT+
+ src/Graphics/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs view
@@ -0,0 +1,232 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface ( createImagePipeSurfaceFUCHSIA+ , ImagePipeSurfaceCreateInfoFUCHSIA(..)+ , ImagePipeSurfaceCreateFlagsFUCHSIA(..)+ , FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION+ , pattern FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION+ , FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME+ , pattern FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME+ , SurfaceKHR(..)+ , Zx_handle_t+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Bits (Bits)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Instance)+import Graphics.Vulkan.Core10.Handles (Instance(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkCreateImagePipeSurfaceFUCHSIA))+import Graphics.Vulkan.Core10.Handles (Instance_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Extensions.WSITypes (Zx_handle_t)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.Extensions.WSITypes (Zx_handle_t)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateImagePipeSurfaceFUCHSIA+ :: FunPtr (Ptr Instance_T -> Ptr ImagePipeSurfaceCreateInfoFUCHSIA -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result) -> Ptr Instance_T -> Ptr ImagePipeSurfaceCreateInfoFUCHSIA -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result++-- | vkCreateImagePipeSurfaceFUCHSIA - Create a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' object for a Fuchsia+-- ImagePipe+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' is the instance to+-- associate with the surface.+--+-- - @pCreateInfo@ is a pointer to a 'ImagePipeSurfaceCreateInfoFUCHSIA'+-- structure containing parameters affecting the creation of the+-- surface object.+--+-- - @pAllocator@ is the allocator used for host memory allocated for the+-- surface object when there is no more specific allocator available+-- (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).+--+-- - @pSurface@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle in which the+-- created surface object is returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'ImagePipeSurfaceCreateInfoFUCHSIA' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pSurface@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'ImagePipeSurfaceCreateInfoFUCHSIA',+-- 'Graphics.Vulkan.Core10.Handles.Instance',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR'+createImagePipeSurfaceFUCHSIA :: Instance -> ImagePipeSurfaceCreateInfoFUCHSIA -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (SurfaceKHR)+createImagePipeSurfaceFUCHSIA instance' createInfo allocator = evalContT $ do+ let vkCreateImagePipeSurfaceFUCHSIA' = mkVkCreateImagePipeSurfaceFUCHSIA (pVkCreateImagePipeSurfaceFUCHSIA (instanceCmds (instance' :: Instance)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPSurface <- ContT $ bracket (callocBytes @SurfaceKHR 8) free+ r <- lift $ vkCreateImagePipeSurfaceFUCHSIA' (instanceHandle (instance')) pCreateInfo pAllocator (pPSurface)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSurface <- lift $ peek @SurfaceKHR pPSurface+ pure $ (pSurface)+++-- | VkImagePipeSurfaceCreateInfoFUCHSIA - Structure specifying parameters of+-- a newly created ImagePipe surface object+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'ImagePipeSurfaceCreateFlagsFUCHSIA',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createImagePipeSurfaceFUCHSIA'+data ImagePipeSurfaceCreateInfoFUCHSIA = ImagePipeSurfaceCreateInfoFUCHSIA+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+ flags :: ImagePipeSurfaceCreateFlagsFUCHSIA+ , -- | @imagePipeHandle@ /must/ be a valid+ -- 'Graphics.Vulkan.Extensions.WSITypes.Zx_handle_t'+ imagePipeHandle :: Zx_handle_t+ }+ deriving (Typeable)+deriving instance Show ImagePipeSurfaceCreateInfoFUCHSIA++instance ToCStruct ImagePipeSurfaceCreateInfoFUCHSIA where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImagePipeSurfaceCreateInfoFUCHSIA{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ImagePipeSurfaceCreateFlagsFUCHSIA)) (flags)+ poke ((p `plusPtr` 20 :: Ptr Zx_handle_t)) (imagePipeHandle)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 20 :: Ptr Zx_handle_t)) (zero)+ f++instance FromCStruct ImagePipeSurfaceCreateInfoFUCHSIA where+ peekCStruct p = do+ flags <- peek @ImagePipeSurfaceCreateFlagsFUCHSIA ((p `plusPtr` 16 :: Ptr ImagePipeSurfaceCreateFlagsFUCHSIA))+ imagePipeHandle <- peek @Zx_handle_t ((p `plusPtr` 20 :: Ptr Zx_handle_t))+ pure $ ImagePipeSurfaceCreateInfoFUCHSIA+ flags imagePipeHandle++instance Storable ImagePipeSurfaceCreateInfoFUCHSIA where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImagePipeSurfaceCreateInfoFUCHSIA where+ zero = ImagePipeSurfaceCreateInfoFUCHSIA+ zero+ zero+++-- No documentation found for TopLevel "VkImagePipeSurfaceCreateFlagsFUCHSIA"+newtype ImagePipeSurfaceCreateFlagsFUCHSIA = ImagePipeSurfaceCreateFlagsFUCHSIA Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show ImagePipeSurfaceCreateFlagsFUCHSIA where+ showsPrec p = \case+ ImagePipeSurfaceCreateFlagsFUCHSIA x -> showParen (p >= 11) (showString "ImagePipeSurfaceCreateFlagsFUCHSIA 0x" . showHex x)++instance Read ImagePipeSurfaceCreateFlagsFUCHSIA where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "ImagePipeSurfaceCreateFlagsFUCHSIA")+ v <- step readPrec+ pure (ImagePipeSurfaceCreateFlagsFUCHSIA v)))+++type FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION"+pattern FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION :: forall a . Integral a => a+pattern FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION = 1+++type FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME = "VK_FUCHSIA_imagepipe_surface"++-- No documentation found for TopLevel "VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME"+pattern FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME = "VK_FUCHSIA_imagepipe_surface"+
+ src/Graphics/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface (ImagePipeSurfaceCreateInfoFUCHSIA) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ImagePipeSurfaceCreateInfoFUCHSIA++instance ToCStruct ImagePipeSurfaceCreateInfoFUCHSIA+instance Show ImagePipeSurfaceCreateInfoFUCHSIA++instance FromCStruct ImagePipeSurfaceCreateInfoFUCHSIA+
+ src/Graphics/Vulkan/Extensions/VK_GGP_frame_token.hs view
@@ -0,0 +1,88 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_GGP_frame_token ( PresentFrameTokenGGP(..)+ , GGP_FRAME_TOKEN_SPEC_VERSION+ , pattern GGP_FRAME_TOKEN_SPEC_VERSION+ , GGP_FRAME_TOKEN_EXTENSION_NAME+ , pattern GGP_FRAME_TOKEN_EXTENSION_NAME+ , GgpFrameToken+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Extensions.WSITypes (GgpFrameToken)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP))+import Graphics.Vulkan.Extensions.WSITypes (GgpFrameToken)+-- | VkPresentFrameTokenGGP - The Google Games Platform frame token+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PresentFrameTokenGGP = PresentFrameTokenGGP+ { -- | @frameToken@ /must/ be a valid+ -- 'Graphics.Vulkan.Extensions.WSITypes.GgpFrameToken'+ frameToken :: GgpFrameToken }+ deriving (Typeable)+deriving instance Show PresentFrameTokenGGP++instance ToCStruct PresentFrameTokenGGP where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PresentFrameTokenGGP{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr GgpFrameToken)) (frameToken)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr GgpFrameToken)) (zero)+ f++instance FromCStruct PresentFrameTokenGGP where+ peekCStruct p = do+ frameToken <- peek @GgpFrameToken ((p `plusPtr` 16 :: Ptr GgpFrameToken))+ pure $ PresentFrameTokenGGP+ frameToken++instance Storable PresentFrameTokenGGP where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PresentFrameTokenGGP where+ zero = PresentFrameTokenGGP+ zero+++type GGP_FRAME_TOKEN_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_GGP_FRAME_TOKEN_SPEC_VERSION"+pattern GGP_FRAME_TOKEN_SPEC_VERSION :: forall a . Integral a => a+pattern GGP_FRAME_TOKEN_SPEC_VERSION = 1+++type GGP_FRAME_TOKEN_EXTENSION_NAME = "VK_GGP_frame_token"++-- No documentation found for TopLevel "VK_GGP_FRAME_TOKEN_EXTENSION_NAME"+pattern GGP_FRAME_TOKEN_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern GGP_FRAME_TOKEN_EXTENSION_NAME = "VK_GGP_frame_token"+
+ src/Graphics/Vulkan/Extensions/VK_GGP_frame_token.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_GGP_frame_token (PresentFrameTokenGGP) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PresentFrameTokenGGP++instance ToCStruct PresentFrameTokenGGP+instance Show PresentFrameTokenGGP++instance FromCStruct PresentFrameTokenGGP+
+ src/Graphics/Vulkan/Extensions/VK_GGP_stream_descriptor_surface.hs view
@@ -0,0 +1,234 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_GGP_stream_descriptor_surface ( createStreamDescriptorSurfaceGGP+ , StreamDescriptorSurfaceCreateInfoGGP(..)+ , StreamDescriptorSurfaceCreateFlagsGGP(..)+ , GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION+ , pattern GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION+ , GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME+ , pattern GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME+ , SurfaceKHR(..)+ , GgpStreamDescriptor+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Bits (Bits)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Extensions.WSITypes (GgpStreamDescriptor)+import Graphics.Vulkan.Core10.Handles (Instance)+import Graphics.Vulkan.Core10.Handles (Instance(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkCreateStreamDescriptorSurfaceGGP))+import Graphics.Vulkan.Core10.Handles (Instance_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.WSITypes (GgpStreamDescriptor)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateStreamDescriptorSurfaceGGP+ :: FunPtr (Ptr Instance_T -> Ptr StreamDescriptorSurfaceCreateInfoGGP -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result) -> Ptr Instance_T -> Ptr StreamDescriptorSurfaceCreateInfoGGP -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result++-- | vkCreateStreamDescriptorSurfaceGGP - Create a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' object for a Google+-- Games Platform stream+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' is the instance to+-- associate with the surface.+--+-- - @pCreateInfo@ is a pointer to a+-- 'StreamDescriptorSurfaceCreateInfoGGP' structure containing+-- parameters that affect the creation of the surface object.+--+-- - @pAllocator@ is the allocator used for host memory allocated for the+-- surface object when there is no more specific allocator available+-- (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).+--+-- - @pSurface@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle in which the+-- created surface object is returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'StreamDescriptorSurfaceCreateInfoGGP' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pSurface@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Instance',+-- 'StreamDescriptorSurfaceCreateInfoGGP',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR'+createStreamDescriptorSurfaceGGP :: Instance -> StreamDescriptorSurfaceCreateInfoGGP -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (SurfaceKHR)+createStreamDescriptorSurfaceGGP instance' createInfo allocator = evalContT $ do+ let vkCreateStreamDescriptorSurfaceGGP' = mkVkCreateStreamDescriptorSurfaceGGP (pVkCreateStreamDescriptorSurfaceGGP (instanceCmds (instance' :: Instance)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPSurface <- ContT $ bracket (callocBytes @SurfaceKHR 8) free+ r <- lift $ vkCreateStreamDescriptorSurfaceGGP' (instanceHandle (instance')) pCreateInfo pAllocator (pPSurface)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSurface <- lift $ peek @SurfaceKHR pPSurface+ pure $ (pSurface)+++-- | VkStreamDescriptorSurfaceCreateInfoGGP - Structure specifying parameters+-- of a newly created Google Games Platform stream surface object+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'StreamDescriptorSurfaceCreateFlagsGGP',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createStreamDescriptorSurfaceGGP'+data StreamDescriptorSurfaceCreateInfoGGP = StreamDescriptorSurfaceCreateInfoGGP+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+ flags :: StreamDescriptorSurfaceCreateFlagsGGP+ , -- | @streamDescriptor@ /must/ be a valid+ -- 'Graphics.Vulkan.Extensions.WSITypes.GgpStreamDescriptor'+ streamDescriptor :: GgpStreamDescriptor+ }+ deriving (Typeable)+deriving instance Show StreamDescriptorSurfaceCreateInfoGGP++instance ToCStruct StreamDescriptorSurfaceCreateInfoGGP where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p StreamDescriptorSurfaceCreateInfoGGP{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr StreamDescriptorSurfaceCreateFlagsGGP)) (flags)+ poke ((p `plusPtr` 20 :: Ptr GgpStreamDescriptor)) (streamDescriptor)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 20 :: Ptr GgpStreamDescriptor)) (zero)+ f++instance FromCStruct StreamDescriptorSurfaceCreateInfoGGP where+ peekCStruct p = do+ flags <- peek @StreamDescriptorSurfaceCreateFlagsGGP ((p `plusPtr` 16 :: Ptr StreamDescriptorSurfaceCreateFlagsGGP))+ streamDescriptor <- peek @GgpStreamDescriptor ((p `plusPtr` 20 :: Ptr GgpStreamDescriptor))+ pure $ StreamDescriptorSurfaceCreateInfoGGP+ flags streamDescriptor++instance Storable StreamDescriptorSurfaceCreateInfoGGP where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero StreamDescriptorSurfaceCreateInfoGGP where+ zero = StreamDescriptorSurfaceCreateInfoGGP+ zero+ zero+++-- No documentation found for TopLevel "VkStreamDescriptorSurfaceCreateFlagsGGP"+newtype StreamDescriptorSurfaceCreateFlagsGGP = StreamDescriptorSurfaceCreateFlagsGGP Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show StreamDescriptorSurfaceCreateFlagsGGP where+ showsPrec p = \case+ StreamDescriptorSurfaceCreateFlagsGGP x -> showParen (p >= 11) (showString "StreamDescriptorSurfaceCreateFlagsGGP 0x" . showHex x)++instance Read StreamDescriptorSurfaceCreateFlagsGGP where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "StreamDescriptorSurfaceCreateFlagsGGP")+ v <- step readPrec+ pure (StreamDescriptorSurfaceCreateFlagsGGP v)))+++type GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION"+pattern GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION :: forall a . Integral a => a+pattern GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION = 1+++type GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME = "VK_GGP_stream_descriptor_surface"++-- No documentation found for TopLevel "VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME"+pattern GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME = "VK_GGP_stream_descriptor_surface"+
+ src/Graphics/Vulkan/Extensions/VK_GGP_stream_descriptor_surface.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_GGP_stream_descriptor_surface (StreamDescriptorSurfaceCreateInfoGGP) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data StreamDescriptorSurfaceCreateInfoGGP++instance ToCStruct StreamDescriptorSurfaceCreateInfoGGP+instance Show StreamDescriptorSurfaceCreateInfoGGP++instance FromCStruct StreamDescriptorSurfaceCreateInfoGGP+
+ src/Graphics/Vulkan/Extensions/VK_GOOGLE_decorate_string.hs view
@@ -0,0 +1,22 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_GOOGLE_decorate_string ( GOOGLE_DECORATE_STRING_SPEC_VERSION+ , pattern GOOGLE_DECORATE_STRING_SPEC_VERSION+ , GOOGLE_DECORATE_STRING_EXTENSION_NAME+ , pattern GOOGLE_DECORATE_STRING_EXTENSION_NAME+ ) where++import Data.String (IsString)++type GOOGLE_DECORATE_STRING_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_GOOGLE_DECORATE_STRING_SPEC_VERSION"+pattern GOOGLE_DECORATE_STRING_SPEC_VERSION :: forall a . Integral a => a+pattern GOOGLE_DECORATE_STRING_SPEC_VERSION = 1+++type GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string"++-- No documentation found for TopLevel "VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME"+pattern GOOGLE_DECORATE_STRING_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string"+
src/Graphics/Vulkan/Extensions/VK_GOOGLE_display_timing.hs view
@@ -1,87 +1,100 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing- ( pattern VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE- , pattern VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION- , pattern VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME- , vkGetRefreshCycleDurationGOOGLE- , vkGetPastPresentationTimingGOOGLE- , VkRefreshCycleDurationGOOGLE(..)- , VkPastPresentationTimingGOOGLE(..)- , VkPresentTimesInfoGOOGLE(..)- , VkPresentTimeGOOGLE(..)- ) where--import Data.String- ( IsString- )-import Data.Word- ( Word32- , Word64- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- )-import Graphics.Vulkan.Extensions.VK_KHR_swapchain- ( VkSwapchainKHR- )+module Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing ( getRefreshCycleDurationGOOGLE+ , getPastPresentationTimingGOOGLE+ , RefreshCycleDurationGOOGLE(..)+ , PastPresentationTimingGOOGLE(..)+ , PresentTimesInfoGOOGLE(..)+ , PresentTimeGOOGLE(..)+ , GOOGLE_DISPLAY_TIMING_SPEC_VERSION+ , pattern GOOGLE_DISPLAY_TIMING_SPEC_VERSION+ , GOOGLE_DISPLAY_TIMING_EXTENSION_NAME+ , pattern GOOGLE_DISPLAY_TIMING_EXTENSION_NAME+ , SwapchainKHR(..)+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Marshal.Utils (maybePeek)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Either (Either)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Word (Word64)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetPastPresentationTimingGOOGLE))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetRefreshCycleDurationGOOGLE))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR)+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetRefreshCycleDurationGOOGLE+ :: FunPtr (Ptr Device_T -> SwapchainKHR -> Ptr RefreshCycleDurationGOOGLE -> IO Result) -> Ptr Device_T -> SwapchainKHR -> Ptr RefreshCycleDurationGOOGLE -> IO Result --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE"-pattern VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE :: VkStructureType-pattern VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = VkStructureType 1000092000--- No documentation found for TopLevel "VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION"-pattern VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION :: Integral a => a-pattern VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME"-pattern VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" -- | vkGetRefreshCycleDurationGOOGLE - Obtain the RC duration of the PE’s -- display -- -- = Parameters ----- - @device@ is the device associated with @swapchain@.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the device associated+-- with @swapchain@. -- -- - @swapchain@ is the swapchain to obtain the refresh duration for. ----- - @pDisplayTimingProperties@ is a pointer to an instance of the--- @VkRefreshCycleDurationGOOGLE@ structure.+-- - @pDisplayTimingProperties@ is a pointer to a+-- 'RefreshCycleDurationGOOGLE' structure. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - @swapchain@ /must/ be a valid @VkSwapchainKHR@ handle+-- - @swapchain@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR' handle -- -- - @pDisplayTimingProperties@ /must/ be a valid pointer to a--- @VkRefreshCycleDurationGOOGLE@ structure+-- 'RefreshCycleDurationGOOGLE' structure ----- - Both of @device@, and @swapchain@ /must/ have been created,--- allocated, or retrieved from the same @VkInstance@+-- - Both of 'Graphics.Vulkan.Core10.Handles.Device', and @swapchain@+-- /must/ have been created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Instance' -- -- == Host Synchronization --@@ -89,40 +102,54 @@ -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_DEVICE_LOST@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_SURFACE_LOST_KHR@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkRefreshCycleDurationGOOGLE',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainKHR'+-- 'Graphics.Vulkan.Core10.Handles.Device', 'RefreshCycleDurationGOOGLE',+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR'+getRefreshCycleDurationGOOGLE :: Device -> SwapchainKHR -> IO (("displayTimingProperties" ::: RefreshCycleDurationGOOGLE))+getRefreshCycleDurationGOOGLE device swapchain = evalContT $ do+ let vkGetRefreshCycleDurationGOOGLE' = mkVkGetRefreshCycleDurationGOOGLE (pVkGetRefreshCycleDurationGOOGLE (deviceCmds (device :: Device)))+ pPDisplayTimingProperties <- ContT (withZeroCStruct @RefreshCycleDurationGOOGLE)+ r <- lift $ vkGetRefreshCycleDurationGOOGLE' (deviceHandle (device)) (swapchain) (pPDisplayTimingProperties)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pDisplayTimingProperties <- lift $ peekCStruct @RefreshCycleDurationGOOGLE pPDisplayTimingProperties+ pure $ (pDisplayTimingProperties)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkGetRefreshCycleDurationGOOGLE" vkGetRefreshCycleDurationGOOGLE :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pDisplayTimingProperties" ::: Ptr VkRefreshCycleDurationGOOGLE) -> IO VkResult+ "dynamic" mkVkGetPastPresentationTimingGOOGLE+ :: FunPtr (Ptr Device_T -> SwapchainKHR -> Ptr Word32 -> Ptr PastPresentationTimingGOOGLE -> IO Result) -> Ptr Device_T -> SwapchainKHR -> Ptr Word32 -> Ptr PastPresentationTimingGOOGLE -> IO Result+ -- | vkGetPastPresentationTimingGOOGLE - Obtain timing of a -- previously-presented image -- -- = Parameters ----- - @device@ is the device associated with @swapchain@.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the device associated+-- with @swapchain@. -- -- - @swapchain@ is the swapchain to obtain presentation timing -- information duration for. -- -- - @pPresentationTimingCount@ is a pointer to an integer related to the--- number of @VkPastPresentationTimingGOOGLE@ structures to query, as+-- number of 'PastPresentationTimingGOOGLE' structures to query, as -- described below. ----- - @pPresentationTimings@ is either @NULL@ or a pointer to an an array--- of @VkPastPresentationTimingGOOGLE@ structures.+-- - @pPresentationTimings@ is either @NULL@ or a pointer to an array of+-- 'PastPresentationTimingGOOGLE' structures. -- -- = Description --@@ -136,15 +163,18 @@ -- less than the number of newly-available timing records, at most -- @pPresentationTimingCount@ structures will be written. If -- @pPresentationTimingCount@ is smaller than the number of newly-available--- timing records for the given @swapchain@, @VK_INCOMPLETE@ will be--- returned instead of @VK_SUCCESS@ to indicate that not all the available--- values were returned.+-- timing records for the given @swapchain@,+-- 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned+-- instead of 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' to indicate+-- that not all the available values were returned. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - @swapchain@ /must/ be a valid @VkSwapchainKHR@ handle+-- - @swapchain@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR' handle -- -- - @pPresentationTimingCount@ /must/ be a valid pointer to a @uint32_t@ -- value@@ -152,10 +182,11 @@ -- - If the value referenced by @pPresentationTimingCount@ is not @0@, -- and @pPresentationTimings@ is not @NULL@, @pPresentationTimings@ -- /must/ be a valid pointer to an array of @pPresentationTimingCount@--- @VkPastPresentationTimingGOOGLE@ structures+-- 'PastPresentationTimingGOOGLE' structures ----- - Both of @device@, and @swapchain@ /must/ have been created,--- allocated, or retrieved from the same @VkInstance@+-- - Both of 'Graphics.Vulkan.Core10.Handles.Device', and @swapchain@+-- /must/ have been created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Instance' -- -- == Host Synchronization --@@ -163,55 +194,91 @@ -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- - @VK_INCOMPLETE@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_DEVICE_LOST@+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' ----- - @VK_ERROR_OUT_OF_DATE_KHR@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- - @VK_ERROR_SURFACE_LOST_KHR@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkPastPresentationTimingGOOGLE',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPastPresentationTimingGOOGLE" vkGetPastPresentationTimingGOOGLE :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pPresentationTimingCount" ::: Ptr Word32) -> ("pPresentationTimings" ::: Ptr VkPastPresentationTimingGOOGLE) -> IO VkResult+-- 'Graphics.Vulkan.Core10.Handles.Device', 'PastPresentationTimingGOOGLE',+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR'+getPastPresentationTimingGOOGLE :: Device -> SwapchainKHR -> IO (Result, ("presentationTimings" ::: Vector PastPresentationTimingGOOGLE))+getPastPresentationTimingGOOGLE device swapchain = evalContT $ do+ let vkGetPastPresentationTimingGOOGLE' = mkVkGetPastPresentationTimingGOOGLE (pVkGetPastPresentationTimingGOOGLE (deviceCmds (device :: Device)))+ let device' = deviceHandle (device)+ pPPresentationTimingCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkGetPastPresentationTimingGOOGLE' device' (swapchain) (pPPresentationTimingCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pPresentationTimingCount <- lift $ peek @Word32 pPPresentationTimingCount+ pPPresentationTimings <- ContT $ bracket (callocBytes @PastPresentationTimingGOOGLE ((fromIntegral (pPresentationTimingCount)) * 40)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPPresentationTimings `advancePtrBytes` (i * 40) :: Ptr PastPresentationTimingGOOGLE) . ($ ())) [0..(fromIntegral (pPresentationTimingCount)) - 1]+ r' <- lift $ vkGetPastPresentationTimingGOOGLE' device' (swapchain) (pPPresentationTimingCount) ((pPPresentationTimings))+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pPresentationTimingCount' <- lift $ peek @Word32 pPPresentationTimingCount+ pPresentationTimings' <- lift $ generateM (fromIntegral (pPresentationTimingCount')) (\i -> peekCStruct @PastPresentationTimingGOOGLE (((pPPresentationTimings) `advancePtrBytes` (40 * (i)) :: Ptr PastPresentationTimingGOOGLE)))+ pure $ ((r'), pPresentationTimings')++ -- | VkRefreshCycleDurationGOOGLE - Structure containing the RC duration of a -- display -- -- = See Also ----- 'vkGetRefreshCycleDurationGOOGLE'-data VkRefreshCycleDurationGOOGLE = VkRefreshCycleDurationGOOGLE+-- 'getRefreshCycleDurationGOOGLE'+data RefreshCycleDurationGOOGLE = RefreshCycleDurationGOOGLE { -- | @refreshDuration@ is the number of nanoseconds from the start of one- -- refresh cycle to the next.- vkRefreshDuration :: Word64- }- deriving (Eq, Show)+ -- refresh cycle to the next.+ refreshDuration :: Word64 }+ deriving (Typeable)+deriving instance Show RefreshCycleDurationGOOGLE -instance Storable VkRefreshCycleDurationGOOGLE where+instance ToCStruct RefreshCycleDurationGOOGLE where+ withCStruct x f = allocaBytesAligned 8 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p RefreshCycleDurationGOOGLE{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word64)) (refreshDuration)+ f+ cStructSize = 8+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word64)) (zero)+ f++instance FromCStruct RefreshCycleDurationGOOGLE where+ peekCStruct p = do+ refreshDuration <- peek @Word64 ((p `plusPtr` 0 :: Ptr Word64))+ pure $ RefreshCycleDurationGOOGLE+ refreshDuration++instance Storable RefreshCycleDurationGOOGLE where sizeOf ~_ = 8 alignment ~_ = 8- peek ptr = VkRefreshCycleDurationGOOGLE <$> peek (ptr `plusPtr` 0)- poke ptr poked = poke (ptr `plusPtr` 0) (vkRefreshDuration (poked :: VkRefreshCycleDurationGOOGLE))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero RefreshCycleDurationGOOGLE where+ zero = RefreshCycleDurationGOOGLE+ zero++ -- | VkPastPresentationTimingGOOGLE - Structure containing timing information -- about a previously-presented image -- -- = Description -- -- The results for a given @swapchain@ and @presentID@ are only returned--- once from @vkGetPastPresentationTimingGOOGLE@.+-- once from 'getPastPresentationTimingGOOGLE'. ----- The application /can/ use the @VkPastPresentationTimingGOOGLE@ values to+-- The application /can/ use the 'PastPresentationTimingGOOGLE' values to -- occasionally adjust its timing. For example, if @actualPresentTime@ is -- later than expected (e.g. one @refreshDuration@ late), the application -- may increase its target IPD to a higher multiple of @refreshDuration@@@ -231,124 +298,218 @@ -- -- = See Also ----- 'vkGetPastPresentationTimingGOOGLE'-data VkPastPresentationTimingGOOGLE = VkPastPresentationTimingGOOGLE+-- 'getPastPresentationTimingGOOGLE'+data PastPresentationTimingGOOGLE = PastPresentationTimingGOOGLE { -- | @presentID@ is an application-provided value that was given to a- -- previous @vkQueuePresentKHR@ command via- -- 'VkPresentTimeGOOGLE'::@presentID@ (see below). It /can/ be used to- -- uniquely identify a previous present with the- -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkQueuePresentKHR' command.- vkPresentID :: Word32+ -- previous 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR'+ -- command via 'PresentTimeGOOGLE'::@presentID@ (see below). It /can/ be+ -- used to uniquely identify a previous present with the+ -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' command.+ presentID :: Word32 , -- | @desiredPresentTime@ is an application-provided value that was given to- -- a previous- -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkQueuePresentKHR' command- -- via 'VkPresentTimeGOOGLE'::@desiredPresentTime@. If non-zero, it was- -- used by the application to indicate that an image not be presented any- -- sooner than @desiredPresentTime@.- vkDesiredPresentTime :: Word64+ -- a previous 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR'+ -- command via 'PresentTimeGOOGLE'::@desiredPresentTime@. If non-zero, it+ -- was used by the application to indicate that an image not be presented+ -- any sooner than @desiredPresentTime@.+ desiredPresentTime :: Word64 , -- | @actualPresentTime@ is the time when the image of the @swapchain@ was- -- actually displayed.- vkActualPresentTime :: Word64+ -- actually displayed.+ actualPresentTime :: Word64 , -- | @earliestPresentTime@ is the time when the image of the @swapchain@- -- could have been displayed. This /may/ differ from @actualPresentTime@ if- -- the application requested that the image be presented no sooner than- -- 'VkPresentTimeGOOGLE'::@desiredPresentTime@.- vkEarliestPresentTime :: Word64- , -- | @presentMargin@ is an indication of how early the @vkQueuePresentKHR@- -- command was processed compared to how soon it needed to be processed,- -- and still be presented at @earliestPresentTime@.- vkPresentMargin :: Word64+ -- could have been displayed. This /may/ differ from @actualPresentTime@ if+ -- the application requested that the image be presented no sooner than+ -- 'PresentTimeGOOGLE'::@desiredPresentTime@.+ earliestPresentTime :: Word64+ , -- | @presentMargin@ is an indication of how early the+ -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR' command+ -- was processed compared to how soon it needed to be processed, and still+ -- be presented at @earliestPresentTime@.+ presentMargin :: Word64 }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show PastPresentationTimingGOOGLE -instance Storable VkPastPresentationTimingGOOGLE where+instance ToCStruct PastPresentationTimingGOOGLE where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PastPresentationTimingGOOGLE{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (presentID)+ poke ((p `plusPtr` 8 :: Ptr Word64)) (desiredPresentTime)+ poke ((p `plusPtr` 16 :: Ptr Word64)) (actualPresentTime)+ poke ((p `plusPtr` 24 :: Ptr Word64)) (earliestPresentTime)+ poke ((p `plusPtr` 32 :: Ptr Word64)) (presentMargin)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Word64)) (zero)+ poke ((p `plusPtr` 16 :: Ptr Word64)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)+ poke ((p `plusPtr` 32 :: Ptr Word64)) (zero)+ f++instance FromCStruct PastPresentationTimingGOOGLE where+ peekCStruct p = do+ presentID <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ desiredPresentTime <- peek @Word64 ((p `plusPtr` 8 :: Ptr Word64))+ actualPresentTime <- peek @Word64 ((p `plusPtr` 16 :: Ptr Word64))+ earliestPresentTime <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))+ presentMargin <- peek @Word64 ((p `plusPtr` 32 :: Ptr Word64))+ pure $ PastPresentationTimingGOOGLE+ presentID desiredPresentTime actualPresentTime earliestPresentTime presentMargin++instance Storable PastPresentationTimingGOOGLE where sizeOf ~_ = 40 alignment ~_ = 8- peek ptr = VkPastPresentationTimingGOOGLE <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkPresentID (poked :: VkPastPresentationTimingGOOGLE))- *> poke (ptr `plusPtr` 8) (vkDesiredPresentTime (poked :: VkPastPresentationTimingGOOGLE))- *> poke (ptr `plusPtr` 16) (vkActualPresentTime (poked :: VkPastPresentationTimingGOOGLE))- *> poke (ptr `plusPtr` 24) (vkEarliestPresentTime (poked :: VkPastPresentationTimingGOOGLE))- *> poke (ptr `plusPtr` 32) (vkPresentMargin (poked :: VkPastPresentationTimingGOOGLE))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PastPresentationTimingGOOGLE where+ zero = PastPresentationTimingGOOGLE+ zero+ zero+ zero+ zero+ zero++ -- | VkPresentTimesInfoGOOGLE - The earliest time each image should be -- presented -- -- == Valid Usage -- -- - @swapchainCount@ /must/ be the same value as--- @VkPresentInfoKHR@::@swapchainCount@, where @VkPresentInfoKHR@ is in--- the @pNext@ chain of this @VkPresentTimesInfoGOOGLE@ structure.+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'::@swapchainCount@,+-- where 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'+-- is included in the @pNext@ chain of this 'PresentTimesInfoGOOGLE'+-- structure. -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE@+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE' -- -- - If @pTimes@ is not @NULL@, @pTimes@ /must/ be a valid pointer to an--- array of @swapchainCount@ @VkPresentTimeGOOGLE@ structures+-- array of @swapchainCount@ 'PresentTimeGOOGLE' structures -- -- - @swapchainCount@ /must/ be greater than @0@ -- -- = See Also ----- 'VkPresentTimeGOOGLE', 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPresentTimesInfoGOOGLE = VkPresentTimesInfoGOOGLE- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @swapchainCount@ is the number of swapchains being presented to by this- -- command.- vkSwapchainCount :: Word32- , -- | @pTimes@ is @NULL@ or a pointer to an array of @VkPresentTimeGOOGLE@- -- elements with @swapchainCount@ entries. If not @NULL@, each element of- -- @pTimes@ contains the earliest time to present the image corresponding- -- to the entry in the @VkPresentInfoKHR@::@pImageIndices@ array.- vkPTimes :: Ptr VkPresentTimeGOOGLE- }- deriving (Eq, Show)+-- 'PresentTimeGOOGLE',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PresentTimesInfoGOOGLE = PresentTimesInfoGOOGLE+ { -- | @pTimes@ is @NULL@ or a pointer to an array of 'PresentTimeGOOGLE'+ -- elements with @swapchainCount@ entries. If not @NULL@, each element of+ -- @pTimes@ contains the earliest time to present the image corresponding+ -- to the entry in the+ -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'::@pImageIndices@+ -- array.+ times :: Either Word32 (Vector PresentTimeGOOGLE) }+ deriving (Typeable)+deriving instance Show PresentTimesInfoGOOGLE -instance Storable VkPresentTimesInfoGOOGLE where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkPresentTimesInfoGOOGLE <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPresentTimesInfoGOOGLE))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPresentTimesInfoGOOGLE))- *> poke (ptr `plusPtr` 16) (vkSwapchainCount (poked :: VkPresentTimesInfoGOOGLE))- *> poke (ptr `plusPtr` 24) (vkPTimes (poked :: VkPresentTimesInfoGOOGLE))+instance ToCStruct PresentTimesInfoGOOGLE where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PresentTimesInfoGOOGLE{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (either id (fromIntegral . Data.Vector.length) (times)) :: Word32))+ pTimes'' <- case (times) of+ Left _ -> pure nullPtr+ Right v -> do+ pPTimes' <- ContT $ allocaBytesAligned @PresentTimeGOOGLE ((Data.Vector.length (v)) * 16) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPTimes' `plusPtr` (16 * (i)) :: Ptr PresentTimeGOOGLE) (e) . ($ ())) (v)+ pure $ pPTimes'+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr PresentTimeGOOGLE))) pTimes''+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct PresentTimesInfoGOOGLE where+ peekCStruct p = do+ swapchainCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pTimes <- peek @(Ptr PresentTimeGOOGLE) ((p `plusPtr` 24 :: Ptr (Ptr PresentTimeGOOGLE)))+ pTimes' <- maybePeek (\j -> generateM (fromIntegral swapchainCount) (\i -> peekCStruct @PresentTimeGOOGLE (((j) `advancePtrBytes` (16 * (i)) :: Ptr PresentTimeGOOGLE)))) pTimes+ let pTimes'' = maybe (Left swapchainCount) Right pTimes'+ pure $ PresentTimesInfoGOOGLE+ pTimes''++instance Zero PresentTimesInfoGOOGLE where+ zero = PresentTimesInfoGOOGLE+ (Left 0)++ -- | VkPresentTimeGOOGLE - The earliest time image should be presented -- -- = See Also ----- 'VkPresentTimesInfoGOOGLE'-data VkPresentTimeGOOGLE = VkPresentTimeGOOGLE+-- 'PresentTimesInfoGOOGLE'+data PresentTimeGOOGLE = PresentTimeGOOGLE { -- | @presentID@ is an application-provided identification value, that /can/- -- be used with the results of 'vkGetPastPresentationTimingGOOGLE', in- -- order to uniquely identify this present. In order to be useful to the- -- application, it /should/ be unique within some period of time that is- -- meaningful to the application.- vkPresentID :: Word32+ -- be used with the results of 'getPastPresentationTimingGOOGLE', in order+ -- to uniquely identify this present. In order to be useful to the+ -- application, it /should/ be unique within some period of time that is+ -- meaningful to the application.+ presentID :: Word32 , -- | @desiredPresentTime@ specifies that the image given /should/ not be- -- displayed to the user any earlier than this time. @desiredPresentTime@- -- is a time in nanoseconds, relative to a monotonically-increasing clock- -- (e.g. @CLOCK_MONOTONIC@ (see clock_gettime(2)) on Android and Linux). A- -- value of zero specifies that the presentation engine /may/ display the- -- image at any time. This is useful when the application desires to- -- provide @presentID@, but doesn’t need a specific @desiredPresentTime@.- vkDesiredPresentTime :: Word64+ -- displayed to the user any earlier than this time. @desiredPresentTime@+ -- is a time in nanoseconds, relative to a monotonically-increasing clock+ -- (e.g. @CLOCK_MONOTONIC@ (see clock_gettime(2)) on Android and Linux). A+ -- value of zero specifies that the presentation engine /may/ display the+ -- image at any time. This is useful when the application desires to+ -- provide @presentID@, but does not need a specific @desiredPresentTime@.+ desiredPresentTime :: Word64 }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show PresentTimeGOOGLE -instance Storable VkPresentTimeGOOGLE where+instance ToCStruct PresentTimeGOOGLE where+ withCStruct x f = allocaBytesAligned 16 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PresentTimeGOOGLE{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (presentID)+ poke ((p `plusPtr` 8 :: Ptr Word64)) (desiredPresentTime)+ f+ cStructSize = 16+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Word64)) (zero)+ f++instance FromCStruct PresentTimeGOOGLE where+ peekCStruct p = do+ presentID <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ desiredPresentTime <- peek @Word64 ((p `plusPtr` 8 :: Ptr Word64))+ pure $ PresentTimeGOOGLE+ presentID desiredPresentTime++instance Storable PresentTimeGOOGLE where sizeOf ~_ = 16 alignment ~_ = 8- peek ptr = VkPresentTimeGOOGLE <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkPresentID (poked :: VkPresentTimeGOOGLE))- *> poke (ptr `plusPtr` 8) (vkDesiredPresentTime (poked :: VkPresentTimeGOOGLE))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PresentTimeGOOGLE where+ zero = PresentTimeGOOGLE+ zero+ zero+++type GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION"+pattern GOOGLE_DISPLAY_TIMING_SPEC_VERSION :: forall a . Integral a => a+pattern GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1+++type GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing"++-- No documentation found for TopLevel "VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME"+pattern GOOGLE_DISPLAY_TIMING_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing"+
+ src/Graphics/Vulkan/Extensions/VK_GOOGLE_display_timing.hs-boot view
@@ -0,0 +1,41 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing ( PastPresentationTimingGOOGLE+ , PresentTimeGOOGLE+ , PresentTimesInfoGOOGLE+ , RefreshCycleDurationGOOGLE+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PastPresentationTimingGOOGLE++instance ToCStruct PastPresentationTimingGOOGLE+instance Show PastPresentationTimingGOOGLE++instance FromCStruct PastPresentationTimingGOOGLE+++data PresentTimeGOOGLE++instance ToCStruct PresentTimeGOOGLE+instance Show PresentTimeGOOGLE++instance FromCStruct PresentTimeGOOGLE+++data PresentTimesInfoGOOGLE++instance ToCStruct PresentTimesInfoGOOGLE+instance Show PresentTimesInfoGOOGLE++instance FromCStruct PresentTimesInfoGOOGLE+++data RefreshCycleDurationGOOGLE++instance ToCStruct RefreshCycleDurationGOOGLE+instance Show RefreshCycleDurationGOOGLE++instance FromCStruct RefreshCycleDurationGOOGLE+
+ src/Graphics/Vulkan/Extensions/VK_GOOGLE_hlsl_functionality1.hs view
@@ -0,0 +1,22 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_GOOGLE_hlsl_functionality1 ( GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION+ , pattern GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION+ , GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME+ , pattern GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME+ ) where++import Data.String (IsString)++type GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION"+pattern GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION :: forall a . Integral a => a+pattern GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1+++type GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1"++-- No documentation found for TopLevel "VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME"+pattern GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1"+
+ src/Graphics/Vulkan/Extensions/VK_GOOGLE_user_type.hs view
@@ -0,0 +1,22 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_GOOGLE_user_type ( GOOGLE_USER_TYPE_SPEC_VERSION+ , pattern GOOGLE_USER_TYPE_SPEC_VERSION+ , GOOGLE_USER_TYPE_EXTENSION_NAME+ , pattern GOOGLE_USER_TYPE_EXTENSION_NAME+ ) where++import Data.String (IsString)++type GOOGLE_USER_TYPE_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_GOOGLE_USER_TYPE_SPEC_VERSION"+pattern GOOGLE_USER_TYPE_SPEC_VERSION :: forall a . Integral a => a+pattern GOOGLE_USER_TYPE_SPEC_VERSION = 1+++type GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type"++-- No documentation found for TopLevel "VK_GOOGLE_USER_TYPE_EXTENSION_NAME"+pattern GOOGLE_USER_TYPE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type"+
src/Graphics/Vulkan/Extensions/VK_IMG_filter_cubic.hs view
@@ -1,37 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}+module Graphics.Vulkan.Extensions.VK_IMG_filter_cubic ( IMG_FILTER_CUBIC_SPEC_VERSION+ , pattern IMG_FILTER_CUBIC_SPEC_VERSION+ , IMG_FILTER_CUBIC_EXTENSION_NAME+ , pattern IMG_FILTER_CUBIC_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_IMG_filter_cubic- ( pattern VK_FILTER_CUBIC_IMG- , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG- , pattern VK_IMG_FILTER_CUBIC_SPEC_VERSION- , pattern VK_IMG_FILTER_CUBIC_EXTENSION_NAME- ) where+import Data.String (IsString) -import Data.String- ( IsString- )+type IMG_FILTER_CUBIC_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_IMG_FILTER_CUBIC_SPEC_VERSION"+pattern IMG_FILTER_CUBIC_SPEC_VERSION :: forall a . Integral a => a+pattern IMG_FILTER_CUBIC_SPEC_VERSION = 1 -import Graphics.Vulkan.Core10.DeviceInitialization- ( VkFormatFeatureFlagBits(..)- )-import Graphics.Vulkan.Core10.Sampler- ( VkFilter(..)- ) +type IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" --- No documentation found for Nested "VkFilter" "VK_FILTER_CUBIC_IMG"-pattern VK_FILTER_CUBIC_IMG :: VkFilter-pattern VK_FILTER_CUBIC_IMG = VkFilter 1000015000--- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = VkFormatFeatureFlagBits 0x00002000--- No documentation found for TopLevel "VK_IMG_FILTER_CUBIC_SPEC_VERSION"-pattern VK_IMG_FILTER_CUBIC_SPEC_VERSION :: Integral a => a-pattern VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_IMG_FILTER_CUBIC_EXTENSION_NAME"-pattern VK_IMG_FILTER_CUBIC_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic"+pattern IMG_FILTER_CUBIC_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic"+
src/Graphics/Vulkan/Extensions/VK_IMG_format_pvrtc.hs view
@@ -1,58 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}+module Graphics.Vulkan.Extensions.VK_IMG_format_pvrtc ( IMG_FORMAT_PVRTC_SPEC_VERSION+ , pattern IMG_FORMAT_PVRTC_SPEC_VERSION+ , IMG_FORMAT_PVRTC_EXTENSION_NAME+ , pattern IMG_FORMAT_PVRTC_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_IMG_format_pvrtc- ( pattern VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG- , pattern VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG- , pattern VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG- , pattern VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG- , pattern VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG- , pattern VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG- , pattern VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG- , pattern VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG- , pattern VK_IMG_FORMAT_PVRTC_SPEC_VERSION- , pattern VK_IMG_FORMAT_PVRTC_EXTENSION_NAME- ) where+import Data.String (IsString) -import Data.String- ( IsString- )+type IMG_FORMAT_PVRTC_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_IMG_FORMAT_PVRTC_SPEC_VERSION"+pattern IMG_FORMAT_PVRTC_SPEC_VERSION :: forall a . Integral a => a+pattern IMG_FORMAT_PVRTC_SPEC_VERSION = 1 -import Graphics.Vulkan.Core10.Core- ( VkFormat(..)- ) +type IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" --- No documentation found for Nested "VkFormat" "VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG"-pattern VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG :: VkFormat-pattern VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = VkFormat 1000054000--- No documentation found for Nested "VkFormat" "VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG"-pattern VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG :: VkFormat-pattern VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = VkFormat 1000054001--- No documentation found for Nested "VkFormat" "VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG"-pattern VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG :: VkFormat-pattern VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = VkFormat 1000054002--- No documentation found for Nested "VkFormat" "VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG"-pattern VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG :: VkFormat-pattern VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = VkFormat 1000054003--- No documentation found for Nested "VkFormat" "VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG"-pattern VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG :: VkFormat-pattern VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = VkFormat 1000054004--- No documentation found for Nested "VkFormat" "VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG"-pattern VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG :: VkFormat-pattern VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = VkFormat 1000054005--- No documentation found for Nested "VkFormat" "VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG"-pattern VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG :: VkFormat-pattern VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = VkFormat 1000054006--- No documentation found for Nested "VkFormat" "VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG"-pattern VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG :: VkFormat-pattern VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = VkFormat 1000054007--- No documentation found for TopLevel "VK_IMG_FORMAT_PVRTC_SPEC_VERSION"-pattern VK_IMG_FORMAT_PVRTC_SPEC_VERSION :: Integral a => a-pattern VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_IMG_FORMAT_PVRTC_EXTENSION_NAME"-pattern VK_IMG_FORMAT_PVRTC_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc"+pattern IMG_FORMAT_PVRTC_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc"+
+ src/Graphics/Vulkan/Extensions/VK_INTEL_performance_query.hs view
@@ -0,0 +1,1204 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_INTEL_performance_query ( initializePerformanceApiINTEL+ , uninitializePerformanceApiINTEL+ , cmdSetPerformanceMarkerINTEL+ , cmdSetPerformanceStreamMarkerINTEL+ , cmdSetPerformanceOverrideINTEL+ , acquirePerformanceConfigurationINTEL+ , releasePerformanceConfigurationINTEL+ , queueSetPerformanceConfigurationINTEL+ , getPerformanceParameterINTEL+ , PerformanceValueINTEL(..)+ , InitializePerformanceApiInfoINTEL(..)+ , QueryPoolCreateInfoINTEL(..)+ , PerformanceMarkerInfoINTEL(..)+ , PerformanceStreamMarkerInfoINTEL(..)+ , PerformanceOverrideInfoINTEL(..)+ , PerformanceConfigurationAcquireInfoINTEL(..)+ , PerformanceValueDataINTEL(..)+ , peekPerformanceValueDataINTEL+ , PerformanceConfigurationTypeINTEL( PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL+ , ..+ )+ , QueryPoolSamplingModeINTEL( QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL+ , ..+ )+ , PerformanceOverrideTypeINTEL( PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL+ , PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL+ , ..+ )+ , PerformanceParameterTypeINTEL( PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL+ , PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL+ , ..+ )+ , PerformanceValueTypeINTEL( PERFORMANCE_VALUE_TYPE_UINT32_INTEL+ , PERFORMANCE_VALUE_TYPE_UINT64_INTEL+ , PERFORMANCE_VALUE_TYPE_FLOAT_INTEL+ , PERFORMANCE_VALUE_TYPE_BOOL_INTEL+ , PERFORMANCE_VALUE_TYPE_STRING_INTEL+ , ..+ )+ , INTEL_PERFORMANCE_QUERY_SPEC_VERSION+ , pattern INTEL_PERFORMANCE_QUERY_SPEC_VERSION+ , INTEL_PERFORMANCE_QUERY_EXTENSION_NAME+ , pattern INTEL_PERFORMANCE_QUERY_EXTENSION_NAME+ , PerformanceConfigurationINTEL(..)+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.ByteString (packCString)+import Data.ByteString (useAsCString)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Control.Monad.Trans.Cont (runContT)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CFloat(CFloat))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Data.Word (Word64)+import Text.Read.Lex (Lexeme(Ident))+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkAcquirePerformanceConfigurationINTEL))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetPerformanceMarkerINTEL))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetPerformanceOverrideINTEL))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetPerformanceStreamMarkerINTEL))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetPerformanceParameterINTEL))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkInitializePerformanceApiINTEL))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkQueueSetPerformanceConfigurationINTEL))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkReleasePerformanceConfigurationINTEL))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkUninitializePerformanceApiINTEL))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Extensions.Handles (PerformanceConfigurationINTEL)+import Graphics.Vulkan.Extensions.Handles (PerformanceConfigurationINTEL(..))+import Graphics.Vulkan.Core10.Handles (Queue)+import Graphics.Vulkan.Core10.Handles (Queue(..))+import Graphics.Vulkan.Core10.Handles (Queue_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.Handles (PerformanceConfigurationINTEL(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkInitializePerformanceApiINTEL+ :: FunPtr (Ptr Device_T -> Ptr InitializePerformanceApiInfoINTEL -> IO Result) -> Ptr Device_T -> Ptr InitializePerformanceApiInfoINTEL -> IO Result++-- | vkInitializePerformanceApiINTEL - Initialize a device for performance+-- queries+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device used+-- for the queries.+--+-- - @pInitializeInfo@ is a pointer to a+-- 'InitializePerformanceApiInfoINTEL' structure specifying+-- initialization parameters.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'InitializePerformanceApiInfoINTEL'+initializePerformanceApiINTEL :: Device -> ("initializeInfo" ::: InitializePerformanceApiInfoINTEL) -> IO ()+initializePerformanceApiINTEL device initializeInfo = evalContT $ do+ let vkInitializePerformanceApiINTEL' = mkVkInitializePerformanceApiINTEL (pVkInitializePerformanceApiINTEL (deviceCmds (device :: Device)))+ pInitializeInfo <- ContT $ withCStruct (initializeInfo)+ r <- lift $ vkInitializePerformanceApiINTEL' (deviceHandle (device)) pInitializeInfo+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkUninitializePerformanceApiINTEL+ :: FunPtr (Ptr Device_T -> IO ()) -> Ptr Device_T -> IO ()++-- | vkUninitializePerformanceApiINTEL - Uninitialize a device for+-- performance queries+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device used+-- for the queries.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device'+uninitializePerformanceApiINTEL :: Device -> IO ()+uninitializePerformanceApiINTEL device = do+ let vkUninitializePerformanceApiINTEL' = mkVkUninitializePerformanceApiINTEL (pVkUninitializePerformanceApiINTEL (deviceCmds (device :: Device)))+ vkUninitializePerformanceApiINTEL' (deviceHandle (device))+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetPerformanceMarkerINTEL+ :: FunPtr (Ptr CommandBuffer_T -> Ptr PerformanceMarkerInfoINTEL -> IO Result) -> Ptr CommandBuffer_T -> Ptr PerformanceMarkerInfoINTEL -> IO Result++-- | vkCmdSetPerformanceMarkerINTEL - Markers+--+-- = Parameters+--+-- The last marker set onto a command buffer before the end of a query will+-- be part of the query result.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pMarkerInfo@ /must/ be a valid pointer to a valid+-- 'PerformanceMarkerInfoINTEL' structure+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, compute, or transfer operations+--+-- == Host Synchronization+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- | | | Transfer | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'PerformanceMarkerInfoINTEL'+cmdSetPerformanceMarkerINTEL :: CommandBuffer -> PerformanceMarkerInfoINTEL -> IO ()+cmdSetPerformanceMarkerINTEL commandBuffer markerInfo = evalContT $ do+ let vkCmdSetPerformanceMarkerINTEL' = mkVkCmdSetPerformanceMarkerINTEL (pVkCmdSetPerformanceMarkerINTEL (deviceCmds (commandBuffer :: CommandBuffer)))+ pMarkerInfo <- ContT $ withCStruct (markerInfo)+ r <- lift $ vkCmdSetPerformanceMarkerINTEL' (commandBufferHandle (commandBuffer)) pMarkerInfo+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetPerformanceStreamMarkerINTEL+ :: FunPtr (Ptr CommandBuffer_T -> Ptr PerformanceStreamMarkerInfoINTEL -> IO Result) -> Ptr CommandBuffer_T -> Ptr PerformanceStreamMarkerInfoINTEL -> IO Result++-- | vkCmdSetPerformanceStreamMarkerINTEL - Markers+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pMarkerInfo@ /must/ be a valid pointer to a valid+-- 'PerformanceStreamMarkerInfoINTEL' structure+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, compute, or transfer operations+--+-- == Host Synchronization+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- | | | Transfer | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'PerformanceStreamMarkerInfoINTEL'+cmdSetPerformanceStreamMarkerINTEL :: CommandBuffer -> PerformanceStreamMarkerInfoINTEL -> IO ()+cmdSetPerformanceStreamMarkerINTEL commandBuffer markerInfo = evalContT $ do+ let vkCmdSetPerformanceStreamMarkerINTEL' = mkVkCmdSetPerformanceStreamMarkerINTEL (pVkCmdSetPerformanceStreamMarkerINTEL (deviceCmds (commandBuffer :: CommandBuffer)))+ pMarkerInfo <- ContT $ withCStruct (markerInfo)+ r <- lift $ vkCmdSetPerformanceStreamMarkerINTEL' (commandBufferHandle (commandBuffer)) pMarkerInfo+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetPerformanceOverrideINTEL+ :: FunPtr (Ptr CommandBuffer_T -> Ptr PerformanceOverrideInfoINTEL -> IO Result) -> Ptr CommandBuffer_T -> Ptr PerformanceOverrideInfoINTEL -> IO Result++-- | vkCmdSetPerformanceOverrideINTEL - Performance override settings+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- where the override takes place.+--+-- - @pOverrideInfo@ is a pointer to a 'PerformanceOverrideInfoINTEL'+-- structure selecting the parameter to override.+--+-- == Valid Usage+--+-- - @pOverrideInfo@ /must/ not be used with a+-- 'PerformanceOverrideTypeINTEL' that is not reported available by+-- 'getPerformanceParameterINTEL'.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pOverrideInfo@ /must/ be a valid pointer to a valid+-- 'PerformanceOverrideInfoINTEL' structure+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, compute, or transfer operations+--+-- == Host Synchronization+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- | | | Transfer | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'PerformanceOverrideInfoINTEL'+cmdSetPerformanceOverrideINTEL :: CommandBuffer -> PerformanceOverrideInfoINTEL -> IO ()+cmdSetPerformanceOverrideINTEL commandBuffer overrideInfo = evalContT $ do+ let vkCmdSetPerformanceOverrideINTEL' = mkVkCmdSetPerformanceOverrideINTEL (pVkCmdSetPerformanceOverrideINTEL (deviceCmds (commandBuffer :: CommandBuffer)))+ pOverrideInfo <- ContT $ withCStruct (overrideInfo)+ r <- lift $ vkCmdSetPerformanceOverrideINTEL' (commandBufferHandle (commandBuffer)) pOverrideInfo+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkAcquirePerformanceConfigurationINTEL+ :: FunPtr (Ptr Device_T -> Ptr PerformanceConfigurationAcquireInfoINTEL -> Ptr PerformanceConfigurationINTEL -> IO Result) -> Ptr Device_T -> Ptr PerformanceConfigurationAcquireInfoINTEL -> Ptr PerformanceConfigurationINTEL -> IO Result++-- | vkAcquirePerformanceConfigurationINTEL - Acquire the performance query+-- capability+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- the performance query commands will be submitted to.+--+-- - @pAcquireInfo@ is a pointer to a+-- 'PerformanceConfigurationAcquireInfoINTEL' structure, specifying the+-- performance configuration to acquire.+--+-- - @pConfiguration@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.PerformanceConfigurationINTEL'+-- handle in which the resulting configuration object is returned.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'PerformanceConfigurationAcquireInfoINTEL',+-- 'Graphics.Vulkan.Extensions.Handles.PerformanceConfigurationINTEL'+acquirePerformanceConfigurationINTEL :: Device -> PerformanceConfigurationAcquireInfoINTEL -> IO (PerformanceConfigurationINTEL)+acquirePerformanceConfigurationINTEL device acquireInfo = evalContT $ do+ let vkAcquirePerformanceConfigurationINTEL' = mkVkAcquirePerformanceConfigurationINTEL (pVkAcquirePerformanceConfigurationINTEL (deviceCmds (device :: Device)))+ pAcquireInfo <- ContT $ withCStruct (acquireInfo)+ pPConfiguration <- ContT $ bracket (callocBytes @PerformanceConfigurationINTEL 8) free+ r <- lift $ vkAcquirePerformanceConfigurationINTEL' (deviceHandle (device)) pAcquireInfo (pPConfiguration)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pConfiguration <- lift $ peek @PerformanceConfigurationINTEL pPConfiguration+ pure $ (pConfiguration)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkReleasePerformanceConfigurationINTEL+ :: FunPtr (Ptr Device_T -> PerformanceConfigurationINTEL -> IO Result) -> Ptr Device_T -> PerformanceConfigurationINTEL -> IO Result++-- | vkReleasePerformanceConfigurationINTEL - Release a configuration to+-- capture performance data+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the device associated to+-- the configuration object to release.+--+-- - @configuration@ is the configuration object to release.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Extensions.Handles.PerformanceConfigurationINTEL'+releasePerformanceConfigurationINTEL :: Device -> PerformanceConfigurationINTEL -> IO ()+releasePerformanceConfigurationINTEL device configuration = do+ let vkReleasePerformanceConfigurationINTEL' = mkVkReleasePerformanceConfigurationINTEL (pVkReleasePerformanceConfigurationINTEL (deviceCmds (device :: Device)))+ r <- vkReleasePerformanceConfigurationINTEL' (deviceHandle (device)) (configuration)+ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkQueueSetPerformanceConfigurationINTEL+ :: FunPtr (Ptr Queue_T -> PerformanceConfigurationINTEL -> IO Result) -> Ptr Queue_T -> PerformanceConfigurationINTEL -> IO Result++-- | vkQueueSetPerformanceConfigurationINTEL - Set a performance query+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Queue' is the queue on which the+-- configuration will be used.+--+-- - @configuration@ is the configuration to use.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Queue' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Queue' handle+--+-- - @configuration@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.PerformanceConfigurationINTEL'+-- handle+--+-- - Both of @configuration@, and 'Graphics.Vulkan.Core10.Handles.Queue'+-- /must/ have been created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | - | - | Any | - |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.PerformanceConfigurationINTEL',+-- 'Graphics.Vulkan.Core10.Handles.Queue'+queueSetPerformanceConfigurationINTEL :: Queue -> PerformanceConfigurationINTEL -> IO ()+queueSetPerformanceConfigurationINTEL queue configuration = do+ let vkQueueSetPerformanceConfigurationINTEL' = mkVkQueueSetPerformanceConfigurationINTEL (pVkQueueSetPerformanceConfigurationINTEL (deviceCmds (queue :: Queue)))+ r <- vkQueueSetPerformanceConfigurationINTEL' (queueHandle (queue)) (configuration)+ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPerformanceParameterINTEL+ :: FunPtr (Ptr Device_T -> PerformanceParameterTypeINTEL -> Ptr PerformanceValueINTEL -> IO Result) -> Ptr Device_T -> PerformanceParameterTypeINTEL -> Ptr PerformanceValueINTEL -> IO Result++-- | vkGetPerformanceParameterINTEL - Query performance capabilities of the+-- device+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device to+-- query.+--+-- - @parameter@ is the parameter to query.+--+-- - @pValue@ is a pointer to a 'PerformanceValueINTEL' structure in+-- which the type and value of the parameter are returned.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'PerformanceParameterTypeINTEL', 'PerformanceValueINTEL'+getPerformanceParameterINTEL :: Device -> PerformanceParameterTypeINTEL -> IO (PerformanceValueINTEL)+getPerformanceParameterINTEL device parameter = evalContT $ do+ let vkGetPerformanceParameterINTEL' = mkVkGetPerformanceParameterINTEL (pVkGetPerformanceParameterINTEL (deviceCmds (device :: Device)))+ pPValue <- ContT (withZeroCStruct @PerformanceValueINTEL)+ r <- lift $ vkGetPerformanceParameterINTEL' (deviceHandle (device)) (parameter) (pPValue)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pValue <- lift $ peekCStruct @PerformanceValueINTEL pPValue+ pure $ (pValue)+++-- | VkPerformanceValueINTEL - Container for value and types of parameters+-- that can be queried+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'PerformanceValueDataINTEL', 'PerformanceValueTypeINTEL',+-- 'getPerformanceParameterINTEL'+data PerformanceValueINTEL = PerformanceValueINTEL+ { -- | @type@ /must/ be a valid 'PerformanceValueTypeINTEL' value+ type' :: PerformanceValueTypeINTEL+ , -- | @data@ /must/ be a valid 'PerformanceValueDataINTEL' union+ data' :: PerformanceValueDataINTEL+ }+ deriving (Typeable)+deriving instance Show PerformanceValueINTEL++instance ToCStruct PerformanceValueINTEL where+ withCStruct x f = allocaBytesAligned 16 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PerformanceValueINTEL{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr PerformanceValueTypeINTEL)) (type')+ ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr PerformanceValueDataINTEL)) (data') . ($ ())+ lift $ f+ cStructSize = 16+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr PerformanceValueTypeINTEL)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr PerformanceValueDataINTEL)) (zero) . ($ ())+ lift $ f++instance FromCStruct PerformanceValueINTEL where+ peekCStruct p = do+ type' <- peek @PerformanceValueTypeINTEL ((p `plusPtr` 0 :: Ptr PerformanceValueTypeINTEL))+ data' <- peekPerformanceValueDataINTEL type' ((p `plusPtr` 8 :: Ptr PerformanceValueDataINTEL))+ pure $ PerformanceValueINTEL+ type' data'++instance Zero PerformanceValueINTEL where+ zero = PerformanceValueINTEL+ zero+ zero+++-- | VkInitializePerformanceApiInfoINTEL - Structure specifying parameters of+-- initialize of the device+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'initializePerformanceApiINTEL'+data InitializePerformanceApiInfoINTEL = InitializePerformanceApiInfoINTEL+ { -- | @pUserData@ is a pointer for application data.+ userData :: Ptr () }+ deriving (Typeable)+deriving instance Show InitializePerformanceApiInfoINTEL++instance ToCStruct InitializePerformanceApiInfoINTEL where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p InitializePerformanceApiInfoINTEL{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr (Ptr ()))) (userData)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr (Ptr ()))) (zero)+ f++instance FromCStruct InitializePerformanceApiInfoINTEL where+ peekCStruct p = do+ pUserData <- peek @(Ptr ()) ((p `plusPtr` 16 :: Ptr (Ptr ())))+ pure $ InitializePerformanceApiInfoINTEL+ pUserData++instance Storable InitializePerformanceApiInfoINTEL where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero InitializePerformanceApiInfoINTEL where+ zero = InitializePerformanceApiInfoINTEL+ zero+++-- | VkQueryPoolCreateInfoINTEL - Structure specifying parameters to create a+-- pool of performance queries+--+-- = Members+--+-- To create a pool for Intel performance queries, set+-- 'Graphics.Vulkan.Core10.Query.QueryPoolCreateInfo'::'Graphics.Vulkan.Core10.Enums.QueryType.QueryType'+-- to+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_INTEL'+-- and add a 'QueryPoolCreateInfoINTEL' structure to the @pNext@ chain of+-- the 'Graphics.Vulkan.Core10.Query.QueryPoolCreateInfo' structure.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'QueryPoolSamplingModeINTEL',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data QueryPoolCreateInfoINTEL = QueryPoolCreateInfoINTEL+ { -- | @performanceCountersSampling@ /must/ be a valid+ -- 'QueryPoolSamplingModeINTEL' value+ performanceCountersSampling :: QueryPoolSamplingModeINTEL }+ deriving (Typeable)+deriving instance Show QueryPoolCreateInfoINTEL++instance ToCStruct QueryPoolCreateInfoINTEL where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p QueryPoolCreateInfoINTEL{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr QueryPoolSamplingModeINTEL)) (performanceCountersSampling)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr QueryPoolSamplingModeINTEL)) (zero)+ f++instance FromCStruct QueryPoolCreateInfoINTEL where+ peekCStruct p = do+ performanceCountersSampling <- peek @QueryPoolSamplingModeINTEL ((p `plusPtr` 16 :: Ptr QueryPoolSamplingModeINTEL))+ pure $ QueryPoolCreateInfoINTEL+ performanceCountersSampling++instance Storable QueryPoolCreateInfoINTEL where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero QueryPoolCreateInfoINTEL where+ zero = QueryPoolCreateInfoINTEL+ zero+++-- | VkPerformanceMarkerInfoINTEL - Structure specifying performance markers+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'cmdSetPerformanceMarkerINTEL'+data PerformanceMarkerInfoINTEL = PerformanceMarkerInfoINTEL+ { -- | @marker@ is the marker value that will be recorded into the opaque query+ -- results.+ marker :: Word64 }+ deriving (Typeable)+deriving instance Show PerformanceMarkerInfoINTEL++instance ToCStruct PerformanceMarkerInfoINTEL where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PerformanceMarkerInfoINTEL{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word64)) (marker)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word64)) (zero)+ f++instance FromCStruct PerformanceMarkerInfoINTEL where+ peekCStruct p = do+ marker <- peek @Word64 ((p `plusPtr` 16 :: Ptr Word64))+ pure $ PerformanceMarkerInfoINTEL+ marker++instance Storable PerformanceMarkerInfoINTEL where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PerformanceMarkerInfoINTEL where+ zero = PerformanceMarkerInfoINTEL+ zero+++-- | VkPerformanceStreamMarkerInfoINTEL - Structure specifying stream+-- performance markers+--+-- == Valid Usage+--+-- - The value written by the application into @marker@ /must/ only used+-- the valid bits as reported by 'getPerformanceParameterINTEL' with+-- the 'PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL'.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL'+--+-- - @pNext@ /must/ be @NULL@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'cmdSetPerformanceStreamMarkerINTEL'+data PerformanceStreamMarkerInfoINTEL = PerformanceStreamMarkerInfoINTEL+ { -- | @marker@ is the marker value that will be recorded into the reports+ -- consumed by an external application.+ marker :: Word32 }+ deriving (Typeable)+deriving instance Show PerformanceStreamMarkerInfoINTEL++instance ToCStruct PerformanceStreamMarkerInfoINTEL where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PerformanceStreamMarkerInfoINTEL{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (marker)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ f++instance FromCStruct PerformanceStreamMarkerInfoINTEL where+ peekCStruct p = do+ marker <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pure $ PerformanceStreamMarkerInfoINTEL+ marker++instance Storable PerformanceStreamMarkerInfoINTEL where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PerformanceStreamMarkerInfoINTEL where+ zero = PerformanceStreamMarkerInfoINTEL+ zero+++-- | VkPerformanceOverrideInfoINTEL - Performance override info+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'PerformanceOverrideTypeINTEL',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'cmdSetPerformanceOverrideINTEL'+data PerformanceOverrideInfoINTEL = PerformanceOverrideInfoINTEL+ { -- | @type@ /must/ be a valid 'PerformanceOverrideTypeINTEL' value+ type' :: PerformanceOverrideTypeINTEL+ , -- | @enable@ defines whether the override is enabled.+ enable :: Bool+ , -- | @parameter@ is a potential required parameter for the override.+ parameter :: Word64+ }+ deriving (Typeable)+deriving instance Show PerformanceOverrideInfoINTEL++instance ToCStruct PerformanceOverrideInfoINTEL where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PerformanceOverrideInfoINTEL{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr PerformanceOverrideTypeINTEL)) (type')+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (enable))+ poke ((p `plusPtr` 24 :: Ptr Word64)) (parameter)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr PerformanceOverrideTypeINTEL)) (zero)+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)+ f++instance FromCStruct PerformanceOverrideInfoINTEL where+ peekCStruct p = do+ type' <- peek @PerformanceOverrideTypeINTEL ((p `plusPtr` 16 :: Ptr PerformanceOverrideTypeINTEL))+ enable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ parameter <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))+ pure $ PerformanceOverrideInfoINTEL+ type' (bool32ToBool enable) parameter++instance Storable PerformanceOverrideInfoINTEL where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PerformanceOverrideInfoINTEL where+ zero = PerformanceOverrideInfoINTEL+ zero+ zero+ zero+++-- | VkPerformanceConfigurationAcquireInfoINTEL - Acquire a configuration to+-- capture performance data+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'PerformanceConfigurationTypeINTEL',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'acquirePerformanceConfigurationINTEL'+data PerformanceConfigurationAcquireInfoINTEL = PerformanceConfigurationAcquireInfoINTEL+ { -- | @type@ /must/ be a valid 'PerformanceConfigurationTypeINTEL' value+ type' :: PerformanceConfigurationTypeINTEL }+ deriving (Typeable)+deriving instance Show PerformanceConfigurationAcquireInfoINTEL++instance ToCStruct PerformanceConfigurationAcquireInfoINTEL where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PerformanceConfigurationAcquireInfoINTEL{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr PerformanceConfigurationTypeINTEL)) (type')+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr PerformanceConfigurationTypeINTEL)) (zero)+ f++instance FromCStruct PerformanceConfigurationAcquireInfoINTEL where+ peekCStruct p = do+ type' <- peek @PerformanceConfigurationTypeINTEL ((p `plusPtr` 16 :: Ptr PerformanceConfigurationTypeINTEL))+ pure $ PerformanceConfigurationAcquireInfoINTEL+ type'++instance Storable PerformanceConfigurationAcquireInfoINTEL where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PerformanceConfigurationAcquireInfoINTEL where+ zero = PerformanceConfigurationAcquireInfoINTEL+ zero+++data PerformanceValueDataINTEL+ = Value32 Word32+ | Value64 Word64+ | ValueFloat Float+ | ValueBool Bool+ | ValueString ByteString+ deriving (Show)++instance ToCStruct PerformanceValueDataINTEL where+ withCStruct x f = allocaBytesAligned 8 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct :: Ptr PerformanceValueDataINTEL -> PerformanceValueDataINTEL -> IO a -> IO a+ pokeCStruct p = (. const) . runContT . \case+ Value32 v -> lift $ poke (castPtr @_ @Word32 p) (v)+ Value64 v -> lift $ poke (castPtr @_ @Word64 p) (v)+ ValueFloat v -> lift $ poke (castPtr @_ @CFloat p) (CFloat (v))+ ValueBool v -> lift $ poke (castPtr @_ @Bool32 p) (boolToBool32 (v))+ ValueString v -> do+ valueString <- ContT $ useAsCString (v)+ lift $ poke (castPtr @_ @(Ptr CChar) p) valueString+ pokeZeroCStruct :: Ptr PerformanceValueDataINTEL -> IO b -> IO b+ pokeZeroCStruct _ f = f+ cStructSize = 8+ cStructAlignment = 8++instance Zero PerformanceValueDataINTEL where+ zero = Value64 zero++peekPerformanceValueDataINTEL :: PerformanceValueTypeINTEL -> Ptr PerformanceValueDataINTEL -> IO PerformanceValueDataINTEL+peekPerformanceValueDataINTEL tag p = case tag of+ PERFORMANCE_VALUE_TYPE_UINT32_INTEL -> Value32 <$> (peek @Word32 (castPtr @_ @Word32 p))+ PERFORMANCE_VALUE_TYPE_UINT64_INTEL -> Value64 <$> (peek @Word64 (castPtr @_ @Word64 p))+ PERFORMANCE_VALUE_TYPE_FLOAT_INTEL -> ValueFloat <$> (do+ valueFloat <- peek @CFloat (castPtr @_ @CFloat p)+ pure $ (\(CFloat a) -> a) valueFloat)+ PERFORMANCE_VALUE_TYPE_BOOL_INTEL -> ValueBool <$> (do+ valueBool <- peek @Bool32 (castPtr @_ @Bool32 p)+ pure $ bool32ToBool valueBool)+ PERFORMANCE_VALUE_TYPE_STRING_INTEL -> ValueString <$> (packCString =<< peek (castPtr @_ @(Ptr CChar) p))+++-- | VkPerformanceConfigurationTypeINTEL - Type of performance configuration+--+-- = See Also+--+-- 'PerformanceConfigurationAcquireInfoINTEL'+newtype PerformanceConfigurationTypeINTEL = PerformanceConfigurationTypeINTEL Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- No documentation found for Nested "VkPerformanceConfigurationTypeINTEL" "VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL"+pattern PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = PerformanceConfigurationTypeINTEL 0+{-# complete PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL :: PerformanceConfigurationTypeINTEL #-}++instance Show PerformanceConfigurationTypeINTEL where+ showsPrec p = \case+ PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL -> showString "PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL"+ PerformanceConfigurationTypeINTEL x -> showParen (p >= 11) (showString "PerformanceConfigurationTypeINTEL " . showsPrec 11 x)++instance Read PerformanceConfigurationTypeINTEL where+ readPrec = parens (choose [("PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL", pure PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL)]+ ++++ prec 10 (do+ expectP (Ident "PerformanceConfigurationTypeINTEL")+ v <- step readPrec+ pure (PerformanceConfigurationTypeINTEL v)))+++-- | VkQueryPoolSamplingModeINTEL - Enum specifying how performance queries+-- should be captured+--+-- = See Also+--+-- 'QueryPoolCreateInfoINTEL'+newtype QueryPoolSamplingModeINTEL = QueryPoolSamplingModeINTEL Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL' is the default mode in which the+-- application calls+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery' and+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdEndQuery' to record+-- performance data.+pattern QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = QueryPoolSamplingModeINTEL 0+{-# complete QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL :: QueryPoolSamplingModeINTEL #-}++instance Show QueryPoolSamplingModeINTEL where+ showsPrec p = \case+ QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL -> showString "QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL"+ QueryPoolSamplingModeINTEL x -> showParen (p >= 11) (showString "QueryPoolSamplingModeINTEL " . showsPrec 11 x)++instance Read QueryPoolSamplingModeINTEL where+ readPrec = parens (choose [("QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL", pure QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL)]+ ++++ prec 10 (do+ expectP (Ident "QueryPoolSamplingModeINTEL")+ v <- step readPrec+ pure (QueryPoolSamplingModeINTEL v)))+++-- | VkPerformanceOverrideTypeINTEL - Performance override type+--+-- = See Also+--+-- 'PerformanceOverrideInfoINTEL'+newtype PerformanceOverrideTypeINTEL = PerformanceOverrideTypeINTEL Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL' turns all rendering+-- operations into noop.+pattern PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = PerformanceOverrideTypeINTEL 0+-- | 'PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL' stalls the stream of+-- commands until all previously emitted commands have completed and all+-- caches been flushed and invalidated.+pattern PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = PerformanceOverrideTypeINTEL 1+{-# complete PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL,+ PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL :: PerformanceOverrideTypeINTEL #-}++instance Show PerformanceOverrideTypeINTEL where+ showsPrec p = \case+ PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL -> showString "PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL"+ PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL -> showString "PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL"+ PerformanceOverrideTypeINTEL x -> showParen (p >= 11) (showString "PerformanceOverrideTypeINTEL " . showsPrec 11 x)++instance Read PerformanceOverrideTypeINTEL where+ readPrec = parens (choose [("PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL", pure PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL)+ , ("PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL", pure PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL)]+ ++++ prec 10 (do+ expectP (Ident "PerformanceOverrideTypeINTEL")+ v <- step readPrec+ pure (PerformanceOverrideTypeINTEL v)))+++-- | VkPerformanceParameterTypeINTEL - Parameters that can be queried+--+-- = See Also+--+-- 'getPerformanceParameterINTEL'+newtype PerformanceParameterTypeINTEL = PerformanceParameterTypeINTEL Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL' has a boolean+-- result which tells whether hardware counters can be captured.+pattern PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = PerformanceParameterTypeINTEL 0+-- | 'PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL' has a 32+-- bits integer result which tells how many bits can be written into the+-- 'PerformanceValueINTEL' value.+pattern PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = PerformanceParameterTypeINTEL 1+{-# complete PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL,+ PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL :: PerformanceParameterTypeINTEL #-}++instance Show PerformanceParameterTypeINTEL where+ showsPrec p = \case+ PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL -> showString "PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL"+ PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL -> showString "PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL"+ PerformanceParameterTypeINTEL x -> showParen (p >= 11) (showString "PerformanceParameterTypeINTEL " . showsPrec 11 x)++instance Read PerformanceParameterTypeINTEL where+ readPrec = parens (choose [("PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL", pure PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL)+ , ("PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL", pure PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL)]+ ++++ prec 10 (do+ expectP (Ident "PerformanceParameterTypeINTEL")+ v <- step readPrec+ pure (PerformanceParameterTypeINTEL v)))+++-- | VkPerformanceValueTypeINTEL - Type of the parameters that can be queried+--+-- = See Also+--+-- 'PerformanceValueINTEL'+newtype PerformanceValueTypeINTEL = PerformanceValueTypeINTEL Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- No documentation found for Nested "VkPerformanceValueTypeINTEL" "VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL"+pattern PERFORMANCE_VALUE_TYPE_UINT32_INTEL = PerformanceValueTypeINTEL 0+-- No documentation found for Nested "VkPerformanceValueTypeINTEL" "VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL"+pattern PERFORMANCE_VALUE_TYPE_UINT64_INTEL = PerformanceValueTypeINTEL 1+-- No documentation found for Nested "VkPerformanceValueTypeINTEL" "VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL"+pattern PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = PerformanceValueTypeINTEL 2+-- No documentation found for Nested "VkPerformanceValueTypeINTEL" "VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL"+pattern PERFORMANCE_VALUE_TYPE_BOOL_INTEL = PerformanceValueTypeINTEL 3+-- No documentation found for Nested "VkPerformanceValueTypeINTEL" "VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL"+pattern PERFORMANCE_VALUE_TYPE_STRING_INTEL = PerformanceValueTypeINTEL 4+{-# complete PERFORMANCE_VALUE_TYPE_UINT32_INTEL,+ PERFORMANCE_VALUE_TYPE_UINT64_INTEL,+ PERFORMANCE_VALUE_TYPE_FLOAT_INTEL,+ PERFORMANCE_VALUE_TYPE_BOOL_INTEL,+ PERFORMANCE_VALUE_TYPE_STRING_INTEL :: PerformanceValueTypeINTEL #-}++instance Show PerformanceValueTypeINTEL where+ showsPrec p = \case+ PERFORMANCE_VALUE_TYPE_UINT32_INTEL -> showString "PERFORMANCE_VALUE_TYPE_UINT32_INTEL"+ PERFORMANCE_VALUE_TYPE_UINT64_INTEL -> showString "PERFORMANCE_VALUE_TYPE_UINT64_INTEL"+ PERFORMANCE_VALUE_TYPE_FLOAT_INTEL -> showString "PERFORMANCE_VALUE_TYPE_FLOAT_INTEL"+ PERFORMANCE_VALUE_TYPE_BOOL_INTEL -> showString "PERFORMANCE_VALUE_TYPE_BOOL_INTEL"+ PERFORMANCE_VALUE_TYPE_STRING_INTEL -> showString "PERFORMANCE_VALUE_TYPE_STRING_INTEL"+ PerformanceValueTypeINTEL x -> showParen (p >= 11) (showString "PerformanceValueTypeINTEL " . showsPrec 11 x)++instance Read PerformanceValueTypeINTEL where+ readPrec = parens (choose [("PERFORMANCE_VALUE_TYPE_UINT32_INTEL", pure PERFORMANCE_VALUE_TYPE_UINT32_INTEL)+ , ("PERFORMANCE_VALUE_TYPE_UINT64_INTEL", pure PERFORMANCE_VALUE_TYPE_UINT64_INTEL)+ , ("PERFORMANCE_VALUE_TYPE_FLOAT_INTEL", pure PERFORMANCE_VALUE_TYPE_FLOAT_INTEL)+ , ("PERFORMANCE_VALUE_TYPE_BOOL_INTEL", pure PERFORMANCE_VALUE_TYPE_BOOL_INTEL)+ , ("PERFORMANCE_VALUE_TYPE_STRING_INTEL", pure PERFORMANCE_VALUE_TYPE_STRING_INTEL)]+ ++++ prec 10 (do+ expectP (Ident "PerformanceValueTypeINTEL")+ v <- step readPrec+ pure (PerformanceValueTypeINTEL v)))+++type INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION"+pattern INTEL_PERFORMANCE_QUERY_SPEC_VERSION :: forall a . Integral a => a+pattern INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 1+++type INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query"++-- No documentation found for TopLevel "VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME"+pattern INTEL_PERFORMANCE_QUERY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query"+
+ src/Graphics/Vulkan/Extensions/VK_INTEL_performance_query.hs-boot view
@@ -0,0 +1,72 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_INTEL_performance_query ( InitializePerformanceApiInfoINTEL+ , PerformanceConfigurationAcquireInfoINTEL+ , PerformanceMarkerInfoINTEL+ , PerformanceOverrideInfoINTEL+ , PerformanceStreamMarkerInfoINTEL+ , PerformanceValueINTEL+ , QueryPoolCreateInfoINTEL+ , PerformanceParameterTypeINTEL+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data InitializePerformanceApiInfoINTEL++instance ToCStruct InitializePerformanceApiInfoINTEL+instance Show InitializePerformanceApiInfoINTEL++instance FromCStruct InitializePerformanceApiInfoINTEL+++data PerformanceConfigurationAcquireInfoINTEL++instance ToCStruct PerformanceConfigurationAcquireInfoINTEL+instance Show PerformanceConfigurationAcquireInfoINTEL++instance FromCStruct PerformanceConfigurationAcquireInfoINTEL+++data PerformanceMarkerInfoINTEL++instance ToCStruct PerformanceMarkerInfoINTEL+instance Show PerformanceMarkerInfoINTEL++instance FromCStruct PerformanceMarkerInfoINTEL+++data PerformanceOverrideInfoINTEL++instance ToCStruct PerformanceOverrideInfoINTEL+instance Show PerformanceOverrideInfoINTEL++instance FromCStruct PerformanceOverrideInfoINTEL+++data PerformanceStreamMarkerInfoINTEL++instance ToCStruct PerformanceStreamMarkerInfoINTEL+instance Show PerformanceStreamMarkerInfoINTEL++instance FromCStruct PerformanceStreamMarkerInfoINTEL+++data PerformanceValueINTEL++instance ToCStruct PerformanceValueINTEL+instance Show PerformanceValueINTEL++instance FromCStruct PerformanceValueINTEL+++data QueryPoolCreateInfoINTEL++instance ToCStruct QueryPoolCreateInfoINTEL+instance Show QueryPoolCreateInfoINTEL++instance FromCStruct QueryPoolCreateInfoINTEL+++data PerformanceParameterTypeINTEL+
+ src/Graphics/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs view
@@ -0,0 +1,106 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_INTEL_shader_integer_functions2 ( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(..)+ , INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION+ , pattern INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION+ , INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME+ , pattern INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL))+-- | VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL - Structure+-- describing shader integer functions that can be supported by an+-- implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL'+-- structure describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL' /can/ also be+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL = PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL+ { -- | @shaderIntegerFunctions2@ indicates that the implementation supports the+ -- @ShaderIntegerFunctions2INTEL@ SPIR-V capability.+ shaderIntegerFunctions2 :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL++instance ToCStruct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderIntegerFunctions2))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL where+ peekCStruct p = do+ shaderIntegerFunctions2 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL+ (bool32ToBool shaderIntegerFunctions2)++instance Storable PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL where+ zero = PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL+ zero+++type INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION"+pattern INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION :: forall a . Integral a => a+pattern INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1+++type INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2"++-- No documentation found for TopLevel "VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME"+pattern INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2"+
+ src/Graphics/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_INTEL_shader_integer_functions2 (PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL++instance ToCStruct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL+instance Show PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL++instance FromCStruct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL+
src/Graphics/Vulkan/Extensions/VK_KHR_16bit_storage.hs view
@@ -1,52 +1,33 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}+module Graphics.Vulkan.Extensions.VK_KHR_16bit_storage ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR+ , PhysicalDevice16BitStorageFeaturesKHR+ , KHR_16BIT_STORAGE_SPEC_VERSION+ , pattern KHR_16BIT_STORAGE_SPEC_VERSION+ , KHR_16BIT_STORAGE_EXTENSION_NAME+ , pattern KHR_16BIT_STORAGE_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_KHR_16bit_storage- ( pattern VK_KHR_16BIT_STORAGE_SPEC_VERSION- , pattern VK_KHR_16BIT_STORAGE_EXTENSION_NAME- , VkPhysicalDevice16BitStorageFeaturesKHR- , pattern VkPhysicalDevice16BitStorageFeaturesKHR- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR- ) where+import Data.String (IsString)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage (PhysicalDevice16BitStorageFeatures)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES -import Data.String- ( IsString- )-import Foreign.Ptr- ( Ptr- )-import Graphics.Vulkan.NamedType- ( (:::)- ) +-- No documentation found for TopLevel "VkPhysicalDevice16BitStorageFeaturesKHR"+type PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures -import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_16bit_storage- ( VkPhysicalDevice16BitStorageFeatures(..)- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES- ) +type KHR_16BIT_STORAGE_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_KHR_16BIT_STORAGE_SPEC_VERSION"-pattern VK_KHR_16BIT_STORAGE_SPEC_VERSION :: Integral a => a-pattern VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_16BIT_STORAGE_EXTENSION_NAME"-pattern VK_KHR_16BIT_STORAGE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage"--- No documentation found for TopLevel "VkPhysicalDevice16BitStorageFeaturesKHR"-type VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures+pattern KHR_16BIT_STORAGE_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_16BIT_STORAGE_SPEC_VERSION = 1 --- No documentation found for TopLevel "VkPhysicalDevice16BitStorageFeaturesKHR"-pattern VkPhysicalDevice16BitStorageFeaturesKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("storageBuffer16BitAccess" ::: VkBool32) -> ("uniformAndStorageBuffer16BitAccess" ::: VkBool32) -> ("storagePushConstant16" ::: VkBool32) -> ("storageInputOutput16" ::: VkBool32) -> VkPhysicalDevice16BitStorageFeaturesKHR-pattern VkPhysicalDevice16BitStorageFeaturesKHR vkSType vkPNext vkStorageBuffer16BitAccess vkUniformAndStorageBuffer16BitAccess vkStoragePushConstant16 vkStorageInputOutput16 = VkPhysicalDevice16BitStorageFeatures vkSType vkPNext vkStorageBuffer16BitAccess vkUniformAndStorageBuffer16BitAccess vkStoragePushConstant16 vkStorageInputOutput16--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES+type KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage"++-- No documentation found for TopLevel "VK_KHR_16BIT_STORAGE_EXTENSION_NAME"+pattern KHR_16BIT_STORAGE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_8bit_storage.hs view
@@ -0,0 +1,33 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_8bit_storage ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR+ , PhysicalDevice8BitStorageFeaturesKHR+ , KHR_8BIT_STORAGE_SPEC_VERSION+ , pattern KHR_8BIT_STORAGE_SPEC_VERSION+ , KHR_8BIT_STORAGE_EXTENSION_NAME+ , pattern KHR_8BIT_STORAGE_EXTENSION_NAME+ ) where++import Data.String (IsString)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage (PhysicalDevice8BitStorageFeatures)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES+++-- No documentation found for TopLevel "VkPhysicalDevice8BitStorageFeaturesKHR"+type PhysicalDevice8BitStorageFeaturesKHR = PhysicalDevice8BitStorageFeatures+++type KHR_8BIT_STORAGE_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_8BIT_STORAGE_SPEC_VERSION"+pattern KHR_8BIT_STORAGE_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_8BIT_STORAGE_SPEC_VERSION = 1+++type KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage"++-- No documentation found for TopLevel "VK_KHR_8BIT_STORAGE_EXTENSION_NAME"+pattern KHR_8BIT_STORAGE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage"+
src/Graphics/Vulkan/Extensions/VK_KHR_android_surface.hs view
@@ -1,139 +1,120 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_KHR_android_surface- ( ANativeWindow- , VkAndroidSurfaceCreateFlagsKHR(..)- , pattern VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR- , pattern VK_KHR_ANDROID_SURFACE_SPEC_VERSION- , pattern VK_KHR_ANDROID_SURFACE_EXTENSION_NAME- , vkCreateAndroidSurfaceKHR- , VkAndroidSurfaceCreateInfoKHR(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.String- ( IsString- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkInstance- )-import Graphics.Vulkan.Extensions.VK_KHR_surface- ( VkSurfaceKHR- )----- | Opaque data-data ANativeWindow--- ** VkAndroidSurfaceCreateFlagsKHR---- No documentation found for TopLevel "VkAndroidSurfaceCreateFlagsKHR"-newtype VkAndroidSurfaceCreateFlagsKHR = VkAndroidSurfaceCreateFlagsKHR VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkAndroidSurfaceCreateFlagsKHR where- - showsPrec p (VkAndroidSurfaceCreateFlagsKHR x) = showParen (p >= 11) (showString "VkAndroidSurfaceCreateFlagsKHR " . showsPrec 11 x)--instance Read VkAndroidSurfaceCreateFlagsKHR where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkAndroidSurfaceCreateFlagsKHR")- v <- step readPrec- pure (VkAndroidSurfaceCreateFlagsKHR v)- )- )+module Graphics.Vulkan.Extensions.VK_KHR_android_surface ( createAndroidSurfaceKHR+ , AndroidSurfaceCreateInfoKHR(..)+ , AndroidSurfaceCreateFlagsKHR(..)+ , KHR_ANDROID_SURFACE_SPEC_VERSION+ , pattern KHR_ANDROID_SURFACE_SPEC_VERSION+ , KHR_ANDROID_SURFACE_EXTENSION_NAME+ , pattern KHR_ANDROID_SURFACE_EXTENSION_NAME+ , SurfaceKHR(..)+ , ANativeWindow+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Bits (Bits)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Extensions.WSITypes (ANativeWindow)+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Instance)+import Graphics.Vulkan.Core10.Handles (Instance(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkCreateAndroidSurfaceKHR))+import Graphics.Vulkan.Core10.Handles (Instance_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.WSITypes (ANativeWindow)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateAndroidSurfaceKHR+ :: FunPtr (Ptr Instance_T -> Ptr AndroidSurfaceCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result) -> Ptr Instance_T -> Ptr AndroidSurfaceCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = VkStructureType 1000008000--- No documentation found for TopLevel "VK_KHR_ANDROID_SURFACE_SPEC_VERSION"-pattern VK_KHR_ANDROID_SURFACE_SPEC_VERSION :: Integral a => a-pattern VK_KHR_ANDROID_SURFACE_SPEC_VERSION = 6--- No documentation found for TopLevel "VK_KHR_ANDROID_SURFACE_EXTENSION_NAME"-pattern VK_KHR_ANDROID_SURFACE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_ANDROID_SURFACE_EXTENSION_NAME = "VK_KHR_android_surface" -- | vkCreateAndroidSurfaceKHR - Create a--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR' object for an--- Android native window+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' object for an Android+-- native window -- -- = Parameters ----- - @instance@ is the instance to associate the surface with.+-- - 'Graphics.Vulkan.Core10.Handles.Instance' is the instance to+-- associate the surface with. ----- - @pCreateInfo@ is a pointer to an instance of the--- @VkAndroidSurfaceCreateInfoKHR@ structure containing parameters--- affecting the creation of the surface object.+-- - @pCreateInfo@ is a pointer to a 'AndroidSurfaceCreateInfoKHR'+-- structure containing parameters affecting the creation of the+-- surface object. -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- surface object when there is no more specific allocator available--- (see [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)).+-- (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>). ----- - @pSurface@ points to a @VkSurfaceKHR@ handle in which the created--- surface object is returned.+-- - @pSurface@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle in which the+-- created surface object is returned. -- -- = Description -- -- During the lifetime of a surface created using a particular--- @ANativeWindow@ handle any attempts to create another surface for the--- same @ANativeWindow@ and any attempts to connect to the same--- @ANativeWindow@ through other platform mechanisms will fail.+-- 'Graphics.Vulkan.Extensions.WSITypes.ANativeWindow' handle any attempts+-- to create another surface for the same+-- 'Graphics.Vulkan.Extensions.WSITypes.ANativeWindow' and any attempts to+-- connect to the same 'Graphics.Vulkan.Extensions.WSITypes.ANativeWindow'+-- through other platform mechanisms will fail. ----- __Note__+-- Note ----- In particular, only one @VkSurfaceKHR@ /can/ exist at a time for a given--- window. Similarly, a native window /cannot/ be used by both a--- @VkSurfaceKHR@ and @EGLSurface@ simultaneously.+-- In particular, only one 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR'+-- /can/ exist at a time for a given window. Similarly, a native window+-- /cannot/ be used by both a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' and @EGLSurface@+-- simultaneously. ----- If successful, @vkCreateAndroidSurfaceKHR@ increments the--- @ANativeWindow@’s reference count, and @vkDestroySurfaceKHR@ will+-- If successful, 'createAndroidSurfaceKHR' increments the+-- 'Graphics.Vulkan.Extensions.WSITypes.ANativeWindow'’s reference count,+-- and 'Graphics.Vulkan.Extensions.VK_KHR_surface.destroySurfaceKHR' will -- decrement it. -- -- On Android, when a swapchain’s @imageExtent@ does not match the@@ -145,81 +126,138 @@ -- -- == Valid Usage (Implicit) ----- - @instance@ /must/ be a valid @VkInstance@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle -- -- - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkAndroidSurfaceCreateInfoKHR@ structure+-- 'AndroidSurfaceCreateInfoKHR' structure -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - @pSurface@ /must/ be a valid pointer to a @VkSurfaceKHR@ handle+-- - @pSurface@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- - @VK_ERROR_NATIVE_WINDOW_IN_USE_KHR@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'VkAndroidSurfaceCreateInfoKHR',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateAndroidSurfaceKHR" vkCreateAndroidSurfaceKHR :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkAndroidSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'AndroidSurfaceCreateInfoKHR',+-- 'Graphics.Vulkan.Core10.Handles.Instance',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR'+createAndroidSurfaceKHR :: Instance -> AndroidSurfaceCreateInfoKHR -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (SurfaceKHR)+createAndroidSurfaceKHR instance' createInfo allocator = evalContT $ do+ let vkCreateAndroidSurfaceKHR' = mkVkCreateAndroidSurfaceKHR (pVkCreateAndroidSurfaceKHR (instanceCmds (instance' :: Instance)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPSurface <- ContT $ bracket (callocBytes @SurfaceKHR 8) free+ r <- lift $ vkCreateAndroidSurfaceKHR' (instanceHandle (instance')) pCreateInfo pAllocator (pPSurface)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSurface <- lift $ peek @SurfaceKHR pPSurface+ pure $ (pSurface)++ -- | VkAndroidSurfaceCreateInfoKHR - Structure specifying parameters of a -- newly created Android surface object ----- == Valid Usage------ - @window@ /must/ point to a valid Android @ANativeWindow@.--- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@--- -- = See Also ----- 'VkAndroidSurfaceCreateFlagsKHR',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkCreateAndroidSurfaceKHR'-data VkAndroidSurfaceCreateInfoKHR = VkAndroidSurfaceCreateInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkAndroidSurfaceCreateFlagsKHR- , -- | @window@ is a pointer to the @ANativeWindow@ to associate the surface- -- with.- vkWindow :: Ptr ANativeWindow+-- 'AndroidSurfaceCreateFlagsKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createAndroidSurfaceKHR'+data AndroidSurfaceCreateInfoKHR = AndroidSurfaceCreateInfoKHR+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+ flags :: AndroidSurfaceCreateFlagsKHR+ , -- | 'Graphics.Vulkan.Extensions.WSITypes.Window' /must/ point to a valid+ -- Android 'Graphics.Vulkan.Extensions.WSITypes.ANativeWindow'.+ window :: Ptr ANativeWindow }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show AndroidSurfaceCreateInfoKHR -instance Storable VkAndroidSurfaceCreateInfoKHR where+instance ToCStruct AndroidSurfaceCreateInfoKHR where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p AndroidSurfaceCreateInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr AndroidSurfaceCreateFlagsKHR)) (flags)+ poke ((p `plusPtr` 24 :: Ptr (Ptr ANativeWindow))) (window)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 24 :: Ptr (Ptr ANativeWindow))) (zero)+ f++instance FromCStruct AndroidSurfaceCreateInfoKHR where+ peekCStruct p = do+ flags <- peek @AndroidSurfaceCreateFlagsKHR ((p `plusPtr` 16 :: Ptr AndroidSurfaceCreateFlagsKHR))+ window <- peek @(Ptr ANativeWindow) ((p `plusPtr` 24 :: Ptr (Ptr ANativeWindow)))+ pure $ AndroidSurfaceCreateInfoKHR+ flags window++instance Storable AndroidSurfaceCreateInfoKHR where sizeOf ~_ = 32 alignment ~_ = 8- peek ptr = VkAndroidSurfaceCreateInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkAndroidSurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkAndroidSurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkAndroidSurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 24) (vkWindow (poked :: VkAndroidSurfaceCreateInfoKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AndroidSurfaceCreateInfoKHR where+ zero = AndroidSurfaceCreateInfoKHR+ zero+ zero+++-- No documentation found for TopLevel "VkAndroidSurfaceCreateFlagsKHR"+newtype AndroidSurfaceCreateFlagsKHR = AndroidSurfaceCreateFlagsKHR Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show AndroidSurfaceCreateFlagsKHR where+ showsPrec p = \case+ AndroidSurfaceCreateFlagsKHR x -> showParen (p >= 11) (showString "AndroidSurfaceCreateFlagsKHR 0x" . showHex x)++instance Read AndroidSurfaceCreateFlagsKHR where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "AndroidSurfaceCreateFlagsKHR")+ v <- step readPrec+ pure (AndroidSurfaceCreateFlagsKHR v)))+++type KHR_ANDROID_SURFACE_SPEC_VERSION = 6++-- No documentation found for TopLevel "VK_KHR_ANDROID_SURFACE_SPEC_VERSION"+pattern KHR_ANDROID_SURFACE_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_ANDROID_SURFACE_SPEC_VERSION = 6+++type KHR_ANDROID_SURFACE_EXTENSION_NAME = "VK_KHR_android_surface"++-- No documentation found for TopLevel "VK_KHR_ANDROID_SURFACE_EXTENSION_NAME"+pattern KHR_ANDROID_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_ANDROID_SURFACE_EXTENSION_NAME = "VK_KHR_android_surface"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_android_surface.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_android_surface (AndroidSurfaceCreateInfoKHR) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data AndroidSurfaceCreateInfoKHR++instance ToCStruct AndroidSurfaceCreateInfoKHR+instance Show AndroidSurfaceCreateInfoKHR++instance FromCStruct AndroidSurfaceCreateInfoKHR+
src/Graphics/Vulkan/Extensions/VK_KHR_bind_memory2.hs view
@@ -1,97 +1,64 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}+module Graphics.Vulkan.Extensions.VK_KHR_bind_memory2 ( pattern STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR+ , pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR+ , pattern IMAGE_CREATE_ALIAS_BIT_KHR+ , bindBufferMemory2KHR+ , bindImageMemory2KHR+ , BindBufferMemoryInfoKHR+ , BindImageMemoryInfoKHR+ , KHR_BIND_MEMORY_2_SPEC_VERSION+ , pattern KHR_BIND_MEMORY_2_SPEC_VERSION+ , KHR_BIND_MEMORY_2_EXTENSION_NAME+ , pattern KHR_BIND_MEMORY_2_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_KHR_bind_memory2- ( pattern VK_KHR_BIND_MEMORY_2_SPEC_VERSION- , pattern VK_KHR_BIND_MEMORY_2_EXTENSION_NAME- , vkBindBufferMemory2KHR- , vkBindImageMemory2KHR- , VkBindBufferMemoryInfoKHR- , pattern VkBindBufferMemoryInfoKHR- , VkBindImageMemoryInfoKHR- , pattern VkBindImageMemoryInfoKHR- , pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR- , pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR- , pattern VK_IMAGE_CREATE_ALIAS_BIT_KHR- ) where+import Data.String (IsString)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (bindBufferMemory2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (bindImageMemory2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindBufferMemoryInfo)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindImageMemoryInfo)+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(IMAGE_CREATE_ALIAS_BIT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR"+pattern STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO -import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- )-import Graphics.Vulkan.NamedType- ( (:::)- ) +-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR"+pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO -import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkImageCreateFlagBits(..)- , VkDevice- , VkDeviceSize- )-import Graphics.Vulkan.Core10.Memory- ( VkDeviceMemory- )-import Graphics.Vulkan.Core10.MemoryManagement- ( VkBuffer- , VkImage- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2- ( VkBindBufferMemoryInfo(..)- , VkBindImageMemoryInfo(..)- , vkBindBufferMemory2- , vkBindImageMemory2- , pattern VK_IMAGE_CREATE_ALIAS_BIT- , pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO- , pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO- ) +-- No documentation found for TopLevel "VK_IMAGE_CREATE_ALIAS_BIT_KHR"+pattern IMAGE_CREATE_ALIAS_BIT_KHR = IMAGE_CREATE_ALIAS_BIT --- No documentation found for TopLevel "VK_KHR_BIND_MEMORY_2_SPEC_VERSION"-pattern VK_KHR_BIND_MEMORY_2_SPEC_VERSION :: Integral a => a-pattern VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_BIND_MEMORY_2_EXTENSION_NAME"-pattern VK_KHR_BIND_MEMORY_2_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2"+ -- No documentation found for TopLevel "vkBindBufferMemory2KHR"-vkBindBufferMemory2KHR :: ("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindBufferMemoryInfo) -> IO VkResult-vkBindBufferMemory2KHR = vkBindBufferMemory2+bindBufferMemory2KHR = bindBufferMemory2++ -- No documentation found for TopLevel "vkBindImageMemory2KHR"-vkBindImageMemory2KHR :: ("device" ::: VkDevice) -> ("bindInfoCount" ::: Word32) -> ("pBindInfos" ::: Ptr VkBindImageMemoryInfo) -> IO VkResult-vkBindImageMemory2KHR = vkBindImageMemory2--- No documentation found for TopLevel "VkBindBufferMemoryInfoKHR"-type VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo+bindImageMemory2KHR = bindImageMemory2 -- No documentation found for TopLevel "VkBindBufferMemoryInfoKHR"-pattern VkBindBufferMemoryInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("buffer" ::: VkBuffer) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> VkBindBufferMemoryInfoKHR-pattern VkBindBufferMemoryInfoKHR vkSType vkPNext vkBuffer vkMemory vkMemoryOffset = VkBindBufferMemoryInfo vkSType vkPNext vkBuffer vkMemory vkMemoryOffset--- No documentation found for TopLevel "VkBindImageMemoryInfoKHR"-type VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo+type BindBufferMemoryInfoKHR = BindBufferMemoryInfo -- No documentation found for TopLevel "VkBindImageMemoryInfoKHR"-pattern VkBindImageMemoryInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("image" ::: VkImage) -> ("memory" ::: VkDeviceMemory) -> ("memoryOffset" ::: VkDeviceSize) -> VkBindImageMemoryInfoKHR-pattern VkBindImageMemoryInfoKHR vkSType vkPNext vkImage vkMemory vkMemoryOffset = VkBindImageMemoryInfo vkSType vkPNext vkImage vkMemory vkMemoryOffset--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR"-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR"-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO--- No documentation found for TopLevel "VK_IMAGE_CREATE_ALIAS_BIT_KHR"-pattern VK_IMAGE_CREATE_ALIAS_BIT_KHR :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_ALIAS_BIT_KHR = VK_IMAGE_CREATE_ALIAS_BIT+type BindImageMemoryInfoKHR = BindImageMemoryInfo+++type KHR_BIND_MEMORY_2_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_BIND_MEMORY_2_SPEC_VERSION"+pattern KHR_BIND_MEMORY_2_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_BIND_MEMORY_2_SPEC_VERSION = 1+++type KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2"++-- No documentation found for TopLevel "VK_KHR_BIND_MEMORY_2_EXTENSION_NAME"+pattern KHR_BIND_MEMORY_2_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_buffer_device_address.hs view
@@ -0,0 +1,133 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR+ , pattern STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR+ , pattern STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR+ , pattern STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR+ , pattern STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR+ , pattern BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR+ , pattern BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR+ , pattern MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR+ , pattern MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR+ , pattern ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR+ , getBufferOpaqueCaptureAddressKHR+ , getBufferDeviceAddressKHR+ , getDeviceMemoryOpaqueCaptureAddressKHR+ , PhysicalDeviceBufferDeviceAddressFeaturesKHR+ , BufferDeviceAddressInfoKHR+ , BufferOpaqueCaptureAddressCreateInfoKHR+ , MemoryOpaqueCaptureAddressAllocateInfoKHR+ , DeviceMemoryOpaqueCaptureAddressInfoKHR+ , KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION+ , pattern KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION+ , KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME+ , pattern KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME+ ) where++import Data.String (IsString)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (getBufferDeviceAddress)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (getBufferOpaqueCaptureAddress)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (getDeviceMemoryOpaqueCaptureAddress)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (BufferDeviceAddressInfo)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (BufferOpaqueCaptureAddressCreateInfo)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (DeviceMemoryOpaqueCaptureAddressInfo)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (MemoryOpaqueCaptureAddressAllocateInfo)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (PhysicalDeviceBufferDeviceAddressFeatures)+import Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits (BufferCreateFlags)+import Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits (BufferCreateFlagBits(BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT))+import Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlags)+import Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits (BufferUsageFlagBits(BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT))+import Graphics.Vulkan.Core10.Enums.Result (Result(ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS))+import Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits (MemoryAllocateFlags)+import Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits (MemoryAllocateFlagBits(MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT))+import Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits (MemoryAllocateFlags)+import Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits (MemoryAllocateFlagBits(MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR"+pattern STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR"+pattern STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR"+pattern STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO+++-- No documentation found for TopLevel "VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR"+pattern BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT+++-- No documentation found for TopLevel "VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"+pattern BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT+++-- No documentation found for TopLevel "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR"+pattern MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT+++-- No documentation found for TopLevel "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"+pattern MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT+++-- No documentation found for TopLevel "VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR"+pattern ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS+++-- No documentation found for TopLevel "vkGetBufferOpaqueCaptureAddressKHR"+getBufferOpaqueCaptureAddressKHR = getBufferOpaqueCaptureAddress+++-- No documentation found for TopLevel "vkGetBufferDeviceAddressKHR"+getBufferDeviceAddressKHR = getBufferDeviceAddress+++-- No documentation found for TopLevel "vkGetDeviceMemoryOpaqueCaptureAddressKHR"+getDeviceMemoryOpaqueCaptureAddressKHR = getDeviceMemoryOpaqueCaptureAddress+++-- No documentation found for TopLevel "VkPhysicalDeviceBufferDeviceAddressFeaturesKHR"+type PhysicalDeviceBufferDeviceAddressFeaturesKHR = PhysicalDeviceBufferDeviceAddressFeatures+++-- No documentation found for TopLevel "VkBufferDeviceAddressInfoKHR"+type BufferDeviceAddressInfoKHR = BufferDeviceAddressInfo+++-- No documentation found for TopLevel "VkBufferOpaqueCaptureAddressCreateInfoKHR"+type BufferOpaqueCaptureAddressCreateInfoKHR = BufferOpaqueCaptureAddressCreateInfo+++-- No documentation found for TopLevel "VkMemoryOpaqueCaptureAddressAllocateInfoKHR"+type MemoryOpaqueCaptureAddressAllocateInfoKHR = MemoryOpaqueCaptureAddressAllocateInfo+++-- No documentation found for TopLevel "VkDeviceMemoryOpaqueCaptureAddressInfoKHR"+type DeviceMemoryOpaqueCaptureAddressInfoKHR = DeviceMemoryOpaqueCaptureAddressInfo+++type KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION"+pattern KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1+++type KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address"++-- No documentation found for TopLevel "VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME"+pattern KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_create_renderpass2.hs view
@@ -0,0 +1,129 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_create_renderpass2 ( pattern STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR+ , pattern STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR+ , pattern STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR+ , pattern STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR+ , pattern STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR+ , pattern STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR+ , pattern STRUCTURE_TYPE_SUBPASS_END_INFO_KHR+ , createRenderPass2KHR+ , cmdBeginRenderPass2KHR+ , cmdNextSubpass2KHR+ , cmdEndRenderPass2KHR+ , AttachmentDescription2KHR+ , AttachmentReference2KHR+ , SubpassDescription2KHR+ , SubpassDependency2KHR+ , RenderPassCreateInfo2KHR+ , SubpassBeginInfoKHR+ , SubpassEndInfoKHR+ , KHR_CREATE_RENDERPASS_2_SPEC_VERSION+ , pattern KHR_CREATE_RENDERPASS_2_SPEC_VERSION+ , KHR_CREATE_RENDERPASS_2_EXTENSION_NAME+ , pattern KHR_CREATE_RENDERPASS_2_EXTENSION_NAME+ ) where++import Data.String (IsString)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (cmdBeginRenderPass2)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (cmdEndRenderPass2)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (cmdNextSubpass2)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (createRenderPass2)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (AttachmentDescription2)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (AttachmentReference2)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (RenderPassCreateInfo2)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassBeginInfo)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassDependency2)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassDescription2)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassEndInfo)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBPASS_BEGIN_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBPASS_END_INFO))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR"+pattern STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR"+pattern STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR"+pattern STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR"+pattern STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR"+pattern STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR"+pattern STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = STRUCTURE_TYPE_SUBPASS_BEGIN_INFO+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR"+pattern STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = STRUCTURE_TYPE_SUBPASS_END_INFO+++-- No documentation found for TopLevel "vkCreateRenderPass2KHR"+createRenderPass2KHR = createRenderPass2+++-- No documentation found for TopLevel "vkCmdBeginRenderPass2KHR"+cmdBeginRenderPass2KHR = cmdBeginRenderPass2+++-- No documentation found for TopLevel "vkCmdNextSubpass2KHR"+cmdNextSubpass2KHR = cmdNextSubpass2+++-- No documentation found for TopLevel "vkCmdEndRenderPass2KHR"+cmdEndRenderPass2KHR = cmdEndRenderPass2+++-- No documentation found for TopLevel "VkAttachmentDescription2KHR"+type AttachmentDescription2KHR = AttachmentDescription2+++-- No documentation found for TopLevel "VkAttachmentReference2KHR"+type AttachmentReference2KHR = AttachmentReference2+++-- No documentation found for TopLevel "VkSubpassDescription2KHR"+type SubpassDescription2KHR = SubpassDescription2+++-- No documentation found for TopLevel "VkSubpassDependency2KHR"+type SubpassDependency2KHR = SubpassDependency2+++-- No documentation found for TopLevel "VkRenderPassCreateInfo2KHR"+type RenderPassCreateInfo2KHR = RenderPassCreateInfo2+++-- No documentation found for TopLevel "VkSubpassBeginInfoKHR"+type SubpassBeginInfoKHR = SubpassBeginInfo+++-- No documentation found for TopLevel "VkSubpassEndInfoKHR"+type SubpassEndInfoKHR = SubpassEndInfo+++type KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION"+pattern KHR_CREATE_RENDERPASS_2_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1+++type KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2"++-- No documentation found for TopLevel "VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME"+pattern KHR_CREATE_RENDERPASS_2_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2"+
src/Graphics/Vulkan/Extensions/VK_KHR_dedicated_allocation.hs view
@@ -1,71 +1,45 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}--module Graphics.Vulkan.Extensions.VK_KHR_dedicated_allocation- ( pattern VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION- , pattern VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME- , VkMemoryDedicatedRequirementsKHR- , pattern VkMemoryDedicatedRequirementsKHR- , VkMemoryDedicatedAllocateInfoKHR- , pattern VkMemoryDedicatedAllocateInfoKHR- , pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR- , pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR- ) where+module Graphics.Vulkan.Extensions.VK_KHR_dedicated_allocation ( pattern STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR+ , pattern STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR+ , MemoryDedicatedRequirementsKHR+ , MemoryDedicatedAllocateInfoKHR+ , KHR_DEDICATED_ALLOCATION_SPEC_VERSION+ , pattern KHR_DEDICATED_ALLOCATION_SPEC_VERSION+ , KHR_DEDICATED_ALLOCATION_EXTENSION_NAME+ , pattern KHR_DEDICATED_ALLOCATION_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )-import Foreign.Ptr- ( Ptr- )-import Graphics.Vulkan.NamedType- ( (:::)- )+import Data.String (IsString)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation (MemoryDedicatedAllocateInfo)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation (MemoryDedicatedRequirements)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR"+pattern STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS -import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.MemoryManagement- ( VkBuffer- , VkImage- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation- ( VkMemoryDedicatedAllocateInfo(..)- , VkMemoryDedicatedRequirements(..)- , pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO- , pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS- )+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR"+pattern STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO --- No documentation found for TopLevel "VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION"-pattern VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION :: Integral a => a-pattern VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3--- No documentation found for TopLevel "VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME"-pattern VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" -- No documentation found for TopLevel "VkMemoryDedicatedRequirementsKHR"-type VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements+type MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements --- No documentation found for TopLevel "VkMemoryDedicatedRequirementsKHR"-pattern VkMemoryDedicatedRequirementsKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("prefersDedicatedAllocation" ::: VkBool32) -> ("requiresDedicatedAllocation" ::: VkBool32) -> VkMemoryDedicatedRequirementsKHR-pattern VkMemoryDedicatedRequirementsKHR vkSType vkPNext vkPrefersDedicatedAllocation vkRequiresDedicatedAllocation = VkMemoryDedicatedRequirements vkSType vkPNext vkPrefersDedicatedAllocation vkRequiresDedicatedAllocation -- No documentation found for TopLevel "VkMemoryDedicatedAllocateInfoKHR"-type VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo+type MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo --- No documentation found for TopLevel "VkMemoryDedicatedAllocateInfoKHR"-pattern VkMemoryDedicatedAllocateInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("image" ::: VkImage) -> ("buffer" ::: VkBuffer) -> VkMemoryDedicatedAllocateInfoKHR-pattern VkMemoryDedicatedAllocateInfoKHR vkSType vkPNext vkImage vkBuffer = VkMemoryDedicatedAllocateInfo vkSType vkPNext vkImage vkBuffer--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR"-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO+type KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3++-- No documentation found for TopLevel "VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION"+pattern KHR_DEDICATED_ALLOCATION_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3+++type KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation"++-- No documentation found for TopLevel "VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME"+pattern KHR_DEDICATED_ALLOCATION_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_depth_stencil_resolve.hs view
@@ -0,0 +1,92 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_depth_stencil_resolve ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR+ , pattern STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR+ , pattern RESOLVE_MODE_NONE_KHR+ , pattern RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR+ , pattern RESOLVE_MODE_AVERAGE_BIT_KHR+ , pattern RESOLVE_MODE_MIN_BIT_KHR+ , pattern RESOLVE_MODE_MAX_BIT_KHR+ , ResolveModeFlagsKHR+ , ResolveModeFlagBitsKHR+ , PhysicalDeviceDepthStencilResolvePropertiesKHR+ , SubpassDescriptionDepthStencilResolveKHR+ , KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION+ , pattern KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION+ , KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME+ , pattern KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME+ ) where++import Data.String (IsString)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve (PhysicalDeviceDepthStencilResolveProperties)+import Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlagBits)+import Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlags)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve (SubpassDescriptionDepthStencilResolve)+import Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlags)+import Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlagBits(RESOLVE_MODE_AVERAGE_BIT))+import Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlags)+import Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlagBits(RESOLVE_MODE_MAX_BIT))+import Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlags)+import Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlagBits(RESOLVE_MODE_MIN_BIT))+import Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlags)+import Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlagBits(RESOLVE_MODE_NONE))+import Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlags)+import Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlagBits(RESOLVE_MODE_SAMPLE_ZERO_BIT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR"+pattern STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE+++-- No documentation found for TopLevel "VK_RESOLVE_MODE_NONE_KHR"+pattern RESOLVE_MODE_NONE_KHR = RESOLVE_MODE_NONE+++-- No documentation found for TopLevel "VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR"+pattern RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = RESOLVE_MODE_SAMPLE_ZERO_BIT+++-- No documentation found for TopLevel "VK_RESOLVE_MODE_AVERAGE_BIT_KHR"+pattern RESOLVE_MODE_AVERAGE_BIT_KHR = RESOLVE_MODE_AVERAGE_BIT+++-- No documentation found for TopLevel "VK_RESOLVE_MODE_MIN_BIT_KHR"+pattern RESOLVE_MODE_MIN_BIT_KHR = RESOLVE_MODE_MIN_BIT+++-- No documentation found for TopLevel "VK_RESOLVE_MODE_MAX_BIT_KHR"+pattern RESOLVE_MODE_MAX_BIT_KHR = RESOLVE_MODE_MAX_BIT+++-- No documentation found for TopLevel "VkResolveModeFlagsKHR"+type ResolveModeFlagsKHR = ResolveModeFlags+++-- No documentation found for TopLevel "VkResolveModeFlagBitsKHR"+type ResolveModeFlagBitsKHR = ResolveModeFlagBits+++-- No documentation found for TopLevel "VkPhysicalDeviceDepthStencilResolvePropertiesKHR"+type PhysicalDeviceDepthStencilResolvePropertiesKHR = PhysicalDeviceDepthStencilResolveProperties+++-- No documentation found for TopLevel "VkSubpassDescriptionDepthStencilResolveKHR"+type SubpassDescriptionDepthStencilResolveKHR = SubpassDescriptionDepthStencilResolve+++type KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION"+pattern KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1+++type KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve"++-- No documentation found for TopLevel "VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME"+pattern KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve"+
src/Graphics/Vulkan/Extensions/VK_KHR_descriptor_update_template.hs view
@@ -1,131 +1,97 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}+module Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template ( pattern STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR+ , pattern OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR+ , pattern DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR+ , pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT+ , createDescriptorUpdateTemplateKHR+ , destroyDescriptorUpdateTemplateKHR+ , updateDescriptorSetWithTemplateKHR+ , DescriptorUpdateTemplateCreateFlagsKHR+ , DescriptorUpdateTemplateKHR+ , DescriptorUpdateTemplateTypeKHR+ , DescriptorUpdateTemplateEntryKHR+ , DescriptorUpdateTemplateCreateInfoKHR+ , KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION+ , pattern KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION+ , KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME+ , pattern KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME+ , cmdPushDescriptorSetWithTemplateKHR+ , DebugReportObjectTypeEXT(..)+ ) where -module Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template- ( pattern VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION- , pattern VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME- , vkCreateDescriptorUpdateTemplateKHR- , vkDestroyDescriptorUpdateTemplateKHR- , vkUpdateDescriptorSetWithTemplateKHR- , VkDescriptorUpdateTemplateTypeKHR- , VkDescriptorUpdateTemplateCreateFlagsKHR- , VkDescriptorUpdateTemplateKHR- , VkDescriptorUpdateTemplateEntryKHR- , pattern VkDescriptorUpdateTemplateEntryKHR- , VkDescriptorUpdateTemplateCreateInfoKHR- , pattern VkDescriptorUpdateTemplateCreateInfoKHR- , pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR- , pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR- , pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT- ) where+import Data.String (IsString)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template (createDescriptorUpdateTemplate)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template (destroyDescriptorUpdateTemplate)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template (updateDescriptorSetWithTemplate)+import Graphics.Vulkan.Core11.Handles (DescriptorUpdateTemplate)+import Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateCreateFlags (DescriptorUpdateTemplateCreateFlags)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template (DescriptorUpdateTemplateCreateInfo)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template (DescriptorUpdateTemplateEntry)+import Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateType (DescriptorUpdateTemplateType)+import Graphics.Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT))+import Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateType (DescriptorUpdateTemplateType(DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET))+import Graphics.Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO))+import Graphics.Vulkan.Extensions.VK_KHR_push_descriptor (cmdPushDescriptorSetWithTemplateKHR)+import Graphics.Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(..))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO -import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.C.Types- ( CSize(..)- )-import Foreign.Ptr- ( Ptr- )-import Graphics.Vulkan.NamedType- ( (:::)- ) +-- No documentation found for TopLevel "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR"+pattern OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE -import Graphics.Vulkan.Core10.Core- ( VkObjectType(..)- , VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DescriptorSet- ( VkDescriptorType(..)- , VkDescriptorSet- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- )-import Graphics.Vulkan.Core10.Pass- ( VkPipelineBindPoint(..)- )-import Graphics.Vulkan.Core10.Pipeline- ( VkPipelineLayout- )-import Graphics.Vulkan.Core10.PipelineLayout- ( VkDescriptorSetLayout- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template- ( VkDescriptorUpdateTemplateCreateFlags(..)- , VkDescriptorUpdateTemplateCreateInfo(..)- , VkDescriptorUpdateTemplateEntry(..)- , VkDescriptorUpdateTemplateType(..)- , VkDescriptorUpdateTemplate- , vkCreateDescriptorUpdateTemplate- , vkDestroyDescriptorUpdateTemplate- , vkUpdateDescriptorSetWithTemplate- , pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET- , pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE- , pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO- )-import Graphics.Vulkan.Extensions.VK_EXT_debug_report- ( VkDebugReportObjectTypeEXT(..)- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT- ) +-- No documentation found for TopLevel "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR"+pattern DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET --- No documentation found for TopLevel "VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION"-pattern VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION :: Integral a => a-pattern VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME"-pattern VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template"++-- No documentation found for TopLevel "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT++ -- No documentation found for TopLevel "vkCreateDescriptorUpdateTemplateKHR"-vkCreateDescriptorUpdateTemplateKHR :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorUpdateTemplateCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pDescriptorUpdateTemplate" ::: Ptr VkDescriptorUpdateTemplate) -> IO VkResult-vkCreateDescriptorUpdateTemplateKHR = vkCreateDescriptorUpdateTemplate+createDescriptorUpdateTemplateKHR = createDescriptorUpdateTemplate++ -- No documentation found for TopLevel "vkDestroyDescriptorUpdateTemplateKHR"-vkDestroyDescriptorUpdateTemplateKHR :: ("device" ::: VkDevice) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()-vkDestroyDescriptorUpdateTemplateKHR = vkDestroyDescriptorUpdateTemplate+destroyDescriptorUpdateTemplateKHR = destroyDescriptorUpdateTemplate++ -- No documentation found for TopLevel "vkUpdateDescriptorSetWithTemplateKHR"-vkUpdateDescriptorSetWithTemplateKHR :: ("device" ::: VkDevice) -> ("descriptorSet" ::: VkDescriptorSet) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("pData" ::: Ptr ()) -> IO ()-vkUpdateDescriptorSetWithTemplateKHR = vkUpdateDescriptorSetWithTemplate--- No documentation found for TopLevel "VkDescriptorUpdateTemplateTypeKHR"-type VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType+updateDescriptorSetWithTemplateKHR = updateDescriptorSetWithTemplate++ -- No documentation found for TopLevel "VkDescriptorUpdateTemplateCreateFlagsKHR"-type VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags+type DescriptorUpdateTemplateCreateFlagsKHR = DescriptorUpdateTemplateCreateFlags++ -- No documentation found for TopLevel "VkDescriptorUpdateTemplateKHR"-type VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate--- No documentation found for TopLevel "VkDescriptorUpdateTemplateEntryKHR"-type VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry+type DescriptorUpdateTemplateKHR = DescriptorUpdateTemplate +-- No documentation found for TopLevel "VkDescriptorUpdateTemplateTypeKHR"+type DescriptorUpdateTemplateTypeKHR = DescriptorUpdateTemplateType++ -- No documentation found for TopLevel "VkDescriptorUpdateTemplateEntryKHR"-pattern VkDescriptorUpdateTemplateEntryKHR :: ("dstBinding" ::: Word32) -> ("dstArrayElement" ::: Word32) -> ("descriptorCount" ::: Word32) -> ("descriptorType" ::: VkDescriptorType) -> ("offset" ::: CSize) -> ("stride" ::: CSize) -> VkDescriptorUpdateTemplateEntryKHR-pattern VkDescriptorUpdateTemplateEntryKHR vkDstBinding vkDstArrayElement vkDescriptorCount vkDescriptorType vkOffset vkStride = VkDescriptorUpdateTemplateEntry vkDstBinding vkDstArrayElement vkDescriptorCount vkDescriptorType vkOffset vkStride--- No documentation found for TopLevel "VkDescriptorUpdateTemplateCreateInfoKHR"-type VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo+type DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry -- No documentation found for TopLevel "VkDescriptorUpdateTemplateCreateInfoKHR"-pattern VkDescriptorUpdateTemplateCreateInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("flags" ::: VkDescriptorUpdateTemplateCreateFlags) -> ("descriptorUpdateEntryCount" ::: Word32) -> ("pDescriptorUpdateEntries" ::: Ptr VkDescriptorUpdateTemplateEntry) -> ("templateType" ::: VkDescriptorUpdateTemplateType) -> ("descriptorSetLayout" ::: VkDescriptorSetLayout) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("pipelineLayout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> VkDescriptorUpdateTemplateCreateInfoKHR-pattern VkDescriptorUpdateTemplateCreateInfoKHR vkSType vkPNext vkFlags vkDescriptorUpdateEntryCount vkPDescriptorUpdateEntries vkTemplateType vkDescriptorSetLayout vkPipelineBindPoint vkPipelineLayout vkSet = VkDescriptorUpdateTemplateCreateInfo vkSType vkPNext vkFlags vkDescriptorUpdateEntryCount vkPDescriptorUpdateEntries vkTemplateType vkDescriptorSetLayout vkPipelineBindPoint vkPipelineLayout vkSet--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO--- No documentation found for TopLevel "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR"-pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR :: VkObjectType-pattern VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE--- No documentation found for TopLevel "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR"-pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR :: VkDescriptorUpdateTemplateType-pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET--- No documentation found for TopLevel "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT+type DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo+++type KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION"+pattern KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1+++type KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template"++-- No documentation found for TopLevel "VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME"+pattern KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template"+
src/Graphics/Vulkan/Extensions/VK_KHR_device_group.hs view
@@ -1,236 +1,241 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}+module Graphics.Vulkan.Extensions.VK_KHR_device_group ( pattern STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR+ , pattern STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR+ , pattern STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR+ , pattern STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR+ , pattern STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR+ , pattern PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR+ , pattern PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR+ , pattern PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR+ , pattern PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR+ , pattern MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR+ , pattern PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR+ , pattern PIPELINE_CREATE_DISPATCH_BASE_KHR+ , pattern DEPENDENCY_DEVICE_GROUP_BIT_KHR+ , pattern STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR+ , pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR+ , pattern IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR+ , getDeviceGroupPeerMemoryFeaturesKHR+ , cmdSetDeviceMaskKHR+ , cmdDispatchBaseKHR+ , PeerMemoryFeatureFlagsKHR+ , MemoryAllocateFlagsKHR+ , PeerMemoryFeatureFlagBitsKHR+ , MemoryAllocateFlagBitsKHR+ , MemoryAllocateFlagsInfoKHR+ , BindBufferMemoryDeviceGroupInfoKHR+ , BindImageMemoryDeviceGroupInfoKHR+ , DeviceGroupRenderPassBeginInfoKHR+ , DeviceGroupCommandBufferBeginInfoKHR+ , DeviceGroupSubmitInfoKHR+ , DeviceGroupBindSparseInfoKHR+ , KHR_DEVICE_GROUP_SPEC_VERSION+ , pattern KHR_DEVICE_GROUP_SPEC_VERSION+ , KHR_DEVICE_GROUP_EXTENSION_NAME+ , pattern KHR_DEVICE_GROUP_EXTENSION_NAME+ , SurfaceKHR(..)+ , SwapchainKHR(..)+ , DeviceGroupPresentCapabilitiesKHR(..)+ , ImageSwapchainCreateInfoKHR(..)+ , BindImageMemorySwapchainInfoKHR(..)+ , AcquireNextImageInfoKHR(..)+ , DeviceGroupPresentInfoKHR(..)+ , DeviceGroupSwapchainCreateInfoKHR(..)+ , getDeviceGroupPresentCapabilitiesKHR+ , getDeviceGroupSurfacePresentModesKHR+ , acquireNextImage2KHR+ , getPhysicalDevicePresentRectanglesKHR+ , DeviceGroupPresentModeFlagBitsKHR(..)+ , DeviceGroupPresentModeFlagsKHR+ , SwapchainCreateFlagBitsKHR(..)+ , SwapchainCreateFlagsKHR+ ) where -module Graphics.Vulkan.Extensions.VK_KHR_device_group- ( pattern VK_KHR_DEVICE_GROUP_SPEC_VERSION- , pattern VK_KHR_DEVICE_GROUP_EXTENSION_NAME- , vkGetDeviceGroupPeerMemoryFeaturesKHR- , vkCmdSetDeviceMaskKHR- , vkCmdDispatchBaseKHR- , VkPeerMemoryFeatureFlagBitsKHR- , VkMemoryAllocateFlagBitsKHR- , VkPeerMemoryFeatureFlagsKHR- , VkMemoryAllocateFlagsKHR- , VkMemoryAllocateFlagsInfoKHR- , pattern VkMemoryAllocateFlagsInfoKHR- , VkBindBufferMemoryDeviceGroupInfoKHR- , pattern VkBindBufferMemoryDeviceGroupInfoKHR- , VkBindImageMemoryDeviceGroupInfoKHR- , pattern VkBindImageMemoryDeviceGroupInfoKHR- , VkDeviceGroupRenderPassBeginInfoKHR- , pattern VkDeviceGroupRenderPassBeginInfoKHR- , VkDeviceGroupCommandBufferBeginInfoKHR- , pattern VkDeviceGroupCommandBufferBeginInfoKHR- , VkDeviceGroupSubmitInfoKHR- , pattern VkDeviceGroupSubmitInfoKHR- , VkDeviceGroupBindSparseInfoKHR- , pattern VkDeviceGroupBindSparseInfoKHR- , pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR- , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR- , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR- , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR- , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR- , pattern VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR- , pattern VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR- , pattern VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR- , pattern VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR- , pattern VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR- , pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR- , pattern VK_PIPELINE_CREATE_DISPATCH_BASE_KHR- , pattern VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR- , pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR- , pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR- , pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR- ) where+import Data.String (IsString)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group (cmdDispatchBase)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group (cmdSetDeviceMask)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group (getDeviceGroupPeerMemoryFeatures)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2 (BindBufferMemoryDeviceGroupInfo)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2 (BindImageMemoryDeviceGroupInfo)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupBindSparseInfo)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupCommandBufferBeginInfo)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupRenderPassBeginInfo)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupSubmitInfo)+import Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits (MemoryAllocateFlagBits)+import Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits (MemoryAllocateFlags)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group (MemoryAllocateFlagsInfo)+import Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlagBits)+import Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlags)+import Graphics.Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlags)+import Graphics.Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlagBits(DEPENDENCY_DEVICE_GROUP_BIT))+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT))+import Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits (MemoryAllocateFlags)+import Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits (MemoryAllocateFlagBits(MEMORY_ALLOCATE_DEVICE_MASK_BIT))+import Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlags)+import Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlagBits(PEER_MEMORY_FEATURE_COPY_DST_BIT))+import Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlags)+import Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlagBits(PEER_MEMORY_FEATURE_COPY_SRC_BIT))+import Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlags)+import Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlagBits(PEER_MEMORY_FEATURE_GENERIC_DST_BIT))+import Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlags)+import Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits (PeerMemoryFeatureFlagBits(PEER_MEMORY_FEATURE_GENERIC_SRC_BIT))+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group (pattern PIPELINE_CREATE_DISPATCH_BASE)+import Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)+import Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO))+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (acquireNextImage2KHR)+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (getDeviceGroupPresentCapabilitiesKHR)+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (getDeviceGroupSurfacePresentModesKHR)+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (getPhysicalDevicePresentRectanglesKHR)+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (AcquireNextImageInfoKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (BindImageMemorySwapchainInfoKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentCapabilitiesKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentInfoKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentModeFlagBitsKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentModeFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupSwapchainCreateInfoKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (ImageSwapchainCreateInfoKHR(..))+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagBitsKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagsKHR)+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR(..))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR"+pattern STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO -import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- )-import Graphics.Vulkan.NamedType- ( (:::)- ) +-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR"+pattern STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO -import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkImageCreateFlagBits(..)- , VkDevice- )-import Graphics.Vulkan.Core10.Pass- ( VkDependencyFlagBits(..)- )-import Graphics.Vulkan.Core10.Pipeline- ( VkPipelineCreateFlagBits(..)- , VkRect2D(..)- )-import Graphics.Vulkan.Core10.Queue- ( VkCommandBuffer- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group- ( VkDeviceGroupBindSparseInfo(..)- , VkDeviceGroupCommandBufferBeginInfo(..)- , VkDeviceGroupRenderPassBeginInfo(..)- , VkDeviceGroupSubmitInfo(..)- , VkMemoryAllocateFlagBits(..)- , VkMemoryAllocateFlagsInfo(..)- , VkPeerMemoryFeatureFlagBits(..)- , VkMemoryAllocateFlags- , VkPeerMemoryFeatureFlags- , vkCmdDispatchBase- , vkCmdSetDeviceMask- , vkGetDeviceGroupPeerMemoryFeatures- , pattern VK_DEPENDENCY_DEVICE_GROUP_BIT- , pattern VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT- , pattern VK_PEER_MEMORY_FEATURE_COPY_DST_BIT- , pattern VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT- , pattern VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT- , pattern VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT- , pattern VK_PIPELINE_CREATE_DISPATCH_BASE- , pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT- , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO- , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO- , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO- , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO- , pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2- ( VkBindBufferMemoryDeviceGroupInfo(..)- , VkBindImageMemoryDeviceGroupInfo(..)- , pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT- , pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO- , pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO- ) +-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR"+pattern STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO --- No documentation found for TopLevel "VK_KHR_DEVICE_GROUP_SPEC_VERSION"-pattern VK_KHR_DEVICE_GROUP_SPEC_VERSION :: Integral a => a-pattern VK_KHR_DEVICE_GROUP_SPEC_VERSION = 3--- No documentation found for TopLevel "VK_KHR_DEVICE_GROUP_EXTENSION_NAME"-pattern VK_KHR_DEVICE_GROUP_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group"++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR"+pattern STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR"+pattern STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO+++-- No documentation found for TopLevel "VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR"+pattern PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = PEER_MEMORY_FEATURE_COPY_SRC_BIT+++-- No documentation found for TopLevel "VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR"+pattern PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = PEER_MEMORY_FEATURE_COPY_DST_BIT+++-- No documentation found for TopLevel "VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR"+pattern PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = PEER_MEMORY_FEATURE_GENERIC_SRC_BIT+++-- No documentation found for TopLevel "VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR"+pattern PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = PEER_MEMORY_FEATURE_GENERIC_DST_BIT+++-- No documentation found for TopLevel "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR"+pattern MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = MEMORY_ALLOCATE_DEVICE_MASK_BIT+++-- No documentation found for TopLevel "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR"+pattern PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT+++-- No documentation found for TopLevel "VK_PIPELINE_CREATE_DISPATCH_BASE_KHR"+pattern PIPELINE_CREATE_DISPATCH_BASE_KHR = PIPELINE_CREATE_DISPATCH_BASE+++-- No documentation found for TopLevel "VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR"+pattern DEPENDENCY_DEVICE_GROUP_BIT_KHR = DEPENDENCY_DEVICE_GROUP_BIT+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR"+pattern STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR"+pattern STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO+++-- No documentation found for TopLevel "VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR"+pattern IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT++ -- No documentation found for TopLevel "vkGetDeviceGroupPeerMemoryFeaturesKHR"-vkGetDeviceGroupPeerMemoryFeaturesKHR :: ("device" ::: VkDevice) -> ("heapIndex" ::: Word32) -> ("localDeviceIndex" ::: Word32) -> ("remoteDeviceIndex" ::: Word32) -> ("pPeerMemoryFeatures" ::: Ptr VkPeerMemoryFeatureFlags) -> IO ()-vkGetDeviceGroupPeerMemoryFeaturesKHR = vkGetDeviceGroupPeerMemoryFeatures+getDeviceGroupPeerMemoryFeaturesKHR = getDeviceGroupPeerMemoryFeatures++ -- No documentation found for TopLevel "vkCmdSetDeviceMaskKHR"-vkCmdSetDeviceMaskKHR :: ("commandBuffer" ::: VkCommandBuffer) -> ("deviceMask" ::: Word32) -> IO ()-vkCmdSetDeviceMaskKHR = vkCmdSetDeviceMask+cmdSetDeviceMaskKHR = cmdSetDeviceMask++ -- No documentation found for TopLevel "vkCmdDispatchBaseKHR"-vkCmdDispatchBaseKHR :: ("commandBuffer" ::: VkCommandBuffer) -> ("baseGroupX" ::: Word32) -> ("baseGroupY" ::: Word32) -> ("baseGroupZ" ::: Word32) -> ("groupCountX" ::: Word32) -> ("groupCountY" ::: Word32) -> ("groupCountZ" ::: Word32) -> IO ()-vkCmdDispatchBaseKHR = vkCmdDispatchBase--- No documentation found for TopLevel "VkPeerMemoryFeatureFlagBitsKHR"-type VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits--- No documentation found for TopLevel "VkMemoryAllocateFlagBitsKHR"-type VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits+cmdDispatchBaseKHR = cmdDispatchBase++ -- No documentation found for TopLevel "VkPeerMemoryFeatureFlagsKHR"-type VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags+type PeerMemoryFeatureFlagsKHR = PeerMemoryFeatureFlags++ -- No documentation found for TopLevel "VkMemoryAllocateFlagsKHR"-type VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags--- No documentation found for TopLevel "VkMemoryAllocateFlagsInfoKHR"-type VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo+type MemoryAllocateFlagsKHR = MemoryAllocateFlags +-- No documentation found for TopLevel "VkPeerMemoryFeatureFlagBitsKHR"+type PeerMemoryFeatureFlagBitsKHR = PeerMemoryFeatureFlagBits+++-- No documentation found for TopLevel "VkMemoryAllocateFlagBitsKHR"+type MemoryAllocateFlagBitsKHR = MemoryAllocateFlagBits++ -- No documentation found for TopLevel "VkMemoryAllocateFlagsInfoKHR"-pattern VkMemoryAllocateFlagsInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("flags" ::: VkMemoryAllocateFlags) -> ("deviceMask" ::: Word32) -> VkMemoryAllocateFlagsInfoKHR-pattern VkMemoryAllocateFlagsInfoKHR vkSType vkPNext vkFlags vkDeviceMask = VkMemoryAllocateFlagsInfo vkSType vkPNext vkFlags vkDeviceMask--- No documentation found for TopLevel "VkBindBufferMemoryDeviceGroupInfoKHR"-type VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo+type MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo -- No documentation found for TopLevel "VkBindBufferMemoryDeviceGroupInfoKHR"-pattern VkBindBufferMemoryDeviceGroupInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("deviceIndexCount" ::: Word32) -> ("pDeviceIndices" ::: Ptr Word32) -> VkBindBufferMemoryDeviceGroupInfoKHR-pattern VkBindBufferMemoryDeviceGroupInfoKHR vkSType vkPNext vkDeviceIndexCount vkPDeviceIndices = VkBindBufferMemoryDeviceGroupInfo vkSType vkPNext vkDeviceIndexCount vkPDeviceIndices--- No documentation found for TopLevel "VkBindImageMemoryDeviceGroupInfoKHR"-type VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo+type BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo -- No documentation found for TopLevel "VkBindImageMemoryDeviceGroupInfoKHR"-pattern VkBindImageMemoryDeviceGroupInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("deviceIndexCount" ::: Word32) -> ("pDeviceIndices" ::: Ptr Word32) -> ("splitInstanceBindRegionCount" ::: Word32) -> ("pSplitInstanceBindRegions" ::: Ptr VkRect2D) -> VkBindImageMemoryDeviceGroupInfoKHR-pattern VkBindImageMemoryDeviceGroupInfoKHR vkSType vkPNext vkDeviceIndexCount vkPDeviceIndices vkSplitInstanceBindRegionCount vkPSplitInstanceBindRegions = VkBindImageMemoryDeviceGroupInfo vkSType vkPNext vkDeviceIndexCount vkPDeviceIndices vkSplitInstanceBindRegionCount vkPSplitInstanceBindRegions--- No documentation found for TopLevel "VkDeviceGroupRenderPassBeginInfoKHR"-type VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo+type BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo -- No documentation found for TopLevel "VkDeviceGroupRenderPassBeginInfoKHR"-pattern VkDeviceGroupRenderPassBeginInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("deviceMask" ::: Word32) -> ("deviceRenderAreaCount" ::: Word32) -> ("pDeviceRenderAreas" ::: Ptr VkRect2D) -> VkDeviceGroupRenderPassBeginInfoKHR-pattern VkDeviceGroupRenderPassBeginInfoKHR vkSType vkPNext vkDeviceMask vkDeviceRenderAreaCount vkPDeviceRenderAreas = VkDeviceGroupRenderPassBeginInfo vkSType vkPNext vkDeviceMask vkDeviceRenderAreaCount vkPDeviceRenderAreas--- No documentation found for TopLevel "VkDeviceGroupCommandBufferBeginInfoKHR"-type VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo+type DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo -- No documentation found for TopLevel "VkDeviceGroupCommandBufferBeginInfoKHR"-pattern VkDeviceGroupCommandBufferBeginInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("deviceMask" ::: Word32) -> VkDeviceGroupCommandBufferBeginInfoKHR-pattern VkDeviceGroupCommandBufferBeginInfoKHR vkSType vkPNext vkDeviceMask = VkDeviceGroupCommandBufferBeginInfo vkSType vkPNext vkDeviceMask--- No documentation found for TopLevel "VkDeviceGroupSubmitInfoKHR"-type VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo+type DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo -- No documentation found for TopLevel "VkDeviceGroupSubmitInfoKHR"-pattern VkDeviceGroupSubmitInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("waitSemaphoreCount" ::: Word32) -> ("pWaitSemaphoreDeviceIndices" ::: Ptr Word32) -> ("commandBufferCount" ::: Word32) -> ("pCommandBufferDeviceMasks" ::: Ptr Word32) -> ("signalSemaphoreCount" ::: Word32) -> ("pSignalSemaphoreDeviceIndices" ::: Ptr Word32) -> VkDeviceGroupSubmitInfoKHR-pattern VkDeviceGroupSubmitInfoKHR vkSType vkPNext vkWaitSemaphoreCount vkPWaitSemaphoreDeviceIndices vkCommandBufferCount vkPCommandBufferDeviceMasks vkSignalSemaphoreCount vkPSignalSemaphoreDeviceIndices = VkDeviceGroupSubmitInfo vkSType vkPNext vkWaitSemaphoreCount vkPWaitSemaphoreDeviceIndices vkCommandBufferCount vkPCommandBufferDeviceMasks vkSignalSemaphoreCount vkPSignalSemaphoreDeviceIndices--- No documentation found for TopLevel "VkDeviceGroupBindSparseInfoKHR"-type VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo+type DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo -- No documentation found for TopLevel "VkDeviceGroupBindSparseInfoKHR"-pattern VkDeviceGroupBindSparseInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("resourceDeviceIndex" ::: Word32) -> ("memoryDeviceIndex" ::: Word32) -> VkDeviceGroupBindSparseInfoKHR-pattern VkDeviceGroupBindSparseInfoKHR vkSType vkPNext vkResourceDeviceIndex vkMemoryDeviceIndex = VkDeviceGroupBindSparseInfo vkSType vkPNext vkResourceDeviceIndex vkMemoryDeviceIndex--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR"-pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR"-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR"-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR"-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO--- No documentation found for TopLevel "VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR"-pattern VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR :: VkPeerMemoryFeatureFlagBits-pattern VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT--- No documentation found for TopLevel "VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR"-pattern VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR :: VkPeerMemoryFeatureFlagBits-pattern VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT--- No documentation found for TopLevel "VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR"-pattern VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR :: VkPeerMemoryFeatureFlagBits-pattern VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT--- No documentation found for TopLevel "VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR"-pattern VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR :: VkPeerMemoryFeatureFlagBits-pattern VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT--- No documentation found for TopLevel "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR"-pattern VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR :: VkMemoryAllocateFlagBits-pattern VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT--- No documentation found for TopLevel "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR"-pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR :: VkPipelineCreateFlagBits-pattern VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT--- No documentation found for TopLevel "VK_PIPELINE_CREATE_DISPATCH_BASE_KHR"-pattern VK_PIPELINE_CREATE_DISPATCH_BASE_KHR :: VkPipelineCreateFlagBits-pattern VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = VK_PIPELINE_CREATE_DISPATCH_BASE--- No documentation found for TopLevel "VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR"-pattern VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR :: VkDependencyFlagBits-pattern VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = VK_DEPENDENCY_DEVICE_GROUP_BIT--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR"-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR"-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO--- No documentation found for TopLevel "VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR"-pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT+type DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo+++type KHR_DEVICE_GROUP_SPEC_VERSION = 4++-- No documentation found for TopLevel "VK_KHR_DEVICE_GROUP_SPEC_VERSION"+pattern KHR_DEVICE_GROUP_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_DEVICE_GROUP_SPEC_VERSION = 4+++type KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group"++-- No documentation found for TopLevel "VK_KHR_DEVICE_GROUP_EXTENSION_NAME"+pattern KHR_DEVICE_GROUP_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group"+
src/Graphics/Vulkan/Extensions/VK_KHR_device_group_creation.hs view
@@ -1,100 +1,64 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}+module Graphics.Vulkan.Extensions.VK_KHR_device_group_creation ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR+ , pattern STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR+ , pattern MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR+ , enumeratePhysicalDeviceGroupsKHR+ , pattern MAX_DEVICE_GROUP_SIZE_KHR+ , PhysicalDeviceGroupPropertiesKHR+ , DeviceGroupDeviceCreateInfoKHR+ , KHR_DEVICE_GROUP_CREATION_SPEC_VERSION+ , pattern KHR_DEVICE_GROUP_CREATION_SPEC_VERSION+ , KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME+ , pattern KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_KHR_device_group_creation- ( pattern VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION- , pattern VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME- , vkEnumeratePhysicalDeviceGroupsKHR- , VkPhysicalDeviceGroupPropertiesKHR- , pattern VkPhysicalDeviceGroupPropertiesKHR- , VkDeviceGroupDeviceCreateInfoKHR- , pattern VkDeviceGroupDeviceCreateInfoKHR- , pattern VK_MAX_DEVICE_GROUP_SIZE_KHR- , VK_MAX_DEVICE_GROUP_SIZE_KHR- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR- , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR- , pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR- ) where+import Data.String (IsString)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation (enumeratePhysicalDeviceGroups)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation (DeviceGroupDeviceCreateInfo)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation (PhysicalDeviceGroupProperties)+import Graphics.Vulkan.Core10.APIConstants (pattern MAX_DEVICE_GROUP_SIZE)+import Graphics.Vulkan.Core10.Enums.MemoryHeapFlagBits (MemoryHeapFlags)+import Graphics.Vulkan.Core10.Enums.MemoryHeapFlagBits (MemoryHeapFlagBits(MEMORY_HEAP_MULTI_INSTANCE_BIT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES -import Data.String- ( IsString- )-import Data.Vector.Storable.Sized- ( Vector- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- )-import Graphics.Vulkan.NamedType- ( (:::)- ) +-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO -import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkMemoryHeapFlagBits(..)- , VkInstance- , VkPhysicalDevice- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation- ( VkDeviceGroupDeviceCreateInfo(..)- , VkPhysicalDeviceGroupProperties(..)- , VK_MAX_DEVICE_GROUP_SIZE- , vkEnumeratePhysicalDeviceGroups- , pattern VK_MAX_DEVICE_GROUP_SIZE- , pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT- , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES- ) +-- No documentation found for TopLevel "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR"+pattern MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = MEMORY_HEAP_MULTI_INSTANCE_BIT --- No documentation found for TopLevel "VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION"-pattern VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION :: Integral a => a-pattern VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME"-pattern VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation"+ -- No documentation found for TopLevel "vkEnumeratePhysicalDeviceGroupsKHR"-vkEnumeratePhysicalDeviceGroupsKHR :: ("instance" ::: VkInstance) -> ("pPhysicalDeviceGroupCount" ::: Ptr Word32) -> ("pPhysicalDeviceGroupProperties" ::: Ptr VkPhysicalDeviceGroupProperties) -> IO VkResult-vkEnumeratePhysicalDeviceGroupsKHR = vkEnumeratePhysicalDeviceGroups--- No documentation found for TopLevel "VkPhysicalDeviceGroupPropertiesKHR"-type VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties+enumeratePhysicalDeviceGroupsKHR = enumeratePhysicalDeviceGroups +-- No documentation found for TopLevel "VK_MAX_DEVICE_GROUP_SIZE_KHR"+pattern MAX_DEVICE_GROUP_SIZE_KHR = MAX_DEVICE_GROUP_SIZE++ -- No documentation found for TopLevel "VkPhysicalDeviceGroupPropertiesKHR"-pattern VkPhysicalDeviceGroupPropertiesKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("physicalDeviceCount" ::: Word32) -> ("physicalDevices" ::: Vector VK_MAX_DEVICE_GROUP_SIZE VkPhysicalDevice) -> ("subsetAllocation" ::: VkBool32) -> VkPhysicalDeviceGroupPropertiesKHR-pattern VkPhysicalDeviceGroupPropertiesKHR vkSType vkPNext vkPhysicalDeviceCount vkPhysicalDevices vkSubsetAllocation = VkPhysicalDeviceGroupProperties vkSType vkPNext vkPhysicalDeviceCount vkPhysicalDevices vkSubsetAllocation--- No documentation found for TopLevel "VkDeviceGroupDeviceCreateInfoKHR"-type VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo+type PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties -- No documentation found for TopLevel "VkDeviceGroupDeviceCreateInfoKHR"-pattern VkDeviceGroupDeviceCreateInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("physicalDeviceCount" ::: Word32) -> ("pPhysicalDevices" ::: Ptr VkPhysicalDevice) -> VkDeviceGroupDeviceCreateInfoKHR-pattern VkDeviceGroupDeviceCreateInfoKHR vkSType vkPNext vkPhysicalDeviceCount vkPPhysicalDevices = VkDeviceGroupDeviceCreateInfo vkSType vkPNext vkPhysicalDeviceCount vkPPhysicalDevices--- No documentation found for TopLevel "VK_MAX_DEVICE_GROUP_SIZE_KHR"-pattern VK_MAX_DEVICE_GROUP_SIZE_KHR :: Integral a => a-pattern VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE+type DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo --- No documentation found for TopLevel "VK_MAX_DEVICE_GROUP_SIZE_KHR"-type VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO--- No documentation found for TopLevel "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR"-pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR :: VkMemoryHeapFlagBits-pattern VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT+type KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION"+pattern KHR_DEVICE_GROUP_CREATION_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1+++type KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation"++-- No documentation found for TopLevel "VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME"+pattern KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation"+
src/Graphics/Vulkan/Extensions/VK_KHR_display.hs view
@@ -1,1087 +1,1502 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_KHR_display- ( VkDisplayPlaneAlphaFlagBitsKHR(..)- , pattern VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR- , pattern VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR- , pattern VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR- , pattern VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR- , VkDisplayModeCreateFlagsKHR(..)- , VkDisplaySurfaceCreateFlagsKHR(..)- , pattern VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR- , pattern VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR- , pattern VK_OBJECT_TYPE_DISPLAY_KHR- , pattern VK_OBJECT_TYPE_DISPLAY_MODE_KHR- , pattern VK_KHR_DISPLAY_SPEC_VERSION- , pattern VK_KHR_DISPLAY_EXTENSION_NAME- , VkDisplayKHR- , VkDisplayModeKHR- , vkGetPhysicalDeviceDisplayPropertiesKHR- , vkGetPhysicalDeviceDisplayPlanePropertiesKHR- , vkGetDisplayPlaneSupportedDisplaysKHR- , vkGetDisplayModePropertiesKHR- , vkCreateDisplayModeKHR- , vkGetDisplayPlaneCapabilitiesKHR- , vkCreateDisplayPlaneSurfaceKHR- , VkDisplayPropertiesKHR(..)- , VkDisplayPlanePropertiesKHR(..)- , VkDisplayModeParametersKHR(..)- , VkDisplayModePropertiesKHR(..)- , VkDisplayModeCreateInfoKHR(..)- , VkDisplayPlaneCapabilitiesKHR(..)- , VkDisplaySurfaceCreateInfoKHR(..)- , VkDisplayPlaneAlphaFlagsKHR- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.C.Types- ( CChar(..)- , CFloat(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkObjectType(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkInstance- , VkPhysicalDevice- )-import Graphics.Vulkan.Core10.Pipeline- ( VkExtent2D(..)- , VkOffset2D(..)- )-import Graphics.Vulkan.Extensions.VK_KHR_surface- ( VkSurfaceTransformFlagBitsKHR(..)- , VkSurfaceKHR- , VkSurfaceTransformFlagsKHR- )----- ** VkDisplayPlaneAlphaFlagBitsKHR---- | VkDisplayPlaneAlphaFlagBitsKHR - Alpha blending type------ = See Also------ 'VkDisplayPlaneAlphaFlagsKHR', 'VkDisplaySurfaceCreateInfoKHR'-newtype VkDisplayPlaneAlphaFlagBitsKHR = VkDisplayPlaneAlphaFlagBitsKHR VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkDisplayPlaneAlphaFlagBitsKHR where- showsPrec _ VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = showString "VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"- showsPrec _ VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = showString "VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"- showsPrec _ VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = showString "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"- showsPrec _ VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = showString "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"- showsPrec p (VkDisplayPlaneAlphaFlagBitsKHR x) = showParen (p >= 11) (showString "VkDisplayPlaneAlphaFlagBitsKHR " . showsPrec 11 x)--instance Read VkDisplayPlaneAlphaFlagBitsKHR where- readPrec = parens ( choose [ ("VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR", pure VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR)- , ("VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR", pure VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR)- , ("VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR", pure VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR)- , ("VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR", pure VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR)- ] +++- prec 10 (do- expectP (Ident "VkDisplayPlaneAlphaFlagBitsKHR")- v <- step readPrec- pure (VkDisplayPlaneAlphaFlagBitsKHR v)- )- )---- | @VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR@ specifies that the source image--- will be treated as opaque.-pattern VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR :: VkDisplayPlaneAlphaFlagBitsKHR-pattern VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = VkDisplayPlaneAlphaFlagBitsKHR 0x00000001---- | @VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR@ specifies that a global alpha--- value /must/ be specified that will be applied to all pixels in the--- source image.-pattern VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR :: VkDisplayPlaneAlphaFlagBitsKHR-pattern VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = VkDisplayPlaneAlphaFlagBitsKHR 0x00000002---- | @VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR@ specifies that the alpha--- value will be determined by the alpha channel of the source image’s--- pixels. If the source format contains no alpha values, no blending will--- be applied. The source alpha values are not premultiplied into the--- source image’s other color channels.-pattern VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR :: VkDisplayPlaneAlphaFlagBitsKHR-pattern VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = VkDisplayPlaneAlphaFlagBitsKHR 0x00000004---- | @VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR@ is equivalent--- to @VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR@, except the source alpha--- values are assumed to be premultiplied into the source image’s other--- color channels.-pattern VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR :: VkDisplayPlaneAlphaFlagBitsKHR-pattern VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = VkDisplayPlaneAlphaFlagBitsKHR 0x00000008--- ** VkDisplayModeCreateFlagsKHR---- No documentation found for TopLevel "VkDisplayModeCreateFlagsKHR"-newtype VkDisplayModeCreateFlagsKHR = VkDisplayModeCreateFlagsKHR VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkDisplayModeCreateFlagsKHR where- - showsPrec p (VkDisplayModeCreateFlagsKHR x) = showParen (p >= 11) (showString "VkDisplayModeCreateFlagsKHR " . showsPrec 11 x)--instance Read VkDisplayModeCreateFlagsKHR where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkDisplayModeCreateFlagsKHR")- v <- step readPrec- pure (VkDisplayModeCreateFlagsKHR v)- )- )----- ** VkDisplaySurfaceCreateFlagsKHR---- No documentation found for TopLevel "VkDisplaySurfaceCreateFlagsKHR"-newtype VkDisplaySurfaceCreateFlagsKHR = VkDisplaySurfaceCreateFlagsKHR VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkDisplaySurfaceCreateFlagsKHR where- - showsPrec p (VkDisplaySurfaceCreateFlagsKHR x) = showParen (p >= 11) (showString "VkDisplaySurfaceCreateFlagsKHR " . showsPrec 11 x)--instance Read VkDisplaySurfaceCreateFlagsKHR where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkDisplaySurfaceCreateFlagsKHR")- v <- step readPrec- pure (VkDisplaySurfaceCreateFlagsKHR v)- )- )----- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = VkStructureType 1000002000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = VkStructureType 1000002001--- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DISPLAY_KHR"-pattern VK_OBJECT_TYPE_DISPLAY_KHR :: VkObjectType-pattern VK_OBJECT_TYPE_DISPLAY_KHR = VkObjectType 1000002000--- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DISPLAY_MODE_KHR"-pattern VK_OBJECT_TYPE_DISPLAY_MODE_KHR :: VkObjectType-pattern VK_OBJECT_TYPE_DISPLAY_MODE_KHR = VkObjectType 1000002001--- No documentation found for TopLevel "VK_KHR_DISPLAY_SPEC_VERSION"-pattern VK_KHR_DISPLAY_SPEC_VERSION :: Integral a => a-pattern VK_KHR_DISPLAY_SPEC_VERSION = 21--- No documentation found for TopLevel "VK_KHR_DISPLAY_EXTENSION_NAME"-pattern VK_KHR_DISPLAY_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display"--- | Dummy data to tag the 'Ptr' with-data VkDisplayKHR_T--- | VkDisplayKHR - Opaque handle to a display object------ = See Also------ 'VkDisplayPlanePropertiesKHR', 'VkDisplayPropertiesKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display.vkAcquireXlibDisplayEXT',--- 'vkCreateDisplayModeKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkDisplayPowerControlEXT',--- 'vkGetDisplayModePropertiesKHR',--- 'vkGetDisplayPlaneSupportedDisplaysKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display.vkGetRandROutputDisplayEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkRegisterDisplayEventEXT',--- 'Graphics.Vulkan.Extensions.VK_EXT_direct_mode_display.vkReleaseDisplayEXT'-type VkDisplayKHR = Ptr VkDisplayKHR_T--- | Dummy data to tag the 'Ptr' with-data VkDisplayModeKHR_T--- | VkDisplayModeKHR - Opaque handle to a display mode object------ = See Also------ 'VkDisplayModePropertiesKHR', 'VkDisplaySurfaceCreateInfoKHR',--- 'vkCreateDisplayModeKHR', 'vkGetDisplayPlaneCapabilitiesKHR'-type VkDisplayModeKHR = Ptr VkDisplayModeKHR_T--- | vkGetPhysicalDeviceDisplayPropertiesKHR - Query information about the--- available displays------ = Parameters------ - @physicalDevice@ is a physical device.------ - @pPropertyCount@ is a pointer to an integer related to the number of--- display devices available or queried, as described below.------ - @pProperties@ is either @NULL@ or a pointer to an array of--- @VkDisplayPropertiesKHR@ structures.------ = Description------ If @pProperties@ is @NULL@, then the number of display devices available--- for @physicalDevice@ is returned in @pPropertyCount@. Otherwise,--- @pPropertyCount@ /must/ point to a variable set by the user to the--- number of elements in the @pProperties@ array, and on return the--- variable is overwritten with the number of structures actually written--- to @pProperties@. If the value of @pPropertyCount@ is less than the--- number of display devices for @physicalDevice@, at most @pPropertyCount@--- structures will be written. If @pPropertyCount@ is smaller than the--- number of display devices available for @physicalDevice@,--- @VK_INCOMPLETE@ will be returned instead of @VK_SUCCESS@ to indicate--- that not all the available values were returned.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pPropertyCount@ /must/ be a valid pointer to a @uint32_t@ value------ - If the value referenced by @pPropertyCount@ is not @0@, and--- @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer--- to an array of @pPropertyCount@ @VkDisplayPropertiesKHR@ structures------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ - @VK_INCOMPLETE@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'VkDisplayPropertiesKHR',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceDisplayPropertiesKHR" vkGetPhysicalDeviceDisplayPropertiesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPropertiesKHR) -> IO VkResult--- | vkGetPhysicalDeviceDisplayPlanePropertiesKHR - Query the plane--- properties------ = Parameters------ - @physicalDevice@ is a physical device.------ - @pPropertyCount@ is a pointer to an integer related to the number of--- display planes available or queried, as described below.------ - @pProperties@ is either @NULL@ or a pointer to an array of--- @VkDisplayPlanePropertiesKHR@ structures.------ = Description------ If @pProperties@ is @NULL@, then the number of display planes available--- for @physicalDevice@ is returned in @pPropertyCount@. Otherwise,--- @pPropertyCount@ /must/ point to a variable set by the user to the--- number of elements in the @pProperties@ array, and on return the--- variable is overwritten with the number of structures actually written--- to @pProperties@. If the value of @pPropertyCount@ is less than the--- number of display planes for @physicalDevice@, at most @pPropertyCount@--- structures will be written.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pPropertyCount@ /must/ be a valid pointer to a @uint32_t@ value------ - If the value referenced by @pPropertyCount@ is not @0@, and--- @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer--- to an array of @pPropertyCount@ @VkDisplayPlanePropertiesKHR@--- structures------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ - @VK_INCOMPLETE@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'VkDisplayPlanePropertiesKHR',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" vkGetPhysicalDeviceDisplayPlanePropertiesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayPlanePropertiesKHR) -> IO VkResult--- | vkGetDisplayPlaneSupportedDisplaysKHR - Query the list of displays a--- plane supports------ = Parameters------ - @physicalDevice@ is a physical device.------ - @planeIndex@ is the plane which the application wishes to use, and--- /must/ be in the range [0, physical device plane count - 1].------ - @pDisplayCount@ is a pointer to an integer related to the number of--- displays available or queried, as described below.------ - @pDisplays@ is either @NULL@ or a pointer to an array of--- @VkDisplayKHR@ handles.------ = Description------ If @pDisplays@ is @NULL@, then the number of displays usable with the--- specified @planeIndex@ for @physicalDevice@ is returned in--- @pDisplayCount@. Otherwise, @pDisplayCount@ /must/ point to a variable--- set by the user to the number of elements in the @pDisplays@ array, and--- on return the variable is overwritten with the number of handles--- actually written to @pDisplays@. If the value of @pDisplayCount@ is less--- than the number of display planes for @physicalDevice@, at most--- @pDisplayCount@ handles will be written. If @pDisplayCount@ is smaller--- than the number of displays usable with the specified @planeIndex@ for--- @physicalDevice@, @VK_INCOMPLETE@ will be returned instead of--- @VK_SUCCESS@ to indicate that not all the available values were--- returned.------ == Valid Usage------ - @planeIndex@ /must/ be less than the number of display planes--- supported by the device as determined by calling--- @vkGetPhysicalDeviceDisplayPlanePropertiesKHR@------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pDisplayCount@ /must/ be a valid pointer to a @uint32_t@ value------ - If the value referenced by @pDisplayCount@ is not @0@, and--- @pDisplays@ is not @NULL@, @pDisplays@ /must/ be a valid pointer to--- an array of @pDisplayCount@ @VkDisplayKHR@ handles------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ - @VK_INCOMPLETE@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'VkDisplayKHR',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetDisplayPlaneSupportedDisplaysKHR" vkGetDisplayPlaneSupportedDisplaysKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("planeIndex" ::: Word32) -> ("pDisplayCount" ::: Ptr Word32) -> ("pDisplays" ::: Ptr VkDisplayKHR) -> IO VkResult--- | vkGetDisplayModePropertiesKHR - Query the set of mode properties--- supported by the display------ = Parameters------ - @physicalDevice@ is the physical device associated with @display@.------ - @display@ is the display to query.------ - @pPropertyCount@ is a pointer to an integer related to the number of--- display modes available or queried, as described below.------ - @pProperties@ is either @NULL@ or a pointer to an array of--- @VkDisplayModePropertiesKHR@ structures.------ = Description------ If @pProperties@ is @NULL@, then the number of display modes available--- on the specified @display@ for @physicalDevice@ is returned in--- @pPropertyCount@. Otherwise, @pPropertyCount@ /must/ point to a variable--- set by the user to the number of elements in the @pProperties@ array,--- and on return the variable is overwritten with the number of structures--- actually written to @pProperties@. If the value of @pPropertyCount@ is--- less than the number of display modes for @physicalDevice@, at most--- @pPropertyCount@ structures will be written. If @pPropertyCount@ is--- smaller than the number of display modes available on the specified--- @display@ for @physicalDevice@, @VK_INCOMPLETE@ will be returned instead--- of @VK_SUCCESS@ to indicate that not all the available values were--- returned.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @display@ /must/ be a valid @VkDisplayKHR@ handle------ - @pPropertyCount@ /must/ be a valid pointer to a @uint32_t@ value------ - If the value referenced by @pPropertyCount@ is not @0@, and--- @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer--- to an array of @pPropertyCount@ @VkDisplayModePropertiesKHR@--- structures------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ - @VK_INCOMPLETE@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'VkDisplayKHR', 'VkDisplayModePropertiesKHR',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetDisplayModePropertiesKHR" vkGetDisplayModePropertiesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkDisplayModePropertiesKHR) -> IO VkResult--- | vkCreateDisplayModeKHR - Create a display mode------ = Parameters------ - @physicalDevice@ is the physical device associated with @display@.------ - @display@ is the display to create an additional mode for.------ - @pCreateInfo@ is a 'VkDisplayModeCreateInfoKHR' structure describing--- the new mode to create.------ - @pAllocator@ is the allocator used for host memory allocated for the--- display mode object when there is no more specific allocator--- available (see [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)).------ - @pMode@ returns the handle of the mode created.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @display@ /must/ be a valid @VkDisplayKHR@ handle------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkDisplayModeCreateInfoKHR@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pMode@ /must/ be a valid pointer to a @VkDisplayModeKHR@ handle------ == Host Synchronization------ - Host access to @display@ /must/ be externally synchronized------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_INITIALIZATION_FAILED@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'VkDisplayKHR', 'VkDisplayModeCreateInfoKHR', 'VkDisplayModeKHR',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateDisplayModeKHR" vkCreateDisplayModeKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("display" ::: VkDisplayKHR) -> ("pCreateInfo" ::: Ptr VkDisplayModeCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pMode" ::: Ptr VkDisplayModeKHR) -> IO VkResult--- | vkGetDisplayPlaneCapabilitiesKHR - Query capabilities of a mode and--- plane combination------ = Parameters------ - @physicalDevice@ is the physical device associated with @display@------ - @mode@ is the display mode the application intends to program when--- using the specified plane. Note this parameter also implicitly--- specifies a display.------ - @planeIndex@ is the plane which the application intends to use with--- the display, and is less than the number of display planes supported--- by the device.------ - @pCapabilities@ is a pointer to a 'VkDisplayPlaneCapabilitiesKHR'--- structure in which the capabilities are returned.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @mode@ /must/ be a valid @VkDisplayModeKHR@ handle------ - @pCapabilities@ /must/ be a valid pointer to a--- @VkDisplayPlaneCapabilitiesKHR@ structure------ == Host Synchronization------ - Host access to @mode@ /must/ be externally synchronized------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'VkDisplayModeKHR', 'VkDisplayPlaneCapabilitiesKHR',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetDisplayPlaneCapabilitiesKHR" vkGetDisplayPlaneCapabilitiesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("mode" ::: VkDisplayModeKHR) -> ("planeIndex" ::: Word32) -> ("pCapabilities" ::: Ptr VkDisplayPlaneCapabilitiesKHR) -> IO VkResult--- | vkCreateDisplayPlaneSurfaceKHR - Create a--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR' structure--- representing a display plane and mode------ = Parameters------ - @instance@ is the instance corresponding to the physical device the--- targeted display is on.------ - @pCreateInfo@ is a pointer to an instance of the--- 'VkDisplaySurfaceCreateInfoKHR' structure specifying which mode,--- plane, and other parameters to use, as described below.------ - @pAllocator@ is the allocator used for host memory allocated for the--- surface object when there is no more specific allocator available--- (see [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)).------ - @pSurface@ points to a @VkSurfaceKHR@ handle in which the created--- surface is returned.------ == Valid Usage (Implicit)------ - @instance@ /must/ be a valid @VkInstance@ handle------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkDisplaySurfaceCreateInfoKHR@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pSurface@ /must/ be a valid pointer to a @VkSurfaceKHR@ handle------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'VkDisplaySurfaceCreateInfoKHR',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateDisplayPlaneSurfaceKHR" vkCreateDisplayPlaneSurfaceKHR :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkDisplaySurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult--- | VkDisplayPropertiesKHR - Structure describing an available display--- device------ = Description------ __Note__------ For devices which have no natural value to return here, implementations--- /should/ return the maximum resolution supported.------ - @supportedTransforms@ tells which transforms are supported by this--- display. This will contain one or more of the bits from--- @VkSurfaceTransformFlagsKHR@.------ - @planeReorderPossible@ tells whether the planes on this display--- /can/ have their z order changed. If this is @VK_TRUE@, the--- application /can/ re-arrange the planes on this display in any order--- relative to each other.------ - @persistentContent@ tells whether the display supports--- self-refresh\/internal buffering. If this is true, the application--- /can/ submit persistent present operations on swapchains created--- against this display.------ __Note__------ Persistent presents /may/ have higher latency, and /may/ use less power--- when the screen content is updated infrequently, or when only a portion--- of the screen needs to be updated in most frames.------ = See Also------ @VkBool32@, 'VkDisplayKHR',--- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceTransformFlagsKHR',--- 'vkGetPhysicalDeviceDisplayPropertiesKHR'-data VkDisplayPropertiesKHR = VkDisplayPropertiesKHR- { -- | @display@ is a handle that is used to refer to the display described- -- here. This handle will be valid for the lifetime of the Vulkan instance.- vkDisplay :: VkDisplayKHR- , -- | @displayName@ is a pointer to a NULL-terminated string containing the- -- name of the display. Generally, this will be the name provided by the- -- display’s EDID. It /can/ be @NULL@ if no suitable name is available. If- -- not @NULL@, the memory it points to /must/ remain accessible as long as- -- @display@ is valid.- vkDisplayName :: Ptr CChar- , -- | @physicalDimensions@ describes the physical width and height of the- -- visible portion of the display, in millimeters.- vkPhysicalDimensions :: VkExtent2D- , -- | @physicalResolution@ describes the physical, native, or preferred- -- resolution of the display.- vkPhysicalResolution :: VkExtent2D- , -- No documentation found for Nested "VkDisplayPropertiesKHR" "supportedTransforms"- vkSupportedTransforms :: VkSurfaceTransformFlagsKHR- , -- No documentation found for Nested "VkDisplayPropertiesKHR" "planeReorderPossible"- vkPlaneReorderPossible :: VkBool32- , -- No documentation found for Nested "VkDisplayPropertiesKHR" "persistentContent"- vkPersistentContent :: VkBool32- }- deriving (Eq, Show)--instance Storable VkDisplayPropertiesKHR where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkDisplayPropertiesKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- poke ptr poked = poke (ptr `plusPtr` 0) (vkDisplay (poked :: VkDisplayPropertiesKHR))- *> poke (ptr `plusPtr` 8) (vkDisplayName (poked :: VkDisplayPropertiesKHR))- *> poke (ptr `plusPtr` 16) (vkPhysicalDimensions (poked :: VkDisplayPropertiesKHR))- *> poke (ptr `plusPtr` 24) (vkPhysicalResolution (poked :: VkDisplayPropertiesKHR))- *> poke (ptr `plusPtr` 32) (vkSupportedTransforms (poked :: VkDisplayPropertiesKHR))- *> poke (ptr `plusPtr` 36) (vkPlaneReorderPossible (poked :: VkDisplayPropertiesKHR))- *> poke (ptr `plusPtr` 40) (vkPersistentContent (poked :: VkDisplayPropertiesKHR))--- | VkDisplayPlanePropertiesKHR - Structure describing display plane--- properties------ = See Also------ 'VkDisplayKHR', 'vkGetPhysicalDeviceDisplayPlanePropertiesKHR'-data VkDisplayPlanePropertiesKHR = VkDisplayPlanePropertiesKHR- { -- | @currentDisplay@ is the handle of the display the plane is currently- -- associated with. If the plane is not currently attached to any displays,- -- this will be @VK_NULL_HANDLE@.- vkCurrentDisplay :: VkDisplayKHR- , -- | @currentStackIndex@ is the current z-order of the plane. This will be- -- between 0 and the value returned by- -- @vkGetPhysicalDeviceDisplayPlanePropertiesKHR@ in @pPropertyCount@.- vkCurrentStackIndex :: Word32- }- deriving (Eq, Show)--instance Storable VkDisplayPlanePropertiesKHR where- sizeOf ~_ = 16- alignment ~_ = 8- peek ptr = VkDisplayPlanePropertiesKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkCurrentDisplay (poked :: VkDisplayPlanePropertiesKHR))- *> poke (ptr `plusPtr` 8) (vkCurrentStackIndex (poked :: VkDisplayPlanePropertiesKHR))--- | VkDisplayModeParametersKHR - Structure describing display parameters--- associated with a display mode------ = Description------ __Note__------ For example, a 60Hz display mode would report a @refreshRate@ of 60,000.------ = See Also------ 'VkDisplayModeCreateInfoKHR', 'VkDisplayModePropertiesKHR',--- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D'-data VkDisplayModeParametersKHR = VkDisplayModeParametersKHR- { -- | @visibleRegion@ is the 2D extents of the visible region.- vkVisibleRegion :: VkExtent2D- , -- | @refreshRate@ is a @uint32_t@ that is the number of times the display is- -- refreshed each second multiplied by 1000.- vkRefreshRate :: Word32- }- deriving (Eq, Show)--instance Storable VkDisplayModeParametersKHR where- sizeOf ~_ = 12- alignment ~_ = 4- peek ptr = VkDisplayModeParametersKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkVisibleRegion (poked :: VkDisplayModeParametersKHR))- *> poke (ptr `plusPtr` 8) (vkRefreshRate (poked :: VkDisplayModeParametersKHR))--- | VkDisplayModePropertiesKHR - Structure describing display mode--- properties------ = See Also------ 'VkDisplayModeKHR', 'VkDisplayModeParametersKHR',--- 'vkGetDisplayModePropertiesKHR'-data VkDisplayModePropertiesKHR = VkDisplayModePropertiesKHR- { -- | @displayMode@ is a handle to the display mode described in this- -- structure. This handle will be valid for the lifetime of the Vulkan- -- instance.- vkDisplayMode :: VkDisplayModeKHR- , -- | @parameters@ is a @VkDisplayModeParametersKHR@ structure describing the- -- display parameters associated with @displayMode@.- vkParameters :: VkDisplayModeParametersKHR- }- deriving (Eq, Show)--instance Storable VkDisplayModePropertiesKHR where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkDisplayModePropertiesKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkDisplayMode (poked :: VkDisplayModePropertiesKHR))- *> poke (ptr `plusPtr` 8) (vkParameters (poked :: VkDisplayModePropertiesKHR))--- | VkDisplayModeCreateInfoKHR - Structure specifying parameters of a newly--- created display mode object------ == Valid Usage------ - The @width@ and @height@ members of the @visibleRegion@ member of--- @parameters@ /must/ be greater than @0@------ - The @refreshRate@ member of @parameters@ /must/ be greater than @0@------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@------ = See Also------ 'VkDisplayModeCreateFlagsKHR', 'VkDisplayModeParametersKHR',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateDisplayModeKHR'-data VkDisplayModeCreateInfoKHR = VkDisplayModeCreateInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use, and /must/ be zero.- vkFlags :: VkDisplayModeCreateFlagsKHR- , -- | @parameters@ is a @VkDisplayModeParametersKHR@ structure describing the- -- display parameters to use in creating the new mode. If the parameters- -- are not compatible with the specified display, the implementation /must/- -- return @VK_ERROR_INITIALIZATION_FAILED@.- vkParameters :: VkDisplayModeParametersKHR- }- deriving (Eq, Show)--instance Storable VkDisplayModeCreateInfoKHR where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkDisplayModeCreateInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDisplayModeCreateInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDisplayModeCreateInfoKHR))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkDisplayModeCreateInfoKHR))- *> poke (ptr `plusPtr` 20) (vkParameters (poked :: VkDisplayModeCreateInfoKHR))--- | VkDisplayPlaneCapabilitiesKHR - Structure describing capabilities of a--- mode and plane combination------ = Description------ The minimum and maximum position and extent fields describe the--- implementation limits, if any, as they apply to the specified display--- mode and plane. Vendors /may/ support displaying a subset of a--- swapchain’s presentable images on the specified display plane. This is--- expressed by returning @minSrcPosition@, @maxSrcPosition@,--- @minSrcExtent@, and @maxSrcExtent@ values that indicate a range of--- possible positions and sizes /may/ be used to specify the region within--- the presentable images that source pixels will be read from when--- creating a swapchain on the specified display mode and plane.------ Vendors /may/ also support mapping the presentable images’ content to a--- subset or superset of the visible region in the specified display mode.--- This is expressed by returning @minDstPosition@, @maxDstPosition@,--- @minDstExtent@ and @maxDstExtent@ values that indicate a range of--- possible positions and sizes /may/ be used to describe the region within--- the display mode that the source pixels will be mapped to.------ Other vendors /may/ support only a 1-1 mapping between pixels in the--- presentable images and the display mode. This /may/ be indicated by--- returning (0,0) for @minSrcPosition@, @maxSrcPosition@,--- @minDstPosition@, and @maxDstPosition@, and (display mode width, display--- mode height) for @minSrcExtent@, @maxSrcExtent@, @minDstExtent@, and--- @maxDstExtent@.------ These values indicate the limits of the implementation’s individual--- fields. Not all combinations of values within the offset and extent--- ranges returned in @VkDisplayPlaneCapabilitiesKHR@ are guaranteed to be--- supported. Vendors /may/ still fail presentation requests that specify--- unsupported combinations.------ = See Also------ 'VkDisplayPlaneAlphaFlagsKHR',--- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D',--- 'Graphics.Vulkan.Core10.Pipeline.VkOffset2D',--- 'vkGetDisplayPlaneCapabilitiesKHR'-data VkDisplayPlaneCapabilitiesKHR = VkDisplayPlaneCapabilitiesKHR- { -- | @supportedAlpha@ is a bitmask of 'VkDisplayPlaneAlphaFlagBitsKHR'- -- describing the supported alpha blending modes.- vkSupportedAlpha :: VkDisplayPlaneAlphaFlagsKHR- , -- | @minSrcPosition@ is the minimum source rectangle offset supported by- -- this plane using the specified mode.- vkMinSrcPosition :: VkOffset2D- , -- | @maxSrcPosition@ is the maximum source rectangle offset supported by- -- this plane using the specified mode. The @x@ and @y@ components of- -- @maxSrcPosition@ /must/ each be greater than or equal to the @x@ and @y@- -- components of @minSrcPosition@, respectively.- vkMaxSrcPosition :: VkOffset2D- , -- | @minSrcExtent@ is the minimum source rectangle size supported by this- -- plane using the specified mode.- vkMinSrcExtent :: VkExtent2D- , -- | @maxSrcExtent@ is the maximum source rectangle size supported by this- -- plane using the specified mode.- vkMaxSrcExtent :: VkExtent2D- , -- | @minDstPosition@, @maxDstPosition@, @minDstExtent@, @maxDstExtent@ all- -- have similar semantics to their corresponding @*Src*@ equivalents, but- -- apply to the output region within the mode rather than the input region- -- within the source image. Unlike the @*Src*@ offsets, @minDstPosition@- -- and @maxDstPosition@ /may/ contain negative values.- vkMinDstPosition :: VkOffset2D- , -- No documentation found for Nested "VkDisplayPlaneCapabilitiesKHR" "maxDstPosition"- vkMaxDstPosition :: VkOffset2D- , -- No documentation found for Nested "VkDisplayPlaneCapabilitiesKHR" "minDstExtent"- vkMinDstExtent :: VkExtent2D- , -- No documentation found for Nested "VkDisplayPlaneCapabilitiesKHR" "maxDstExtent"- vkMaxDstExtent :: VkExtent2D- }- deriving (Eq, Show)--instance Storable VkDisplayPlaneCapabilitiesKHR where- sizeOf ~_ = 68- alignment ~_ = 4- peek ptr = VkDisplayPlaneCapabilitiesKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 12)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 52)- <*> peek (ptr `plusPtr` 60)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSupportedAlpha (poked :: VkDisplayPlaneCapabilitiesKHR))- *> poke (ptr `plusPtr` 4) (vkMinSrcPosition (poked :: VkDisplayPlaneCapabilitiesKHR))- *> poke (ptr `plusPtr` 12) (vkMaxSrcPosition (poked :: VkDisplayPlaneCapabilitiesKHR))- *> poke (ptr `plusPtr` 20) (vkMinSrcExtent (poked :: VkDisplayPlaneCapabilitiesKHR))- *> poke (ptr `plusPtr` 28) (vkMaxSrcExtent (poked :: VkDisplayPlaneCapabilitiesKHR))- *> poke (ptr `plusPtr` 36) (vkMinDstPosition (poked :: VkDisplayPlaneCapabilitiesKHR))- *> poke (ptr `plusPtr` 44) (vkMaxDstPosition (poked :: VkDisplayPlaneCapabilitiesKHR))- *> poke (ptr `plusPtr` 52) (vkMinDstExtent (poked :: VkDisplayPlaneCapabilitiesKHR))- *> poke (ptr `plusPtr` 60) (vkMaxDstExtent (poked :: VkDisplayPlaneCapabilitiesKHR))--- | VkDisplaySurfaceCreateInfoKHR - Structure specifying parameters of a--- newly created display plane surface object------ = Description------ __Note__------ Creating a display surface /must/ not modify the state of the displays,--- planes, or other resources it names. For example, it /must/ not apply--- the specified mode to be set on the associated display. Application of--- display configuration occurs as a side effect of presenting to a display--- surface.------ == Valid Usage------ - @planeIndex@ /must/ be less than the number of display planes--- supported by the device as determined by calling--- @vkGetPhysicalDeviceDisplayPlanePropertiesKHR@------ - If the @planeReorderPossible@ member of the @VkDisplayPropertiesKHR@--- structure returned by @vkGetPhysicalDeviceDisplayPropertiesKHR@ for--- the display corresponding to @displayMode@ is @VK_TRUE@ then--- @planeStackIndex@ /must/ be less than the number of display planes--- supported by the device as determined by calling--- @vkGetPhysicalDeviceDisplayPlanePropertiesKHR@; otherwise--- @planeStackIndex@ /must/ equal the @currentStackIndex@ member of--- @VkDisplayPlanePropertiesKHR@ returned by--- @vkGetPhysicalDeviceDisplayPlanePropertiesKHR@ for the display plane--- corresponding to @displayMode@------ - If @alphaMode@ is @VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR@ then--- @globalAlpha@ /must/ be between @0@ and @1@, inclusive------ - @alphaMode@ /must/ be @0@ or one of the bits present in the--- @supportedAlpha@ member of @VkDisplayPlaneCapabilitiesKHR@ returned--- by @vkGetDisplayPlaneCapabilitiesKHR@ for the display plane--- corresponding to @displayMode@------ - The @width@ and @height@ members of @imageExtent@ /must/ be less--- than the @maxImageDimensions2D@ member of @VkPhysicalDeviceLimits@------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@------ - @displayMode@ /must/ be a valid @VkDisplayModeKHR@ handle------ - @transform@ /must/ be a valid--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceTransformFlagBitsKHR'--- value------ - @alphaMode@ /must/ be a valid 'VkDisplayPlaneAlphaFlagBitsKHR' value------ = See Also------ 'VkDisplayModeKHR', 'VkDisplayPlaneAlphaFlagBitsKHR',--- 'VkDisplaySurfaceCreateFlagsKHR',--- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceTransformFlagBitsKHR',--- 'vkCreateDisplayPlaneSurfaceKHR'-data VkDisplaySurfaceCreateInfoKHR = VkDisplaySurfaceCreateInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use, and /must/ be zero.- vkFlags :: VkDisplaySurfaceCreateFlagsKHR- , -- | @displayMode@ is a 'VkDisplayModeKHR' handle specifying the mode to use- -- when displaying this surface.- vkDisplayMode :: VkDisplayModeKHR- , -- | @planeIndex@ is the plane on which this surface appears.- vkPlaneIndex :: Word32- , -- | @planeStackIndex@ is the z-order of the plane.- vkPlaneStackIndex :: Word32- , -- | @transform@ is a- -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceTransformFlagBitsKHR'- -- value specifying the transformation to apply to images as part of the- -- scanout operation.- vkTransform :: VkSurfaceTransformFlagBitsKHR- , -- | @globalAlpha@ is the global alpha value. This value is ignored if- -- @alphaMode@ is not @VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR@.- vkGlobalAlpha :: CFloat- , -- | @alphaMode@ is a 'VkDisplayPlaneAlphaFlagBitsKHR' value specifying the- -- type of alpha blending to use.- vkAlphaMode :: VkDisplayPlaneAlphaFlagBitsKHR- , -- | @imageExtent@ The size of the presentable images to use with the- -- surface.- vkImageExtent :: VkExtent2D- }- deriving (Eq, Show)--instance Storable VkDisplaySurfaceCreateInfoKHR where- sizeOf ~_ = 64- alignment ~_ = 8- peek ptr = VkDisplaySurfaceCreateInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 52)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDisplaySurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDisplaySurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkDisplaySurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 24) (vkDisplayMode (poked :: VkDisplaySurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 32) (vkPlaneIndex (poked :: VkDisplaySurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 36) (vkPlaneStackIndex (poked :: VkDisplaySurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 40) (vkTransform (poked :: VkDisplaySurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 44) (vkGlobalAlpha (poked :: VkDisplaySurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 48) (vkAlphaMode (poked :: VkDisplaySurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 52) (vkImageExtent (poked :: VkDisplaySurfaceCreateInfoKHR))--- | VkDisplayPlaneAlphaFlagsKHR - Bitmask of VkDisplayPlaneAlphaFlagBitsKHR------ = Description------ @VkDisplayPlaneAlphaFlagsKHR@ is a bitmask type for setting a mask of--- zero or more 'VkDisplayPlaneAlphaFlagBitsKHR'.------ = See Also------ 'VkDisplayPlaneAlphaFlagBitsKHR', 'VkDisplayPlaneCapabilitiesKHR'-type VkDisplayPlaneAlphaFlagsKHR = VkDisplayPlaneAlphaFlagBitsKHR+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_display ( getPhysicalDeviceDisplayPropertiesKHR+ , getPhysicalDeviceDisplayPlanePropertiesKHR+ , getDisplayPlaneSupportedDisplaysKHR+ , getDisplayModePropertiesKHR+ , createDisplayModeKHR+ , getDisplayPlaneCapabilitiesKHR+ , createDisplayPlaneSurfaceKHR+ , DisplayPropertiesKHR(..)+ , DisplayPlanePropertiesKHR(..)+ , DisplayModeParametersKHR(..)+ , DisplayModePropertiesKHR(..)+ , DisplayModeCreateInfoKHR(..)+ , DisplayPlaneCapabilitiesKHR(..)+ , DisplaySurfaceCreateInfoKHR(..)+ , DisplayModeCreateFlagsKHR(..)+ , DisplaySurfaceCreateFlagsKHR(..)+ , DisplayPlaneAlphaFlagBitsKHR( DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR+ , DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR+ , DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR+ , DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR+ , ..+ )+ , DisplayPlaneAlphaFlagsKHR+ , SurfaceTransformFlagBitsKHR( SURFACE_TRANSFORM_IDENTITY_BIT_KHR+ , SURFACE_TRANSFORM_ROTATE_90_BIT_KHR+ , SURFACE_TRANSFORM_ROTATE_180_BIT_KHR+ , SURFACE_TRANSFORM_ROTATE_270_BIT_KHR+ , SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR+ , SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR+ , SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR+ , SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR+ , SURFACE_TRANSFORM_INHERIT_BIT_KHR+ , ..+ )+ , SurfaceTransformFlagsKHR+ , KHR_DISPLAY_SPEC_VERSION+ , pattern KHR_DISPLAY_SPEC_VERSION+ , KHR_DISPLAY_EXTENSION_NAME+ , pattern KHR_DISPLAY_EXTENSION_NAME+ , DisplayKHR(..)+ , DisplayModeKHR(..)+ , SurfaceKHR(..)+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.ByteString (packCString)+import Data.ByteString (useAsCString)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import Data.Bits (Bits)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CFloat(CFloat))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Extensions.Handles (DisplayKHR)+import Graphics.Vulkan.Extensions.Handles (DisplayKHR(..))+import Graphics.Vulkan.Extensions.Handles (DisplayModeKHR)+import Graphics.Vulkan.Extensions.Handles (DisplayModeKHR(..))+import Graphics.Vulkan.Core10.SharedTypes (Extent2D)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Instance)+import Graphics.Vulkan.Core10.Handles (Instance(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkCreateDisplayModeKHR))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkCreateDisplayPlaneSurfaceKHR))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetDisplayModePropertiesKHR))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetDisplayPlaneCapabilitiesKHR))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetDisplayPlaneSupportedDisplaysKHR))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceDisplayPlanePropertiesKHR))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceDisplayPropertiesKHR))+import Graphics.Vulkan.Core10.Handles (Instance_T)+import Graphics.Vulkan.Core10.SharedTypes (Offset2D)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.Handles (DisplayKHR(..))+import Graphics.Vulkan.Extensions.Handles (DisplayModeKHR(..))+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceDisplayPropertiesKHR+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr DisplayPropertiesKHR -> IO Result) -> Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr DisplayPropertiesKHR -> IO Result++-- | vkGetPhysicalDeviceDisplayPropertiesKHR - Query information about the+-- available displays+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is a physical+-- device.+--+-- - @pPropertyCount@ is a pointer to an integer related to the number of+-- display devices available or queried, as described below.+--+-- - @pProperties@ is either @NULL@ or a pointer to an array of+-- 'DisplayPropertiesKHR' structures.+--+-- = Description+--+-- If @pProperties@ is @NULL@, then the number of display devices available+-- for 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is returned in+-- @pPropertyCount@. Otherwise, @pPropertyCount@ /must/ point to a variable+-- set by the user to the number of elements in the @pProperties@ array,+-- and on return the variable is overwritten with the number of structures+-- actually written to @pProperties@. If the value of @pPropertyCount@ is+-- less than the number of display devices for+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice', at most+-- @pPropertyCount@ structures will be written. If @pPropertyCount@ is+-- smaller than the number of display devices available for+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned+-- instead of 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' to indicate+-- that not all the available values were returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @pPropertyCount@ /must/ be a valid pointer to a @uint32_t@ value+--+-- - If the value referenced by @pPropertyCount@ is not @0@, and+-- @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer+-- to an array of @pPropertyCount@ 'DisplayPropertiesKHR' structures+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'DisplayPropertiesKHR', 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+getPhysicalDeviceDisplayPropertiesKHR :: PhysicalDevice -> IO (Result, ("properties" ::: Vector DisplayPropertiesKHR))+getPhysicalDeviceDisplayPropertiesKHR physicalDevice = evalContT $ do+ let vkGetPhysicalDeviceDisplayPropertiesKHR' = mkVkGetPhysicalDeviceDisplayPropertiesKHR (pVkGetPhysicalDeviceDisplayPropertiesKHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pPPropertyCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkGetPhysicalDeviceDisplayPropertiesKHR' physicalDevice' (pPPropertyCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pPropertyCount <- lift $ peek @Word32 pPPropertyCount+ pPProperties <- ContT $ bracket (callocBytes @DisplayPropertiesKHR ((fromIntegral (pPropertyCount)) * 48)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPProperties `advancePtrBytes` (i * 48) :: Ptr DisplayPropertiesKHR) . ($ ())) [0..(fromIntegral (pPropertyCount)) - 1]+ r' <- lift $ vkGetPhysicalDeviceDisplayPropertiesKHR' physicalDevice' (pPPropertyCount) ((pPProperties))+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pPropertyCount' <- lift $ peek @Word32 pPPropertyCount+ pProperties' <- lift $ generateM (fromIntegral (pPropertyCount')) (\i -> peekCStruct @DisplayPropertiesKHR (((pPProperties) `advancePtrBytes` (48 * (i)) :: Ptr DisplayPropertiesKHR)))+ pure $ ((r'), pProperties')+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceDisplayPlanePropertiesKHR+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr DisplayPlanePropertiesKHR -> IO Result) -> Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr DisplayPlanePropertiesKHR -> IO Result++-- | vkGetPhysicalDeviceDisplayPlanePropertiesKHR - Query the plane+-- properties+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is a physical+-- device.+--+-- - @pPropertyCount@ is a pointer to an integer related to the number of+-- display planes available or queried, as described below.+--+-- - @pProperties@ is either @NULL@ or a pointer to an array of+-- 'DisplayPlanePropertiesKHR' structures.+--+-- = Description+--+-- If @pProperties@ is @NULL@, then the number of display planes available+-- for 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is returned in+-- @pPropertyCount@. Otherwise, @pPropertyCount@ /must/ point to a variable+-- set by the user to the number of elements in the @pProperties@ array,+-- and on return the variable is overwritten with the number of structures+-- actually written to @pProperties@. If the value of @pPropertyCount@ is+-- less than the number of display planes for+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice', at most+-- @pPropertyCount@ structures will be written.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @pPropertyCount@ /must/ be a valid pointer to a @uint32_t@ value+--+-- - If the value referenced by @pPropertyCount@ is not @0@, and+-- @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer+-- to an array of @pPropertyCount@ 'DisplayPlanePropertiesKHR'+-- structures+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'DisplayPlanePropertiesKHR',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+getPhysicalDeviceDisplayPlanePropertiesKHR :: PhysicalDevice -> IO (Result, ("properties" ::: Vector DisplayPlanePropertiesKHR))+getPhysicalDeviceDisplayPlanePropertiesKHR physicalDevice = evalContT $ do+ let vkGetPhysicalDeviceDisplayPlanePropertiesKHR' = mkVkGetPhysicalDeviceDisplayPlanePropertiesKHR (pVkGetPhysicalDeviceDisplayPlanePropertiesKHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pPPropertyCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkGetPhysicalDeviceDisplayPlanePropertiesKHR' physicalDevice' (pPPropertyCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pPropertyCount <- lift $ peek @Word32 pPPropertyCount+ pPProperties <- ContT $ bracket (callocBytes @DisplayPlanePropertiesKHR ((fromIntegral (pPropertyCount)) * 16)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPProperties `advancePtrBytes` (i * 16) :: Ptr DisplayPlanePropertiesKHR) . ($ ())) [0..(fromIntegral (pPropertyCount)) - 1]+ r' <- lift $ vkGetPhysicalDeviceDisplayPlanePropertiesKHR' physicalDevice' (pPPropertyCount) ((pPProperties))+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pPropertyCount' <- lift $ peek @Word32 pPPropertyCount+ pProperties' <- lift $ generateM (fromIntegral (pPropertyCount')) (\i -> peekCStruct @DisplayPlanePropertiesKHR (((pPProperties) `advancePtrBytes` (16 * (i)) :: Ptr DisplayPlanePropertiesKHR)))+ pure $ ((r'), pProperties')+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetDisplayPlaneSupportedDisplaysKHR+ :: FunPtr (Ptr PhysicalDevice_T -> Word32 -> Ptr Word32 -> Ptr DisplayKHR -> IO Result) -> Ptr PhysicalDevice_T -> Word32 -> Ptr Word32 -> Ptr DisplayKHR -> IO Result++-- | vkGetDisplayPlaneSupportedDisplaysKHR - Query the list of displays a+-- plane supports+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is a physical+-- device.+--+-- - @planeIndex@ is the plane which the application wishes to use, and+-- /must/ be in the range [0, physical device plane count - 1].+--+-- - @pDisplayCount@ is a pointer to an integer related to the number of+-- displays available or queried, as described below.+--+-- - @pDisplays@ is either @NULL@ or a pointer to an array of+-- 'Graphics.Vulkan.Extensions.Handles.DisplayKHR' handles.+--+-- = Description+--+-- If @pDisplays@ is @NULL@, then the number of displays usable with the+-- specified @planeIndex@ for+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is returned in+-- @pDisplayCount@. Otherwise, @pDisplayCount@ /must/ point to a variable+-- set by the user to the number of elements in the @pDisplays@ array, and+-- on return the variable is overwritten with the number of handles+-- actually written to @pDisplays@. If the value of @pDisplayCount@ is less+-- than the number of display planes for+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice', at most @pDisplayCount@+-- handles will be written. If @pDisplayCount@ is smaller than the number+-- of displays usable with the specified @planeIndex@ for+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned+-- instead of 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' to indicate+-- that not all the available values were returned.+--+-- == Valid Usage+--+-- - @planeIndex@ /must/ be less than the number of display planes+-- supported by the device as determined by calling+-- 'getPhysicalDeviceDisplayPlanePropertiesKHR'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @pDisplayCount@ /must/ be a valid pointer to a @uint32_t@ value+--+-- - If the value referenced by @pDisplayCount@ is not @0@, and+-- @pDisplays@ is not @NULL@, @pDisplays@ /must/ be a valid pointer to+-- an array of @pDisplayCount@+-- 'Graphics.Vulkan.Extensions.Handles.DisplayKHR' handles+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.DisplayKHR',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+getDisplayPlaneSupportedDisplaysKHR :: PhysicalDevice -> ("planeIndex" ::: Word32) -> IO (Result, ("displays" ::: Vector DisplayKHR))+getDisplayPlaneSupportedDisplaysKHR physicalDevice planeIndex = evalContT $ do+ let vkGetDisplayPlaneSupportedDisplaysKHR' = mkVkGetDisplayPlaneSupportedDisplaysKHR (pVkGetDisplayPlaneSupportedDisplaysKHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pPDisplayCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkGetDisplayPlaneSupportedDisplaysKHR' physicalDevice' (planeIndex) (pPDisplayCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pDisplayCount <- lift $ peek @Word32 pPDisplayCount+ pPDisplays <- ContT $ bracket (callocBytes @DisplayKHR ((fromIntegral (pDisplayCount)) * 8)) free+ r' <- lift $ vkGetDisplayPlaneSupportedDisplaysKHR' physicalDevice' (planeIndex) (pPDisplayCount) (pPDisplays)+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pDisplayCount' <- lift $ peek @Word32 pPDisplayCount+ pDisplays' <- lift $ generateM (fromIntegral (pDisplayCount')) (\i -> peek @DisplayKHR ((pPDisplays `advancePtrBytes` (8 * (i)) :: Ptr DisplayKHR)))+ pure $ ((r'), pDisplays')+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetDisplayModePropertiesKHR+ :: FunPtr (Ptr PhysicalDevice_T -> DisplayKHR -> Ptr Word32 -> Ptr DisplayModePropertiesKHR -> IO Result) -> Ptr PhysicalDevice_T -> DisplayKHR -> Ptr Word32 -> Ptr DisplayModePropertiesKHR -> IO Result++-- | vkGetDisplayModePropertiesKHR - Query the set of mode properties+-- supported by the display+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device associated with+-- 'Graphics.Vulkan.Extensions.WSITypes.Display'.+--+-- - 'Graphics.Vulkan.Extensions.WSITypes.Display' is the display to+-- query.+--+-- - @pPropertyCount@ is a pointer to an integer related to the number of+-- display modes available or queried, as described below.+--+-- - @pProperties@ is either @NULL@ or a pointer to an array of+-- 'DisplayModePropertiesKHR' structures.+--+-- = Description+--+-- If @pProperties@ is @NULL@, then the number of display modes available+-- on the specified 'Graphics.Vulkan.Extensions.WSITypes.Display' for+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is returned in+-- @pPropertyCount@. Otherwise, @pPropertyCount@ /must/ point to a variable+-- set by the user to the number of elements in the @pProperties@ array,+-- and on return the variable is overwritten with the number of structures+-- actually written to @pProperties@. If the value of @pPropertyCount@ is+-- less than the number of display modes for+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice', at most+-- @pPropertyCount@ structures will be written. If @pPropertyCount@ is+-- smaller than the number of display modes available on the specified+-- 'Graphics.Vulkan.Extensions.WSITypes.Display' for+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned+-- instead of 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' to indicate+-- that not all the available values were returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - 'Graphics.Vulkan.Extensions.WSITypes.Display' /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.DisplayKHR' handle+--+-- - @pPropertyCount@ /must/ be a valid pointer to a @uint32_t@ value+--+-- - If the value referenced by @pPropertyCount@ is not @0@, and+-- @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer+-- to an array of @pPropertyCount@ 'DisplayModePropertiesKHR'+-- structures+--+-- - 'Graphics.Vulkan.Extensions.WSITypes.Display' /must/ have been+-- created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.DisplayKHR',+-- 'DisplayModePropertiesKHR',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+getDisplayModePropertiesKHR :: PhysicalDevice -> DisplayKHR -> IO (Result, ("properties" ::: Vector DisplayModePropertiesKHR))+getDisplayModePropertiesKHR physicalDevice display = evalContT $ do+ let vkGetDisplayModePropertiesKHR' = mkVkGetDisplayModePropertiesKHR (pVkGetDisplayModePropertiesKHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pPPropertyCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkGetDisplayModePropertiesKHR' physicalDevice' (display) (pPPropertyCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pPropertyCount <- lift $ peek @Word32 pPPropertyCount+ pPProperties <- ContT $ bracket (callocBytes @DisplayModePropertiesKHR ((fromIntegral (pPropertyCount)) * 24)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPProperties `advancePtrBytes` (i * 24) :: Ptr DisplayModePropertiesKHR) . ($ ())) [0..(fromIntegral (pPropertyCount)) - 1]+ r' <- lift $ vkGetDisplayModePropertiesKHR' physicalDevice' (display) (pPPropertyCount) ((pPProperties))+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pPropertyCount' <- lift $ peek @Word32 pPPropertyCount+ pProperties' <- lift $ generateM (fromIntegral (pPropertyCount')) (\i -> peekCStruct @DisplayModePropertiesKHR (((pPProperties) `advancePtrBytes` (24 * (i)) :: Ptr DisplayModePropertiesKHR)))+ pure $ ((r'), pProperties')+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateDisplayModeKHR+ :: FunPtr (Ptr PhysicalDevice_T -> DisplayKHR -> Ptr DisplayModeCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr DisplayModeKHR -> IO Result) -> Ptr PhysicalDevice_T -> DisplayKHR -> Ptr DisplayModeCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr DisplayModeKHR -> IO Result++-- | vkCreateDisplayModeKHR - Create a display mode+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device associated with+-- 'Graphics.Vulkan.Extensions.WSITypes.Display'.+--+-- - 'Graphics.Vulkan.Extensions.WSITypes.Display' is the display to+-- create an additional mode for.+--+-- - @pCreateInfo@ is a 'DisplayModeCreateInfoKHR' structure describing+-- the new mode to create.+--+-- - @pAllocator@ is the allocator used for host memory allocated for the+-- display mode object when there is no more specific allocator+-- available (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).+--+-- - @pMode@ returns the handle of the mode created.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - 'Graphics.Vulkan.Extensions.WSITypes.Display' /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.DisplayKHR' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'DisplayModeCreateInfoKHR' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pMode@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.DisplayModeKHR' handle+--+-- - 'Graphics.Vulkan.Extensions.WSITypes.Display' /must/ have been+-- created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Extensions.WSITypes.Display' /must/+-- be externally synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Extensions.Handles.DisplayKHR',+-- 'DisplayModeCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.Handles.DisplayModeKHR',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+createDisplayModeKHR :: PhysicalDevice -> DisplayKHR -> DisplayModeCreateInfoKHR -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (DisplayModeKHR)+createDisplayModeKHR physicalDevice display createInfo allocator = evalContT $ do+ let vkCreateDisplayModeKHR' = mkVkCreateDisplayModeKHR (pVkCreateDisplayModeKHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPMode <- ContT $ bracket (callocBytes @DisplayModeKHR 8) free+ r <- lift $ vkCreateDisplayModeKHR' (physicalDeviceHandle (physicalDevice)) (display) pCreateInfo pAllocator (pPMode)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pMode <- lift $ peek @DisplayModeKHR pPMode+ pure $ (pMode)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetDisplayPlaneCapabilitiesKHR+ :: FunPtr (Ptr PhysicalDevice_T -> DisplayModeKHR -> Word32 -> Ptr DisplayPlaneCapabilitiesKHR -> IO Result) -> Ptr PhysicalDevice_T -> DisplayModeKHR -> Word32 -> Ptr DisplayPlaneCapabilitiesKHR -> IO Result++-- | vkGetDisplayPlaneCapabilitiesKHR - Query capabilities of a mode and+-- plane combination+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device associated with 'Graphics.Vulkan.Extensions.WSITypes.Display'+--+-- - @mode@ is the display mode the application intends to program when+-- using the specified plane. Note this parameter also implicitly+-- specifies a display.+--+-- - @planeIndex@ is the plane which the application intends to use with+-- the display, and is less than the number of display planes supported+-- by the device.+--+-- - @pCapabilities@ is a pointer to a 'DisplayPlaneCapabilitiesKHR'+-- structure in which the capabilities are returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @mode@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.DisplayModeKHR' handle+--+-- - @pCapabilities@ /must/ be a valid pointer to a+-- 'DisplayPlaneCapabilitiesKHR' structure+--+-- == Host Synchronization+--+-- - Host access to @mode@ /must/ be externally synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.DisplayModeKHR',+-- 'DisplayPlaneCapabilitiesKHR',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+getDisplayPlaneCapabilitiesKHR :: PhysicalDevice -> DisplayModeKHR -> ("planeIndex" ::: Word32) -> IO (DisplayPlaneCapabilitiesKHR)+getDisplayPlaneCapabilitiesKHR physicalDevice mode planeIndex = evalContT $ do+ let vkGetDisplayPlaneCapabilitiesKHR' = mkVkGetDisplayPlaneCapabilitiesKHR (pVkGetDisplayPlaneCapabilitiesKHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ pPCapabilities <- ContT (withZeroCStruct @DisplayPlaneCapabilitiesKHR)+ r <- lift $ vkGetDisplayPlaneCapabilitiesKHR' (physicalDeviceHandle (physicalDevice)) (mode) (planeIndex) (pPCapabilities)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pCapabilities <- lift $ peekCStruct @DisplayPlaneCapabilitiesKHR pPCapabilities+ pure $ (pCapabilities)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateDisplayPlaneSurfaceKHR+ :: FunPtr (Ptr Instance_T -> Ptr DisplaySurfaceCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result) -> Ptr Instance_T -> Ptr DisplaySurfaceCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result++-- | vkCreateDisplayPlaneSurfaceKHR - Create a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' structure representing a+-- display plane and mode+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' is the instance+-- corresponding to the physical device the targeted display is on.+--+-- - @pCreateInfo@ is a pointer to a 'DisplaySurfaceCreateInfoKHR'+-- structure specifying which mode, plane, and other parameters to use,+-- as described below.+--+-- - @pAllocator@ is the allocator used for host memory allocated for the+-- surface object when there is no more specific allocator available+-- (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).+--+-- - @pSurface@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle in which the+-- created surface is returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'DisplaySurfaceCreateInfoKHR' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pSurface@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'DisplaySurfaceCreateInfoKHR',+-- 'Graphics.Vulkan.Core10.Handles.Instance',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR'+createDisplayPlaneSurfaceKHR :: Instance -> DisplaySurfaceCreateInfoKHR -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (SurfaceKHR)+createDisplayPlaneSurfaceKHR instance' createInfo allocator = evalContT $ do+ let vkCreateDisplayPlaneSurfaceKHR' = mkVkCreateDisplayPlaneSurfaceKHR (pVkCreateDisplayPlaneSurfaceKHR (instanceCmds (instance' :: Instance)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPSurface <- ContT $ bracket (callocBytes @SurfaceKHR 8) free+ r <- lift $ vkCreateDisplayPlaneSurfaceKHR' (instanceHandle (instance')) pCreateInfo pAllocator (pPSurface)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSurface <- lift $ peek @SurfaceKHR pPSurface+ pure $ (pSurface)+++-- | VkDisplayPropertiesKHR - Structure describing an available display+-- device+--+-- = Description+--+-- Note+--+-- For devices which have no natural value to return here, implementations+-- /should/ return the maximum resolution supported.+--+-- Note+--+-- Persistent presents /may/ have higher latency, and /may/ use less power+-- when the screen content is updated infrequently, or when only a portion+-- of the screen needs to be updated in most frames.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Extensions.Handles.DisplayKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayProperties2KHR',+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent2D',+-- 'SurfaceTransformFlagsKHR', 'getPhysicalDeviceDisplayPropertiesKHR'+data DisplayPropertiesKHR = DisplayPropertiesKHR+ { -- | 'Graphics.Vulkan.Extensions.WSITypes.Display' is a handle that is used+ -- to refer to the display described here. This handle will be valid for+ -- the lifetime of the Vulkan instance.+ display :: DisplayKHR+ , -- | @displayName@ is a pointer to a null-terminated UTF-8 string containing+ -- the name of the display. Generally, this will be the name provided by+ -- the display’s EDID. It /can/ be @NULL@ if no suitable name is available.+ -- If not @NULL@, the memory it points to /must/ remain accessible as long+ -- as 'Graphics.Vulkan.Extensions.WSITypes.Display' is valid.+ displayName :: ByteString+ , -- | @physicalDimensions@ describes the physical width and height of the+ -- visible portion of the display, in millimeters.+ physicalDimensions :: Extent2D+ , -- | @physicalResolution@ describes the physical, native, or preferred+ -- resolution of the display.+ physicalResolution :: Extent2D+ , -- | @supportedTransforms@ is a bitmask of 'SurfaceTransformFlagBitsKHR'+ -- describing which transforms are supported by this display.+ supportedTransforms :: SurfaceTransformFlagsKHR+ , -- | @planeReorderPossible@ tells whether the planes on this display /can/+ -- have their z order changed. If this is+ -- 'Graphics.Vulkan.Core10.BaseType.TRUE', the application /can/ re-arrange+ -- the planes on this display in any order relative to each other.+ planeReorderPossible :: Bool+ , -- | @persistentContent@ tells whether the display supports+ -- self-refresh\/internal buffering. If this is true, the application /can/+ -- submit persistent present operations on swapchains created against this+ -- display.+ persistentContent :: Bool+ }+ deriving (Typeable)+deriving instance Show DisplayPropertiesKHR++instance ToCStruct DisplayPropertiesKHR where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DisplayPropertiesKHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr DisplayKHR)) (display)+ displayName'' <- ContT $ useAsCString (displayName)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr CChar))) displayName''+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (physicalDimensions) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent2D)) (physicalResolution) . ($ ())+ lift $ poke ((p `plusPtr` 32 :: Ptr SurfaceTransformFlagsKHR)) (supportedTransforms)+ lift $ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (planeReorderPossible))+ lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (persistentContent))+ lift $ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr DisplayKHR)) (zero)+ displayName'' <- ContT $ useAsCString (mempty)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr CChar))) displayName''+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent2D)) (zero) . ($ ())+ lift $ poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ f++instance FromCStruct DisplayPropertiesKHR where+ peekCStruct p = do+ display <- peek @DisplayKHR ((p `plusPtr` 0 :: Ptr DisplayKHR))+ displayName <- packCString =<< peek ((p `plusPtr` 8 :: Ptr (Ptr CChar)))+ physicalDimensions <- peekCStruct @Extent2D ((p `plusPtr` 16 :: Ptr Extent2D))+ physicalResolution <- peekCStruct @Extent2D ((p `plusPtr` 24 :: Ptr Extent2D))+ supportedTransforms <- peek @SurfaceTransformFlagsKHR ((p `plusPtr` 32 :: Ptr SurfaceTransformFlagsKHR))+ planeReorderPossible <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))+ persistentContent <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))+ pure $ DisplayPropertiesKHR+ display displayName physicalDimensions physicalResolution supportedTransforms (bool32ToBool planeReorderPossible) (bool32ToBool persistentContent)++instance Zero DisplayPropertiesKHR where+ zero = DisplayPropertiesKHR+ zero+ mempty+ zero+ zero+ zero+ zero+ zero+++-- | VkDisplayPlanePropertiesKHR - Structure describing display plane+-- properties+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.DisplayKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayPlaneProperties2KHR',+-- 'getPhysicalDeviceDisplayPlanePropertiesKHR'+data DisplayPlanePropertiesKHR = DisplayPlanePropertiesKHR+ { -- | @currentDisplay@ is the handle of the display the plane is currently+ -- associated with. If the plane is not currently attached to any displays,+ -- this will be 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'.+ currentDisplay :: DisplayKHR+ , -- | @currentStackIndex@ is the current z-order of the plane. This will be+ -- between 0 and the value returned by+ -- 'getPhysicalDeviceDisplayPlanePropertiesKHR' in @pPropertyCount@.+ currentStackIndex :: Word32+ }+ deriving (Typeable)+deriving instance Show DisplayPlanePropertiesKHR++instance ToCStruct DisplayPlanePropertiesKHR where+ withCStruct x f = allocaBytesAligned 16 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DisplayPlanePropertiesKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr DisplayKHR)) (currentDisplay)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (currentStackIndex)+ f+ cStructSize = 16+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr DisplayKHR)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+ f++instance FromCStruct DisplayPlanePropertiesKHR where+ peekCStruct p = do+ currentDisplay <- peek @DisplayKHR ((p `plusPtr` 0 :: Ptr DisplayKHR))+ currentStackIndex <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ pure $ DisplayPlanePropertiesKHR+ currentDisplay currentStackIndex++instance Storable DisplayPlanePropertiesKHR where+ sizeOf ~_ = 16+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DisplayPlanePropertiesKHR where+ zero = DisplayPlanePropertiesKHR+ zero+ zero+++-- | VkDisplayModeParametersKHR - Structure describing display parameters+-- associated with a display mode+--+-- = Description+--+-- Note+--+-- For example, a 60Hz display mode would report a @refreshRate@ of 60,000.+--+-- == Valid Usage+--+-- - The @width@ member of @visibleRegion@ /must/ be greater than @0@+--+-- - The @height@ member of @visibleRegion@ /must/ be greater than @0@+--+-- - @refreshRate@ /must/ be greater than @0@+--+-- = See Also+--+-- 'DisplayModeCreateInfoKHR', 'DisplayModePropertiesKHR',+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent2D'+data DisplayModeParametersKHR = DisplayModeParametersKHR+ { -- | @visibleRegion@ is the 2D extents of the visible region.+ visibleRegion :: Extent2D+ , -- | @refreshRate@ is a @uint32_t@ that is the number of times the display is+ -- refreshed each second multiplied by 1000.+ refreshRate :: Word32+ }+ deriving (Typeable)+deriving instance Show DisplayModeParametersKHR++instance ToCStruct DisplayModeParametersKHR where+ withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DisplayModeParametersKHR{..} f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Extent2D)) (visibleRegion) . ($ ())+ lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (refreshRate)+ lift $ f+ cStructSize = 12+ cStructAlignment = 4+ pokeZeroCStruct p f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Extent2D)) (zero) . ($ ())+ lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+ lift $ f++instance FromCStruct DisplayModeParametersKHR where+ peekCStruct p = do+ visibleRegion <- peekCStruct @Extent2D ((p `plusPtr` 0 :: Ptr Extent2D))+ refreshRate <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ pure $ DisplayModeParametersKHR+ visibleRegion refreshRate++instance Zero DisplayModeParametersKHR where+ zero = DisplayModeParametersKHR+ zero+ zero+++-- | VkDisplayModePropertiesKHR - Structure describing display mode+-- properties+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.DisplayModeKHR',+-- 'DisplayModeParametersKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayModeProperties2KHR',+-- 'getDisplayModePropertiesKHR'+data DisplayModePropertiesKHR = DisplayModePropertiesKHR+ { -- | @displayMode@ is a handle to the display mode described in this+ -- structure. This handle will be valid for the lifetime of the Vulkan+ -- instance.+ displayMode :: DisplayModeKHR+ , -- | @parameters@ is a 'DisplayModeParametersKHR' structure describing the+ -- display parameters associated with @displayMode@.+ parameters :: DisplayModeParametersKHR+ }+ deriving (Typeable)+deriving instance Show DisplayModePropertiesKHR++instance ToCStruct DisplayModePropertiesKHR where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DisplayModePropertiesKHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr DisplayModeKHR)) (displayMode)+ ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr DisplayModeParametersKHR)) (parameters) . ($ ())+ lift $ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr DisplayModeKHR)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr DisplayModeParametersKHR)) (zero) . ($ ())+ lift $ f++instance FromCStruct DisplayModePropertiesKHR where+ peekCStruct p = do+ displayMode <- peek @DisplayModeKHR ((p `plusPtr` 0 :: Ptr DisplayModeKHR))+ parameters <- peekCStruct @DisplayModeParametersKHR ((p `plusPtr` 8 :: Ptr DisplayModeParametersKHR))+ pure $ DisplayModePropertiesKHR+ displayMode parameters++instance Zero DisplayModePropertiesKHR where+ zero = DisplayModePropertiesKHR+ zero+ zero+++-- | VkDisplayModeCreateInfoKHR - Structure specifying parameters of a newly+-- created display mode object+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'DisplayModeCreateFlagsKHR', 'DisplayModeParametersKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createDisplayModeKHR'+data DisplayModeCreateInfoKHR = DisplayModeCreateInfoKHR+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+ flags :: DisplayModeCreateFlagsKHR+ , -- | @parameters@ /must/ be a valid 'DisplayModeParametersKHR' structure+ parameters :: DisplayModeParametersKHR+ }+ deriving (Typeable)+deriving instance Show DisplayModeCreateInfoKHR++instance ToCStruct DisplayModeCreateInfoKHR where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DisplayModeCreateInfoKHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr DisplayModeCreateFlagsKHR)) (flags)+ ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr DisplayModeParametersKHR)) (parameters) . ($ ())+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr DisplayModeParametersKHR)) (zero) . ($ ())+ lift $ f++instance FromCStruct DisplayModeCreateInfoKHR where+ peekCStruct p = do+ flags <- peek @DisplayModeCreateFlagsKHR ((p `plusPtr` 16 :: Ptr DisplayModeCreateFlagsKHR))+ parameters <- peekCStruct @DisplayModeParametersKHR ((p `plusPtr` 20 :: Ptr DisplayModeParametersKHR))+ pure $ DisplayModeCreateInfoKHR+ flags parameters++instance Zero DisplayModeCreateInfoKHR where+ zero = DisplayModeCreateInfoKHR+ zero+ zero+++-- | VkDisplayPlaneCapabilitiesKHR - Structure describing capabilities of a+-- mode and plane combination+--+-- = Description+--+-- The minimum and maximum position and extent fields describe the+-- implementation limits, if any, as they apply to the specified display+-- mode and plane. Vendors /may/ support displaying a subset of a+-- swapchain’s presentable images on the specified display plane. This is+-- expressed by returning @minSrcPosition@, @maxSrcPosition@,+-- @minSrcExtent@, and @maxSrcExtent@ values that indicate a range of+-- possible positions and sizes /may/ be used to specify the region within+-- the presentable images that source pixels will be read from when+-- creating a swapchain on the specified display mode and plane.+--+-- Vendors /may/ also support mapping the presentable images’ content to a+-- subset or superset of the visible region in the specified display mode.+-- This is expressed by returning @minDstPosition@, @maxDstPosition@,+-- @minDstExtent@ and @maxDstExtent@ values that indicate a range of+-- possible positions and sizes /may/ be used to describe the region within+-- the display mode that the source pixels will be mapped to.+--+-- Other vendors /may/ support only a 1-1 mapping between pixels in the+-- presentable images and the display mode. This /may/ be indicated by+-- returning (0,0) for @minSrcPosition@, @maxSrcPosition@,+-- @minDstPosition@, and @maxDstPosition@, and (display mode width, display+-- mode height) for @minSrcExtent@, @maxSrcExtent@, @minDstExtent@, and+-- @maxDstExtent@.+--+-- These values indicate the limits of the implementation’s individual+-- fields. Not all combinations of values within the offset and extent+-- ranges returned in 'DisplayPlaneCapabilitiesKHR' are guaranteed to be+-- supported. Presentation requests specifying unsupported combinations+-- /may/ fail.+--+-- = See Also+--+-- 'DisplayPlaneAlphaFlagsKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2.DisplayPlaneCapabilities2KHR',+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent2D',+-- 'Graphics.Vulkan.Core10.SharedTypes.Offset2D',+-- 'getDisplayPlaneCapabilitiesKHR'+data DisplayPlaneCapabilitiesKHR = DisplayPlaneCapabilitiesKHR+ { -- | @supportedAlpha@ is a bitmask of 'DisplayPlaneAlphaFlagBitsKHR'+ -- describing the supported alpha blending modes.+ supportedAlpha :: DisplayPlaneAlphaFlagsKHR+ , -- | @minSrcPosition@ is the minimum source rectangle offset supported by+ -- this plane using the specified mode.+ minSrcPosition :: Offset2D+ , -- | @maxSrcPosition@ is the maximum source rectangle offset supported by+ -- this plane using the specified mode. The @x@ and @y@ components of+ -- @maxSrcPosition@ /must/ each be greater than or equal to the @x@ and @y@+ -- components of @minSrcPosition@, respectively.+ maxSrcPosition :: Offset2D+ , -- | @minSrcExtent@ is the minimum source rectangle size supported by this+ -- plane using the specified mode.+ minSrcExtent :: Extent2D+ , -- | @maxSrcExtent@ is the maximum source rectangle size supported by this+ -- plane using the specified mode.+ maxSrcExtent :: Extent2D+ , -- | @minDstPosition@, @maxDstPosition@, @minDstExtent@, @maxDstExtent@ all+ -- have similar semantics to their corresponding @*Src*@ equivalents, but+ -- apply to the output region within the mode rather than the input region+ -- within the source image. Unlike the @*Src*@ offsets, @minDstPosition@+ -- and @maxDstPosition@ /may/ contain negative values.+ minDstPosition :: Offset2D+ , -- No documentation found for Nested "VkDisplayPlaneCapabilitiesKHR" "maxDstPosition"+ maxDstPosition :: Offset2D+ , -- No documentation found for Nested "VkDisplayPlaneCapabilitiesKHR" "minDstExtent"+ minDstExtent :: Extent2D+ , -- No documentation found for Nested "VkDisplayPlaneCapabilitiesKHR" "maxDstExtent"+ maxDstExtent :: Extent2D+ }+ deriving (Typeable)+deriving instance Show DisplayPlaneCapabilitiesKHR++instance ToCStruct DisplayPlaneCapabilitiesKHR where+ withCStruct x f = allocaBytesAligned 68 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DisplayPlaneCapabilitiesKHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr DisplayPlaneAlphaFlagsKHR)) (supportedAlpha)+ ContT $ pokeCStruct ((p `plusPtr` 4 :: Ptr Offset2D)) (minSrcPosition) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 12 :: Ptr Offset2D)) (maxSrcPosition) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr Extent2D)) (minSrcExtent) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 28 :: Ptr Extent2D)) (maxSrcExtent) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 36 :: Ptr Offset2D)) (minDstPosition) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr Offset2D)) (maxDstPosition) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 52 :: Ptr Extent2D)) (minDstExtent) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 60 :: Ptr Extent2D)) (maxDstExtent) . ($ ())+ lift $ f+ cStructSize = 68+ cStructAlignment = 4+ pokeZeroCStruct p f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 4 :: Ptr Offset2D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 12 :: Ptr Offset2D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr Extent2D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 28 :: Ptr Extent2D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 36 :: Ptr Offset2D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr Offset2D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 52 :: Ptr Extent2D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 60 :: Ptr Extent2D)) (zero) . ($ ())+ lift $ f++instance FromCStruct DisplayPlaneCapabilitiesKHR where+ peekCStruct p = do+ supportedAlpha <- peek @DisplayPlaneAlphaFlagsKHR ((p `plusPtr` 0 :: Ptr DisplayPlaneAlphaFlagsKHR))+ minSrcPosition <- peekCStruct @Offset2D ((p `plusPtr` 4 :: Ptr Offset2D))+ maxSrcPosition <- peekCStruct @Offset2D ((p `plusPtr` 12 :: Ptr Offset2D))+ minSrcExtent <- peekCStruct @Extent2D ((p `plusPtr` 20 :: Ptr Extent2D))+ maxSrcExtent <- peekCStruct @Extent2D ((p `plusPtr` 28 :: Ptr Extent2D))+ minDstPosition <- peekCStruct @Offset2D ((p `plusPtr` 36 :: Ptr Offset2D))+ maxDstPosition <- peekCStruct @Offset2D ((p `plusPtr` 44 :: Ptr Offset2D))+ minDstExtent <- peekCStruct @Extent2D ((p `plusPtr` 52 :: Ptr Extent2D))+ maxDstExtent <- peekCStruct @Extent2D ((p `plusPtr` 60 :: Ptr Extent2D))+ pure $ DisplayPlaneCapabilitiesKHR+ supportedAlpha minSrcPosition maxSrcPosition minSrcExtent maxSrcExtent minDstPosition maxDstPosition minDstExtent maxDstExtent++instance Zero DisplayPlaneCapabilitiesKHR where+ zero = DisplayPlaneCapabilitiesKHR+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkDisplaySurfaceCreateInfoKHR - Structure specifying parameters of a+-- newly created display plane surface object+--+-- = Description+--+-- Note+--+-- Creating a display surface /must/ not modify the state of the displays,+-- planes, or other resources it names. For example, it /must/ not apply+-- the specified mode to be set on the associated display. Application of+-- display configuration occurs as a side effect of presenting to a display+-- surface.+--+-- == Valid Usage+--+-- - @planeIndex@ /must/ be less than the number of display planes+-- supported by the device as determined by calling+-- 'getPhysicalDeviceDisplayPlanePropertiesKHR'+--+-- - If the @planeReorderPossible@ member of the 'DisplayPropertiesKHR'+-- structure returned by 'getPhysicalDeviceDisplayPropertiesKHR' for+-- the display corresponding to @displayMode@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE' then @planeStackIndex@ /must/+-- be less than the number of display planes supported by the device as+-- determined by calling 'getPhysicalDeviceDisplayPlanePropertiesKHR';+-- otherwise @planeStackIndex@ /must/ equal the @currentStackIndex@+-- member of 'DisplayPlanePropertiesKHR' returned by+-- 'getPhysicalDeviceDisplayPlanePropertiesKHR' for the display plane+-- corresponding to @displayMode@+--+-- - If @alphaMode@ is 'DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR' then+-- @globalAlpha@ /must/ be between @0@ and @1@, inclusive+--+-- - @alphaMode@ /must/ be @0@ or one of the bits present in the+-- @supportedAlpha@ member of 'DisplayPlaneCapabilitiesKHR' returned by+-- 'getDisplayPlaneCapabilitiesKHR' for the display plane corresponding+-- to @displayMode@+--+-- - The @width@ and @height@ members of @imageExtent@ /must/ be less+-- than the @maxImageDimensions2D@ member of+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR'+--+-- - @pNext@ /must/ be @NULL@+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+--+-- - @displayMode@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.DisplayModeKHR' handle+--+-- - @transform@ /must/ be a valid 'SurfaceTransformFlagBitsKHR' value+--+-- - @alphaMode@ /must/ be a valid 'DisplayPlaneAlphaFlagBitsKHR' value+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.DisplayModeKHR',+-- 'DisplayPlaneAlphaFlagBitsKHR', 'DisplaySurfaceCreateFlagsKHR',+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent2D',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'SurfaceTransformFlagBitsKHR', 'createDisplayPlaneSurfaceKHR'+data DisplaySurfaceCreateInfoKHR = DisplaySurfaceCreateInfoKHR+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use, and+ -- /must/ be zero.+ flags :: DisplaySurfaceCreateFlagsKHR+ , -- | @displayMode@ is a 'Graphics.Vulkan.Extensions.Handles.DisplayModeKHR'+ -- handle specifying the mode to use when displaying this surface.+ displayMode :: DisplayModeKHR+ , -- | @planeIndex@ is the plane on which this surface appears.+ planeIndex :: Word32+ , -- | @planeStackIndex@ is the z-order of the plane.+ planeStackIndex :: Word32+ , -- | @transform@ is a 'SurfaceTransformFlagBitsKHR' value specifying the+ -- transformation to apply to images as part of the scanout operation.+ transform :: SurfaceTransformFlagBitsKHR+ , -- | @globalAlpha@ is the global alpha value. This value is ignored if+ -- @alphaMode@ is not 'DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR'.+ globalAlpha :: Float+ , -- | @alphaMode@ is a 'DisplayPlaneAlphaFlagBitsKHR' value specifying the+ -- type of alpha blending to use.+ alphaMode :: DisplayPlaneAlphaFlagBitsKHR+ , -- | @imageExtent@ The size of the presentable images to use with the+ -- surface.+ imageExtent :: Extent2D+ }+ deriving (Typeable)+deriving instance Show DisplaySurfaceCreateInfoKHR++instance ToCStruct DisplaySurfaceCreateInfoKHR where+ withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DisplaySurfaceCreateInfoKHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr DisplaySurfaceCreateFlagsKHR)) (flags)+ lift $ poke ((p `plusPtr` 24 :: Ptr DisplayModeKHR)) (displayMode)+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (planeIndex)+ lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (planeStackIndex)+ lift $ poke ((p `plusPtr` 40 :: Ptr SurfaceTransformFlagBitsKHR)) (transform)+ lift $ poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (globalAlpha))+ lift $ poke ((p `plusPtr` 48 :: Ptr DisplayPlaneAlphaFlagBitsKHR)) (alphaMode)+ ContT $ pokeCStruct ((p `plusPtr` 52 :: Ptr Extent2D)) (imageExtent) . ($ ())+ lift $ f+ cStructSize = 64+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 24 :: Ptr DisplayModeKHR)) (zero)+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 40 :: Ptr SurfaceTransformFlagBitsKHR)) (zero)+ lift $ poke ((p `plusPtr` 44 :: Ptr CFloat)) (CFloat (zero))+ lift $ poke ((p `plusPtr` 48 :: Ptr DisplayPlaneAlphaFlagBitsKHR)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 52 :: Ptr Extent2D)) (zero) . ($ ())+ lift $ f++instance FromCStruct DisplaySurfaceCreateInfoKHR where+ peekCStruct p = do+ flags <- peek @DisplaySurfaceCreateFlagsKHR ((p `plusPtr` 16 :: Ptr DisplaySurfaceCreateFlagsKHR))+ displayMode <- peek @DisplayModeKHR ((p `plusPtr` 24 :: Ptr DisplayModeKHR))+ planeIndex <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ planeStackIndex <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))+ transform <- peek @SurfaceTransformFlagBitsKHR ((p `plusPtr` 40 :: Ptr SurfaceTransformFlagBitsKHR))+ globalAlpha <- peek @CFloat ((p `plusPtr` 44 :: Ptr CFloat))+ alphaMode <- peek @DisplayPlaneAlphaFlagBitsKHR ((p `plusPtr` 48 :: Ptr DisplayPlaneAlphaFlagBitsKHR))+ imageExtent <- peekCStruct @Extent2D ((p `plusPtr` 52 :: Ptr Extent2D))+ pure $ DisplaySurfaceCreateInfoKHR+ flags displayMode planeIndex planeStackIndex transform ((\(CFloat a) -> a) globalAlpha) alphaMode imageExtent++instance Zero DisplaySurfaceCreateInfoKHR where+ zero = DisplaySurfaceCreateInfoKHR+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkDisplayModeCreateFlagsKHR - Reserved for future use+--+-- = Description+--+-- 'DisplayModeCreateFlagsKHR' is a bitmask type for setting a mask, but is+-- currently reserved for future use.+--+-- = See Also+--+-- 'DisplayModeCreateInfoKHR'+newtype DisplayModeCreateFlagsKHR = DisplayModeCreateFlagsKHR Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show DisplayModeCreateFlagsKHR where+ showsPrec p = \case+ DisplayModeCreateFlagsKHR x -> showParen (p >= 11) (showString "DisplayModeCreateFlagsKHR 0x" . showHex x)++instance Read DisplayModeCreateFlagsKHR where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "DisplayModeCreateFlagsKHR")+ v <- step readPrec+ pure (DisplayModeCreateFlagsKHR v)))+++-- | VkDisplaySurfaceCreateFlagsKHR - Reserved for future use+--+-- = Description+--+-- 'DisplaySurfaceCreateFlagsKHR' is a bitmask type for setting a mask, but+-- is currently reserved for future use.+--+-- = See Also+--+-- 'DisplaySurfaceCreateInfoKHR'+newtype DisplaySurfaceCreateFlagsKHR = DisplaySurfaceCreateFlagsKHR Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show DisplaySurfaceCreateFlagsKHR where+ showsPrec p = \case+ DisplaySurfaceCreateFlagsKHR x -> showParen (p >= 11) (showString "DisplaySurfaceCreateFlagsKHR 0x" . showHex x)++instance Read DisplaySurfaceCreateFlagsKHR where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "DisplaySurfaceCreateFlagsKHR")+ v <- step readPrec+ pure (DisplaySurfaceCreateFlagsKHR v)))+++-- | VkDisplayPlaneAlphaFlagBitsKHR - Alpha blending type+--+-- = See Also+--+-- 'DisplayPlaneAlphaFlagsKHR', 'DisplaySurfaceCreateInfoKHR'+newtype DisplayPlaneAlphaFlagBitsKHR = DisplayPlaneAlphaFlagBitsKHR Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR' specifies that the source image+-- will be treated as opaque.+pattern DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = DisplayPlaneAlphaFlagBitsKHR 0x00000001+-- | 'DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR' specifies that a global alpha value+-- /must/ be specified that will be applied to all pixels in the source+-- image.+pattern DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = DisplayPlaneAlphaFlagBitsKHR 0x00000002+-- | 'DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR' specifies that the alpha value+-- will be determined by the alpha channel of the source image’s pixels. If+-- the source format contains no alpha values, no blending will be applied.+-- The source alpha values are not premultiplied into the source image’s+-- other color channels.+pattern DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = DisplayPlaneAlphaFlagBitsKHR 0x00000004+-- | 'DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR' is equivalent to+-- 'DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR', except the source alpha values+-- are assumed to be premultiplied into the source image’s other color+-- channels.+pattern DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = DisplayPlaneAlphaFlagBitsKHR 0x00000008++type DisplayPlaneAlphaFlagsKHR = DisplayPlaneAlphaFlagBitsKHR++instance Show DisplayPlaneAlphaFlagBitsKHR where+ showsPrec p = \case+ DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR -> showString "DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"+ DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR -> showString "DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"+ DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR -> showString "DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"+ DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR -> showString "DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"+ DisplayPlaneAlphaFlagBitsKHR x -> showParen (p >= 11) (showString "DisplayPlaneAlphaFlagBitsKHR 0x" . showHex x)++instance Read DisplayPlaneAlphaFlagBitsKHR where+ readPrec = parens (choose [("DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR", pure DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR)+ , ("DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR", pure DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR)+ , ("DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR", pure DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR)+ , ("DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR", pure DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR)]+ ++++ prec 10 (do+ expectP (Ident "DisplayPlaneAlphaFlagBitsKHR")+ v <- step readPrec+ pure (DisplayPlaneAlphaFlagBitsKHR v)))+++-- | VkSurfaceTransformFlagBitsKHR - presentation transforms supported on a+-- device+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM',+-- 'DisplaySurfaceCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCapabilities2EXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR',+-- 'SurfaceTransformFlagsKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'+newtype SurfaceTransformFlagBitsKHR = SurfaceTransformFlagBitsKHR Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'SURFACE_TRANSFORM_IDENTITY_BIT_KHR' specifies that image content is+-- presented without being transformed.+pattern SURFACE_TRANSFORM_IDENTITY_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000001+-- | 'SURFACE_TRANSFORM_ROTATE_90_BIT_KHR' specifies that image content is+-- rotated 90 degrees clockwise.+pattern SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000002+-- | 'SURFACE_TRANSFORM_ROTATE_180_BIT_KHR' specifies that image content is+-- rotated 180 degrees clockwise.+pattern SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000004+-- | 'SURFACE_TRANSFORM_ROTATE_270_BIT_KHR' specifies that image content is+-- rotated 270 degrees clockwise.+pattern SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000008+-- | 'SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR' specifies that image+-- content is mirrored horizontally.+pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000010+-- | 'SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR' specifies that+-- image content is mirrored horizontally, then rotated 90 degrees+-- clockwise.+pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000020+-- | 'SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR' specifies that+-- image content is mirrored horizontally, then rotated 180 degrees+-- clockwise.+pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000040+-- | 'SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR' specifies that+-- image content is mirrored horizontally, then rotated 270 degrees+-- clockwise.+pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000080+-- | 'SURFACE_TRANSFORM_INHERIT_BIT_KHR' specifies that the presentation+-- transform is not specified, and is instead determined by+-- platform-specific considerations and mechanisms outside Vulkan.+pattern SURFACE_TRANSFORM_INHERIT_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000100++type SurfaceTransformFlagsKHR = SurfaceTransformFlagBitsKHR++instance Show SurfaceTransformFlagBitsKHR where+ showsPrec p = \case+ SURFACE_TRANSFORM_IDENTITY_BIT_KHR -> showString "SURFACE_TRANSFORM_IDENTITY_BIT_KHR"+ SURFACE_TRANSFORM_ROTATE_90_BIT_KHR -> showString "SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"+ SURFACE_TRANSFORM_ROTATE_180_BIT_KHR -> showString "SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"+ SURFACE_TRANSFORM_ROTATE_270_BIT_KHR -> showString "SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"+ SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR -> showString "SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"+ SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR -> showString "SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"+ SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR -> showString "SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"+ SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR -> showString "SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"+ SURFACE_TRANSFORM_INHERIT_BIT_KHR -> showString "SURFACE_TRANSFORM_INHERIT_BIT_KHR"+ SurfaceTransformFlagBitsKHR x -> showParen (p >= 11) (showString "SurfaceTransformFlagBitsKHR 0x" . showHex x)++instance Read SurfaceTransformFlagBitsKHR where+ readPrec = parens (choose [("SURFACE_TRANSFORM_IDENTITY_BIT_KHR", pure SURFACE_TRANSFORM_IDENTITY_BIT_KHR)+ , ("SURFACE_TRANSFORM_ROTATE_90_BIT_KHR", pure SURFACE_TRANSFORM_ROTATE_90_BIT_KHR)+ , ("SURFACE_TRANSFORM_ROTATE_180_BIT_KHR", pure SURFACE_TRANSFORM_ROTATE_180_BIT_KHR)+ , ("SURFACE_TRANSFORM_ROTATE_270_BIT_KHR", pure SURFACE_TRANSFORM_ROTATE_270_BIT_KHR)+ , ("SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR", pure SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR)+ , ("SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR", pure SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR)+ , ("SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR", pure SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR)+ , ("SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR", pure SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR)+ , ("SURFACE_TRANSFORM_INHERIT_BIT_KHR", pure SURFACE_TRANSFORM_INHERIT_BIT_KHR)]+ ++++ prec 10 (do+ expectP (Ident "SurfaceTransformFlagBitsKHR")+ v <- step readPrec+ pure (SurfaceTransformFlagBitsKHR v)))+++type KHR_DISPLAY_SPEC_VERSION = 23++-- No documentation found for TopLevel "VK_KHR_DISPLAY_SPEC_VERSION"+pattern KHR_DISPLAY_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_DISPLAY_SPEC_VERSION = 23+++type KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display"++-- No documentation found for TopLevel "VK_KHR_DISPLAY_EXTENSION_NAME"+pattern KHR_DISPLAY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_display.hs-boot view
@@ -0,0 +1,68 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_display ( DisplayModeCreateInfoKHR+ , DisplayModeParametersKHR+ , DisplayModePropertiesKHR+ , DisplayPlaneCapabilitiesKHR+ , DisplayPlanePropertiesKHR+ , DisplayPropertiesKHR+ , DisplaySurfaceCreateInfoKHR+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data DisplayModeCreateInfoKHR++instance ToCStruct DisplayModeCreateInfoKHR+instance Show DisplayModeCreateInfoKHR++instance FromCStruct DisplayModeCreateInfoKHR+++data DisplayModeParametersKHR++instance ToCStruct DisplayModeParametersKHR+instance Show DisplayModeParametersKHR++instance FromCStruct DisplayModeParametersKHR+++data DisplayModePropertiesKHR++instance ToCStruct DisplayModePropertiesKHR+instance Show DisplayModePropertiesKHR++instance FromCStruct DisplayModePropertiesKHR+++data DisplayPlaneCapabilitiesKHR++instance ToCStruct DisplayPlaneCapabilitiesKHR+instance Show DisplayPlaneCapabilitiesKHR++instance FromCStruct DisplayPlaneCapabilitiesKHR+++data DisplayPlanePropertiesKHR++instance ToCStruct DisplayPlanePropertiesKHR+instance Show DisplayPlanePropertiesKHR++instance FromCStruct DisplayPlanePropertiesKHR+++data DisplayPropertiesKHR++instance ToCStruct DisplayPropertiesKHR+instance Show DisplayPropertiesKHR++instance FromCStruct DisplayPropertiesKHR+++data DisplaySurfaceCreateInfoKHR++instance ToCStruct DisplaySurfaceCreateInfoKHR+instance Show DisplaySurfaceCreateInfoKHR++instance FromCStruct DisplaySurfaceCreateInfoKHR+
src/Graphics/Vulkan/Extensions/VK_KHR_display_swapchain.hs view
@@ -1,121 +1,152 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_KHR_display_swapchain- ( pattern VK_ERROR_INCOMPATIBLE_DISPLAY_KHR- , pattern VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR- , pattern VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION- , pattern VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME- , vkCreateSharedSwapchainsKHR- , VkDisplayPresentInfoKHR(..)- ) where--import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- )-import Graphics.Vulkan.Core10.Pipeline- ( VkRect2D(..)- )-import Graphics.Vulkan.Extensions.VK_KHR_swapchain- ( VkSwapchainCreateInfoKHR(..)- , VkSwapchainKHR- )+module Graphics.Vulkan.Extensions.VK_KHR_display_swapchain ( createSharedSwapchainsKHR+ , DisplayPresentInfoKHR(..)+ , KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION+ , pattern KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION+ , KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME+ , pattern KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME+ , SurfaceKHR(..)+ , SwapchainKHR(..)+ , SwapchainCreateInfoKHR(..)+ , PresentModeKHR(..)+ , ColorSpaceKHR(..)+ , CompositeAlphaFlagBitsKHR(..)+ , CompositeAlphaFlagsKHR+ , SurfaceTransformFlagBitsKHR(..)+ , SurfaceTransformFlagsKHR+ , SwapchainCreateFlagBitsKHR(..)+ , SwapchainCreateFlagsKHR+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateSharedSwapchainsKHR))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.Core10.CommandBufferBuilding (Rect2D)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateInfoKHR)+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR)+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.VK_EXT_swapchain_colorspace (ColorSpaceKHR(..))+import Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter (CompositeAlphaFlagBitsKHR(..))+import Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter (CompositeAlphaFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image (PresentModeKHR(..))+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (SurfaceTransformFlagBitsKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (SurfaceTransformFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagBitsKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateInfoKHR(..))+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateSharedSwapchainsKHR+ :: FunPtr (Ptr Device_T -> Word32 -> Ptr (SwapchainCreateInfoKHR a) -> Ptr AllocationCallbacks -> Ptr SwapchainKHR -> IO Result) -> Ptr Device_T -> Word32 -> Ptr (SwapchainCreateInfoKHR a) -> Ptr AllocationCallbacks -> Ptr SwapchainKHR -> IO Result --- No documentation found for Nested "VkResult" "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR"-pattern VK_ERROR_INCOMPATIBLE_DISPLAY_KHR :: VkResult-pattern VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = VkResult (-1000003001)--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"-pattern VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = VkStructureType 1000003000--- No documentation found for TopLevel "VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION"-pattern VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION :: Integral a => a-pattern VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 9--- No documentation found for TopLevel "VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME"-pattern VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" -- | vkCreateSharedSwapchainsKHR - Create multiple swapchains that share -- presentable images -- -- = Parameters ----- - @device@ is the device to create the swapchains for.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the device to create the+-- swapchains for. -- -- - @swapchainCount@ is the number of swapchains to create. -- -- - @pCreateInfos@ is a pointer to an array of--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR'+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR' -- structures specifying the parameters of the created swapchains. -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- swapchain objects when there is no more specific allocator available--- (see [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)).+-- (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>). ----- - @pSwapchains@ is a pointer to an array of @VkSwapchainKHR@ handles--- in which the created swapchain objects will be returned.+-- - @pSwapchains@ is a pointer to an array of+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR' handles in which+-- the created swapchain objects will be returned. -- -- = Description ----- @vkCreateSharedSwapchains@ is similar to--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkCreateSwapchainKHR',--- except that it takes an array of @VkSwapchainCreateInfoKHR@ structures,--- and returns an array of swapchain objects.+-- 'createSharedSwapchainsKHR' is similar to+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR', except+-- that it takes an array of+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'+-- structures, and returns an array of swapchain objects. -- -- The swapchain creation parameters that affect the properties and number -- of presentable images /must/ match between all the swapchains. If the -- displays used by any of the swapchains do not use the same presentable -- image layout or are incompatible in a way that prevents sharing images, -- swapchain creation will fail with the result code--- @VK_ERROR_INCOMPATIBLE_DISPLAY_KHR@. If any error occurs, no swapchains--- will be created. Images presented to multiple swapchains /must/ be--- re-acquired from all of them before transitioning away from--- @VK_IMAGE_LAYOUT_PRESENT_SRC_KHR@. After destroying one or more of the--- swapchains, the remaining swapchains and the presentable images /can/--- continue to be used.+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INCOMPATIBLE_DISPLAY_KHR'. If+-- any error occurs, no swapchains will be created. Images presented to+-- multiple swapchains /must/ be re-acquired from all of them before+-- transitioning away from+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR'.+-- After destroying one or more of the swapchains, the remaining swapchains+-- and the presentable images /can/ continue to be used. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle -- -- - @pCreateInfos@ /must/ be a valid pointer to an array of--- @swapchainCount@ valid @VkSwapchainCreateInfoKHR@ structures+-- @swapchainCount@ valid+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'+-- structures -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure -- -- - @pSwapchains@ /must/ be a valid pointer to an array of--- @swapchainCount@ @VkSwapchainKHR@ handles+-- @swapchainCount@ 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR'+-- handles -- -- - @swapchainCount@ /must/ be greater than @0@ --@@ -129,31 +160,43 @@ -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- - @VK_ERROR_INCOMPATIBLE_DISPLAY_KHR@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' ----- - @VK_ERROR_DEVICE_LOST@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY' ----- - @VK_ERROR_SURFACE_LOST_KHR@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INCOMPATIBLE_DISPLAY_KHR' --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateSharedSwapchainsKHR" vkCreateSharedSwapchainsKHR :: ("device" ::: VkDevice) -> ("swapchainCount" ::: Word32) -> ("pCreateInfos" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchains" ::: Ptr VkSwapchainKHR) -> IO VkResult+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR'+createSharedSwapchainsKHR :: PokeChain a => Device -> ("createInfos" ::: Vector (SwapchainCreateInfoKHR a)) -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (("swapchains" ::: Vector SwapchainKHR))+createSharedSwapchainsKHR device createInfos allocator = evalContT $ do+ let vkCreateSharedSwapchainsKHR' = mkVkCreateSharedSwapchainsKHR (pVkCreateSharedSwapchainsKHR (deviceCmds (device :: Device)))+ pPCreateInfos <- ContT $ allocaBytesAligned @(SwapchainCreateInfoKHR _) ((Data.Vector.length (createInfos)) * 104) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPCreateInfos `plusPtr` (104 * (i)) :: Ptr (SwapchainCreateInfoKHR _)) (e) . ($ ())) (createInfos)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPSwapchains <- ContT $ bracket (callocBytes @SwapchainKHR ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free+ r <- lift $ vkCreateSharedSwapchainsKHR' (deviceHandle (device)) ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32)) (pPCreateInfos) pAllocator (pPSwapchains)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSwapchains <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @SwapchainKHR ((pPSwapchains `advancePtrBytes` (8 * (i)) :: Ptr SwapchainKHR)))+ pure $ (pSwapchains)++ -- | VkDisplayPresentInfoKHR - Structure describing parameters of a queue -- presentation to a swapchain --@@ -171,61 +214,96 @@ -- the @visibleRegion@ parameter of the display mode the swapchain -- being presented uses ----- - If the @persistentContent@ member of the @VkDisplayPropertiesKHR@--- structure returned by @vkGetPhysicalDeviceDisplayPropertiesKHR@ for--- the display the present operation targets then @persistent@ /must/--- be @VK_FALSE@+-- - If the @persistentContent@ member of the+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplayPropertiesKHR'+-- structure returned by+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.getPhysicalDeviceDisplayPropertiesKHR'+-- for the display the present operation targets then @persistent@+-- /must/ be 'Graphics.Vulkan.Core10.BaseType.FALSE' -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR@+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR' -- -- = See Also ----- @VkBool32@, 'Graphics.Vulkan.Core10.Pipeline.VkRect2D',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkDisplayPresentInfoKHR = VkDisplayPresentInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @srcRect@ is a rectangular region of pixels to present. It /must/ be a- -- subset of the image being presented. If @VkDisplayPresentInfoKHR@ is not- -- specified, this region will be assumed to be the entire presentable- -- image.- vkSrcRect :: VkRect2D+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DisplayPresentInfoKHR = DisplayPresentInfoKHR+ { -- | @srcRect@ is a rectangular region of pixels to present. It /must/ be a+ -- subset of the image being presented. If 'DisplayPresentInfoKHR' is not+ -- specified, this region will be assumed to be the entire presentable+ -- image.+ srcRect :: Rect2D , -- | @dstRect@ is a rectangular region within the visible region of the- -- swapchain’s display mode. If @VkDisplayPresentInfoKHR@ is not specified,- -- this region will be assumed to be the entire visible region of the- -- visible region of the swapchain’s mode. If the specified rectangle is a- -- subset of the display mode’s visible region, content from display planes- -- below the swapchain’s plane will be visible outside the rectangle. If- -- there are no planes below the swapchain’s, the area outside the- -- specified rectangle will be black. If portions of the specified- -- rectangle are outside of the display’s visible region, pixels mapping- -- only to those portions of the rectangle will be discarded.- vkDstRect :: VkRect2D- , -- | @persistent@: If this is @VK_TRUE@, the display engine will enable- -- buffered mode on displays that support it. This allows the display- -- engine to stop sending content to the display until a new image is- -- presented. The display will instead maintain a copy of the last- -- presented image. This allows less power to be used, but /may/ increase- -- presentation latency. If @VkDisplayPresentInfoKHR@ is not specified,- -- persistent mode will not be used.- vkPersistent :: VkBool32+ -- swapchain’s display mode. If 'DisplayPresentInfoKHR' is not specified,+ -- this region will be assumed to be the entire visible region of the+ -- visible region of the swapchain’s mode. If the specified rectangle is a+ -- subset of the display mode’s visible region, content from display planes+ -- below the swapchain’s plane will be visible outside the rectangle. If+ -- there are no planes below the swapchain’s, the area outside the+ -- specified rectangle will be black. If portions of the specified+ -- rectangle are outside of the display’s visible region, pixels mapping+ -- only to those portions of the rectangle will be discarded.+ dstRect :: Rect2D+ , -- | @persistent@: If this is 'Graphics.Vulkan.Core10.BaseType.TRUE', the+ -- display engine will enable buffered mode on displays that support it.+ -- This allows the display engine to stop sending content to the display+ -- until a new image is presented. The display will instead maintain a copy+ -- of the last presented image. This allows less power to be used, but+ -- /may/ increase presentation latency. If 'DisplayPresentInfoKHR' is not+ -- specified, persistent mode will not be used.+ persistent :: Bool }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show DisplayPresentInfoKHR -instance Storable VkDisplayPresentInfoKHR where- sizeOf ~_ = 56- alignment ~_ = 8- peek ptr = VkDisplayPresentInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 48)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDisplayPresentInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDisplayPresentInfoKHR))- *> poke (ptr `plusPtr` 16) (vkSrcRect (poked :: VkDisplayPresentInfoKHR))- *> poke (ptr `plusPtr` 32) (vkDstRect (poked :: VkDisplayPresentInfoKHR))- *> poke (ptr `plusPtr` 48) (vkPersistent (poked :: VkDisplayPresentInfoKHR))+instance ToCStruct DisplayPresentInfoKHR where+ withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DisplayPresentInfoKHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Rect2D)) (srcRect) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr Rect2D)) (dstRect) . ($ ())+ lift $ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (persistent))+ lift $ f+ cStructSize = 56+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Rect2D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 32 :: Ptr Rect2D)) (zero) . ($ ())+ lift $ poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ f++instance FromCStruct DisplayPresentInfoKHR where+ peekCStruct p = do+ srcRect <- peekCStruct @Rect2D ((p `plusPtr` 16 :: Ptr Rect2D))+ dstRect <- peekCStruct @Rect2D ((p `plusPtr` 32 :: Ptr Rect2D))+ persistent <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))+ pure $ DisplayPresentInfoKHR+ srcRect dstRect (bool32ToBool persistent)++instance Zero DisplayPresentInfoKHR where+ zero = DisplayPresentInfoKHR+ zero+ zero+ zero+++type KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10++-- No documentation found for TopLevel "VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION"+pattern KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10+++type KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain"++-- No documentation found for TopLevel "VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME"+pattern KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_display_swapchain.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_display_swapchain (DisplayPresentInfoKHR) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data DisplayPresentInfoKHR++instance ToCStruct DisplayPresentInfoKHR+instance Show DisplayPresentInfoKHR++instance FromCStruct DisplayPresentInfoKHR+
+ src/Graphics/Vulkan/Extensions/VK_KHR_draw_indirect_count.hs view
@@ -0,0 +1,33 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_draw_indirect_count ( cmdDrawIndirectCountKHR+ , cmdDrawIndexedIndirectCountKHR+ , KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION+ , pattern KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION+ , KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME+ , pattern KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME+ ) where++import Data.String (IsString)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count (cmdDrawIndexedIndirectCount)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count (cmdDrawIndirectCount)+-- No documentation found for TopLevel "vkCmdDrawIndirectCountKHR"+cmdDrawIndirectCountKHR = cmdDrawIndirectCount+++-- No documentation found for TopLevel "vkCmdDrawIndexedIndirectCountKHR"+cmdDrawIndexedIndirectCountKHR = cmdDrawIndexedIndirectCount+++type KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION"+pattern KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1+++type KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count"++-- No documentation found for TopLevel "VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME"+pattern KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_driver_properties.hs view
@@ -0,0 +1,129 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_driver_properties ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR+ , pattern DRIVER_ID_AMD_PROPRIETARY_KHR+ , pattern DRIVER_ID_AMD_OPEN_SOURCE_KHR+ , pattern DRIVER_ID_MESA_RADV_KHR+ , pattern DRIVER_ID_NVIDIA_PROPRIETARY_KHR+ , pattern DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR+ , pattern DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR+ , pattern DRIVER_ID_IMAGINATION_PROPRIETARY_KHR+ , pattern DRIVER_ID_QUALCOMM_PROPRIETARY_KHR+ , pattern DRIVER_ID_ARM_PROPRIETARY_KHR+ , pattern DRIVER_ID_GOOGLE_SWIFTSHADER_KHR+ , pattern DRIVER_ID_GGP_PROPRIETARY_KHR+ , pattern DRIVER_ID_BROADCOM_PROPRIETARY_KHR+ , pattern MAX_DRIVER_NAME_SIZE_KHR+ , pattern MAX_DRIVER_INFO_SIZE_KHR+ , DriverIdKHR+ , ConformanceVersionKHR+ , PhysicalDeviceDriverPropertiesKHR+ , KHR_DRIVER_PROPERTIES_SPEC_VERSION+ , pattern KHR_DRIVER_PROPERTIES_SPEC_VERSION+ , KHR_DRIVER_PROPERTIES_EXTENSION_NAME+ , pattern KHR_DRIVER_PROPERTIES_EXTENSION_NAME+ ) where++import Data.String (IsString)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (ConformanceVersion)+import Graphics.Vulkan.Core12.Enums.DriverId (DriverId)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (PhysicalDeviceDriverProperties)+import Graphics.Vulkan.Core12.Enums.DriverId (DriverId(DRIVER_ID_AMD_OPEN_SOURCE))+import Graphics.Vulkan.Core12.Enums.DriverId (DriverId(DRIVER_ID_AMD_PROPRIETARY))+import Graphics.Vulkan.Core12.Enums.DriverId (DriverId(DRIVER_ID_ARM_PROPRIETARY))+import Graphics.Vulkan.Core12.Enums.DriverId (DriverId(DRIVER_ID_BROADCOM_PROPRIETARY))+import Graphics.Vulkan.Core12.Enums.DriverId (DriverId(DRIVER_ID_GGP_PROPRIETARY))+import Graphics.Vulkan.Core12.Enums.DriverId (DriverId(DRIVER_ID_GOOGLE_SWIFTSHADER))+import Graphics.Vulkan.Core12.Enums.DriverId (DriverId(DRIVER_ID_IMAGINATION_PROPRIETARY))+import Graphics.Vulkan.Core12.Enums.DriverId (DriverId(DRIVER_ID_INTEL_OPEN_SOURCE_MESA))+import Graphics.Vulkan.Core12.Enums.DriverId (DriverId(DRIVER_ID_INTEL_PROPRIETARY_WINDOWS))+import Graphics.Vulkan.Core12.Enums.DriverId (DriverId(DRIVER_ID_MESA_RADV))+import Graphics.Vulkan.Core12.Enums.DriverId (DriverId(DRIVER_ID_NVIDIA_PROPRIETARY))+import Graphics.Vulkan.Core12.Enums.DriverId (DriverId(DRIVER_ID_QUALCOMM_PROPRIETARY))+import Graphics.Vulkan.Core10.APIConstants (pattern MAX_DRIVER_INFO_SIZE)+import Graphics.Vulkan.Core10.APIConstants (pattern MAX_DRIVER_NAME_SIZE)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES+++-- No documentation found for TopLevel "VK_DRIVER_ID_AMD_PROPRIETARY_KHR"+pattern DRIVER_ID_AMD_PROPRIETARY_KHR = DRIVER_ID_AMD_PROPRIETARY+++-- No documentation found for TopLevel "VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR"+pattern DRIVER_ID_AMD_OPEN_SOURCE_KHR = DRIVER_ID_AMD_OPEN_SOURCE+++-- No documentation found for TopLevel "VK_DRIVER_ID_MESA_RADV_KHR"+pattern DRIVER_ID_MESA_RADV_KHR = DRIVER_ID_MESA_RADV+++-- No documentation found for TopLevel "VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR"+pattern DRIVER_ID_NVIDIA_PROPRIETARY_KHR = DRIVER_ID_NVIDIA_PROPRIETARY+++-- No documentation found for TopLevel "VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR"+pattern DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = DRIVER_ID_INTEL_PROPRIETARY_WINDOWS+++-- No documentation found for TopLevel "VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR"+pattern DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = DRIVER_ID_INTEL_OPEN_SOURCE_MESA+++-- No documentation found for TopLevel "VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR"+pattern DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = DRIVER_ID_IMAGINATION_PROPRIETARY+++-- No documentation found for TopLevel "VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR"+pattern DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = DRIVER_ID_QUALCOMM_PROPRIETARY+++-- No documentation found for TopLevel "VK_DRIVER_ID_ARM_PROPRIETARY_KHR"+pattern DRIVER_ID_ARM_PROPRIETARY_KHR = DRIVER_ID_ARM_PROPRIETARY+++-- No documentation found for TopLevel "VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR"+pattern DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = DRIVER_ID_GOOGLE_SWIFTSHADER+++-- No documentation found for TopLevel "VK_DRIVER_ID_GGP_PROPRIETARY_KHR"+pattern DRIVER_ID_GGP_PROPRIETARY_KHR = DRIVER_ID_GGP_PROPRIETARY+++-- No documentation found for TopLevel "VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR"+pattern DRIVER_ID_BROADCOM_PROPRIETARY_KHR = DRIVER_ID_BROADCOM_PROPRIETARY+++-- No documentation found for TopLevel "VK_MAX_DRIVER_NAME_SIZE_KHR"+pattern MAX_DRIVER_NAME_SIZE_KHR = MAX_DRIVER_NAME_SIZE+++-- No documentation found for TopLevel "VK_MAX_DRIVER_INFO_SIZE_KHR"+pattern MAX_DRIVER_INFO_SIZE_KHR = MAX_DRIVER_INFO_SIZE+++-- No documentation found for TopLevel "VkDriverIdKHR"+type DriverIdKHR = DriverId+++-- No documentation found for TopLevel "VkConformanceVersionKHR"+type ConformanceVersionKHR = ConformanceVersion+++-- No documentation found for TopLevel "VkPhysicalDeviceDriverPropertiesKHR"+type PhysicalDeviceDriverPropertiesKHR = PhysicalDeviceDriverProperties+++type KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION"+pattern KHR_DRIVER_PROPERTIES_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1+++type KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties"++-- No documentation found for TopLevel "VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME"+pattern KHR_DRIVER_PROPERTIES_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties"+
src/Graphics/Vulkan/Extensions/VK_KHR_external_fence.hs view
@@ -1,67 +1,52 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}+module Graphics.Vulkan.Extensions.VK_KHR_external_fence ( pattern STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR+ , pattern FENCE_IMPORT_TEMPORARY_BIT_KHR+ , FenceImportFlagsKHR+ , FenceImportFlagBitsKHR+ , ExportFenceCreateInfoKHR+ , KHR_EXTERNAL_FENCE_SPEC_VERSION+ , pattern KHR_EXTERNAL_FENCE_SPEC_VERSION+ , KHR_EXTERNAL_FENCE_EXTENSION_NAME+ , pattern KHR_EXTERNAL_FENCE_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_KHR_external_fence- ( pattern VK_KHR_EXTERNAL_FENCE_SPEC_VERSION- , pattern VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME- , VkFenceImportFlagBitsKHR- , VkFenceImportFlagsKHR- , VkExportFenceCreateInfoKHR- , pattern VkExportFenceCreateInfoKHR- , pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR- , pattern VK_FENCE_IMPORT_TEMPORARY_BIT_KHR- ) where+import Data.String (IsString)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence (ExportFenceCreateInfo)+import Graphics.Vulkan.Core11.Enums.FenceImportFlagBits (FenceImportFlagBits)+import Graphics.Vulkan.Core11.Enums.FenceImportFlagBits (FenceImportFlags)+import Graphics.Vulkan.Core11.Enums.FenceImportFlagBits (FenceImportFlags)+import Graphics.Vulkan.Core11.Enums.FenceImportFlagBits (FenceImportFlagBits(FENCE_IMPORT_TEMPORARY_BIT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO -import Data.String- ( IsString- )-import Foreign.Ptr- ( Ptr- )-import Graphics.Vulkan.NamedType- ( (:::)- ) +-- No documentation found for TopLevel "VK_FENCE_IMPORT_TEMPORARY_BIT_KHR"+pattern FENCE_IMPORT_TEMPORARY_BIT_KHR = FENCE_IMPORT_TEMPORARY_BIT -import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence- ( VkExportFenceCreateInfo(..)- , VkFenceImportFlagBits(..)- , VkFenceImportFlags- , pattern VK_FENCE_IMPORT_TEMPORARY_BIT- , pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities- ( VkExternalFenceHandleTypeFlags- ) +-- No documentation found for TopLevel "VkFenceImportFlagsKHR"+type FenceImportFlagsKHR = FenceImportFlags --- No documentation found for TopLevel "VK_KHR_EXTERNAL_FENCE_SPEC_VERSION"-pattern VK_KHR_EXTERNAL_FENCE_SPEC_VERSION :: Integral a => a-pattern VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME"-pattern VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence"+ -- No documentation found for TopLevel "VkFenceImportFlagBitsKHR"-type VkFenceImportFlagBitsKHR = VkFenceImportFlagBits--- No documentation found for TopLevel "VkFenceImportFlagsKHR"-type VkFenceImportFlagsKHR = VkFenceImportFlags--- No documentation found for TopLevel "VkExportFenceCreateInfoKHR"-type VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo+type FenceImportFlagBitsKHR = FenceImportFlagBits -- No documentation found for TopLevel "VkExportFenceCreateInfoKHR"-pattern VkExportFenceCreateInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("handleTypes" ::: VkExternalFenceHandleTypeFlags) -> VkExportFenceCreateInfoKHR-pattern VkExportFenceCreateInfoKHR vkSType vkPNext vkHandleTypes = VkExportFenceCreateInfo vkSType vkPNext vkHandleTypes--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO--- No documentation found for TopLevel "VK_FENCE_IMPORT_TEMPORARY_BIT_KHR"-pattern VK_FENCE_IMPORT_TEMPORARY_BIT_KHR :: VkFenceImportFlagBits-pattern VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = VK_FENCE_IMPORT_TEMPORARY_BIT+type ExportFenceCreateInfoKHR = ExportFenceCreateInfo+++type KHR_EXTERNAL_FENCE_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_FENCE_SPEC_VERSION"+pattern KHR_EXTERNAL_FENCE_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_EXTERNAL_FENCE_SPEC_VERSION = 1+++type KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence"++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME"+pattern KHR_EXTERNAL_FENCE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence"+
src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_capabilities.hs view
@@ -1,120 +1,121 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}+module Graphics.Vulkan.Extensions.VK_KHR_external_fence_capabilities ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR+ , pattern STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR+ , pattern EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR+ , pattern EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR+ , pattern EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR+ , pattern EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR+ , pattern EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR+ , pattern EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR+ , getPhysicalDeviceExternalFencePropertiesKHR+ , ExternalFenceHandleTypeFlagsKHR+ , ExternalFenceFeatureFlagsKHR+ , ExternalFenceHandleTypeFlagBitsKHR+ , ExternalFenceFeatureFlagBitsKHR+ , PhysicalDeviceExternalFenceInfoKHR+ , ExternalFencePropertiesKHR+ , KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION+ , pattern KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION+ , KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME+ , pattern KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME+ , PhysicalDeviceIDPropertiesKHR+ , pattern LUID_SIZE_KHR+ ) where -module Graphics.Vulkan.Extensions.VK_KHR_external_fence_capabilities- ( pattern VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION- , pattern VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME- , vkGetPhysicalDeviceExternalFencePropertiesKHR- , VkExternalFenceHandleTypeFlagBitsKHR- , VkExternalFenceFeatureFlagBitsKHR- , VkExternalFenceHandleTypeFlagsKHR- , VkExternalFenceFeatureFlagsKHR- , VkPhysicalDeviceExternalFenceInfoKHR- , pattern VkPhysicalDeviceExternalFenceInfoKHR- , VkExternalFencePropertiesKHR- , pattern VkExternalFencePropertiesKHR- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR- , pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR- , pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR- , pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR- , pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR- , pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR- , pattern VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR- , pattern VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR- ) where+import Data.String (IsString)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities (getPhysicalDeviceExternalFenceProperties)+import Graphics.Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits (ExternalFenceFeatureFlagBits)+import Graphics.Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits (ExternalFenceFeatureFlags)+import Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits (ExternalFenceHandleTypeFlagBits)+import Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits (ExternalFenceHandleTypeFlags)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities (ExternalFenceProperties)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities (PhysicalDeviceExternalFenceInfo)+import Graphics.Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits (ExternalFenceFeatureFlags)+import Graphics.Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits (ExternalFenceFeatureFlagBits(EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT))+import Graphics.Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits (ExternalFenceFeatureFlags)+import Graphics.Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits (ExternalFenceFeatureFlagBits(EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT))+import Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits (ExternalFenceHandleTypeFlags)+import Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits (ExternalFenceHandleTypeFlagBits(EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT))+import Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits (ExternalFenceHandleTypeFlags)+import Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits (ExternalFenceHandleTypeFlagBits(EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT))+import Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits (ExternalFenceHandleTypeFlags)+import Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits (ExternalFenceHandleTypeFlagBits(EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT))+import Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits (ExternalFenceHandleTypeFlags)+import Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits (ExternalFenceHandleTypeFlagBits(EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO))+import Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities (PhysicalDeviceIDPropertiesKHR)+import Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities (pattern LUID_SIZE_KHR)+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO -import Data.String- ( IsString- )-import Foreign.Ptr- ( Ptr- )-import Graphics.Vulkan.NamedType- ( (:::)- ) +-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES -import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkPhysicalDevice- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities- ( VkExternalFenceFeatureFlagBits(..)- , VkExternalFenceHandleTypeFlagBits(..)- , VkExternalFenceProperties(..)- , VkPhysicalDeviceExternalFenceInfo(..)- , VkExternalFenceFeatureFlags- , VkExternalFenceHandleTypeFlags- , vkGetPhysicalDeviceExternalFenceProperties- , pattern VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT- , pattern VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT- , pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT- , pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT- , pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT- , pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT- , pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO- ) +-- No documentation found for TopLevel "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"+pattern EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT --- No documentation found for TopLevel "VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION"-pattern VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION :: Integral a => a-pattern VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME"-pattern VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities"++-- No documentation found for TopLevel "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"+pattern EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT+++-- No documentation found for TopLevel "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"+pattern EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT+++-- No documentation found for TopLevel "VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR"+pattern EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT+++-- No documentation found for TopLevel "VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR"+pattern EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT+++-- No documentation found for TopLevel "VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR"+pattern EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT++ -- No documentation found for TopLevel "vkGetPhysicalDeviceExternalFencePropertiesKHR"-vkGetPhysicalDeviceExternalFencePropertiesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalFenceInfo" ::: Ptr VkPhysicalDeviceExternalFenceInfo) -> ("pExternalFenceProperties" ::: Ptr VkExternalFenceProperties) -> IO ()-vkGetPhysicalDeviceExternalFencePropertiesKHR = vkGetPhysicalDeviceExternalFenceProperties--- No documentation found for TopLevel "VkExternalFenceHandleTypeFlagBitsKHR"-type VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits--- No documentation found for TopLevel "VkExternalFenceFeatureFlagBitsKHR"-type VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits+getPhysicalDeviceExternalFencePropertiesKHR = getPhysicalDeviceExternalFenceProperties++ -- No documentation found for TopLevel "VkExternalFenceHandleTypeFlagsKHR"-type VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags+type ExternalFenceHandleTypeFlagsKHR = ExternalFenceHandleTypeFlags++ -- No documentation found for TopLevel "VkExternalFenceFeatureFlagsKHR"-type VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags--- No documentation found for TopLevel "VkPhysicalDeviceExternalFenceInfoKHR"-type VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo+type ExternalFenceFeatureFlagsKHR = ExternalFenceFeatureFlags +-- No documentation found for TopLevel "VkExternalFenceHandleTypeFlagBitsKHR"+type ExternalFenceHandleTypeFlagBitsKHR = ExternalFenceHandleTypeFlagBits+++-- No documentation found for TopLevel "VkExternalFenceFeatureFlagBitsKHR"+type ExternalFenceFeatureFlagBitsKHR = ExternalFenceFeatureFlagBits++ -- No documentation found for TopLevel "VkPhysicalDeviceExternalFenceInfoKHR"-pattern VkPhysicalDeviceExternalFenceInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("handleType" ::: VkExternalFenceHandleTypeFlagBits) -> VkPhysicalDeviceExternalFenceInfoKHR-pattern VkPhysicalDeviceExternalFenceInfoKHR vkSType vkPNext vkHandleType = VkPhysicalDeviceExternalFenceInfo vkSType vkPNext vkHandleType--- No documentation found for TopLevel "VkExternalFencePropertiesKHR"-type VkExternalFencePropertiesKHR = VkExternalFenceProperties+type PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo -- No documentation found for TopLevel "VkExternalFencePropertiesKHR"-pattern VkExternalFencePropertiesKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("exportFromImportedHandleTypes" ::: VkExternalFenceHandleTypeFlags) -> ("compatibleHandleTypes" ::: VkExternalFenceHandleTypeFlags) -> ("externalFenceFeatures" ::: VkExternalFenceFeatureFlags) -> VkExternalFencePropertiesKHR-pattern VkExternalFencePropertiesKHR vkSType vkPNext vkExportFromImportedHandleTypes vkCompatibleHandleTypes vkExternalFenceFeatures = VkExternalFenceProperties vkSType vkPNext vkExportFromImportedHandleTypes vkCompatibleHandleTypes vkExternalFenceFeatures--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR"-pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES--- No documentation found for TopLevel "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR :: VkExternalFenceHandleTypeFlagBits-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT--- No documentation found for TopLevel "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR :: VkExternalFenceHandleTypeFlagBits-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT--- No documentation found for TopLevel "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR :: VkExternalFenceHandleTypeFlagBits-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT--- No documentation found for TopLevel "VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR"-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR :: VkExternalFenceHandleTypeFlagBits-pattern VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT--- No documentation found for TopLevel "VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR"-pattern VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR :: VkExternalFenceFeatureFlagBits-pattern VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT--- No documentation found for TopLevel "VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR"-pattern VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR :: VkExternalFenceFeatureFlagBits-pattern VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT+type ExternalFencePropertiesKHR = ExternalFenceProperties+++type KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION"+pattern KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1+++type KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities"++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME"+pattern KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities"+
src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_fd.hs view
@@ -1,102 +1,96 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd- ( pattern VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR- , pattern VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR- , pattern VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION- , pattern VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME- , vkGetFenceFdKHR- , vkImportFenceFdKHR- , VkImportFenceFdInfoKHR(..)- , VkFenceGetFdInfoKHR(..)- ) where--import Data.String- ( IsString- )-import Foreign.C.Types- ( CInt(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- )-import Graphics.Vulkan.Core10.Queue- ( VkFence- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence- ( VkFenceImportFlags- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities- ( VkExternalFenceHandleTypeFlagBits(..)- )+module Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd ( getFenceFdKHR+ , importFenceFdKHR+ , ImportFenceFdInfoKHR(..)+ , FenceGetFdInfoKHR(..)+ , KHR_EXTERNAL_FENCE_FD_SPEC_VERSION+ , pattern KHR_EXTERNAL_FENCE_FD_SPEC_VERSION+ , KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME+ , pattern KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.C.Types (CInt)+import Foreign.C.Types (CInt(..))+import Foreign.C.Types (CInt(CInt))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetFenceFdKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkImportFenceFdKHR))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits (ExternalFenceHandleTypeFlagBits)+import Graphics.Vulkan.Core10.Handles (Fence)+import Graphics.Vulkan.Core11.Enums.FenceImportFlagBits (FenceImportFlags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetFenceFdKHR+ :: FunPtr (Ptr Device_T -> Ptr FenceGetFdInfoKHR -> Ptr CInt -> IO Result) -> Ptr Device_T -> Ptr FenceGetFdInfoKHR -> Ptr CInt -> IO Result --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR"-pattern VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = VkStructureType 1000115000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR"-pattern VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = VkStructureType 1000115001--- No documentation found for TopLevel "VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION"-pattern VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION :: Integral a => a-pattern VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME"-pattern VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" -- | vkGetFenceFdKHR - Get a POSIX file descriptor handle for a fence -- -- = Parameters ----- - @device@ is the logical device that created the fence being--- exported.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- created the fence being exported. ----- - @pGetFdInfo@ is a pointer to an instance of the--- 'VkFenceGetFdInfoKHR' structure containing parameters of the export--- operation.+-- - @pGetFdInfo@ is a pointer to a 'FenceGetFdInfoKHR' structure+-- containing parameters of the export operation. -- -- - @pFd@ will return the file descriptor representing the fence -- payload. -- -- = Description ----- Each call to @vkGetFenceFdKHR@ /must/ create a new file descriptor and+-- Each call to 'getFenceFdKHR' /must/ create a new file descriptor and -- transfer ownership of it to the application. To avoid leaking resources, -- the application /must/ release ownership of the file descriptor when it -- is no longer needed. ----- __Note__+-- Note -- -- Ownership can be released in many ways. For example, the application can -- call @close@() on the file descriptor, or transfer ownership back to -- Vulkan by using the file descriptor to import a fence payload. ----- If @pGetFdInfo@::@handleType@ is--- @VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT@ and the fence is signaled at--- the time @vkGetFenceFdKHR@ is called, @pFd@ /may/ return the value @-1@--- instead of a valid file descriptor.+-- If @pGetFdInfo->handleType@ is+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT'+-- and the fence is signaled at the time 'getFenceFdKHR' is called, @pFd@+-- /may/ return the value @-1@ instead of a valid file descriptor. -- -- Where supported by the operating system, the implementation /must/ set -- the file descriptor to be closed automatically when an @execve@ system@@ -104,45 +98,51 @@ -- -- Exporting a file descriptor from a fence /may/ have side effects -- depending on the transference of the specified handle type, as described--- in [Importing Fence--- State](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences-importing).------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle+-- in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence State>. ----- - @pGetFdInfo@ /must/ be a valid pointer to a valid--- @VkFenceGetFdInfoKHR@ structure+-- == Return Codes ----- - @pFd@ /must/ be a valid pointer to a @int@ value+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- == Return Codes+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_TOO_MANY_OBJECTS@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS' ----- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkFenceGetFdInfoKHR'+-- 'Graphics.Vulkan.Core10.Handles.Device', 'FenceGetFdInfoKHR'+getFenceFdKHR :: Device -> FenceGetFdInfoKHR -> IO (("fd" ::: Int32))+getFenceFdKHR device getFdInfo = evalContT $ do+ let vkGetFenceFdKHR' = mkVkGetFenceFdKHR (pVkGetFenceFdKHR (deviceCmds (device :: Device)))+ pGetFdInfo <- ContT $ withCStruct (getFdInfo)+ pPFd <- ContT $ bracket (callocBytes @CInt 4) free+ r <- lift $ vkGetFenceFdKHR' (deviceHandle (device)) pGetFdInfo (pPFd)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pFd <- lift $ peek @CInt pPFd+ pure $ (((\(CInt a) -> a) pFd))++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkGetFenceFdKHR" vkGetFenceFdKHR :: ("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkFenceGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult+ "dynamic" mkVkImportFenceFdKHR+ :: FunPtr (Ptr Device_T -> Ptr ImportFenceFdInfoKHR -> IO Result) -> Ptr Device_T -> Ptr ImportFenceFdInfoKHR -> IO Result+ -- | vkImportFenceFdKHR - Import a fence from a POSIX file descriptor -- -- = Parameters ----- - @device@ is the logical device that created the fence.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- created the fence. ----- - @pImportFenceFdInfo@ points to a 'VkImportFenceFdInfoKHR' structure--- specifying the fence and import parameters.+-- - @pImportFenceFdInfo@ is a pointer to a 'ImportFenceFdInfoKHR'+-- structure specifying the fence and import parameters. -- -- = Description --@@ -155,139 +155,163 @@ -- of Vulkan, into the same instance from which it was exported, and -- multiple times into a given Vulkan instance. ----- == Valid Usage------ - @fence@ /must/ not be associated with any queue command that has not--- yet completed execution on that queue------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle+-- == Return Codes ----- - @pImportFenceFdInfo@ /must/ be a valid pointer to a valid--- @VkImportFenceFdInfoKHR@ structure+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- == Return Codes+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' ----- - @VK_ERROR_INVALID_EXTERNAL_HANDLE@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE' -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkImportFenceFdInfoKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkImportFenceFdKHR" vkImportFenceFdKHR :: ("device" ::: VkDevice) -> ("pImportFenceFdInfo" ::: Ptr VkImportFenceFdInfoKHR) -> IO VkResult+-- 'Graphics.Vulkan.Core10.Handles.Device', 'ImportFenceFdInfoKHR'+importFenceFdKHR :: Device -> ImportFenceFdInfoKHR -> IO ()+importFenceFdKHR device importFenceFdInfo = evalContT $ do+ let vkImportFenceFdKHR' = mkVkImportFenceFdKHR (pVkImportFenceFdKHR (deviceCmds (device :: Device)))+ pImportFenceFdInfo <- ContT $ withCStruct (importFenceFdInfo)+ r <- lift $ vkImportFenceFdKHR' (deviceHandle (device)) pImportFenceFdInfo+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))++ -- | VkImportFenceFdInfoKHR - (None) -- -- = Description -- -- The handle types supported by @handleType@ are: ----- +-----------------------------------------------+-----------------------+-----------------------+--- | Handle Type | Transference | Permanence Supported |--- +===============================================+=======================+=======================+--- | @VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT@ | Reference | Temporary,Permanent |--- +-----------------------------------------------+-----------------------+-----------------------+--- | @VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT@ | Copy | Temporary |--- +-----------------------------------------------+-----------------------+-----------------------++-- +---------------------------------------------------------------------------------------------------------+----------------------+-----------------------++-- | Handle Type | Transference | Permanence Supported |+-- +=========================================================================================================+======================+=======================++-- | 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT' | Reference | Temporary,Permanent |+-- +---------------------------------------------------------------------------------------------------------+----------------------+-----------------------++-- | 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT' | Copy | Temporary |+-- +---------------------------------------------------------------------------------------------------------+----------------------+-----------------------+ ----- Handle Types Supported by VkImportFenceFdInfoKHR+-- Handle Types Supported by 'ImportFenceFdInfoKHR' -- -- == Valid Usage ----- - @handleType@ /must/ be a value included in the [Handle Types--- Supported by--- VkImportFenceFdInfoKHR](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fence-handletypes-fd)+-- - @handleType@ /must/ be a value included in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fence-handletypes-fd Handle Types Supported by VkImportFenceFdInfoKHR> -- table. -- -- - @fd@ /must/ obey any requirements listed for @handleType@ in--- [external fence handle types--- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-fence-handle-types-compatibility).+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility external fence handle types compatibility>. ----- If @handleType@ is @VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT@, the--- special value @-1@ for @fd@ is treated like a valid sync file descriptor--- referring to an object that has already signaled. The import operation--- will succeed and the @VkFence@ will have a temporarily imported payload--- as if a valid file descriptor had been provided.+-- If @handleType@ is+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT',+-- the special value @-1@ for @fd@ is treated like a valid sync file+-- descriptor referring to an object that has already signaled. The import+-- operation will succeed and the 'Graphics.Vulkan.Core10.Handles.Fence'+-- will have a temporarily imported payload as if a valid file descriptor+-- had been provided. ----- __Note__+-- Note -- -- This special behavior for importing an invalid sync file descriptor -- allows easier interoperability with other system APIs which use the -- convention that an invalid sync file descriptor represents work that has--- already completed and doesn’t need to be waited for. It is consistent+-- already completed and does not need to be waited for. It is consistent -- with the option for implementations to return a @-1@ file descriptor--- when exporting a @VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT@ from a--- @VkFence@ which is signaled.+-- when exporting a+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT'+-- from a 'Graphics.Vulkan.Core10.Handles.Fence' which is signaled. -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR@+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR' -- -- - @pNext@ /must/ be @NULL@ ----- - @fence@ /must/ be a valid @VkFence@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Fence' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Fence' handle ----- - @flags@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence.VkFenceImportFlagBits'+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core11.Enums.FenceImportFlagBits.FenceImportFlagBits' -- values -- -- - @handleType@ /must/ be a valid--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceHandleTypeFlagBits'+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits' -- value -- -- == Host Synchronization ----- - Host access to @fence@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Fence' /must/ be+-- externally synchronized -- -- = See Also ----- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceHandleTypeFlagBits',--- 'Graphics.Vulkan.Core10.Queue.VkFence',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence.VkFenceImportFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkImportFenceFdKHR'-data VkImportFenceFdInfoKHR = VkImportFenceFdInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @fence@ is the fence into which the payload will be imported.- vkFence :: VkFence- , -- | @flags@ is a bitmask of- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence.VkFenceImportFlagBits'- -- specifying additional parameters for the fence payload import operation.- vkFlags :: VkFenceImportFlags+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core10.Handles.Fence',+-- 'Graphics.Vulkan.Core11.Enums.FenceImportFlagBits.FenceImportFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'importFenceFdKHR'+data ImportFenceFdInfoKHR = ImportFenceFdInfoKHR+ { -- | 'Graphics.Vulkan.Core10.Handles.Fence' is the fence into which the+ -- payload will be imported.+ fence :: Fence+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core11.Enums.FenceImportFlagBits.FenceImportFlagBits'+ -- specifying additional parameters for the fence payload import operation.+ flags :: FenceImportFlags , -- | @handleType@ specifies the type of @fd@.- vkHandleType :: VkExternalFenceHandleTypeFlagBits+ handleType :: ExternalFenceHandleTypeFlagBits , -- | @fd@ is the external handle to import.- vkFd :: CInt+ fd :: Int32 }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show ImportFenceFdInfoKHR -instance Storable VkImportFenceFdInfoKHR where+instance ToCStruct ImportFenceFdInfoKHR where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImportFenceFdInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Fence)) (fence)+ poke ((p `plusPtr` 24 :: Ptr FenceImportFlags)) (flags)+ poke ((p `plusPtr` 28 :: Ptr ExternalFenceHandleTypeFlagBits)) (handleType)+ poke ((p `plusPtr` 32 :: Ptr CInt)) (CInt (fd))+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Fence)) (zero)+ poke ((p `plusPtr` 28 :: Ptr ExternalFenceHandleTypeFlagBits)) (zero)+ poke ((p `plusPtr` 32 :: Ptr CInt)) (CInt (zero))+ f++instance FromCStruct ImportFenceFdInfoKHR where+ peekCStruct p = do+ fence <- peek @Fence ((p `plusPtr` 16 :: Ptr Fence))+ flags <- peek @FenceImportFlags ((p `plusPtr` 24 :: Ptr FenceImportFlags))+ handleType <- peek @ExternalFenceHandleTypeFlagBits ((p `plusPtr` 28 :: Ptr ExternalFenceHandleTypeFlagBits))+ fd <- peek @CInt ((p `plusPtr` 32 :: Ptr CInt))+ pure $ ImportFenceFdInfoKHR+ fence flags handleType ((\(CInt a) -> a) fd)++instance Storable ImportFenceFdInfoKHR where sizeOf ~_ = 40 alignment ~_ = 8- peek ptr = VkImportFenceFdInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkImportFenceFdInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImportFenceFdInfoKHR))- *> poke (ptr `plusPtr` 16) (vkFence (poked :: VkImportFenceFdInfoKHR))- *> poke (ptr `plusPtr` 24) (vkFlags (poked :: VkImportFenceFdInfoKHR))- *> poke (ptr `plusPtr` 28) (vkHandleType (poked :: VkImportFenceFdInfoKHR))- *> poke (ptr `plusPtr` 32) (vkFd (poked :: VkImportFenceFdInfoKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImportFenceFdInfoKHR where+ zero = ImportFenceFdInfoKHR+ zero+ zero+ zero+ zero++ -- | VkFenceGetFdInfoKHR - Structure describing a POSIX FD fence export -- operation --@@ -295,68 +319,108 @@ -- -- The properties of the file descriptor returned depend on the value of -- @handleType@. See--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceHandleTypeFlagBits'+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits' -- for a description of the properties of the defined external fence handle -- types. -- -- == Valid Usage -- -- - @handleType@ /must/ have been included in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence.VkExportFenceCreateInfo'::@handleTypes@--- when @fence@’s current payload was created.+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence.ExportFenceCreateInfo'::@handleTypes@+-- when 'Graphics.Vulkan.Core10.Handles.Fence'’s current payload was+-- created. -- -- - If @handleType@ refers to a handle type with copy payload--- transference semantics, @fence@ /must/ be signaled, or have an--- associated [fence signal--- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences-signaling)+-- transference semantics, 'Graphics.Vulkan.Core10.Handles.Fence'+-- /must/ be signaled, or have an associated+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signaling fence signal operation> -- pending execution. ----- - @fence@ /must/ not currently have its payload replaced by an--- imported payload as described below in [Importing Fence--- Payloads](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences-importing)+-- - 'Graphics.Vulkan.Core10.Handles.Fence' /must/ not currently have its+-- payload replaced by an imported payload as described below in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence Payloads> -- unless that imported payload’s handle type was included in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceProperties'::@exportFromImportedHandleTypes@+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.ExternalFenceProperties'::@exportFromImportedHandleTypes@ -- for @handleType@. -- -- - @handleType@ /must/ be defined as a POSIX file descriptor handle. -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR@+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR' -- -- - @pNext@ /must/ be @NULL@ ----- - @fence@ /must/ be a valid @VkFence@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Fence' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Fence' handle -- -- - @handleType@ /must/ be a valid--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceHandleTypeFlagBits'+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits' -- value -- -- = See Also ----- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceHandleTypeFlagBits',--- 'Graphics.Vulkan.Core10.Queue.VkFence',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkGetFenceFdKHR'-data VkFenceGetFdInfoKHR = VkFenceGetFdInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @fence@ is the fence from which state will be exported.- vkFence :: VkFence+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core10.Handles.Fence',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getFenceFdKHR'+data FenceGetFdInfoKHR = FenceGetFdInfoKHR+ { -- | 'Graphics.Vulkan.Core10.Handles.Fence' is the fence from which state+ -- will be exported.+ fence :: Fence , -- | @handleType@ is the type of handle requested.- vkHandleType :: VkExternalFenceHandleTypeFlagBits+ handleType :: ExternalFenceHandleTypeFlagBits }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show FenceGetFdInfoKHR -instance Storable VkFenceGetFdInfoKHR where+instance ToCStruct FenceGetFdInfoKHR where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p FenceGetFdInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Fence)) (fence)+ poke ((p `plusPtr` 24 :: Ptr ExternalFenceHandleTypeFlagBits)) (handleType)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Fence)) (zero)+ poke ((p `plusPtr` 24 :: Ptr ExternalFenceHandleTypeFlagBits)) (zero)+ f++instance FromCStruct FenceGetFdInfoKHR where+ peekCStruct p = do+ fence <- peek @Fence ((p `plusPtr` 16 :: Ptr Fence))+ handleType <- peek @ExternalFenceHandleTypeFlagBits ((p `plusPtr` 24 :: Ptr ExternalFenceHandleTypeFlagBits))+ pure $ FenceGetFdInfoKHR+ fence handleType++instance Storable FenceGetFdInfoKHR where sizeOf ~_ = 32 alignment ~_ = 8- peek ptr = VkFenceGetFdInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkFenceGetFdInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkFenceGetFdInfoKHR))- *> poke (ptr `plusPtr` 16) (vkFence (poked :: VkFenceGetFdInfoKHR))- *> poke (ptr `plusPtr` 24) (vkHandleType (poked :: VkFenceGetFdInfoKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero FenceGetFdInfoKHR where+ zero = FenceGetFdInfoKHR+ zero+ zero+++type KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION"+pattern KHR_EXTERNAL_FENCE_FD_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1+++type KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd"++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME"+pattern KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_fd.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd ( FenceGetFdInfoKHR+ , ImportFenceFdInfoKHR+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data FenceGetFdInfoKHR++instance ToCStruct FenceGetFdInfoKHR+instance Show FenceGetFdInfoKHR++instance FromCStruct FenceGetFdInfoKHR+++data ImportFenceFdInfoKHR++instance ToCStruct ImportFenceFdInfoKHR+instance Show ImportFenceFdInfoKHR++instance FromCStruct ImportFenceFdInfoKHR+
src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_win32.hs view
@@ -1,91 +1,84 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32- ( pattern VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR- , pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR- , pattern VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR- , pattern VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION- , pattern VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME- , vkGetFenceWin32HandleKHR- , vkImportFenceWin32HandleKHR- , VkImportFenceWin32HandleInfoKHR(..)- , VkExportFenceWin32HandleInfoKHR(..)- , VkFenceGetWin32HandleInfoKHR(..)- ) where--import Data.String- ( IsString- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- )-import Graphics.Vulkan.Core10.Queue- ( VkFence- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence- ( VkFenceImportFlags- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities- ( VkExternalFenceHandleTypeFlagBits(..)- )-import Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32- ( LPCWSTR- )-import Graphics.Vulkan.Extensions.VK_NV_external_memory_win32- ( DWORD- , HANDLE- , SECURITY_ATTRIBUTES- )+module Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32 ( getFenceWin32HandleKHR+ , importFenceWin32HandleKHR+ , ImportFenceWin32HandleInfoKHR(..)+ , ExportFenceWin32HandleInfoKHR(..)+ , FenceGetWin32HandleInfoKHR(..)+ , KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION+ , pattern KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION+ , KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME+ , pattern KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME+ , HANDLE+ , DWORD+ , LPCWSTR+ , SECURITY_ATTRIBUTES+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Extensions.WSITypes (DWORD)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetFenceWin32HandleKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkImportFenceWin32HandleKHR))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits (ExternalFenceHandleTypeFlagBits)+import Graphics.Vulkan.Core10.Handles (Fence)+import Graphics.Vulkan.Core11.Enums.FenceImportFlagBits (FenceImportFlags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Extensions.WSITypes (HANDLE)+import Graphics.Vulkan.Extensions.WSITypes (LPCWSTR)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Extensions.WSITypes (SECURITY_ATTRIBUTES)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.WSITypes (DWORD)+import Graphics.Vulkan.Extensions.WSITypes (HANDLE)+import Graphics.Vulkan.Extensions.WSITypes (LPCWSTR)+import Graphics.Vulkan.Extensions.WSITypes (SECURITY_ATTRIBUTES)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetFenceWin32HandleKHR+ :: FunPtr (Ptr Device_T -> Ptr FenceGetWin32HandleInfoKHR -> Ptr HANDLE -> IO Result) -> Ptr Device_T -> Ptr FenceGetWin32HandleInfoKHR -> Ptr HANDLE -> IO Result --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = VkStructureType 1000114000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = VkStructureType 1000114001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = VkStructureType 1000114002--- No documentation found for TopLevel "VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION"-pattern VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION :: Integral a => a-pattern VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME"-pattern VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME = "VK_KHR_external_fence_win32" -- | vkGetFenceWin32HandleKHR - Get a Windows HANDLE for a fence -- -- = Parameters ----- - @device@ is the logical device that created the fence being--- exported.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- created the fence being exported. ----- - @pGetWin32HandleInfo@ is a pointer to an instance of the--- 'VkFenceGetWin32HandleInfoKHR' structure containing parameters of--- the export operation.+-- - @pGetWin32HandleInfo@ is a pointer to a 'FenceGetWin32HandleInfoKHR'+-- structure containing parameters of the export operation. -- -- - @pHandle@ will return the Windows handle representing the fence -- state.@@ -93,51 +86,57 @@ -- = Description -- -- For handle types defined as NT handles, the handles returned by--- @vkGetFenceWin32HandleKHR@ are owned by the application. To avoid--- leaking resources, the application /must/ release ownership of them--- using the @CloseHandle@ system call when they are no longer needed.+-- 'getFenceWin32HandleKHR' are owned by the application. To avoid leaking+-- resources, the application /must/ release ownership of them using the+-- @CloseHandle@ system call when they are no longer needed. -- -- Exporting a Windows handle from a fence /may/ have side effects -- depending on the transference of the specified handle type, as described--- in [Importing Fence--- Payloads](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences-importing).------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle+-- in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence Payloads>. ----- - @pGetWin32HandleInfo@ /must/ be a valid pointer to a valid--- @VkFenceGetWin32HandleInfoKHR@ structure+-- == Return Codes ----- - @pHandle@ /must/ be a valid pointer to a @HANDLE@ value+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- == Return Codes+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_TOO_MANY_OBJECTS@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS' ----- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkFenceGetWin32HandleInfoKHR'+-- 'Graphics.Vulkan.Core10.Handles.Device', 'FenceGetWin32HandleInfoKHR'+getFenceWin32HandleKHR :: Device -> FenceGetWin32HandleInfoKHR -> IO (HANDLE)+getFenceWin32HandleKHR device getWin32HandleInfo = evalContT $ do+ let vkGetFenceWin32HandleKHR' = mkVkGetFenceWin32HandleKHR (pVkGetFenceWin32HandleKHR (deviceCmds (device :: Device)))+ pGetWin32HandleInfo <- ContT $ withCStruct (getWin32HandleInfo)+ pPHandle <- ContT $ bracket (callocBytes @HANDLE 8) free+ r <- lift $ vkGetFenceWin32HandleKHR' (deviceHandle (device)) pGetWin32HandleInfo (pPHandle)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pHandle <- lift $ peek @HANDLE pPHandle+ pure $ (pHandle)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkGetFenceWin32HandleKHR" vkGetFenceWin32HandleKHR :: ("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkFenceGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult+ "dynamic" mkVkImportFenceWin32HandleKHR+ :: FunPtr (Ptr Device_T -> Ptr ImportFenceWin32HandleInfoKHR -> IO Result) -> Ptr Device_T -> Ptr ImportFenceWin32HandleInfoKHR -> IO Result+ -- | vkImportFenceWin32HandleKHR - Import a fence from a Windows HANDLE -- -- = Parameters ----- - @device@ is the logical device that created the fence.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- created the fence. ----- - @pImportFenceWin32HandleInfo@ points to a--- 'VkImportFenceWin32HandleInfoKHR' structure specifying the fence and+-- - @pImportFenceWin32HandleInfo@ is a pointer to a+-- 'ImportFenceWin32HandleInfoKHR' structure specifying the fence and -- import parameters. -- -- = Description@@ -151,58 +150,54 @@ -- of Vulkan, into the same instance from which it was exported, and -- multiple times into a given Vulkan instance. ----- == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle+-- == Return Codes ----- - @pImportFenceWin32HandleInfo@ /must/ be a valid pointer to a valid--- @VkImportFenceWin32HandleInfoKHR@ structure+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- == Return Codes+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' ----- - @VK_ERROR_INVALID_EXTERNAL_HANDLE@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE' -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkImportFenceWin32HandleInfoKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkImportFenceWin32HandleKHR" vkImportFenceWin32HandleKHR :: ("device" ::: VkDevice) -> ("pImportFenceWin32HandleInfo" ::: Ptr VkImportFenceWin32HandleInfoKHR) -> IO VkResult+-- 'Graphics.Vulkan.Core10.Handles.Device', 'ImportFenceWin32HandleInfoKHR'+importFenceWin32HandleKHR :: Device -> ImportFenceWin32HandleInfoKHR -> IO ()+importFenceWin32HandleKHR device importFenceWin32HandleInfo = evalContT $ do+ let vkImportFenceWin32HandleKHR' = mkVkImportFenceWin32HandleKHR (pVkImportFenceWin32HandleKHR (deviceCmds (device :: Device)))+ pImportFenceWin32HandleInfo <- ContT $ withCStruct (importFenceWin32HandleInfo)+ r <- lift $ vkImportFenceWin32HandleKHR' (deviceHandle (device)) pImportFenceWin32HandleInfo+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))++ -- | VkImportFenceWin32HandleInfoKHR - (None) -- -- = Description -- -- The handle types supported by @handleType@ are: ----- +------------------------------------------------------+-----------------------+-----------------------+--- | Handle Type | Transference | Permanence Supported |--- +======================================================+=======================+=======================+--- | @VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT@ | Reference | Temporary,Permanent |--- +------------------------------------------------------+-----------------------+-----------------------+--- | @VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT@ | Reference | Temporary,Permanent |--- +------------------------------------------------------+-----------------------+-----------------------++-- +----------------------------------------------------------------------------------------------------------------+----------------------+-----------------------++-- | Handle Type | Transference | Permanence Supported |+-- +================================================================================================================+======================+=======================++-- | 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT' | Reference | Temporary,Permanent |+-- +----------------------------------------------------------------------------------------------------------------+----------------------+-----------------------++-- | 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT' | Reference | Temporary,Permanent |+-- +----------------------------------------------------------------------------------------------------------------+----------------------+-----------------------+ ----- Handle Types Supported by VkImportFenceWin32HandleInfoKHR+-- Handle Types Supported by 'ImportFenceWin32HandleInfoKHR' -- -- == Valid Usage ----- - @handleType@ /must/ be a value included in the [Handle Types--- Supported by--- VkImportFenceWin32HandleInfoKHR](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fence-handletypes-win32)+-- - @handleType@ /must/ be a value included in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fence-handletypes-win32 Handle Types Supported by VkImportFenceWin32HandleInfoKHR> -- table. -- -- - If @handleType@ is not--- @VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT@, @name@ /must/ be--- @NULL@.+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT',+-- @name@ /must/ be @NULL@. -- -- - If @handleType@ is not @0@ and @handle@ is @NULL@, @name@ /must/ -- name a valid synchronization primitive of the type specified by@@ -214,79 +209,107 @@ -- - If @handle@ is not @NULL@, @name@ must be @NULL@. -- -- - If @handle@ is not @NULL@, it /must/ obey any requirements listed--- for @handleType@ in [external fence handle types--- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-fence-handle-types-compatibility).+-- for @handleType@ in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility external fence handle types compatibility>. -- -- - If @name@ is not @NULL@, it /must/ obey any requirements listed for--- @handleType@ in [external fence handle types--- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-fence-handle-types-compatibility).+-- @handleType@ in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility external fence handle types compatibility>. -- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR' -- -- - @pNext@ /must/ be @NULL@ ----- - @fence@ /must/ be a valid @VkFence@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Fence' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Fence' handle ----- - @flags@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence.VkFenceImportFlagBits'+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core11.Enums.FenceImportFlagBits.FenceImportFlagBits' -- values -- -- - If @handleType@ is not @0@, @handleType@ /must/ be a valid--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceHandleTypeFlagBits'+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits' -- value -- -- == Host Synchronization ----- - Host access to @fence@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Fence' /must/ be+-- externally synchronized -- -- = See Also ----- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceHandleTypeFlagBits',--- 'Graphics.Vulkan.Core10.Queue.VkFence',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence.VkFenceImportFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkImportFenceWin32HandleKHR'-data VkImportFenceWin32HandleInfoKHR = VkImportFenceWin32HandleInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @fence@ is the fence into which the state will be imported.- vkFence :: VkFence- , -- | @flags@ is a bitmask of- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence.VkFenceImportFlagBits'- -- specifying additional parameters for the fence payload import operation.- vkFlags :: VkFenceImportFlags+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core10.Handles.Fence',+-- 'Graphics.Vulkan.Core11.Enums.FenceImportFlagBits.FenceImportFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'importFenceWin32HandleKHR'+data ImportFenceWin32HandleInfoKHR = ImportFenceWin32HandleInfoKHR+ { -- | 'Graphics.Vulkan.Core10.Handles.Fence' is the fence into which the state+ -- will be imported.+ fence :: Fence+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core11.Enums.FenceImportFlagBits.FenceImportFlagBits'+ -- specifying additional parameters for the fence payload import operation.+ flags :: FenceImportFlags , -- | @handleType@ specifies the type of @handle@.- vkHandleType :: VkExternalFenceHandleTypeFlagBits+ handleType :: ExternalFenceHandleTypeFlagBits , -- | @handle@ is the external handle to import, or @NULL@.- vkHandle :: HANDLE- , -- | @name@ is the NULL-terminated UTF-16 string naming the underlying- -- synchronization primitive to import, or @NULL@.- vkName :: LPCWSTR+ handle :: HANDLE+ , -- | @name@ is a null-terminated UTF-16 string naming the underlying+ -- synchronization primitive to import, or @NULL@.+ name :: LPCWSTR }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show ImportFenceWin32HandleInfoKHR -instance Storable VkImportFenceWin32HandleInfoKHR where+instance ToCStruct ImportFenceWin32HandleInfoKHR where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImportFenceWin32HandleInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Fence)) (fence)+ poke ((p `plusPtr` 24 :: Ptr FenceImportFlags)) (flags)+ poke ((p `plusPtr` 28 :: Ptr ExternalFenceHandleTypeFlagBits)) (handleType)+ poke ((p `plusPtr` 32 :: Ptr HANDLE)) (handle)+ poke ((p `plusPtr` 40 :: Ptr LPCWSTR)) (name)+ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Fence)) (zero)+ f++instance FromCStruct ImportFenceWin32HandleInfoKHR where+ peekCStruct p = do+ fence <- peek @Fence ((p `plusPtr` 16 :: Ptr Fence))+ flags <- peek @FenceImportFlags ((p `plusPtr` 24 :: Ptr FenceImportFlags))+ handleType <- peek @ExternalFenceHandleTypeFlagBits ((p `plusPtr` 28 :: Ptr ExternalFenceHandleTypeFlagBits))+ handle <- peek @HANDLE ((p `plusPtr` 32 :: Ptr HANDLE))+ name <- peek @LPCWSTR ((p `plusPtr` 40 :: Ptr LPCWSTR))+ pure $ ImportFenceWin32HandleInfoKHR+ fence flags handleType handle name++instance Storable ImportFenceWin32HandleInfoKHR where sizeOf ~_ = 48 alignment ~_ = 8- peek ptr = VkImportFenceWin32HandleInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkImportFenceWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImportFenceWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 16) (vkFence (poked :: VkImportFenceWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 24) (vkFlags (poked :: VkImportFenceWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 28) (vkHandleType (poked :: VkImportFenceWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 32) (vkHandle (poked :: VkImportFenceWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 40) (vkName (poked :: VkImportFenceWin32HandleInfoKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImportFenceWin32HandleInfoKHR where+ zero = ImportFenceWin32HandleInfoKHR+ zero+ zero+ zero+ zero+ zero++ -- | VkExportFenceWin32HandleInfoKHR - Structure specifying additional -- attributes of Windows handles exported from a fence --@@ -303,60 +326,88 @@ -- -- for handles of the following types: ----- @VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT@+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT' -- -- [1]--- <https://msdn.microsoft.com/en-us/library/windows/desktop/ms686670.aspx>+-- <https://docs.microsoft.com/en-us/windows/win32/sync/synchronization-object-security-and-access-rights> -- -- == Valid Usage -- -- - If--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence.VkExportFenceCreateInfo'::@handleTypes@--- does not include @VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT@,--- VkExportFenceWin32HandleInfoKHR /must/ not be in the @pNext@ chain--- of 'Graphics.Vulkan.Core10.Fence.VkFenceCreateInfo'.+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence.ExportFenceCreateInfo'::@handleTypes@+-- does not include+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT',+-- a 'ExportFenceWin32HandleInfoKHR' structure /must/ not be included+-- in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Fence.FenceCreateInfo'. -- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR' -- -- - If @pAttributes@ is not @NULL@, @pAttributes@ /must/ be a valid--- pointer to a valid @SECURITY_ATTRIBUTES@ value+-- pointer to a valid+-- 'Graphics.Vulkan.Extensions.WSITypes.SECURITY_ATTRIBUTES' value -- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkExportFenceWin32HandleInfoKHR = VkExportFenceWin32HandleInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @pAttributes@ is a pointer to a Windows @SECURITY_ATTRIBUTES@ structure- -- specifying security attributes of the handle.- vkPAttributes :: Ptr SECURITY_ATTRIBUTES- , -- | @dwAccess@ is a @DWORD@ specifying access rights of the handle.- vkDwAccess :: DWORD- , -- | @name@ is a NULL-terminated UTF-16 string to associate with the- -- underlying synchronization primitive referenced by NT handles exported- -- from the created fence.- vkName :: LPCWSTR+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ExportFenceWin32HandleInfoKHR = ExportFenceWin32HandleInfoKHR+ { -- | @pAttributes@ is a pointer to a Windows+ -- 'Graphics.Vulkan.Extensions.WSITypes.SECURITY_ATTRIBUTES' structure+ -- specifying security attributes of the handle.+ attributes :: Ptr SECURITY_ATTRIBUTES+ , -- | @dwAccess@ is a 'Graphics.Vulkan.Extensions.WSITypes.DWORD' specifying+ -- access rights of the handle.+ dwAccess :: DWORD+ , -- | @name@ is a null-terminated UTF-16 string to associate with the+ -- underlying synchronization primitive referenced by NT handles exported+ -- from the created fence.+ name :: LPCWSTR }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show ExportFenceWin32HandleInfoKHR -instance Storable VkExportFenceWin32HandleInfoKHR where+instance ToCStruct ExportFenceWin32HandleInfoKHR where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ExportFenceWin32HandleInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr (Ptr SECURITY_ATTRIBUTES))) (attributes)+ poke ((p `plusPtr` 24 :: Ptr DWORD)) (dwAccess)+ poke ((p `plusPtr` 32 :: Ptr LPCWSTR)) (name)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 24 :: Ptr DWORD)) (zero)+ poke ((p `plusPtr` 32 :: Ptr LPCWSTR)) (zero)+ f++instance FromCStruct ExportFenceWin32HandleInfoKHR where+ peekCStruct p = do+ pAttributes <- peek @(Ptr SECURITY_ATTRIBUTES) ((p `plusPtr` 16 :: Ptr (Ptr SECURITY_ATTRIBUTES)))+ dwAccess <- peek @DWORD ((p `plusPtr` 24 :: Ptr DWORD))+ name <- peek @LPCWSTR ((p `plusPtr` 32 :: Ptr LPCWSTR))+ pure $ ExportFenceWin32HandleInfoKHR+ pAttributes dwAccess name++instance Storable ExportFenceWin32HandleInfoKHR where sizeOf ~_ = 40 alignment ~_ = 8- peek ptr = VkExportFenceWin32HandleInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkExportFenceWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkExportFenceWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 16) (vkPAttributes (poked :: VkExportFenceWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 24) (vkDwAccess (poked :: VkExportFenceWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 32) (vkName (poked :: VkExportFenceWin32HandleInfoKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ExportFenceWin32HandleInfoKHR where+ zero = ExportFenceWin32HandleInfoKHR+ zero+ zero+ zero++ -- | VkFenceGetWin32HandleInfoKHR - Structure describing a Win32 handle fence -- export operation --@@ -364,31 +415,32 @@ -- -- The properties of the handle returned depend on the value of -- @handleType@. See--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceHandleTypeFlagBits'+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits' -- for a description of the properties of the defined external fence handle -- types. -- -- == Valid Usage -- -- - @handleType@ /must/ have been included in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence.VkExportFenceCreateInfo'::@handleTypes@--- when the @fence@’s current payload was created.+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence.ExportFenceCreateInfo'::@handleTypes@+-- when the 'Graphics.Vulkan.Core10.Handles.Fence'’s current payload+-- was created. ----- - If @handleType@ is defined as an NT handle,--- 'vkGetFenceWin32HandleKHR' /must/ be called no more than once for--- each valid unique combination of @fence@ and @handleType@.+-- - If @handleType@ is defined as an NT handle, 'getFenceWin32HandleKHR'+-- /must/ be called no more than once for each valid unique combination+-- of 'Graphics.Vulkan.Core10.Handles.Fence' and @handleType@. ----- - @fence@ /must/ not currently have its payload replaced by an--- imported payload as described below in [Importing Fence--- Payloads](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences-importing)+-- - 'Graphics.Vulkan.Core10.Handles.Fence' /must/ not currently have its+-- payload replaced by an imported payload as described below in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence Payloads> -- unless that imported payload’s handle type was included in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceProperties'::@exportFromImportedHandleTypes@+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.ExternalFenceProperties'::@exportFromImportedHandleTypes@ -- for @handleType@. -- -- - If @handleType@ refers to a handle type with copy payload--- transference semantics, @fence@ /must/ be signaled, or have an--- associated [fence signal--- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-fences-signaling)+-- transference semantics, 'Graphics.Vulkan.Core10.Handles.Fence'+-- /must/ be signaled, or have an associated+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signaling fence signal operation> -- pending execution. -- -- - @handleType@ /must/ be defined as an NT handle or a global share@@ -397,42 +449,79 @@ -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR' -- -- - @pNext@ /must/ be @NULL@ ----- - @fence@ /must/ be a valid @VkFence@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Fence' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Fence' handle -- -- - @handleType@ /must/ be a valid--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceHandleTypeFlagBits'+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits' -- value -- -- = See Also ----- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities.VkExternalFenceHandleTypeFlagBits',--- 'Graphics.Vulkan.Core10.Queue.VkFence',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetFenceWin32HandleKHR'-data VkFenceGetWin32HandleInfoKHR = VkFenceGetWin32HandleInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @fence@ is the fence from which state will be exported.- vkFence :: VkFence+-- 'Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.ExternalFenceHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core10.Handles.Fence',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getFenceWin32HandleKHR'+data FenceGetWin32HandleInfoKHR = FenceGetWin32HandleInfoKHR+ { -- | 'Graphics.Vulkan.Core10.Handles.Fence' is the fence from which state+ -- will be exported.+ fence :: Fence , -- | @handleType@ is the type of handle requested.- vkHandleType :: VkExternalFenceHandleTypeFlagBits+ handleType :: ExternalFenceHandleTypeFlagBits }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show FenceGetWin32HandleInfoKHR -instance Storable VkFenceGetWin32HandleInfoKHR where+instance ToCStruct FenceGetWin32HandleInfoKHR where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p FenceGetWin32HandleInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Fence)) (fence)+ poke ((p `plusPtr` 24 :: Ptr ExternalFenceHandleTypeFlagBits)) (handleType)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Fence)) (zero)+ poke ((p `plusPtr` 24 :: Ptr ExternalFenceHandleTypeFlagBits)) (zero)+ f++instance FromCStruct FenceGetWin32HandleInfoKHR where+ peekCStruct p = do+ fence <- peek @Fence ((p `plusPtr` 16 :: Ptr Fence))+ handleType <- peek @ExternalFenceHandleTypeFlagBits ((p `plusPtr` 24 :: Ptr ExternalFenceHandleTypeFlagBits))+ pure $ FenceGetWin32HandleInfoKHR+ fence handleType++instance Storable FenceGetWin32HandleInfoKHR where sizeOf ~_ = 32 alignment ~_ = 8- peek ptr = VkFenceGetWin32HandleInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkFenceGetWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkFenceGetWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 16) (vkFence (poked :: VkFenceGetWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 24) (vkHandleType (poked :: VkFenceGetWin32HandleInfoKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero FenceGetWin32HandleInfoKHR where+ zero = FenceGetWin32HandleInfoKHR+ zero+ zero+++type KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION"+pattern KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION = 1+++type KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME = "VK_KHR_external_fence_win32"++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME"+pattern KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME = "VK_KHR_external_fence_win32"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_external_fence_win32.hs-boot view
@@ -0,0 +1,32 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32 ( ExportFenceWin32HandleInfoKHR+ , FenceGetWin32HandleInfoKHR+ , ImportFenceWin32HandleInfoKHR+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ExportFenceWin32HandleInfoKHR++instance ToCStruct ExportFenceWin32HandleInfoKHR+instance Show ExportFenceWin32HandleInfoKHR++instance FromCStruct ExportFenceWin32HandleInfoKHR+++data FenceGetWin32HandleInfoKHR++instance ToCStruct FenceGetWin32HandleInfoKHR+instance Show FenceGetWin32HandleInfoKHR++instance FromCStruct FenceGetWin32HandleInfoKHR+++data ImportFenceWin32HandleInfoKHR++instance ToCStruct ImportFenceWin32HandleInfoKHR+instance Show ImportFenceWin32HandleInfoKHR++instance FromCStruct ImportFenceWin32HandleInfoKHR+
src/Graphics/Vulkan/Extensions/VK_KHR_external_memory.hs view
@@ -1,98 +1,69 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}+module Graphics.Vulkan.Extensions.VK_KHR_external_memory ( pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR+ , pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR+ , pattern STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR+ , pattern ERROR_INVALID_EXTERNAL_HANDLE_KHR+ , pattern QUEUE_FAMILY_EXTERNAL_KHR+ , ExternalMemoryImageCreateInfoKHR+ , ExternalMemoryBufferCreateInfoKHR+ , ExportMemoryAllocateInfoKHR+ , KHR_EXTERNAL_MEMORY_SPEC_VERSION+ , pattern KHR_EXTERNAL_MEMORY_SPEC_VERSION+ , KHR_EXTERNAL_MEMORY_EXTENSION_NAME+ , pattern KHR_EXTERNAL_MEMORY_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_KHR_external_memory- ( pattern VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION- , pattern VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME- , VkExternalMemoryImageCreateInfoKHR- , pattern VkExternalMemoryImageCreateInfoKHR- , VkExternalMemoryBufferCreateInfoKHR- , pattern VkExternalMemoryBufferCreateInfoKHR- , VkExportMemoryAllocateInfoKHR- , pattern VkExportMemoryAllocateInfoKHR- , pattern VK_QUEUE_FAMILY_EXTERNAL_KHR- , pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR- , pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR- , pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR- , pattern VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR- ) where+import Data.String (IsString)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory (ExportMemoryAllocateInfo)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory (ExternalMemoryBufferCreateInfo)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory (ExternalMemoryImageCreateInfo)+import Graphics.Vulkan.Core10.Enums.Result (Result(ERROR_INVALID_EXTERNAL_HANDLE))+import Graphics.Vulkan.Core10.APIConstants (pattern QUEUE_FAMILY_EXTERNAL)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO -import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- )-import Graphics.Vulkan.NamedType- ( (:::)- ) +-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO -import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory- ( VkExportMemoryAllocateInfo(..)- , VkExternalMemoryBufferCreateInfo(..)- , VkExternalMemoryImageCreateInfo(..)- , pattern VK_ERROR_INVALID_EXTERNAL_HANDLE- , pattern VK_QUEUE_FAMILY_EXTERNAL- , pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO- , pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities- ( VkExternalMemoryHandleTypeFlags- ) +-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR"+pattern STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO --- No documentation found for TopLevel "VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION"-pattern VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION :: Integral a => a-pattern VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME"-pattern VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory"--- No documentation found for TopLevel "VkExternalMemoryImageCreateInfoKHR"-type VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo +-- No documentation found for TopLevel "VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR"+pattern ERROR_INVALID_EXTERNAL_HANDLE_KHR = ERROR_INVALID_EXTERNAL_HANDLE ++-- No documentation found for TopLevel "VK_QUEUE_FAMILY_EXTERNAL_KHR"+pattern QUEUE_FAMILY_EXTERNAL_KHR = QUEUE_FAMILY_EXTERNAL++ -- No documentation found for TopLevel "VkExternalMemoryImageCreateInfoKHR"-pattern VkExternalMemoryImageCreateInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("handleTypes" ::: VkExternalMemoryHandleTypeFlags) -> VkExternalMemoryImageCreateInfoKHR-pattern VkExternalMemoryImageCreateInfoKHR vkSType vkPNext vkHandleTypes = VkExternalMemoryImageCreateInfo vkSType vkPNext vkHandleTypes--- No documentation found for TopLevel "VkExternalMemoryBufferCreateInfoKHR"-type VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo+type ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo -- No documentation found for TopLevel "VkExternalMemoryBufferCreateInfoKHR"-pattern VkExternalMemoryBufferCreateInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("handleTypes" ::: VkExternalMemoryHandleTypeFlags) -> VkExternalMemoryBufferCreateInfoKHR-pattern VkExternalMemoryBufferCreateInfoKHR vkSType vkPNext vkHandleTypes = VkExternalMemoryBufferCreateInfo vkSType vkPNext vkHandleTypes--- No documentation found for TopLevel "VkExportMemoryAllocateInfoKHR"-type VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo+type ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo -- No documentation found for TopLevel "VkExportMemoryAllocateInfoKHR"-pattern VkExportMemoryAllocateInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("handleTypes" ::: VkExternalMemoryHandleTypeFlags) -> VkExportMemoryAllocateInfoKHR-pattern VkExportMemoryAllocateInfoKHR vkSType vkPNext vkHandleTypes = VkExportMemoryAllocateInfo vkSType vkPNext vkHandleTypes--- No documentation found for TopLevel "VK_QUEUE_FAMILY_EXTERNAL_KHR"-pattern VK_QUEUE_FAMILY_EXTERNAL_KHR :: Word32-pattern VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO--- No documentation found for TopLevel "VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR"-pattern VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR :: VkResult-pattern VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE+type ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo+++type KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION"+pattern KHR_EXTERNAL_MEMORY_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1+++type KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory"++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME"+pattern KHR_EXTERNAL_MEMORY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory"+
src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_capabilities.hs view
@@ -1,219 +1,193 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}+module Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR+ , pattern STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR+ , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR+ , pattern STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR+ , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR+ , pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR+ , pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR+ , pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR+ , pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR+ , pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR+ , pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR+ , pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR+ , pattern EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR+ , pattern EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR+ , pattern EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR+ , getPhysicalDeviceExternalBufferPropertiesKHR+ , pattern LUID_SIZE_KHR+ , ExternalMemoryHandleTypeFlagsKHR+ , ExternalMemoryFeatureFlagsKHR+ , ExternalMemoryHandleTypeFlagBitsKHR+ , ExternalMemoryFeatureFlagBitsKHR+ , ExternalMemoryPropertiesKHR+ , PhysicalDeviceExternalImageFormatInfoKHR+ , ExternalImageFormatPropertiesKHR+ , PhysicalDeviceExternalBufferInfoKHR+ , ExternalBufferPropertiesKHR+ , PhysicalDeviceIDPropertiesKHR+ , KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION+ , pattern KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION+ , KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME+ , pattern KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities- ( pattern VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION- , pattern VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME- , vkGetPhysicalDeviceExternalBufferPropertiesKHR- , VkExternalMemoryHandleTypeFlagBitsKHR- , VkExternalMemoryFeatureFlagBitsKHR- , VkExternalMemoryHandleTypeFlagsKHR- , VkExternalMemoryFeatureFlagsKHR- , VkExternalMemoryPropertiesKHR- , pattern VkExternalMemoryPropertiesKHR- , VkPhysicalDeviceExternalImageFormatInfoKHR- , pattern VkPhysicalDeviceExternalImageFormatInfoKHR- , VkExternalImageFormatPropertiesKHR- , pattern VkExternalImageFormatPropertiesKHR- , VkPhysicalDeviceExternalBufferInfoKHR- , pattern VkPhysicalDeviceExternalBufferInfoKHR- , VkExternalBufferPropertiesKHR- , pattern VkExternalBufferPropertiesKHR- , VkPhysicalDeviceIDPropertiesKHR- , pattern VkPhysicalDeviceIDPropertiesKHR- , pattern VK_LUID_SIZE_KHR- , VK_LUID_SIZE_KHR- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR- , pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR- , pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR- , pattern VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR- , pattern VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR- , pattern VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR- ) where+import Data.String (IsString)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (getPhysicalDeviceExternalBufferProperties)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (ExternalBufferProperties)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (ExternalImageFormatProperties)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits (ExternalMemoryFeatureFlagBits)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits (ExternalMemoryFeatureFlags)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlags)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (ExternalMemoryProperties)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceExternalBufferInfo)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceExternalImageFormatInfo)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceIDProperties)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits (ExternalMemoryFeatureFlags)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits (ExternalMemoryFeatureFlagBits(EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT))+import Graphics.Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits (ExternalMemoryFeatureFlags)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits (ExternalMemoryFeatureFlagBits(EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT))+import Graphics.Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits (ExternalMemoryFeatureFlags)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits (ExternalMemoryFeatureFlagBits(EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT))+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlags)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits(EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT))+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlags)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits(EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT))+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlags)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits(EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT))+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlags)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits(EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT))+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlags)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits(EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT))+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlags)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits(EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT))+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlags)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits(EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT))+import Graphics.Vulkan.Core10.APIConstants (pattern LUID_SIZE)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO -import Data.String- ( IsString- )-import Data.Vector.Storable.Sized- ( Vector- )-import Data.Word- ( Word32- , Word8- )-import Foreign.Ptr- ( Ptr- )-import Graphics.Vulkan.NamedType- ( (:::)- ) +-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES -import Graphics.Vulkan.Core10.Buffer- ( VkBufferCreateFlags- , VkBufferUsageFlags- )-import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VK_UUID_SIZE- , VkPhysicalDevice- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities- ( VkExternalBufferProperties(..)- , VkExternalImageFormatProperties(..)- , VkExternalMemoryFeatureFlagBits(..)- , VkExternalMemoryHandleTypeFlagBits(..)- , VkExternalMemoryProperties(..)- , VkPhysicalDeviceExternalBufferInfo(..)- , VkPhysicalDeviceExternalImageFormatInfo(..)- , VkPhysicalDeviceIDProperties(..)- , VK_LUID_SIZE- , VkExternalMemoryFeatureFlags- , VkExternalMemoryHandleTypeFlags- , vkGetPhysicalDeviceExternalBufferProperties- , pattern VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT- , pattern VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT- , pattern VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT- , pattern VK_LUID_SIZE- , pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES- , pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES- ) +-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO --- No documentation found for TopLevel "VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION"-pattern VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION :: Integral a => a-pattern VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME"-pattern VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities"++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES+++-- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"+pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT+++-- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"+pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT+++-- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"+pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT+++-- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR"+pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT+++-- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR"+pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT+++-- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR"+pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT+++-- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR"+pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT+++-- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR"+pattern EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT+++-- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR"+pattern EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT+++-- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR"+pattern EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT++ -- No documentation found for TopLevel "vkGetPhysicalDeviceExternalBufferPropertiesKHR"-vkGetPhysicalDeviceExternalBufferPropertiesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalBufferInfo" ::: Ptr VkPhysicalDeviceExternalBufferInfo) -> ("pExternalBufferProperties" ::: Ptr VkExternalBufferProperties) -> IO ()-vkGetPhysicalDeviceExternalBufferPropertiesKHR = vkGetPhysicalDeviceExternalBufferProperties--- No documentation found for TopLevel "VkExternalMemoryHandleTypeFlagBitsKHR"-type VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits--- No documentation found for TopLevel "VkExternalMemoryFeatureFlagBitsKHR"-type VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits+getPhysicalDeviceExternalBufferPropertiesKHR = getPhysicalDeviceExternalBufferProperties+++-- No documentation found for TopLevel "VK_LUID_SIZE_KHR"+pattern LUID_SIZE_KHR = LUID_SIZE++ -- No documentation found for TopLevel "VkExternalMemoryHandleTypeFlagsKHR"-type VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags+type ExternalMemoryHandleTypeFlagsKHR = ExternalMemoryHandleTypeFlags++ -- No documentation found for TopLevel "VkExternalMemoryFeatureFlagsKHR"-type VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags--- No documentation found for TopLevel "VkExternalMemoryPropertiesKHR"-type VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties+type ExternalMemoryFeatureFlagsKHR = ExternalMemoryFeatureFlags +-- No documentation found for TopLevel "VkExternalMemoryHandleTypeFlagBitsKHR"+type ExternalMemoryHandleTypeFlagBitsKHR = ExternalMemoryHandleTypeFlagBits+++-- No documentation found for TopLevel "VkExternalMemoryFeatureFlagBitsKHR"+type ExternalMemoryFeatureFlagBitsKHR = ExternalMemoryFeatureFlagBits++ -- No documentation found for TopLevel "VkExternalMemoryPropertiesKHR"-pattern VkExternalMemoryPropertiesKHR :: ("externalMemoryFeatures" ::: VkExternalMemoryFeatureFlags) -> ("exportFromImportedHandleTypes" ::: VkExternalMemoryHandleTypeFlags) -> ("compatibleHandleTypes" ::: VkExternalMemoryHandleTypeFlags) -> VkExternalMemoryPropertiesKHR-pattern VkExternalMemoryPropertiesKHR vkExternalMemoryFeatures vkExportFromImportedHandleTypes vkCompatibleHandleTypes = VkExternalMemoryProperties vkExternalMemoryFeatures vkExportFromImportedHandleTypes vkCompatibleHandleTypes--- No documentation found for TopLevel "VkPhysicalDeviceExternalImageFormatInfoKHR"-type VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo+type ExternalMemoryPropertiesKHR = ExternalMemoryProperties -- No documentation found for TopLevel "VkPhysicalDeviceExternalImageFormatInfoKHR"-pattern VkPhysicalDeviceExternalImageFormatInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> VkPhysicalDeviceExternalImageFormatInfoKHR-pattern VkPhysicalDeviceExternalImageFormatInfoKHR vkSType vkPNext vkHandleType = VkPhysicalDeviceExternalImageFormatInfo vkSType vkPNext vkHandleType--- No documentation found for TopLevel "VkExternalImageFormatPropertiesKHR"-type VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties+type PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo -- No documentation found for TopLevel "VkExternalImageFormatPropertiesKHR"-pattern VkExternalImageFormatPropertiesKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("externalMemoryProperties" ::: VkExternalMemoryProperties) -> VkExternalImageFormatPropertiesKHR-pattern VkExternalImageFormatPropertiesKHR vkSType vkPNext vkExternalMemoryProperties = VkExternalImageFormatProperties vkSType vkPNext vkExternalMemoryProperties--- No documentation found for TopLevel "VkPhysicalDeviceExternalBufferInfoKHR"-type VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo+type ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties -- No documentation found for TopLevel "VkPhysicalDeviceExternalBufferInfoKHR"-pattern VkPhysicalDeviceExternalBufferInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("flags" ::: VkBufferCreateFlags) -> ("usage" ::: VkBufferUsageFlags) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> VkPhysicalDeviceExternalBufferInfoKHR-pattern VkPhysicalDeviceExternalBufferInfoKHR vkSType vkPNext vkFlags vkUsage vkHandleType = VkPhysicalDeviceExternalBufferInfo vkSType vkPNext vkFlags vkUsage vkHandleType--- No documentation found for TopLevel "VkExternalBufferPropertiesKHR"-type VkExternalBufferPropertiesKHR = VkExternalBufferProperties+type PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo -- No documentation found for TopLevel "VkExternalBufferPropertiesKHR"-pattern VkExternalBufferPropertiesKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("externalMemoryProperties" ::: VkExternalMemoryProperties) -> VkExternalBufferPropertiesKHR-pattern VkExternalBufferPropertiesKHR vkSType vkPNext vkExternalMemoryProperties = VkExternalBufferProperties vkSType vkPNext vkExternalMemoryProperties--- No documentation found for TopLevel "VkPhysicalDeviceIDPropertiesKHR"-type VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties+type ExternalBufferPropertiesKHR = ExternalBufferProperties -- No documentation found for TopLevel "VkPhysicalDeviceIDPropertiesKHR"-pattern VkPhysicalDeviceIDPropertiesKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("deviceUUID" ::: Vector VK_UUID_SIZE Word8) -> ("driverUUID" ::: Vector VK_UUID_SIZE Word8) -> ("deviceLUID" ::: Vector VK_LUID_SIZE Word8) -> ("deviceNodeMask" ::: Word32) -> ("deviceLUIDValid" ::: VkBool32) -> VkPhysicalDeviceIDPropertiesKHR-pattern VkPhysicalDeviceIDPropertiesKHR vkSType vkPNext vkDeviceUUID vkDriverUUID vkDeviceLUID vkDeviceNodeMask vkDeviceLUIDValid = VkPhysicalDeviceIDProperties vkSType vkPNext vkDeviceUUID vkDriverUUID vkDeviceLUID vkDeviceNodeMask vkDeviceLUIDValid--- No documentation found for TopLevel "VK_LUID_SIZE_KHR"-pattern VK_LUID_SIZE_KHR :: Integral a => a-pattern VK_LUID_SIZE_KHR = VK_LUID_SIZE+type PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties --- No documentation found for TopLevel "VK_LUID_SIZE_KHR"-type VK_LUID_SIZE_KHR = VK_LUID_SIZE--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR"-pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR"-pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES--- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR :: VkExternalMemoryHandleTypeFlagBits-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT--- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR :: VkExternalMemoryHandleTypeFlagBits-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT--- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR :: VkExternalMemoryHandleTypeFlagBits-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT--- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR"-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR :: VkExternalMemoryHandleTypeFlagBits-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT--- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR"-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR :: VkExternalMemoryHandleTypeFlagBits-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT--- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR"-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR :: VkExternalMemoryHandleTypeFlagBits-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT--- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR"-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR :: VkExternalMemoryHandleTypeFlagBits-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT--- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR"-pattern VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR :: VkExternalMemoryFeatureFlagBits-pattern VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT--- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR"-pattern VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR :: VkExternalMemoryFeatureFlagBits-pattern VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT--- No documentation found for TopLevel "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR"-pattern VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR :: VkExternalMemoryFeatureFlagBits-pattern VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT+type KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION"+pattern KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1+++type KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities"++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME"+pattern KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities"+
src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_fd.hs view
@@ -1,93 +1,85 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd- ( pattern VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR- , pattern VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR- , pattern VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR- , pattern VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION- , pattern VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME- , vkGetMemoryFdKHR- , vkGetMemoryFdPropertiesKHR- , VkImportMemoryFdInfoKHR(..)- , VkMemoryFdPropertiesKHR(..)- , VkMemoryGetFdInfoKHR(..)- ) where--import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.C.Types- ( CInt(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- )-import Graphics.Vulkan.Core10.Memory- ( VkDeviceMemory- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities- ( VkExternalMemoryHandleTypeFlagBits(..)- )+module Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd ( getMemoryFdKHR+ , getMemoryFdPropertiesKHR+ , ImportMemoryFdInfoKHR(..)+ , MemoryFdPropertiesKHR(..)+ , MemoryGetFdInfoKHR(..)+ , KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION+ , pattern KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION+ , KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME+ , pattern KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.C.Types (CInt)+import Foreign.C.Types (CInt(..))+import Foreign.C.Types (CInt(CInt))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetMemoryFdKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetMemoryFdPropertiesKHR))+import Graphics.Vulkan.Core10.Handles (DeviceMemory)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits(..))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetMemoryFdKHR+ :: FunPtr (Ptr Device_T -> Ptr MemoryGetFdInfoKHR -> Ptr CInt -> IO Result) -> Ptr Device_T -> Ptr MemoryGetFdInfoKHR -> Ptr CInt -> IO Result --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR"-pattern VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = VkStructureType 1000074000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR"-pattern VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = VkStructureType 1000074001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR"-pattern VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = VkStructureType 1000074002--- No documentation found for TopLevel "VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION"-pattern VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION :: Integral a => a-pattern VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME"-pattern VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" -- | vkGetMemoryFdKHR - Get a POSIX file descriptor for a memory object -- -- = Parameters ----- - @device@ is the logical device that created the device memory being--- exported.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- created the device memory being exported. ----- - @pGetFdInfo@ is a pointer to an instance of the--- 'VkMemoryGetFdInfoKHR' structure containing parameters of the export--- operation.+-- - @pGetFdInfo@ is a pointer to a 'MemoryGetFdInfoKHR' structure+-- containing parameters of the export operation. -- -- - @pFd@ will return a file descriptor representing the underlying -- resources of the device memory object. -- -- = Description ----- Each call to @vkGetMemoryFdKHR@ /must/ create a new file descriptor and+-- Each call to 'getMemoryFdKHR' /must/ create a new file descriptor and -- transfer ownership of it to the application. To avoid leaking resources, -- the application /must/ release ownership of the file descriptor using -- the @close@ system call when it is no longer needed, or by importing a@@ -95,84 +87,79 @@ -- the implementation /must/ set the file descriptor to be closed -- automatically when an @execve@ system call is made. ----- == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pGetFdInfo@ /must/ be a valid pointer to a valid--- @VkMemoryGetFdInfoKHR@ structure+-- == Return Codes ----- - @pFd@ /must/ be a valid pointer to a @int@ value+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- == Return Codes+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_TOO_MANY_OBJECTS@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS' ----- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkMemoryGetFdInfoKHR'+-- 'Graphics.Vulkan.Core10.Handles.Device', 'MemoryGetFdInfoKHR'+getMemoryFdKHR :: Device -> MemoryGetFdInfoKHR -> IO (("fd" ::: Int32))+getMemoryFdKHR device getFdInfo = evalContT $ do+ let vkGetMemoryFdKHR' = mkVkGetMemoryFdKHR (pVkGetMemoryFdKHR (deviceCmds (device :: Device)))+ pGetFdInfo <- ContT $ withCStruct (getFdInfo)+ pPFd <- ContT $ bracket (callocBytes @CInt 4) free+ r <- lift $ vkGetMemoryFdKHR' (deviceHandle (device)) pGetFdInfo (pPFd)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pFd <- lift $ peek @CInt pPFd+ pure $ (((\(CInt a) -> a) pFd))++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkGetMemoryFdKHR" vkGetMemoryFdKHR :: ("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkMemoryGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult+ "dynamic" mkVkGetMemoryFdPropertiesKHR+ :: FunPtr (Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> CInt -> Ptr MemoryFdPropertiesKHR -> IO Result) -> Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> CInt -> Ptr MemoryFdPropertiesKHR -> IO Result+ -- | vkGetMemoryFdPropertiesKHR - Get Properties of External Memory File -- Descriptors -- -- = Parameters ----- - @device@ is the logical device that will be importing @fd@.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- will be importing @fd@. -- -- - @handleType@ is the type of the handle @fd@. -- -- - @fd@ is the handle which will be imported. ----- - @pMemoryFdProperties@ will return properties of the handle @fd@.------ == Valid Usage------ - @fd@ /must/ be an external memory handle created outside of the--- Vulkan API.------ - @handleType@ /must/ not be--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR@.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle+-- - @pMemoryFdProperties@ is a pointer to a 'MemoryFdPropertiesKHR'+-- structure in which the properties of the handle @fd@ are returned. ----- - @handleType@ /must/ be a valid--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'--- value+-- == Return Codes ----- - @pMemoryFdProperties@ /must/ be a valid pointer to a--- @VkMemoryFdPropertiesKHR@ structure+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- == Return Codes+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_INVALID_EXTERNAL_HANDLE@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE' -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits',--- 'VkMemoryFdPropertiesKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetMemoryFdPropertiesKHR" vkGetMemoryFdPropertiesKHR :: ("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("fd" ::: CInt) -> ("pMemoryFdProperties" ::: Ptr VkMemoryFdPropertiesKHR) -> IO VkResult+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',+-- 'MemoryFdPropertiesKHR'+getMemoryFdPropertiesKHR :: Device -> ExternalMemoryHandleTypeFlagBits -> ("fd" ::: Int32) -> IO (MemoryFdPropertiesKHR)+getMemoryFdPropertiesKHR device handleType fd = evalContT $ do+ let vkGetMemoryFdPropertiesKHR' = mkVkGetMemoryFdPropertiesKHR (pVkGetMemoryFdPropertiesKHR (deviceCmds (device :: Device)))+ pPMemoryFdProperties <- ContT (withZeroCStruct @MemoryFdPropertiesKHR)+ r <- lift $ vkGetMemoryFdPropertiesKHR' (deviceHandle (device)) (handleType) (CInt (fd)) (pPMemoryFdProperties)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pMemoryFdProperties <- lift $ peekCStruct @MemoryFdPropertiesKHR pPMemoryFdProperties+ pure $ (pMemoryFdProperties)++ -- | VkImportMemoryFdInfoKHR - import memory created on the same physical -- device from a file descriptor --@@ -186,18 +173,20 @@ -- Applications /can/ import the same underlying memory into multiple -- instances of Vulkan, into the same instance from which it was exported, -- and multiple times into a given Vulkan instance. In all cases, each--- import operation /must/ create a distinct @VkDeviceMemory@ object.+-- import operation /must/ create a distinct+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object. -- -- == Valid Usage -- -- - If @handleType@ is not @0@, it /must/ be supported for import, as -- reported by--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalImageFormatProperties'+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties' -- or--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalBufferProperties'.+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties'. -- -- - The memory from which @fd@ was exported /must/ have been created on--- the same underlying physical device as @device@.+-- the same underlying physical device as+-- 'Graphics.Vulkan.Core10.Handles.Device'. -- -- - If @handleType@ is not @0@, it /must/ be defined as a POSIX file -- descriptor handle.@@ -206,75 +195,118 @@ -- type specified by @handleType@. -- -- - The memory represented by @fd@ /must/ have been created from a--- physical device and driver that is compatible with @device@ and--- @handleType@, as described in--- [{html_spec_relative}#external-memory-handle-types-compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-memory-handle-types-compatibility).+-- physical device and driver that is compatible with+-- 'Graphics.Vulkan.Core10.Handles.Device' and @handleType@, as+-- described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility>. -- -- - @fd@ /must/ obey any requirements listed for @handleType@ in--- [external memory handle types--- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-memory-handle-types-compatibility).+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility>. -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR@+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR' -- -- - If @handleType@ is not @0@, @handleType@ /must/ be a valid--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits' -- value -- -- = See Also ----- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkImportMemoryFdInfoKHR = VkImportMemoryFdInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @handleType@ specifies the handle type of @fd@.- vkHandleType :: VkExternalMemoryHandleTypeFlagBits+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ImportMemoryFdInfoKHR = ImportMemoryFdInfoKHR+ { -- | @handleType@ specifies the handle type of @fd@.+ handleType :: ExternalMemoryHandleTypeFlagBits , -- | @fd@ is the external handle to import.- vkFd :: CInt+ fd :: Int32 }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show ImportMemoryFdInfoKHR -instance Storable VkImportMemoryFdInfoKHR where+instance ToCStruct ImportMemoryFdInfoKHR where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImportMemoryFdInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlagBits)) (handleType)+ poke ((p `plusPtr` 20 :: Ptr CInt)) (CInt (fd))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 20 :: Ptr CInt)) (CInt (zero))+ f++instance FromCStruct ImportMemoryFdInfoKHR where+ peekCStruct p = do+ handleType <- peek @ExternalMemoryHandleTypeFlagBits ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlagBits))+ fd <- peek @CInt ((p `plusPtr` 20 :: Ptr CInt))+ pure $ ImportMemoryFdInfoKHR+ handleType ((\(CInt a) -> a) fd)++instance Storable ImportMemoryFdInfoKHR where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkImportMemoryFdInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkImportMemoryFdInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImportMemoryFdInfoKHR))- *> poke (ptr `plusPtr` 16) (vkHandleType (poked :: VkImportMemoryFdInfoKHR))- *> poke (ptr `plusPtr` 20) (vkFd (poked :: VkImportMemoryFdInfoKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImportMemoryFdInfoKHR where+ zero = ImportMemoryFdInfoKHR+ zero+ zero++ -- | VkMemoryFdPropertiesKHR - Properties of External Memory File Descriptors --+-- == Valid Usage (Implicit)+-- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetMemoryFdPropertiesKHR'-data VkMemoryFdPropertiesKHR = VkMemoryFdPropertiesKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @memoryTypeBits@ is a bitmask containing one bit set for every memory- -- type which the specified file descriptor /can/ be imported as.- vkMemoryTypeBits :: Word32- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getMemoryFdPropertiesKHR'+data MemoryFdPropertiesKHR = MemoryFdPropertiesKHR+ { -- | @memoryTypeBits@ is a bitmask containing one bit set for every memory+ -- type which the specified file descriptor /can/ be imported as.+ memoryTypeBits :: Word32 }+ deriving (Typeable)+deriving instance Show MemoryFdPropertiesKHR -instance Storable VkMemoryFdPropertiesKHR where+instance ToCStruct MemoryFdPropertiesKHR where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p MemoryFdPropertiesKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (memoryTypeBits)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ f++instance FromCStruct MemoryFdPropertiesKHR where+ peekCStruct p = do+ memoryTypeBits <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pure $ MemoryFdPropertiesKHR+ memoryTypeBits++instance Storable MemoryFdPropertiesKHR where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkMemoryFdPropertiesKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkMemoryFdPropertiesKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkMemoryFdPropertiesKHR))- *> poke (ptr `plusPtr` 16) (vkMemoryTypeBits (poked :: VkMemoryFdPropertiesKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MemoryFdPropertiesKHR where+ zero = MemoryFdPropertiesKHR+ zero++ -- | VkMemoryGetFdInfoKHR - Structure describing a POSIX FD semaphore export -- operation --@@ -282,63 +314,85 @@ -- -- The properties of the file descriptor exported depend on the value of -- @handleType@. See--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits' -- for a description of the properties of the defined external memory -- handle types. ----- __Note__+-- Note -- -- The size of the exported file /may/ be larger than the size requested by--- 'Graphics.Vulkan.Core10.Memory.VkMemoryAllocateInfo'::allocationSize. If--- @handleType@ is @VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT@, then--- the application /can/ query the file’s actual size with--- [lseek(2)](man:lseek(2)).------ == Valid Usage------ - @handleType@ /must/ have been included in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExportMemoryAllocateInfo'::@handleTypes@--- when @memory@ was created.------ - @handleType@ /must/ be defined as a POSIX file descriptor handle.+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo'::allocationSize. If+-- @handleType@ is+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT',+-- then the application /can/ query the file’s actual size with+-- <man:lseek(2) lseek(2)>. -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR@------ - @pNext@ /must/ be @NULL@------ - @memory@ /must/ be a valid @VkDeviceMemory@ handle------ - @handleType@ /must/ be a valid--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'--- value--- -- = See Also ----- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkGetMemoryFdKHR'-data VkMemoryGetFdInfoKHR = VkMemoryGetFdInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @memory@ is the memory object from which the handle will be exported.- vkMemory :: VkDeviceMemory- , -- | @handleType@ is the type of handle requested.- vkHandleType :: VkExternalMemoryHandleTypeFlagBits+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory',+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getMemoryFdKHR'+data MemoryGetFdInfoKHR = MemoryGetFdInfoKHR+ { -- | @memory@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.DeviceMemory'+ -- handle+ memory :: DeviceMemory+ , -- | @handleType@ /must/ be a valid+ -- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits'+ -- value+ handleType :: ExternalMemoryHandleTypeFlagBits }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show MemoryGetFdInfoKHR -instance Storable VkMemoryGetFdInfoKHR where+instance ToCStruct MemoryGetFdInfoKHR where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p MemoryGetFdInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR)+ 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_FD_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DeviceMemory)) (zero)+ poke ((p `plusPtr` 24 :: Ptr ExternalMemoryHandleTypeFlagBits)) (zero)+ f++instance FromCStruct MemoryGetFdInfoKHR where+ peekCStruct p = do+ memory <- peek @DeviceMemory ((p `plusPtr` 16 :: Ptr DeviceMemory))+ handleType <- peek @ExternalMemoryHandleTypeFlagBits ((p `plusPtr` 24 :: Ptr ExternalMemoryHandleTypeFlagBits))+ pure $ MemoryGetFdInfoKHR+ memory handleType++instance Storable MemoryGetFdInfoKHR where sizeOf ~_ = 32 alignment ~_ = 8- peek ptr = VkMemoryGetFdInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkMemoryGetFdInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkMemoryGetFdInfoKHR))- *> poke (ptr `plusPtr` 16) (vkMemory (poked :: VkMemoryGetFdInfoKHR))- *> poke (ptr `plusPtr` 24) (vkHandleType (poked :: VkMemoryGetFdInfoKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MemoryGetFdInfoKHR where+ zero = MemoryGetFdInfoKHR+ zero+ zero+++type KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION"+pattern KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1+++type KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd"++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME"+pattern KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_fd.hs-boot view
@@ -0,0 +1,32 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd ( ImportMemoryFdInfoKHR+ , MemoryFdPropertiesKHR+ , MemoryGetFdInfoKHR+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ImportMemoryFdInfoKHR++instance ToCStruct ImportMemoryFdInfoKHR+instance Show ImportMemoryFdInfoKHR++instance FromCStruct ImportMemoryFdInfoKHR+++data MemoryFdPropertiesKHR++instance ToCStruct MemoryFdPropertiesKHR+instance Show MemoryFdPropertiesKHR++instance FromCStruct MemoryFdPropertiesKHR+++data MemoryGetFdInfoKHR++instance ToCStruct MemoryGetFdInfoKHR+instance Show MemoryGetFdInfoKHR++instance FromCStruct MemoryGetFdInfoKHR+
src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_win32.hs view
@@ -1,99 +1,88 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32- ( LPCWSTR- , pattern VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR- , pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR- , pattern VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR- , pattern VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR- , pattern VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION- , pattern VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME- , vkGetMemoryWin32HandleKHR- , vkGetMemoryWin32HandlePropertiesKHR- , VkImportMemoryWin32HandleInfoKHR(..)- , VkExportMemoryWin32HandleInfoKHR(..)- , VkMemoryWin32HandlePropertiesKHR(..)- , VkMemoryGetWin32HandleInfoKHR(..)- ) where--import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.C.Types- ( CWchar- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- )-import Graphics.Vulkan.Core10.Memory- ( VkDeviceMemory- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities- ( VkExternalMemoryHandleTypeFlagBits(..)- )-import Graphics.Vulkan.Extensions.VK_NV_external_memory_win32- ( DWORD- , HANDLE- , SECURITY_ATTRIBUTES- )+module Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32 ( getMemoryWin32HandleKHR+ , getMemoryWin32HandlePropertiesKHR+ , ImportMemoryWin32HandleInfoKHR(..)+ , ExportMemoryWin32HandleInfoKHR(..)+ , MemoryWin32HandlePropertiesKHR(..)+ , MemoryGetWin32HandleInfoKHR(..)+ , KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION+ , pattern KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION+ , KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME+ , pattern KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME+ , HANDLE+ , DWORD+ , LPCWSTR+ , SECURITY_ATTRIBUTES+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Extensions.WSITypes (DWORD)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetMemoryWin32HandleKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetMemoryWin32HandlePropertiesKHR))+import Graphics.Vulkan.Core10.Handles (DeviceMemory)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits)+import Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits (ExternalMemoryHandleTypeFlagBits(..))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Extensions.WSITypes (HANDLE)+import Graphics.Vulkan.Extensions.WSITypes (LPCWSTR)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Extensions.WSITypes (SECURITY_ATTRIBUTES)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.WSITypes (DWORD)+import Graphics.Vulkan.Extensions.WSITypes (HANDLE)+import Graphics.Vulkan.Extensions.WSITypes (LPCWSTR)+import Graphics.Vulkan.Extensions.WSITypes (SECURITY_ATTRIBUTES)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetMemoryWin32HandleKHR+ :: FunPtr (Ptr Device_T -> Ptr MemoryGetWin32HandleInfoKHR -> Ptr HANDLE -> IO Result) -> Ptr Device_T -> Ptr MemoryGetWin32HandleInfoKHR -> Ptr HANDLE -> IO Result --- No documentation found for TopLevel "LPCWSTR"-type LPCWSTR = Ptr CWchar--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = VkStructureType 1000073000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = VkStructureType 1000073001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR"-pattern VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = VkStructureType 1000073002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = VkStructureType 1000073003--- No documentation found for TopLevel "VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION"-pattern VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION :: Integral a => a-pattern VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME"-pattern VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_KHR_external_memory_win32" -- | vkGetMemoryWin32HandleKHR - Get a Windows HANDLE for a memory object -- -- = Parameters ----- - @device@ is the logical device that created the device memory being--- exported.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- created the device memory being exported. ----- - @pGetWin32HandleInfo@ is a pointer to an instance of the--- 'VkMemoryGetWin32HandleInfoKHR' structure containing parameters of--- the export operation.+-- - @pGetWin32HandleInfo@ is a pointer to a+-- 'MemoryGetWin32HandleInfoKHR' structure containing parameters of the+-- export operation. -- -- - @pHandle@ will return the Windows handle representing the underlying -- resources of the device memory object.@@ -101,44 +90,50 @@ -- = Description -- -- For handle types defined as NT handles, the handles returned by--- @vkGetMemoryWin32HandleKHR@ are owned by the application. To avoid--- leaking resources, the application /must/ release ownership of them--- using the @CloseHandle@ system call when they are no longer needed.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle+-- 'getMemoryWin32HandleKHR' are owned by the application. To avoid leaking+-- resources, the application /must/ release ownership of them using the+-- @CloseHandle@ system call when they are no longer needed. ----- - @pGetWin32HandleInfo@ /must/ be a valid pointer to a valid--- @VkMemoryGetWin32HandleInfoKHR@ structure+-- == Return Codes ----- - @pHandle@ /must/ be a valid pointer to a @HANDLE@ value+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- == Return Codes+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_TOO_MANY_OBJECTS@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS' ----- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkMemoryGetWin32HandleInfoKHR'+-- 'Graphics.Vulkan.Core10.Handles.Device', 'MemoryGetWin32HandleInfoKHR'+getMemoryWin32HandleKHR :: Device -> MemoryGetWin32HandleInfoKHR -> IO (HANDLE)+getMemoryWin32HandleKHR device getWin32HandleInfo = evalContT $ do+ let vkGetMemoryWin32HandleKHR' = mkVkGetMemoryWin32HandleKHR (pVkGetMemoryWin32HandleKHR (deviceCmds (device :: Device)))+ pGetWin32HandleInfo <- ContT $ withCStruct (getWin32HandleInfo)+ pPHandle <- ContT $ bracket (callocBytes @HANDLE 8) free+ r <- lift $ vkGetMemoryWin32HandleKHR' (deviceHandle (device)) pGetWin32HandleInfo (pPHandle)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pHandle <- lift $ peek @HANDLE pPHandle+ pure $ (pHandle)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkGetMemoryWin32HandleKHR" vkGetMemoryWin32HandleKHR :: ("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkMemoryGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult+ "dynamic" mkVkGetMemoryWin32HandlePropertiesKHR+ :: FunPtr (Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> HANDLE -> Ptr MemoryWin32HandlePropertiesKHR -> IO Result) -> Ptr Device_T -> ExternalMemoryHandleTypeFlagBits -> HANDLE -> Ptr MemoryWin32HandlePropertiesKHR -> IO Result+ -- | vkGetMemoryWin32HandlePropertiesKHR - Get Properties of External Memory -- Win32 Handles -- -- = Parameters ----- - @device@ is the logical device that will be importing @handle@.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- will be importing @handle@. -- -- - @handleType@ is the type of the handle @handle@. --@@ -146,43 +141,31 @@ -- -- - @pMemoryWin32HandleProperties@ will return properties of @handle@. ----- == Valid Usage------ - @handle@ /must/ be an external memory handle created outside of the--- Vulkan API.------ - @handleType@ /must/ not be one of the handle types defined as--- opaque.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @handleType@ /must/ be a valid--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'--- value+-- == Return Codes ----- - @pMemoryWin32HandleProperties@ /must/ be a valid pointer to a--- @VkMemoryWin32HandlePropertiesKHR@ structure+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- == Return Codes+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_INVALID_EXTERNAL_HANDLE@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE' -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits',--- 'VkMemoryWin32HandlePropertiesKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetMemoryWin32HandlePropertiesKHR" vkGetMemoryWin32HandlePropertiesKHR :: ("device" ::: VkDevice) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagBits) -> ("handle" ::: HANDLE) -> ("pMemoryWin32HandleProperties" ::: Ptr VkMemoryWin32HandlePropertiesKHR) -> IO VkResult+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',+-- 'MemoryWin32HandlePropertiesKHR'+getMemoryWin32HandlePropertiesKHR :: Device -> ExternalMemoryHandleTypeFlagBits -> HANDLE -> IO (MemoryWin32HandlePropertiesKHR)+getMemoryWin32HandlePropertiesKHR device handleType handle = evalContT $ do+ let vkGetMemoryWin32HandlePropertiesKHR' = mkVkGetMemoryWin32HandlePropertiesKHR (pVkGetMemoryWin32HandlePropertiesKHR (deviceCmds (device :: Device)))+ pPMemoryWin32HandleProperties <- ContT (withZeroCStruct @MemoryWin32HandlePropertiesKHR)+ r <- lift $ vkGetMemoryWin32HandlePropertiesKHR' (deviceHandle (device)) (handleType) (handle) (pPMemoryWin32HandleProperties)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pMemoryWin32HandleProperties <- lift $ peekCStruct @MemoryWin32HandlePropertiesKHR pPMemoryWin32HandleProperties+ pure $ (pMemoryWin32HandleProperties)++ -- | VkImportMemoryWin32HandleInfoKHR - import Win32 memory created on the -- same physical device --@@ -196,29 +179,31 @@ -- Applications /can/ import the same underlying memory into multiple -- instances of Vulkan, into the same instance from which it was exported, -- and multiple times into a given Vulkan instance. In all cases, each--- import operation /must/ create a distinct @VkDeviceMemory@ object.+-- import operation /must/ create a distinct+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object. -- -- == Valid Usage -- -- - If @handleType@ is not @0@, it /must/ be supported for import, as -- reported by--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalImageFormatProperties'+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalImageFormatProperties' -- or--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalBufferProperties'.+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.ExternalBufferProperties'. -- -- - The memory from which @handle@ was exported, or the memory named by -- @name@ /must/ have been created on the same underlying physical--- device as @device@.+-- device as 'Graphics.Vulkan.Core10.Handles.Device'. -- -- - If @handleType@ is not @0@, it /must/ be defined as an NT handle or -- a global share handle. -- -- - If @handleType@ is not--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT@,--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT@,--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT@, or--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT@, @name@ /must/--- be @NULL@.+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT',+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT',+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT',+-- or+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT',+-- @name@ /must/ be @NULL@. -- -- - If @handleType@ is not @0@ and @handle@ is @NULL@, @name@ /must/ -- name a valid memory resource of the type specified by @handleType@.@@ -229,54 +214,75 @@ -- - if @handle@ is not @NULL@, @name@ must be @NULL@. -- -- - If @handle@ is not @NULL@, it /must/ obey any requirements listed--- for @handleType@ in [external memory handle types--- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-memory-handle-types-compatibility).+-- for @handleType@ in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility>. -- -- - If @name@ is not @NULL@, it /must/ obey any requirements listed for--- @handleType@ in [external memory handle types--- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-memory-handle-types-compatibility).+-- @handleType@ in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility>. -- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR' -- -- - If @handleType@ is not @0@, @handleType@ /must/ be a valid--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits' -- value -- -- = See Also ----- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkImportMemoryWin32HandleInfoKHR = VkImportMemoryWin32HandleInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @handleType@ specifies the type of @handle@ or @name@.- vkHandleType :: VkExternalMemoryHandleTypeFlagBits+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ImportMemoryWin32HandleInfoKHR = ImportMemoryWin32HandleInfoKHR+ { -- | @handleType@ specifies the type of @handle@ or @name@.+ handleType :: ExternalMemoryHandleTypeFlagBits , -- | @handle@ is the external handle to import, or @NULL@.- vkHandle :: HANDLE- , -- | @name@ is a NULL-terminated UTF-16 string naming the underlying memory- -- resource to import, or @NULL@.- vkName :: LPCWSTR+ handle :: HANDLE+ , -- | @name@ is a null-terminated UTF-16 string naming the underlying memory+ -- resource to import, or @NULL@.+ name :: LPCWSTR }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show ImportMemoryWin32HandleInfoKHR -instance Storable VkImportMemoryWin32HandleInfoKHR where+instance ToCStruct ImportMemoryWin32HandleInfoKHR where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImportMemoryWin32HandleInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlagBits)) (handleType)+ poke ((p `plusPtr` 24 :: Ptr HANDLE)) (handle)+ poke ((p `plusPtr` 32 :: Ptr LPCWSTR)) (name)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct ImportMemoryWin32HandleInfoKHR where+ peekCStruct p = do+ handleType <- peek @ExternalMemoryHandleTypeFlagBits ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlagBits))+ handle <- peek @HANDLE ((p `plusPtr` 24 :: Ptr HANDLE))+ name <- peek @LPCWSTR ((p `plusPtr` 32 :: Ptr LPCWSTR))+ pure $ ImportMemoryWin32HandleInfoKHR+ handleType handle name++instance Storable ImportMemoryWin32HandleInfoKHR where sizeOf ~_ = 40 alignment ~_ = 8- peek ptr = VkImportMemoryWin32HandleInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkImportMemoryWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImportMemoryWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 16) (vkHandleType (poked :: VkImportMemoryWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 24) (vkHandle (poked :: VkImportMemoryWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 32) (vkName (poked :: VkImportMemoryWin32HandleInfoKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImportMemoryWin32HandleInfoKHR where+ zero = ImportMemoryWin32HandleInfoKHR+ zero+ zero+ zero++ -- | VkExportMemoryWin32HandleInfoKHR - Structure specifying additional -- attributes of Windows handles exported from a memory --@@ -287,106 +293,157 @@ -- created by the application will not inherit the handle, as described in -- the MSDN documentation for “Synchronization Object Security and Access -- Rights”1. Further, if the structure is not present, the access rights--- will be+-- used depend on the handle type. ----- @DXGI_SHARED_RESOURCE_READ@ | @DXGI_SHARED_RESOURCE_WRITE@+-- For handles of the following types: ----- for handles of the following types:+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT'+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT' ----- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT@--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT@+-- The implementation /must/ ensure the access rights allow read and write+-- access to the memory. ----- And+-- For handles of the following types: ----- @GENERIC_ALL@+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT'+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT' ----- for handles of the following types:+-- The access rights /must/ be: ----- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT@--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT@+-- @GENERIC_ALL@ -- -- [1]--- <https://msdn.microsoft.com/en-us/library/windows/desktop/ms686670.aspx>+-- <https://docs.microsoft.com/en-us/windows/win32/sync/synchronization-object-security-and-access-rights> -- -- == Valid Usage -- -- - If--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExportMemoryAllocateInfo'::@handleTypes@--- does not include @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT@,--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT@,--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT@, or--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT@,--- VkExportMemoryWin32HandleInfoKHR /must/ not be in the @pNext@ chain--- of 'Graphics.Vulkan.Core10.Memory.VkMemoryAllocateInfo'.+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'::@handleTypes@+-- does not include+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT',+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT',+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT',+-- or+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT',+-- a 'ExportMemoryWin32HandleInfoKHR' structure /must/ not be included+-- in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo'. -- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR' -- -- - If @pAttributes@ is not @NULL@, @pAttributes@ /must/ be a valid--- pointer to a valid @SECURITY_ATTRIBUTES@ value+-- pointer to a valid+-- 'Graphics.Vulkan.Extensions.WSITypes.SECURITY_ATTRIBUTES' value -- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkExportMemoryWin32HandleInfoKHR = VkExportMemoryWin32HandleInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @pAttributes@ is a pointer to a Windows @SECURITY_ATTRIBUTES@ structure- -- specifying security attributes of the handle.- vkPAttributes :: Ptr SECURITY_ATTRIBUTES- , -- | @dwAccess@ is a @DWORD@ specifying access rights of the handle.- vkDwAccess :: DWORD- , -- | @name@ is a NULL-terminated UTF-16 string to associate with the- -- underlying resource referenced by NT handles exported from the created- -- memory.- vkName :: LPCWSTR+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ExportMemoryWin32HandleInfoKHR = ExportMemoryWin32HandleInfoKHR+ { -- | @pAttributes@ is a pointer to a Windows+ -- 'Graphics.Vulkan.Extensions.WSITypes.SECURITY_ATTRIBUTES' structure+ -- specifying security attributes of the handle.+ attributes :: Ptr SECURITY_ATTRIBUTES+ , -- | @dwAccess@ is a 'Graphics.Vulkan.Extensions.WSITypes.DWORD' specifying+ -- access rights of the handle.+ dwAccess :: DWORD+ , -- | @name@ is a null-terminated UTF-16 string to associate with the+ -- underlying resource referenced by NT handles exported from the created+ -- memory.+ name :: LPCWSTR }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show ExportMemoryWin32HandleInfoKHR -instance Storable VkExportMemoryWin32HandleInfoKHR where+instance ToCStruct ExportMemoryWin32HandleInfoKHR where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ExportMemoryWin32HandleInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr (Ptr SECURITY_ATTRIBUTES))) (attributes)+ poke ((p `plusPtr` 24 :: Ptr DWORD)) (dwAccess)+ poke ((p `plusPtr` 32 :: Ptr LPCWSTR)) (name)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 24 :: Ptr DWORD)) (zero)+ poke ((p `plusPtr` 32 :: Ptr LPCWSTR)) (zero)+ f++instance FromCStruct ExportMemoryWin32HandleInfoKHR where+ peekCStruct p = do+ pAttributes <- peek @(Ptr SECURITY_ATTRIBUTES) ((p `plusPtr` 16 :: Ptr (Ptr SECURITY_ATTRIBUTES)))+ dwAccess <- peek @DWORD ((p `plusPtr` 24 :: Ptr DWORD))+ name <- peek @LPCWSTR ((p `plusPtr` 32 :: Ptr LPCWSTR))+ pure $ ExportMemoryWin32HandleInfoKHR+ pAttributes dwAccess name++instance Storable ExportMemoryWin32HandleInfoKHR where sizeOf ~_ = 40 alignment ~_ = 8- peek ptr = VkExportMemoryWin32HandleInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkExportMemoryWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkExportMemoryWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 16) (vkPAttributes (poked :: VkExportMemoryWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 24) (vkDwAccess (poked :: VkExportMemoryWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 32) (vkName (poked :: VkExportMemoryWin32HandleInfoKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ExportMemoryWin32HandleInfoKHR where+ zero = ExportMemoryWin32HandleInfoKHR+ zero+ zero+ zero++ -- | VkMemoryWin32HandlePropertiesKHR - Properties of External Memory Windows -- Handles --+-- == Valid Usage (Implicit)+-- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetMemoryWin32HandlePropertiesKHR'-data VkMemoryWin32HandlePropertiesKHR = VkMemoryWin32HandlePropertiesKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @memoryTypeBits@ is a bitmask containing one bit set for every memory- -- type which the specified windows handle /can/ be imported as.- vkMemoryTypeBits :: Word32- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getMemoryWin32HandlePropertiesKHR'+data MemoryWin32HandlePropertiesKHR = MemoryWin32HandlePropertiesKHR+ { -- | @memoryTypeBits@ is a bitmask containing one bit set for every memory+ -- type which the specified windows handle /can/ be imported as.+ memoryTypeBits :: Word32 }+ deriving (Typeable)+deriving instance Show MemoryWin32HandlePropertiesKHR -instance Storable VkMemoryWin32HandlePropertiesKHR where+instance ToCStruct MemoryWin32HandlePropertiesKHR where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p MemoryWin32HandlePropertiesKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (memoryTypeBits)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ f++instance FromCStruct MemoryWin32HandlePropertiesKHR where+ peekCStruct p = do+ memoryTypeBits <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pure $ MemoryWin32HandlePropertiesKHR+ memoryTypeBits++instance Storable MemoryWin32HandlePropertiesKHR where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkMemoryWin32HandlePropertiesKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkMemoryWin32HandlePropertiesKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkMemoryWin32HandlePropertiesKHR))- *> poke (ptr `plusPtr` 16) (vkMemoryTypeBits (poked :: VkMemoryWin32HandlePropertiesKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MemoryWin32HandlePropertiesKHR where+ zero = MemoryWin32HandlePropertiesKHR+ zero++ -- | VkMemoryGetWin32HandleInfoKHR - Structure describing a Win32 handle -- semaphore export operation --@@ -394,18 +451,18 @@ -- -- The properties of the handle returned depend on the value of -- @handleType@. See--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits' -- for a description of the properties of the defined external memory -- handle types. -- -- == Valid Usage -- -- - @handleType@ /must/ have been included in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory.VkExportMemoryAllocateInfo'::@handleTypes@+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExportMemoryAllocateInfo'::@handleTypes@ -- when @memory@ was created. -- -- - If @handleType@ is defined as an NT handle,--- 'vkGetMemoryWin32HandleKHR' /must/ be called no more than once for+-- 'getMemoryWin32HandleKHR' /must/ be called no more than once for -- each valid unique combination of @memory@ and @handleType@. -- -- - @handleType@ /must/ be defined as an NT handle or a global share@@ -414,42 +471,78 @@ -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR' -- -- - @pNext@ /must/ be @NULL@ ----- - @memory@ /must/ be a valid @VkDeviceMemory@ handle+-- - @memory@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' handle -- -- - @handleType@ /must/ be a valid--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits'+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits' -- value -- -- = See Also ----- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBits',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetMemoryWin32HandleKHR'-data VkMemoryGetWin32HandleInfoKHR = VkMemoryGetWin32HandleInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @memory@ is the memory object from which the handle will be exported.- vkMemory :: VkDeviceMemory+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory',+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.ExternalMemoryHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getMemoryWin32HandleKHR'+data MemoryGetWin32HandleInfoKHR = MemoryGetWin32HandleInfoKHR+ { -- | @memory@ is the memory object from which the handle will be exported.+ memory :: DeviceMemory , -- | @handleType@ is the type of handle requested.- vkHandleType :: VkExternalMemoryHandleTypeFlagBits+ handleType :: ExternalMemoryHandleTypeFlagBits }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show MemoryGetWin32HandleInfoKHR -instance Storable VkMemoryGetWin32HandleInfoKHR where+instance ToCStruct MemoryGetWin32HandleInfoKHR where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p MemoryGetWin32HandleInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR)+ 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_WIN32_HANDLE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DeviceMemory)) (zero)+ poke ((p `plusPtr` 24 :: Ptr ExternalMemoryHandleTypeFlagBits)) (zero)+ f++instance FromCStruct MemoryGetWin32HandleInfoKHR where+ peekCStruct p = do+ memory <- peek @DeviceMemory ((p `plusPtr` 16 :: Ptr DeviceMemory))+ handleType <- peek @ExternalMemoryHandleTypeFlagBits ((p `plusPtr` 24 :: Ptr ExternalMemoryHandleTypeFlagBits))+ pure $ MemoryGetWin32HandleInfoKHR+ memory handleType++instance Storable MemoryGetWin32HandleInfoKHR where sizeOf ~_ = 32 alignment ~_ = 8- peek ptr = VkMemoryGetWin32HandleInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkMemoryGetWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkMemoryGetWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 16) (vkMemory (poked :: VkMemoryGetWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 24) (vkHandleType (poked :: VkMemoryGetWin32HandleInfoKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MemoryGetWin32HandleInfoKHR where+ zero = MemoryGetWin32HandleInfoKHR+ zero+ zero+++type KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION"+pattern KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1+++type KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_KHR_external_memory_win32"++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME"+pattern KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_KHR_external_memory_win32"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_external_memory_win32.hs-boot view
@@ -0,0 +1,41 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32 ( ExportMemoryWin32HandleInfoKHR+ , ImportMemoryWin32HandleInfoKHR+ , MemoryGetWin32HandleInfoKHR+ , MemoryWin32HandlePropertiesKHR+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ExportMemoryWin32HandleInfoKHR++instance ToCStruct ExportMemoryWin32HandleInfoKHR+instance Show ExportMemoryWin32HandleInfoKHR++instance FromCStruct ExportMemoryWin32HandleInfoKHR+++data ImportMemoryWin32HandleInfoKHR++instance ToCStruct ImportMemoryWin32HandleInfoKHR+instance Show ImportMemoryWin32HandleInfoKHR++instance FromCStruct ImportMemoryWin32HandleInfoKHR+++data MemoryGetWin32HandleInfoKHR++instance ToCStruct MemoryGetWin32HandleInfoKHR+instance Show MemoryGetWin32HandleInfoKHR++instance FromCStruct MemoryGetWin32HandleInfoKHR+++data MemoryWin32HandlePropertiesKHR++instance ToCStruct MemoryWin32HandlePropertiesKHR+instance Show MemoryWin32HandlePropertiesKHR++instance FromCStruct MemoryWin32HandlePropertiesKHR+
src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore.hs view
@@ -1,67 +1,52 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}+module Graphics.Vulkan.Extensions.VK_KHR_external_semaphore ( pattern STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR+ , pattern SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR+ , SemaphoreImportFlagsKHR+ , SemaphoreImportFlagBitsKHR+ , ExportSemaphoreCreateInfoKHR+ , KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION+ , pattern KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION+ , KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME+ , pattern KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_KHR_external_semaphore- ( pattern VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION- , pattern VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME- , VkSemaphoreImportFlagBitsKHR- , VkSemaphoreImportFlagsKHR- , VkExportSemaphoreCreateInfoKHR- , pattern VkExportSemaphoreCreateInfoKHR- , pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR- , pattern VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR- ) where+import Data.String (IsString)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore (ExportSemaphoreCreateInfo)+import Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits (SemaphoreImportFlagBits)+import Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits (SemaphoreImportFlags)+import Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits (SemaphoreImportFlags)+import Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits (SemaphoreImportFlagBits(SEMAPHORE_IMPORT_TEMPORARY_BIT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO -import Data.String- ( IsString- )-import Foreign.Ptr- ( Ptr- )-import Graphics.Vulkan.NamedType- ( (:::)- ) +-- No documentation found for TopLevel "VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR"+pattern SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = SEMAPHORE_IMPORT_TEMPORARY_BIT -import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore- ( VkExportSemaphoreCreateInfo(..)- , VkSemaphoreImportFlagBits(..)- , VkSemaphoreImportFlags- , pattern VK_SEMAPHORE_IMPORT_TEMPORARY_BIT- , pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities- ( VkExternalSemaphoreHandleTypeFlags- ) +-- No documentation found for TopLevel "VkSemaphoreImportFlagsKHR"+type SemaphoreImportFlagsKHR = SemaphoreImportFlags --- No documentation found for TopLevel "VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION"-pattern VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION :: Integral a => a-pattern VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME"-pattern VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore"+ -- No documentation found for TopLevel "VkSemaphoreImportFlagBitsKHR"-type VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits--- No documentation found for TopLevel "VkSemaphoreImportFlagsKHR"-type VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags--- No documentation found for TopLevel "VkExportSemaphoreCreateInfoKHR"-type VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo+type SemaphoreImportFlagBitsKHR = SemaphoreImportFlagBits -- No documentation found for TopLevel "VkExportSemaphoreCreateInfoKHR"-pattern VkExportSemaphoreCreateInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("handleTypes" ::: VkExternalSemaphoreHandleTypeFlags) -> VkExportSemaphoreCreateInfoKHR-pattern VkExportSemaphoreCreateInfoKHR vkSType vkPNext vkHandleTypes = VkExportSemaphoreCreateInfo vkSType vkPNext vkHandleTypes--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO--- No documentation found for TopLevel "VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR"-pattern VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR :: VkSemaphoreImportFlagBits-pattern VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT+type ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo+++type KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION"+pattern KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1+++type KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore"++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME"+pattern KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore"+
src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_capabilities.hs view
@@ -1,125 +1,128 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}+module Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_capabilities ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR+ , pattern STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR+ , pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR+ , pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR+ , pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR+ , pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR+ , pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR+ , pattern EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR+ , pattern EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR+ , getPhysicalDeviceExternalSemaphorePropertiesKHR+ , ExternalSemaphoreHandleTypeFlagsKHR+ , ExternalSemaphoreFeatureFlagsKHR+ , ExternalSemaphoreHandleTypeFlagBitsKHR+ , ExternalSemaphoreFeatureFlagBitsKHR+ , PhysicalDeviceExternalSemaphoreInfoKHR+ , ExternalSemaphorePropertiesKHR+ , KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION+ , pattern KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION+ , KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME+ , pattern KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME+ , PhysicalDeviceIDPropertiesKHR+ , pattern LUID_SIZE_KHR+ ) where -module Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_capabilities- ( pattern VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION- , pattern VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME- , vkGetPhysicalDeviceExternalSemaphorePropertiesKHR- , VkExternalSemaphoreHandleTypeFlagBitsKHR- , VkExternalSemaphoreFeatureFlagBitsKHR- , VkExternalSemaphoreHandleTypeFlagsKHR- , VkExternalSemaphoreFeatureFlagsKHR- , VkPhysicalDeviceExternalSemaphoreInfoKHR- , pattern VkPhysicalDeviceExternalSemaphoreInfoKHR- , VkExternalSemaphorePropertiesKHR- , pattern VkExternalSemaphorePropertiesKHR- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR- , pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR- , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR- , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR- , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR- , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR- , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR- , pattern VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR- , pattern VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR- ) where+import Data.String (IsString)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities (getPhysicalDeviceExternalSemaphoreProperties)+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits (ExternalSemaphoreFeatureFlagBits)+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits (ExternalSemaphoreFeatureFlags)+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlagBits)+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlags)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities (ExternalSemaphoreProperties)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities (PhysicalDeviceExternalSemaphoreInfo)+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits (ExternalSemaphoreFeatureFlags)+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits (ExternalSemaphoreFeatureFlagBits(EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT))+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits (ExternalSemaphoreFeatureFlags)+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits (ExternalSemaphoreFeatureFlagBits(EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT))+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlags)+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlagBits(EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT))+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlags)+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlagBits(EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT))+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlags)+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlagBits(EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT))+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlags)+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlagBits(EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT))+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlags)+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlagBits(EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO))+import Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities (PhysicalDeviceIDPropertiesKHR)+import Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities (pattern LUID_SIZE_KHR)+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO -import Data.String- ( IsString- )-import Foreign.Ptr- ( Ptr- )-import Graphics.Vulkan.NamedType- ( (:::)- ) +-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES -import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkPhysicalDevice- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities- ( VkExternalSemaphoreFeatureFlagBits(..)- , VkExternalSemaphoreHandleTypeFlagBits(..)- , VkExternalSemaphoreProperties(..)- , VkPhysicalDeviceExternalSemaphoreInfo(..)- , VkExternalSemaphoreFeatureFlags- , VkExternalSemaphoreHandleTypeFlags- , vkGetPhysicalDeviceExternalSemaphoreProperties- , pattern VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT- , pattern VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT- , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT- , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT- , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT- , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT- , pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT- , pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO- ) +-- No documentation found for TopLevel "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"+pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT --- No documentation found for TopLevel "VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION"-pattern VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION :: Integral a => a-pattern VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME"-pattern VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities"++-- No documentation found for TopLevel "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"+pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT+++-- No documentation found for TopLevel "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"+pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT+++-- No documentation found for TopLevel "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR"+pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT+++-- No documentation found for TopLevel "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR"+pattern EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT+++-- No documentation found for TopLevel "VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR"+pattern EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT+++-- No documentation found for TopLevel "VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR"+pattern EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT++ -- No documentation found for TopLevel "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"-vkGetPhysicalDeviceExternalSemaphorePropertiesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pExternalSemaphoreInfo" ::: Ptr VkPhysicalDeviceExternalSemaphoreInfo) -> ("pExternalSemaphoreProperties" ::: Ptr VkExternalSemaphoreProperties) -> IO ()-vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = vkGetPhysicalDeviceExternalSemaphoreProperties--- No documentation found for TopLevel "VkExternalSemaphoreHandleTypeFlagBitsKHR"-type VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits--- No documentation found for TopLevel "VkExternalSemaphoreFeatureFlagBitsKHR"-type VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits+getPhysicalDeviceExternalSemaphorePropertiesKHR = getPhysicalDeviceExternalSemaphoreProperties++ -- No documentation found for TopLevel "VkExternalSemaphoreHandleTypeFlagsKHR"-type VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags+type ExternalSemaphoreHandleTypeFlagsKHR = ExternalSemaphoreHandleTypeFlags++ -- No documentation found for TopLevel "VkExternalSemaphoreFeatureFlagsKHR"-type VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags--- No documentation found for TopLevel "VkPhysicalDeviceExternalSemaphoreInfoKHR"-type VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo+type ExternalSemaphoreFeatureFlagsKHR = ExternalSemaphoreFeatureFlags +-- No documentation found for TopLevel "VkExternalSemaphoreHandleTypeFlagBitsKHR"+type ExternalSemaphoreHandleTypeFlagBitsKHR = ExternalSemaphoreHandleTypeFlagBits+++-- No documentation found for TopLevel "VkExternalSemaphoreFeatureFlagBitsKHR"+type ExternalSemaphoreFeatureFlagBitsKHR = ExternalSemaphoreFeatureFlagBits++ -- No documentation found for TopLevel "VkPhysicalDeviceExternalSemaphoreInfoKHR"-pattern VkPhysicalDeviceExternalSemaphoreInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("handleType" ::: VkExternalSemaphoreHandleTypeFlagBits) -> VkPhysicalDeviceExternalSemaphoreInfoKHR-pattern VkPhysicalDeviceExternalSemaphoreInfoKHR vkSType vkPNext vkHandleType = VkPhysicalDeviceExternalSemaphoreInfo vkSType vkPNext vkHandleType--- No documentation found for TopLevel "VkExternalSemaphorePropertiesKHR"-type VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties+type PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo -- No documentation found for TopLevel "VkExternalSemaphorePropertiesKHR"-pattern VkExternalSemaphorePropertiesKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("exportFromImportedHandleTypes" ::: VkExternalSemaphoreHandleTypeFlags) -> ("compatibleHandleTypes" ::: VkExternalSemaphoreHandleTypeFlags) -> ("externalSemaphoreFeatures" ::: VkExternalSemaphoreFeatureFlags) -> VkExternalSemaphorePropertiesKHR-pattern VkExternalSemaphorePropertiesKHR vkSType vkPNext vkExportFromImportedHandleTypes vkCompatibleHandleTypes vkExternalSemaphoreFeatures = VkExternalSemaphoreProperties vkSType vkPNext vkExportFromImportedHandleTypes vkCompatibleHandleTypes vkExternalSemaphoreFeatures--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR"-pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES--- No documentation found for TopLevel "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR :: VkExternalSemaphoreHandleTypeFlagBits-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT--- No documentation found for TopLevel "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR :: VkExternalSemaphoreHandleTypeFlagBits-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT--- No documentation found for TopLevel "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR :: VkExternalSemaphoreHandleTypeFlagBits-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT--- No documentation found for TopLevel "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR"-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR :: VkExternalSemaphoreHandleTypeFlagBits-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT--- No documentation found for TopLevel "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR"-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR :: VkExternalSemaphoreHandleTypeFlagBits-pattern VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT--- No documentation found for TopLevel "VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR"-pattern VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR :: VkExternalSemaphoreFeatureFlagBits-pattern VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT--- No documentation found for TopLevel "VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR"-pattern VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR :: VkExternalSemaphoreFeatureFlagBits-pattern VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT+type ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties+++type KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION"+pattern KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1+++type KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities"++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME"+pattern KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities"+
src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs view
@@ -1,93 +1,87 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd- ( pattern VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR- , pattern VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR- , pattern VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION- , pattern VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME- , vkGetSemaphoreFdKHR- , vkImportSemaphoreFdKHR- , VkImportSemaphoreFdInfoKHR(..)- , VkSemaphoreGetFdInfoKHR(..)- ) where--import Data.String- ( IsString- )-import Foreign.C.Types- ( CInt(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- )-import Graphics.Vulkan.Core10.Queue- ( VkSemaphore- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore- ( VkSemaphoreImportFlags- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities- ( VkExternalSemaphoreHandleTypeFlagBits(..)- )+module Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd ( getSemaphoreFdKHR+ , importSemaphoreFdKHR+ , ImportSemaphoreFdInfoKHR(..)+ , SemaphoreGetFdInfoKHR(..)+ , KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION+ , pattern KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION+ , KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME+ , pattern KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.C.Types (CInt)+import Foreign.C.Types (CInt(..))+import Foreign.C.Types (CInt(CInt))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetSemaphoreFdKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkImportSemaphoreFdKHR))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlagBits)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Handles (Semaphore)+import Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits (SemaphoreImportFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetSemaphoreFdKHR+ :: FunPtr (Ptr Device_T -> Ptr SemaphoreGetFdInfoKHR -> Ptr CInt -> IO Result) -> Ptr Device_T -> Ptr SemaphoreGetFdInfoKHR -> Ptr CInt -> IO Result --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR"-pattern VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = VkStructureType 1000079000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR"-pattern VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = VkStructureType 1000079001--- No documentation found for TopLevel "VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION"-pattern VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION :: Integral a => a-pattern VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME"-pattern VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" -- | vkGetSemaphoreFdKHR - Get a POSIX file descriptor handle for a semaphore -- -- = Parameters ----- - @device@ is the logical device that created the semaphore being--- exported.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- created the semaphore being exported. ----- - @pGetFdInfo@ is a pointer to an instance of the--- 'VkSemaphoreGetFdInfoKHR' structure containing parameters of the--- export operation.+-- - @pGetFdInfo@ is a pointer to a 'SemaphoreGetFdInfoKHR' structure+-- containing parameters of the export operation. -- -- - @pFd@ will return the file descriptor representing the semaphore -- payload. -- -- = Description ----- Each call to @vkGetSemaphoreFdKHR@ /must/ create a new file descriptor--- and transfer ownership of it to the application. To avoid leaking--- resources, the application /must/ release ownership of the file--- descriptor when it is no longer needed.+-- Each call to 'getSemaphoreFdKHR' /must/ create a new file descriptor and+-- transfer ownership of it to the application. To avoid leaking resources,+-- the application /must/ release ownership of the file descriptor when it+-- is no longer needed. ----- __Note__+-- Note -- -- Ownership can be released in many ways. For example, the application can -- call @close@() on the file descriptor, or transfer ownership back to@@ -99,45 +93,52 @@ -- -- Exporting a file descriptor from a semaphore /may/ have side effects -- depending on the transference of the specified handle type, as described--- in [Importing Semaphore--- State](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-importing).------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle+-- in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore State>. ----- - @pGetFdInfo@ /must/ be a valid pointer to a valid--- @VkSemaphoreGetFdInfoKHR@ structure+-- == Return Codes ----- - @pFd@ /must/ be a valid pointer to a @int@ value+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- == Return Codes+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_TOO_MANY_OBJECTS@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS' ----- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkSemaphoreGetFdInfoKHR'+-- 'Graphics.Vulkan.Core10.Handles.Device', 'SemaphoreGetFdInfoKHR'+getSemaphoreFdKHR :: Device -> SemaphoreGetFdInfoKHR -> IO (("fd" ::: Int32))+getSemaphoreFdKHR device getFdInfo = evalContT $ do+ let vkGetSemaphoreFdKHR' = mkVkGetSemaphoreFdKHR (pVkGetSemaphoreFdKHR (deviceCmds (device :: Device)))+ pGetFdInfo <- ContT $ withCStruct (getFdInfo)+ pPFd <- ContT $ bracket (callocBytes @CInt 4) free+ r <- lift $ vkGetSemaphoreFdKHR' (deviceHandle (device)) pGetFdInfo (pPFd)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pFd <- lift $ peek @CInt pPFd+ pure $ (((\(CInt a) -> a) pFd))++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkGetSemaphoreFdKHR" vkGetSemaphoreFdKHR :: ("device" ::: VkDevice) -> ("pGetFdInfo" ::: Ptr VkSemaphoreGetFdInfoKHR) -> ("pFd" ::: Ptr CInt) -> IO VkResult+ "dynamic" mkVkImportSemaphoreFdKHR+ :: FunPtr (Ptr Device_T -> Ptr ImportSemaphoreFdInfoKHR -> IO Result) -> Ptr Device_T -> Ptr ImportSemaphoreFdInfoKHR -> IO Result+ -- | vkImportSemaphoreFdKHR - Import a semaphore from a POSIX file descriptor -- -- = Parameters ----- - @device@ is the logical device that created the semaphore.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- created the semaphore. ----- - @pImportSemaphoreFdInfo@ points to a 'VkImportSemaphoreFdInfoKHR'--- structure specifying the semaphore and import parameters.+-- - @pImportSemaphoreFdInfo@ is a pointer to a+-- 'ImportSemaphoreFdInfoKHR' structure specifying the semaphore and+-- import parameters. -- -- = Description --@@ -150,37 +151,29 @@ -- instances of Vulkan, into the same instance from which it was exported, -- and multiple times into a given Vulkan instance. ----- == Valid Usage------ - @semaphore@ /must/ not be associated with any queue command that has--- not yet completed execution on that queue------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle+-- == Return Codes ----- - @pImportSemaphoreFdInfo@ /must/ be a valid pointer to a valid--- @VkImportSemaphoreFdInfoKHR@ structure+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- == Return Codes+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' ----- - @VK_ERROR_INVALID_EXTERNAL_HANDLE@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE' -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkImportSemaphoreFdInfoKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkImportSemaphoreFdKHR" vkImportSemaphoreFdKHR :: ("device" ::: VkDevice) -> ("pImportSemaphoreFdInfo" ::: Ptr VkImportSemaphoreFdInfoKHR) -> IO VkResult+-- 'Graphics.Vulkan.Core10.Handles.Device', 'ImportSemaphoreFdInfoKHR'+importSemaphoreFdKHR :: Device -> ImportSemaphoreFdInfoKHR -> IO ()+importSemaphoreFdKHR device importSemaphoreFdInfo = evalContT $ do+ let vkImportSemaphoreFdKHR' = mkVkImportSemaphoreFdKHR (pVkImportSemaphoreFdKHR (deviceCmds (device :: Device)))+ pImportSemaphoreFdInfo <- ContT $ withCStruct (importSemaphoreFdInfo)+ r <- lift $ vkImportSemaphoreFdKHR' (deviceHandle (device)) pImportSemaphoreFdInfo+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))++ -- | VkImportSemaphoreFdInfoKHR - Structure specifying POSIX file descriptor -- to import to a semaphore --@@ -188,87 +181,137 @@ -- -- The handle types supported by @handleType@ are: ----- +---------------------------------------------------+-----------------------+-----------------------+--- | Handle Type | Transference | Permanence Supported |--- +===================================================+=======================+=======================+--- | @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT@ | Reference | Temporary,Permanent |--- +---------------------------------------------------+-----------------------+-----------------------+--- | @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT@ | Copy | Temporary |--- +---------------------------------------------------+-----------------------+-----------------------++-- +-----------------------------------------------------------------------------------------------------------------+----------------------+-----------------------++-- | Handle Type | Transference | Permanence Supported |+-- +=================================================================================================================+======================+=======================++-- | 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT' | Reference | Temporary,Permanent |+-- +-----------------------------------------------------------------------------------------------------------------+----------------------+-----------------------++-- | 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT' | Copy | Temporary |+-- +-----------------------------------------------------------------------------------------------------------------+----------------------+-----------------------+ ----- Handle Types Supported by VkImportSemaphoreFdInfoKHR+-- Handle Types Supported by 'ImportSemaphoreFdInfoKHR' -- -- == Valid Usage ----- - @handleType@ /must/ be a value included in the [Handle Types--- Supported by--- VkImportSemaphoreFdInfoKHR](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphore-handletypes-fd)+-- - @handleType@ /must/ be a value included in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphore-handletypes-fd Handle Types Supported by VkImportSemaphoreFdInfoKHR> -- table. -- -- - @fd@ /must/ obey any requirements listed for @handleType@ in--- [external semaphore handle types--- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility).+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>. --+-- - If @handleType@ is+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT',+-- the+-- 'Graphics.Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- field /must/ match that of the semaphore from which @fd@ was+-- exported.+--+-- - If @handleType@ is+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT',+-- the+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo'::'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType'+-- field /must/ match that of the semaphore from which @fd@ was+-- exported.+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits.SEMAPHORE_IMPORT_TEMPORARY_BIT',+-- the+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo'::'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType'+-- field of the semaphore from which @fd@ was exported /must/ not be+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE'.+-- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR@+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR' -- -- - @pNext@ /must/ be @NULL@ ----- - @semaphore@ /must/ be a valid @VkSemaphore@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Semaphore' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Semaphore' handle ----- - @flags@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore.VkSemaphoreImportFlagBits'+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits.SemaphoreImportFlagBits' -- values -- -- - @handleType@ /must/ be a valid--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreHandleTypeFlagBits'+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits' -- value -- -- == Host Synchronization ----- - Host access to @semaphore@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Semaphore' /must/ be+-- externally synchronized -- -- = See Also ----- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreHandleTypeFlagBits',--- 'Graphics.Vulkan.Core10.Queue.VkSemaphore',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore.VkSemaphoreImportFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkImportSemaphoreFdKHR'-data VkImportSemaphoreFdInfoKHR = VkImportSemaphoreFdInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @semaphore@ is the semaphore into which the payload will be imported.- vkSemaphore :: VkSemaphore- , -- | @flags@ is a bitmask of- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore.VkSemaphoreImportFlagBits'- -- specifying additional parameters for the semaphore payload import- -- operation.- vkFlags :: VkSemaphoreImportFlags+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core10.Handles.Semaphore',+-- 'Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits.SemaphoreImportFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'importSemaphoreFdKHR'+data ImportSemaphoreFdInfoKHR = ImportSemaphoreFdInfoKHR+ { -- | 'Graphics.Vulkan.Core10.Handles.Semaphore' is the semaphore into which+ -- the payload will be imported.+ semaphore :: Semaphore+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits.SemaphoreImportFlagBits'+ -- specifying additional parameters for the semaphore payload import+ -- operation.+ flags :: SemaphoreImportFlags , -- | @handleType@ specifies the type of @fd@.- vkHandleType :: VkExternalSemaphoreHandleTypeFlagBits+ handleType :: ExternalSemaphoreHandleTypeFlagBits , -- | @fd@ is the external handle to import.- vkFd :: CInt+ fd :: Int32 }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show ImportSemaphoreFdInfoKHR -instance Storable VkImportSemaphoreFdInfoKHR where+instance ToCStruct ImportSemaphoreFdInfoKHR where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImportSemaphoreFdInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Semaphore)) (semaphore)+ poke ((p `plusPtr` 24 :: Ptr SemaphoreImportFlags)) (flags)+ poke ((p `plusPtr` 28 :: Ptr ExternalSemaphoreHandleTypeFlagBits)) (handleType)+ poke ((p `plusPtr` 32 :: Ptr CInt)) (CInt (fd))+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Semaphore)) (zero)+ poke ((p `plusPtr` 28 :: Ptr ExternalSemaphoreHandleTypeFlagBits)) (zero)+ poke ((p `plusPtr` 32 :: Ptr CInt)) (CInt (zero))+ f++instance FromCStruct ImportSemaphoreFdInfoKHR where+ peekCStruct p = do+ semaphore <- peek @Semaphore ((p `plusPtr` 16 :: Ptr Semaphore))+ flags <- peek @SemaphoreImportFlags ((p `plusPtr` 24 :: Ptr SemaphoreImportFlags))+ handleType <- peek @ExternalSemaphoreHandleTypeFlagBits ((p `plusPtr` 28 :: Ptr ExternalSemaphoreHandleTypeFlagBits))+ fd <- peek @CInt ((p `plusPtr` 32 :: Ptr CInt))+ pure $ ImportSemaphoreFdInfoKHR+ semaphore flags handleType ((\(CInt a) -> a) fd)++instance Storable ImportSemaphoreFdInfoKHR where sizeOf ~_ = 40 alignment ~_ = 8- peek ptr = VkImportSemaphoreFdInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkImportSemaphoreFdInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImportSemaphoreFdInfoKHR))- *> poke (ptr `plusPtr` 16) (vkSemaphore (poked :: VkImportSemaphoreFdInfoKHR))- *> poke (ptr `plusPtr` 24) (vkFlags (poked :: VkImportSemaphoreFdInfoKHR))- *> poke (ptr `plusPtr` 28) (vkHandleType (poked :: VkImportSemaphoreFdInfoKHR))- *> poke (ptr `plusPtr` 32) (vkFd (poked :: VkImportSemaphoreFdInfoKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImportSemaphoreFdInfoKHR where+ zero = ImportSemaphoreFdInfoKHR+ zero+ zero+ zero+ zero++ -- | VkSemaphoreGetFdInfoKHR - Structure describing a POSIX FD semaphore -- export operation --@@ -276,73 +319,126 @@ -- -- The properties of the file descriptor returned depend on the value of -- @handleType@. See--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreHandleTypeFlagBits'+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits' -- for a description of the properties of the defined external semaphore -- handle types. -- -- == Valid Usage -- -- - @handleType@ /must/ have been included in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore.VkExportSemaphoreCreateInfo'::@handleTypes@--- when @semaphore@’s current payload was created.+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore.ExportSemaphoreCreateInfo'::@handleTypes@+-- when 'Graphics.Vulkan.Core10.Handles.Semaphore'’s current payload+-- was created. ----- - @semaphore@ /must/ not currently have its payload replaced by an--- imported payload as described below in [Importing Semaphore--- Payloads](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-importing)+-- - 'Graphics.Vulkan.Core10.Handles.Semaphore' /must/ not currently have+-- its payload replaced by an imported payload as described below in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads> -- unless that imported payload’s handle type was included in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreProperties'::@exportFromImportedHandleTypes@+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.ExternalSemaphoreProperties'::@exportFromImportedHandleTypes@ -- for @handleType@. -- -- - If @handleType@ refers to a handle type with copy payload--- transference semantics, as defined below in [Importing Semaphore--- Payloads](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-importing),--- there /must/ be no queue waiting on @semaphore@.+-- transference semantics, as defined below in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>,+-- there /must/ be no queue waiting on+-- 'Graphics.Vulkan.Core10.Handles.Semaphore'. -- -- - If @handleType@ refers to a handle type with copy payload--- transference semantics, @semaphore@ /must/ be signaled, or have an--- associated [semaphore signal--- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-signaling)+-- transference semantics, 'Graphics.Vulkan.Core10.Handles.Semaphore'+-- /must/ be signaled, or have an associated+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation> -- pending execution. -- -- - @handleType@ /must/ be defined as a POSIX file descriptor handle. --+-- - If @handleType@ refers to a handle type with copy payload+-- transference semantics, 'Graphics.Vulkan.Core10.Handles.Semaphore'+-- /must/ have been created with a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY'.+--+-- - If @handleType@ refers to a handle type with copy payload+-- transference semantics, 'Graphics.Vulkan.Core10.Handles.Semaphore'+-- /must/ have an associated semaphore signal operation that has been+-- submitted for execution and any semaphore signal operations on which+-- it depends (if any) /must/ have also been submitted for execution.+-- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR@+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR' -- -- - @pNext@ /must/ be @NULL@ ----- - @semaphore@ /must/ be a valid @VkSemaphore@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Semaphore' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Semaphore' handle -- -- - @handleType@ /must/ be a valid--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreHandleTypeFlagBits'+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits' -- value -- -- = See Also ----- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreHandleTypeFlagBits',--- 'Graphics.Vulkan.Core10.Queue.VkSemaphore',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkGetSemaphoreFdKHR'-data VkSemaphoreGetFdInfoKHR = VkSemaphoreGetFdInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @semaphore@ is the semaphore from which state will be exported.- vkSemaphore :: VkSemaphore+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core10.Handles.Semaphore',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getSemaphoreFdKHR'+data SemaphoreGetFdInfoKHR = SemaphoreGetFdInfoKHR+ { -- | 'Graphics.Vulkan.Core10.Handles.Semaphore' is the semaphore from which+ -- state will be exported.+ semaphore :: Semaphore , -- | @handleType@ is the type of handle requested.- vkHandleType :: VkExternalSemaphoreHandleTypeFlagBits+ handleType :: ExternalSemaphoreHandleTypeFlagBits }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show SemaphoreGetFdInfoKHR -instance Storable VkSemaphoreGetFdInfoKHR where+instance ToCStruct SemaphoreGetFdInfoKHR where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SemaphoreGetFdInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Semaphore)) (semaphore)+ poke ((p `plusPtr` 24 :: Ptr ExternalSemaphoreHandleTypeFlagBits)) (handleType)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Semaphore)) (zero)+ poke ((p `plusPtr` 24 :: Ptr ExternalSemaphoreHandleTypeFlagBits)) (zero)+ f++instance FromCStruct SemaphoreGetFdInfoKHR where+ peekCStruct p = do+ semaphore <- peek @Semaphore ((p `plusPtr` 16 :: Ptr Semaphore))+ handleType <- peek @ExternalSemaphoreHandleTypeFlagBits ((p `plusPtr` 24 :: Ptr ExternalSemaphoreHandleTypeFlagBits))+ pure $ SemaphoreGetFdInfoKHR+ semaphore handleType++instance Storable SemaphoreGetFdInfoKHR where sizeOf ~_ = 32 alignment ~_ = 8- peek ptr = VkSemaphoreGetFdInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkSemaphoreGetFdInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkSemaphoreGetFdInfoKHR))- *> poke (ptr `plusPtr` 16) (vkSemaphore (poked :: VkSemaphoreGetFdInfoKHR))- *> poke (ptr `plusPtr` 24) (vkHandleType (poked :: VkSemaphoreGetFdInfoKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SemaphoreGetFdInfoKHR where+ zero = SemaphoreGetFdInfoKHR+ zero+ zero+++type KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION"+pattern KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1+++type KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd"++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME"+pattern KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd ( ImportSemaphoreFdInfoKHR+ , SemaphoreGetFdInfoKHR+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ImportSemaphoreFdInfoKHR++instance ToCStruct ImportSemaphoreFdInfoKHR+instance Show ImportSemaphoreFdInfoKHR++instance FromCStruct ImportSemaphoreFdInfoKHR+++data SemaphoreGetFdInfoKHR++instance ToCStruct SemaphoreGetFdInfoKHR+instance Show SemaphoreGetFdInfoKHR++instance FromCStruct SemaphoreGetFdInfoKHR+
src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs view
@@ -1,100 +1,96 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32- ( pattern VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR- , pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR- , pattern VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR- , pattern VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR- , pattern VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION- , pattern VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME- , vkGetSemaphoreWin32HandleKHR- , vkImportSemaphoreWin32HandleKHR- , VkImportSemaphoreWin32HandleInfoKHR(..)- , VkExportSemaphoreWin32HandleInfoKHR(..)- , VkD3D12FenceSubmitInfoKHR(..)- , VkSemaphoreGetWin32HandleInfoKHR(..)- ) where--import Data.String- ( IsString- )-import Data.Word- ( Word32- , Word64- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- )-import Graphics.Vulkan.Core10.Queue- ( VkSemaphore- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore- ( VkSemaphoreImportFlags- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities- ( VkExternalSemaphoreHandleTypeFlagBits(..)- )-import Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32- ( LPCWSTR- )-import Graphics.Vulkan.Extensions.VK_NV_external_memory_win32- ( DWORD- , HANDLE- , SECURITY_ATTRIBUTES- )+module Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32 ( getSemaphoreWin32HandleKHR+ , importSemaphoreWin32HandleKHR+ , ImportSemaphoreWin32HandleInfoKHR(..)+ , ExportSemaphoreWin32HandleInfoKHR(..)+ , D3D12FenceSubmitInfoKHR(..)+ , SemaphoreGetWin32HandleInfoKHR(..)+ , KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION+ , pattern KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION+ , KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME+ , pattern KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME+ , HANDLE+ , DWORD+ , LPCWSTR+ , SECURITY_ATTRIBUTES+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Marshal.Utils (maybePeek)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Either (Either)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Word (Word64)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Extensions.WSITypes (DWORD)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetSemaphoreWin32HandleKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkImportSemaphoreWin32HandleKHR))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits (ExternalSemaphoreHandleTypeFlagBits)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Extensions.WSITypes (HANDLE)+import Graphics.Vulkan.Extensions.WSITypes (LPCWSTR)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Extensions.WSITypes (SECURITY_ATTRIBUTES)+import Graphics.Vulkan.Core10.Handles (Semaphore)+import Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits (SemaphoreImportFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.WSITypes (DWORD)+import Graphics.Vulkan.Extensions.WSITypes (HANDLE)+import Graphics.Vulkan.Extensions.WSITypes (LPCWSTR)+import Graphics.Vulkan.Extensions.WSITypes (SECURITY_ATTRIBUTES)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetSemaphoreWin32HandleKHR+ :: FunPtr (Ptr Device_T -> Ptr SemaphoreGetWin32HandleInfoKHR -> Ptr HANDLE -> IO Result) -> Ptr Device_T -> Ptr SemaphoreGetWin32HandleInfoKHR -> Ptr HANDLE -> IO Result --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = VkStructureType 1000078000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = VkStructureType 1000078001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR"-pattern VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = VkStructureType 1000078002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = VkStructureType 1000078003--- No documentation found for TopLevel "VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION"-pattern VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION :: Integral a => a-pattern VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME"-pattern VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME = "VK_KHR_external_semaphore_win32" -- | vkGetSemaphoreWin32HandleKHR - Get a Windows HANDLE for a semaphore -- -- = Parameters ----- - @device@ is the logical device that created the semaphore being--- exported.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- created the semaphore being exported. ----- - @pGetWin32HandleInfo@ is a pointer to an instance of the--- 'VkSemaphoreGetWin32HandleInfoKHR' structure containing parameters--- of the export operation.+-- - @pGetWin32HandleInfo@ is a pointer to a+-- 'SemaphoreGetWin32HandleInfoKHR' structure containing parameters of+-- the export operation. -- -- - @pHandle@ will return the Windows handle representing the semaphore -- state.@@ -102,52 +98,59 @@ -- = Description -- -- For handle types defined as NT handles, the handles returned by--- @vkGetSemaphoreWin32HandleKHR@ are owned by the application. To avoid+-- 'getSemaphoreWin32HandleKHR' are owned by the application. To avoid -- leaking resources, the application /must/ release ownership of them -- using the @CloseHandle@ system call when they are no longer needed. -- -- Exporting a Windows handle from a semaphore /may/ have side effects -- depending on the transference of the specified handle type, as described--- in [Importing Semaphore--- Payloads](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-importing).------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle+-- in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>. ----- - @pGetWin32HandleInfo@ /must/ be a valid pointer to a valid--- @VkSemaphoreGetWin32HandleInfoKHR@ structure+-- == Return Codes ----- - @pHandle@ /must/ be a valid pointer to a @HANDLE@ value+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- == Return Codes+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_TOO_MANY_OBJECTS@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS' ----- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkSemaphoreGetWin32HandleInfoKHR'+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'SemaphoreGetWin32HandleInfoKHR'+getSemaphoreWin32HandleKHR :: Device -> SemaphoreGetWin32HandleInfoKHR -> IO (HANDLE)+getSemaphoreWin32HandleKHR device getWin32HandleInfo = evalContT $ do+ let vkGetSemaphoreWin32HandleKHR' = mkVkGetSemaphoreWin32HandleKHR (pVkGetSemaphoreWin32HandleKHR (deviceCmds (device :: Device)))+ pGetWin32HandleInfo <- ContT $ withCStruct (getWin32HandleInfo)+ pPHandle <- ContT $ bracket (callocBytes @HANDLE 8) free+ r <- lift $ vkGetSemaphoreWin32HandleKHR' (deviceHandle (device)) pGetWin32HandleInfo (pPHandle)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pHandle <- lift $ peek @HANDLE pPHandle+ pure $ (pHandle)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkGetSemaphoreWin32HandleKHR" vkGetSemaphoreWin32HandleKHR :: ("device" ::: VkDevice) -> ("pGetWin32HandleInfo" ::: Ptr VkSemaphoreGetWin32HandleInfoKHR) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult+ "dynamic" mkVkImportSemaphoreWin32HandleKHR+ :: FunPtr (Ptr Device_T -> Ptr ImportSemaphoreWin32HandleInfoKHR -> IO Result) -> Ptr Device_T -> Ptr ImportSemaphoreWin32HandleInfoKHR -> IO Result+ -- | vkImportSemaphoreWin32HandleKHR - Import a semaphore from a Windows -- HANDLE -- -- = Parameters ----- - @device@ is the logical device that created the semaphore.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- created the semaphore. ----- - @pImportSemaphoreWin32HandleInfo@ points to a--- 'VkImportSemaphoreWin32HandleInfoKHR' structure specifying the+-- - @pImportSemaphoreWin32HandleInfo@ is a pointer to a+-- 'ImportSemaphoreWin32HandleInfoKHR' structure specifying the -- semaphore and import parameters. -- -- = Description@@ -161,32 +164,30 @@ -- instances of Vulkan, into the same instance from which it was exported, -- and multiple times into a given Vulkan instance. ----- == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle+-- == Return Codes ----- - @pImportSemaphoreWin32HandleInfo@ /must/ be a valid pointer to a--- valid @VkImportSemaphoreWin32HandleInfoKHR@ structure+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- == Return Codes+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' ----- - @VK_ERROR_INVALID_EXTERNAL_HANDLE@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_EXTERNAL_HANDLE' -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkImportSemaphoreWin32HandleInfoKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkImportSemaphoreWin32HandleKHR" vkImportSemaphoreWin32HandleKHR :: ("device" ::: VkDevice) -> ("pImportSemaphoreWin32HandleInfo" ::: Ptr VkImportSemaphoreWin32HandleInfoKHR) -> IO VkResult+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'ImportSemaphoreWin32HandleInfoKHR'+importSemaphoreWin32HandleKHR :: Device -> ImportSemaphoreWin32HandleInfoKHR -> IO ()+importSemaphoreWin32HandleKHR device importSemaphoreWin32HandleInfo = evalContT $ do+ let vkImportSemaphoreWin32HandleKHR' = mkVkImportSemaphoreWin32HandleKHR (pVkImportSemaphoreWin32HandleKHR (deviceCmds (device :: Device)))+ pImportSemaphoreWin32HandleInfo <- ContT $ withCStruct (importSemaphoreWin32HandleInfo)+ r <- lift $ vkImportSemaphoreWin32HandleKHR' (deviceHandle (device)) pImportSemaphoreWin32HandleInfo+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))++ -- | VkImportSemaphoreWin32HandleInfoKHR - Structure specifying Windows -- handle to import to a semaphore --@@ -194,29 +195,29 @@ -- -- The handle types supported by @handleType@ are: ----- +----------------------------------------------------------+-----------------------+-----------------------+--- | Handle Type | Transference | Permanence Supported |--- +==========================================================+=======================+=======================+--- | @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT@ | Reference | Temporary,Permanent |--- +----------------------------------------------------------+-----------------------+-----------------------+--- | @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT@ | Reference | Temporary,Permanent |--- +----------------------------------------------------------+-----------------------+-----------------------+--- | @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT@ | Reference | Temporary,Permanent |--- +----------------------------------------------------------+-----------------------+-----------------------++-- +------------------------------------------------------------------------------------------------------------------------+----------------------+-----------------------++-- | Handle Type | Transference | Permanence Supported |+-- +========================================================================================================================+======================+=======================++-- | 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT' | Reference | Temporary,Permanent |+-- +------------------------------------------------------------------------------------------------------------------------+----------------------+-----------------------++-- | 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT' | Reference | Temporary,Permanent |+-- +------------------------------------------------------------------------------------------------------------------------+----------------------+-----------------------++-- | 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT' | Reference | Temporary,Permanent |+-- +------------------------------------------------------------------------------------------------------------------------+----------------------+-----------------------+ ----- Handle Types Supported by VkImportSemaphoreWin32HandleInfoKHR+-- Handle Types Supported by 'ImportSemaphoreWin32HandleInfoKHR' -- -- == Valid Usage ----- - @handleType@ /must/ be a value included in the [Handle Types--- Supported by--- VkImportSemaphoreWin32HandleInfoKHR](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphore-handletypes-win32)+-- - @handleType@ /must/ be a value included in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphore-handletypes-win32 Handle Types Supported by VkImportSemaphoreWin32HandleInfoKHR> -- table. -- -- - If @handleType@ is not--- @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT@ or--- @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT@, @name@ /must/--- be @NULL@.+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT'+-- or+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT',+-- @name@ /must/ be @NULL@. -- -- - If @handleType@ is not @0@ and @handle@ is @NULL@, @name@ /must/ -- name a valid synchronization primitive of the type specified by@@ -228,80 +229,134 @@ -- - If @handle@ is not @NULL@, @name@ must be @NULL@. -- -- - If @handle@ is not @NULL@, it /must/ obey any requirements listed--- for @handleType@ in [external semaphore handle types--- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility).+-- for @handleType@ in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>. -- -- - If @name@ is not @NULL@, it /must/ obey any requirements listed for--- @handleType@ in [external semaphore handle types--- compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility).+-- @handleType@ in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>. --+-- - If @handleType@ is+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT'+-- or+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT',+-- the+-- 'Graphics.Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- field /must/ match that of the semaphore from which @handle@ or+-- @name@ was exported.+--+-- - If @handleType@ is+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT'+-- or+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT',+-- the+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo'::'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType'+-- field /must/ match that of the semaphore from which @handle@ or+-- @name@ was exported.+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits.SEMAPHORE_IMPORT_TEMPORARY_BIT',+-- the+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo'::'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType'+-- field of the semaphore from which @handle@ or @name@ was exported+-- /must/ not be+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE'.+-- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR' -- -- - @pNext@ /must/ be @NULL@ ----- - @semaphore@ /must/ be a valid @VkSemaphore@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Semaphore' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Semaphore' handle ----- - @flags@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore.VkSemaphoreImportFlagBits'+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits.SemaphoreImportFlagBits' -- values -- -- - If @handleType@ is not @0@, @handleType@ /must/ be a valid--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreHandleTypeFlagBits'+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits' -- value -- -- == Host Synchronization ----- - Host access to @semaphore@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Semaphore' /must/ be+-- externally synchronized -- -- = See Also ----- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreHandleTypeFlagBits',--- 'Graphics.Vulkan.Core10.Queue.VkSemaphore',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore.VkSemaphoreImportFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkImportSemaphoreWin32HandleKHR'-data VkImportSemaphoreWin32HandleInfoKHR = VkImportSemaphoreWin32HandleInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @semaphore@ is the semaphore into which the payload will be imported.- vkSemaphore :: VkSemaphore- , -- | @flags@ is a bitmask of- -- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore.VkSemaphoreImportFlagBits'- -- specifying additional parameters for the semaphore payload import- -- operation.- vkFlags :: VkSemaphoreImportFlags+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core10.Handles.Semaphore',+-- 'Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits.SemaphoreImportFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'importSemaphoreWin32HandleKHR'+data ImportSemaphoreWin32HandleInfoKHR = ImportSemaphoreWin32HandleInfoKHR+ { -- | 'Graphics.Vulkan.Core10.Handles.Semaphore' is the semaphore into which+ -- the payload will be imported.+ semaphore :: Semaphore+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits.SemaphoreImportFlagBits'+ -- specifying additional parameters for the semaphore payload import+ -- operation.+ flags :: SemaphoreImportFlags , -- | @handleType@ specifies the type of @handle@.- vkHandleType :: VkExternalSemaphoreHandleTypeFlagBits+ handleType :: ExternalSemaphoreHandleTypeFlagBits , -- | @handle@ is the external handle to import, or @NULL@.- vkHandle :: HANDLE- , -- | @name@ is a NULL-terminated UTF-16 string naming the underlying- -- synchronization primitive to import, or @NULL@.- vkName :: LPCWSTR+ handle :: HANDLE+ , -- | @name@ is a null-terminated UTF-16 string naming the underlying+ -- synchronization primitive to import, or @NULL@.+ name :: LPCWSTR }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show ImportSemaphoreWin32HandleInfoKHR -instance Storable VkImportSemaphoreWin32HandleInfoKHR where+instance ToCStruct ImportSemaphoreWin32HandleInfoKHR where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImportSemaphoreWin32HandleInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Semaphore)) (semaphore)+ poke ((p `plusPtr` 24 :: Ptr SemaphoreImportFlags)) (flags)+ poke ((p `plusPtr` 28 :: Ptr ExternalSemaphoreHandleTypeFlagBits)) (handleType)+ poke ((p `plusPtr` 32 :: Ptr HANDLE)) (handle)+ poke ((p `plusPtr` 40 :: Ptr LPCWSTR)) (name)+ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Semaphore)) (zero)+ f++instance FromCStruct ImportSemaphoreWin32HandleInfoKHR where+ peekCStruct p = do+ semaphore <- peek @Semaphore ((p `plusPtr` 16 :: Ptr Semaphore))+ flags <- peek @SemaphoreImportFlags ((p `plusPtr` 24 :: Ptr SemaphoreImportFlags))+ handleType <- peek @ExternalSemaphoreHandleTypeFlagBits ((p `plusPtr` 28 :: Ptr ExternalSemaphoreHandleTypeFlagBits))+ handle <- peek @HANDLE ((p `plusPtr` 32 :: Ptr HANDLE))+ name <- peek @LPCWSTR ((p `plusPtr` 40 :: Ptr LPCWSTR))+ pure $ ImportSemaphoreWin32HandleInfoKHR+ semaphore flags handleType handle name++instance Storable ImportSemaphoreWin32HandleInfoKHR where sizeOf ~_ = 48 alignment ~_ = 8- peek ptr = VkImportSemaphoreWin32HandleInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkImportSemaphoreWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImportSemaphoreWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 16) (vkSemaphore (poked :: VkImportSemaphoreWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 24) (vkFlags (poked :: VkImportSemaphoreWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 28) (vkHandleType (poked :: VkImportSemaphoreWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 32) (vkHandle (poked :: VkImportSemaphoreWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 40) (vkName (poked :: VkImportSemaphoreWin32HandleInfoKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImportSemaphoreWin32HandleInfoKHR where+ zero = ImportSemaphoreWin32HandleInfoKHR+ zero+ zero+ zero+ zero+ zero++ -- | VkExportSemaphoreWin32HandleInfoKHR - Structure specifying additional -- attributes of Windows handles exported from a semaphore --@@ -311,105 +366,153 @@ -- default security descriptor values will be used, and child processes -- created by the application will not inherit the handle, as described in -- the MSDN documentation for “Synchronization Object Security and Access--- Rights”1. Further, if the structure is not present, the access rights--- will be+-- Rights”1. ----- @DXGI_SHARED_RESOURCE_READ@ | @DXGI_SHARED_RESOURCE_WRITE@+-- For handles of the following types: ----- for handles of the following types:+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT' ----- @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT@+-- The implementation /must/ ensure the access rights allow both signal and+-- wait operations on the semaphore. ----- And+-- For handles of the following types: ----- @GENERIC_ALL@+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT' ----- for handles of the following types:+-- The access rights /must/ be: ----- @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT@+-- @GENERIC_ALL@ -- -- [1]--- <https://msdn.microsoft.com/en-us/library/windows/desktop/ms686670.aspx>+-- <https://docs.microsoft.com/en-us/windows/win32/sync/synchronization-object-security-and-access-rights> -- -- == Valid Usage -- -- - If--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore.VkExportSemaphoreCreateInfo'::@handleTypes@+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore.ExportSemaphoreCreateInfo'::@handleTypes@ -- does not include--- @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT@ or--- @VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT@,--- @VkExportSemaphoreWin32HandleInfoKHR@ /must/ not be in the @pNext@--- chain of--- 'Graphics.Vulkan.Core10.QueueSemaphore.VkSemaphoreCreateInfo'.+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT'+-- or+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT',+-- 'ExportSemaphoreWin32HandleInfoKHR' /must/ not be included in the+-- @pNext@ chain of+-- 'Graphics.Vulkan.Core10.QueueSemaphore.SemaphoreCreateInfo'. -- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR' -- -- - If @pAttributes@ is not @NULL@, @pAttributes@ /must/ be a valid--- pointer to a valid @SECURITY_ATTRIBUTES@ value+-- pointer to a valid+-- 'Graphics.Vulkan.Extensions.WSITypes.SECURITY_ATTRIBUTES' value -- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkExportSemaphoreWin32HandleInfoKHR = VkExportSemaphoreWin32HandleInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @pAttributes@ is a pointer to a Windows @SECURITY_ATTRIBUTES@ structure- -- specifying security attributes of the handle.- vkPAttributes :: Ptr SECURITY_ATTRIBUTES- , -- | @dwAccess@ is a @DWORD@ specifying access rights of the handle.- vkDwAccess :: DWORD- , -- | @name@ is a NULL-terminated UTF-16 string to associate with the- -- underlying synchronization primitive referenced by NT handles exported- -- from the created semaphore.- vkName :: LPCWSTR+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ExportSemaphoreWin32HandleInfoKHR = ExportSemaphoreWin32HandleInfoKHR+ { -- | @pAttributes@ is a pointer to a Windows+ -- 'Graphics.Vulkan.Extensions.WSITypes.SECURITY_ATTRIBUTES' structure+ -- specifying security attributes of the handle.+ attributes :: Ptr SECURITY_ATTRIBUTES+ , -- | @dwAccess@ is a 'Graphics.Vulkan.Extensions.WSITypes.DWORD' specifying+ -- access rights of the handle.+ dwAccess :: DWORD+ , -- | @name@ is a null-terminated UTF-16 string to associate with the+ -- underlying synchronization primitive referenced by NT handles exported+ -- from the created semaphore.+ name :: LPCWSTR }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show ExportSemaphoreWin32HandleInfoKHR -instance Storable VkExportSemaphoreWin32HandleInfoKHR where+instance ToCStruct ExportSemaphoreWin32HandleInfoKHR where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ExportSemaphoreWin32HandleInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr (Ptr SECURITY_ATTRIBUTES))) (attributes)+ poke ((p `plusPtr` 24 :: Ptr DWORD)) (dwAccess)+ poke ((p `plusPtr` 32 :: Ptr LPCWSTR)) (name)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 24 :: Ptr DWORD)) (zero)+ poke ((p `plusPtr` 32 :: Ptr LPCWSTR)) (zero)+ f++instance FromCStruct ExportSemaphoreWin32HandleInfoKHR where+ peekCStruct p = do+ pAttributes <- peek @(Ptr SECURITY_ATTRIBUTES) ((p `plusPtr` 16 :: Ptr (Ptr SECURITY_ATTRIBUTES)))+ dwAccess <- peek @DWORD ((p `plusPtr` 24 :: Ptr DWORD))+ name <- peek @LPCWSTR ((p `plusPtr` 32 :: Ptr LPCWSTR))+ pure $ ExportSemaphoreWin32HandleInfoKHR+ pAttributes dwAccess name++instance Storable ExportSemaphoreWin32HandleInfoKHR where sizeOf ~_ = 40 alignment ~_ = 8- peek ptr = VkExportSemaphoreWin32HandleInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkExportSemaphoreWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkExportSemaphoreWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 16) (vkPAttributes (poked :: VkExportSemaphoreWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 24) (vkDwAccess (poked :: VkExportSemaphoreWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 32) (vkName (poked :: VkExportSemaphoreWin32HandleInfoKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ExportSemaphoreWin32HandleInfoKHR where+ zero = ExportSemaphoreWin32HandleInfoKHR+ zero+ zero+ zero++ -- | VkD3D12FenceSubmitInfoKHR - Structure specifying values for Direct3D 12 -- fence-backed semaphores -- -- = Description -- -- If the semaphore in--- 'Graphics.Vulkan.Core10.Queue.VkSubmitInfo'::@pWaitSemaphores@ or--- 'Graphics.Vulkan.Core10.Queue.VkSubmitInfo'::@pSignalSemaphores@+-- 'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@pWaitSemaphores@ or+-- 'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@pSignalSemaphores@ -- corresponding to an entry in @pWaitSemaphoreValues@ or -- @pSignalSemaphoreValues@ respectively does not currently have a--- [payload](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-payloads)+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-payloads payload> -- referring to a Direct3D 12 fence, the implementation /must/ ignore the -- value in the @pWaitSemaphoreValues@ or @pSignalSemaphoreValues@ entry. --+-- Note+--+-- As the introduction of the external semaphore handle type+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT'+-- predates that of timeline semaphores, support for importing semaphore+-- payloads from external handles of that type into semaphores created+-- (implicitly or explicitly) with a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY' is+-- preserved for backwards compatibility. However, applications /should/+-- prefer importing such handle types into semaphores created with a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE',+-- and use the+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'+-- structure instead of the 'D3D12FenceSubmitInfoKHR' structure to specify+-- the values to use when waiting for and signaling such semaphores.+-- -- == Valid Usage -- -- - @waitSemaphoreValuesCount@ /must/ be the same value as--- @VkSubmitInfo@::@waitSemaphoreCount@, where @VkSubmitInfo@ is in the--- @pNext@ chain of this @VkD3D12FenceSubmitInfoKHR@ structure.+-- 'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@waitSemaphoreCount@,+-- where 'Graphics.Vulkan.Core10.Queue.SubmitInfo' is in the @pNext@+-- chain of this 'D3D12FenceSubmitInfoKHR' structure. -- -- - @signalSemaphoreValuesCount@ /must/ be the same value as--- @VkSubmitInfo@::@signalSemaphoreCount@, where @VkSubmitInfo@ is in--- the @pNext@ chain of this @VkD3D12FenceSubmitInfoKHR@ structure.+-- 'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@signalSemaphoreCount@,+-- where 'Graphics.Vulkan.Core10.Queue.SubmitInfo' is in the @pNext@+-- chain of this 'D3D12FenceSubmitInfoKHR' structure. -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR@+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR' -- -- - If @waitSemaphoreValuesCount@ is not @0@, and @pWaitSemaphoreValues@ -- is not @NULL@, @pWaitSemaphoreValues@ /must/ be a valid pointer to@@ -422,47 +525,70 @@ -- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkD3D12FenceSubmitInfoKHR = VkD3D12FenceSubmitInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @waitSemaphoreValuesCount@ is the number of semaphore wait values- -- specified in @pWaitSemaphoreValues@.- vkWaitSemaphoreValuesCount :: Word32- , -- | @pWaitSemaphoreValues@ is an array of length @waitSemaphoreValuesCount@- -- containing values for the corresponding semaphores in- -- 'Graphics.Vulkan.Core10.Queue.VkSubmitInfo'::@pWaitSemaphores@ to wait- -- for.- vkPWaitSemaphoreValues :: Ptr Word64- , -- | @signalSemaphoreValuesCount@ is the number of semaphore signal values- -- specified in @pSignalSemaphoreValues@.- vkSignalSemaphoreValuesCount :: Word32- , -- | @pSignalSemaphoreValues@ is an array of length- -- @signalSemaphoreValuesCount@ containing values for the corresponding- -- semaphores in- -- 'Graphics.Vulkan.Core10.Queue.VkSubmitInfo'::@pSignalSemaphores@ to set- -- when signaled.- vkPSignalSemaphoreValues :: Ptr Word64+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data D3D12FenceSubmitInfoKHR = D3D12FenceSubmitInfoKHR+ { -- | @pWaitSemaphoreValues@ is a pointer to an array of+ -- @waitSemaphoreValuesCount@ values for the corresponding semaphores in+ -- 'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@pWaitSemaphores@ to wait+ -- for.+ waitSemaphoreValues :: Either Word32 (Vector Word64)+ , -- | @pSignalSemaphoreValues@ is a pointer to an array of+ -- @signalSemaphoreValuesCount@ values for the corresponding semaphores in+ -- 'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@pSignalSemaphores@ to set+ -- when signaled.+ signalSemaphoreValues :: Either Word32 (Vector Word64) }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show D3D12FenceSubmitInfoKHR -instance Storable VkD3D12FenceSubmitInfoKHR where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkD3D12FenceSubmitInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkD3D12FenceSubmitInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkD3D12FenceSubmitInfoKHR))- *> poke (ptr `plusPtr` 16) (vkWaitSemaphoreValuesCount (poked :: VkD3D12FenceSubmitInfoKHR))- *> poke (ptr `plusPtr` 24) (vkPWaitSemaphoreValues (poked :: VkD3D12FenceSubmitInfoKHR))- *> poke (ptr `plusPtr` 32) (vkSignalSemaphoreValuesCount (poked :: VkD3D12FenceSubmitInfoKHR))- *> poke (ptr `plusPtr` 40) (vkPSignalSemaphoreValues (poked :: VkD3D12FenceSubmitInfoKHR))+instance ToCStruct D3D12FenceSubmitInfoKHR where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p D3D12FenceSubmitInfoKHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (either id (fromIntegral . Data.Vector.length) (waitSemaphoreValues)) :: Word32))+ pWaitSemaphoreValues'' <- case (waitSemaphoreValues) of+ Left _ -> pure nullPtr+ Right v -> do+ pPWaitSemaphoreValues' <- ContT $ allocaBytesAligned @Word64 ((Data.Vector.length (v)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPWaitSemaphoreValues' `plusPtr` (8 * (i)) :: Ptr Word64) (e)) (v)+ pure $ pPWaitSemaphoreValues'+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word64))) pWaitSemaphoreValues''+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (either id (fromIntegral . Data.Vector.length) (signalSemaphoreValues)) :: Word32))+ pSignalSemaphoreValues'' <- case (signalSemaphoreValues) of+ Left _ -> pure nullPtr+ Right v -> do+ pPSignalSemaphoreValues' <- ContT $ allocaBytesAligned @Word64 ((Data.Vector.length (v)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPSignalSemaphoreValues' `plusPtr` (8 * (i)) :: Ptr Word64) (e)) (v)+ pure $ pPSignalSemaphoreValues'+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Word64))) pSignalSemaphoreValues''+ lift $ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct D3D12FenceSubmitInfoKHR where+ peekCStruct p = do+ waitSemaphoreValuesCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pWaitSemaphoreValues <- peek @(Ptr Word64) ((p `plusPtr` 24 :: Ptr (Ptr Word64)))+ pWaitSemaphoreValues' <- maybePeek (\j -> generateM (fromIntegral waitSemaphoreValuesCount) (\i -> peek @Word64 (((j) `advancePtrBytes` (8 * (i)) :: Ptr Word64)))) pWaitSemaphoreValues+ let pWaitSemaphoreValues'' = maybe (Left waitSemaphoreValuesCount) Right pWaitSemaphoreValues'+ signalSemaphoreValuesCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pSignalSemaphoreValues <- peek @(Ptr Word64) ((p `plusPtr` 40 :: Ptr (Ptr Word64)))+ pSignalSemaphoreValues' <- maybePeek (\j -> generateM (fromIntegral signalSemaphoreValuesCount) (\i -> peek @Word64 (((j) `advancePtrBytes` (8 * (i)) :: Ptr Word64)))) pSignalSemaphoreValues+ let pSignalSemaphoreValues'' = maybe (Left signalSemaphoreValuesCount) Right pSignalSemaphoreValues'+ pure $ D3D12FenceSubmitInfoKHR+ pWaitSemaphoreValues'' pSignalSemaphoreValues''++instance Zero D3D12FenceSubmitInfoKHR where+ zero = D3D12FenceSubmitInfoKHR+ (Left 0)+ (Left 0)++ -- | VkSemaphoreGetWin32HandleInfoKHR - Structure describing a Win32 handle -- semaphore export operation --@@ -470,36 +596,39 @@ -- -- The properties of the handle returned depend on the value of -- @handleType@. See--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreHandleTypeFlagBits'+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits' -- for a description of the properties of the defined external semaphore -- handle types. -- -- == Valid Usage -- -- - @handleType@ /must/ have been included in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore.VkExportSemaphoreCreateInfo'::@handleTypes@--- when the @semaphore@’s current payload was created.+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore.ExportSemaphoreCreateInfo'::@handleTypes@+-- when the 'Graphics.Vulkan.Core10.Handles.Semaphore'’s current+-- payload was created. -- -- - If @handleType@ is defined as an NT handle,--- 'vkGetSemaphoreWin32HandleKHR' /must/ be called no more than once--- for each valid unique combination of @semaphore@ and @handleType@.+-- 'getSemaphoreWin32HandleKHR' /must/ be called no more than once for+-- each valid unique combination of+-- 'Graphics.Vulkan.Core10.Handles.Semaphore' and @handleType@. ----- - @semaphore@ /must/ not currently have its payload replaced by an--- imported payload as described below in [Importing Semaphore--- Payloads](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-importing)+-- - 'Graphics.Vulkan.Core10.Handles.Semaphore' /must/ not currently have+-- its payload replaced by an imported payload as described below in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads> -- unless that imported payload’s handle type was included in--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreProperties'::@exportFromImportedHandleTypes@+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.ExternalSemaphoreProperties'::@exportFromImportedHandleTypes@ -- for @handleType@. -- -- - If @handleType@ refers to a handle type with copy payload--- transference semantics, as defined below in [Importing Semaphore--- Payloads](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-importing),--- there /must/ be no queue waiting on @semaphore@.+-- transference semantics, as defined below in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>,+-- there /must/ be no queue waiting on+-- 'Graphics.Vulkan.Core10.Handles.Semaphore'. -- -- - If @handleType@ refers to a handle type with copy payload--- transference semantics, @semaphore@ /must/ be signaled, or have an--- associated [semaphore signal--- operation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-signaling)+-- transference semantics, 'Graphics.Vulkan.Core10.Handles.Semaphore'+-- /must/ be signaled, or have an associated+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation> -- pending execution. -- -- - @handleType@ /must/ be defined as an NT handle or a global share@@ -508,42 +637,79 @@ -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR' -- -- - @pNext@ /must/ be @NULL@ ----- - @semaphore@ /must/ be a valid @VkSemaphore@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Semaphore' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Semaphore' handle -- -- - @handleType@ /must/ be a valid--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreHandleTypeFlagBits'+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits' -- value -- -- = See Also ----- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities.VkExternalSemaphoreHandleTypeFlagBits',--- 'Graphics.Vulkan.Core10.Queue.VkSemaphore',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetSemaphoreWin32HandleKHR'-data VkSemaphoreGetWin32HandleInfoKHR = VkSemaphoreGetWin32HandleInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @semaphore@ is the semaphore from which state will be exported.- vkSemaphore :: VkSemaphore+-- 'Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits.ExternalSemaphoreHandleTypeFlagBits',+-- 'Graphics.Vulkan.Core10.Handles.Semaphore',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getSemaphoreWin32HandleKHR'+data SemaphoreGetWin32HandleInfoKHR = SemaphoreGetWin32HandleInfoKHR+ { -- | 'Graphics.Vulkan.Core10.Handles.Semaphore' is the semaphore from which+ -- state will be exported.+ semaphore :: Semaphore , -- | @handleType@ is the type of handle requested.- vkHandleType :: VkExternalSemaphoreHandleTypeFlagBits+ handleType :: ExternalSemaphoreHandleTypeFlagBits }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show SemaphoreGetWin32HandleInfoKHR -instance Storable VkSemaphoreGetWin32HandleInfoKHR where+instance ToCStruct SemaphoreGetWin32HandleInfoKHR where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SemaphoreGetWin32HandleInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Semaphore)) (semaphore)+ poke ((p `plusPtr` 24 :: Ptr ExternalSemaphoreHandleTypeFlagBits)) (handleType)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Semaphore)) (zero)+ poke ((p `plusPtr` 24 :: Ptr ExternalSemaphoreHandleTypeFlagBits)) (zero)+ f++instance FromCStruct SemaphoreGetWin32HandleInfoKHR where+ peekCStruct p = do+ semaphore <- peek @Semaphore ((p `plusPtr` 16 :: Ptr Semaphore))+ handleType <- peek @ExternalSemaphoreHandleTypeFlagBits ((p `plusPtr` 24 :: Ptr ExternalSemaphoreHandleTypeFlagBits))+ pure $ SemaphoreGetWin32HandleInfoKHR+ semaphore handleType++instance Storable SemaphoreGetWin32HandleInfoKHR where sizeOf ~_ = 32 alignment ~_ = 8- peek ptr = VkSemaphoreGetWin32HandleInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkSemaphoreGetWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkSemaphoreGetWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 16) (vkSemaphore (poked :: VkSemaphoreGetWin32HandleInfoKHR))- *> poke (ptr `plusPtr` 24) (vkHandleType (poked :: VkSemaphoreGetWin32HandleInfoKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SemaphoreGetWin32HandleInfoKHR where+ zero = SemaphoreGetWin32HandleInfoKHR+ zero+ zero+++type KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION"+pattern KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION = 1+++type KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME = "VK_KHR_external_semaphore_win32"++-- No documentation found for TopLevel "VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME"+pattern KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME = "VK_KHR_external_semaphore_win32"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs-boot view
@@ -0,0 +1,41 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32 ( D3D12FenceSubmitInfoKHR+ , ExportSemaphoreWin32HandleInfoKHR+ , ImportSemaphoreWin32HandleInfoKHR+ , SemaphoreGetWin32HandleInfoKHR+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data D3D12FenceSubmitInfoKHR++instance ToCStruct D3D12FenceSubmitInfoKHR+instance Show D3D12FenceSubmitInfoKHR++instance FromCStruct D3D12FenceSubmitInfoKHR+++data ExportSemaphoreWin32HandleInfoKHR++instance ToCStruct ExportSemaphoreWin32HandleInfoKHR+instance Show ExportSemaphoreWin32HandleInfoKHR++instance FromCStruct ExportSemaphoreWin32HandleInfoKHR+++data ImportSemaphoreWin32HandleInfoKHR++instance ToCStruct ImportSemaphoreWin32HandleInfoKHR+instance Show ImportSemaphoreWin32HandleInfoKHR++instance FromCStruct ImportSemaphoreWin32HandleInfoKHR+++data SemaphoreGetWin32HandleInfoKHR++instance ToCStruct SemaphoreGetWin32HandleInfoKHR+instance Show SemaphoreGetWin32HandleInfoKHR++instance FromCStruct SemaphoreGetWin32HandleInfoKHR+
+ src/Graphics/Vulkan/Extensions/VK_KHR_get_display_properties2.hs view
@@ -0,0 +1,653 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2 ( getPhysicalDeviceDisplayProperties2KHR+ , getPhysicalDeviceDisplayPlaneProperties2KHR+ , getDisplayModeProperties2KHR+ , getDisplayPlaneCapabilities2KHR+ , DisplayProperties2KHR(..)+ , DisplayPlaneProperties2KHR(..)+ , DisplayModeProperties2KHR(..)+ , DisplayPlaneInfo2KHR(..)+ , DisplayPlaneCapabilities2KHR(..)+ , KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION+ , pattern KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION+ , KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME+ , pattern KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME+ , DisplayKHR(..)+ , DisplayModeKHR(..)+ , DisplayPropertiesKHR(..)+ , DisplayPlanePropertiesKHR(..)+ , DisplayModeParametersKHR(..)+ , DisplayModePropertiesKHR(..)+ , DisplayPlaneCapabilitiesKHR(..)+ , DisplayPlaneAlphaFlagBitsKHR(..)+ , DisplayPlaneAlphaFlagsKHR+ , SurfaceTransformFlagBitsKHR(..)+ , SurfaceTransformFlagsKHR+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Extensions.Handles (DisplayKHR)+import Graphics.Vulkan.Extensions.Handles (DisplayKHR(..))+import Graphics.Vulkan.Extensions.Handles (DisplayModeKHR)+import Graphics.Vulkan.Extensions.VK_KHR_display (DisplayModePropertiesKHR)+import Graphics.Vulkan.Extensions.VK_KHR_display (DisplayPlaneCapabilitiesKHR)+import Graphics.Vulkan.Extensions.VK_KHR_display (DisplayPlanePropertiesKHR)+import Graphics.Vulkan.Extensions.VK_KHR_display (DisplayPropertiesKHR)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetDisplayModeProperties2KHR))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetDisplayPlaneCapabilities2KHR))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceDisplayPlaneProperties2KHR))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceDisplayProperties2KHR))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.Handles (DisplayKHR(..))+import Graphics.Vulkan.Extensions.Handles (DisplayModeKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (DisplayModeParametersKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (DisplayModePropertiesKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (DisplayPlaneAlphaFlagBitsKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (DisplayPlaneAlphaFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_display (DisplayPlaneCapabilitiesKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (DisplayPlanePropertiesKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (DisplayPropertiesKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (SurfaceTransformFlagBitsKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (SurfaceTransformFlagsKHR)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceDisplayProperties2KHR+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr DisplayProperties2KHR -> IO Result) -> Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr DisplayProperties2KHR -> IO Result++-- | vkGetPhysicalDeviceDisplayProperties2KHR - Query information about the+-- available displays+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is a physical+-- device.+--+-- - @pPropertyCount@ is a pointer to an integer related to the number of+-- display devices available or queried, as described below.+--+-- - @pProperties@ is either @NULL@ or a pointer to an array of+-- 'DisplayProperties2KHR' structures.+--+-- = Description+--+-- 'getPhysicalDeviceDisplayProperties2KHR' behaves similarly to+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.getPhysicalDeviceDisplayPropertiesKHR',+-- with the ability to return extended information via chained output+-- structures.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @pPropertyCount@ /must/ be a valid pointer to a @uint32_t@ value+--+-- - If the value referenced by @pPropertyCount@ is not @0@, and+-- @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer+-- to an array of @pPropertyCount@ 'DisplayProperties2KHR' structures+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'DisplayProperties2KHR', 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+getPhysicalDeviceDisplayProperties2KHR :: PhysicalDevice -> IO (Result, ("properties" ::: Vector DisplayProperties2KHR))+getPhysicalDeviceDisplayProperties2KHR physicalDevice = evalContT $ do+ let vkGetPhysicalDeviceDisplayProperties2KHR' = mkVkGetPhysicalDeviceDisplayProperties2KHR (pVkGetPhysicalDeviceDisplayProperties2KHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pPPropertyCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkGetPhysicalDeviceDisplayProperties2KHR' physicalDevice' (pPPropertyCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pPropertyCount <- lift $ peek @Word32 pPPropertyCount+ pPProperties <- ContT $ bracket (callocBytes @DisplayProperties2KHR ((fromIntegral (pPropertyCount)) * 64)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPProperties `advancePtrBytes` (i * 64) :: Ptr DisplayProperties2KHR) . ($ ())) [0..(fromIntegral (pPropertyCount)) - 1]+ r' <- lift $ vkGetPhysicalDeviceDisplayProperties2KHR' physicalDevice' (pPPropertyCount) ((pPProperties))+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pPropertyCount' <- lift $ peek @Word32 pPPropertyCount+ pProperties' <- lift $ generateM (fromIntegral (pPropertyCount')) (\i -> peekCStruct @DisplayProperties2KHR (((pPProperties) `advancePtrBytes` (64 * (i)) :: Ptr DisplayProperties2KHR)))+ pure $ ((r'), pProperties')+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceDisplayPlaneProperties2KHR+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr DisplayPlaneProperties2KHR -> IO Result) -> Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr DisplayPlaneProperties2KHR -> IO Result++-- | vkGetPhysicalDeviceDisplayPlaneProperties2KHR - Query information about+-- the available display planes.+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is a physical+-- device.+--+-- - @pPropertyCount@ is a pointer to an integer related to the number of+-- display planes available or queried, as described below.+--+-- - @pProperties@ is either @NULL@ or a pointer to an array of+-- 'DisplayPlaneProperties2KHR' structures.+--+-- = Description+--+-- 'getPhysicalDeviceDisplayPlaneProperties2KHR' behaves similarly to+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.getPhysicalDeviceDisplayPlanePropertiesKHR',+-- with the ability to return extended information via chained output+-- structures.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @pPropertyCount@ /must/ be a valid pointer to a @uint32_t@ value+--+-- - If the value referenced by @pPropertyCount@ is not @0@, and+-- @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer+-- to an array of @pPropertyCount@ 'DisplayPlaneProperties2KHR'+-- structures+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'DisplayPlaneProperties2KHR',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+getPhysicalDeviceDisplayPlaneProperties2KHR :: PhysicalDevice -> IO (Result, ("properties" ::: Vector DisplayPlaneProperties2KHR))+getPhysicalDeviceDisplayPlaneProperties2KHR physicalDevice = evalContT $ do+ let vkGetPhysicalDeviceDisplayPlaneProperties2KHR' = mkVkGetPhysicalDeviceDisplayPlaneProperties2KHR (pVkGetPhysicalDeviceDisplayPlaneProperties2KHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pPPropertyCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkGetPhysicalDeviceDisplayPlaneProperties2KHR' physicalDevice' (pPPropertyCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pPropertyCount <- lift $ peek @Word32 pPPropertyCount+ pPProperties <- ContT $ bracket (callocBytes @DisplayPlaneProperties2KHR ((fromIntegral (pPropertyCount)) * 32)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPProperties `advancePtrBytes` (i * 32) :: Ptr DisplayPlaneProperties2KHR) . ($ ())) [0..(fromIntegral (pPropertyCount)) - 1]+ r' <- lift $ vkGetPhysicalDeviceDisplayPlaneProperties2KHR' physicalDevice' (pPPropertyCount) ((pPProperties))+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pPropertyCount' <- lift $ peek @Word32 pPPropertyCount+ pProperties' <- lift $ generateM (fromIntegral (pPropertyCount')) (\i -> peekCStruct @DisplayPlaneProperties2KHR (((pPProperties) `advancePtrBytes` (32 * (i)) :: Ptr DisplayPlaneProperties2KHR)))+ pure $ ((r'), pProperties')+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetDisplayModeProperties2KHR+ :: FunPtr (Ptr PhysicalDevice_T -> DisplayKHR -> Ptr Word32 -> Ptr DisplayModeProperties2KHR -> IO Result) -> Ptr PhysicalDevice_T -> DisplayKHR -> Ptr Word32 -> Ptr DisplayModeProperties2KHR -> IO Result++-- | vkGetDisplayModeProperties2KHR - Query information about the available+-- display modes.+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device associated with+-- 'Graphics.Vulkan.Extensions.WSITypes.Display'.+--+-- - 'Graphics.Vulkan.Extensions.WSITypes.Display' is the display to+-- query.+--+-- - @pPropertyCount@ is a pointer to an integer related to the number of+-- display modes available or queried, as described below.+--+-- - @pProperties@ is either @NULL@ or a pointer to an array of+-- 'DisplayModeProperties2KHR' structures.+--+-- = Description+--+-- 'getDisplayModeProperties2KHR' behaves similarly to+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.getDisplayModePropertiesKHR',+-- with the ability to return extended information via chained output+-- structures.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - 'Graphics.Vulkan.Extensions.WSITypes.Display' /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.DisplayKHR' handle+--+-- - @pPropertyCount@ /must/ be a valid pointer to a @uint32_t@ value+--+-- - If the value referenced by @pPropertyCount@ is not @0@, and+-- @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer+-- to an array of @pPropertyCount@ 'DisplayModeProperties2KHR'+-- structures+--+-- - 'Graphics.Vulkan.Extensions.WSITypes.Display' /must/ have been+-- created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.DisplayKHR',+-- 'DisplayModeProperties2KHR',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+getDisplayModeProperties2KHR :: PhysicalDevice -> DisplayKHR -> IO (Result, ("properties" ::: Vector DisplayModeProperties2KHR))+getDisplayModeProperties2KHR physicalDevice display = evalContT $ do+ let vkGetDisplayModeProperties2KHR' = mkVkGetDisplayModeProperties2KHR (pVkGetDisplayModeProperties2KHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pPPropertyCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkGetDisplayModeProperties2KHR' physicalDevice' (display) (pPPropertyCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pPropertyCount <- lift $ peek @Word32 pPPropertyCount+ pPProperties <- ContT $ bracket (callocBytes @DisplayModeProperties2KHR ((fromIntegral (pPropertyCount)) * 40)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPProperties `advancePtrBytes` (i * 40) :: Ptr DisplayModeProperties2KHR) . ($ ())) [0..(fromIntegral (pPropertyCount)) - 1]+ r' <- lift $ vkGetDisplayModeProperties2KHR' physicalDevice' (display) (pPPropertyCount) ((pPProperties))+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pPropertyCount' <- lift $ peek @Word32 pPPropertyCount+ pProperties' <- lift $ generateM (fromIntegral (pPropertyCount')) (\i -> peekCStruct @DisplayModeProperties2KHR (((pPProperties) `advancePtrBytes` (40 * (i)) :: Ptr DisplayModeProperties2KHR)))+ pure $ ((r'), pProperties')+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetDisplayPlaneCapabilities2KHR+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr DisplayPlaneInfo2KHR -> Ptr DisplayPlaneCapabilities2KHR -> IO Result) -> Ptr PhysicalDevice_T -> Ptr DisplayPlaneInfo2KHR -> Ptr DisplayPlaneCapabilities2KHR -> IO Result++-- | vkGetDisplayPlaneCapabilities2KHR - Query capabilities of a mode and+-- plane combination+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device associated with @pDisplayPlaneInfo@.+--+-- - @pDisplayPlaneInfo@ is a pointer to a 'DisplayPlaneInfo2KHR'+-- structure describing the plane and mode.+--+-- - @pCapabilities@ is a pointer to a 'DisplayPlaneCapabilities2KHR'+-- structure in which the capabilities are returned.+--+-- = Description+--+-- 'getDisplayPlaneCapabilities2KHR' behaves similarly to+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.getDisplayPlaneCapabilitiesKHR',+-- with the ability to specify extended inputs via chained input+-- structures, and to return extended information via chained output+-- structures.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'DisplayPlaneCapabilities2KHR', 'DisplayPlaneInfo2KHR',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+getDisplayPlaneCapabilities2KHR :: PhysicalDevice -> DisplayPlaneInfo2KHR -> IO (DisplayPlaneCapabilities2KHR)+getDisplayPlaneCapabilities2KHR physicalDevice displayPlaneInfo = evalContT $ do+ let vkGetDisplayPlaneCapabilities2KHR' = mkVkGetDisplayPlaneCapabilities2KHR (pVkGetDisplayPlaneCapabilities2KHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ pDisplayPlaneInfo <- ContT $ withCStruct (displayPlaneInfo)+ pPCapabilities <- ContT (withZeroCStruct @DisplayPlaneCapabilities2KHR)+ r <- lift $ vkGetDisplayPlaneCapabilities2KHR' (physicalDeviceHandle (physicalDevice)) pDisplayPlaneInfo (pPCapabilities)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pCapabilities <- lift $ peekCStruct @DisplayPlaneCapabilities2KHR pPCapabilities+ pure $ (pCapabilities)+++-- | VkDisplayProperties2KHR - Structure describing an available display+-- device+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplayPropertiesKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceDisplayProperties2KHR'+data DisplayProperties2KHR = DisplayProperties2KHR+ { -- | @displayProperties@ is a+ -- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplayPropertiesKHR'+ -- structure.+ displayProperties :: DisplayPropertiesKHR }+ deriving (Typeable)+deriving instance Show DisplayProperties2KHR++instance ToCStruct DisplayProperties2KHR where+ withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DisplayProperties2KHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DisplayPropertiesKHR)) (displayProperties) . ($ ())+ lift $ f+ cStructSize = 64+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DisplayPropertiesKHR)) (zero) . ($ ())+ lift $ f++instance FromCStruct DisplayProperties2KHR where+ peekCStruct p = do+ displayProperties <- peekCStruct @DisplayPropertiesKHR ((p `plusPtr` 16 :: Ptr DisplayPropertiesKHR))+ pure $ DisplayProperties2KHR+ displayProperties++instance Zero DisplayProperties2KHR where+ zero = DisplayProperties2KHR+ zero+++-- | VkDisplayPlaneProperties2KHR - Structure describing an available display+-- plane+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplayPlanePropertiesKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceDisplayPlaneProperties2KHR'+data DisplayPlaneProperties2KHR = DisplayPlaneProperties2KHR+ { -- | @displayPlaneProperties@ is a+ -- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplayPlanePropertiesKHR'+ -- structure.+ displayPlaneProperties :: DisplayPlanePropertiesKHR }+ deriving (Typeable)+deriving instance Show DisplayPlaneProperties2KHR++instance ToCStruct DisplayPlaneProperties2KHR where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DisplayPlaneProperties2KHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DisplayPlanePropertiesKHR)) (displayPlaneProperties) . ($ ())+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DisplayPlanePropertiesKHR)) (zero) . ($ ())+ lift $ f++instance FromCStruct DisplayPlaneProperties2KHR where+ peekCStruct p = do+ displayPlaneProperties <- peekCStruct @DisplayPlanePropertiesKHR ((p `plusPtr` 16 :: Ptr DisplayPlanePropertiesKHR))+ pure $ DisplayPlaneProperties2KHR+ displayPlaneProperties++instance Zero DisplayPlaneProperties2KHR where+ zero = DisplayPlaneProperties2KHR+ zero+++-- | VkDisplayModeProperties2KHR - Structure describing an available display+-- mode+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplayModePropertiesKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getDisplayModeProperties2KHR'+data DisplayModeProperties2KHR = DisplayModeProperties2KHR+ { -- | @displayModeProperties@ is a+ -- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplayModePropertiesKHR'+ -- structure.+ displayModeProperties :: DisplayModePropertiesKHR }+ deriving (Typeable)+deriving instance Show DisplayModeProperties2KHR++instance ToCStruct DisplayModeProperties2KHR where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DisplayModeProperties2KHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DisplayModePropertiesKHR)) (displayModeProperties) . ($ ())+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DisplayModePropertiesKHR)) (zero) . ($ ())+ lift $ f++instance FromCStruct DisplayModeProperties2KHR where+ peekCStruct p = do+ displayModeProperties <- peekCStruct @DisplayModePropertiesKHR ((p `plusPtr` 16 :: Ptr DisplayModePropertiesKHR))+ pure $ DisplayModeProperties2KHR+ displayModeProperties++instance Zero DisplayModeProperties2KHR where+ zero = DisplayModeProperties2KHR+ zero+++-- | VkDisplayPlaneInfo2KHR - Structure defining the intended configuration+-- of a display plane+--+-- = Description+--+-- Note+--+-- This parameter also implicitly specifies a display.+--+-- - @planeIndex@ is the plane which the application intends to use with+-- the display.+--+-- The members of 'DisplayPlaneInfo2KHR' correspond to the arguments to+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.getDisplayPlaneCapabilitiesKHR',+-- with @sType@ and @pNext@ added for extensibility.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR'+--+-- - @pNext@ /must/ be @NULL@+--+-- - @mode@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.DisplayModeKHR' handle+--+-- == Host Synchronization+--+-- - Host access to @mode@ /must/ be externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.DisplayModeKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getDisplayPlaneCapabilities2KHR'+data DisplayPlaneInfo2KHR = DisplayPlaneInfo2KHR+ { -- | @mode@ is the display mode the application intends to program when using+ -- the specified plane.+ mode :: DisplayModeKHR+ , -- No documentation found for Nested "VkDisplayPlaneInfo2KHR" "planeIndex"+ planeIndex :: Word32+ }+ deriving (Typeable)+deriving instance Show DisplayPlaneInfo2KHR++instance ToCStruct DisplayPlaneInfo2KHR where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DisplayPlaneInfo2KHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DisplayModeKHR)) (mode)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (planeIndex)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DisplayModeKHR)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ f++instance FromCStruct DisplayPlaneInfo2KHR where+ peekCStruct p = do+ mode <- peek @DisplayModeKHR ((p `plusPtr` 16 :: Ptr DisplayModeKHR))+ planeIndex <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ pure $ DisplayPlaneInfo2KHR+ mode planeIndex++instance Storable DisplayPlaneInfo2KHR where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DisplayPlaneInfo2KHR where+ zero = DisplayPlaneInfo2KHR+ zero+ zero+++-- | VkDisplayPlaneCapabilities2KHR - Structure describing the capabilities+-- of a mode and plane combination+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplayPlaneCapabilitiesKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getDisplayPlaneCapabilities2KHR'+data DisplayPlaneCapabilities2KHR = DisplayPlaneCapabilities2KHR+ { -- | @capabilities@ is a+ -- 'Graphics.Vulkan.Extensions.VK_KHR_display.DisplayPlaneCapabilitiesKHR'+ -- structure.+ capabilities :: DisplayPlaneCapabilitiesKHR }+ deriving (Typeable)+deriving instance Show DisplayPlaneCapabilities2KHR++instance ToCStruct DisplayPlaneCapabilities2KHR where+ withCStruct x f = allocaBytesAligned 88 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DisplayPlaneCapabilities2KHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DisplayPlaneCapabilitiesKHR)) (capabilities) . ($ ())+ lift $ f+ cStructSize = 88+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr DisplayPlaneCapabilitiesKHR)) (zero) . ($ ())+ lift $ f++instance FromCStruct DisplayPlaneCapabilities2KHR where+ peekCStruct p = do+ capabilities <- peekCStruct @DisplayPlaneCapabilitiesKHR ((p `plusPtr` 16 :: Ptr DisplayPlaneCapabilitiesKHR))+ pure $ DisplayPlaneCapabilities2KHR+ capabilities++instance Zero DisplayPlaneCapabilities2KHR where+ zero = DisplayPlaneCapabilities2KHR+ zero+++type KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION"+pattern KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1+++type KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2"++-- No documentation found for TopLevel "VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME"+pattern KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_get_display_properties2.hs-boot view
@@ -0,0 +1,50 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2 ( DisplayModeProperties2KHR+ , DisplayPlaneCapabilities2KHR+ , DisplayPlaneInfo2KHR+ , DisplayPlaneProperties2KHR+ , DisplayProperties2KHR+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data DisplayModeProperties2KHR++instance ToCStruct DisplayModeProperties2KHR+instance Show DisplayModeProperties2KHR++instance FromCStruct DisplayModeProperties2KHR+++data DisplayPlaneCapabilities2KHR++instance ToCStruct DisplayPlaneCapabilities2KHR+instance Show DisplayPlaneCapabilities2KHR++instance FromCStruct DisplayPlaneCapabilities2KHR+++data DisplayPlaneInfo2KHR++instance ToCStruct DisplayPlaneInfo2KHR+instance Show DisplayPlaneInfo2KHR++instance FromCStruct DisplayPlaneInfo2KHR+++data DisplayPlaneProperties2KHR++instance ToCStruct DisplayPlaneProperties2KHR+instance Show DisplayPlaneProperties2KHR++instance FromCStruct DisplayPlaneProperties2KHR+++data DisplayProperties2KHR++instance ToCStruct DisplayProperties2KHR+instance Show DisplayProperties2KHR++instance FromCStruct DisplayProperties2KHR+
src/Graphics/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs view
@@ -1,140 +1,93 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}+module Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2 ( pattern STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR+ , pattern STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR+ , pattern STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR+ , pattern STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR+ , pattern STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR+ , getBufferMemoryRequirements2KHR+ , getImageMemoryRequirements2KHR+ , getImageSparseMemoryRequirements2KHR+ , BufferMemoryRequirementsInfo2KHR+ , ImageMemoryRequirementsInfo2KHR+ , ImageSparseMemoryRequirementsInfo2KHR+ , SparseImageMemoryRequirements2KHR+ , KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION+ , pattern KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION+ , KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME+ , pattern KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2- ( pattern VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION- , pattern VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME- , vkGetBufferMemoryRequirements2KHR- , vkGetImageMemoryRequirements2KHR- , vkGetImageSparseMemoryRequirements2KHR- , VkBufferMemoryRequirementsInfo2KHR- , pattern VkBufferMemoryRequirementsInfo2KHR- , VkImageMemoryRequirementsInfo2KHR- , pattern VkImageMemoryRequirementsInfo2KHR- , VkImageSparseMemoryRequirementsInfo2KHR- , pattern VkImageSparseMemoryRequirementsInfo2KHR- , VkMemoryRequirements2KHR- , pattern VkMemoryRequirements2KHR- , VkSparseImageMemoryRequirements2KHR- , pattern VkSparseImageMemoryRequirements2KHR- , pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR- , pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR- , pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR- , pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR- , pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR- ) where+import Data.String (IsString)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (getBufferMemoryRequirements2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (getImageMemoryRequirements2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (getImageSparseMemoryRequirements2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (BufferMemoryRequirementsInfo2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (ImageMemoryRequirementsInfo2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (ImageSparseMemoryRequirementsInfo2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (SparseImageMemoryRequirements2)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR"+pattern STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 -import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- )-import Graphics.Vulkan.NamedType- ( (:::)- ) +-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR"+pattern STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 -import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- )-import Graphics.Vulkan.Core10.MemoryManagement- ( VkMemoryRequirements(..)- , VkBuffer- , VkImage- )-import Graphics.Vulkan.Core10.SparseResourceMemoryManagement- ( VkSparseImageMemoryRequirements(..)- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2- ( VkBufferMemoryRequirementsInfo2(..)- , VkImageMemoryRequirementsInfo2(..)- , VkImageSparseMemoryRequirementsInfo2(..)- , VkMemoryRequirements2(..)- , VkSparseImageMemoryRequirements2(..)- , vkGetBufferMemoryRequirements2- , vkGetImageMemoryRequirements2- , vkGetImageSparseMemoryRequirements2- , pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2- , pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2- , pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2- , pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2- , pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2- ) +-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR"+pattern STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 --- No documentation found for TopLevel "VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION"-pattern VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION :: Integral a => a-pattern VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME"-pattern VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2"++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR"+pattern STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR"+pattern STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2++ -- No documentation found for TopLevel "vkGetBufferMemoryRequirements2KHR"-vkGetBufferMemoryRequirements2KHR :: ("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkBufferMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ()-vkGetBufferMemoryRequirements2KHR = vkGetBufferMemoryRequirements2+getBufferMemoryRequirements2KHR = getBufferMemoryRequirements2++ -- No documentation found for TopLevel "vkGetImageMemoryRequirements2KHR"-vkGetImageMemoryRequirements2KHR :: ("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr VkMemoryRequirements2) -> IO ()-vkGetImageMemoryRequirements2KHR = vkGetImageMemoryRequirements2+getImageMemoryRequirements2KHR = getImageMemoryRequirements2++ -- No documentation found for TopLevel "vkGetImageSparseMemoryRequirements2KHR"-vkGetImageSparseMemoryRequirements2KHR :: ("device" ::: VkDevice) -> ("pInfo" ::: Ptr VkImageSparseMemoryRequirementsInfo2) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr VkSparseImageMemoryRequirements2) -> IO ()-vkGetImageSparseMemoryRequirements2KHR = vkGetImageSparseMemoryRequirements2--- No documentation found for TopLevel "VkBufferMemoryRequirementsInfo2KHR"-type VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2+getImageSparseMemoryRequirements2KHR = getImageSparseMemoryRequirements2 -- No documentation found for TopLevel "VkBufferMemoryRequirementsInfo2KHR"-pattern VkBufferMemoryRequirementsInfo2KHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("buffer" ::: VkBuffer) -> VkBufferMemoryRequirementsInfo2KHR-pattern VkBufferMemoryRequirementsInfo2KHR vkSType vkPNext vkBuffer = VkBufferMemoryRequirementsInfo2 vkSType vkPNext vkBuffer--- No documentation found for TopLevel "VkImageMemoryRequirementsInfo2KHR"-type VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2+type BufferMemoryRequirementsInfo2KHR = BufferMemoryRequirementsInfo2 -- No documentation found for TopLevel "VkImageMemoryRequirementsInfo2KHR"-pattern VkImageMemoryRequirementsInfo2KHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("image" ::: VkImage) -> VkImageMemoryRequirementsInfo2KHR-pattern VkImageMemoryRequirementsInfo2KHR vkSType vkPNext vkImage = VkImageMemoryRequirementsInfo2 vkSType vkPNext vkImage--- No documentation found for TopLevel "VkImageSparseMemoryRequirementsInfo2KHR"-type VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2+type ImageMemoryRequirementsInfo2KHR = ImageMemoryRequirementsInfo2 -- No documentation found for TopLevel "VkImageSparseMemoryRequirementsInfo2KHR"-pattern VkImageSparseMemoryRequirementsInfo2KHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("image" ::: VkImage) -> VkImageSparseMemoryRequirementsInfo2KHR-pattern VkImageSparseMemoryRequirementsInfo2KHR vkSType vkPNext vkImage = VkImageSparseMemoryRequirementsInfo2 vkSType vkPNext vkImage--- No documentation found for TopLevel "VkMemoryRequirements2KHR"-type VkMemoryRequirements2KHR = VkMemoryRequirements2+type ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2 --- No documentation found for TopLevel "VkMemoryRequirements2KHR"-pattern VkMemoryRequirements2KHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("memoryRequirements" ::: VkMemoryRequirements) -> VkMemoryRequirements2KHR-pattern VkMemoryRequirements2KHR vkSType vkPNext vkMemoryRequirements = VkMemoryRequirements2 vkSType vkPNext vkMemoryRequirements -- No documentation found for TopLevel "VkSparseImageMemoryRequirements2KHR"-type VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2+type SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2 --- No documentation found for TopLevel "VkSparseImageMemoryRequirements2KHR"-pattern VkSparseImageMemoryRequirements2KHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("memoryRequirements" ::: VkSparseImageMemoryRequirements) -> VkSparseImageMemoryRequirements2KHR-pattern VkSparseImageMemoryRequirements2KHR vkSType vkPNext vkMemoryRequirements = VkSparseImageMemoryRequirements2 vkSType vkPNext vkMemoryRequirements--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR"-pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR"-pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR"-pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR"-pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR"-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2+type KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION"+pattern KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1+++type KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2"++-- No documentation found for TopLevel "VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME"+pattern KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2"+
src/Graphics/Vulkan/Extensions/VK_KHR_get_physical_device_properties2.hs view
@@ -1,228 +1,171 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}+module Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2 ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR+ , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR+ , pattern STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR+ , pattern STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR+ , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR+ , pattern STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR+ , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR+ , pattern STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR+ , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR+ , getPhysicalDeviceFeatures2KHR+ , getPhysicalDeviceProperties2KHR+ , getPhysicalDeviceFormatProperties2KHR+ , getPhysicalDeviceImageFormatProperties2KHR+ , getPhysicalDeviceQueueFamilyProperties2KHR+ , getPhysicalDeviceMemoryProperties2KHR+ , getPhysicalDeviceSparseImageFormatProperties2KHR+ , PhysicalDeviceFeatures2KHR+ , PhysicalDeviceProperties2KHR+ , FormatProperties2KHR+ , ImageFormatProperties2KHR+ , PhysicalDeviceImageFormatInfo2KHR+ , QueueFamilyProperties2KHR+ , PhysicalDeviceMemoryProperties2KHR+ , SparseImageFormatProperties2KHR+ , PhysicalDeviceSparseImageFormatInfo2KHR+ , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+ , pattern KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION+ , KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+ , pattern KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2- ( pattern VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION- , pattern VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME- , vkGetPhysicalDeviceFeatures2KHR- , vkGetPhysicalDeviceProperties2KHR- , vkGetPhysicalDeviceFormatProperties2KHR- , vkGetPhysicalDeviceImageFormatProperties2KHR- , vkGetPhysicalDeviceQueueFamilyProperties2KHR- , vkGetPhysicalDeviceMemoryProperties2KHR- , vkGetPhysicalDeviceSparseImageFormatProperties2KHR- , VkPhysicalDeviceFeatures2KHR- , pattern VkPhysicalDeviceFeatures2KHR- , VkPhysicalDeviceProperties2KHR- , pattern VkPhysicalDeviceProperties2KHR- , VkFormatProperties2KHR- , pattern VkFormatProperties2KHR- , VkImageFormatProperties2KHR- , pattern VkImageFormatProperties2KHR- , VkPhysicalDeviceImageFormatInfo2KHR- , pattern VkPhysicalDeviceImageFormatInfo2KHR- , VkQueueFamilyProperties2KHR- , pattern VkQueueFamilyProperties2KHR- , VkPhysicalDeviceMemoryProperties2KHR- , pattern VkPhysicalDeviceMemoryProperties2KHR- , VkSparseImageFormatProperties2KHR- , pattern VkSparseImageFormatProperties2KHR- , VkPhysicalDeviceSparseImageFormatInfo2KHR- , pattern VkPhysicalDeviceSparseImageFormatInfo2KHR- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR- , pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR- , pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR- , pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR- , pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR- ) where+import Data.String (IsString)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (getPhysicalDeviceFeatures2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (getPhysicalDeviceFormatProperties2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (getPhysicalDeviceImageFormatProperties2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (getPhysicalDeviceMemoryProperties2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (getPhysicalDeviceProperties2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (getPhysicalDeviceQueueFamilyProperties2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (getPhysicalDeviceSparseImageFormatProperties2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (FormatProperties2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (ImageFormatProperties2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceFeatures2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceImageFormatInfo2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceMemoryProperties2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceProperties2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceSparseImageFormatInfo2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (QueueFamilyProperties2)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (SparseImageFormatProperties2)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FORMAT_PROPERTIES_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 -import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- )-import Graphics.Vulkan.NamedType- ( (:::)- ) +-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 -import Graphics.Vulkan.Core10.Core- ( VkFormat(..)- , VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkFormatProperties(..)- , VkImageFormatProperties(..)- , VkImageTiling(..)- , VkImageType(..)- , VkPhysicalDeviceFeatures(..)- , VkPhysicalDeviceMemoryProperties(..)- , VkPhysicalDeviceProperties(..)- , VkQueueFamilyProperties(..)- , VkSampleCountFlagBits(..)- , VkImageCreateFlags- , VkImageUsageFlags- , VkPhysicalDevice- )-import Graphics.Vulkan.Core10.SparseResourceMemoryManagement- ( VkSparseImageFormatProperties(..)- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2- ( VkFormatProperties2(..)- , VkImageFormatProperties2(..)- , VkPhysicalDeviceFeatures2(..)- , VkPhysicalDeviceImageFormatInfo2(..)- , VkPhysicalDeviceMemoryProperties2(..)- , VkPhysicalDeviceProperties2(..)- , VkPhysicalDeviceSparseImageFormatInfo2(..)- , VkQueueFamilyProperties2(..)- , VkSparseImageFormatProperties2(..)- , vkGetPhysicalDeviceFeatures2- , vkGetPhysicalDeviceFormatProperties2- , vkGetPhysicalDeviceImageFormatProperties2- , vkGetPhysicalDeviceMemoryProperties2- , vkGetPhysicalDeviceProperties2- , vkGetPhysicalDeviceQueueFamilyProperties2- , vkGetPhysicalDeviceSparseImageFormatProperties2- , pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2- , pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2- , pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2- , pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2- ) +-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR"+pattern STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = STRUCTURE_TYPE_FORMAT_PROPERTIES_2 --- No documentation found for TopLevel "VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION"-pattern VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION :: Integral a => a-pattern VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME"-pattern VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2"++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR"+pattern STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR"+pattern STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR"+pattern STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2++ -- No documentation found for TopLevel "vkGetPhysicalDeviceFeatures2KHR"-vkGetPhysicalDeviceFeatures2KHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkPhysicalDeviceFeatures2) -> IO ()-vkGetPhysicalDeviceFeatures2KHR = vkGetPhysicalDeviceFeatures2+getPhysicalDeviceFeatures2KHR = getPhysicalDeviceFeatures2++ -- No documentation found for TopLevel "vkGetPhysicalDeviceProperties2KHR"-vkGetPhysicalDeviceProperties2KHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pProperties" ::: Ptr VkPhysicalDeviceProperties2) -> IO ()-vkGetPhysicalDeviceProperties2KHR = vkGetPhysicalDeviceProperties2+getPhysicalDeviceProperties2KHR = getPhysicalDeviceProperties2++ -- No documentation found for TopLevel "vkGetPhysicalDeviceFormatProperties2KHR"-vkGetPhysicalDeviceFormatProperties2KHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("pFormatProperties" ::: Ptr VkFormatProperties2) -> IO ()-vkGetPhysicalDeviceFormatProperties2KHR = vkGetPhysicalDeviceFormatProperties2+getPhysicalDeviceFormatProperties2KHR = getPhysicalDeviceFormatProperties2++ -- No documentation found for TopLevel "vkGetPhysicalDeviceImageFormatProperties2KHR"-vkGetPhysicalDeviceImageFormatProperties2KHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pImageFormatInfo" ::: Ptr VkPhysicalDeviceImageFormatInfo2) -> ("pImageFormatProperties" ::: Ptr VkImageFormatProperties2) -> IO VkResult-vkGetPhysicalDeviceImageFormatProperties2KHR = vkGetPhysicalDeviceImageFormatProperties2+getPhysicalDeviceImageFormatProperties2KHR = getPhysicalDeviceImageFormatProperties2++ -- No documentation found for TopLevel "vkGetPhysicalDeviceQueueFamilyProperties2KHR"-vkGetPhysicalDeviceQueueFamilyProperties2KHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pQueueFamilyPropertyCount" ::: Ptr Word32) -> ("pQueueFamilyProperties" ::: Ptr VkQueueFamilyProperties2) -> IO ()-vkGetPhysicalDeviceQueueFamilyProperties2KHR = vkGetPhysicalDeviceQueueFamilyProperties2+getPhysicalDeviceQueueFamilyProperties2KHR = getPhysicalDeviceQueueFamilyProperties2++ -- No documentation found for TopLevel "vkGetPhysicalDeviceMemoryProperties2KHR"-vkGetPhysicalDeviceMemoryProperties2KHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pMemoryProperties" ::: Ptr VkPhysicalDeviceMemoryProperties2) -> IO ()-vkGetPhysicalDeviceMemoryProperties2KHR = vkGetPhysicalDeviceMemoryProperties2+getPhysicalDeviceMemoryProperties2KHR = getPhysicalDeviceMemoryProperties2++ -- No documentation found for TopLevel "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"-vkGetPhysicalDeviceSparseImageFormatProperties2KHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pFormatInfo" ::: Ptr VkPhysicalDeviceSparseImageFormatInfo2) -> ("pPropertyCount" ::: Ptr Word32) -> ("pProperties" ::: Ptr VkSparseImageFormatProperties2) -> IO ()-vkGetPhysicalDeviceSparseImageFormatProperties2KHR = vkGetPhysicalDeviceSparseImageFormatProperties2--- No documentation found for TopLevel "VkPhysicalDeviceFeatures2KHR"-type VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2+getPhysicalDeviceSparseImageFormatProperties2KHR = getPhysicalDeviceSparseImageFormatProperties2 -- No documentation found for TopLevel "VkPhysicalDeviceFeatures2KHR"-pattern VkPhysicalDeviceFeatures2KHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("features" ::: VkPhysicalDeviceFeatures) -> VkPhysicalDeviceFeatures2KHR-pattern VkPhysicalDeviceFeatures2KHR vkSType vkPNext vkFeatures = VkPhysicalDeviceFeatures2 vkSType vkPNext vkFeatures--- No documentation found for TopLevel "VkPhysicalDeviceProperties2KHR"-type VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2+type PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2 -- No documentation found for TopLevel "VkPhysicalDeviceProperties2KHR"-pattern VkPhysicalDeviceProperties2KHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("properties" ::: VkPhysicalDeviceProperties) -> VkPhysicalDeviceProperties2KHR-pattern VkPhysicalDeviceProperties2KHR vkSType vkPNext vkProperties = VkPhysicalDeviceProperties2 vkSType vkPNext vkProperties--- No documentation found for TopLevel "VkFormatProperties2KHR"-type VkFormatProperties2KHR = VkFormatProperties2+type PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2 -- No documentation found for TopLevel "VkFormatProperties2KHR"-pattern VkFormatProperties2KHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("formatProperties" ::: VkFormatProperties) -> VkFormatProperties2KHR-pattern VkFormatProperties2KHR vkSType vkPNext vkFormatProperties = VkFormatProperties2 vkSType vkPNext vkFormatProperties--- No documentation found for TopLevel "VkImageFormatProperties2KHR"-type VkImageFormatProperties2KHR = VkImageFormatProperties2+type FormatProperties2KHR = FormatProperties2 -- No documentation found for TopLevel "VkImageFormatProperties2KHR"-pattern VkImageFormatProperties2KHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("imageFormatProperties" ::: VkImageFormatProperties) -> VkImageFormatProperties2KHR-pattern VkImageFormatProperties2KHR vkSType vkPNext vkImageFormatProperties = VkImageFormatProperties2 vkSType vkPNext vkImageFormatProperties--- No documentation found for TopLevel "VkPhysicalDeviceImageFormatInfo2KHR"-type VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2+type ImageFormatProperties2KHR = ImageFormatProperties2 -- No documentation found for TopLevel "VkPhysicalDeviceImageFormatInfo2KHR"-pattern VkPhysicalDeviceImageFormatInfo2KHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> VkPhysicalDeviceImageFormatInfo2KHR-pattern VkPhysicalDeviceImageFormatInfo2KHR vkSType vkPNext vkFormat vkType vkTiling vkUsage vkFlags = VkPhysicalDeviceImageFormatInfo2 vkSType vkPNext vkFormat vkType vkTiling vkUsage vkFlags--- No documentation found for TopLevel "VkQueueFamilyProperties2KHR"-type VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2+type PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2 -- No documentation found for TopLevel "VkQueueFamilyProperties2KHR"-pattern VkQueueFamilyProperties2KHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("queueFamilyProperties" ::: VkQueueFamilyProperties) -> VkQueueFamilyProperties2KHR-pattern VkQueueFamilyProperties2KHR vkSType vkPNext vkQueueFamilyProperties = VkQueueFamilyProperties2 vkSType vkPNext vkQueueFamilyProperties--- No documentation found for TopLevel "VkPhysicalDeviceMemoryProperties2KHR"-type VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2+type QueueFamilyProperties2KHR = QueueFamilyProperties2 -- No documentation found for TopLevel "VkPhysicalDeviceMemoryProperties2KHR"-pattern VkPhysicalDeviceMemoryProperties2KHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("memoryProperties" ::: VkPhysicalDeviceMemoryProperties) -> VkPhysicalDeviceMemoryProperties2KHR-pattern VkPhysicalDeviceMemoryProperties2KHR vkSType vkPNext vkMemoryProperties = VkPhysicalDeviceMemoryProperties2 vkSType vkPNext vkMemoryProperties--- No documentation found for TopLevel "VkSparseImageFormatProperties2KHR"-type VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2+type PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2 -- No documentation found for TopLevel "VkSparseImageFormatProperties2KHR"-pattern VkSparseImageFormatProperties2KHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("properties" ::: VkSparseImageFormatProperties) -> VkSparseImageFormatProperties2KHR-pattern VkSparseImageFormatProperties2KHR vkSType vkPNext vkProperties = VkSparseImageFormatProperties2 vkSType vkPNext vkProperties--- No documentation found for TopLevel "VkPhysicalDeviceSparseImageFormatInfo2KHR"-type VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2+type SparseImageFormatProperties2KHR = SparseImageFormatProperties2 -- No documentation found for TopLevel "VkPhysicalDeviceSparseImageFormatInfo2KHR"-pattern VkPhysicalDeviceSparseImageFormatInfo2KHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("samples" ::: VkSampleCountFlagBits) -> ("usage" ::: VkImageUsageFlags) -> ("tiling" ::: VkImageTiling) -> VkPhysicalDeviceSparseImageFormatInfo2KHR-pattern VkPhysicalDeviceSparseImageFormatInfo2KHR vkSType vkPNext vkFormat vkType vkSamples vkUsage vkTiling = VkPhysicalDeviceSparseImageFormatInfo2 vkSType vkPNext vkFormat vkType vkSamples vkUsage vkTiling--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR"-pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR"-pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR"-pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR"-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2+type PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2+++type KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION"+pattern KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2+++type KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2"++-- No documentation found for TopLevel "VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME"+pattern KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2"+
src/Graphics/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs view
@@ -1,316 +1,528 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2- ( pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR- , pattern VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR- , pattern VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR- , pattern VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION- , pattern VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME- , vkGetPhysicalDeviceSurfaceCapabilities2KHR- , vkGetPhysicalDeviceSurfaceFormats2KHR- , VkPhysicalDeviceSurfaceInfo2KHR(..)- , VkSurfaceCapabilities2KHR(..)- , VkSurfaceFormat2KHR(..)- ) where--import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkPhysicalDevice- )-import Graphics.Vulkan.Extensions.VK_KHR_surface- ( VkSurfaceCapabilitiesKHR(..)- , VkSurfaceFormatKHR(..)- , VkSurfaceKHR- )+module Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2 ( getPhysicalDeviceSurfaceCapabilities2KHR+ , getPhysicalDeviceSurfaceFormats2KHR+ , PhysicalDeviceSurfaceInfo2KHR(..)+ , SurfaceCapabilities2KHR(..)+ , SurfaceFormat2KHR(..)+ , KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION+ , pattern KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION+ , KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME+ , pattern KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME+ , SurfaceKHR(..)+ , SurfaceCapabilitiesKHR(..)+ , SurfaceFormatKHR(..)+ , ColorSpaceKHR(..)+ , CompositeAlphaFlagBitsKHR(..)+ , CompositeAlphaFlagsKHR+ , SurfaceTransformFlagBitsKHR(..)+ , SurfaceTransformFlagsKHR+ ) where +import Control.Exception.Base (bracket)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import Data.String (IsString)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.CStruct.Extends (Chain)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr (DisplayNativeHdrSurfaceCapabilitiesAMD)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceSurfaceCapabilities2KHR))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceSurfaceFormats2KHR))+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image (SharedPresentSurfaceCapabilitiesKHR)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive (SurfaceCapabilitiesFullScreenExclusiveEXT)+import Graphics.Vulkan.Extensions.VK_KHR_surface (SurfaceCapabilitiesKHR)+import Graphics.Vulkan.Extensions.VK_KHR_surface (SurfaceFormatKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive (SurfaceFullScreenExclusiveInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive (SurfaceFullScreenExclusiveWin32InfoEXT)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_surface_protected_capabilities (SurfaceProtectedCapabilitiesKHR)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.VK_EXT_swapchain_colorspace (ColorSpaceKHR(..))+import Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter (CompositeAlphaFlagBitsKHR(..))+import Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter (CompositeAlphaFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_surface (SurfaceCapabilitiesKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_surface (SurfaceFormatKHR(..))+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (SurfaceTransformFlagBitsKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (SurfaceTransformFlagsKHR)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceSurfaceCapabilities2KHR+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr (PhysicalDeviceSurfaceInfo2KHR a) -> Ptr (SurfaceCapabilities2KHR b) -> IO Result) -> Ptr PhysicalDevice_T -> Ptr (PhysicalDeviceSurfaceInfo2KHR a) -> Ptr (SurfaceCapabilities2KHR b) -> IO Result --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = VkStructureType 1000119000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR"-pattern VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = VkStructureType 1000119001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR"-pattern VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = VkStructureType 1000119002--- No documentation found for TopLevel "VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION"-pattern VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION :: Integral a => a-pattern VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME"-pattern VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" -- | vkGetPhysicalDeviceSurfaceCapabilities2KHR - Reports capabilities of a -- surface on a physical device -- -- = Parameters ----- - @physicalDevice@ is the physical device that will be associated with--- the swapchain to be created, as described for--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkCreateSwapchainKHR'.+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device that will be associated with the swapchain to be created, as+-- described for+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'. ----- - @pSurfaceInfo@ points to an instance of the--- 'VkPhysicalDeviceSurfaceInfo2KHR' structure, describing the surface--- and other fixed parameters that would be consumed by--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkCreateSwapchainKHR'.+-- - @pSurfaceInfo@ is a pointer to a 'PhysicalDeviceSurfaceInfo2KHR'+-- structure describing the surface and other fixed parameters that+-- would be consumed by+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'. ----- - @pSurfaceCapabilities@ points to an instance of the--- 'VkSurfaceCapabilities2KHR' structure in which the capabilities are--- returned.+-- - @pSurfaceCapabilities@ is a pointer to a 'SurfaceCapabilities2KHR'+-- structure in which the capabilities are returned. -- -- = Description ----- @vkGetPhysicalDeviceSurfaceCapabilities2KHR@ behaves similarly to--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkGetPhysicalDeviceSurfaceCapabilitiesKHR',+-- 'getPhysicalDeviceSurfaceCapabilities2KHR' behaves similarly to+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR', -- with the ability to specify extended inputs via chained input -- structures, and to return extended information via chained output -- structures. --+-- == Valid Usage+--+-- - If a+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceCapabilitiesFullScreenExclusiveEXT'+-- structure is included in the @pNext@ chain of+-- @pSurfaceCapabilities@, a+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveWin32InfoEXT'+-- structure /must/ be included in the @pNext@ chain of @pSurfaceInfo@.+-- -- == Valid Usage (Implicit) ----- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle -- -- - @pSurfaceInfo@ /must/ be a valid pointer to a valid--- @VkPhysicalDeviceSurfaceInfo2KHR@ structure+-- 'PhysicalDeviceSurfaceInfo2KHR' structure -- -- - @pSurfaceCapabilities@ /must/ be a valid pointer to a--- @VkSurfaceCapabilities2KHR@ structure+-- 'SurfaceCapabilities2KHR' structure -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- - @VK_ERROR_SURFACE_LOST_KHR@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',--- 'VkPhysicalDeviceSurfaceInfo2KHR', 'VkSurfaceCapabilities2KHR'+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'PhysicalDeviceSurfaceInfo2KHR', 'SurfaceCapabilities2KHR'+getPhysicalDeviceSurfaceCapabilities2KHR :: (PokeChain a, PokeChain b, PeekChain b) => PhysicalDevice -> PhysicalDeviceSurfaceInfo2KHR a -> IO (SurfaceCapabilities2KHR b)+getPhysicalDeviceSurfaceCapabilities2KHR physicalDevice surfaceInfo = evalContT $ do+ let vkGetPhysicalDeviceSurfaceCapabilities2KHR' = mkVkGetPhysicalDeviceSurfaceCapabilities2KHR (pVkGetPhysicalDeviceSurfaceCapabilities2KHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ pSurfaceInfo <- ContT $ withCStruct (surfaceInfo)+ pPSurfaceCapabilities <- ContT (withZeroCStruct @(SurfaceCapabilities2KHR _))+ r <- lift $ vkGetPhysicalDeviceSurfaceCapabilities2KHR' (physicalDeviceHandle (physicalDevice)) pSurfaceInfo (pPSurfaceCapabilities)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSurfaceCapabilities <- lift $ peekCStruct @(SurfaceCapabilities2KHR _) pPSurfaceCapabilities+ pure $ (pSurfaceCapabilities)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkGetPhysicalDeviceSurfaceCapabilities2KHR" vkGetPhysicalDeviceSurfaceCapabilities2KHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilities2KHR) -> IO VkResult+ "dynamic" mkVkGetPhysicalDeviceSurfaceFormats2KHR+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr (PhysicalDeviceSurfaceInfo2KHR a) -> Ptr Word32 -> Ptr SurfaceFormat2KHR -> IO Result) -> Ptr PhysicalDevice_T -> Ptr (PhysicalDeviceSurfaceInfo2KHR a) -> Ptr Word32 -> Ptr SurfaceFormat2KHR -> IO Result+ -- | vkGetPhysicalDeviceSurfaceFormats2KHR - Query color formats supported by -- surface -- -- = Parameters ----- - @physicalDevice@ is the physical device that will be associated with--- the swapchain to be created, as described for--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkCreateSwapchainKHR'.+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device that will be associated with the swapchain to be created, as+-- described for+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'. ----- - @pSurfaceInfo@ points to an instance of the--- 'VkPhysicalDeviceSurfaceInfo2KHR' structure, describing the surface--- and other fixed parameters that would be consumed by--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkCreateSwapchainKHR'.+-- - @pSurfaceInfo@ is a pointer to a 'PhysicalDeviceSurfaceInfo2KHR'+-- structure describing the surface and other fixed parameters that+-- would be consumed by+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'. -- -- - @pSurfaceFormatCount@ is a pointer to an integer related to the -- number of format tuples available or queried, as described below. -- -- - @pSurfaceFormats@ is either @NULL@ or a pointer to an array of--- 'VkSurfaceFormat2KHR' structures.+-- 'SurfaceFormat2KHR' structures. -- -- = Description --+-- 'getPhysicalDeviceSurfaceFormats2KHR' behaves similarly to+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceFormatsKHR',+-- with the ability to be extended via @pNext@ chains.+-- -- If @pSurfaceFormats@ is @NULL@, then the number of format tuples -- supported for the given @surface@ is returned in @pSurfaceFormatCount@.--- The number of format tuples supported will be greater than or equal to--- 1. Otherwise, @pSurfaceFormatCount@ /must/ point to a variable set by--- the user to the number of elements in the @pSurfaceFormats@ array, and--- on return the variable is overwritten with the number of structures+-- Otherwise, @pSurfaceFormatCount@ /must/ point to a variable set by the+-- user to the number of elements in the @pSurfaceFormats@ array, and on+-- return the variable is overwritten with the number of structures -- actually written to @pSurfaceFormats@. If the value of -- @pSurfaceFormatCount@ is less than the number of format tuples -- supported, at most @pSurfaceFormatCount@ structures will be written. If -- @pSurfaceFormatCount@ is smaller than the number of format tuples -- supported for the surface parameters described in @pSurfaceInfo@,--- @VK_INCOMPLETE@ will be returned instead of @VK_SUCCESS@ to indicate+-- 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned+-- instead of 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' to indicate -- that not all the available values were returned. --+-- == Valid Usage+--+-- - @pSurfaceInfo->surface@ must be supported by+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice', as reported by+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR'+-- or an equivalent platform-specific mechanism.+-- -- == Valid Usage (Implicit) ----- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle -- -- - @pSurfaceInfo@ /must/ be a valid pointer to a valid--- @VkPhysicalDeviceSurfaceInfo2KHR@ structure+-- 'PhysicalDeviceSurfaceInfo2KHR' structure -- -- - @pSurfaceFormatCount@ /must/ be a valid pointer to a @uint32_t@ -- value -- -- - If the value referenced by @pSurfaceFormatCount@ is not @0@, and -- @pSurfaceFormats@ is not @NULL@, @pSurfaceFormats@ /must/ be a valid--- pointer to an array of @pSurfaceFormatCount@ @VkSurfaceFormat2KHR@+-- pointer to an array of @pSurfaceFormatCount@ 'SurfaceFormat2KHR' -- structures -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- - @VK_INCOMPLETE@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- - @VK_ERROR_SURFACE_LOST_KHR@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',--- 'VkPhysicalDeviceSurfaceInfo2KHR', 'VkSurfaceFormat2KHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceSurfaceFormats2KHR" vkGetPhysicalDeviceSurfaceFormats2KHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pSurfaceInfo" ::: Ptr VkPhysicalDeviceSurfaceInfo2KHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormat2KHR) -> IO VkResult+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'PhysicalDeviceSurfaceInfo2KHR', 'SurfaceFormat2KHR'+getPhysicalDeviceSurfaceFormats2KHR :: PokeChain a => PhysicalDevice -> PhysicalDeviceSurfaceInfo2KHR a -> IO (Result, ("surfaceFormats" ::: Vector SurfaceFormat2KHR))+getPhysicalDeviceSurfaceFormats2KHR physicalDevice surfaceInfo = evalContT $ do+ let vkGetPhysicalDeviceSurfaceFormats2KHR' = mkVkGetPhysicalDeviceSurfaceFormats2KHR (pVkGetPhysicalDeviceSurfaceFormats2KHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pSurfaceInfo <- ContT $ withCStruct (surfaceInfo)+ pPSurfaceFormatCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkGetPhysicalDeviceSurfaceFormats2KHR' physicalDevice' pSurfaceInfo (pPSurfaceFormatCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSurfaceFormatCount <- lift $ peek @Word32 pPSurfaceFormatCount+ pPSurfaceFormats <- ContT $ bracket (callocBytes @SurfaceFormat2KHR ((fromIntegral (pSurfaceFormatCount)) * 24)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPSurfaceFormats `advancePtrBytes` (i * 24) :: Ptr SurfaceFormat2KHR) . ($ ())) [0..(fromIntegral (pSurfaceFormatCount)) - 1]+ r' <- lift $ vkGetPhysicalDeviceSurfaceFormats2KHR' physicalDevice' pSurfaceInfo (pPSurfaceFormatCount) ((pPSurfaceFormats))+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pSurfaceFormatCount' <- lift $ peek @Word32 pPSurfaceFormatCount+ pSurfaceFormats' <- lift $ generateM (fromIntegral (pSurfaceFormatCount')) (\i -> peekCStruct @SurfaceFormat2KHR (((pPSurfaceFormats) `advancePtrBytes` (24 * (i)) :: Ptr SurfaceFormat2KHR)))+ pure $ ((r'), pSurfaceFormats')++ -- | VkPhysicalDeviceSurfaceInfo2KHR - Structure specifying a surface and -- related swapchain creation parameters -- -- = Description ----- The members of @VkPhysicalDeviceSurfaceInfo2KHR@ correspond to the+-- The members of 'PhysicalDeviceSurfaceInfo2KHR' correspond to the -- arguments to--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkGetPhysicalDeviceSurfaceCapabilitiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR', -- with @sType@ and @pNext@ added for extensibility. --+-- Additional capabilities of a surface /may/ be available to swapchains+-- created with different full-screen exclusive settings - particularly if+-- exclusive full-screen access is application controlled. These additional+-- capabilities /can/ be queried by adding a+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveInfoEXT'+-- structure to the @pNext@ chain of this structure when used to query+-- surface properties. Additionally, for Win32 surfaces with application+-- controlled exclusive full-screen access, chaining a+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveWin32InfoEXT'+-- structure /may/ also report additional surface capabilities. These+-- additional capabilities only apply to swapchains created with the same+-- parameters included in the @pNext@ chain of+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'.+--+-- == Valid Usage+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveInfoEXT'+-- structure with its @fullScreenExclusive@ member set to+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT',+-- and @surface@ was created using+-- 'Graphics.Vulkan.Extensions.VK_KHR_win32_surface.createWin32SurfaceKHR',+-- a+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveWin32InfoEXT'+-- structure /must/ be included in the @pNext@ chain+-- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR' ----- - @pNext@ /must/ be @NULL@+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveInfoEXT'+-- or+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveWin32InfoEXT' ----- - @surface@ /must/ be a valid @VkSurfaceKHR@ handle+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique --+-- - @surface@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle+-- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR',--- 'vkGetPhysicalDeviceSurfaceCapabilities2KHR',--- 'vkGetPhysicalDeviceSurfaceFormats2KHR'-data VkPhysicalDeviceSurfaceInfo2KHR = VkPhysicalDeviceSurfaceInfo2KHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.getDeviceGroupSurfacePresentModes2EXT',+-- 'getPhysicalDeviceSurfaceCapabilities2KHR',+-- 'getPhysicalDeviceSurfaceFormats2KHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.getPhysicalDeviceSurfacePresentModes2EXT'+data PhysicalDeviceSurfaceInfo2KHR (es :: [Type]) = PhysicalDeviceSurfaceInfo2KHR+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es , -- | @surface@ is the surface that will be associated with the swapchain.- vkSurface :: VkSurfaceKHR+ surface :: SurfaceKHR }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show (Chain es) => Show (PhysicalDeviceSurfaceInfo2KHR es) -instance Storable VkPhysicalDeviceSurfaceInfo2KHR where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkPhysicalDeviceSurfaceInfo2KHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceSurfaceInfo2KHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceSurfaceInfo2KHR))- *> poke (ptr `plusPtr` 16) (vkSurface (poked :: VkPhysicalDeviceSurfaceInfo2KHR))+instance Extensible PhysicalDeviceSurfaceInfo2KHR where+ extensibleType = STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR+ setNext x next = x{next = next}+ getNext PhysicalDeviceSurfaceInfo2KHR{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceSurfaceInfo2KHR e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @SurfaceFullScreenExclusiveWin32InfoEXT = Just f+ | Just Refl <- eqT @e @SurfaceFullScreenExclusiveInfoEXT = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (PhysicalDeviceSurfaceInfo2KHR es) where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceSurfaceInfo2KHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr SurfaceKHR)) (surface)+ lift $ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 16 :: Ptr SurfaceKHR)) (zero)+ lift $ f++instance PeekChain es => FromCStruct (PhysicalDeviceSurfaceInfo2KHR es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ surface <- peek @SurfaceKHR ((p `plusPtr` 16 :: Ptr SurfaceKHR))+ pure $ PhysicalDeviceSurfaceInfo2KHR+ next surface++instance es ~ '[] => Zero (PhysicalDeviceSurfaceInfo2KHR es) where+ zero = PhysicalDeviceSurfaceInfo2KHR+ ()+ zero++ -- | VkSurfaceCapabilities2KHR - Structure describing capabilities of a -- surface -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR@+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR' ----- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of--- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.VkSharedPresentSurfaceCapabilitiesKHR'+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of+-- 'Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr.DisplayNativeHdrSurfaceCapabilitiesAMD',+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.SharedPresentSurfaceCapabilitiesKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceCapabilitiesFullScreenExclusiveEXT',+-- or+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface_protected_capabilities.SurfaceProtectedCapabilitiesKHR' --+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+-- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceCapabilitiesKHR',--- 'vkGetPhysicalDeviceSurfaceCapabilities2KHR'-data VkSurfaceCapabilities2KHR = VkSurfaceCapabilities2KHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @surfaceCapabilities@ is a structure of type- -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceCapabilitiesKHR'- -- describing the capabilities of the specified surface.- vkSurfaceCapabilities :: VkSurfaceCapabilitiesKHR+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR',+-- 'getPhysicalDeviceSurfaceCapabilities2KHR'+data SurfaceCapabilities2KHR (es :: [Type]) = SurfaceCapabilities2KHR+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | @surfaceCapabilities@ is a+ -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'+ -- structure describing the capabilities of the specified surface.+ surfaceCapabilities :: SurfaceCapabilitiesKHR }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show (Chain es) => Show (SurfaceCapabilities2KHR es) -instance Storable VkSurfaceCapabilities2KHR where- sizeOf ~_ = 72- alignment ~_ = 8- peek ptr = VkSurfaceCapabilities2KHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkSurfaceCapabilities2KHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkSurfaceCapabilities2KHR))- *> poke (ptr `plusPtr` 16) (vkSurfaceCapabilities (poked :: VkSurfaceCapabilities2KHR))+instance Extensible SurfaceCapabilities2KHR where+ extensibleType = STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR+ setNext x next = x{next = next}+ getNext SurfaceCapabilities2KHR{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends SurfaceCapabilities2KHR e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @SurfaceCapabilitiesFullScreenExclusiveEXT = Just f+ | Just Refl <- eqT @e @SurfaceProtectedCapabilitiesKHR = Just f+ | Just Refl <- eqT @e @SharedPresentSurfaceCapabilitiesKHR = Just f+ | Just Refl <- eqT @e @DisplayNativeHdrSurfaceCapabilitiesAMD = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (SurfaceCapabilities2KHR es) where+ withCStruct x f = allocaBytesAligned 72 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SurfaceCapabilities2KHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr SurfaceCapabilitiesKHR)) (surfaceCapabilities) . ($ ())+ lift $ f+ cStructSize = 72+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr SurfaceCapabilitiesKHR)) (zero) . ($ ())+ lift $ f++instance PeekChain es => FromCStruct (SurfaceCapabilities2KHR es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ surfaceCapabilities <- peekCStruct @SurfaceCapabilitiesKHR ((p `plusPtr` 16 :: Ptr SurfaceCapabilitiesKHR))+ pure $ SurfaceCapabilities2KHR+ next surfaceCapabilities++instance es ~ '[] => Zero (SurfaceCapabilities2KHR es) where+ zero = SurfaceCapabilities2KHR+ ()+ zero++ -- | VkSurfaceFormat2KHR - Structure describing a supported swapchain format -- tuple -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR@------ - @pNext@ /must/ be @NULL@--- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceFormatKHR',--- 'vkGetPhysicalDeviceSurfaceFormats2KHR'-data VkSurfaceFormat2KHR = VkSurfaceFormat2KHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @surfaceFormat@ is an instance of- -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceFormatKHR'- -- describing a format-color space pair that is compatible with the- -- specified surface.- vkSurfaceFormat :: VkSurfaceFormatKHR- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceFormatKHR',+-- 'getPhysicalDeviceSurfaceFormats2KHR'+data SurfaceFormat2KHR = SurfaceFormat2KHR+ { -- | @surfaceFormat@ is a+ -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceFormatKHR' structure+ -- describing a format-color space pair that is compatible with the+ -- specified surface.+ surfaceFormat :: SurfaceFormatKHR }+ deriving (Typeable)+deriving instance Show SurfaceFormat2KHR -instance Storable VkSurfaceFormat2KHR where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkSurfaceFormat2KHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkSurfaceFormat2KHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkSurfaceFormat2KHR))- *> poke (ptr `plusPtr` 16) (vkSurfaceFormat (poked :: VkSurfaceFormat2KHR))+instance ToCStruct SurfaceFormat2KHR where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SurfaceFormat2KHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr SurfaceFormatKHR)) (surfaceFormat) . ($ ())+ lift $ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr SurfaceFormatKHR)) (zero) . ($ ())+ lift $ f++instance FromCStruct SurfaceFormat2KHR where+ peekCStruct p = do+ surfaceFormat <- peekCStruct @SurfaceFormatKHR ((p `plusPtr` 16 :: Ptr SurfaceFormatKHR))+ pure $ SurfaceFormat2KHR+ surfaceFormat++instance Zero SurfaceFormat2KHR where+ zero = SurfaceFormat2KHR+ zero+++type KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION"+pattern KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1+++type KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2"++-- No documentation found for TopLevel "VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME"+pattern KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs-boot view
@@ -0,0 +1,37 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2 ( PhysicalDeviceSurfaceInfo2KHR+ , SurfaceCapabilities2KHR+ , SurfaceFormat2KHR+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+type role PhysicalDeviceSurfaceInfo2KHR nominal+data PhysicalDeviceSurfaceInfo2KHR (es :: [Type])++instance PokeChain es => ToCStruct (PhysicalDeviceSurfaceInfo2KHR es)+instance Show (Chain es) => Show (PhysicalDeviceSurfaceInfo2KHR es)++instance PeekChain es => FromCStruct (PhysicalDeviceSurfaceInfo2KHR es)+++type role SurfaceCapabilities2KHR nominal+data SurfaceCapabilities2KHR (es :: [Type])++instance PokeChain es => ToCStruct (SurfaceCapabilities2KHR es)+instance Show (Chain es) => Show (SurfaceCapabilities2KHR es)++instance PeekChain es => FromCStruct (SurfaceCapabilities2KHR es)+++data SurfaceFormat2KHR++instance ToCStruct SurfaceFormat2KHR+instance Show SurfaceFormat2KHR++instance FromCStruct SurfaceFormat2KHR+
src/Graphics/Vulkan/Extensions/VK_KHR_image_format_list.hs view
@@ -1,106 +1,33 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DuplicateRecordFields #-}+module Graphics.Vulkan.Extensions.VK_KHR_image_format_list ( pattern STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR+ , ImageFormatListCreateInfoKHR+ , KHR_IMAGE_FORMAT_LIST_SPEC_VERSION+ , pattern KHR_IMAGE_FORMAT_LIST_SPEC_VERSION+ , KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME+ , pattern KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_KHR_image_format_list- ( pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR- , pattern VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION- , pattern VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME- , VkImageFormatListCreateInfoKHR(..)- ) where+import Data.String (IsString)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list (ImageFormatListCreateInfo)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO -import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- ) +-- No documentation found for TopLevel "VkImageFormatListCreateInfoKHR"+type ImageFormatListCreateInfoKHR = ImageFormatListCreateInfo -import Graphics.Vulkan.Core10.Core- ( VkFormat(..)- , VkStructureType(..)- ) +type KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = VkStructureType 1000147000 -- No documentation found for TopLevel "VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION"-pattern VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION :: Integral a => a-pattern VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1+pattern KHR_IMAGE_FORMAT_LIST_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1+++type KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list"+ -- No documentation found for TopLevel "VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME"-pattern VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list"--- | VkImageFormatListCreateInfoKHR - Specify that an image /can/ be used--- with a particular set of formats------ = Description------ If @viewFormatCount@ is zero, @pViewFormats@ is ignored and the image is--- created as if the @VkImageFormatListCreateInfoKHR@ structure were not--- included in the @pNext@ list of--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'.------ == Valid Usage------ - If @viewFormatCount@ is not @0@, all of the formats in the--- @pViewFormats@ array /must/ be compatible with the format specified--- in the @format@ field of @VkImageCreateInfo@, as described in the--- [compatibility--- table](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#resources-image-views-compatibility).------ - If @VkImageCreateInfo@::@flags@ does not contain--- @VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT@, @viewFormatCount@ /must/ be--- @0@ or @1@.------ - If @viewFormatCount@ is not @0@, @VkImageCreateInfo@::@format@--- /must/ be in @pViewFormats@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR@------ - If @viewFormatCount@ is not @0@, @pViewFormats@ /must/ be a valid--- pointer to an array of @viewFormatCount@ valid--- 'Graphics.Vulkan.Core10.Core.VkFormat' values------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkFormat',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @viewFormatCount@ is the number of entries in the @pViewFormats@ array.- vkViewFormatCount :: Word32- , -- | @pViewFormats@ is an array which lists of all formats which /can/ be- -- used when creating views of this image.- vkPViewFormats :: Ptr VkFormat- }- deriving (Eq, Show)+pattern KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" -instance Storable VkImageFormatListCreateInfoKHR where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkImageFormatListCreateInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkImageFormatListCreateInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImageFormatListCreateInfoKHR))- *> poke (ptr `plusPtr` 16) (vkViewFormatCount (poked :: VkImageFormatListCreateInfoKHR))- *> poke (ptr `plusPtr` 24) (vkPViewFormats (poked :: VkImageFormatListCreateInfoKHR))
+ src/Graphics/Vulkan/Extensions/VK_KHR_imageless_framebuffer.hs view
@@ -0,0 +1,76 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_imageless_framebuffer ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR+ , pattern STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR+ , pattern STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR+ , pattern STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR+ , pattern FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR+ , PhysicalDeviceImagelessFramebufferFeaturesKHR+ , FramebufferAttachmentsCreateInfoKHR+ , FramebufferAttachmentImageInfoKHR+ , RenderPassAttachmentBeginInfoKHR+ , KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION+ , pattern KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION+ , KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME+ , pattern KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME+ ) where++import Data.String (IsString)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (FramebufferAttachmentImageInfo)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (FramebufferAttachmentsCreateInfo)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (PhysicalDeviceImagelessFramebufferFeatures)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (RenderPassAttachmentBeginInfo)+import Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits (FramebufferCreateFlags)+import Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits (FramebufferCreateFlagBits(FRAMEBUFFER_CREATE_IMAGELESS_BIT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR"+pattern STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR"+pattern STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO+++-- No documentation found for TopLevel "VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR"+pattern FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = FRAMEBUFFER_CREATE_IMAGELESS_BIT+++-- No documentation found for TopLevel "VkPhysicalDeviceImagelessFramebufferFeaturesKHR"+type PhysicalDeviceImagelessFramebufferFeaturesKHR = PhysicalDeviceImagelessFramebufferFeatures+++-- No documentation found for TopLevel "VkFramebufferAttachmentsCreateInfoKHR"+type FramebufferAttachmentsCreateInfoKHR = FramebufferAttachmentsCreateInfo+++-- No documentation found for TopLevel "VkFramebufferAttachmentImageInfoKHR"+type FramebufferAttachmentImageInfoKHR = FramebufferAttachmentImageInfo+++-- No documentation found for TopLevel "VkRenderPassAttachmentBeginInfoKHR"+type RenderPassAttachmentBeginInfoKHR = RenderPassAttachmentBeginInfo+++type KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION"+pattern KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1+++type KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer"++-- No documentation found for TopLevel "VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME"+pattern KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer"+
src/Graphics/Vulkan/Extensions/VK_KHR_incremental_present.hs view
@@ -1,101 +1,113 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_KHR_incremental_present- ( pattern VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR- , pattern VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION- , pattern VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME- , VkPresentRegionsKHR(..)- , VkPresentRegionKHR(..)- , VkRectLayerKHR(..)- ) where--import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )---import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- )-import Graphics.Vulkan.Core10.Pipeline- ( VkExtent2D(..)- , VkOffset2D(..)- )-+module Graphics.Vulkan.Extensions.VK_KHR_incremental_present ( PresentRegionsKHR(..)+ , PresentRegionKHR(..)+ , RectLayerKHR(..)+ , KHR_INCREMENTAL_PRESENT_SPEC_VERSION+ , pattern KHR_INCREMENTAL_PRESENT_SPEC_VERSION+ , KHR_INCREMENTAL_PRESENT_EXTENSION_NAME+ , pattern KHR_INCREMENTAL_PRESENT_EXTENSION_NAME+ ) where --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR"-pattern VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = VkStructureType 1000084000--- No documentation found for TopLevel "VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION"-pattern VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION :: Integral a => a-pattern VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME"-pattern VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present"+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Utils (maybePeek)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Either (Either)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.SharedTypes (Extent2D)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.SharedTypes (Offset2D)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PRESENT_REGIONS_KHR)) -- | VkPresentRegionsKHR - Structure hint of rectangular regions changed by -- vkQueuePresentKHR -- -- == Valid Usage -- -- - @swapchainCount@ /must/ be the same value as--- @VkPresentInfoKHR@::@swapchainCount@, where @VkPresentInfoKHR@ is in--- the pNext-chain of this @VkPresentRegionsKHR@ structure.+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'::@swapchainCount@,+-- where 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'+-- is included in the @pNext@ chain of this 'PresentRegionsKHR'+-- structure -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR@+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_REGIONS_KHR' -- -- - If @pRegions@ is not @NULL@, @pRegions@ /must/ be a valid pointer to--- an array of @swapchainCount@ valid @VkPresentRegionKHR@ structures+-- an array of @swapchainCount@ valid 'PresentRegionKHR' structures -- -- - @swapchainCount@ /must/ be greater than @0@ -- -- = See Also ----- 'VkPresentRegionKHR', 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPresentRegionsKHR = VkPresentRegionsKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @swapchainCount@ is the number of swapchains being presented to by this- -- command.- vkSwapchainCount :: Word32- , -- | @pRegions@ is @NULL@ or a pointer to an array of @VkPresentRegionKHR@- -- elements with @swapchainCount@ entries. If not @NULL@, each element of- -- @pRegions@ contains the region that has changed since the last present- -- to the swapchain in the corresponding entry in the- -- @VkPresentInfoKHR@::@pSwapchains@ array.- vkPRegions :: Ptr VkPresentRegionKHR- }- deriving (Eq, Show)+-- 'PresentRegionKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PresentRegionsKHR = PresentRegionsKHR+ { -- | @pRegions@ is @NULL@ or a pointer to an array of 'PresentRegionKHR'+ -- elements with @swapchainCount@ entries. If not @NULL@, each element of+ -- @pRegions@ contains the region that has changed since the last present+ -- to the swapchain in the corresponding entry in the+ -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR'::@pSwapchains@+ -- array.+ regions :: Either Word32 (Vector PresentRegionKHR) }+ deriving (Typeable)+deriving instance Show PresentRegionsKHR -instance Storable VkPresentRegionsKHR where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkPresentRegionsKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPresentRegionsKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPresentRegionsKHR))- *> poke (ptr `plusPtr` 16) (vkSwapchainCount (poked :: VkPresentRegionsKHR))- *> poke (ptr `plusPtr` 24) (vkPRegions (poked :: VkPresentRegionsKHR))+instance ToCStruct PresentRegionsKHR where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PresentRegionsKHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_REGIONS_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (either id (fromIntegral . Data.Vector.length) (regions)) :: Word32))+ pRegions'' <- case (regions) of+ Left _ -> pure nullPtr+ Right v -> do+ pPRegions' <- ContT $ allocaBytesAligned @PresentRegionKHR ((Data.Vector.length (v)) * 16) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRegions' `plusPtr` (16 * (i)) :: Ptr PresentRegionKHR) (e) . ($ ())) (v)+ pure $ pPRegions'+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr PresentRegionKHR))) pRegions''+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_REGIONS_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct PresentRegionsKHR where+ peekCStruct p = do+ swapchainCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pRegions <- peek @(Ptr PresentRegionKHR) ((p `plusPtr` 24 :: Ptr (Ptr PresentRegionKHR)))+ pRegions' <- maybePeek (\j -> generateM (fromIntegral swapchainCount) (\i -> peekCStruct @PresentRegionKHR (((j) `advancePtrBytes` (16 * (i)) :: Ptr PresentRegionKHR)))) pRegions+ let pRegions'' = maybe (Left swapchainCount) Right pRegions'+ pure $ PresentRegionsKHR+ pRegions''++instance Zero PresentRegionsKHR where+ zero = PresentRegionsKHR+ (Left 0)++ -- | VkPresentRegionKHR - Structure containing rectangular region changed by -- vkQueuePresentKHR for a given VkImage --@@ -103,72 +115,129 @@ -- -- - If @rectangleCount@ is not @0@, and @pRectangles@ is not @NULL@, -- @pRectangles@ /must/ be a valid pointer to an array of--- @rectangleCount@ @VkRectLayerKHR@ structures+-- @rectangleCount@ valid 'RectLayerKHR' structures -- -- = See Also ----- 'VkPresentRegionsKHR', 'VkRectLayerKHR'-data VkPresentRegionKHR = VkPresentRegionKHR- { -- | @rectangleCount@ is the number of rectangles in @pRectangles@, or zero- -- if the entire image has changed and should be presented.- vkRectangleCount :: Word32- , -- | @pRectangles@ is either @NULL@ or a pointer to an array of- -- @VkRectLayerKHR@ structures. The @VkRectLayerKHR@ structure is the- -- framebuffer coordinates, plus layer, of a portion of a presentable image- -- that has changed and /must/ be presented. If non-@NULL@, each entry in- -- @pRectangles@ is a rectangle of the given image that has changed since- -- the last image was presented to the given swapchain.- vkPRectangles :: Ptr VkRectLayerKHR- }- deriving (Eq, Show)+-- 'PresentRegionsKHR', 'RectLayerKHR'+data PresentRegionKHR = PresentRegionKHR+ { -- | @pRectangles@ is either @NULL@ or a pointer to an array of+ -- 'RectLayerKHR' structures. The 'RectLayerKHR' structure is the+ -- framebuffer coordinates, plus layer, of a portion of a presentable image+ -- that has changed and /must/ be presented. If non-@NULL@, each entry in+ -- @pRectangles@ is a rectangle of the given image that has changed since+ -- the last image was presented to the given swapchain.+ rectangles :: Either Word32 (Vector RectLayerKHR) }+ deriving (Typeable)+deriving instance Show PresentRegionKHR -instance Storable VkPresentRegionKHR where- sizeOf ~_ = 16- alignment ~_ = 8- peek ptr = VkPresentRegionKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkRectangleCount (poked :: VkPresentRegionKHR))- *> poke (ptr `plusPtr` 8) (vkPRectangles (poked :: VkPresentRegionKHR))+instance ToCStruct PresentRegionKHR where+ withCStruct x f = allocaBytesAligned 16 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PresentRegionKHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) ((fromIntegral (either id (fromIntegral . Data.Vector.length) (rectangles)) :: Word32))+ pRectangles'' <- case (rectangles) of+ Left _ -> pure nullPtr+ Right v -> do+ pPRectangles' <- ContT $ allocaBytesAligned @RectLayerKHR ((Data.Vector.length (v)) * 20) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPRectangles' `plusPtr` (20 * (i)) :: Ptr RectLayerKHR) (e) . ($ ())) (v)+ pure $ pPRectangles'+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr RectLayerKHR))) pRectangles''+ lift $ f+ cStructSize = 16+ cStructAlignment = 8+ pokeZeroCStruct _ f = f++instance FromCStruct PresentRegionKHR where+ peekCStruct p = do+ rectangleCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ pRectangles <- peek @(Ptr RectLayerKHR) ((p `plusPtr` 8 :: Ptr (Ptr RectLayerKHR)))+ pRectangles' <- maybePeek (\j -> generateM (fromIntegral rectangleCount) (\i -> peekCStruct @RectLayerKHR (((j) `advancePtrBytes` (20 * (i)) :: Ptr RectLayerKHR)))) pRectangles+ let pRectangles'' = maybe (Left rectangleCount) Right pRectangles'+ pure $ PresentRegionKHR+ pRectangles''++instance Zero PresentRegionKHR where+ zero = PresentRegionKHR+ (Left 0)++ -- | VkRectLayerKHR - Structure containing a rectangle, including layer, -- changed by vkQueuePresentKHR for a given VkImage -- -- == Valid Usage -- -- - The sum of @offset@ and @extent@ /must/ be no greater than the--- @imageExtent@ member of the @VkSwapchainCreateInfoKHR@ structure--- given to--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkCreateSwapchainKHR'.+-- @imageExtent@ member of the+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'+-- structure given to+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'. -- -- - @layer@ /must/ be less than @imageArrayLayers@ member of the--- @VkSwapchainCreateInfoKHR@ structure given to--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkCreateSwapchainKHR'.+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'+-- structure given to+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'. -- -- Some platforms allow the size of a surface to change, and then scale the--- pixels of the image to fit the surface. @VkRectLayerKHR@ specifies--- pixels of the swapchain’s image(s), which will be constant for the life--- of the swapchain.+-- pixels of the image to fit the surface. 'RectLayerKHR' specifies pixels+-- of the swapchain’s image(s), which will be constant for the life of the+-- swapchain. -- -- = See Also ----- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D',--- 'Graphics.Vulkan.Core10.Pipeline.VkOffset2D', 'VkPresentRegionKHR'-data VkRectLayerKHR = VkRectLayerKHR+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent2D',+-- 'Graphics.Vulkan.Core10.SharedTypes.Offset2D', 'PresentRegionKHR'+data RectLayerKHR = RectLayerKHR { -- | @offset@ is the origin of the rectangle, in pixels.- vkOffset :: VkOffset2D+ offset :: Offset2D , -- | @extent@ is the size of the rectangle, in pixels.- vkExtent :: VkExtent2D+ extent :: Extent2D , -- | @layer@ is the layer of the image. For images with only one layer, the- -- value of @layer@ /must/ be 0.- vkLayer :: Word32+ -- value of @layer@ /must/ be 0.+ layer :: Word32 }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show RectLayerKHR -instance Storable VkRectLayerKHR where- sizeOf ~_ = 20- alignment ~_ = 4- peek ptr = VkRectLayerKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkOffset (poked :: VkRectLayerKHR))- *> poke (ptr `plusPtr` 8) (vkExtent (poked :: VkRectLayerKHR))- *> poke (ptr `plusPtr` 16) (vkLayer (poked :: VkRectLayerKHR))+instance ToCStruct RectLayerKHR where+ withCStruct x f = allocaBytesAligned 20 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p RectLayerKHR{..} f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Offset2D)) (offset) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr Extent2D)) (extent) . ($ ())+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (layer)+ lift $ f+ cStructSize = 20+ cStructAlignment = 4+ pokeZeroCStruct p f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr Offset2D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr Extent2D)) (zero) . ($ ())+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ lift $ f++instance FromCStruct RectLayerKHR where+ peekCStruct p = do+ offset <- peekCStruct @Offset2D ((p `plusPtr` 0 :: Ptr Offset2D))+ extent <- peekCStruct @Extent2D ((p `plusPtr` 8 :: Ptr Extent2D))+ layer <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pure $ RectLayerKHR+ offset extent layer++instance Zero RectLayerKHR where+ zero = RectLayerKHR+ zero+ zero+ zero+++type KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION"+pattern KHR_INCREMENTAL_PRESENT_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1+++type KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present"++-- No documentation found for TopLevel "VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME"+pattern KHR_INCREMENTAL_PRESENT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_incremental_present.hs-boot view
@@ -0,0 +1,32 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_incremental_present ( PresentRegionKHR+ , PresentRegionsKHR+ , RectLayerKHR+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PresentRegionKHR++instance ToCStruct PresentRegionKHR+instance Show PresentRegionKHR++instance FromCStruct PresentRegionKHR+++data PresentRegionsKHR++instance ToCStruct PresentRegionsKHR+instance Show PresentRegionsKHR++instance FromCStruct PresentRegionsKHR+++data RectLayerKHR++instance ToCStruct RectLayerKHR+instance Show RectLayerKHR++instance FromCStruct RectLayerKHR+
src/Graphics/Vulkan/Extensions/VK_KHR_maintenance1.hs view
@@ -1,70 +1,60 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}+module Graphics.Vulkan.Extensions.VK_KHR_maintenance1 ( pattern ERROR_OUT_OF_POOL_MEMORY_KHR+ , pattern FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR+ , pattern FORMAT_FEATURE_TRANSFER_DST_BIT_KHR+ , pattern IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR+ , trimCommandPoolKHR+ , CommandPoolTrimFlagsKHR+ , KHR_MAINTENANCE1_SPEC_VERSION+ , pattern KHR_MAINTENANCE1_SPEC_VERSION+ , KHR_MAINTENANCE1_EXTENSION_NAME+ , pattern KHR_MAINTENANCE1_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_KHR_maintenance1- ( pattern VK_KHR_MAINTENANCE1_SPEC_VERSION- , pattern VK_KHR_MAINTENANCE1_EXTENSION_NAME- , vkTrimCommandPoolKHR- , VkCommandPoolTrimFlagsKHR- , pattern VK_ERROR_OUT_OF_POOL_MEMORY_KHR- , pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR- , pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR- , pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR- ) where+import Data.String (IsString)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance1 (trimCommandPool)+import Graphics.Vulkan.Core11.Enums.CommandPoolTrimFlags (CommandPoolTrimFlags)+import Graphics.Vulkan.Core10.Enums.Result (Result(ERROR_OUT_OF_POOL_MEMORY))+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlagBits(FORMAT_FEATURE_TRANSFER_DST_BIT))+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlagBits(FORMAT_FEATURE_TRANSFER_SRC_BIT))+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT))+-- No documentation found for TopLevel "VK_ERROR_OUT_OF_POOL_MEMORY_KHR"+pattern ERROR_OUT_OF_POOL_MEMORY_KHR = ERROR_OUT_OF_POOL_MEMORY -import Data.String- ( IsString- )-import Graphics.Vulkan.NamedType- ( (:::)- ) +-- No documentation found for TopLevel "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR"+pattern FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = FORMAT_FEATURE_TRANSFER_SRC_BIT -import Graphics.Vulkan.Core10.CommandPool- ( VkCommandPool- )-import Graphics.Vulkan.Core10.Core- ( VkResult(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkFormatFeatureFlagBits(..)- , VkImageCreateFlagBits(..)- , VkDevice- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance1- ( VkCommandPoolTrimFlags(..)- , vkTrimCommandPool- , pattern VK_ERROR_OUT_OF_POOL_MEMORY- , pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT- , pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT- , pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT- ) +-- No documentation found for TopLevel "VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR"+pattern FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = FORMAT_FEATURE_TRANSFER_DST_BIT --- No documentation found for TopLevel "VK_KHR_MAINTENANCE1_SPEC_VERSION"-pattern VK_KHR_MAINTENANCE1_SPEC_VERSION :: Integral a => a-pattern VK_KHR_MAINTENANCE1_SPEC_VERSION = 2--- No documentation found for TopLevel "VK_KHR_MAINTENANCE1_EXTENSION_NAME"-pattern VK_KHR_MAINTENANCE1_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1"++-- No documentation found for TopLevel "VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR"+pattern IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT++ -- No documentation found for TopLevel "vkTrimCommandPoolKHR"-vkTrimCommandPoolKHR :: ("device" ::: VkDevice) -> ("commandPool" ::: VkCommandPool) -> ("flags" ::: VkCommandPoolTrimFlags) -> IO ()-vkTrimCommandPoolKHR = vkTrimCommandPool+trimCommandPoolKHR = trimCommandPool++ -- No documentation found for TopLevel "VkCommandPoolTrimFlagsKHR"-type VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags--- No documentation found for TopLevel "VK_ERROR_OUT_OF_POOL_MEMORY_KHR"-pattern VK_ERROR_OUT_OF_POOL_MEMORY_KHR :: VkResult-pattern VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY--- No documentation found for TopLevel "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR"-pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT--- No documentation found for TopLevel "VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR"-pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT--- No documentation found for TopLevel "VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR"-pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT+type CommandPoolTrimFlagsKHR = CommandPoolTrimFlags+++type KHR_MAINTENANCE1_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_KHR_MAINTENANCE1_SPEC_VERSION"+pattern KHR_MAINTENANCE1_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_MAINTENANCE1_SPEC_VERSION = 2+++type KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1"++-- No documentation found for TopLevel "VK_KHR_MAINTENANCE1_EXTENSION_NAME"+pattern KHR_MAINTENANCE1_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1"+
src/Graphics/Vulkan/Extensions/VK_KHR_maintenance2.hs view
@@ -1,167 +1,137 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}+module Graphics.Vulkan.Extensions.VK_KHR_maintenance2 ( pattern IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR+ , pattern IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR+ , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR+ , pattern STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR+ , pattern STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR+ , pattern STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR+ , pattern IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR+ , pattern IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR+ , pattern POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR+ , pattern POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR+ , pattern TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR+ , pattern TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR+ , PointClippingBehaviorKHR+ , TessellationDomainOriginKHR+ , InputAttachmentAspectReferenceKHR+ , RenderPassInputAttachmentAspectCreateInfoKHR+ , PhysicalDevicePointClippingPropertiesKHR+ , ImageViewUsageCreateInfoKHR+ , PipelineTessellationDomainOriginStateCreateInfoKHR+ , KHR_MAINTENANCE2_SPEC_VERSION+ , pattern KHR_MAINTENANCE2_SPEC_VERSION+ , KHR_MAINTENANCE2_EXTENSION_NAME+ , pattern KHR_MAINTENANCE2_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_KHR_maintenance2- ( pattern VK_KHR_MAINTENANCE2_SPEC_VERSION- , pattern VK_KHR_MAINTENANCE2_EXTENSION_NAME- , VkPointClippingBehaviorKHR- , VkTessellationDomainOriginKHR- , VkInputAttachmentAspectReferenceKHR- , pattern VkInputAttachmentAspectReferenceKHR- , VkRenderPassInputAttachmentAspectCreateInfoKHR- , pattern VkRenderPassInputAttachmentAspectCreateInfoKHR- , VkPhysicalDevicePointClippingPropertiesKHR- , pattern VkPhysicalDevicePointClippingPropertiesKHR- , VkImageViewUsageCreateInfoKHR- , pattern VkImageViewUsageCreateInfoKHR- , VkPipelineTessellationDomainOriginStateCreateInfoKHR- , pattern VkPipelineTessellationDomainOriginStateCreateInfoKHR- , pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR- , pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR- , pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR- , pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR- , pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR- , pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR- , pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR- , pattern VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR- , pattern VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR- , pattern VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR- , pattern VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR- ) where+import Data.String (IsString)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (ImageViewUsageCreateInfo)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (InputAttachmentAspectReference)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (PhysicalDevicePointClippingProperties)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (PipelineTessellationDomainOriginStateCreateInfo)+import Graphics.Vulkan.Core11.Enums.PointClippingBehavior (PointClippingBehavior)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (RenderPassInputAttachmentAspectCreateInfo)+import Graphics.Vulkan.Core11.Enums.TessellationDomainOrigin (TessellationDomainOrigin)+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT))+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(IMAGE_CREATE_EXTENDED_USAGE_BIT))+import Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout(IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL))+import Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout(IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL))+import Graphics.Vulkan.Core11.Enums.PointClippingBehavior (PointClippingBehavior(POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES))+import Graphics.Vulkan.Core11.Enums.PointClippingBehavior (PointClippingBehavior(POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO))+import Graphics.Vulkan.Core11.Enums.TessellationDomainOrigin (TessellationDomainOrigin(TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT))+import Graphics.Vulkan.Core11.Enums.TessellationDomainOrigin (TessellationDomainOrigin(TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT))+-- No documentation found for TopLevel "VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR"+pattern IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT -import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- )-import Graphics.Vulkan.NamedType- ( (:::)- ) +-- No documentation found for TopLevel "VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR"+pattern IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = IMAGE_CREATE_EXTENDED_USAGE_BIT -import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkImageCreateFlagBits(..)- , VkImageUsageFlags- )-import Graphics.Vulkan.Core10.Image- ( VkImageLayout(..)- )-import Graphics.Vulkan.Core10.SparseResourceMemoryManagement- ( VkImageAspectFlags- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2- ( VkImageViewUsageCreateInfo(..)- , VkInputAttachmentAspectReference(..)- , VkPhysicalDevicePointClippingProperties(..)- , VkPipelineTessellationDomainOriginStateCreateInfo(..)- , VkPointClippingBehavior(..)- , VkRenderPassInputAttachmentAspectCreateInfo(..)- , VkTessellationDomainOrigin(..)- , pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT- , pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT- , pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL- , pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL- , pattern VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES- , pattern VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY- , pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES- , pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO- , pattern VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT- , pattern VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT- ) +-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES --- No documentation found for TopLevel "VK_KHR_MAINTENANCE2_SPEC_VERSION"-pattern VK_KHR_MAINTENANCE2_SPEC_VERSION :: Integral a => a-pattern VK_KHR_MAINTENANCE2_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_MAINTENANCE2_EXTENSION_NAME"-pattern VK_KHR_MAINTENANCE2_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2"++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO+++-- No documentation found for TopLevel "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR"+pattern IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL+++-- No documentation found for TopLevel "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR"+pattern IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL+++-- No documentation found for TopLevel "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR"+pattern POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES+++-- No documentation found for TopLevel "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR"+pattern POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY+++-- No documentation found for TopLevel "VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR"+pattern TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT+++-- No documentation found for TopLevel "VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR"+pattern TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT++ -- No documentation found for TopLevel "VkPointClippingBehaviorKHR"-type VkPointClippingBehaviorKHR = VkPointClippingBehavior+type PointClippingBehaviorKHR = PointClippingBehavior++ -- No documentation found for TopLevel "VkTessellationDomainOriginKHR"-type VkTessellationDomainOriginKHR = VkTessellationDomainOrigin--- No documentation found for TopLevel "VkInputAttachmentAspectReferenceKHR"-type VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference+type TessellationDomainOriginKHR = TessellationDomainOrigin -- No documentation found for TopLevel "VkInputAttachmentAspectReferenceKHR"-pattern VkInputAttachmentAspectReferenceKHR :: ("subpass" ::: Word32) -> ("inputAttachmentIndex" ::: Word32) -> ("aspectMask" ::: VkImageAspectFlags) -> VkInputAttachmentAspectReferenceKHR-pattern VkInputAttachmentAspectReferenceKHR vkSubpass vkInputAttachmentIndex vkAspectMask = VkInputAttachmentAspectReference vkSubpass vkInputAttachmentIndex vkAspectMask--- No documentation found for TopLevel "VkRenderPassInputAttachmentAspectCreateInfoKHR"-type VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo+type InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference -- No documentation found for TopLevel "VkRenderPassInputAttachmentAspectCreateInfoKHR"-pattern VkRenderPassInputAttachmentAspectCreateInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("aspectReferenceCount" ::: Word32) -> ("pAspectReferences" ::: Ptr VkInputAttachmentAspectReference) -> VkRenderPassInputAttachmentAspectCreateInfoKHR-pattern VkRenderPassInputAttachmentAspectCreateInfoKHR vkSType vkPNext vkAspectReferenceCount vkPAspectReferences = VkRenderPassInputAttachmentAspectCreateInfo vkSType vkPNext vkAspectReferenceCount vkPAspectReferences--- No documentation found for TopLevel "VkPhysicalDevicePointClippingPropertiesKHR"-type VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties+type RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo -- No documentation found for TopLevel "VkPhysicalDevicePointClippingPropertiesKHR"-pattern VkPhysicalDevicePointClippingPropertiesKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("pointClippingBehavior" ::: VkPointClippingBehavior) -> VkPhysicalDevicePointClippingPropertiesKHR-pattern VkPhysicalDevicePointClippingPropertiesKHR vkSType vkPNext vkPointClippingBehavior = VkPhysicalDevicePointClippingProperties vkSType vkPNext vkPointClippingBehavior--- No documentation found for TopLevel "VkImageViewUsageCreateInfoKHR"-type VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo+type PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties -- No documentation found for TopLevel "VkImageViewUsageCreateInfoKHR"-pattern VkImageViewUsageCreateInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("usage" ::: VkImageUsageFlags) -> VkImageViewUsageCreateInfoKHR-pattern VkImageViewUsageCreateInfoKHR vkSType vkPNext vkUsage = VkImageViewUsageCreateInfo vkSType vkPNext vkUsage--- No documentation found for TopLevel "VkPipelineTessellationDomainOriginStateCreateInfoKHR"-type VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo+type ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo -- No documentation found for TopLevel "VkPipelineTessellationDomainOriginStateCreateInfoKHR"-pattern VkPipelineTessellationDomainOriginStateCreateInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("domainOrigin" ::: VkTessellationDomainOrigin) -> VkPipelineTessellationDomainOriginStateCreateInfoKHR-pattern VkPipelineTessellationDomainOriginStateCreateInfoKHR vkSType vkPNext vkDomainOrigin = VkPipelineTessellationDomainOriginStateCreateInfo vkSType vkPNext vkDomainOrigin--- No documentation found for TopLevel "VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR"-pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT--- No documentation found for TopLevel "VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR"-pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO--- No documentation found for TopLevel "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR"-pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR :: VkImageLayout-pattern VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL--- No documentation found for TopLevel "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR"-pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR :: VkImageLayout-pattern VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL--- No documentation found for TopLevel "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR"-pattern VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR :: VkPointClippingBehavior-pattern VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES--- No documentation found for TopLevel "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR"-pattern VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR :: VkPointClippingBehavior-pattern VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY--- No documentation found for TopLevel "VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR"-pattern VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR :: VkTessellationDomainOrigin-pattern VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT--- No documentation found for TopLevel "VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR"-pattern VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR :: VkTessellationDomainOrigin-pattern VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT+type PipelineTessellationDomainOriginStateCreateInfoKHR = PipelineTessellationDomainOriginStateCreateInfo+++type KHR_MAINTENANCE2_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_MAINTENANCE2_SPEC_VERSION"+pattern KHR_MAINTENANCE2_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_MAINTENANCE2_SPEC_VERSION = 1+++type KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2"++-- No documentation found for TopLevel "VK_KHR_MAINTENANCE2_EXTENSION_NAME"+pattern KHR_MAINTENANCE2_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2"+
src/Graphics/Vulkan/Extensions/VK_KHR_maintenance3.hs view
@@ -1,82 +1,51 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}--module Graphics.Vulkan.Extensions.VK_KHR_maintenance3- ( pattern VK_KHR_MAINTENANCE3_SPEC_VERSION- , pattern VK_KHR_MAINTENANCE3_EXTENSION_NAME- , vkGetDescriptorSetLayoutSupportKHR- , VkPhysicalDeviceMaintenance3PropertiesKHR- , pattern VkPhysicalDeviceMaintenance3PropertiesKHR- , VkDescriptorSetLayoutSupportKHR- , pattern VkDescriptorSetLayoutSupportKHR- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR- , pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR- ) where+module Graphics.Vulkan.Extensions.VK_KHR_maintenance3 ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR+ , pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR+ , getDescriptorSetLayoutSupportKHR+ , PhysicalDeviceMaintenance3PropertiesKHR+ , DescriptorSetLayoutSupportKHR+ , KHR_MAINTENANCE3_SPEC_VERSION+ , pattern KHR_MAINTENANCE3_SPEC_VERSION+ , KHR_MAINTENANCE3_EXTENSION_NAME+ , pattern KHR_MAINTENANCE3_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- )-import Graphics.Vulkan.NamedType- ( (:::)- )+import Data.String (IsString)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3 (getDescriptorSetLayoutSupport)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3 (DescriptorSetLayoutSupport)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3 (PhysicalDeviceMaintenance3Properties)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES -import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DescriptorSet- ( VkDescriptorSetLayoutCreateInfo(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- , VkDeviceSize- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance3- ( VkDescriptorSetLayoutSupport(..)- , VkPhysicalDeviceMaintenance3Properties(..)- , vkGetDescriptorSetLayoutSupport- , pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES- )+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR"+pattern STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT --- No documentation found for TopLevel "VK_KHR_MAINTENANCE3_SPEC_VERSION"-pattern VK_KHR_MAINTENANCE3_SPEC_VERSION :: Integral a => a-pattern VK_KHR_MAINTENANCE3_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_MAINTENANCE3_EXTENSION_NAME"-pattern VK_KHR_MAINTENANCE3_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" -- No documentation found for TopLevel "vkGetDescriptorSetLayoutSupportKHR"-vkGetDescriptorSetLayoutSupportKHR :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkDescriptorSetLayoutCreateInfo) -> ("pSupport" ::: Ptr VkDescriptorSetLayoutSupport) -> IO ()-vkGetDescriptorSetLayoutSupportKHR = vkGetDescriptorSetLayoutSupport--- No documentation found for TopLevel "VkPhysicalDeviceMaintenance3PropertiesKHR"-type VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties+getDescriptorSetLayoutSupportKHR = getDescriptorSetLayoutSupport -- No documentation found for TopLevel "VkPhysicalDeviceMaintenance3PropertiesKHR"-pattern VkPhysicalDeviceMaintenance3PropertiesKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("maxPerSetDescriptors" ::: Word32) -> ("maxMemoryAllocationSize" ::: VkDeviceSize) -> VkPhysicalDeviceMaintenance3PropertiesKHR-pattern VkPhysicalDeviceMaintenance3PropertiesKHR vkSType vkPNext vkMaxPerSetDescriptors vkMaxMemoryAllocationSize = VkPhysicalDeviceMaintenance3Properties vkSType vkPNext vkMaxPerSetDescriptors vkMaxMemoryAllocationSize--- No documentation found for TopLevel "VkDescriptorSetLayoutSupportKHR"-type VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport+type PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties -- No documentation found for TopLevel "VkDescriptorSetLayoutSupportKHR"-pattern VkDescriptorSetLayoutSupportKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("supported" ::: VkBool32) -> VkDescriptorSetLayoutSupportKHR-pattern VkDescriptorSetLayoutSupportKHR vkSType vkPNext vkSupported = VkDescriptorSetLayoutSupport vkSType vkPNext vkSupported--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR"-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT+type DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport+++type KHR_MAINTENANCE3_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_MAINTENANCE3_SPEC_VERSION"+pattern KHR_MAINTENANCE3_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_MAINTENANCE3_SPEC_VERSION = 1+++type KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3"++-- No documentation found for TopLevel "VK_KHR_MAINTENANCE3_EXTENSION_NAME"+pattern KHR_MAINTENANCE3_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3"+
− src/Graphics/Vulkan/Extensions/VK_KHR_mir_surface.hs
@@ -1,249 +0,0 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_KHR_mir_surface- ( MirConnection- , MirSurface- , VkMirSurfaceCreateFlagsKHR(..)- , pattern VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR- , pattern VK_KHR_MIR_SURFACE_SPEC_VERSION- , pattern VK_KHR_MIR_SURFACE_EXTENSION_NAME- , vkCreateMirSurfaceKHR- , vkGetPhysicalDeviceMirPresentationSupportKHR- , VkMirSurfaceCreateInfoKHR(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkInstance- , VkPhysicalDevice- )-import Graphics.Vulkan.Extensions.VK_KHR_surface- ( VkSurfaceKHR- )----- | Opaque data-data MirConnection--- | Opaque data-data MirSurface--- ** VkMirSurfaceCreateFlagsKHR---- No documentation found for TopLevel "VkMirSurfaceCreateFlagsKHR"-newtype VkMirSurfaceCreateFlagsKHR = VkMirSurfaceCreateFlagsKHR VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkMirSurfaceCreateFlagsKHR where- - showsPrec p (VkMirSurfaceCreateFlagsKHR x) = showParen (p >= 11) (showString "VkMirSurfaceCreateFlagsKHR " . showsPrec 11 x)--instance Read VkMirSurfaceCreateFlagsKHR where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkMirSurfaceCreateFlagsKHR")- v <- step readPrec- pure (VkMirSurfaceCreateFlagsKHR v)- )- )----- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = VkStructureType 1000007000--- No documentation found for TopLevel "VK_KHR_MIR_SURFACE_SPEC_VERSION"-pattern VK_KHR_MIR_SURFACE_SPEC_VERSION :: Integral a => a-pattern VK_KHR_MIR_SURFACE_SPEC_VERSION = 4--- No documentation found for TopLevel "VK_KHR_MIR_SURFACE_EXTENSION_NAME"-pattern VK_KHR_MIR_SURFACE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_MIR_SURFACE_EXTENSION_NAME = "VK_KHR_mir_surface"--- | vkCreateMirSurfaceKHR - Create a--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR' object for a--- Mir window------ = Parameters------ - @instance@ is the instance to associate the surface with.------ - @pCreateInfo@ is a pointer to an instance of the--- 'VkMirSurfaceCreateInfoKHR' structure containing parameters--- affecting the creation of the surface object.------ - @pAllocator@ is the allocator used for host memory allocated for the--- surface object when there is no more specific allocator available--- (see [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)).------ - @pSurface@ points to a @VkSurfaceKHR@ handle in which the created--- surface object is returned.------ == Valid Usage (Implicit)------ - @instance@ /must/ be a valid @VkInstance@ handle------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkMirSurfaceCreateInfoKHR@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pSurface@ /must/ be a valid pointer to a @VkSurfaceKHR@ handle------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',--- 'VkMirSurfaceCreateInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateMirSurfaceKHR" vkCreateMirSurfaceKHR :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMirSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult--- | vkGetPhysicalDeviceMirPresentationSupportKHR - Query physical device for--- presentation to Mir------ = Parameters------ - @physicalDevice@ is the physical device.------ - @queueFamilyIndex@ is the queue family index.------ - @connection@ is a pointer to the @MirConnection@, and identifies the--- desired Mir compositor.------ = Description------ This platform-specific function /can/ be called prior to creating a--- surface.------ == Valid Usage------ - @queueFamilyIndex@ /must/ be less than @pQueueFamilyPropertyCount@--- returned by @vkGetPhysicalDeviceQueueFamilyProperties@ for the given--- @physicalDevice@------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @connection@ /must/ be a valid pointer to a @MirConnection@ value------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceMirPresentationSupportKHR" vkGetPhysicalDeviceMirPresentationSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr MirConnection) -> IO VkBool32--- | VkMirSurfaceCreateInfoKHR - Structure specifying parameters of a newly--- created Mir surface object------ == Valid Usage------ - @connection@ /must/ point to a valid @MirConnection@.------ - @surface@ /must/ point to a valid @MirSurface@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@------ = See Also------ 'VkMirSurfaceCreateFlagsKHR',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateMirSurfaceKHR'-data VkMirSurfaceCreateInfoKHR = VkMirSurfaceCreateInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkMirSurfaceCreateFlagsKHR- , -- | @connection@ and @surface@ are pointers to the @MirConnection@ and- -- @MirSurface@ for the window to associate the surface with.- vkConnection :: Ptr MirConnection- , -- No documentation found for Nested "VkMirSurfaceCreateInfoKHR" "mirSurface"- vkMirSurface :: Ptr MirSurface- }- deriving (Eq, Show)--instance Storable VkMirSurfaceCreateInfoKHR where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkMirSurfaceCreateInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkMirSurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkMirSurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkMirSurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 24) (vkConnection (poked :: VkMirSurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 32) (vkMirSurface (poked :: VkMirSurfaceCreateInfoKHR))
src/Graphics/Vulkan/Extensions/VK_KHR_multiview.hs view
@@ -1,96 +1,64 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}+module Graphics.Vulkan.Extensions.VK_KHR_multiview ( pattern STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR+ , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR+ , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR+ , pattern DEPENDENCY_VIEW_LOCAL_BIT_KHR+ , PhysicalDeviceMultiviewFeaturesKHR+ , PhysicalDeviceMultiviewPropertiesKHR+ , RenderPassMultiviewCreateInfoKHR+ , KHR_MULTIVIEW_SPEC_VERSION+ , pattern KHR_MULTIVIEW_SPEC_VERSION+ , KHR_MULTIVIEW_EXTENSION_NAME+ , pattern KHR_MULTIVIEW_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_KHR_multiview- ( pattern VK_KHR_MULTIVIEW_SPEC_VERSION- , pattern VK_KHR_MULTIVIEW_EXTENSION_NAME- , VkPhysicalDeviceMultiviewFeaturesKHR- , pattern VkPhysicalDeviceMultiviewFeaturesKHR- , VkPhysicalDeviceMultiviewPropertiesKHR- , pattern VkPhysicalDeviceMultiviewPropertiesKHR- , VkRenderPassMultiviewCreateInfoKHR- , pattern VkRenderPassMultiviewCreateInfoKHR- , pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR- , pattern VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR- ) where+import Data.String (IsString)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview (PhysicalDeviceMultiviewFeatures)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview (PhysicalDeviceMultiviewProperties)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview (RenderPassMultiviewCreateInfo)+import Graphics.Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlags)+import Graphics.Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlagBits(DEPENDENCY_VIEW_LOCAL_BIT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO -import Data.Int- ( Int32- )-import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- )-import Graphics.Vulkan.NamedType- ( (:::)- ) +-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES -import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.Pass- ( VkDependencyFlagBits(..)- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview- ( VkPhysicalDeviceMultiviewFeatures(..)- , VkPhysicalDeviceMultiviewProperties(..)- , VkRenderPassMultiviewCreateInfo(..)- , pattern VK_DEPENDENCY_VIEW_LOCAL_BIT- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES- , pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO- ) +-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES --- No documentation found for TopLevel "VK_KHR_MULTIVIEW_SPEC_VERSION"-pattern VK_KHR_MULTIVIEW_SPEC_VERSION :: Integral a => a-pattern VK_KHR_MULTIVIEW_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_MULTIVIEW_EXTENSION_NAME"-pattern VK_KHR_MULTIVIEW_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview"--- No documentation found for TopLevel "VkPhysicalDeviceMultiviewFeaturesKHR"-type VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures +-- No documentation found for TopLevel "VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR"+pattern DEPENDENCY_VIEW_LOCAL_BIT_KHR = DEPENDENCY_VIEW_LOCAL_BIT + -- No documentation found for TopLevel "VkPhysicalDeviceMultiviewFeaturesKHR"-pattern VkPhysicalDeviceMultiviewFeaturesKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("multiview" ::: VkBool32) -> ("multiviewGeometryShader" ::: VkBool32) -> ("multiviewTessellationShader" ::: VkBool32) -> VkPhysicalDeviceMultiviewFeaturesKHR-pattern VkPhysicalDeviceMultiviewFeaturesKHR vkSType vkPNext vkMultiview vkMultiviewGeometryShader vkMultiviewTessellationShader = VkPhysicalDeviceMultiviewFeatures vkSType vkPNext vkMultiview vkMultiviewGeometryShader vkMultiviewTessellationShader--- No documentation found for TopLevel "VkPhysicalDeviceMultiviewPropertiesKHR"-type VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties+type PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures -- No documentation found for TopLevel "VkPhysicalDeviceMultiviewPropertiesKHR"-pattern VkPhysicalDeviceMultiviewPropertiesKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("maxMultiviewViewCount" ::: Word32) -> ("maxMultiviewInstanceIndex" ::: Word32) -> VkPhysicalDeviceMultiviewPropertiesKHR-pattern VkPhysicalDeviceMultiviewPropertiesKHR vkSType vkPNext vkMaxMultiviewViewCount vkMaxMultiviewInstanceIndex = VkPhysicalDeviceMultiviewProperties vkSType vkPNext vkMaxMultiviewViewCount vkMaxMultiviewInstanceIndex--- No documentation found for TopLevel "VkRenderPassMultiviewCreateInfoKHR"-type VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo+type PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties -- No documentation found for TopLevel "VkRenderPassMultiviewCreateInfoKHR"-pattern VkRenderPassMultiviewCreateInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("subpassCount" ::: Word32) -> ("pViewMasks" ::: Ptr Word32) -> ("dependencyCount" ::: Word32) -> ("pViewOffsets" ::: Ptr Int32) -> ("correlationMaskCount" ::: Word32) -> ("pCorrelationMasks" ::: Ptr Word32) -> VkRenderPassMultiviewCreateInfoKHR-pattern VkRenderPassMultiviewCreateInfoKHR vkSType vkPNext vkSubpassCount vkPViewMasks vkDependencyCount vkPViewOffsets vkCorrelationMaskCount vkPCorrelationMasks = VkRenderPassMultiviewCreateInfo vkSType vkPNext vkSubpassCount vkPViewMasks vkDependencyCount vkPViewOffsets vkCorrelationMaskCount vkPCorrelationMasks--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES--- No documentation found for TopLevel "VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR"-pattern VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR :: VkDependencyFlagBits-pattern VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = VK_DEPENDENCY_VIEW_LOCAL_BIT+type RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo+++type KHR_MULTIVIEW_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_MULTIVIEW_SPEC_VERSION"+pattern KHR_MULTIVIEW_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_MULTIVIEW_SPEC_VERSION = 1+++type KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview"++-- No documentation found for TopLevel "VK_KHR_MULTIVIEW_EXTENSION_NAME"+pattern KHR_MULTIVIEW_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_performance_query.hs view
@@ -0,0 +1,1130 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_performance_query ( enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR+ , getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR+ , acquireProfilingLockKHR+ , releaseProfilingLockKHR+ , PhysicalDevicePerformanceQueryFeaturesKHR(..)+ , PhysicalDevicePerformanceQueryPropertiesKHR(..)+ , PerformanceCounterKHR(..)+ , PerformanceCounterDescriptionKHR(..)+ , QueryPoolPerformanceCreateInfoKHR(..)+ , AcquireProfilingLockInfoKHR(..)+ , PerformanceQuerySubmitInfoKHR(..)+ , PerformanceCounterResultKHR(..)+ , PerformanceCounterScopeKHR( PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR+ , PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR+ , PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR+ , ..+ )+ , PerformanceCounterUnitKHR( PERFORMANCE_COUNTER_UNIT_GENERIC_KHR+ , PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR+ , PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR+ , PERFORMANCE_COUNTER_UNIT_BYTES_KHR+ , PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR+ , PERFORMANCE_COUNTER_UNIT_KELVIN_KHR+ , PERFORMANCE_COUNTER_UNIT_WATTS_KHR+ , PERFORMANCE_COUNTER_UNIT_VOLTS_KHR+ , PERFORMANCE_COUNTER_UNIT_AMPS_KHR+ , PERFORMANCE_COUNTER_UNIT_HERTZ_KHR+ , PERFORMANCE_COUNTER_UNIT_CYCLES_KHR+ , ..+ )+ , PerformanceCounterStorageKHR( PERFORMANCE_COUNTER_STORAGE_INT32_KHR+ , PERFORMANCE_COUNTER_STORAGE_INT64_KHR+ , PERFORMANCE_COUNTER_STORAGE_UINT32_KHR+ , PERFORMANCE_COUNTER_STORAGE_UINT64_KHR+ , PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR+ , PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR+ , ..+ )+ , PerformanceCounterDescriptionFlagBitsKHR( PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR+ , PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR+ , ..+ )+ , PerformanceCounterDescriptionFlagsKHR+ , AcquireProfilingLockFlagBitsKHR(..)+ , AcquireProfilingLockFlagsKHR+ , KHR_PERFORMANCE_QUERY_SPEC_VERSION+ , pattern KHR_PERFORMANCE_QUERY_SPEC_VERSION+ , KHR_PERFORMANCE_QUERY_EXTENSION_NAME+ , pattern KHR_PERFORMANCE_QUERY_EXTENSION_NAME+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.ByteString (packCString)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Control.Monad.Trans.Cont (runContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Bits (Bits)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.C.Types (CDouble)+import Foreign.C.Types (CDouble(CDouble))+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CFloat(CFloat))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Data.Int (Int32)+import Data.Int (Int64)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Data.Word (Word64)+import Data.Word (Word8)+import Text.Read.Lex (Lexeme(Ident))+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import qualified Data.Vector.Storable.Sized (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)+import Graphics.Vulkan.CStruct.Utils (peekByteStringFromSizedVectorPtr)+import Graphics.Vulkan.CStruct.Utils (pokeFixedLengthByteString)+import Graphics.Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkAcquireProfilingLockKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkReleaseProfilingLockKHR))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR))+import Graphics.Vulkan.Core10.APIConstants (MAX_DESCRIPTION_SIZE)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Core10.APIConstants (UUID_SIZE)+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR+ :: FunPtr (Ptr PhysicalDevice_T -> Word32 -> Ptr Word32 -> Ptr PerformanceCounterKHR -> Ptr PerformanceCounterDescriptionKHR -> IO Result) -> Ptr PhysicalDevice_T -> Word32 -> Ptr Word32 -> Ptr PerformanceCounterKHR -> Ptr PerformanceCounterDescriptionKHR -> IO Result++-- | vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR -+-- Reports properties of the performance query counters available on a+-- queue family of a device+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the handle to the+-- physical device whose queue family performance query counter+-- properties will be queried.+--+-- - @queueFamilyIndex@ is the index into the queue family of the+-- physical device we want to get properties for.+--+-- - @pCounterCount@ is a pointer to an integer related to the number of+-- counters available or queried, as described below.+--+-- - @pCounters@ is either @NULL@ or a pointer to an array of+-- 'PerformanceCounterKHR' structures.+--+-- - @pCounterDescriptions@ is either @NULL@ or a pointer to an array of+-- 'PerformanceCounterDescriptionKHR' structures.+--+-- = Description+--+-- If @pCounters@ is @NULL@ and @pCounterDescriptions@ is @NULL@, then the+-- number of counters available is returned in @pCounterCount@. Otherwise,+-- @pCounterCount@ /must/ point to a variable set by the user to the number+-- of elements in the @pCounters@, @pCounterDescriptions@, or both arrays+-- and on return the variable is overwritten with the number of structures+-- actually written out. If @pCounterCount@ is less than the number of+-- counters available, at most @pCounterCount@ structures will be written+-- and 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned+-- instead of 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @pCounterCount@ /must/ be a valid pointer to a @uint32_t@ value+--+-- - If the value referenced by @pCounterCount@ is not @0@, and+-- @pCounters@ is not @NULL@, @pCounters@ /must/ be a valid pointer to+-- an array of @pCounterCount@ 'PerformanceCounterKHR' structures+--+-- - If the value referenced by @pCounterCount@ is not @0@, and+-- @pCounterDescriptions@ is not @NULL@, @pCounterDescriptions@ /must/+-- be a valid pointer to an array of @pCounterCount@+-- 'PerformanceCounterDescriptionKHR' structures+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'+--+-- = See Also+--+-- 'PerformanceCounterDescriptionKHR', 'PerformanceCounterKHR',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR :: PhysicalDevice -> ("queueFamilyIndex" ::: Word32) -> IO (Result, ("counters" ::: Vector PerformanceCounterKHR), ("counterDescriptions" ::: Vector PerformanceCounterDescriptionKHR))+enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR physicalDevice queueFamilyIndex = evalContT $ do+ let vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR' = mkVkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR (pVkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pPCounterCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR' physicalDevice' (queueFamilyIndex) (pPCounterCount) (nullPtr) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pCounterCount <- lift $ peek @Word32 pPCounterCount+ pPCounters <- ContT $ bracket (callocBytes @PerformanceCounterKHR ((fromIntegral (pCounterCount)) * 48)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPCounters `advancePtrBytes` (i * 48) :: Ptr PerformanceCounterKHR) . ($ ())) [0..(fromIntegral (pCounterCount)) - 1]+ pPCounterDescriptions <- ContT $ bracket (callocBytes @PerformanceCounterDescriptionKHR ((fromIntegral (pCounterCount)) * 792)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPCounterDescriptions `advancePtrBytes` (i * 792) :: Ptr PerformanceCounterDescriptionKHR) . ($ ())) [0..(fromIntegral (pCounterCount)) - 1]+ r' <- lift $ vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR' physicalDevice' (queueFamilyIndex) (pPCounterCount) ((pPCounters)) ((pPCounterDescriptions))+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pCounterCount' <- lift $ peek @Word32 pPCounterCount+ let x32 = pCounterCount'+ pCounters' <- lift $ generateM (fromIntegral x32) (\i -> peekCStruct @PerformanceCounterKHR (((pPCounters) `advancePtrBytes` (48 * (i)) :: Ptr PerformanceCounterKHR)))+ pCounterDescriptions' <- lift $ generateM (fromIntegral x32) (\i -> peekCStruct @PerformanceCounterDescriptionKHR (((pPCounterDescriptions) `advancePtrBytes` (792 * (i)) :: Ptr PerformanceCounterDescriptionKHR)))+ pure $ ((r'), pCounters', pCounterDescriptions')+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr QueryPoolPerformanceCreateInfoKHR -> Ptr Word32 -> IO ()) -> Ptr PhysicalDevice_T -> Ptr QueryPoolPerformanceCreateInfoKHR -> Ptr Word32 -> IO ()++-- | vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR - Reports the+-- number of passes require for a performance query pool type+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the handle to the+-- physical device whose queue family performance query counter+-- properties will be queried.+--+-- - @pPerformanceQueryCreateInfo@ is a pointer to a+-- 'QueryPoolPerformanceCreateInfoKHR' of the performance query that is+-- to be created.+--+-- - @pNumPasses@ is a pointer to an integer related to the number of+-- passes required to query the performance query pool, as described+-- below.+--+-- = Description+--+-- The @pPerformanceQueryCreateInfo@ member+-- 'QueryPoolPerformanceCreateInfoKHR'::@queueFamilyIndex@ /must/ be a+-- queue family of 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'. The+-- number of passes required to capture the counters specified in the+-- @pPerformanceQueryCreateInfo@ member+-- 'QueryPoolPerformanceCreateInfoKHR'::@pCounters@ is returned in+-- @pNumPasses@.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'QueryPoolPerformanceCreateInfoKHR'+getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR :: PhysicalDevice -> ("performanceQueryCreateInfo" ::: QueryPoolPerformanceCreateInfoKHR) -> IO (("numPasses" ::: Word32))+getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR physicalDevice performanceQueryCreateInfo = evalContT $ do+ let vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR' = mkVkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR (pVkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ pPerformanceQueryCreateInfo <- ContT $ withCStruct (performanceQueryCreateInfo)+ pPNumPasses <- ContT $ bracket (callocBytes @Word32 4) free+ lift $ vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR' (physicalDeviceHandle (physicalDevice)) pPerformanceQueryCreateInfo (pPNumPasses)+ pNumPasses <- lift $ peek @Word32 pPNumPasses+ pure $ (pNumPasses)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkAcquireProfilingLockKHR+ :: FunPtr (Ptr Device_T -> Ptr AcquireProfilingLockInfoKHR -> IO Result) -> Ptr Device_T -> Ptr AcquireProfilingLockInfoKHR -> IO Result++-- | vkAcquireProfilingLockKHR - Acquires the profiling lock+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device to+-- profile.+--+-- - @pInfo@ is a pointer to a 'AcquireProfilingLockInfoKHR' structure+-- which contains information about how the profiling is to be+-- acquired.+--+-- = Description+--+-- Implementations /may/ allow multiple actors to hold the profiling lock+-- concurrently.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.TIMEOUT'+--+-- = See Also+--+-- 'AcquireProfilingLockInfoKHR', 'Graphics.Vulkan.Core10.Handles.Device'+acquireProfilingLockKHR :: Device -> AcquireProfilingLockInfoKHR -> IO ()+acquireProfilingLockKHR device info = evalContT $ do+ let vkAcquireProfilingLockKHR' = mkVkAcquireProfilingLockKHR (pVkAcquireProfilingLockKHR (deviceCmds (device :: Device)))+ pInfo <- ContT $ withCStruct (info)+ r <- lift $ vkAcquireProfilingLockKHR' (deviceHandle (device)) pInfo+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkReleaseProfilingLockKHR+ :: FunPtr (Ptr Device_T -> IO ()) -> Ptr Device_T -> IO ()++-- | vkReleaseProfilingLockKHR - Releases the profiling lock+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device to+-- cease profiling on.+--+-- == Valid Usage+--+-- - The profiling lock of 'Graphics.Vulkan.Core10.Handles.Device' /must/+-- have been held via a previous successful call to+-- 'acquireProfilingLockKHR'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device'+releaseProfilingLockKHR :: Device -> IO ()+releaseProfilingLockKHR device = do+ let vkReleaseProfilingLockKHR' = mkVkReleaseProfilingLockKHR (pVkReleaseProfilingLockKHR (deviceCmds (device :: Device)))+ vkReleaseProfilingLockKHR' (deviceHandle (device))+ pure $ ()+++-- | VkPhysicalDevicePerformanceQueryFeaturesKHR - Structure describing+-- performance query support for an implementation+--+-- = Members+--+-- The members of the 'PhysicalDevicePerformanceQueryFeaturesKHR' structure+-- describe the following implementation-dependent features:+--+-- == Valid Usage (Implicit)+--+-- To query supported performance counter query pool features, call+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2'+-- with a 'PhysicalDevicePerformanceQueryFeaturesKHR' structure included in+-- the @pNext@ chain of its @pFeatures@ parameter. The+-- 'PhysicalDevicePerformanceQueryFeaturesKHR' structure /can/ also be+-- included in the @pNext@ chain of a+-- 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' structure, in which+-- case it controls which additional features are enabled in the device.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDevicePerformanceQueryFeaturesKHR = PhysicalDevicePerformanceQueryFeaturesKHR+ { -- | @performanceCounterQueryPools@ is 'Graphics.Vulkan.Core10.BaseType.TRUE'+ -- if the physical device supports performance counter query pools.+ performanceCounterQueryPools :: Bool+ , -- | @performanceCounterMultipleQueryPools@ is+ -- 'Graphics.Vulkan.Core10.BaseType.TRUE'\` if the physical device supports+ -- using multiple performance query pools in a primary command buffer and+ -- secondary command buffers executed within it.+ performanceCounterMultipleQueryPools :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDevicePerformanceQueryFeaturesKHR++instance ToCStruct PhysicalDevicePerformanceQueryFeaturesKHR where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDevicePerformanceQueryFeaturesKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (performanceCounterQueryPools))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (performanceCounterMultipleQueryPools))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDevicePerformanceQueryFeaturesKHR where+ peekCStruct p = do+ performanceCounterQueryPools <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ performanceCounterMultipleQueryPools <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ pure $ PhysicalDevicePerformanceQueryFeaturesKHR+ (bool32ToBool performanceCounterQueryPools) (bool32ToBool performanceCounterMultipleQueryPools)++instance Storable PhysicalDevicePerformanceQueryFeaturesKHR where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDevicePerformanceQueryFeaturesKHR where+ zero = PhysicalDevicePerformanceQueryFeaturesKHR+ zero+ zero+++-- | VkPhysicalDevicePerformanceQueryPropertiesKHR - Structure describing+-- performance query properties for an implementation+--+-- = Members+--+-- The members of the 'PhysicalDevicePerformanceQueryPropertiesKHR'+-- structure describe the following implementation-dependent properties:+--+-- == Valid Usage (Implicit)+--+-- If the 'PhysicalDevicePerformanceQueryPropertiesKHR' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent properties.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDevicePerformanceQueryPropertiesKHR = PhysicalDevicePerformanceQueryPropertiesKHR+ { -- | @allowCommandBufferQueryCopies@ is+ -- 'Graphics.Vulkan.Core10.BaseType.TRUE' if the performance query pools+ -- are allowed to be used with+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults'.+ allowCommandBufferQueryCopies :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDevicePerformanceQueryPropertiesKHR++instance ToCStruct PhysicalDevicePerformanceQueryPropertiesKHR where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDevicePerformanceQueryPropertiesKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (allowCommandBufferQueryCopies))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDevicePerformanceQueryPropertiesKHR where+ peekCStruct p = do+ allowCommandBufferQueryCopies <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDevicePerformanceQueryPropertiesKHR+ (bool32ToBool allowCommandBufferQueryCopies)++instance Storable PhysicalDevicePerformanceQueryPropertiesKHR where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDevicePerformanceQueryPropertiesKHR where+ zero = PhysicalDevicePerformanceQueryPropertiesKHR+ zero+++-- | VkPerformanceCounterKHR - Structure providing information about a+-- counter+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'PerformanceCounterScopeKHR', 'PerformanceCounterStorageKHR',+-- 'PerformanceCounterUnitKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR'+data PerformanceCounterKHR = PerformanceCounterKHR+ { -- | @unit@ is a 'PerformanceCounterUnitKHR' specifying the unit that the+ -- counter data will record.+ unit :: PerformanceCounterUnitKHR+ , -- | @scope@ is a 'PerformanceCounterScopeKHR' specifying the scope that the+ -- counter belongs to.+ scope :: PerformanceCounterScopeKHR+ , -- | @storage@ is a 'PerformanceCounterStorageKHR' specifying the storage+ -- type that the counter’s data uses.+ storage :: PerformanceCounterStorageKHR+ , -- | @uuid@ is an array of size+ -- 'Graphics.Vulkan.Core10.APIConstants.UUID_SIZE', containing 8-bit values+ -- that represent a universally unique identifier for the counter of the+ -- physical device.+ uuid :: ByteString+ }+ deriving (Typeable)+deriving instance Show PerformanceCounterKHR++instance ToCStruct PerformanceCounterKHR where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PerformanceCounterKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr PerformanceCounterUnitKHR)) (unit)+ poke ((p `plusPtr` 20 :: Ptr PerformanceCounterScopeKHR)) (scope)+ poke ((p `plusPtr` 24 :: Ptr PerformanceCounterStorageKHR)) (storage)+ pokeFixedLengthByteString ((p `plusPtr` 28 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (uuid)+ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr PerformanceCounterUnitKHR)) (zero)+ poke ((p `plusPtr` 20 :: Ptr PerformanceCounterScopeKHR)) (zero)+ poke ((p `plusPtr` 24 :: Ptr PerformanceCounterStorageKHR)) (zero)+ pokeFixedLengthByteString ((p `plusPtr` 28 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8))) (mempty)+ f++instance FromCStruct PerformanceCounterKHR where+ peekCStruct p = do+ unit <- peek @PerformanceCounterUnitKHR ((p `plusPtr` 16 :: Ptr PerformanceCounterUnitKHR))+ scope <- peek @PerformanceCounterScopeKHR ((p `plusPtr` 20 :: Ptr PerformanceCounterScopeKHR))+ storage <- peek @PerformanceCounterStorageKHR ((p `plusPtr` 24 :: Ptr PerformanceCounterStorageKHR))+ uuid <- peekByteStringFromSizedVectorPtr ((p `plusPtr` 28 :: Ptr (Data.Vector.Storable.Sized.Vector UUID_SIZE Word8)))+ pure $ PerformanceCounterKHR+ unit scope storage uuid++instance Storable PerformanceCounterKHR where+ sizeOf ~_ = 48+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PerformanceCounterKHR where+ zero = PerformanceCounterKHR+ zero+ zero+ zero+ mempty+++-- | VkPerformanceCounterDescriptionKHR - Structure providing more detailed+-- information about a counter+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'PerformanceCounterDescriptionFlagsKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR'+data PerformanceCounterDescriptionKHR = PerformanceCounterDescriptionKHR+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'PerformanceCounterDescriptionFlagBitsKHR' indicating the usage behavior+ -- for the counter.+ flags :: PerformanceCounterDescriptionFlagsKHR+ , -- | @name@ is an array of size+ -- 'Graphics.Vulkan.Core10.APIConstants.MAX_DESCRIPTION_SIZE', containing a+ -- null-terminated UTF-8 string specifying the name of the counter.+ name :: ByteString+ , -- | @category@ is an array of size+ -- 'Graphics.Vulkan.Core10.APIConstants.MAX_DESCRIPTION_SIZE', containing a+ -- null-terminated UTF-8 string specifying the category of the counter.+ category :: ByteString+ , -- | @description@ is an array of size+ -- 'Graphics.Vulkan.Core10.APIConstants.MAX_DESCRIPTION_SIZE', containing a+ -- null-terminated UTF-8 string specifying the description of the counter.+ description :: ByteString+ }+ deriving (Typeable)+deriving instance Show PerformanceCounterDescriptionKHR++instance ToCStruct PerformanceCounterDescriptionKHR where+ withCStruct x f = allocaBytesAligned 792 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PerformanceCounterDescriptionKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr PerformanceCounterDescriptionFlagsKHR)) (flags)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (name)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (category)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 532 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (description)+ f+ cStructSize = 792+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 532 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)+ f++instance FromCStruct PerformanceCounterDescriptionKHR where+ peekCStruct p = do+ flags <- peek @PerformanceCounterDescriptionFlagsKHR ((p `plusPtr` 16 :: Ptr PerformanceCounterDescriptionFlagsKHR))+ name <- packCString (lowerArrayPtr ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))+ category <- packCString (lowerArrayPtr ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))+ description <- packCString (lowerArrayPtr ((p `plusPtr` 532 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))+ pure $ PerformanceCounterDescriptionKHR+ flags name category description++instance Storable PerformanceCounterDescriptionKHR where+ sizeOf ~_ = 792+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PerformanceCounterDescriptionKHR where+ zero = PerformanceCounterDescriptionKHR+ zero+ mempty+ mempty+ mempty+++-- | VkQueryPoolPerformanceCreateInfoKHR - Structure specifying parameters of+-- a newly created performance query pool+--+-- == Valid Usage+--+-- - @queueFamilyIndex@ /must/ be a valid queue family index of the+-- device+--+-- - The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-features-performanceCounterQueryPools performanceCounterQueryPools>+-- feature /must/ be enabled+--+-- - Each element of @pCounterIndices@ /must/ be in the range of counters+-- reported by+-- 'enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR' for+-- the queue family specified in @queueFamilyIndex@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR'+--+-- - @pCounterIndices@ /must/ be a valid pointer to an array of+-- @counterIndexCount@ @uint32_t@ values+--+-- - @counterIndexCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'+data QueryPoolPerformanceCreateInfoKHR = QueryPoolPerformanceCreateInfoKHR+ { -- | @queueFamilyIndex@ is the queue family index to create this performance+ -- query pool for.+ queueFamilyIndex :: Word32+ , -- | @pCounterIndices@ is the array of indices into the+ -- 'enumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR'::@pCounters@+ -- to enable in this performance query pool.+ counterIndices :: Vector Word32+ }+ deriving (Typeable)+deriving instance Show QueryPoolPerformanceCreateInfoKHR++instance ToCStruct QueryPoolPerformanceCreateInfoKHR where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p QueryPoolPerformanceCreateInfoKHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (queueFamilyIndex)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (counterIndices)) :: Word32))+ pPCounterIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (counterIndices)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPCounterIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (counterIndices)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPCounterIndices')+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ pPCounterIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPCounterIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPCounterIndices')+ lift $ f++instance FromCStruct QueryPoolPerformanceCreateInfoKHR where+ peekCStruct p = do+ queueFamilyIndex <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ counterIndexCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pCounterIndices <- peek @(Ptr Word32) ((p `plusPtr` 24 :: Ptr (Ptr Word32)))+ pCounterIndices' <- generateM (fromIntegral counterIndexCount) (\i -> peek @Word32 ((pCounterIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ pure $ QueryPoolPerformanceCreateInfoKHR+ queueFamilyIndex pCounterIndices'++instance Zero QueryPoolPerformanceCreateInfoKHR where+ zero = QueryPoolPerformanceCreateInfoKHR+ zero+ mempty+++-- | VkAcquireProfilingLockInfoKHR - Structure specifying parameters to+-- acquire the profiling lock+--+-- == Valid Usage (Implicit)+--+-- If @timeout@ is 0, 'acquireProfilingLockKHR' will not block while+-- attempting to acquire the profling lock. If @timeout@ is @UINT64_MAX@,+-- the function will not return until the profiling lock was acquired.+--+-- = See Also+--+-- 'AcquireProfilingLockFlagsKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'acquireProfilingLockKHR'+data AcquireProfilingLockInfoKHR = AcquireProfilingLockInfoKHR+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+ flags :: AcquireProfilingLockFlagsKHR+ , -- | @timeout@ indicates how long the function waits, in nanoseconds, if the+ -- profiling lock is not available.+ timeout :: Word64+ }+ deriving (Typeable)+deriving instance Show AcquireProfilingLockInfoKHR++instance ToCStruct AcquireProfilingLockInfoKHR where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p AcquireProfilingLockInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr AcquireProfilingLockFlagsKHR)) (flags)+ poke ((p `plusPtr` 24 :: Ptr Word64)) (timeout)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)+ f++instance FromCStruct AcquireProfilingLockInfoKHR where+ peekCStruct p = do+ flags <- peek @AcquireProfilingLockFlagsKHR ((p `plusPtr` 16 :: Ptr AcquireProfilingLockFlagsKHR))+ timeout <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))+ pure $ AcquireProfilingLockInfoKHR+ flags timeout++instance Storable AcquireProfilingLockInfoKHR where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AcquireProfilingLockInfoKHR where+ zero = AcquireProfilingLockInfoKHR+ zero+ zero+++-- | VkPerformanceQuerySubmitInfoKHR - Structure indicating which counter+-- pass index is active for performance queries+--+-- = Description+--+-- If the 'Graphics.Vulkan.Core10.Queue.SubmitInfo'::@pNext@ chain does not+-- include this structure, the batch defaults to use counter pass index 0.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PerformanceQuerySubmitInfoKHR = PerformanceQuerySubmitInfoKHR+ { -- | @counterPassIndex@ /must/ be less than the number of counter passes+ -- required by any queries within the batch. The required number of counter+ -- passes for a performance query is obtained by calling+ -- 'getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'+ counterPassIndex :: Word32 }+ deriving (Typeable)+deriving instance Show PerformanceQuerySubmitInfoKHR++instance ToCStruct PerformanceQuerySubmitInfoKHR where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PerformanceQuerySubmitInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (counterPassIndex)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ f++instance FromCStruct PerformanceQuerySubmitInfoKHR where+ peekCStruct p = do+ counterPassIndex <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pure $ PerformanceQuerySubmitInfoKHR+ counterPassIndex++instance Storable PerformanceQuerySubmitInfoKHR where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PerformanceQuerySubmitInfoKHR where+ zero = PerformanceQuerySubmitInfoKHR+ zero+++data PerformanceCounterResultKHR+ = CounterInt32 Int32+ | CounterInt64 Int64+ | CounterUint32 Word32+ | CounterUint64 Word64+ | CounterFloat32 Float+ | CounterFloat64 Double+ deriving (Show)++instance ToCStruct PerformanceCounterResultKHR where+ withCStruct x f = allocaBytesAligned 8 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct :: Ptr PerformanceCounterResultKHR -> PerformanceCounterResultKHR -> IO a -> IO a+ pokeCStruct p = (. const) . runContT . \case+ CounterInt32 v -> lift $ poke (castPtr @_ @Int32 p) (v)+ CounterInt64 v -> lift $ poke (castPtr @_ @Int64 p) (v)+ CounterUint32 v -> lift $ poke (castPtr @_ @Word32 p) (v)+ CounterUint64 v -> lift $ poke (castPtr @_ @Word64 p) (v)+ CounterFloat32 v -> lift $ poke (castPtr @_ @CFloat p) (CFloat (v))+ CounterFloat64 v -> lift $ poke (castPtr @_ @CDouble p) (CDouble (v))+ pokeZeroCStruct :: Ptr PerformanceCounterResultKHR -> IO b -> IO b+ pokeZeroCStruct _ f = f+ cStructSize = 8+ cStructAlignment = 8++instance Zero PerformanceCounterResultKHR where+ zero = CounterInt64 zero+++-- | VkPerformanceCounterScopeKHR - Supported counter scope types+--+-- = See Also+--+-- 'PerformanceCounterKHR'+newtype PerformanceCounterScopeKHR = PerformanceCounterScopeKHR Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR' - the performance counter+-- scope is a single complete command buffer.+pattern PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = PerformanceCounterScopeKHR 0+-- | 'PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR' - the performance counter+-- scope is zero or more complete render passes. The performance query+-- containing the performance counter /must/ begin and end outside a render+-- pass instance.+pattern PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = PerformanceCounterScopeKHR 1+-- | 'PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR' - the performance counter scope+-- is zero or more commands.+pattern PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = PerformanceCounterScopeKHR 2+{-# complete PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR,+ PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR,+ PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR :: PerformanceCounterScopeKHR #-}++instance Show PerformanceCounterScopeKHR where+ showsPrec p = \case+ PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR -> showString "PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR"+ PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR -> showString "PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR"+ PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR -> showString "PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR"+ PerformanceCounterScopeKHR x -> showParen (p >= 11) (showString "PerformanceCounterScopeKHR " . showsPrec 11 x)++instance Read PerformanceCounterScopeKHR where+ readPrec = parens (choose [("PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR", pure PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR)+ , ("PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR", pure PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR)+ , ("PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR", pure PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR)]+ ++++ prec 10 (do+ expectP (Ident "PerformanceCounterScopeKHR")+ v <- step readPrec+ pure (PerformanceCounterScopeKHR v)))+++-- | VkPerformanceCounterUnitKHR - Supported counter unit types+--+-- = See Also+--+-- 'PerformanceCounterKHR'+newtype PerformanceCounterUnitKHR = PerformanceCounterUnitKHR Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'PERFORMANCE_COUNTER_UNIT_GENERIC_KHR' - the performance counter unit is+-- a generic data point.+pattern PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = PerformanceCounterUnitKHR 0+-- | 'PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR' - the performance counter unit+-- is a percentage (%).+pattern PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = PerformanceCounterUnitKHR 1+-- | 'PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR' - the performance counter+-- unit is a value of nanoseconds (ns).+pattern PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = PerformanceCounterUnitKHR 2+-- | 'PERFORMANCE_COUNTER_UNIT_BYTES_KHR' - the performance counter unit is a+-- value of bytes.+pattern PERFORMANCE_COUNTER_UNIT_BYTES_KHR = PerformanceCounterUnitKHR 3+-- | 'PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR' - the performance+-- counter unit is a value of bytes\/s.+pattern PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = PerformanceCounterUnitKHR 4+-- | 'PERFORMANCE_COUNTER_UNIT_KELVIN_KHR' - the performance counter unit is+-- a temperature reported in Kelvin.+pattern PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = PerformanceCounterUnitKHR 5+-- | 'PERFORMANCE_COUNTER_UNIT_WATTS_KHR' - the performance counter unit is a+-- value of watts (W).+pattern PERFORMANCE_COUNTER_UNIT_WATTS_KHR = PerformanceCounterUnitKHR 6+-- | 'PERFORMANCE_COUNTER_UNIT_VOLTS_KHR' - the performance counter unit is a+-- value of volts (V).+pattern PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = PerformanceCounterUnitKHR 7+-- | 'PERFORMANCE_COUNTER_UNIT_AMPS_KHR' - the performance counter unit is a+-- value of amps (A).+pattern PERFORMANCE_COUNTER_UNIT_AMPS_KHR = PerformanceCounterUnitKHR 8+-- | 'PERFORMANCE_COUNTER_UNIT_HERTZ_KHR' - the performance counter unit is a+-- value of hertz (Hz).+pattern PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = PerformanceCounterUnitKHR 9+-- | 'PERFORMANCE_COUNTER_UNIT_CYCLES_KHR' - the performance counter unit is+-- a value of cycles.+pattern PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = PerformanceCounterUnitKHR 10+{-# complete PERFORMANCE_COUNTER_UNIT_GENERIC_KHR,+ PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR,+ PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR,+ PERFORMANCE_COUNTER_UNIT_BYTES_KHR,+ PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR,+ PERFORMANCE_COUNTER_UNIT_KELVIN_KHR,+ PERFORMANCE_COUNTER_UNIT_WATTS_KHR,+ PERFORMANCE_COUNTER_UNIT_VOLTS_KHR,+ PERFORMANCE_COUNTER_UNIT_AMPS_KHR,+ PERFORMANCE_COUNTER_UNIT_HERTZ_KHR,+ PERFORMANCE_COUNTER_UNIT_CYCLES_KHR :: PerformanceCounterUnitKHR #-}++instance Show PerformanceCounterUnitKHR where+ showsPrec p = \case+ PERFORMANCE_COUNTER_UNIT_GENERIC_KHR -> showString "PERFORMANCE_COUNTER_UNIT_GENERIC_KHR"+ PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR -> showString "PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR"+ PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR -> showString "PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR"+ PERFORMANCE_COUNTER_UNIT_BYTES_KHR -> showString "PERFORMANCE_COUNTER_UNIT_BYTES_KHR"+ PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR -> showString "PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR"+ PERFORMANCE_COUNTER_UNIT_KELVIN_KHR -> showString "PERFORMANCE_COUNTER_UNIT_KELVIN_KHR"+ PERFORMANCE_COUNTER_UNIT_WATTS_KHR -> showString "PERFORMANCE_COUNTER_UNIT_WATTS_KHR"+ PERFORMANCE_COUNTER_UNIT_VOLTS_KHR -> showString "PERFORMANCE_COUNTER_UNIT_VOLTS_KHR"+ PERFORMANCE_COUNTER_UNIT_AMPS_KHR -> showString "PERFORMANCE_COUNTER_UNIT_AMPS_KHR"+ PERFORMANCE_COUNTER_UNIT_HERTZ_KHR -> showString "PERFORMANCE_COUNTER_UNIT_HERTZ_KHR"+ PERFORMANCE_COUNTER_UNIT_CYCLES_KHR -> showString "PERFORMANCE_COUNTER_UNIT_CYCLES_KHR"+ PerformanceCounterUnitKHR x -> showParen (p >= 11) (showString "PerformanceCounterUnitKHR " . showsPrec 11 x)++instance Read PerformanceCounterUnitKHR where+ readPrec = parens (choose [("PERFORMANCE_COUNTER_UNIT_GENERIC_KHR", pure PERFORMANCE_COUNTER_UNIT_GENERIC_KHR)+ , ("PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR", pure PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR)+ , ("PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR", pure PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR)+ , ("PERFORMANCE_COUNTER_UNIT_BYTES_KHR", pure PERFORMANCE_COUNTER_UNIT_BYTES_KHR)+ , ("PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR", pure PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR)+ , ("PERFORMANCE_COUNTER_UNIT_KELVIN_KHR", pure PERFORMANCE_COUNTER_UNIT_KELVIN_KHR)+ , ("PERFORMANCE_COUNTER_UNIT_WATTS_KHR", pure PERFORMANCE_COUNTER_UNIT_WATTS_KHR)+ , ("PERFORMANCE_COUNTER_UNIT_VOLTS_KHR", pure PERFORMANCE_COUNTER_UNIT_VOLTS_KHR)+ , ("PERFORMANCE_COUNTER_UNIT_AMPS_KHR", pure PERFORMANCE_COUNTER_UNIT_AMPS_KHR)+ , ("PERFORMANCE_COUNTER_UNIT_HERTZ_KHR", pure PERFORMANCE_COUNTER_UNIT_HERTZ_KHR)+ , ("PERFORMANCE_COUNTER_UNIT_CYCLES_KHR", pure PERFORMANCE_COUNTER_UNIT_CYCLES_KHR)]+ ++++ prec 10 (do+ expectP (Ident "PerformanceCounterUnitKHR")+ v <- step readPrec+ pure (PerformanceCounterUnitKHR v)))+++-- | VkPerformanceCounterStorageKHR - Supported counter storage types+--+-- = See Also+--+-- 'PerformanceCounterKHR'+newtype PerformanceCounterStorageKHR = PerformanceCounterStorageKHR Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'PERFORMANCE_COUNTER_STORAGE_INT32_KHR' - the performance counter+-- storage is a 32-bit signed integer.+pattern PERFORMANCE_COUNTER_STORAGE_INT32_KHR = PerformanceCounterStorageKHR 0+-- | 'PERFORMANCE_COUNTER_STORAGE_INT64_KHR' - the performance counter+-- storage is a 64-bit signed integer.+pattern PERFORMANCE_COUNTER_STORAGE_INT64_KHR = PerformanceCounterStorageKHR 1+-- | 'PERFORMANCE_COUNTER_STORAGE_UINT32_KHR' - the performance counter+-- storage is a 32-bit unsigned integer.+pattern PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = PerformanceCounterStorageKHR 2+-- | 'PERFORMANCE_COUNTER_STORAGE_UINT64_KHR' - the performance counter+-- storage is a 64-bit unsigned integer.+pattern PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = PerformanceCounterStorageKHR 3+-- | 'PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR' - the performance counter+-- storage is a 32-bit floating-point.+pattern PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = PerformanceCounterStorageKHR 4+-- | 'PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR' - the performance counter+-- storage is a 64-bit floating-point.+pattern PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = PerformanceCounterStorageKHR 5+{-# complete PERFORMANCE_COUNTER_STORAGE_INT32_KHR,+ PERFORMANCE_COUNTER_STORAGE_INT64_KHR,+ PERFORMANCE_COUNTER_STORAGE_UINT32_KHR,+ PERFORMANCE_COUNTER_STORAGE_UINT64_KHR,+ PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR,+ PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR :: PerformanceCounterStorageKHR #-}++instance Show PerformanceCounterStorageKHR where+ showsPrec p = \case+ PERFORMANCE_COUNTER_STORAGE_INT32_KHR -> showString "PERFORMANCE_COUNTER_STORAGE_INT32_KHR"+ PERFORMANCE_COUNTER_STORAGE_INT64_KHR -> showString "PERFORMANCE_COUNTER_STORAGE_INT64_KHR"+ PERFORMANCE_COUNTER_STORAGE_UINT32_KHR -> showString "PERFORMANCE_COUNTER_STORAGE_UINT32_KHR"+ PERFORMANCE_COUNTER_STORAGE_UINT64_KHR -> showString "PERFORMANCE_COUNTER_STORAGE_UINT64_KHR"+ PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR -> showString "PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR"+ PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR -> showString "PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR"+ PerformanceCounterStorageKHR x -> showParen (p >= 11) (showString "PerformanceCounterStorageKHR " . showsPrec 11 x)++instance Read PerformanceCounterStorageKHR where+ readPrec = parens (choose [("PERFORMANCE_COUNTER_STORAGE_INT32_KHR", pure PERFORMANCE_COUNTER_STORAGE_INT32_KHR)+ , ("PERFORMANCE_COUNTER_STORAGE_INT64_KHR", pure PERFORMANCE_COUNTER_STORAGE_INT64_KHR)+ , ("PERFORMANCE_COUNTER_STORAGE_UINT32_KHR", pure PERFORMANCE_COUNTER_STORAGE_UINT32_KHR)+ , ("PERFORMANCE_COUNTER_STORAGE_UINT64_KHR", pure PERFORMANCE_COUNTER_STORAGE_UINT64_KHR)+ , ("PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR", pure PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR)+ , ("PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR", pure PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR)]+ ++++ prec 10 (do+ expectP (Ident "PerformanceCounterStorageKHR")+ v <- step readPrec+ pure (PerformanceCounterStorageKHR v)))+++-- | VkPerformanceCounterDescriptionFlagBitsKHR - Bitmask specifying usage+-- behavior for a counter+--+-- = See Also+--+-- 'PerformanceCounterDescriptionFlagsKHR'+newtype PerformanceCounterDescriptionFlagBitsKHR = PerformanceCounterDescriptionFlagBitsKHR Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR' specifies+-- that recording the counter /may/ have a noticeable performance impact.+pattern PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = PerformanceCounterDescriptionFlagBitsKHR 0x00000001+-- | 'PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR' specifies+-- that concurrently recording the counter while other submitted command+-- buffers are running /may/ impact the accuracy of the recording.+pattern PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = PerformanceCounterDescriptionFlagBitsKHR 0x00000002++type PerformanceCounterDescriptionFlagsKHR = PerformanceCounterDescriptionFlagBitsKHR++instance Show PerformanceCounterDescriptionFlagBitsKHR where+ showsPrec p = \case+ PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR -> showString "PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR"+ PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR -> showString "PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR"+ PerformanceCounterDescriptionFlagBitsKHR x -> showParen (p >= 11) (showString "PerformanceCounterDescriptionFlagBitsKHR 0x" . showHex x)++instance Read PerformanceCounterDescriptionFlagBitsKHR where+ readPrec = parens (choose [("PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR", pure PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR)+ , ("PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR", pure PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR)]+ ++++ prec 10 (do+ expectP (Ident "PerformanceCounterDescriptionFlagBitsKHR")+ v <- step readPrec+ pure (PerformanceCounterDescriptionFlagBitsKHR v)))+++-- | VkAcquireProfilingLockFlagBitsKHR - Reserved for future use+--+-- = See Also+--+-- 'AcquireProfilingLockFlagsKHR'+newtype AcquireProfilingLockFlagBitsKHR = AcquireProfilingLockFlagBitsKHR Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++type AcquireProfilingLockFlagsKHR = AcquireProfilingLockFlagBitsKHR++instance Show AcquireProfilingLockFlagBitsKHR where+ showsPrec p = \case+ AcquireProfilingLockFlagBitsKHR x -> showParen (p >= 11) (showString "AcquireProfilingLockFlagBitsKHR 0x" . showHex x)++instance Read AcquireProfilingLockFlagBitsKHR where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "AcquireProfilingLockFlagBitsKHR")+ v <- step readPrec+ pure (AcquireProfilingLockFlagBitsKHR v)))+++type KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION"+pattern KHR_PERFORMANCE_QUERY_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1+++type KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query"++-- No documentation found for TopLevel "VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME"+pattern KHR_PERFORMANCE_QUERY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_performance_query.hs-boot view
@@ -0,0 +1,68 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_performance_query ( AcquireProfilingLockInfoKHR+ , PerformanceCounterDescriptionKHR+ , PerformanceCounterKHR+ , PerformanceQuerySubmitInfoKHR+ , PhysicalDevicePerformanceQueryFeaturesKHR+ , PhysicalDevicePerformanceQueryPropertiesKHR+ , QueryPoolPerformanceCreateInfoKHR+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data AcquireProfilingLockInfoKHR++instance ToCStruct AcquireProfilingLockInfoKHR+instance Show AcquireProfilingLockInfoKHR++instance FromCStruct AcquireProfilingLockInfoKHR+++data PerformanceCounterDescriptionKHR++instance ToCStruct PerformanceCounterDescriptionKHR+instance Show PerformanceCounterDescriptionKHR++instance FromCStruct PerformanceCounterDescriptionKHR+++data PerformanceCounterKHR++instance ToCStruct PerformanceCounterKHR+instance Show PerformanceCounterKHR++instance FromCStruct PerformanceCounterKHR+++data PerformanceQuerySubmitInfoKHR++instance ToCStruct PerformanceQuerySubmitInfoKHR+instance Show PerformanceQuerySubmitInfoKHR++instance FromCStruct PerformanceQuerySubmitInfoKHR+++data PhysicalDevicePerformanceQueryFeaturesKHR++instance ToCStruct PhysicalDevicePerformanceQueryFeaturesKHR+instance Show PhysicalDevicePerformanceQueryFeaturesKHR++instance FromCStruct PhysicalDevicePerformanceQueryFeaturesKHR+++data PhysicalDevicePerformanceQueryPropertiesKHR++instance ToCStruct PhysicalDevicePerformanceQueryPropertiesKHR+instance Show PhysicalDevicePerformanceQueryPropertiesKHR++instance FromCStruct PhysicalDevicePerformanceQueryPropertiesKHR+++data QueryPoolPerformanceCreateInfoKHR++instance ToCStruct QueryPoolPerformanceCreateInfoKHR+instance Show QueryPoolPerformanceCreateInfoKHR++instance FromCStruct QueryPoolPerformanceCreateInfoKHR+
+ src/Graphics/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs view
@@ -0,0 +1,947 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties ( getPipelineExecutablePropertiesKHR+ , getPipelineExecutableStatisticsKHR+ , getPipelineExecutableInternalRepresentationsKHR+ , PhysicalDevicePipelineExecutablePropertiesFeaturesKHR(..)+ , PipelineInfoKHR(..)+ , PipelineExecutablePropertiesKHR(..)+ , PipelineExecutableInfoKHR(..)+ , PipelineExecutableStatisticKHR(..)+ , PipelineExecutableInternalRepresentationKHR(..)+ , PipelineExecutableStatisticValueKHR(..)+ , peekPipelineExecutableStatisticValueKHR+ , PipelineExecutableStatisticFormatKHR( PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR+ , PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR+ , PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR+ , PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR+ , ..+ )+ , KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION+ , pattern KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION+ , KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME+ , pattern KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.ByteString (packCString)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Control.Monad.Trans.Cont (runContT)+import Data.Vector (generateM)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.C.Types (CChar)+import Foreign.C.Types (CDouble)+import Foreign.C.Types (CDouble(CDouble))+import Foreign.C.Types (CSize)+import Foreign.C.Types (CSize(CSize))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Data.Int (Int32)+import Data.Int (Int64)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Data.Word (Word64)+import Text.Read.Lex (Lexeme(Ident))+import Data.ByteString (ByteString)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import qualified Data.Vector.Storable.Sized (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)+import Graphics.Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetPipelineExecutableInternalRepresentationsKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetPipelineExecutablePropertiesKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetPipelineExecutableStatisticsKHR))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.APIConstants (MAX_DESCRIPTION_SIZE)+import Graphics.Vulkan.Core10.Handles (Pipeline)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPipelineExecutablePropertiesKHR+ :: FunPtr (Ptr Device_T -> Ptr PipelineInfoKHR -> Ptr Word32 -> Ptr PipelineExecutablePropertiesKHR -> IO Result) -> Ptr Device_T -> Ptr PipelineInfoKHR -> Ptr Word32 -> Ptr PipelineExecutablePropertiesKHR -> IO Result++-- | vkGetPipelineExecutablePropertiesKHR - Get the executables associated+-- with a pipeline+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the device that created+-- the pipeline.+--+-- - @pPipelineInfo@ describes the pipeline being queried.+--+-- - @pExecutableCount@ is a pointer to an integer related to the number+-- of pipeline executables available or queried, as described below.+--+-- - @pProperties@ is either @NULL@ or a pointer to an array of+-- 'PipelineExecutablePropertiesKHR' structures.+--+-- = Description+--+-- If @pProperties@ is @NULL@, then the number of executables associated+-- with the pipeline is returned in @pExecutableCount@. Otherwise,+-- @pExecutableCount@ /must/ point to a variable set by the user to the+-- number of elements in the @pProperties@ array, and on return the+-- variable is overwritten with the number of structures actually written+-- to @pProperties@. If @pExecutableCount@ is less than the number of+-- executables associated with the pipeline, at most @pExecutableCount@+-- structures will be written and 'getPipelineExecutablePropertiesKHR' will+-- return 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'.+--+-- == Valid Usage+--+-- - <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineExecutableInfo pipelineExecutableInfo>+-- /must/ be enabled.+--+-- - 'Graphics.Vulkan.Core10.Handles.Pipeline' member of @pPipelineInfo@+-- /must/ have been created with+-- 'Graphics.Vulkan.Core10.Handles.Device'.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pPipelineInfo@ /must/ be a valid pointer to a valid+-- 'PipelineInfoKHR' structure+--+-- - @pExecutableCount@ /must/ be a valid pointer to a @uint32_t@ value+--+-- - If the value referenced by @pExecutableCount@ is not @0@, and+-- @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer+-- to an array of @pExecutableCount@ 'PipelineExecutablePropertiesKHR'+-- structures+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'PipelineExecutablePropertiesKHR', 'PipelineInfoKHR'+getPipelineExecutablePropertiesKHR :: Device -> PipelineInfoKHR -> IO (Result, ("properties" ::: Vector PipelineExecutablePropertiesKHR))+getPipelineExecutablePropertiesKHR device pipelineInfo = evalContT $ do+ let vkGetPipelineExecutablePropertiesKHR' = mkVkGetPipelineExecutablePropertiesKHR (pVkGetPipelineExecutablePropertiesKHR (deviceCmds (device :: Device)))+ let device' = deviceHandle (device)+ pPipelineInfo <- ContT $ withCStruct (pipelineInfo)+ pPExecutableCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkGetPipelineExecutablePropertiesKHR' device' pPipelineInfo (pPExecutableCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pExecutableCount <- lift $ peek @Word32 pPExecutableCount+ pPProperties <- ContT $ bracket (callocBytes @PipelineExecutablePropertiesKHR ((fromIntegral (pExecutableCount)) * 536)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPProperties `advancePtrBytes` (i * 536) :: Ptr PipelineExecutablePropertiesKHR) . ($ ())) [0..(fromIntegral (pExecutableCount)) - 1]+ r' <- lift $ vkGetPipelineExecutablePropertiesKHR' device' pPipelineInfo (pPExecutableCount) ((pPProperties))+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pExecutableCount' <- lift $ peek @Word32 pPExecutableCount+ pProperties' <- lift $ generateM (fromIntegral (pExecutableCount')) (\i -> peekCStruct @PipelineExecutablePropertiesKHR (((pPProperties) `advancePtrBytes` (536 * (i)) :: Ptr PipelineExecutablePropertiesKHR)))+ pure $ ((r'), pProperties')+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPipelineExecutableStatisticsKHR+ :: FunPtr (Ptr Device_T -> Ptr PipelineExecutableInfoKHR -> Ptr Word32 -> Ptr PipelineExecutableStatisticKHR -> IO Result) -> Ptr Device_T -> Ptr PipelineExecutableInfoKHR -> Ptr Word32 -> Ptr PipelineExecutableStatisticKHR -> IO Result++-- | vkGetPipelineExecutableStatisticsKHR - Get compile time statistics+-- associated with a pipeline executable+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the device that created+-- the pipeline.+--+-- - @pExecutableInfo@ describes the pipeline executable being queried.+--+-- - @pStatisticCount@ is a pointer to an integer related to the number+-- of statistics available or queried, as described below.+--+-- - @pStatistics@ is either @NULL@ or a pointer to an array of+-- 'PipelineExecutableStatisticKHR' structures.+--+-- = Description+--+-- If @pStatistics@ is @NULL@, then the number of statistics associated+-- with the pipeline executable is returned in @pStatisticCount@.+-- Otherwise, @pStatisticCount@ /must/ point to a variable set by the user+-- to the number of elements in the @pStatistics@ array, and on return the+-- variable is overwritten with the number of structures actually written+-- to @pStatistics@. If @pStatisticCount@ is less than the number of+-- statistics associated with the pipeline executable, at most+-- @pStatisticCount@ structures will be written and+-- 'getPipelineExecutableStatisticsKHR' will return+-- 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'.+--+-- == Valid Usage+--+-- - <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineExecutableInfo pipelineExecutableInfo>+-- /must/ be enabled.+--+-- - 'Graphics.Vulkan.Core10.Handles.Pipeline' member of+-- @pExecutableInfo@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Handles.Device'.+--+-- - 'Graphics.Vulkan.Core10.Handles.Pipeline' member of+-- @pExecutableInfo@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR'+-- set in the 'Graphics.Vulkan.Core10.BaseType.Flags' field of+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' or+-- 'Graphics.Vulkan.Core10.Pipeline.ComputePipelineCreateInfo'.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pExecutableInfo@ /must/ be a valid pointer to a valid+-- 'PipelineExecutableInfoKHR' structure+--+-- - @pStatisticCount@ /must/ be a valid pointer to a @uint32_t@ value+--+-- - If the value referenced by @pStatisticCount@ is not @0@, and+-- @pStatistics@ is not @NULL@, @pStatistics@ /must/ be a valid pointer+-- to an array of @pStatisticCount@ 'PipelineExecutableStatisticKHR'+-- structures+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device', 'PipelineExecutableInfoKHR',+-- 'PipelineExecutableStatisticKHR'+getPipelineExecutableStatisticsKHR :: Device -> PipelineExecutableInfoKHR -> IO (Result, ("statistics" ::: Vector PipelineExecutableStatisticKHR))+getPipelineExecutableStatisticsKHR device executableInfo = evalContT $ do+ let vkGetPipelineExecutableStatisticsKHR' = mkVkGetPipelineExecutableStatisticsKHR (pVkGetPipelineExecutableStatisticsKHR (deviceCmds (device :: Device)))+ let device' = deviceHandle (device)+ pExecutableInfo <- ContT $ withCStruct (executableInfo)+ pPStatisticCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkGetPipelineExecutableStatisticsKHR' device' pExecutableInfo (pPStatisticCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pStatisticCount <- lift $ peek @Word32 pPStatisticCount+ pPStatistics <- ContT $ bracket (callocBytes @PipelineExecutableStatisticKHR ((fromIntegral (pStatisticCount)) * 544)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPStatistics `advancePtrBytes` (i * 544) :: Ptr PipelineExecutableStatisticKHR) . ($ ())) [0..(fromIntegral (pStatisticCount)) - 1]+ r' <- lift $ vkGetPipelineExecutableStatisticsKHR' device' pExecutableInfo (pPStatisticCount) ((pPStatistics))+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pStatisticCount' <- lift $ peek @Word32 pPStatisticCount+ pStatistics' <- lift $ generateM (fromIntegral (pStatisticCount')) (\i -> peekCStruct @PipelineExecutableStatisticKHR (((pPStatistics) `advancePtrBytes` (544 * (i)) :: Ptr PipelineExecutableStatisticKHR)))+ pure $ ((r'), pStatistics')+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPipelineExecutableInternalRepresentationsKHR+ :: FunPtr (Ptr Device_T -> Ptr PipelineExecutableInfoKHR -> Ptr Word32 -> Ptr PipelineExecutableInternalRepresentationKHR -> IO Result) -> Ptr Device_T -> Ptr PipelineExecutableInfoKHR -> Ptr Word32 -> Ptr PipelineExecutableInternalRepresentationKHR -> IO Result++-- | vkGetPipelineExecutableInternalRepresentationsKHR - Get internal+-- representations of the pipeline executable+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the device that created+-- the pipeline.+--+-- - @pExecutableInfo@ describes the pipeline executable being queried.+--+-- - @pInternalRepresentationCount@ is a pointer to an integer related to+-- the number of internal representations available or queried, as+-- described below.+--+-- - @pInternalRepresentations@ is either @NULL@ or a pointer to an array+-- of 'PipelineExecutableInternalRepresentationKHR' structures.+--+-- = Description+--+-- If @pInternalRepresentations@ is @NULL@, then the number of internal+-- representations associated with the pipeline executable is returned in+-- @pInternalRepresentationCount@. Otherwise,+-- @pInternalRepresentationCount@ /must/ point to a variable set by the+-- user to the number of elements in the @pInternalRepresentations@ array,+-- and on return the variable is overwritten with the number of structures+-- actually written to @pInternalRepresentations@. If+-- @pInternalRepresentationCount@ is less than the number of internal+-- representations associated with the pipeline executable, at most+-- @pInternalRepresentationCount@ structures will be written and+-- 'getPipelineExecutableInternalRepresentationsKHR' will return+-- 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'.+--+-- While the details of the internal representations remain implementation+-- dependent, the implementation /should/ order the internal+-- representations in the order in which they occur in the compile pipeline+-- with the final shader assembly (if any) last.+--+-- == Valid Usage+--+-- - <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineExecutableInfo pipelineExecutableInfo>+-- /must/ be enabled.+--+-- - 'Graphics.Vulkan.Core10.Handles.Pipeline' member of+-- @pExecutableInfo@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Handles.Device'.+--+-- - 'Graphics.Vulkan.Core10.Handles.Pipeline' member of+-- @pExecutableInfo@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR'+-- set in the 'Graphics.Vulkan.Core10.BaseType.Flags' field of+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' or+-- 'Graphics.Vulkan.Core10.Pipeline.ComputePipelineCreateInfo'.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pExecutableInfo@ /must/ be a valid pointer to a valid+-- 'PipelineExecutableInfoKHR' structure+--+-- - @pInternalRepresentationCount@ /must/ be a valid pointer to a+-- @uint32_t@ value+--+-- - If the value referenced by @pInternalRepresentationCount@ is not+-- @0@, and @pInternalRepresentations@ is not @NULL@,+-- @pInternalRepresentations@ /must/ be a valid pointer to an array of+-- @pInternalRepresentationCount@+-- 'PipelineExecutableInternalRepresentationKHR' structures+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device', 'PipelineExecutableInfoKHR',+-- 'PipelineExecutableInternalRepresentationKHR'+getPipelineExecutableInternalRepresentationsKHR :: Device -> PipelineExecutableInfoKHR -> IO (Result, ("internalRepresentations" ::: Vector PipelineExecutableInternalRepresentationKHR))+getPipelineExecutableInternalRepresentationsKHR device executableInfo = evalContT $ do+ let vkGetPipelineExecutableInternalRepresentationsKHR' = mkVkGetPipelineExecutableInternalRepresentationsKHR (pVkGetPipelineExecutableInternalRepresentationsKHR (deviceCmds (device :: Device)))+ let device' = deviceHandle (device)+ pExecutableInfo <- ContT $ withCStruct (executableInfo)+ pPInternalRepresentationCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkGetPipelineExecutableInternalRepresentationsKHR' device' pExecutableInfo (pPInternalRepresentationCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pInternalRepresentationCount <- lift $ peek @Word32 pPInternalRepresentationCount+ pPInternalRepresentations <- ContT $ bracket (callocBytes @PipelineExecutableInternalRepresentationKHR ((fromIntegral (pInternalRepresentationCount)) * 552)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPInternalRepresentations `advancePtrBytes` (i * 552) :: Ptr PipelineExecutableInternalRepresentationKHR) . ($ ())) [0..(fromIntegral (pInternalRepresentationCount)) - 1]+ r' <- lift $ vkGetPipelineExecutableInternalRepresentationsKHR' device' pExecutableInfo (pPInternalRepresentationCount) ((pPInternalRepresentations))+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pInternalRepresentationCount' <- lift $ peek @Word32 pPInternalRepresentationCount+ pInternalRepresentations' <- lift $ generateM (fromIntegral (pInternalRepresentationCount')) (\i -> peekCStruct @PipelineExecutableInternalRepresentationKHR (((pPInternalRepresentations) `advancePtrBytes` (552 * (i)) :: Ptr PipelineExecutableInternalRepresentationKHR)))+ pure $ ((r'), pInternalRepresentations')+++-- | VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR - Structure+-- describing whether pipeline executable properties are available+--+-- = Members+--+-- The members of the+-- 'PhysicalDevicePipelineExecutablePropertiesFeaturesKHR' structure+-- describe the following features:+--+-- = Description+--+-- If the 'PhysicalDevicePipelineExecutablePropertiesFeaturesKHR' structure+-- is included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDevicePipelineExecutablePropertiesFeaturesKHR' /can/ also be+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDevicePipelineExecutablePropertiesFeaturesKHR = PhysicalDevicePipelineExecutablePropertiesFeaturesKHR+ { -- | @pipelineExecutableInfo@ indicates that the implementation supports+ -- reporting properties and statistics about the executables associated+ -- with a compiled pipeline.+ pipelineExecutableInfo :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDevicePipelineExecutablePropertiesFeaturesKHR++instance ToCStruct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDevicePipelineExecutablePropertiesFeaturesKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (pipelineExecutableInfo))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR where+ peekCStruct p = do+ pipelineExecutableInfo <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDevicePipelineExecutablePropertiesFeaturesKHR+ (bool32ToBool pipelineExecutableInfo)++instance Storable PhysicalDevicePipelineExecutablePropertiesFeaturesKHR where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDevicePipelineExecutablePropertiesFeaturesKHR where+ zero = PhysicalDevicePipelineExecutablePropertiesFeaturesKHR+ zero+++-- | VkPipelineInfoKHR - Structure describing a pipeline+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Pipeline',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPipelineExecutablePropertiesKHR'+data PipelineInfoKHR = PipelineInfoKHR+ { -- | 'Graphics.Vulkan.Core10.Handles.Pipeline' /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Handles.Pipeline' handle+ pipeline :: Pipeline }+ deriving (Typeable)+deriving instance Show PipelineInfoKHR++instance ToCStruct PipelineInfoKHR where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Pipeline)) (pipeline)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Pipeline)) (zero)+ f++instance FromCStruct PipelineInfoKHR where+ peekCStruct p = do+ pipeline <- peek @Pipeline ((p `plusPtr` 16 :: Ptr Pipeline))+ pure $ PipelineInfoKHR+ pipeline++instance Storable PipelineInfoKHR where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineInfoKHR where+ zero = PipelineInfoKHR+ zero+++-- | VkPipelineExecutablePropertiesKHR - Structure describing a pipeline+-- executable+--+-- = Description+--+-- The @stages@ field /may/ be zero or it /may/ contain one or more bits+-- describing the stages principally used to compile this pipeline. Not all+-- implementations have a 1:1 mapping between shader stages and pipeline+-- executables and some implementations /may/ reduce a given shader stage+-- to fixed function hardware programming such that no executable is+-- available. No guarantees are provided about the mapping between shader+-- stages and pipeline executables and @stages@ /should/ be considered a+-- best effort hint. Because the application /cannot/ rely on the @stages@+-- field to provide an exact description, @name@ and @description@ provide+-- a human readable name and description which more accurately describes+-- the given pipeline executable.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPipelineExecutablePropertiesKHR'+data PipelineExecutablePropertiesKHR = PipelineExecutablePropertiesKHR+ { -- | @stages@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits'+ -- indicating which shader stages (if any) were principally used as inputs+ -- to compile this pipeline executable.+ stages :: ShaderStageFlags+ , -- | @name@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.MAX_DESCRIPTION_SIZE' @char@+ -- containing a null-terminated UTF-8 string which is a short human+ -- readable name for this executable.+ name :: ByteString+ , -- | @description@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.MAX_DESCRIPTION_SIZE' @char@+ -- containing a null-terminated UTF-8 string which is a human readable+ -- description for this executable.+ description :: ByteString+ , -- | @subgroupSize@ is the subgroup size with which this executable is+ -- dispatched.+ subgroupSize :: Word32+ }+ deriving (Typeable)+deriving instance Show PipelineExecutablePropertiesKHR++instance ToCStruct PipelineExecutablePropertiesKHR where+ withCStruct x f = allocaBytesAligned 536 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineExecutablePropertiesKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (stages)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (name)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (description)+ poke ((p `plusPtr` 532 :: Ptr Word32)) (subgroupSize)+ f+ cStructSize = 536+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (zero)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)+ poke ((p `plusPtr` 532 :: Ptr Word32)) (zero)+ f++instance FromCStruct PipelineExecutablePropertiesKHR where+ peekCStruct p = do+ stages <- peek @ShaderStageFlags ((p `plusPtr` 16 :: Ptr ShaderStageFlags))+ name <- packCString (lowerArrayPtr ((p `plusPtr` 20 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))+ description <- packCString (lowerArrayPtr ((p `plusPtr` 276 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))+ subgroupSize <- peek @Word32 ((p `plusPtr` 532 :: Ptr Word32))+ pure $ PipelineExecutablePropertiesKHR+ stages name description subgroupSize++instance Storable PipelineExecutablePropertiesKHR where+ sizeOf ~_ = 536+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineExecutablePropertiesKHR where+ zero = PipelineExecutablePropertiesKHR+ zero+ mempty+ mempty+ zero+++-- | VkPipelineExecutableInfoKHR - Structure describing a pipeline executable+-- to query for associated statistics or internal representations+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Pipeline',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPipelineExecutableInternalRepresentationsKHR',+-- 'getPipelineExecutableStatisticsKHR'+data PipelineExecutableInfoKHR = PipelineExecutableInfoKHR+ { -- | 'Graphics.Vulkan.Core10.Handles.Pipeline' /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Handles.Pipeline' handle+ pipeline :: Pipeline+ , -- | @executableIndex@ /must/ be less than the number of executables+ -- associated with 'Graphics.Vulkan.Core10.Handles.Pipeline' as returned in+ -- the @pExecutableCount@ parameter of+ -- 'getPipelineExecutablePropertiesKHR'.+ executableIndex :: Word32+ }+ deriving (Typeable)+deriving instance Show PipelineExecutableInfoKHR++instance ToCStruct PipelineExecutableInfoKHR where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineExecutableInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Pipeline)) (pipeline)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (executableIndex)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Pipeline)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ f++instance FromCStruct PipelineExecutableInfoKHR where+ peekCStruct p = do+ pipeline <- peek @Pipeline ((p `plusPtr` 16 :: Ptr Pipeline))+ executableIndex <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ pure $ PipelineExecutableInfoKHR+ pipeline executableIndex++instance Storable PipelineExecutableInfoKHR where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineExecutableInfoKHR where+ zero = PipelineExecutableInfoKHR+ zero+ zero+++-- | VkPipelineExecutableStatisticKHR - Structure describing a compile-time+-- pipeline executable statistic+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'PipelineExecutableStatisticFormatKHR',+-- 'PipelineExecutableStatisticValueKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPipelineExecutableStatisticsKHR'+data PipelineExecutableStatisticKHR = PipelineExecutableStatisticKHR+ { -- | @name@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.MAX_DESCRIPTION_SIZE' @char@+ -- containing a null-terminated UTF-8 string which is a short human+ -- readable name for this statistic.+ name :: ByteString+ , -- | @description@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.MAX_DESCRIPTION_SIZE' @char@+ -- containing a null-terminated UTF-8 string which is a human readable+ -- description for this statistic.+ description :: ByteString+ , -- | 'Graphics.Vulkan.Core10.Enums.Format.Format' is a+ -- 'PipelineExecutableStatisticFormatKHR' value specifying the format of+ -- the data found in @value@.+ format :: PipelineExecutableStatisticFormatKHR+ , -- | @value@ is the value of this statistic.+ value :: PipelineExecutableStatisticValueKHR+ }+ deriving (Typeable)+deriving instance Show PipelineExecutableStatisticKHR++instance ToCStruct PipelineExecutableStatisticKHR where+ withCStruct x f = allocaBytesAligned 544 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineExecutableStatisticKHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (name)+ lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (description)+ lift $ poke ((p `plusPtr` 528 :: Ptr PipelineExecutableStatisticFormatKHR)) (format)+ ContT $ pokeCStruct ((p `plusPtr` 536 :: Ptr PipelineExecutableStatisticValueKHR)) (value) . ($ ())+ lift $ f+ cStructSize = 544+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)+ lift $ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)+ lift $ poke ((p `plusPtr` 528 :: Ptr PipelineExecutableStatisticFormatKHR)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 536 :: Ptr PipelineExecutableStatisticValueKHR)) (zero) . ($ ())+ lift $ f++instance FromCStruct PipelineExecutableStatisticKHR where+ peekCStruct p = do+ name <- packCString (lowerArrayPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))+ description <- packCString (lowerArrayPtr ((p `plusPtr` 272 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))+ format <- peek @PipelineExecutableStatisticFormatKHR ((p `plusPtr` 528 :: Ptr PipelineExecutableStatisticFormatKHR))+ value <- peekPipelineExecutableStatisticValueKHR format ((p `plusPtr` 536 :: Ptr PipelineExecutableStatisticValueKHR))+ pure $ PipelineExecutableStatisticKHR+ name description format value++instance Zero PipelineExecutableStatisticKHR where+ zero = PipelineExecutableStatisticKHR+ mempty+ mempty+ zero+ zero+++-- | VkPipelineExecutableInternalRepresentationKHR - Structure describing the+-- textual form of a pipeline executable internal representation+--+-- = Description+--+-- If @pData@ is @NULL@, then the size, in bytes, of the internal+-- representation data is returned in @dataSize@. Otherwise, @dataSize@+-- must be the size of the buffer, in bytes, pointed to by @pData@ and on+-- return @dataSize@ is overwritten with the number of bytes of data+-- actually written to @pData@ including any trailing null character. If+-- @dataSize@ is less than the size, in bytes, of the internal+-- representation data, at most @dataSize@ bytes of data will be written to+-- @pData@ and 'getPipelineExecutableInternalRepresentationsKHR' will+-- return 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'. If @isText@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE' and @pData@ is not @NULL@ and+-- @dataSize@ is not zero, the last byte written to @pData@ will be a null+-- character.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPipelineExecutableInternalRepresentationsKHR'+data PipelineExecutableInternalRepresentationKHR = PipelineExecutableInternalRepresentationKHR+ { -- | @name@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.MAX_DESCRIPTION_SIZE' @char@+ -- containing a null-terminated UTF-8 string which is a short human+ -- readable name for this internal representation.+ name :: ByteString+ , -- | @description@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.MAX_DESCRIPTION_SIZE' @char@+ -- containing a null-terminated UTF-8 string which is a human readable+ -- description for this internal representation.+ description :: ByteString+ , -- | @isText@ specifies whether the returned data is text or opaque data. If+ -- @isText@ is 'Graphics.Vulkan.Core10.BaseType.TRUE' then the data+ -- returned in @pData@ is text and is guaranteed to be a null-terminated+ -- UTF-8 string.+ isText :: Bool+ , -- | @dataSize@ is an integer related to the size, in bytes, of the internal+ -- representation data, as described below.+ dataSize :: Word64+ , -- | @pData@ is either @NULL@ or a pointer to an block of data into which the+ -- implementation will write the textual form of the internal+ -- representation.+ data' :: Ptr ()+ }+ deriving (Typeable)+deriving instance Show PipelineExecutableInternalRepresentationKHR++instance ToCStruct PipelineExecutableInternalRepresentationKHR where+ withCStruct x f = allocaBytesAligned 552 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineExecutableInternalRepresentationKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (name)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (description)+ poke ((p `plusPtr` 528 :: Ptr Bool32)) (boolToBool32 (isText))+ poke ((p `plusPtr` 536 :: Ptr CSize)) (CSize (dataSize))+ poke ((p `plusPtr` 544 :: Ptr (Ptr ()))) (data')+ f+ cStructSize = 552+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)+ pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))) (mempty)+ poke ((p `plusPtr` 528 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PipelineExecutableInternalRepresentationKHR where+ peekCStruct p = do+ name <- packCString (lowerArrayPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))+ description <- packCString (lowerArrayPtr ((p `plusPtr` 272 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DESCRIPTION_SIZE CChar))))+ isText <- peek @Bool32 ((p `plusPtr` 528 :: Ptr Bool32))+ dataSize <- peek @CSize ((p `plusPtr` 536 :: Ptr CSize))+ pData <- peek @(Ptr ()) ((p `plusPtr` 544 :: Ptr (Ptr ())))+ pure $ PipelineExecutableInternalRepresentationKHR+ name description (bool32ToBool isText) ((\(CSize a) -> a) dataSize) pData++instance Storable PipelineExecutableInternalRepresentationKHR where+ sizeOf ~_ = 552+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineExecutableInternalRepresentationKHR where+ zero = PipelineExecutableInternalRepresentationKHR+ mempty+ mempty+ zero+ zero+ zero+++data PipelineExecutableStatisticValueKHR+ = B32 Bool+ | I64 Int64+ | U64 Word64+ | F64 Double+ deriving (Show)++instance ToCStruct PipelineExecutableStatisticValueKHR where+ withCStruct x f = allocaBytesAligned 8 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct :: Ptr PipelineExecutableStatisticValueKHR -> PipelineExecutableStatisticValueKHR -> IO a -> IO a+ pokeCStruct p = (. const) . runContT . \case+ B32 v -> lift $ poke (castPtr @_ @Bool32 p) (boolToBool32 (v))+ I64 v -> lift $ poke (castPtr @_ @Int64 p) (v)+ U64 v -> lift $ poke (castPtr @_ @Word64 p) (v)+ F64 v -> lift $ poke (castPtr @_ @CDouble p) (CDouble (v))+ pokeZeroCStruct :: Ptr PipelineExecutableStatisticValueKHR -> IO b -> IO b+ pokeZeroCStruct _ f = f+ cStructSize = 8+ cStructAlignment = 8++instance Zero PipelineExecutableStatisticValueKHR where+ zero = I64 zero++peekPipelineExecutableStatisticValueKHR :: PipelineExecutableStatisticFormatKHR -> Ptr PipelineExecutableStatisticValueKHR -> IO PipelineExecutableStatisticValueKHR+peekPipelineExecutableStatisticValueKHR tag p = case tag of+ PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR -> B32 <$> (do+ b32 <- peek @Bool32 (castPtr @_ @Bool32 p)+ pure $ bool32ToBool b32)+ PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR -> I64 <$> (peek @Int64 (castPtr @_ @Int64 p))+ PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR -> U64 <$> (peek @Word64 (castPtr @_ @Word64 p))+ PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR -> F64 <$> (do+ f64 <- peek @CDouble (castPtr @_ @CDouble p)+ pure $ (\(CDouble a) -> a) f64)+++-- | VkPipelineExecutableStatisticFormatKHR - Enum describing a pipeline+-- executable statistic+--+-- = See Also+--+-- 'PipelineExecutableStatisticKHR'+newtype PipelineExecutableStatisticFormatKHR = PipelineExecutableStatisticFormatKHR Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR' specifies that the+-- statistic is returned as a 32-bit boolean value which /must/ be either+-- 'Graphics.Vulkan.Core10.BaseType.TRUE' or+-- 'Graphics.Vulkan.Core10.BaseType.FALSE' and /should/ be read from the+-- @b32@ field of 'PipelineExecutableStatisticValueKHR'.+pattern PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = PipelineExecutableStatisticFormatKHR 0+-- | 'PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR' specifies that the+-- statistic is returned as a signed 64-bit integer and /should/ be read+-- from the @i64@ field of 'PipelineExecutableStatisticValueKHR'.+pattern PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = PipelineExecutableStatisticFormatKHR 1+-- | 'PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR' specifies that the+-- statistic is returned as an unsigned 64-bit integer and /should/ be read+-- from the @u64@ field of 'PipelineExecutableStatisticValueKHR'.+pattern PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = PipelineExecutableStatisticFormatKHR 2+-- | 'PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR' specifies that the+-- statistic is returned as a 64-bit floating-point value and /should/ be+-- read from the @f64@ field of 'PipelineExecutableStatisticValueKHR'.+pattern PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = PipelineExecutableStatisticFormatKHR 3+{-# complete PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR,+ PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR,+ PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR,+ PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR :: PipelineExecutableStatisticFormatKHR #-}++instance Show PipelineExecutableStatisticFormatKHR where+ showsPrec p = \case+ PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR -> showString "PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR"+ PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR -> showString "PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR"+ PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR -> showString "PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR"+ PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR -> showString "PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR"+ PipelineExecutableStatisticFormatKHR x -> showParen (p >= 11) (showString "PipelineExecutableStatisticFormatKHR " . showsPrec 11 x)++instance Read PipelineExecutableStatisticFormatKHR where+ readPrec = parens (choose [("PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR", pure PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR)+ , ("PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR", pure PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR)+ , ("PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR", pure PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR)+ , ("PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR", pure PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR)]+ ++++ prec 10 (do+ expectP (Ident "PipelineExecutableStatisticFormatKHR")+ v <- step readPrec+ pure (PipelineExecutableStatisticFormatKHR v)))+++type KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION"+pattern KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1+++type KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties"++-- No documentation found for TopLevel "VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME"+pattern KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs-boot view
@@ -0,0 +1,59 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties ( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR+ , PipelineExecutableInfoKHR+ , PipelineExecutableInternalRepresentationKHR+ , PipelineExecutablePropertiesKHR+ , PipelineExecutableStatisticKHR+ , PipelineInfoKHR+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDevicePipelineExecutablePropertiesFeaturesKHR++instance ToCStruct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR+instance Show PhysicalDevicePipelineExecutablePropertiesFeaturesKHR++instance FromCStruct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR+++data PipelineExecutableInfoKHR++instance ToCStruct PipelineExecutableInfoKHR+instance Show PipelineExecutableInfoKHR++instance FromCStruct PipelineExecutableInfoKHR+++data PipelineExecutableInternalRepresentationKHR++instance ToCStruct PipelineExecutableInternalRepresentationKHR+instance Show PipelineExecutableInternalRepresentationKHR++instance FromCStruct PipelineExecutableInternalRepresentationKHR+++data PipelineExecutablePropertiesKHR++instance ToCStruct PipelineExecutablePropertiesKHR+instance Show PipelineExecutablePropertiesKHR++instance FromCStruct PipelineExecutablePropertiesKHR+++data PipelineExecutableStatisticKHR++instance ToCStruct PipelineExecutableStatisticKHR+instance Show PipelineExecutableStatisticKHR++instance FromCStruct PipelineExecutableStatisticKHR+++data PipelineInfoKHR++instance ToCStruct PipelineInfoKHR+instance Show PipelineInfoKHR++instance FromCStruct PipelineInfoKHR+
src/Graphics/Vulkan/Extensions/VK_KHR_push_descriptor.hs view
@@ -1,99 +1,78 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_KHR_push_descriptor- ( pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR- , pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR- , pattern VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR- , pattern VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION- , pattern VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME- , vkCmdPushDescriptorSetKHR- , vkCmdPushDescriptorSetWithTemplateKHR- , VkPhysicalDevicePushDescriptorPropertiesKHR(..)- ) where--import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- )-import Graphics.Vulkan.Core10.DescriptorSet- ( VkDescriptorSetLayoutCreateFlagBits(..)- , VkWriteDescriptorSet(..)- )-import Graphics.Vulkan.Core10.Pass- ( VkPipelineBindPoint(..)- )-import Graphics.Vulkan.Core10.Pipeline- ( VkPipelineLayout- )-import Graphics.Vulkan.Core10.Queue- ( VkCommandBuffer- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template- ( VkDescriptorUpdateTemplateType(..)- , VkDescriptorUpdateTemplate- )+module Graphics.Vulkan.Extensions.VK_KHR_push_descriptor ( cmdPushDescriptorSetKHR+ , cmdPushDescriptorSetWithTemplateKHR+ , PhysicalDevicePushDescriptorPropertiesKHR(..)+ , KHR_PUSH_DESCRIPTOR_SPEC_VERSION+ , pattern KHR_PUSH_DESCRIPTOR_SPEC_VERSION+ , KHR_PUSH_DESCRIPTOR_EXTENSION_NAME+ , pattern KHR_PUSH_DESCRIPTOR_EXTENSION_NAME+ ) where +import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Core11.Handles (DescriptorUpdateTemplate)+import Graphics.Vulkan.Core11.Handles (DescriptorUpdateTemplate(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdPushDescriptorSetKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdPushDescriptorSetWithTemplateKHR))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint)+import Graphics.Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint(..))+import Graphics.Vulkan.Core10.Handles (PipelineLayout)+import Graphics.Vulkan.Core10.Handles (PipelineLayout(..))+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Core10.DescriptorSet (WriteDescriptorSet)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdPushDescriptorSetKHR+ :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> Word32 -> Word32 -> Ptr (WriteDescriptorSet a) -> IO ()) -> Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> Word32 -> Word32 -> Ptr (WriteDescriptorSet a) -> IO () --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = VkStructureType 1000080000--- | @VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR@ specifies that--- the descriptor update template will be used for push descriptor updates--- only.-pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR :: VkDescriptorUpdateTemplateType-pattern VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = VkDescriptorUpdateTemplateType 1--- | @VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR@ specifies that--- descriptor sets /must/ not be allocated using this layout, and--- descriptors are instead pushed by 'vkCmdPushDescriptorSetKHR'.-pattern VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR :: VkDescriptorSetLayoutCreateFlagBits-pattern VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = VkDescriptorSetLayoutCreateFlagBits 0x00000001--- No documentation found for TopLevel "VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION"-pattern VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION :: Integral a => a-pattern VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2--- No documentation found for TopLevel "VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME"-pattern VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" -- | vkCmdPushDescriptorSetKHR - Pushes descriptor updates into a command -- buffer -- -- = Parameters ----- - @commandBuffer@ is the command buffer that the descriptors will be--- recorded in.+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- that the descriptors will be recorded in. ----- - @pipelineBindPoint@ is a--- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint' indicating whether--- the descriptors will be used by graphics pipelines or compute--- pipelines. There is a separate set of push descriptor bindings for--- each of graphics and compute, so binding one does not disturb the--- other.+-- - 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- is a+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- indicating whether the descriptors will be used by graphics+-- pipelines or compute pipelines. There is a separate set of push+-- descriptor bindings for each of graphics and compute, so binding one+-- does not disturb the other. ----- - @layout@ is a @VkPipelineLayout@ object used to program the--- bindings.+-- - @layout@ is a 'Graphics.Vulkan.Core10.Handles.PipelineLayout' object+-- used to program the bindings. -- -- - @set@ is the set number of the descriptor set in the pipeline layout -- that will be updated.@@ -102,8 +81,8 @@ -- @pDescriptorWrites@ array. -- -- - @pDescriptorWrites@ is a pointer to an array of--- 'Graphics.Vulkan.Core10.DescriptorSet.VkWriteDescriptorSet'--- structures describing the descriptors to be updated.+-- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet' structures+-- describing the descriptors to be updated. -- -- = Description --@@ -113,191 +92,224 @@ -- allow for incremental updates of descriptors without managing the -- lifetime of descriptor sets. ----- When a command buffer begins recording, all push descriptors have--- undefined contents. Push descriptors /can/ be updated incrementally and--- cause shaders to use the updated descriptors for subsequent rendering--- commands (either compute or graphics, according to the--- @pipelineBindPoint@) until the descriptor is overwritten, or else until--- the set is disturbed as described in [Pipeline Layout--- Compatibility](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#descriptorsets-compatibility).+-- When a command buffer begins recording, all push descriptors are+-- undefined. Push descriptors /can/ be updated incrementally and cause+-- shaders to use the updated descriptors for subsequent rendering commands+-- (either compute or graphics, according to the+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint')+-- until the descriptor is overwritten, or else until the set is disturbed+-- as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>. -- When the set is disturbed or push descriptors with a different--- descriptor set layout are set, all push descriptors become invalid.+-- descriptor set layout are set, all push descriptors are undefined. ----- Valid descriptors /must/ be pushed for all bindings that any shaders in--- a pipeline access, at the time that a draw or dispatch command is--- recorded to execute using that pipeline. This includes immutable sampler--- descriptors, which /must/ be pushed before they are accessed by a--- pipeline. However, if none of the shaders in a pipeline statically use--- certain bindings in the push descriptor set, then those descriptors need--- not be valid.+-- Push descriptors that are+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>+-- by a pipeline /must/ not be undefined at the time that a draw or+-- dispatch command is recorded to execute using that pipeline. This+-- includes immutable sampler descriptors, which /must/ be pushed before+-- they are accessed by a pipeline (the immutable samplers are pushed,+-- rather than the samplers in @pDescriptorWrites@). Push descriptors that+-- are not statically used /can/ remain undefined. -- -- Push descriptors do not use dynamic offsets. Instead, the corresponding -- non-dynamic descriptor types /can/ be used and the @offset@ member of--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorBufferInfo' /can/ be+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorBufferInfo' /can/ be -- changed each time the descriptor is written. -- -- Each element of @pDescriptorWrites@ is interpreted as in--- 'Graphics.Vulkan.Core10.DescriptorSet.VkWriteDescriptorSet', except the+-- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet', except the -- @dstSet@ member is ignored. -- -- To push an immutable sampler, use a--- 'Graphics.Vulkan.Core10.DescriptorSet.VkWriteDescriptorSet' with+-- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet' with -- @dstBinding@ and @dstArrayElement@ selecting the immutable sampler’s--- binding. If the descriptor type is @VK_DESCRIPTOR_TYPE_SAMPLER@, the--- @pImageInfo@ parameter is ignored and the immutable sampler is taken+-- binding. If the descriptor type is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',+-- the @pImageInfo@ parameter is ignored and the immutable sampler is taken -- from the push descriptor set layout in the pipeline layout. If the--- descriptor type is @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@, the--- @sampler@ member of the @pImageInfo@ parameter is ignored and the--- immutable sampler is taken from the push descriptor set layout in the--- pipeline layout.+-- descriptor type is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+-- the 'Graphics.Vulkan.Core10.Handles.Sampler' member of the @pImageInfo@+-- parameter is ignored and the immutable sampler is taken from the push+-- descriptor set layout in the pipeline layout. -- -- == Valid Usage ----- - @pipelineBindPoint@ /must/ be supported by the @commandBuffer@’s--- parent @VkCommandPool@’s queue family+-- - 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- /must/ be supported by the+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'’s parent+-- 'Graphics.Vulkan.Core10.Handles.CommandPool'’s queue family -- -- - @set@ /must/ be less than--- @VkPipelineLayoutCreateInfo@::@setLayoutCount@ provided when--- @layout@ was created+-- 'Graphics.Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@setLayoutCount@+-- provided when @layout@ was created -- -- - @set@ /must/ be the unique set number in the pipeline layout that -- uses a descriptor set layout that was created with--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR@+-- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR' -- -- == Valid Usage (Implicit) ----- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle ----- - @pipelineBindPoint@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint' value+-- - 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- value ----- - @layout@ /must/ be a valid @VkPipelineLayout@ handle+-- - @layout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' handle -- -- - @pDescriptorWrites@ /must/ be a valid pointer to an array of--- @descriptorWriteCount@ valid @VkWriteDescriptorSet@ structures+-- @descriptorWriteCount@ valid+-- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet' structures ----- - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state> ----- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations -- -- - @descriptorWriteCount@ /must/ be greater than @0@ ----- - Both of @commandBuffer@, and @layout@ /must/ have been created,--- allocated, or retrieved from the same @VkDevice@+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and @layout@+-- /must/ have been created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization ----- - Host access to @commandBuffer@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized ----- - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized -- -- == Command Properties -- -- \' ----- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ -- -- = See Also ----- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout',--- 'Graphics.Vulkan.Core10.DescriptorSet.VkWriteDescriptorSet'+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout',+-- 'Graphics.Vulkan.Core10.DescriptorSet.WriteDescriptorSet'+cmdPushDescriptorSetKHR :: PokeChain a => CommandBuffer -> PipelineBindPoint -> PipelineLayout -> ("set" ::: Word32) -> ("descriptorWrites" ::: Vector (WriteDescriptorSet a)) -> IO ()+cmdPushDescriptorSetKHR commandBuffer pipelineBindPoint layout set descriptorWrites = evalContT $ do+ let vkCmdPushDescriptorSetKHR' = mkVkCmdPushDescriptorSetKHR (pVkCmdPushDescriptorSetKHR (deviceCmds (commandBuffer :: CommandBuffer)))+ pPDescriptorWrites <- ContT $ allocaBytesAligned @(WriteDescriptorSet _) ((Data.Vector.length (descriptorWrites)) * 64) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDescriptorWrites `plusPtr` (64 * (i)) :: Ptr (WriteDescriptorSet _)) (e) . ($ ())) (descriptorWrites)+ lift $ vkCmdPushDescriptorSetKHR' (commandBufferHandle (commandBuffer)) (pipelineBindPoint) (layout) (set) ((fromIntegral (Data.Vector.length $ (descriptorWrites)) :: Word32)) (pPDescriptorWrites)+ pure $ ()++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkCmdPushDescriptorSetKHR" vkCmdPushDescriptorSetKHR :: ("commandBuffer" ::: VkCommandBuffer) -> ("pipelineBindPoint" ::: VkPipelineBindPoint) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("descriptorWriteCount" ::: Word32) -> ("pDescriptorWrites" ::: Ptr VkWriteDescriptorSet) -> IO ()+ "dynamic" mkVkCmdPushDescriptorSetWithTemplateKHR+ :: FunPtr (Ptr CommandBuffer_T -> DescriptorUpdateTemplate -> PipelineLayout -> Word32 -> Ptr () -> IO ()) -> Ptr CommandBuffer_T -> DescriptorUpdateTemplate -> PipelineLayout -> Word32 -> Ptr () -> IO ()+ -- | vkCmdPushDescriptorSetWithTemplateKHR - Pushes descriptor updates into a -- command buffer using a descriptor update template -- -- = Parameters ----- - @commandBuffer@ is the command buffer that the descriptors will be--- recorded in.+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- that the descriptors will be recorded in. ----- - @descriptorUpdateTemplate@ A descriptor update template which--- defines how to interpret the descriptor information in pData.+-- - 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate' is a+-- descriptor update template defining how to interpret the descriptor+-- information in @pData@. ----- - @layout@ is a @VkPipelineLayout@ object used to program the--- bindings. It /must/ be compatible with the layout used to create the--- @descriptorUpdateTemplate@ handle.+-- - @layout@ is a 'Graphics.Vulkan.Core10.Handles.PipelineLayout' object+-- used to program the bindings. It /must/ be compatible with the+-- layout used to create the+-- 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate' handle. -- -- - @set@ is the set number of the descriptor set in the pipeline layout -- that will be updated. This /must/ be the same number used to create--- the @descriptorUpdateTemplate@ handle.+-- the 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate'+-- handle. ----- - @pData@ Points to memory which contains the descriptors for the+-- - @pData@ is a pointer to memory containing descriptors for the -- templated update. -- -- == Valid Usage ----- - The pipelineBindPoint specified during the creation of the--- descriptor update template /must/ be supported by the--- @commandBuffer@’s parent @VkCommandPool@’s queue family+-- - The+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- specified during the creation of the descriptor update template+-- /must/ be supported by the+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'’s parent+-- 'Graphics.Vulkan.Core10.Handles.CommandPool'’s queue family ----- - @pData@ /must/ be a valid pointer to a memory that contains one or--- more valid instances of--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorImageInfo',--- 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorBufferInfo', or--- 'Graphics.Vulkan.Core10.BufferView.VkBufferView' in a layout defined--- by @descriptorUpdateTemplate@ when it was created with--- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.vkCreateDescriptorUpdateTemplateKHR'+-- - @pData@ /must/ be a valid pointer to a memory containing one or more+-- valid instances of+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorImageInfo',+-- 'Graphics.Vulkan.Core10.DescriptorSet.DescriptorBufferInfo', or+-- 'Graphics.Vulkan.Core10.Handles.BufferView' in a layout defined by+-- 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate' when it+-- was created with+-- 'Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template.createDescriptorUpdateTemplateKHR' -- -- == Valid Usage (Implicit) ----- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle ----- - @descriptorUpdateTemplate@ /must/ be a valid--- @VkDescriptorUpdateTemplate@ handle+-- - 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate' /must/ be+-- a valid 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate'+-- handle ----- - @layout@ /must/ be a valid @VkPipelineLayout@ handle+-- - @layout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' handle ----- - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state> ----- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations ----- - Each of @commandBuffer@, @descriptorUpdateTemplate@, and @layout@--- /must/ have been created, allocated, or retrieved from the same--- @VkDevice@+-- - Each of 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate', and+-- @layout@ /must/ have been created, allocated, or retrieved from the+-- same 'Graphics.Vulkan.Core10.Handles.Device' -- -- == Host Synchronization ----- - Host access to @commandBuffer@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized ----- - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized -- -- == Command Properties -- -- \' ----- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ -- -- __API example.__ ----- > struct AppBufferView {--- > VkBufferView bufferView;--- > uint32_t applicationRelatedInformation;--- > };--- > -- > struct AppDataStructure -- > { -- > VkDescriptorImageInfo imageInfo; // a single image info@@ -313,24 +325,23 @@ -- > 1, // descriptorCount -- > VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, // descriptorType -- > offsetof(AppDataStructure, imageInfo), // offset--- > 0 // stride is not required if descriptorCount is 1.+-- > 0 // stride is not required if descriptorCount is 1 -- > }--- > -- > }; -- >--- > // create an descriptor update template for descriptor set updates+-- > // create a descriptor update template for descriptor set updates -- > const VkDescriptorUpdateTemplateCreateInfo createInfo = -- > { -- > VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, // sType--- > NULL, // pNext--- > 0, // flags--- > 1, // descriptorUpdateEntryCount--- > descriptorUpdateTemplateEntries, // pDescriptorUpdateEntries--- > VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR, // templateType--- > 0, // descriptorSetLayout, ignored by given templateType--- > VK_PIPELINE_BIND_POINT_GRAPHICS, // pipelineBindPoint--- > myPipelineLayout, // pipelineLayout--- > 0, // set+-- > NULL, // pNext+-- > 0, // flags+-- > 1, // descriptorUpdateEntryCount+-- > descriptorUpdateTemplateEntries, // pDescriptorUpdateEntries+-- > VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR, // templateType+-- > 0, // descriptorSetLayout, ignored by given templateType+-- > VK_PIPELINE_BIND_POINT_GRAPHICS, // pipelineBindPoint+-- > myPipelineLayout, // pipelineLayout+-- > 0, // set -- > }; -- > -- > VkDescriptorUpdateTemplate myDescriptorUpdateTemplate;@@ -347,52 +358,87 @@ -- -- = See Also ----- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer',--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template.VkDescriptorUpdateTemplate',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdPushDescriptorSetWithTemplateKHR" vkCmdPushDescriptorSetWithTemplateKHR :: ("commandBuffer" ::: VkCommandBuffer) -> ("descriptorUpdateTemplate" ::: VkDescriptorUpdateTemplate) -> ("layout" ::: VkPipelineLayout) -> ("set" ::: Word32) -> ("pData" ::: Ptr ()) -> IO ()+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core11.Handles.DescriptorUpdateTemplate',+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout'+cmdPushDescriptorSetWithTemplateKHR :: CommandBuffer -> DescriptorUpdateTemplate -> PipelineLayout -> ("set" ::: Word32) -> ("data" ::: Ptr ()) -> IO ()+cmdPushDescriptorSetWithTemplateKHR commandBuffer descriptorUpdateTemplate layout set data' = do+ let vkCmdPushDescriptorSetWithTemplateKHR' = mkVkCmdPushDescriptorSetWithTemplateKHR (pVkCmdPushDescriptorSetWithTemplateKHR (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdPushDescriptorSetWithTemplateKHR' (commandBufferHandle (commandBuffer)) (descriptorUpdateTemplate) (layout) (set) (data')+ pure $ ()++ -- | VkPhysicalDevicePushDescriptorPropertiesKHR - Structure describing push -- descriptor limits that can be supported by an implementation -- -- = Members ----- The members of the @VkPhysicalDevicePushDescriptorPropertiesKHR@--- structure describe the following implementation-dependent limits:+-- The members of the 'PhysicalDevicePushDescriptorPropertiesKHR' structure+-- describe the following implementation-dependent limits: -- -- = Description ----- - @maxPushDescriptors@ is the maximum number of descriptors that /can/--- be used in a descriptor set created with--- @VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR@ set.+-- If the 'PhysicalDevicePushDescriptorPropertiesKHR' structure is included+-- in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits. -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR@--- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDevicePushDescriptorPropertiesKHR = VkPhysicalDevicePushDescriptorPropertiesKHR- { -- No documentation found for Nested "VkPhysicalDevicePushDescriptorPropertiesKHR" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDevicePushDescriptorPropertiesKHR" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDevicePushDescriptorPropertiesKHR" "maxPushDescriptors"- vkMaxPushDescriptors :: Word32- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDevicePushDescriptorPropertiesKHR = PhysicalDevicePushDescriptorPropertiesKHR+ { -- | @maxPushDescriptors@ is the maximum number of descriptors that /can/ be+ -- used in a descriptor set created with+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR'+ -- set.+ maxPushDescriptors :: Word32 }+ deriving (Typeable)+deriving instance Show PhysicalDevicePushDescriptorPropertiesKHR -instance Storable VkPhysicalDevicePushDescriptorPropertiesKHR where+instance ToCStruct PhysicalDevicePushDescriptorPropertiesKHR where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDevicePushDescriptorPropertiesKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (maxPushDescriptors)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ f++instance FromCStruct PhysicalDevicePushDescriptorPropertiesKHR where+ peekCStruct p = do+ maxPushDescriptors <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pure $ PhysicalDevicePushDescriptorPropertiesKHR+ maxPushDescriptors++instance Storable PhysicalDevicePushDescriptorPropertiesKHR where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkPhysicalDevicePushDescriptorPropertiesKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDevicePushDescriptorPropertiesKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDevicePushDescriptorPropertiesKHR))- *> poke (ptr `plusPtr` 16) (vkMaxPushDescriptors (poked :: VkPhysicalDevicePushDescriptorPropertiesKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDevicePushDescriptorPropertiesKHR where+ zero = PhysicalDevicePushDescriptorPropertiesKHR+ zero+++type KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION"+pattern KHR_PUSH_DESCRIPTOR_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2+++type KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor"++-- No documentation found for TopLevel "VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME"+pattern KHR_PUSH_DESCRIPTOR_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_push_descriptor.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_push_descriptor (PhysicalDevicePushDescriptorPropertiesKHR) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDevicePushDescriptorPropertiesKHR++instance ToCStruct PhysicalDevicePushDescriptorPropertiesKHR+instance Show PhysicalDevicePushDescriptorPropertiesKHR++instance FromCStruct PhysicalDevicePushDescriptorPropertiesKHR+
src/Graphics/Vulkan/Extensions/VK_KHR_relaxed_block_layout.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_KHR_relaxed_block_layout- ( pattern VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION- , pattern VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_KHR_relaxed_block_layout ( KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION+ , pattern KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION+ , KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME+ , pattern KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION"+pattern KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 +type KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" --- No documentation found for TopLevel "VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION"-pattern VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION :: Integral a => a-pattern VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME"-pattern VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout"+pattern KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout"+
src/Graphics/Vulkan/Extensions/VK_KHR_sampler_mirror_clamp_to_edge.hs view
@@ -1,33 +1,27 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}+module Graphics.Vulkan.Extensions.VK_KHR_sampler_mirror_clamp_to_edge ( pattern SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR+ , KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION+ , pattern KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION+ , KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME+ , pattern KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_KHR_sampler_mirror_clamp_to_edge- ( pattern VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE- , pattern VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION- , pattern VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME- ) where+import Data.String (IsString)+import Graphics.Vulkan.Core10.Enums.SamplerAddressMode (SamplerAddressMode(SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE))+-- No documentation found for TopLevel "VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR"+pattern SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE -import Data.String- ( IsString- ) +type KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 -import Graphics.Vulkan.Core10.Sampler- ( VkSamplerAddressMode(..)- )+-- No documentation found for TopLevel "VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION"+pattern KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 --- | @VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE@ specifies that the mirror--- clamp to edge wrap mode will be used. This is only valid if the--- @{html_spec_relative}#VK_KHR_sampler_mirror_clamp_to_edge@ extension is--- enabled.-pattern VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE :: VkSamplerAddressMode-pattern VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = VkSamplerAddressMode 4--- No documentation found for TopLevel "VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION"-pattern VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION :: Integral a => a-pattern VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 1+type KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge"+ -- No documentation found for TopLevel "VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME"-pattern VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge"+pattern KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge"+
src/Graphics/Vulkan/Extensions/VK_KHR_sampler_ycbcr_conversion.hs view
@@ -1,457 +1,478 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}--module Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion- ( pattern VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION- , pattern VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME- , vkCreateSamplerYcbcrConversionKHR- , vkDestroySamplerYcbcrConversionKHR- , VkSamplerYcbcrModelConversionKHR- , VkSamplerYcbcrRangeKHR- , VkChromaLocationKHR- , VkSamplerYcbcrConversionKHR- , VkSamplerYcbcrConversionInfoKHR- , pattern VkSamplerYcbcrConversionInfoKHR- , VkSamplerYcbcrConversionCreateInfoKHR- , pattern VkSamplerYcbcrConversionCreateInfoKHR- , VkBindImagePlaneMemoryInfoKHR- , pattern VkBindImagePlaneMemoryInfoKHR- , VkImagePlaneMemoryRequirementsInfoKHR- , pattern VkImagePlaneMemoryRequirementsInfoKHR- , VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR- , pattern VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR- , VkSamplerYcbcrConversionImageFormatPropertiesKHR- , pattern VkSamplerYcbcrConversionImageFormatPropertiesKHR- , pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR- , pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR- , pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR- , pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR- , pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT- , pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR- , pattern VK_FORMAT_G8B8G8R8_422_UNORM_KHR- , pattern VK_FORMAT_B8G8R8G8_422_UNORM_KHR- , pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR- , pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR- , pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR- , pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR- , pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR- , pattern VK_FORMAT_R10X6_UNORM_PACK16_KHR- , pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR- , pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR- , pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR- , pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR- , pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR- , pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR- , pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR- , pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR- , pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR- , pattern VK_FORMAT_R12X4_UNORM_PACK16_KHR- , pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR- , pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR- , pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR- , pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR- , pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR- , pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR- , pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR- , pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR- , pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR- , pattern VK_FORMAT_G16B16G16R16_422_UNORM_KHR- , pattern VK_FORMAT_B16G16R16G16_422_UNORM_KHR- , pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR- , pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR- , pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR- , pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR- , pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR- , pattern VK_IMAGE_ASPECT_PLANE_0_BIT_KHR- , pattern VK_IMAGE_ASPECT_PLANE_1_BIT_KHR- , pattern VK_IMAGE_ASPECT_PLANE_2_BIT_KHR- , pattern VK_IMAGE_CREATE_DISJOINT_BIT_KHR- , pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR- , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR- , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR- , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR- , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR- , pattern VK_FORMAT_FEATURE_DISJOINT_BIT_KHR- , pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR- , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR- , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR- , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR- , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR- , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR- , pattern VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR- , pattern VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR- , pattern VK_CHROMA_LOCATION_COSITED_EVEN_KHR- , pattern VK_CHROMA_LOCATION_MIDPOINT_KHR- ) where+module Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion ( pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR+ , pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR+ , pattern STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR+ , pattern STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR+ , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR+ , pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR+ , pattern DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT+ , pattern OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR+ , pattern FORMAT_G8B8G8R8_422_UNORM_KHR+ , pattern FORMAT_B8G8R8G8_422_UNORM_KHR+ , pattern FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR+ , pattern FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR+ , pattern FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR+ , pattern FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR+ , pattern FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR+ , pattern FORMAT_R10X6_UNORM_PACK16_KHR+ , pattern FORMAT_R10X6G10X6_UNORM_2PACK16_KHR+ , pattern FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR+ , pattern FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR+ , pattern FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR+ , pattern FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR+ , pattern FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR+ , pattern FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR+ , pattern FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR+ , pattern FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR+ , pattern FORMAT_R12X4_UNORM_PACK16_KHR+ , pattern FORMAT_R12X4G12X4_UNORM_2PACK16_KHR+ , pattern FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR+ , pattern FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR+ , pattern FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR+ , pattern FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR+ , pattern FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR+ , pattern FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR+ , pattern FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR+ , pattern FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR+ , pattern FORMAT_G16B16G16R16_422_UNORM_KHR+ , pattern FORMAT_B16G16R16G16_422_UNORM_KHR+ , pattern FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR+ , pattern FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR+ , pattern FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR+ , pattern FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR+ , pattern FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR+ , pattern IMAGE_ASPECT_PLANE_0_BIT_KHR+ , pattern IMAGE_ASPECT_PLANE_1_BIT_KHR+ , pattern IMAGE_ASPECT_PLANE_2_BIT_KHR+ , pattern IMAGE_CREATE_DISJOINT_BIT_KHR+ , pattern FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR+ , pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR+ , pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR+ , pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR+ , pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR+ , pattern FORMAT_FEATURE_DISJOINT_BIT_KHR+ , pattern FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR+ , pattern SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR+ , pattern SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR+ , pattern SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR+ , pattern SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR+ , pattern SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR+ , pattern SAMPLER_YCBCR_RANGE_ITU_FULL_KHR+ , pattern SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR+ , pattern CHROMA_LOCATION_COSITED_EVEN_KHR+ , pattern CHROMA_LOCATION_MIDPOINT_KHR+ , createSamplerYcbcrConversionKHR+ , destroySamplerYcbcrConversionKHR+ , SamplerYcbcrConversionKHR+ , SamplerYcbcrModelConversionKHR+ , SamplerYcbcrRangeKHR+ , ChromaLocationKHR+ , SamplerYcbcrConversionInfoKHR+ , SamplerYcbcrConversionCreateInfoKHR+ , BindImagePlaneMemoryInfoKHR+ , ImagePlaneMemoryRequirementsInfoKHR+ , PhysicalDeviceSamplerYcbcrConversionFeaturesKHR+ , SamplerYcbcrConversionImageFormatPropertiesKHR+ , KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION+ , pattern KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION+ , KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME+ , pattern KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME+ , DebugReportObjectTypeEXT(..)+ ) where -import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- )-import Graphics.Vulkan.NamedType- ( (:::)- )+import Data.String (IsString)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (createSamplerYcbcrConversion)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (destroySamplerYcbcrConversion)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (BindImagePlaneMemoryInfo)+import Graphics.Vulkan.Core11.Enums.ChromaLocation (ChromaLocation)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (ImagePlaneMemoryRequirementsInfo)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (PhysicalDeviceSamplerYcbcrConversionFeatures)+import Graphics.Vulkan.Core11.Handles (SamplerYcbcrConversion)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionCreateInfo)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionImageFormatProperties)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (SamplerYcbcrConversionInfo)+import Graphics.Vulkan.Core11.Enums.SamplerYcbcrModelConversion (SamplerYcbcrModelConversion)+import Graphics.Vulkan.Core11.Enums.SamplerYcbcrRange (SamplerYcbcrRange)+import Graphics.Vulkan.Core11.Enums.ChromaLocation (ChromaLocation(CHROMA_LOCATION_COSITED_EVEN))+import Graphics.Vulkan.Core11.Enums.ChromaLocation (ChromaLocation(CHROMA_LOCATION_MIDPOINT))+import Graphics.Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_B16G16R16G16_422_UNORM))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_B8G8R8G8_422_UNORM))+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlagBits(FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT))+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlagBits(FORMAT_FEATURE_DISJOINT_BIT))+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlagBits(FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT))+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlagBits(FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT))+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlagBits(FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT))+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlagBits(FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT))+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)+import Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlagBits(FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G16B16G16R16_422_UNORM))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G16_B16R16_2PLANE_420_UNORM))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G16_B16R16_2PLANE_422_UNORM))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G16_B16_R16_3PLANE_420_UNORM))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G16_B16_R16_3PLANE_422_UNORM))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G16_B16_R16_3PLANE_444_UNORM))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G8B8G8R8_422_UNORM))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G8_B8R8_2PLANE_420_UNORM))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G8_B8R8_2PLANE_422_UNORM))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G8_B8_R8_3PLANE_420_UNORM))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G8_B8_R8_3PLANE_422_UNORM))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_G8_B8_R8_3PLANE_444_UNORM))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_R10X6G10X6_UNORM_2PACK16))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_R10X6_UNORM_PACK16))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_R12X4G12X4_UNORM_2PACK16))+import Graphics.Vulkan.Core10.Enums.Format (Format(FORMAT_R12X4_UNORM_PACK16))+import Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlags)+import Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlagBits(IMAGE_ASPECT_PLANE_0_BIT))+import Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlags)+import Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlagBits(IMAGE_ASPECT_PLANE_1_BIT))+import Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlags)+import Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlagBits(IMAGE_ASPECT_PLANE_2_BIT))+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(IMAGE_CREATE_DISJOINT_BIT))+import Graphics.Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION))+import Graphics.Vulkan.Core11.Enums.SamplerYcbcrModelConversion (SamplerYcbcrModelConversion(SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY))+import Graphics.Vulkan.Core11.Enums.SamplerYcbcrModelConversion (SamplerYcbcrModelConversion(SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020))+import Graphics.Vulkan.Core11.Enums.SamplerYcbcrModelConversion (SamplerYcbcrModelConversion(SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601))+import Graphics.Vulkan.Core11.Enums.SamplerYcbcrModelConversion (SamplerYcbcrModelConversion(SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709))+import Graphics.Vulkan.Core11.Enums.SamplerYcbcrModelConversion (SamplerYcbcrModelConversion(SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY))+import Graphics.Vulkan.Core11.Enums.SamplerYcbcrRange (SamplerYcbcrRange(SAMPLER_YCBCR_RANGE_ITU_FULL))+import Graphics.Vulkan.Core11.Enums.SamplerYcbcrRange (SamplerYcbcrRange(SAMPLER_YCBCR_RANGE_ITU_NARROW))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO))+import Graphics.Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(..))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO -import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkFormat(..)- , VkObjectType(..)- , VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkFormatFeatureFlagBits(..)- , VkImageCreateFlagBits(..)- , VkDevice- )-import Graphics.Vulkan.Core10.ImageView- ( VkComponentMapping(..)- )-import Graphics.Vulkan.Core10.Sampler- ( VkFilter(..)- )-import Graphics.Vulkan.Core10.SparseResourceMemoryManagement- ( VkImageAspectFlagBits(..)- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion- ( VkBindImagePlaneMemoryInfo(..)- , VkChromaLocation(..)- , VkImagePlaneMemoryRequirementsInfo(..)- , VkPhysicalDeviceSamplerYcbcrConversionFeatures(..)- , VkSamplerYcbcrConversionCreateInfo(..)- , VkSamplerYcbcrConversionImageFormatProperties(..)- , VkSamplerYcbcrConversionInfo(..)- , VkSamplerYcbcrModelConversion(..)- , VkSamplerYcbcrRange(..)- , VkSamplerYcbcrConversion- , vkCreateSamplerYcbcrConversion- , vkDestroySamplerYcbcrConversion- , pattern VK_CHROMA_LOCATION_COSITED_EVEN- , pattern VK_CHROMA_LOCATION_MIDPOINT- , pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16- , pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16- , pattern VK_FORMAT_B16G16R16G16_422_UNORM- , pattern VK_FORMAT_B8G8R8G8_422_UNORM- , pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT- , pattern VK_FORMAT_FEATURE_DISJOINT_BIT- , pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT- , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT- , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT- , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT- , pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT- , pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16- , pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16- , pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16- , pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16- , pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16- , pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16- , pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16- , pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16- , pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16- , pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16- , pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16- , pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16- , pattern VK_FORMAT_G16B16G16R16_422_UNORM- , pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM- , pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM- , pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM- , pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM- , pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM- , pattern VK_FORMAT_G8B8G8R8_422_UNORM- , pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM- , pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM- , pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM- , pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM- , pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM- , pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16- , pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16- , pattern VK_FORMAT_R10X6_UNORM_PACK16- , pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16- , pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16- , pattern VK_FORMAT_R12X4_UNORM_PACK16- , pattern VK_IMAGE_ASPECT_PLANE_0_BIT- , pattern VK_IMAGE_ASPECT_PLANE_1_BIT- , pattern VK_IMAGE_ASPECT_PLANE_2_BIT- , pattern VK_IMAGE_CREATE_DISJOINT_BIT- , pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION- , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY- , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020- , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601- , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709- , pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY- , pattern VK_SAMPLER_YCBCR_RANGE_ITU_FULL- , pattern VK_SAMPLER_YCBCR_RANGE_ITU_NARROW- , pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO- , pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES- , pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO- , pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES- , pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO- )-import Graphics.Vulkan.Extensions.VK_EXT_debug_report- ( VkDebugReportObjectTypeEXT(..)- , pattern VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT- )+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR"+pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO --- No documentation found for TopLevel "VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION"-pattern VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION :: Integral a => a-pattern VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME"-pattern VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion"--- No documentation found for TopLevel "vkCreateSamplerYcbcrConversionKHR"-vkCreateSamplerYcbcrConversionKHR :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSamplerYcbcrConversionCreateInfo) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pYcbcrConversion" ::: Ptr VkSamplerYcbcrConversion) -> IO VkResult-vkCreateSamplerYcbcrConversionKHR = vkCreateSamplerYcbcrConversion--- No documentation found for TopLevel "vkDestroySamplerYcbcrConversionKHR"-vkDestroySamplerYcbcrConversionKHR :: ("device" ::: VkDevice) -> ("ycbcrConversion" ::: VkSamplerYcbcrConversion) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()-vkDestroySamplerYcbcrConversionKHR = vkDestroySamplerYcbcrConversion--- No documentation found for TopLevel "VkSamplerYcbcrModelConversionKHR"-type VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion--- No documentation found for TopLevel "VkSamplerYcbcrRangeKHR"-type VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange--- No documentation found for TopLevel "VkChromaLocationKHR"-type VkChromaLocationKHR = VkChromaLocation--- No documentation found for TopLevel "VkSamplerYcbcrConversionKHR"-type VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion--- No documentation found for TopLevel "VkSamplerYcbcrConversionInfoKHR"-type VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR"+pattern STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO --- No documentation found for TopLevel "VkSamplerYcbcrConversionInfoKHR"-pattern VkSamplerYcbcrConversionInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("conversion" ::: VkSamplerYcbcrConversion) -> VkSamplerYcbcrConversionInfoKHR-pattern VkSamplerYcbcrConversionInfoKHR vkSType vkPNext vkConversion = VkSamplerYcbcrConversionInfo vkSType vkPNext vkConversion--- No documentation found for TopLevel "VkSamplerYcbcrConversionCreateInfoKHR"-type VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR"+pattern STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO --- No documentation found for TopLevel "VkSamplerYcbcrConversionCreateInfoKHR"-pattern VkSamplerYcbcrConversionCreateInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("format" ::: VkFormat) -> ("ycbcrModel" ::: VkSamplerYcbcrModelConversion) -> ("ycbcrRange" ::: VkSamplerYcbcrRange) -> ("components" ::: VkComponentMapping) -> ("xChromaOffset" ::: VkChromaLocation) -> ("yChromaOffset" ::: VkChromaLocation) -> ("chromaFilter" ::: VkFilter) -> ("forceExplicitReconstruction" ::: VkBool32) -> VkSamplerYcbcrConversionCreateInfoKHR-pattern VkSamplerYcbcrConversionCreateInfoKHR vkSType vkPNext vkFormat vkYcbcrModel vkYcbcrRange vkComponents vkXChromaOffset vkYChromaOffset vkChromaFilter vkForceExplicitReconstruction = VkSamplerYcbcrConversionCreateInfo vkSType vkPNext vkFormat vkYcbcrModel vkYcbcrRange vkComponents vkXChromaOffset vkYChromaOffset vkChromaFilter vkForceExplicitReconstruction--- No documentation found for TopLevel "VkBindImagePlaneMemoryInfoKHR"-type VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES --- No documentation found for TopLevel "VkBindImagePlaneMemoryInfoKHR"-pattern VkBindImagePlaneMemoryInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("planeAspect" ::: VkImageAspectFlagBits) -> VkBindImagePlaneMemoryInfoKHR-pattern VkBindImagePlaneMemoryInfoKHR vkSType vkPNext vkPlaneAspect = VkBindImagePlaneMemoryInfo vkSType vkPNext vkPlaneAspect--- No documentation found for TopLevel "VkImagePlaneMemoryRequirementsInfoKHR"-type VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES --- No documentation found for TopLevel "VkImagePlaneMemoryRequirementsInfoKHR"-pattern VkImagePlaneMemoryRequirementsInfoKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("planeAspect" ::: VkImageAspectFlagBits) -> VkImagePlaneMemoryRequirementsInfoKHR-pattern VkImagePlaneMemoryRequirementsInfoKHR vkSType vkPNext vkPlaneAspect = VkImagePlaneMemoryRequirementsInfo vkSType vkPNext vkPlaneAspect--- No documentation found for TopLevel "VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR"-type VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures+-- No documentation found for TopLevel "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT"+pattern DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT --- No documentation found for TopLevel "VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR"-pattern VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("samplerYcbcrConversion" ::: VkBool32) -> VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR-pattern VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR vkSType vkPNext vkSamplerYcbcrConversion = VkPhysicalDeviceSamplerYcbcrConversionFeatures vkSType vkPNext vkSamplerYcbcrConversion--- No documentation found for TopLevel "VkSamplerYcbcrConversionImageFormatPropertiesKHR"-type VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties+-- No documentation found for TopLevel "VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR"+pattern OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION --- No documentation found for TopLevel "VkSamplerYcbcrConversionImageFormatPropertiesKHR"-pattern VkSamplerYcbcrConversionImageFormatPropertiesKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("combinedImageSamplerDescriptorCount" ::: Word32) -> VkSamplerYcbcrConversionImageFormatPropertiesKHR-pattern VkSamplerYcbcrConversionImageFormatPropertiesKHR vkSType vkPNext vkCombinedImageSamplerDescriptorCount = VkSamplerYcbcrConversionImageFormatProperties vkSType vkPNext vkCombinedImageSamplerDescriptorCount--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR"-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR"-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR"-pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR"-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES--- No documentation found for TopLevel "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT"-pattern VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT :: VkDebugReportObjectTypeEXT-pattern VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT--- No documentation found for TopLevel "VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR"-pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR :: VkObjectType-pattern VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION -- No documentation found for TopLevel "VK_FORMAT_G8B8G8R8_422_UNORM_KHR"-pattern VK_FORMAT_G8B8G8R8_422_UNORM_KHR :: VkFormat-pattern VK_FORMAT_G8B8G8R8_422_UNORM_KHR = VK_FORMAT_G8B8G8R8_422_UNORM+pattern FORMAT_G8B8G8R8_422_UNORM_KHR = FORMAT_G8B8G8R8_422_UNORM++ -- No documentation found for TopLevel "VK_FORMAT_B8G8R8G8_422_UNORM_KHR"-pattern VK_FORMAT_B8G8R8G8_422_UNORM_KHR :: VkFormat-pattern VK_FORMAT_B8G8R8G8_422_UNORM_KHR = VK_FORMAT_B8G8R8G8_422_UNORM+pattern FORMAT_B8G8R8G8_422_UNORM_KHR = FORMAT_B8G8R8G8_422_UNORM++ -- No documentation found for TopLevel "VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR"-pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR :: VkFormat-pattern VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM+pattern FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = FORMAT_G8_B8_R8_3PLANE_420_UNORM++ -- No documentation found for TopLevel "VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR"-pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR :: VkFormat-pattern VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM+pattern FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = FORMAT_G8_B8R8_2PLANE_420_UNORM++ -- No documentation found for TopLevel "VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR"-pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR :: VkFormat-pattern VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM+pattern FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = FORMAT_G8_B8_R8_3PLANE_422_UNORM++ -- No documentation found for TopLevel "VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR"-pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR :: VkFormat-pattern VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM+pattern FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = FORMAT_G8_B8R8_2PLANE_422_UNORM++ -- No documentation found for TopLevel "VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR"-pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR :: VkFormat-pattern VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM+pattern FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = FORMAT_G8_B8_R8_3PLANE_444_UNORM++ -- No documentation found for TopLevel "VK_FORMAT_R10X6_UNORM_PACK16_KHR"-pattern VK_FORMAT_R10X6_UNORM_PACK16_KHR :: VkFormat-pattern VK_FORMAT_R10X6_UNORM_PACK16_KHR = VK_FORMAT_R10X6_UNORM_PACK16+pattern FORMAT_R10X6_UNORM_PACK16_KHR = FORMAT_R10X6_UNORM_PACK16++ -- No documentation found for TopLevel "VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR"-pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR :: VkFormat-pattern VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16+pattern FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = FORMAT_R10X6G10X6_UNORM_2PACK16++ -- No documentation found for TopLevel "VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR"-pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR :: VkFormat-pattern VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16+pattern FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16++ -- No documentation found for TopLevel "VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR"-pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR :: VkFormat-pattern VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16+pattern FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16++ -- No documentation found for TopLevel "VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR"-pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR :: VkFormat-pattern VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16+pattern FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16++ -- No documentation found for TopLevel "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR"-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR :: VkFormat-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16+pattern FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16++ -- No documentation found for TopLevel "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR"-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR :: VkFormat-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16+pattern FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16++ -- No documentation found for TopLevel "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR"-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR :: VkFormat-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16+pattern FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16++ -- No documentation found for TopLevel "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR"-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR :: VkFormat-pattern VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16+pattern FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16++ -- No documentation found for TopLevel "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR"-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR :: VkFormat-pattern VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16+pattern FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16++ -- No documentation found for TopLevel "VK_FORMAT_R12X4_UNORM_PACK16_KHR"-pattern VK_FORMAT_R12X4_UNORM_PACK16_KHR :: VkFormat-pattern VK_FORMAT_R12X4_UNORM_PACK16_KHR = VK_FORMAT_R12X4_UNORM_PACK16+pattern FORMAT_R12X4_UNORM_PACK16_KHR = FORMAT_R12X4_UNORM_PACK16++ -- No documentation found for TopLevel "VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR"-pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR :: VkFormat-pattern VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16+pattern FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = FORMAT_R12X4G12X4_UNORM_2PACK16++ -- No documentation found for TopLevel "VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR"-pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR :: VkFormat-pattern VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16+pattern FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16++ -- No documentation found for TopLevel "VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR"-pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR :: VkFormat-pattern VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16+pattern FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16++ -- No documentation found for TopLevel "VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR"-pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR :: VkFormat-pattern VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16+pattern FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16++ -- No documentation found for TopLevel "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR"-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR :: VkFormat-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16+pattern FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16++ -- No documentation found for TopLevel "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR"-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR :: VkFormat-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16+pattern FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16++ -- No documentation found for TopLevel "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR"-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR :: VkFormat-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16+pattern FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16++ -- No documentation found for TopLevel "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR"-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR :: VkFormat-pattern VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16+pattern FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16++ -- No documentation found for TopLevel "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR"-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR :: VkFormat-pattern VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16+pattern FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16++ -- No documentation found for TopLevel "VK_FORMAT_G16B16G16R16_422_UNORM_KHR"-pattern VK_FORMAT_G16B16G16R16_422_UNORM_KHR :: VkFormat-pattern VK_FORMAT_G16B16G16R16_422_UNORM_KHR = VK_FORMAT_G16B16G16R16_422_UNORM+pattern FORMAT_G16B16G16R16_422_UNORM_KHR = FORMAT_G16B16G16R16_422_UNORM++ -- No documentation found for TopLevel "VK_FORMAT_B16G16R16G16_422_UNORM_KHR"-pattern VK_FORMAT_B16G16R16G16_422_UNORM_KHR :: VkFormat-pattern VK_FORMAT_B16G16R16G16_422_UNORM_KHR = VK_FORMAT_B16G16R16G16_422_UNORM+pattern FORMAT_B16G16R16G16_422_UNORM_KHR = FORMAT_B16G16R16G16_422_UNORM++ -- No documentation found for TopLevel "VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR"-pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR :: VkFormat-pattern VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM+pattern FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = FORMAT_G16_B16_R16_3PLANE_420_UNORM++ -- No documentation found for TopLevel "VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR"-pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR :: VkFormat-pattern VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM+pattern FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = FORMAT_G16_B16R16_2PLANE_420_UNORM++ -- No documentation found for TopLevel "VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR"-pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR :: VkFormat-pattern VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM+pattern FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = FORMAT_G16_B16_R16_3PLANE_422_UNORM++ -- No documentation found for TopLevel "VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR"-pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR :: VkFormat-pattern VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM+pattern FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = FORMAT_G16_B16R16_2PLANE_422_UNORM++ -- No documentation found for TopLevel "VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR"-pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR :: VkFormat-pattern VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM+pattern FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = FORMAT_G16_B16_R16_3PLANE_444_UNORM++ -- No documentation found for TopLevel "VK_IMAGE_ASPECT_PLANE_0_BIT_KHR"-pattern VK_IMAGE_ASPECT_PLANE_0_BIT_KHR :: VkImageAspectFlagBits-pattern VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = VK_IMAGE_ASPECT_PLANE_0_BIT+pattern IMAGE_ASPECT_PLANE_0_BIT_KHR = IMAGE_ASPECT_PLANE_0_BIT++ -- No documentation found for TopLevel "VK_IMAGE_ASPECT_PLANE_1_BIT_KHR"-pattern VK_IMAGE_ASPECT_PLANE_1_BIT_KHR :: VkImageAspectFlagBits-pattern VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = VK_IMAGE_ASPECT_PLANE_1_BIT+pattern IMAGE_ASPECT_PLANE_1_BIT_KHR = IMAGE_ASPECT_PLANE_1_BIT++ -- No documentation found for TopLevel "VK_IMAGE_ASPECT_PLANE_2_BIT_KHR"-pattern VK_IMAGE_ASPECT_PLANE_2_BIT_KHR :: VkImageAspectFlagBits-pattern VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = VK_IMAGE_ASPECT_PLANE_2_BIT+pattern IMAGE_ASPECT_PLANE_2_BIT_KHR = IMAGE_ASPECT_PLANE_2_BIT++ -- No documentation found for TopLevel "VK_IMAGE_CREATE_DISJOINT_BIT_KHR"-pattern VK_IMAGE_CREATE_DISJOINT_BIT_KHR :: VkImageCreateFlagBits-pattern VK_IMAGE_CREATE_DISJOINT_BIT_KHR = VK_IMAGE_CREATE_DISJOINT_BIT+pattern IMAGE_CREATE_DISJOINT_BIT_KHR = IMAGE_CREATE_DISJOINT_BIT++ -- No documentation found for TopLevel "VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR"-pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT+pattern FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT++ -- No documentation found for TopLevel "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR"-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT+pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT++ -- No documentation found for TopLevel "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR"-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT+pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT++ -- No documentation found for TopLevel "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR"-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT+pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT++ -- No documentation found for TopLevel "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR"-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT+pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT++ -- No documentation found for TopLevel "VK_FORMAT_FEATURE_DISJOINT_BIT_KHR"-pattern VK_FORMAT_FEATURE_DISJOINT_BIT_KHR :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = VK_FORMAT_FEATURE_DISJOINT_BIT+pattern FORMAT_FEATURE_DISJOINT_BIT_KHR = FORMAT_FEATURE_DISJOINT_BIT++ -- No documentation found for TopLevel "VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR"-pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR :: VkFormatFeatureFlagBits-pattern VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT+pattern FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT++ -- No documentation found for TopLevel "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR"-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR :: VkSamplerYcbcrModelConversion-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY+pattern SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY++ -- No documentation found for TopLevel "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR"-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR :: VkSamplerYcbcrModelConversion-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY+pattern SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY++ -- No documentation found for TopLevel "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR"-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR :: VkSamplerYcbcrModelConversion-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709+pattern SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709++ -- No documentation found for TopLevel "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR"-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR :: VkSamplerYcbcrModelConversion-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601+pattern SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601++ -- No documentation found for TopLevel "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR"-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR :: VkSamplerYcbcrModelConversion-pattern VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020+pattern SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020++ -- No documentation found for TopLevel "VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR"-pattern VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR :: VkSamplerYcbcrRange-pattern VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_FULL+pattern SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = SAMPLER_YCBCR_RANGE_ITU_FULL++ -- No documentation found for TopLevel "VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR"-pattern VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR :: VkSamplerYcbcrRange-pattern VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW+pattern SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = SAMPLER_YCBCR_RANGE_ITU_NARROW++ -- No documentation found for TopLevel "VK_CHROMA_LOCATION_COSITED_EVEN_KHR"-pattern VK_CHROMA_LOCATION_COSITED_EVEN_KHR :: VkChromaLocation-pattern VK_CHROMA_LOCATION_COSITED_EVEN_KHR = VK_CHROMA_LOCATION_COSITED_EVEN+pattern CHROMA_LOCATION_COSITED_EVEN_KHR = CHROMA_LOCATION_COSITED_EVEN++ -- No documentation found for TopLevel "VK_CHROMA_LOCATION_MIDPOINT_KHR"-pattern VK_CHROMA_LOCATION_MIDPOINT_KHR :: VkChromaLocation-pattern VK_CHROMA_LOCATION_MIDPOINT_KHR = VK_CHROMA_LOCATION_MIDPOINT+pattern CHROMA_LOCATION_MIDPOINT_KHR = CHROMA_LOCATION_MIDPOINT+++-- No documentation found for TopLevel "vkCreateSamplerYcbcrConversionKHR"+createSamplerYcbcrConversionKHR = createSamplerYcbcrConversion+++-- No documentation found for TopLevel "vkDestroySamplerYcbcrConversionKHR"+destroySamplerYcbcrConversionKHR = destroySamplerYcbcrConversion+++-- No documentation found for TopLevel "VkSamplerYcbcrConversionKHR"+type SamplerYcbcrConversionKHR = SamplerYcbcrConversion+++-- No documentation found for TopLevel "VkSamplerYcbcrModelConversionKHR"+type SamplerYcbcrModelConversionKHR = SamplerYcbcrModelConversion+++-- No documentation found for TopLevel "VkSamplerYcbcrRangeKHR"+type SamplerYcbcrRangeKHR = SamplerYcbcrRange+++-- No documentation found for TopLevel "VkChromaLocationKHR"+type ChromaLocationKHR = ChromaLocation+++-- No documentation found for TopLevel "VkSamplerYcbcrConversionInfoKHR"+type SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo+++-- No documentation found for TopLevel "VkSamplerYcbcrConversionCreateInfoKHR"+type SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo+++-- No documentation found for TopLevel "VkBindImagePlaneMemoryInfoKHR"+type BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo+++-- No documentation found for TopLevel "VkImagePlaneMemoryRequirementsInfoKHR"+type ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo+++-- No documentation found for TopLevel "VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR"+type PhysicalDeviceSamplerYcbcrConversionFeaturesKHR = PhysicalDeviceSamplerYcbcrConversionFeatures+++-- No documentation found for TopLevel "VkSamplerYcbcrConversionImageFormatPropertiesKHR"+type SamplerYcbcrConversionImageFormatPropertiesKHR = SamplerYcbcrConversionImageFormatProperties+++type KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14++-- No documentation found for TopLevel "VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION"+pattern KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14+++type KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion"++-- No documentation found for TopLevel "VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME"+pattern KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_separate_depth_stencil_layouts.hs view
@@ -0,0 +1,81 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR+ , pattern STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR+ , pattern STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR+ , pattern IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR+ , pattern IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR+ , pattern IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR+ , pattern IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR+ , PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR+ , AttachmentReferenceStencilLayoutKHR+ , AttachmentDescriptionStencilLayoutKHR+ , KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION+ , pattern KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION+ , KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME+ , pattern KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME+ ) where++import Data.String (IsString)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (AttachmentDescriptionStencilLayout)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (AttachmentReferenceStencilLayout)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts (PhysicalDeviceSeparateDepthStencilLayoutsFeatures)+import Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout(IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL))+import Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout(IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL))+import Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout(IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL))+import Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout(IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR"+pattern STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR"+pattern STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT+++-- No documentation found for TopLevel "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR"+pattern IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL+++-- No documentation found for TopLevel "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR"+pattern IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL+++-- No documentation found for TopLevel "VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR"+pattern IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL+++-- No documentation found for TopLevel "VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR"+pattern IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL+++-- No documentation found for TopLevel "VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR"+type PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = PhysicalDeviceSeparateDepthStencilLayoutsFeatures+++-- No documentation found for TopLevel "VkAttachmentReferenceStencilLayoutKHR"+type AttachmentReferenceStencilLayoutKHR = AttachmentReferenceStencilLayout+++-- No documentation found for TopLevel "VkAttachmentDescriptionStencilLayoutKHR"+type AttachmentDescriptionStencilLayoutKHR = AttachmentDescriptionStencilLayout+++type KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION"+pattern KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1+++type KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts"++-- No documentation found for TopLevel "VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME"+pattern KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_shader_atomic_int64.hs view
@@ -0,0 +1,33 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_shader_atomic_int64 ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR+ , PhysicalDeviceShaderAtomicInt64FeaturesKHR+ , KHR_SHADER_ATOMIC_INT64_SPEC_VERSION+ , pattern KHR_SHADER_ATOMIC_INT64_SPEC_VERSION+ , KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME+ , pattern KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME+ ) where++import Data.String (IsString)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64 (PhysicalDeviceShaderAtomicInt64Features)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES+++-- No documentation found for TopLevel "VkPhysicalDeviceShaderAtomicInt64FeaturesKHR"+type PhysicalDeviceShaderAtomicInt64FeaturesKHR = PhysicalDeviceShaderAtomicInt64Features+++type KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION"+pattern KHR_SHADER_ATOMIC_INT64_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1+++type KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64"++-- No documentation found for TopLevel "VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME"+pattern KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_shader_clock.hs view
@@ -0,0 +1,108 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_shader_clock ( PhysicalDeviceShaderClockFeaturesKHR(..)+ , KHR_SHADER_CLOCK_SPEC_VERSION+ , pattern KHR_SHADER_CLOCK_SPEC_VERSION+ , KHR_SHADER_CLOCK_EXTENSION_NAME+ , pattern KHR_SHADER_CLOCK_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR))+-- | VkPhysicalDeviceShaderClockFeaturesKHR - Structure describing features+-- supported by VK_KHR_shader_clock+--+-- = Description+--+-- If the 'PhysicalDeviceShaderClockFeaturesKHR' structure is included in+-- the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether each feature is supported.+-- 'PhysicalDeviceShaderClockFeaturesKHR' can also be included in the+-- @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable the features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceShaderClockFeaturesKHR = PhysicalDeviceShaderClockFeaturesKHR+ { -- | @shaderSubgroupClock@ indicates whether shaders /can/ support @Subgroup@+ -- scoped clock reads.+ shaderSubgroupClock :: Bool+ , -- | @shaderDeviceClock@ indicates whether shaders /can/ support+ -- 'Graphics.Vulkan.Core10.Handles.Device' scoped clock reads.+ shaderDeviceClock :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceShaderClockFeaturesKHR++instance ToCStruct PhysicalDeviceShaderClockFeaturesKHR where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceShaderClockFeaturesKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderSubgroupClock))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (shaderDeviceClock))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceShaderClockFeaturesKHR where+ peekCStruct p = do+ shaderSubgroupClock <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ shaderDeviceClock <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ pure $ PhysicalDeviceShaderClockFeaturesKHR+ (bool32ToBool shaderSubgroupClock) (bool32ToBool shaderDeviceClock)++instance Storable PhysicalDeviceShaderClockFeaturesKHR where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceShaderClockFeaturesKHR where+ zero = PhysicalDeviceShaderClockFeaturesKHR+ zero+ zero+++type KHR_SHADER_CLOCK_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_SHADER_CLOCK_SPEC_VERSION"+pattern KHR_SHADER_CLOCK_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_SHADER_CLOCK_SPEC_VERSION = 1+++type KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock"++-- No documentation found for TopLevel "VK_KHR_SHADER_CLOCK_EXTENSION_NAME"+pattern KHR_SHADER_CLOCK_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_shader_clock.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_shader_clock (PhysicalDeviceShaderClockFeaturesKHR) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceShaderClockFeaturesKHR++instance ToCStruct PhysicalDeviceShaderClockFeaturesKHR+instance Show PhysicalDeviceShaderClockFeaturesKHR++instance FromCStruct PhysicalDeviceShaderClockFeaturesKHR+
src/Graphics/Vulkan/Extensions/VK_KHR_shader_draw_parameters.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_KHR_shader_draw_parameters- ( pattern VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION- , pattern VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_KHR_shader_draw_parameters ( KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION+ , pattern KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION+ , KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME+ , pattern KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION"+pattern KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 +type KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" --- No documentation found for TopLevel "VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION"-pattern VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION :: Integral a => a-pattern VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME"-pattern VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters"+pattern KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_shader_float16_int8.hs view
@@ -0,0 +1,43 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_shader_float16_int8 ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR+ , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR+ , PhysicalDeviceShaderFloat16Int8FeaturesKHR+ , PhysicalDeviceFloat16Int8FeaturesKHR+ , KHR_SHADER_FLOAT16_INT8_SPEC_VERSION+ , pattern KHR_SHADER_FLOAT16_INT8_SPEC_VERSION+ , KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME+ , pattern KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME+ ) where++import Data.String (IsString)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8 (PhysicalDeviceShaderFloat16Int8Features)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES+++-- No documentation found for TopLevel "VkPhysicalDeviceShaderFloat16Int8FeaturesKHR"+type PhysicalDeviceShaderFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features+++-- No documentation found for TopLevel "VkPhysicalDeviceFloat16Int8FeaturesKHR"+type PhysicalDeviceFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features+++type KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION"+pattern KHR_SHADER_FLOAT16_INT8_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1+++type KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8"++-- No documentation found for TopLevel "VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME"+pattern KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_shader_float_controls.hs view
@@ -0,0 +1,57 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_shader_float_controls ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR+ , pattern SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR+ , pattern SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR+ , pattern SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR+ , ShaderFloatControlsIndependenceKHR+ , PhysicalDeviceFloatControlsPropertiesKHR+ , KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION+ , pattern KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION+ , KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME+ , pattern KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME+ ) where++import Data.String (IsString)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls (PhysicalDeviceFloatControlsProperties)+import Graphics.Vulkan.Core12.Enums.ShaderFloatControlsIndependence (ShaderFloatControlsIndependence)+import Graphics.Vulkan.Core12.Enums.ShaderFloatControlsIndependence (ShaderFloatControlsIndependence(SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY))+import Graphics.Vulkan.Core12.Enums.ShaderFloatControlsIndependence (ShaderFloatControlsIndependence(SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL))+import Graphics.Vulkan.Core12.Enums.ShaderFloatControlsIndependence (ShaderFloatControlsIndependence(SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES+++-- No documentation found for TopLevel "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR"+pattern SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY+++-- No documentation found for TopLevel "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR"+pattern SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL+++-- No documentation found for TopLevel "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR"+pattern SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE+++-- No documentation found for TopLevel "VkShaderFloatControlsIndependenceKHR"+type ShaderFloatControlsIndependenceKHR = ShaderFloatControlsIndependence+++-- No documentation found for TopLevel "VkPhysicalDeviceFloatControlsPropertiesKHR"+type PhysicalDeviceFloatControlsPropertiesKHR = PhysicalDeviceFloatControlsProperties+++type KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4++-- No documentation found for TopLevel "VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION"+pattern KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4+++type KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls"++-- No documentation found for TopLevel "VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME"+pattern KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_shader_non_semantic_info.hs view
@@ -0,0 +1,22 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_shader_non_semantic_info ( KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION+ , pattern KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION+ , KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME+ , pattern KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME+ ) where++import Data.String (IsString)++type KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION"+pattern KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1+++type KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info"++-- No documentation found for TopLevel "VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME"+pattern KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_shader_subgroup_extended_types.hs view
@@ -0,0 +1,33 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_shader_subgroup_extended_types ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR+ , PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR+ , KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION+ , pattern KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION+ , KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME+ , pattern KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME+ ) where++import Data.String (IsString)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types (PhysicalDeviceShaderSubgroupExtendedTypesFeatures)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES+++-- No documentation found for TopLevel "VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR"+type PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = PhysicalDeviceShaderSubgroupExtendedTypesFeatures+++type KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION"+pattern KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1+++type KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types"++-- No documentation found for TopLevel "VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME"+pattern KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types"+
@@ -1,91 +1,94 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image- ( pattern VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR- , pattern VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR- , pattern VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR- , pattern VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR- , pattern VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION- , pattern VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME- , vkGetSwapchainStatusKHR- , VkSharedPresentSurfaceCapabilitiesKHR(..)- ) where--import Data.String- ( IsString- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- , VkImageUsageFlags- )-import Graphics.Vulkan.Core10.Image- ( VkImageLayout(..)- )-import Graphics.Vulkan.Extensions.VK_KHR_surface- ( VkPresentModeKHR(..)- )-import Graphics.Vulkan.Extensions.VK_KHR_swapchain- ( VkSwapchainKHR- )+module Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image ( getSwapchainStatusKHR+ , SharedPresentSurfaceCapabilitiesKHR(..)+ , PresentModeKHR( PRESENT_MODE_IMMEDIATE_KHR+ , PRESENT_MODE_MAILBOX_KHR+ , PRESENT_MODE_FIFO_KHR+ , PRESENT_MODE_FIFO_RELAXED_KHR+ , PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR+ , PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR+ , ..+ )+ , KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION+ , pattern KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION+ , KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME+ , pattern KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME+ , SwapchainKHR(..)+ ) where +import Foreign.Marshal.Alloc (allocaBytesAligned)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+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 Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetSwapchainStatusKHR))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR)+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetSwapchainStatusKHR+ :: FunPtr (Ptr Device_T -> SwapchainKHR -> IO Result) -> Ptr Device_T -> SwapchainKHR -> IO Result --- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR"-pattern VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR :: VkImageLayout-pattern VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = VkImageLayout 1000111000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"-pattern VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = VkStructureType 1000111000--- No documentation found for Nested "VkPresentModeKHR" "VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR"-pattern VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR :: VkPresentModeKHR-pattern VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = VkPresentModeKHR 1000111000--- No documentation found for Nested "VkPresentModeKHR" "VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR"-pattern VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR :: VkPresentModeKHR-pattern VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = VkPresentModeKHR 1000111001--- No documentation found for TopLevel "VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION"-pattern VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION :: Integral a => a-pattern VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME"-pattern VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" -- | vkGetSwapchainStatusKHR - Get a swapchain’s status -- -- = Parameters ----- - @device@ is the device associated with @swapchain@.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the device associated+-- with @swapchain@. -- -- - @swapchain@ is the swapchain to query. -- -- == Valid Usage (Implicit) ----- - @device@ /must/ be a valid @VkDevice@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle ----- - @swapchain@ /must/ be a valid @VkSwapchainKHR@ handle+-- - @swapchain@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR' handle ----- - Both of @device@, and @swapchain@ /must/ have been created,--- allocated, or retrieved from the same @VkInstance@+-- - Both of 'Graphics.Vulkan.Core10.Handles.Device', and @swapchain@+-- /must/ have been created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Instance' -- -- == Host Synchronization --@@ -93,67 +96,240 @@ -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- - @VK_SUBOPTIMAL_KHR@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUBOPTIMAL_KHR' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- - @VK_ERROR_DEVICE_LOST@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' ----- - @VK_ERROR_OUT_OF_DATE_KHR@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY' ----- - @VK_ERROR_SURFACE_LOST_KHR@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetSwapchainStatusKHR" vkGetSwapchainStatusKHR :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> IO VkResult+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR'+getSwapchainStatusKHR :: Device -> SwapchainKHR -> IO (Result)+getSwapchainStatusKHR device swapchain = do+ let vkGetSwapchainStatusKHR' = mkVkGetSwapchainStatusKHR (pVkGetSwapchainStatusKHR (deviceCmds (device :: Device)))+ r <- vkGetSwapchainStatusKHR' (deviceHandle (device)) (swapchain)+ when (r < SUCCESS) (throwIO (VulkanException r))+ pure $ (r)++ -- | VkSharedPresentSurfaceCapabilitiesKHR - structure describing -- capabilities of a surface for shared presentation -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR@--- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlags',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkSharedPresentSurfaceCapabilitiesKHR = VkSharedPresentSurfaceCapabilitiesKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @sharedPresentSupportedUsageFlags@ is a bitmask of- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits'- -- representing the ways the application /can/ use the shared presentable- -- image from a swapchain created with- -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkPresentModeKHR' set to- -- @VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR@ or- -- @VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR@ for the surface on the- -- specified device. @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@ /must/ be- -- included in the set but implementations /may/ support additional usages.- vkSharedPresentSupportedUsageFlags :: VkImageUsageFlags- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data SharedPresentSurfaceCapabilitiesKHR = SharedPresentSurfaceCapabilitiesKHR+ { -- | @sharedPresentSupportedUsageFlags@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits'+ -- representing the ways the application /can/ use the shared presentable+ -- image from a swapchain created with 'PresentModeKHR' set to+ -- 'PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR' or+ -- 'PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR' for the surface on the+ -- specified device.+ -- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'+ -- /must/ be included in the set but implementations /may/ support+ -- additional usages.+ sharedPresentSupportedUsageFlags :: ImageUsageFlags }+ deriving (Typeable)+deriving instance Show SharedPresentSurfaceCapabilitiesKHR -instance Storable VkSharedPresentSurfaceCapabilitiesKHR where+instance ToCStruct SharedPresentSurfaceCapabilitiesKHR where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SharedPresentSurfaceCapabilitiesKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ImageUsageFlags)) (sharedPresentSupportedUsageFlags)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct SharedPresentSurfaceCapabilitiesKHR where+ peekCStruct p = do+ sharedPresentSupportedUsageFlags <- peek @ImageUsageFlags ((p `plusPtr` 16 :: Ptr ImageUsageFlags))+ pure $ SharedPresentSurfaceCapabilitiesKHR+ sharedPresentSupportedUsageFlags++instance Storable SharedPresentSurfaceCapabilitiesKHR where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkSharedPresentSurfaceCapabilitiesKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkSharedPresentSurfaceCapabilitiesKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkSharedPresentSurfaceCapabilitiesKHR))- *> poke (ptr `plusPtr` 16) (vkSharedPresentSupportedUsageFlags (poked :: VkSharedPresentSurfaceCapabilitiesKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SharedPresentSurfaceCapabilitiesKHR where+ zero = SharedPresentSurfaceCapabilitiesKHR+ zero+++-- | VkPresentModeKHR - presentation mode supported for a surface+--+-- = Description+--+-- The supported+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits' of+-- the presentable images of a swapchain created for a surface /may/ differ+-- depending on the presentation mode, and can be determined as per the+-- table below:+--+-- +----------------------------------------------+-------------------------------------------------------------------------------------------++-- | Presentation mode | Image usage flags |+-- +==============================================+===========================================================================================++-- | 'PRESENT_MODE_IMMEDIATE_KHR' | 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@supportedUsageFlags@ |+-- +----------------------------------------------+-------------------------------------------------------------------------------------------++-- | 'PRESENT_MODE_MAILBOX_KHR' | 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@supportedUsageFlags@ |+-- +----------------------------------------------+-------------------------------------------------------------------------------------------++-- | 'PRESENT_MODE_FIFO_KHR' | 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@supportedUsageFlags@ |+-- +----------------------------------------------+-------------------------------------------------------------------------------------------++-- | 'PRESENT_MODE_FIFO_RELAXED_KHR' | 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@supportedUsageFlags@ |+-- +----------------------------------------------+-------------------------------------------------------------------------------------------++-- | 'PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR' | 'SharedPresentSurfaceCapabilitiesKHR'::@sharedPresentSupportedUsageFlags@ |+-- +----------------------------------------------+-------------------------------------------------------------------------------------------++-- | 'PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR' | 'SharedPresentSurfaceCapabilitiesKHR'::@sharedPresentSupportedUsageFlags@ |+-- +----------------------------------------------+-------------------------------------------------------------------------------------------++--+-- Presentable image usage queries+--+-- Note+--+-- For reference, the mode indicated by 'PRESENT_MODE_FIFO_KHR' is+-- equivalent to the behavior of {wgl|glX|egl}SwapBuffers with a swap+-- interval of 1, while the mode indicated by+-- 'PRESENT_MODE_FIFO_RELAXED_KHR' is equivalent to the behavior of+-- {wgl|glX}SwapBuffers with a swap interval of -1 (from the+-- {WGL|GLX}_EXT_swap_control_tear extensions).+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.getPhysicalDeviceSurfacePresentModes2EXT',+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfacePresentModesKHR'+newtype PresentModeKHR = PresentModeKHR Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'PRESENT_MODE_IMMEDIATE_KHR' specifies that the presentation engine does+-- not wait for a vertical blanking period to update the current image,+-- meaning this mode /may/ result in visible tearing. No internal queuing+-- of presentation requests is needed, as the requests are applied+-- immediately.+pattern PRESENT_MODE_IMMEDIATE_KHR = PresentModeKHR 0+-- | 'PRESENT_MODE_MAILBOX_KHR' specifies that the presentation engine waits+-- for the next vertical blanking period to update the current image.+-- Tearing /cannot/ be observed. An internal single-entry queue is used to+-- hold pending presentation requests. If the queue is full when a new+-- presentation request is received, the new request replaces the existing+-- entry, and any images associated with the prior entry become available+-- for re-use by the application. One request is removed from the queue and+-- processed during each vertical blanking period in which the queue is+-- non-empty.+pattern PRESENT_MODE_MAILBOX_KHR = PresentModeKHR 1+-- | 'PRESENT_MODE_FIFO_KHR' specifies that the presentation engine waits for+-- the next vertical blanking period to update the current image. Tearing+-- /cannot/ be observed. An internal queue is used to hold pending+-- presentation requests. New requests are appended to the end of the+-- queue, and one request is removed from the beginning of the queue and+-- processed during each vertical blanking period in which the queue is+-- non-empty. This is the only value of @presentMode@ that is /required/ to+-- be supported.+pattern PRESENT_MODE_FIFO_KHR = PresentModeKHR 2+-- | 'PRESENT_MODE_FIFO_RELAXED_KHR' specifies that the presentation engine+-- generally waits for the next vertical blanking period to update the+-- current image. If a vertical blanking period has already passed since+-- the last update of the current image then the presentation engine does+-- not wait for another vertical blanking period for the update, meaning+-- this mode /may/ result in visible tearing in this case. This mode is+-- useful for reducing visual stutter with an application that will mostly+-- present a new image before the next vertical blanking period, but may+-- occasionally be late, and present a new image just after the next+-- vertical blanking period. An internal queue is used to hold pending+-- presentation requests. New requests are appended to the end of the+-- queue, and one request is removed from the beginning of the queue and+-- processed during or after each vertical blanking period in which the+-- queue is non-empty.+pattern PRESENT_MODE_FIFO_RELAXED_KHR = PresentModeKHR 3+-- | 'PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR' specifies that the+-- presentation engine and application have concurrent access to a single+-- image, which is referred to as a /shared presentable image/. The+-- presentation engine periodically updates the current image on its+-- regular refresh cycle. The application is only required to make one+-- initial presentation request, after which the presentation engine /must/+-- update the current image without any need for further presentation+-- requests. The application /can/ indicate the image contents have been+-- updated by making a presentation request, but this does not guarantee+-- the timing of when it will be updated. This mode /may/ result in visible+-- tearing if rendering to the image is not timed correctly.+pattern PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = PresentModeKHR 1000111001+-- | 'PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR' specifies that the presentation+-- engine and application have concurrent access to a single image, which+-- is referred to as a /shared presentable image/. The presentation engine+-- is only required to update the current image after a new presentation+-- request is received. Therefore the application /must/ make a+-- presentation request whenever an update is required. However, the+-- presentation engine /may/ update the current image at any point, meaning+-- this mode /may/ result in visible tearing.+pattern PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = PresentModeKHR 1000111000+{-# complete PRESENT_MODE_IMMEDIATE_KHR,+ PRESENT_MODE_MAILBOX_KHR,+ PRESENT_MODE_FIFO_KHR,+ PRESENT_MODE_FIFO_RELAXED_KHR,+ PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR,+ PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR :: PresentModeKHR #-}++instance Show PresentModeKHR where+ showsPrec p = \case+ PRESENT_MODE_IMMEDIATE_KHR -> showString "PRESENT_MODE_IMMEDIATE_KHR"+ PRESENT_MODE_MAILBOX_KHR -> showString "PRESENT_MODE_MAILBOX_KHR"+ PRESENT_MODE_FIFO_KHR -> showString "PRESENT_MODE_FIFO_KHR"+ PRESENT_MODE_FIFO_RELAXED_KHR -> showString "PRESENT_MODE_FIFO_RELAXED_KHR"+ PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR -> showString "PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR"+ PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR -> showString "PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR"+ PresentModeKHR x -> showParen (p >= 11) (showString "PresentModeKHR " . showsPrec 11 x)++instance Read PresentModeKHR where+ readPrec = parens (choose [("PRESENT_MODE_IMMEDIATE_KHR", pure PRESENT_MODE_IMMEDIATE_KHR)+ , ("PRESENT_MODE_MAILBOX_KHR", pure PRESENT_MODE_MAILBOX_KHR)+ , ("PRESENT_MODE_FIFO_KHR", pure PRESENT_MODE_FIFO_KHR)+ , ("PRESENT_MODE_FIFO_RELAXED_KHR", pure PRESENT_MODE_FIFO_RELAXED_KHR)+ , ("PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR", pure PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR)+ , ("PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR", pure PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR)]+ ++++ prec 10 (do+ expectP (Ident "PresentModeKHR")+ v <- step readPrec+ pure (PresentModeKHR v)))+++type KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION"+pattern KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1+++type KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image"++-- No documentation found for TopLevel "VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME"+pattern KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image"+
@@ -0,0 +1,18 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image ( SharedPresentSurfaceCapabilitiesKHR+ , PresentModeKHR+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data SharedPresentSurfaceCapabilitiesKHR++instance ToCStruct SharedPresentSurfaceCapabilitiesKHR+instance Show SharedPresentSurfaceCapabilitiesKHR++instance FromCStruct SharedPresentSurfaceCapabilitiesKHR+++data PresentModeKHR+
+ src/Graphics/Vulkan/Extensions/VK_KHR_spirv_1_4.hs view
@@ -0,0 +1,22 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_spirv_1_4 ( KHR_SPIRV_1_4_SPEC_VERSION+ , pattern KHR_SPIRV_1_4_SPEC_VERSION+ , KHR_SPIRV_1_4_EXTENSION_NAME+ , pattern KHR_SPIRV_1_4_EXTENSION_NAME+ ) where++import Data.String (IsString)++type KHR_SPIRV_1_4_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_SPIRV_1_4_SPEC_VERSION"+pattern KHR_SPIRV_1_4_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_SPIRV_1_4_SPEC_VERSION = 1+++type KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4"++-- No documentation found for TopLevel "VK_KHR_SPIRV_1_4_EXTENSION_NAME"+pattern KHR_SPIRV_1_4_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4"+
src/Graphics/Vulkan/Extensions/VK_KHR_storage_buffer_storage_class.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_KHR_storage_buffer_storage_class- ( pattern VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION- , pattern VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_KHR_storage_buffer_storage_class ( KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION+ , pattern KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION+ , KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME+ , pattern KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION"+pattern KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 +type KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" --- No documentation found for TopLevel "VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION"-pattern VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION :: Integral a => a-pattern VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME"-pattern VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class"+pattern KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class"+
src/Graphics/Vulkan/Extensions/VK_KHR_surface.hs view
@@ -1,1112 +1,748 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_KHR_surface- ( VkColorSpaceKHR(..)- , pattern VK_COLOR_SPACE_SRGB_NONLINEAR_KHR- , VkPresentModeKHR(..)- , pattern VK_PRESENT_MODE_IMMEDIATE_KHR- , pattern VK_PRESENT_MODE_MAILBOX_KHR- , pattern VK_PRESENT_MODE_FIFO_KHR- , pattern VK_PRESENT_MODE_FIFO_RELAXED_KHR- , VkCompositeAlphaFlagBitsKHR(..)- , pattern VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR- , pattern VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR- , pattern VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR- , pattern VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR- , VkSurfaceTransformFlagBitsKHR(..)- , pattern VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR- , pattern VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR- , pattern VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR- , pattern VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR- , pattern VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR- , pattern VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR- , pattern VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR- , pattern VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR- , pattern VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR- , pattern VK_ERROR_SURFACE_LOST_KHR- , pattern VK_ERROR_NATIVE_WINDOW_IN_USE_KHR- , pattern VK_OBJECT_TYPE_SURFACE_KHR- , pattern VK_KHR_SURFACE_SPEC_VERSION- , pattern VK_KHR_SURFACE_EXTENSION_NAME- , pattern VK_COLORSPACE_SRGB_NONLINEAR_KHR- , VkSurfaceKHR- , vkDestroySurfaceKHR- , vkGetPhysicalDeviceSurfaceSupportKHR- , vkGetPhysicalDeviceSurfaceCapabilitiesKHR- , vkGetPhysicalDeviceSurfaceFormatsKHR- , vkGetPhysicalDeviceSurfacePresentModesKHR- , VkSurfaceCapabilitiesKHR(..)- , VkSurfaceFormatKHR(..)- , VkCompositeAlphaFlagsKHR- , VkSurfaceTransformFlagsKHR- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Int- ( Int32- )-import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkFormat(..)- , VkObjectType(..)- , VkResult(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkImageUsageFlags- , VkInstance- , VkPhysicalDevice- )-import Graphics.Vulkan.Core10.Pipeline- ( VkExtent2D(..)- )----- ** VkColorSpaceKHR---- | VkColorSpaceKHR - supported color space of the presentation engine------ = Description------ - @VK_COLOR_SPACE_SRGB_NONLINEAR_KHR@ specifies support for the sRGB--- color space.------ - @VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT@ specifies support for the--- Display-P3 color space and applies an sRGB-like transfer function--- (defined below).------ - @VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT@ specifies support for the--- extended sRGB color space and applies a linear transfer function.------ - @VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT@ specifies support for--- the extended sRGB color space and applies an sRGB transfer function.------ - @VK_COLOR_SPACE_DCI_P3_LINEAR_EXT@ specifies support for the DCI-P3--- color space and applies a linear OETF.------ - @VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT@ specifies support for the--- DCI-P3 color space and applies the Gamma 2.6 OETF.------ - @VK_COLOR_SPACE_BT709_LINEAR_EXT@ specifies support for the BT709--- color space and applies a linear OETF.------ - @VK_COLOR_SPACE_BT709_NONLINEAR_EXT@ specifies support for the BT709--- color space and applies the SMPTE 170M OETF.------ - @VK_COLOR_SPACE_BT2020_LINEAR_EXT@ specifies support for the BT2020--- color space and applies a linear OETF.------ - @VK_COLOR_SPACE_HDR10_ST2084_EXT@ specifies support for the HDR10--- (BT2020 color) space and applies the SMPTE ST2084 Perceptual--- Quantizer (PQ) OETF.------ - @VK_COLOR_SPACE_DOLBYVISION_EXT@ specifies support for the Dolby--- Vision (BT2020 color space), proprietary encoding, and applies the--- SMPTE ST2084 OETF.------ - @VK_COLOR_SPACE_HDR10_HLG_EXT@ specifies support for the HDR10--- (BT2020 color space) and applies the Hybrid Log Gamma (HLG) OETF.------ - @VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT@ specifies support for the--- AdobeRGB color space and applies a linear OETF.------ - @VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT@ specifies support for the--- AdobeRGB color space and applies the Gamma 2.2 OETF.------ - @VK_COLOR_SPACE_PASS_THROUGH_EXT@ specifies that color components--- are used “as is”. This is intended to allow applications to supply--- data for color spaces not described here.------ The color components of Non-linear color space swap chain images have--- had the appropriate transfer function applied. Vulkan requires that all--- implementations support the sRGB transfer function when using an SRGB--- pixel format. Other transfer functions, such as SMPTE 170M or SMPTE2084,--- /must/ not be performed by the implementation, but /can/ be performed by--- the application shader. This extension defines enums for--- 'VkColorSpaceKHR' that correspond to the following color spaces:------ +--------------+----------+----------+----------+-------------+------------+--- | Name | Red | Green | Blue | White-point | Transfer |--- | | Primary | Primary | Primary | | function |--- +==============+==========+==========+==========+=============+============+--- | DCI-P3 | 0.680, | 0.265, | 0.150, | 0.3127, | Gamma 2.6 |--- | | 0.320 | 0.690 | 0.060 | 0.3290 | |--- | | | | | (D65) | |--- +--------------+----------+----------+----------+-------------+------------+--- | Display-P3 | 0.680, | 0.265, | 0.150, | 0.3127, | Display-P3 |--- | | 0.320 | 0.690 | 0.060 | 0.3290 | |--- | | | | | (D65) | |--- +--------------+----------+----------+----------+-------------+------------+--- | BT709 | 0.640, | 0.300, | 0.150, | 0.3127, | SMPTE 170M |--- | | 0.330 | 0.600 | 0.060 | 0.3290 | |--- | | | | | (D65) | |--- +--------------+----------+----------+----------+-------------+------------+--- | sRGB | 0.640, | 0.300, | 0.150, | 0.3127, | sRGB |--- | | 0.330 | 0.600 | 0.060 | 0.3290 | |--- | | | | | (D65) | |--- +--------------+----------+----------+----------+-------------+------------+--- | extended | 0.640, | 0.300, | 0.150, | 0.3127, | extended |--- | sRGB | 0.330 | 0.600 | 0.060 | 0.3290 | sRGB |--- | | | | | (D65) | |--- +--------------+----------+----------+----------+-------------+------------+--- | HDR10_ST2084 | 0.708, | 0.170, | 0.131, | 0.3127, | ST2084 |--- | | 0.292 | 0.797 | 0.046 | 0.3290 | |--- | | | | | (D65) | |--- +--------------+----------+----------+----------+-------------+------------+--- | DOLBYVISION | 0.708, | 0.170, | 0.131, | 0.3127, | ST2084 |--- | | 0.292 | 0.797 | 0.046 | 0.3290 | |--- | | | | | (D65) | |--- +--------------+----------+----------+----------+-------------+------------+--- | HDR10_HLG | 0.708, | 0.170, | 0.131, | 0.3127, | HLG |--- | | 0.292 | 0.797 | 0.046 | 0.3290 | |--- | | | | | (D65) | |--- +--------------+----------+----------+----------+-------------+------------+--- | AdobeRGB | 0.640, | 0.210, | 0.150, | 0.3127, | AdobeRGB |--- | | 0.330 | 0.710 | 0.060 | 0.3290 | |--- | | | | | (D65) | |--- +--------------+----------+----------+----------+-------------+------------+------ Color Spaces and Attributes------ For Opto-Electrical Transfer Function (OETF), unless otherwise--- specified, the values of L and E are defined as:------ L - linear luminance of image \(0 \leq L \leq 1\) for conventional--- colorimetry------ E - corresponding electrical signal (value stored in memory)------ = See Also------ 'VkSurfaceFormatKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR'-newtype VkColorSpaceKHR = VkColorSpaceKHR Int32- deriving (Eq, Ord, Storable)--instance Show VkColorSpaceKHR where- showsPrec _ VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = showString "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkColorSpaceKHR 1000104001) = showString "VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT"- showsPrec _ (VkColorSpaceKHR 1000104002) = showString "VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT"- showsPrec _ (VkColorSpaceKHR 1000104003) = showString "VK_COLOR_SPACE_DCI_P3_LINEAR_EXT"- showsPrec _ (VkColorSpaceKHR 1000104004) = showString "VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT"- showsPrec _ (VkColorSpaceKHR 1000104005) = showString "VK_COLOR_SPACE_BT709_LINEAR_EXT"- showsPrec _ (VkColorSpaceKHR 1000104006) = showString "VK_COLOR_SPACE_BT709_NONLINEAR_EXT"- showsPrec _ (VkColorSpaceKHR 1000104007) = showString "VK_COLOR_SPACE_BT2020_LINEAR_EXT"- showsPrec _ (VkColorSpaceKHR 1000104008) = showString "VK_COLOR_SPACE_HDR10_ST2084_EXT"- showsPrec _ (VkColorSpaceKHR 1000104009) = showString "VK_COLOR_SPACE_DOLBYVISION_EXT"- showsPrec _ (VkColorSpaceKHR 1000104010) = showString "VK_COLOR_SPACE_HDR10_HLG_EXT"- showsPrec _ (VkColorSpaceKHR 1000104011) = showString "VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT"- showsPrec _ (VkColorSpaceKHR 1000104012) = showString "VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT"- showsPrec _ (VkColorSpaceKHR 1000104013) = showString "VK_COLOR_SPACE_PASS_THROUGH_EXT"- showsPrec _ (VkColorSpaceKHR 1000104014) = showString "VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT"- showsPrec p (VkColorSpaceKHR x) = showParen (p >= 11) (showString "VkColorSpaceKHR " . showsPrec 11 x)--instance Read VkColorSpaceKHR where- readPrec = parens ( choose [ ("VK_COLOR_SPACE_SRGB_NONLINEAR_KHR", pure VK_COLOR_SPACE_SRGB_NONLINEAR_KHR)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT", pure (VkColorSpaceKHR 1000104001))- , ("VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT", pure (VkColorSpaceKHR 1000104002))- , ("VK_COLOR_SPACE_DCI_P3_LINEAR_EXT", pure (VkColorSpaceKHR 1000104003))- , ("VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT", pure (VkColorSpaceKHR 1000104004))- , ("VK_COLOR_SPACE_BT709_LINEAR_EXT", pure (VkColorSpaceKHR 1000104005))- , ("VK_COLOR_SPACE_BT709_NONLINEAR_EXT", pure (VkColorSpaceKHR 1000104006))- , ("VK_COLOR_SPACE_BT2020_LINEAR_EXT", pure (VkColorSpaceKHR 1000104007))- , ("VK_COLOR_SPACE_HDR10_ST2084_EXT", pure (VkColorSpaceKHR 1000104008))- , ("VK_COLOR_SPACE_DOLBYVISION_EXT", pure (VkColorSpaceKHR 1000104009))- , ("VK_COLOR_SPACE_HDR10_HLG_EXT", pure (VkColorSpaceKHR 1000104010))- , ("VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT", pure (VkColorSpaceKHR 1000104011))- , ("VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT", pure (VkColorSpaceKHR 1000104012))- , ("VK_COLOR_SPACE_PASS_THROUGH_EXT", pure (VkColorSpaceKHR 1000104013))- , ("VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT", pure (VkColorSpaceKHR 1000104014))- ] +++- prec 10 (do- expectP (Ident "VkColorSpaceKHR")- v <- step readPrec- pure (VkColorSpaceKHR v)- )- )---- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR"-pattern VK_COLOR_SPACE_SRGB_NONLINEAR_KHR :: VkColorSpaceKHR-pattern VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = VkColorSpaceKHR 0--- ** VkPresentModeKHR---- | VkPresentModeKHR - presentation mode supported for a surface------ = Description------ - @VK_PRESENT_MODE_IMMEDIATE_KHR@ specifies that the presentation--- engine does not wait for a vertical blanking period to update the--- current image, meaning this mode /may/ result in visible tearing. No--- internal queuing of presentation requests is needed, as the requests--- are applied immediately.------ - @VK_PRESENT_MODE_MAILBOX_KHR@ specifies that the presentation engine--- waits for the next vertical blanking period to update the current--- image. Tearing /cannot/ be observed. An internal single-entry queue--- is used to hold pending presentation requests. If the queue is full--- when a new presentation request is received, the new request--- replaces the existing entry, and any images associated with the--- prior entry become available for re-use by the application. One--- request is removed from the queue and processed during each vertical--- blanking period in which the queue is non-empty.------ - @VK_PRESENT_MODE_FIFO_KHR@ specifies that the presentation engine--- waits for the next vertical blanking period to update the current--- image. Tearing /cannot/ be observed. An internal queue is used to--- hold pending presentation requests. New requests are appended to the--- end of the queue, and one request is removed from the beginning of--- the queue and processed during each vertical blanking period in--- which the queue is non-empty. This is the only value of--- @presentMode@ that is /required/ to be supported.------ - @VK_PRESENT_MODE_FIFO_RELAXED_KHR@ specifies that the presentation--- engine generally waits for the next vertical blanking period to--- update the current image. If a vertical blanking period has already--- passed since the last update of the current image then the--- presentation engine does not wait for another vertical blanking--- period for the update, meaning this mode /may/ result in visible--- tearing in this case. This mode is useful for reducing visual--- stutter with an application that will mostly present a new image--- before the next vertical blanking period, but may occasionally be--- late, and present a new image just after the next vertical blanking--- period. An internal queue is used to hold pending presentation--- requests. New requests are appended to the end of the queue, and one--- request is removed from the beginning of the queue and processed--- during or after each vertical blanking period in which the queue is--- non-empty.------ - @VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR@ specifies that the--- presentation engine and application have concurrent access to a--- single image, which is referred to as a /shared presentable image/.--- The presentation engine is only required to update the current image--- after a new presentation request is received. Therefore the--- application /must/ make a presentation request whenever an update is--- required. However, the presentation engine /may/ update the current--- image at any point, meaning this mode /may/ result in visible--- tearing.------ - @VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR@ specifies that the--- presentation engine and application have concurrent access to a--- single image, which is referred to as a /shared presentable image/.--- The presentation engine periodically updates the current image on--- its regular refresh cycle. The application is only required to make--- one initial presentation request, after which the presentation--- engine /must/ update the current image without any need for further--- presentation requests. The application /can/ indicate the image--- contents have been updated by making a presentation request, but--- this does not guarantee the timing of when it will be updated. This--- mode /may/ result in visible tearing if rendering to the image is--- not timed correctly.------ The supported--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits' of--- the presentable images of a swapchain created for a surface /may/ differ--- depending on the presentation mode, and can be determined as per the--- table below:------ +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+--- | Presentation mode | Image usage flags |--- +=================================================+========================================================================================================================================+--- | @VK_PRESENT_MODE_IMMEDIATE_KHR@ | 'VkSurfaceCapabilitiesKHR'::@supportedUsageFlags@ |--- +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+--- | @VK_PRESENT_MODE_MAILBOX_KHR@ | 'VkSurfaceCapabilitiesKHR'::@supportedUsageFlags@ |--- +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+--- | @VK_PRESENT_MODE_FIFO_KHR@ | 'VkSurfaceCapabilitiesKHR'::@supportedUsageFlags@ |--- +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+--- | @VK_PRESENT_MODE_FIFO_RELAXED_KHR@ | 'VkSurfaceCapabilitiesKHR'::@supportedUsageFlags@ |--- +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+--- | @VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR@ | 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.VkSharedPresentSurfaceCapabilitiesKHR'::@sharedPresentSupportedUsageFlags@ |--- +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+--- | @VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR@ | 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.VkSharedPresentSurfaceCapabilitiesKHR'::@sharedPresentSupportedUsageFlags@ |--- +-------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+------ Presentable image usage queries------ __Note__------ For reference, the mode indicated by @VK_PRESENT_MODE_FIFO_KHR@ is--- equivalent to the behavior of {wgl|glX|egl}SwapBuffers with a swap--- interval of 1, while the mode indicated by--- @VK_PRESENT_MODE_FIFO_RELAXED_KHR@ is equivalent to the behavior of--- {wgl|glX}SwapBuffers with a swap interval of -1 (from the--- {WGL|GLX}_EXT_swap_control_tear extensions).------ = See Also------ 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR',--- 'vkGetPhysicalDeviceSurfacePresentModesKHR'-newtype VkPresentModeKHR = VkPresentModeKHR Int32- deriving (Eq, Ord, Storable)--instance Show VkPresentModeKHR where- showsPrec _ VK_PRESENT_MODE_IMMEDIATE_KHR = showString "VK_PRESENT_MODE_IMMEDIATE_KHR"- showsPrec _ VK_PRESENT_MODE_MAILBOX_KHR = showString "VK_PRESENT_MODE_MAILBOX_KHR"- showsPrec _ VK_PRESENT_MODE_FIFO_KHR = showString "VK_PRESENT_MODE_FIFO_KHR"- showsPrec _ VK_PRESENT_MODE_FIFO_RELAXED_KHR = showString "VK_PRESENT_MODE_FIFO_RELAXED_KHR"- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkPresentModeKHR 1000111000) = showString "VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR"- showsPrec _ (VkPresentModeKHR 1000111001) = showString "VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR"- showsPrec p (VkPresentModeKHR x) = showParen (p >= 11) (showString "VkPresentModeKHR " . showsPrec 11 x)--instance Read VkPresentModeKHR where- readPrec = parens ( choose [ ("VK_PRESENT_MODE_IMMEDIATE_KHR", pure VK_PRESENT_MODE_IMMEDIATE_KHR)- , ("VK_PRESENT_MODE_MAILBOX_KHR", pure VK_PRESENT_MODE_MAILBOX_KHR)- , ("VK_PRESENT_MODE_FIFO_KHR", pure VK_PRESENT_MODE_FIFO_KHR)- , ("VK_PRESENT_MODE_FIFO_RELAXED_KHR", pure VK_PRESENT_MODE_FIFO_RELAXED_KHR)- , -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR", pure (VkPresentModeKHR 1000111000))- , ("VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR", pure (VkPresentModeKHR 1000111001))- ] +++- prec 10 (do- expectP (Ident "VkPresentModeKHR")- v <- step readPrec- pure (VkPresentModeKHR v)- )- )---- No documentation found for Nested "VkPresentModeKHR" "VK_PRESENT_MODE_IMMEDIATE_KHR"-pattern VK_PRESENT_MODE_IMMEDIATE_KHR :: VkPresentModeKHR-pattern VK_PRESENT_MODE_IMMEDIATE_KHR = VkPresentModeKHR 0---- No documentation found for Nested "VkPresentModeKHR" "VK_PRESENT_MODE_MAILBOX_KHR"-pattern VK_PRESENT_MODE_MAILBOX_KHR :: VkPresentModeKHR-pattern VK_PRESENT_MODE_MAILBOX_KHR = VkPresentModeKHR 1---- No documentation found for Nested "VkPresentModeKHR" "VK_PRESENT_MODE_FIFO_KHR"-pattern VK_PRESENT_MODE_FIFO_KHR :: VkPresentModeKHR-pattern VK_PRESENT_MODE_FIFO_KHR = VkPresentModeKHR 2---- No documentation found for Nested "VkPresentModeKHR" "VK_PRESENT_MODE_FIFO_RELAXED_KHR"-pattern VK_PRESENT_MODE_FIFO_RELAXED_KHR :: VkPresentModeKHR-pattern VK_PRESENT_MODE_FIFO_RELAXED_KHR = VkPresentModeKHR 3--- ** VkCompositeAlphaFlagBitsKHR---- | VkCompositeAlphaFlagBitsKHR - alpha compositing modes supported on a--- device------ = Description------ These values are described as follows:------ - @VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR@: The alpha channel, if it--- exists, of the images is ignored in the compositing process.--- Instead, the image is treated as if it has a constant alpha of 1.0.------ - @VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR@: The alpha channel, if--- it exists, of the images is respected in the compositing process.--- The non-alpha channels of the image are expected to already be--- multiplied by the alpha channel by the application.------ - @VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR@: The alpha channel, if--- it exists, of the images is respected in the compositing process.--- The non-alpha channels of the image are not expected to already be--- multiplied by the alpha channel by the application; instead, the--- compositor will multiply the non-alpha channels of the image by the--- alpha channel during compositing.------ - @VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR@: The way in which the--- presentation engine treats the alpha channel in the images is--- unknown to the Vulkan API. Instead, the application is responsible--- for setting the composite alpha blending mode using native window--- system commands. If the application does not set the blending mode--- using native window system commands, then a platform-specific--- default will be used.------ = See Also------ 'VkCompositeAlphaFlagsKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR'-newtype VkCompositeAlphaFlagBitsKHR = VkCompositeAlphaFlagBitsKHR VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkCompositeAlphaFlagBitsKHR where- showsPrec _ VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = showString "VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"- showsPrec _ VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = showString "VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"- showsPrec _ VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = showString "VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"- showsPrec _ VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = showString "VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"- showsPrec p (VkCompositeAlphaFlagBitsKHR x) = showParen (p >= 11) (showString "VkCompositeAlphaFlagBitsKHR " . showsPrec 11 x)--instance Read VkCompositeAlphaFlagBitsKHR where- readPrec = parens ( choose [ ("VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR", pure VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR)- , ("VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR", pure VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR)- , ("VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR", pure VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR)- , ("VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR", pure VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR)- ] +++- prec 10 (do- expectP (Ident "VkCompositeAlphaFlagBitsKHR")- v <- step readPrec- pure (VkCompositeAlphaFlagBitsKHR v)- )- )---- No documentation found for Nested "VkCompositeAlphaFlagBitsKHR" "VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"-pattern VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR :: VkCompositeAlphaFlagBitsKHR-pattern VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = VkCompositeAlphaFlagBitsKHR 0x00000001---- No documentation found for Nested "VkCompositeAlphaFlagBitsKHR" "VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"-pattern VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR :: VkCompositeAlphaFlagBitsKHR-pattern VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = VkCompositeAlphaFlagBitsKHR 0x00000002---- No documentation found for Nested "VkCompositeAlphaFlagBitsKHR" "VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"-pattern VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR :: VkCompositeAlphaFlagBitsKHR-pattern VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = VkCompositeAlphaFlagBitsKHR 0x00000004---- No documentation found for Nested "VkCompositeAlphaFlagBitsKHR" "VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"-pattern VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR :: VkCompositeAlphaFlagBitsKHR-pattern VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = VkCompositeAlphaFlagBitsKHR 0x00000008--- ** VkSurfaceTransformFlagBitsKHR---- | VkSurfaceTransformFlagBitsKHR - presentation transforms supported on a--- device------ = See Also------ 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplaySurfaceCreateInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCapabilities2EXT',--- 'VkSurfaceCapabilitiesKHR', 'VkSurfaceTransformFlagsKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR'-newtype VkSurfaceTransformFlagBitsKHR = VkSurfaceTransformFlagBitsKHR VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkSurfaceTransformFlagBitsKHR where- showsPrec _ VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = showString "VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR"- showsPrec _ VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = showString "VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"- showsPrec _ VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = showString "VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"- showsPrec _ VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = showString "VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"- showsPrec _ VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = showString "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"- showsPrec _ VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = showString "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"- showsPrec _ VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = showString "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"- showsPrec _ VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = showString "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"- showsPrec _ VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = showString "VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"- showsPrec p (VkSurfaceTransformFlagBitsKHR x) = showParen (p >= 11) (showString "VkSurfaceTransformFlagBitsKHR " . showsPrec 11 x)--instance Read VkSurfaceTransformFlagBitsKHR where- readPrec = parens ( choose [ ("VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR", pure VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR)- , ("VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR", pure VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR)- , ("VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR", pure VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR)- , ("VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR", pure VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR)- , ("VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR", pure VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR)- , ("VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR", pure VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR)- , ("VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR", pure VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR)- , ("VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR", pure VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR)- , ("VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR", pure VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR)- ] +++- prec 10 (do- expectP (Ident "VkSurfaceTransformFlagBitsKHR")- v <- step readPrec- pure (VkSurfaceTransformFlagBitsKHR v)- )- )---- | @VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR@ specifies that image content is--- presented without being transformed.-pattern VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR :: VkSurfaceTransformFlagBitsKHR-pattern VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = VkSurfaceTransformFlagBitsKHR 0x00000001---- | @VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR@ specifies that image content is--- rotated 90 degrees clockwise.-pattern VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR :: VkSurfaceTransformFlagBitsKHR-pattern VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = VkSurfaceTransformFlagBitsKHR 0x00000002---- | @VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR@ specifies that image content--- is rotated 180 degrees clockwise.-pattern VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR :: VkSurfaceTransformFlagBitsKHR-pattern VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = VkSurfaceTransformFlagBitsKHR 0x00000004---- | @VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR@ specifies that image content--- is rotated 270 degrees clockwise.-pattern VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR :: VkSurfaceTransformFlagBitsKHR-pattern VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = VkSurfaceTransformFlagBitsKHR 0x00000008---- | @VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR@ specifies that image--- content is mirrored horizontally.-pattern VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR :: VkSurfaceTransformFlagBitsKHR-pattern VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = VkSurfaceTransformFlagBitsKHR 0x00000010---- | @VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR@ specifies--- that image content is mirrored horizontally, then rotated 90 degrees--- clockwise.-pattern VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR :: VkSurfaceTransformFlagBitsKHR-pattern VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = VkSurfaceTransformFlagBitsKHR 0x00000020---- | @VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR@ specifies--- that image content is mirrored horizontally, then rotated 180 degrees--- clockwise.-pattern VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR :: VkSurfaceTransformFlagBitsKHR-pattern VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = VkSurfaceTransformFlagBitsKHR 0x00000040---- | @VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR@ specifies--- that image content is mirrored horizontally, then rotated 270 degrees--- clockwise.-pattern VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR :: VkSurfaceTransformFlagBitsKHR-pattern VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = VkSurfaceTransformFlagBitsKHR 0x00000080---- | @VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR@ specifies that the presentation--- transform is not specified, and is instead determined by--- platform-specific considerations and mechanisms outside Vulkan.-pattern VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR :: VkSurfaceTransformFlagBitsKHR-pattern VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = VkSurfaceTransformFlagBitsKHR 0x00000100--- No documentation found for Nested "VkResult" "VK_ERROR_SURFACE_LOST_KHR"-pattern VK_ERROR_SURFACE_LOST_KHR :: VkResult-pattern VK_ERROR_SURFACE_LOST_KHR = VkResult (-1000000000)--- No documentation found for Nested "VkResult" "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR"-pattern VK_ERROR_NATIVE_WINDOW_IN_USE_KHR :: VkResult-pattern VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = VkResult (-1000000001)--- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SURFACE_KHR"-pattern VK_OBJECT_TYPE_SURFACE_KHR :: VkObjectType-pattern VK_OBJECT_TYPE_SURFACE_KHR = VkObjectType 1000000000--- No documentation found for TopLevel "VK_KHR_SURFACE_SPEC_VERSION"-pattern VK_KHR_SURFACE_SPEC_VERSION :: Integral a => a-pattern VK_KHR_SURFACE_SPEC_VERSION = 25--- No documentation found for TopLevel "VK_KHR_SURFACE_EXTENSION_NAME"-pattern VK_KHR_SURFACE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface"--- No documentation found for TopLevel "VK_COLORSPACE_SRGB_NONLINEAR_KHR"-pattern VK_COLORSPACE_SRGB_NONLINEAR_KHR :: VkColorSpaceKHR-pattern VK_COLORSPACE_SRGB_NONLINEAR_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR--- | Dummy data to tag the 'Ptr' with-data VkSurfaceKHR_T--- | VkSurfaceKHR - Opaque handle to a surface object------ = Description------ The @VK_KHR_surface@ extension declares the @VkSurfaceKHR@ object, and--- provides a function for destroying @VkSurfaceKHR@ objects. Separate--- platform-specific extensions each provide a function for creating a--- @VkSurfaceKHR@ object for the respective platform. From the--- application’s perspective this is an opaque handle, just like the--- handles of other Vulkan objects.------ = See Also------ 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.VkPhysicalDeviceSurfaceInfo2KHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.VkSwapchainCreateInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_android_surface.vkCreateAndroidSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display.vkCreateDisplayPlaneSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_MVK_ios_surface.vkCreateIOSSurfaceMVK',--- 'Graphics.Vulkan.Extensions.VK_MVK_macos_surface.vkCreateMacOSSurfaceMVK',--- 'Graphics.Vulkan.Extensions.VK_KHR_mir_surface.vkCreateMirSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_NN_vi_surface.vkCreateViSurfaceNN',--- 'Graphics.Vulkan.Extensions.VK_KHR_wayland_surface.vkCreateWaylandSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_win32_surface.vkCreateWin32SurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_xcb_surface.vkCreateXcbSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_xlib_surface.vkCreateXlibSurfaceKHR',--- 'vkDestroySurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkGetDeviceGroupSurfacePresentModesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkGetPhysicalDevicePresentRectanglesKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.vkGetPhysicalDeviceSurfaceCapabilities2EXT',--- 'vkGetPhysicalDeviceSurfaceCapabilitiesKHR',--- 'vkGetPhysicalDeviceSurfaceFormatsKHR',--- 'vkGetPhysicalDeviceSurfacePresentModesKHR',--- 'vkGetPhysicalDeviceSurfaceSupportKHR'-type VkSurfaceKHR = Ptr VkSurfaceKHR_T--- | vkDestroySurfaceKHR - Destroy a VkSurfaceKHR object------ = Parameters------ - @instance@ is the instance used to create the surface.------ - @surface@ is the surface to destroy.------ - @pAllocator@ is the allocator used for host memory allocated for the--- surface object when there is no more specific allocator available--- (see [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)).------ = Description------ Destroying a @VkSurfaceKHR@ merely severs the connection between Vulkan--- and the native surface, and does not imply destroying the native--- surface, closing a window, or similar behavior.------ == Valid Usage------ - All @VkSwapchainKHR@ objects created for @surface@ /must/ have been--- destroyed prior to destroying @surface@------ - If @VkAllocationCallbacks@ were provided when @surface@ was created,--- a compatible set of callbacks /must/ be provided here------ - If no @VkAllocationCallbacks@ were provided when @surface@ was--- created, @pAllocator@ /must/ be @NULL@------ == Valid Usage (Implicit)------ - @instance@ /must/ be a valid @VkInstance@ handle------ - If @surface@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @surface@ /must/--- be a valid @VkSurfaceKHR@ handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - If @surface@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @instance@------ == Host Synchronization------ - Host access to @surface@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance', 'VkSurfaceKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroySurfaceKHR" vkDestroySurfaceKHR :: ("instance" ::: VkInstance) -> ("surface" ::: VkSurfaceKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | vkGetPhysicalDeviceSurfaceSupportKHR - Query if presentation is--- supported------ = Parameters------ - @physicalDevice@ is the physical device.------ - @queueFamilyIndex@ is the queue family.------ - @surface@ is the surface.------ - @pSupported@ is a pointer to a @VkBool32@, which is set to @VK_TRUE@--- to indicate support, and @VK_FALSE@ otherwise.------ == Valid Usage------ - @queueFamilyIndex@ /must/ be less than @pQueueFamilyPropertyCount@--- returned by @vkGetPhysicalDeviceQueueFamilyProperties@ for the given--- @physicalDevice@------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @surface@ /must/ be a valid @VkSurfaceKHR@ handle------ - @pSupported@ /must/ be a valid pointer to a @VkBool32@ value------ - Both of @physicalDevice@, and @surface@ /must/ have been created,--- allocated, or retrieved from the same @VkInstance@------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_SURFACE_LOST_KHR@------ = See Also------ @VkBool32@,--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',--- 'VkSurfaceKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceSurfaceSupportKHR" vkGetPhysicalDeviceSurfaceSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("surface" ::: VkSurfaceKHR) -> ("pSupported" ::: Ptr VkBool32) -> IO VkResult--- | vkGetPhysicalDeviceSurfaceCapabilitiesKHR - Query surface capabilities------ = Parameters------ - @physicalDevice@ is the physical device that will be associated with--- the swapchain to be created, as described for--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkCreateSwapchainKHR'.------ - @surface@ is the surface that will be associated with the swapchain.------ - @pSurfaceCapabilities@ is a pointer to an instance of the--- 'VkSurfaceCapabilitiesKHR' structure in which the capabilities are--- returned.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @surface@ /must/ be a valid @VkSurfaceKHR@ handle------ - @pSurfaceCapabilities@ /must/ be a valid pointer to a--- @VkSurfaceCapabilitiesKHR@ structure------ - Both of @physicalDevice@, and @surface@ /must/ have been created,--- allocated, or retrieved from the same @VkInstance@------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_SURFACE_LOST_KHR@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',--- 'VkSurfaceCapabilitiesKHR', 'VkSurfaceKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" vkGetPhysicalDeviceSurfaceCapabilitiesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceCapabilities" ::: Ptr VkSurfaceCapabilitiesKHR) -> IO VkResult--- | vkGetPhysicalDeviceSurfaceFormatsKHR - Query color formats supported by--- surface------ = Parameters------ - @physicalDevice@ is the physical device that will be associated with--- the swapchain to be created, as described for--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkCreateSwapchainKHR'.------ - @surface@ is the surface that will be associated with the swapchain.------ - @pSurfaceFormatCount@ is a pointer to an integer related to the--- number of format pairs available or queried, as described below.------ - @pSurfaceFormats@ is either @NULL@ or a pointer to an array of--- @VkSurfaceFormatKHR@ structures.------ = Description------ If @pSurfaceFormats@ is @NULL@, then the number of format pairs--- supported for the given @surface@ is returned in @pSurfaceFormatCount@.--- The number of format pairs supported will be greater than or equal to 1.--- Otherwise, @pSurfaceFormatCount@ /must/ point to a variable set by the--- user to the number of elements in the @pSurfaceFormats@ array, and on--- return the variable is overwritten with the number of structures--- actually written to @pSurfaceFormats@. If the value of--- @pSurfaceFormatCount@ is less than the number of format pairs supported,--- at most @pSurfaceFormatCount@ structures will be written. If--- @pSurfaceFormatCount@ is smaller than the number of format pairs--- supported for the given @surface@, @VK_INCOMPLETE@ will be returned--- instead of @VK_SUCCESS@ to indicate that not all the available values--- were returned.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @surface@ /must/ be a valid @VkSurfaceKHR@ handle------ - @pSurfaceFormatCount@ /must/ be a valid pointer to a @uint32_t@--- value------ - If the value referenced by @pSurfaceFormatCount@ is not @0@, and--- @pSurfaceFormats@ is not @NULL@, @pSurfaceFormats@ /must/ be a valid--- pointer to an array of @pSurfaceFormatCount@ @VkSurfaceFormatKHR@--- structures------ - Both of @physicalDevice@, and @surface@ /must/ have been created,--- allocated, or retrieved from the same @VkInstance@------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ - @VK_INCOMPLETE@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_SURFACE_LOST_KHR@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',--- 'VkSurfaceFormatKHR', 'VkSurfaceKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceSurfaceFormatsKHR" vkGetPhysicalDeviceSurfaceFormatsKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pSurfaceFormatCount" ::: Ptr Word32) -> ("pSurfaceFormats" ::: Ptr VkSurfaceFormatKHR) -> IO VkResult--- | vkGetPhysicalDeviceSurfacePresentModesKHR - Query supported presentation--- modes------ = Parameters------ - @physicalDevice@ is the physical device that will be associated with--- the swapchain to be created, as described for--- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.vkCreateSwapchainKHR'.------ - @surface@ is the surface that will be associated with the swapchain.------ - @pPresentModeCount@ is a pointer to an integer related to the number--- of presentation modes available or queried, as described below.------ - @pPresentModes@ is either @NULL@ or a pointer to an array of--- 'VkPresentModeKHR' values, indicating the supported presentation--- modes.------ = Description------ If @pPresentModes@ is @NULL@, then the number of presentation modes--- supported for the given @surface@ is returned in @pPresentModeCount@.--- Otherwise, @pPresentModeCount@ /must/ point to a variable set by the--- user to the number of elements in the @pPresentModes@ array, and on--- return the variable is overwritten with the number of values actually--- written to @pPresentModes@. If the value of @pPresentModeCount@ is less--- than the number of presentation modes supported, at most--- @pPresentModeCount@ values will be written. If @pPresentModeCount@ is--- smaller than the number of presentation modes supported for the given--- @surface@, @VK_INCOMPLETE@ will be returned instead of @VK_SUCCESS@ to--- indicate that not all the available values were returned.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @surface@ /must/ be a valid @VkSurfaceKHR@ handle------ - @pPresentModeCount@ /must/ be a valid pointer to a @uint32_t@ value------ - If the value referenced by @pPresentModeCount@ is not @0@, and--- @pPresentModes@ is not @NULL@, @pPresentModes@ /must/ be a valid--- pointer to an array of @pPresentModeCount@ 'VkPresentModeKHR' values------ - Both of @physicalDevice@, and @surface@ /must/ have been created,--- allocated, or retrieved from the same @VkInstance@------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ - @VK_INCOMPLETE@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_SURFACE_LOST_KHR@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',--- 'VkPresentModeKHR', 'VkSurfaceKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceSurfacePresentModesKHR" vkGetPhysicalDeviceSurfacePresentModesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pPresentModeCount" ::: Ptr Word32) -> ("pPresentModes" ::: Ptr VkPresentModeKHR) -> IO VkResult--- | VkSurfaceCapabilitiesKHR - Structure describing capabilities of a--- surface------ = Description------ __Note__------ Supported usage flags of a presentable image when using--- @VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR@ or--- @VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR@ presentation mode are--- provided by--- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.VkSharedPresentSurfaceCapabilitiesKHR'::@sharedPresentSupportedUsageFlags@.------ __Note__------ Formulas such as min(N, @maxImageCount@) are not correct, since--- @maxImageCount@ /may/ be zero.------ = See Also------ 'VkCompositeAlphaFlagsKHR',--- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlags',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.VkSurfaceCapabilities2KHR',--- 'VkSurfaceTransformFlagBitsKHR', 'VkSurfaceTransformFlagsKHR',--- 'vkGetPhysicalDeviceSurfaceCapabilitiesKHR'-data VkSurfaceCapabilitiesKHR = VkSurfaceCapabilitiesKHR- { -- | @minImageCount@ is the minimum number of images the specified device- -- supports for a swapchain created for the surface, and will be at least- -- one.- vkMinImageCount :: Word32- , -- | @maxImageCount@ is the maximum number of images the specified device- -- supports for a swapchain created for the surface, and will be either 0,- -- or greater than or equal to @minImageCount@. A value of 0 means that- -- there is no limit on the number of images, though there /may/ be limits- -- related to the total amount of memory used by presentable images.- vkMaxImageCount :: Word32- , -- | @currentExtent@ is the current width and height of the surface, or the- -- special value (0xFFFFFFFF, 0xFFFFFFFF) indicating that the surface size- -- will be determined by the extent of a swapchain targeting the surface.- vkCurrentExtent :: VkExtent2D- , -- | @minImageExtent@ contains the smallest valid swapchain extent for the- -- surface on the specified device. The @width@ and @height@ of the extent- -- will each be less than or equal to the corresponding @width@ and- -- @height@ of @currentExtent@, unless @currentExtent@ has the special- -- value described above.- vkMinImageExtent :: VkExtent2D- , -- | @maxImageExtent@ contains the largest valid swapchain extent for the- -- surface on the specified device. The @width@ and @height@ of the extent- -- will each be greater than or equal to the corresponding @width@ and- -- @height@ of @minImageExtent@. The @width@ and @height@ of the extent- -- will each be greater than or equal to the corresponding @width@ and- -- @height@ of @currentExtent@, unless @currentExtent@ has the special- -- value described above.- vkMaxImageExtent :: VkExtent2D- , -- | @maxImageArrayLayers@ is the maximum number of layers presentable images- -- /can/ have for a swapchain created for this device and surface, and will- -- be at least one.- vkMaxImageArrayLayers :: Word32- , -- | @supportedTransforms@ is a bitmask of 'VkSurfaceTransformFlagBitsKHR'- -- indicating the presentation transforms supported for the surface on the- -- specified device. At least one bit will be set.- vkSupportedTransforms :: VkSurfaceTransformFlagsKHR- , -- | @currentTransform@ is 'VkSurfaceTransformFlagBitsKHR' value indicating- -- the surface’s current transform relative to the presentation engine’s- -- natural orientation.- vkCurrentTransform :: VkSurfaceTransformFlagBitsKHR- , -- | @supportedCompositeAlpha@ is a bitmask of 'VkCompositeAlphaFlagBitsKHR',- -- representing the alpha compositing modes supported by the presentation- -- engine for the surface on the specified device, and at least one bit- -- will be set. Opaque composition /can/ be achieved in any alpha- -- compositing mode by either using an image format that has no alpha- -- component, or by ensuring that all pixels in the presentable images have- -- an alpha value of 1.0.- vkSupportedCompositeAlpha :: VkCompositeAlphaFlagsKHR- , -- | @supportedUsageFlags@ is a bitmask of- -- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits'- -- representing the ways the application /can/ use the presentable images- -- of a swapchain created with 'VkPresentModeKHR' set to- -- @VK_PRESENT_MODE_IMMEDIATE_KHR@, @VK_PRESENT_MODE_MAILBOX_KHR@,- -- @VK_PRESENT_MODE_FIFO_KHR@ or @VK_PRESENT_MODE_FIFO_RELAXED_KHR@ for the- -- surface on the specified device. @VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT@- -- /must/ be included in the set but implementations /may/ support- -- additional usages.- vkSupportedUsageFlags :: VkImageUsageFlags- }- deriving (Eq, Show)--instance Storable VkSurfaceCapabilitiesKHR where- sizeOf ~_ = 52- alignment ~_ = 4- peek ptr = VkSurfaceCapabilitiesKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 48)- poke ptr poked = poke (ptr `plusPtr` 0) (vkMinImageCount (poked :: VkSurfaceCapabilitiesKHR))- *> poke (ptr `plusPtr` 4) (vkMaxImageCount (poked :: VkSurfaceCapabilitiesKHR))- *> poke (ptr `plusPtr` 8) (vkCurrentExtent (poked :: VkSurfaceCapabilitiesKHR))- *> poke (ptr `plusPtr` 16) (vkMinImageExtent (poked :: VkSurfaceCapabilitiesKHR))- *> poke (ptr `plusPtr` 24) (vkMaxImageExtent (poked :: VkSurfaceCapabilitiesKHR))- *> poke (ptr `plusPtr` 32) (vkMaxImageArrayLayers (poked :: VkSurfaceCapabilitiesKHR))- *> poke (ptr `plusPtr` 36) (vkSupportedTransforms (poked :: VkSurfaceCapabilitiesKHR))- *> poke (ptr `plusPtr` 40) (vkCurrentTransform (poked :: VkSurfaceCapabilitiesKHR))- *> poke (ptr `plusPtr` 44) (vkSupportedCompositeAlpha (poked :: VkSurfaceCapabilitiesKHR))- *> poke (ptr `plusPtr` 48) (vkSupportedUsageFlags (poked :: VkSurfaceCapabilitiesKHR))--- | VkSurfaceFormatKHR - Structure describing a supported swapchain--- format-color space pair------ = See Also------ 'VkColorSpaceKHR', 'Graphics.Vulkan.Core10.Core.VkFormat',--- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.VkSurfaceFormat2KHR',--- 'vkGetPhysicalDeviceSurfaceFormatsKHR'-data VkSurfaceFormatKHR = VkSurfaceFormatKHR- { -- | @format@ is a 'Graphics.Vulkan.Core10.Core.VkFormat' that is compatible- -- with the specified surface.- vkFormat :: VkFormat- , -- | @colorSpace@ is a presentation 'VkColorSpaceKHR' that is compatible with- -- the surface.- vkColorSpace :: VkColorSpaceKHR- }- deriving (Eq, Show)--instance Storable VkSurfaceFormatKHR where- sizeOf ~_ = 8- alignment ~_ = 4- peek ptr = VkSurfaceFormatKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- poke ptr poked = poke (ptr `plusPtr` 0) (vkFormat (poked :: VkSurfaceFormatKHR))- *> poke (ptr `plusPtr` 4) (vkColorSpace (poked :: VkSurfaceFormatKHR))--- | VkCompositeAlphaFlagsKHR - Bitmask of VkCompositeAlphaFlagBitsKHR------ = Description------ @VkCompositeAlphaFlagsKHR@ is a bitmask type for setting a mask of zero--- or more 'VkCompositeAlphaFlagBitsKHR'.------ = See Also------ 'VkCompositeAlphaFlagBitsKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCapabilities2EXT',--- 'VkSurfaceCapabilitiesKHR'-type VkCompositeAlphaFlagsKHR = VkCompositeAlphaFlagBitsKHR--- | VkSurfaceTransformFlagsKHR - Bitmask of VkSurfaceTransformFlagBitsKHR------ = Description------ @VkSurfaceTransformFlagsKHR@ is a bitmask type for setting a mask of--- zero or more 'VkSurfaceTransformFlagBitsKHR'.------ = See Also------ 'Graphics.Vulkan.Extensions.VK_KHR_display.VkDisplayPropertiesKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.VkSurfaceCapabilities2EXT',--- 'VkSurfaceCapabilitiesKHR', 'VkSurfaceTransformFlagBitsKHR'-type VkSurfaceTransformFlagsKHR = VkSurfaceTransformFlagBitsKHR+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_surface ( destroySurfaceKHR+ , getPhysicalDeviceSurfaceSupportKHR+ , getPhysicalDeviceSurfaceCapabilitiesKHR+ , getPhysicalDeviceSurfaceFormatsKHR+ , getPhysicalDeviceSurfacePresentModesKHR+ , SurfaceCapabilitiesKHR(..)+ , SurfaceFormatKHR(..)+ , KHR_SURFACE_SPEC_VERSION+ , pattern KHR_SURFACE_SPEC_VERSION+ , KHR_SURFACE_EXTENSION_NAME+ , pattern KHR_SURFACE_EXTENSION_NAME+ , SurfaceKHR(..)+ , PresentModeKHR(..)+ , ColorSpaceKHR(..)+ , CompositeAlphaFlagBitsKHR(..)+ , CompositeAlphaFlagsKHR+ , SurfaceTransformFlagBitsKHR(..)+ , SurfaceTransformFlagsKHR+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.BaseType (Bool32(..))+import Graphics.Vulkan.Extensions.VK_EXT_swapchain_colorspace (ColorSpaceKHR)+import Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter (CompositeAlphaFlagsKHR)+import Graphics.Vulkan.Core10.SharedTypes (Extent2D)+import Graphics.Vulkan.Core10.Enums.Format (Format)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)+import Graphics.Vulkan.Core10.Handles (Instance)+import Graphics.Vulkan.Core10.Handles (Instance(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkDestroySurfaceKHR))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceSurfaceCapabilitiesKHR))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceSurfaceFormatsKHR))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceSurfacePresentModesKHR))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceSurfaceSupportKHR))+import Graphics.Vulkan.Core10.Handles (Instance_T)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image (PresentModeKHR)+import Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image (PresentModeKHR(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (SurfaceTransformFlagBitsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_display (SurfaceTransformFlagsKHR)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.VK_EXT_swapchain_colorspace (ColorSpaceKHR(..))+import Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter (CompositeAlphaFlagBitsKHR(..))+import Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter (CompositeAlphaFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image (PresentModeKHR(..))+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (SurfaceTransformFlagBitsKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (SurfaceTransformFlagsKHR)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDestroySurfaceKHR+ :: FunPtr (Ptr Instance_T -> SurfaceKHR -> Ptr AllocationCallbacks -> IO ()) -> Ptr Instance_T -> SurfaceKHR -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroySurfaceKHR - Destroy a VkSurfaceKHR object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' is the instance used to+-- create the surface.+--+-- - @surface@ is the surface to destroy.+--+-- - @pAllocator@ is the allocator used for host memory allocated for the+-- surface object when there is no more specific allocator available+-- (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).+--+-- = Description+--+-- Destroying a 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' merely+-- severs the connection between Vulkan and the native surface, and does+-- not imply destroying the native surface, closing a window, or similar+-- behavior.+--+-- == Valid Usage+--+-- - All 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR' objects+-- created for @surface@ /must/ have been destroyed prior to destroying+-- @surface@+--+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when @surface@ was created, a compatible set of+-- callbacks /must/ be provided here+--+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when @surface@ was created, @pAllocator@ /must/ be+-- @NULL@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle+--+-- - If @surface@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @surface@ /must/+-- be a valid 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - If @surface@ is a valid handle, it /must/ have been created,+-- allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Instance'+--+-- == Host Synchronization+--+-- - Host access to @surface@ /must/ be externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Instance',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR'+destroySurfaceKHR :: Instance -> SurfaceKHR -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroySurfaceKHR instance' surface allocator = evalContT $ do+ let vkDestroySurfaceKHR' = mkVkDestroySurfaceKHR (pVkDestroySurfaceKHR (instanceCmds (instance' :: Instance)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroySurfaceKHR' (instanceHandle (instance')) (surface) pAllocator+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceSurfaceSupportKHR+ :: FunPtr (Ptr PhysicalDevice_T -> Word32 -> SurfaceKHR -> Ptr Bool32 -> IO Result) -> Ptr PhysicalDevice_T -> Word32 -> SurfaceKHR -> Ptr Bool32 -> IO Result++-- | vkGetPhysicalDeviceSurfaceSupportKHR - Query if presentation is+-- supported+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device.+--+-- - @queueFamilyIndex@ is the queue family.+--+-- - @surface@ is the surface.+--+-- - @pSupported@ is a pointer to a+-- 'Graphics.Vulkan.Core10.BaseType.Bool32', which is set to+-- 'Graphics.Vulkan.Core10.BaseType.TRUE' to indicate support, and+-- 'Graphics.Vulkan.Core10.BaseType.FALSE' otherwise.+--+-- == Valid Usage+--+-- - @queueFamilyIndex@ /must/ be less than @pQueueFamilyPropertyCount@+-- returned by+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceQueueFamilyProperties'+-- for the given 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @surface@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle+--+-- - @pSupported@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Core10.BaseType.Bool32' value+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.PhysicalDevice', and+-- @surface@ /must/ have been created, allocated, or retrieved from the+-- same 'Graphics.Vulkan.Core10.Handles.Instance'+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR'+getPhysicalDeviceSurfaceSupportKHR :: PhysicalDevice -> ("queueFamilyIndex" ::: Word32) -> SurfaceKHR -> IO (("supported" ::: Bool))+getPhysicalDeviceSurfaceSupportKHR physicalDevice queueFamilyIndex surface = evalContT $ do+ let vkGetPhysicalDeviceSurfaceSupportKHR' = mkVkGetPhysicalDeviceSurfaceSupportKHR (pVkGetPhysicalDeviceSurfaceSupportKHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ pPSupported <- ContT $ bracket (callocBytes @Bool32 4) free+ r <- lift $ vkGetPhysicalDeviceSurfaceSupportKHR' (physicalDeviceHandle (physicalDevice)) (queueFamilyIndex) (surface) (pPSupported)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSupported <- lift $ peek @Bool32 pPSupported+ pure $ ((bool32ToBool pSupported))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceSurfaceCapabilitiesKHR+ :: FunPtr (Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr SurfaceCapabilitiesKHR -> IO Result) -> Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr SurfaceCapabilitiesKHR -> IO Result++-- | vkGetPhysicalDeviceSurfaceCapabilitiesKHR - Query surface capabilities+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device that will be associated with the swapchain to be created, as+-- described for+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'.+--+-- - @surface@ is the surface that will be associated with the swapchain.+--+-- - @pSurfaceCapabilities@ is a pointer to a 'SurfaceCapabilitiesKHR'+-- structure in which the capabilities are returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @surface@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle+--+-- - @pSurfaceCapabilities@ /must/ be a valid pointer to a+-- 'SurfaceCapabilitiesKHR' structure+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.PhysicalDevice', and+-- @surface@ /must/ have been created, allocated, or retrieved from the+-- same 'Graphics.Vulkan.Core10.Handles.Instance'+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'SurfaceCapabilitiesKHR',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR'+getPhysicalDeviceSurfaceCapabilitiesKHR :: PhysicalDevice -> SurfaceKHR -> IO (SurfaceCapabilitiesKHR)+getPhysicalDeviceSurfaceCapabilitiesKHR physicalDevice surface = evalContT $ do+ let vkGetPhysicalDeviceSurfaceCapabilitiesKHR' = mkVkGetPhysicalDeviceSurfaceCapabilitiesKHR (pVkGetPhysicalDeviceSurfaceCapabilitiesKHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ pPSurfaceCapabilities <- ContT (withZeroCStruct @SurfaceCapabilitiesKHR)+ r <- lift $ vkGetPhysicalDeviceSurfaceCapabilitiesKHR' (physicalDeviceHandle (physicalDevice)) (surface) (pPSurfaceCapabilities)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSurfaceCapabilities <- lift $ peekCStruct @SurfaceCapabilitiesKHR pPSurfaceCapabilities+ pure $ (pSurfaceCapabilities)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceSurfaceFormatsKHR+ :: FunPtr (Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr Word32 -> Ptr SurfaceFormatKHR -> IO Result) -> Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr Word32 -> Ptr SurfaceFormatKHR -> IO Result++-- | vkGetPhysicalDeviceSurfaceFormatsKHR - Query color formats supported by+-- surface+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device that will be associated with the swapchain to be created, as+-- described for+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'.+--+-- - @surface@ is the surface that will be associated with the swapchain.+--+-- - @pSurfaceFormatCount@ is a pointer to an integer related to the+-- number of format pairs available or queried, as described below.+--+-- - @pSurfaceFormats@ is either @NULL@ or a pointer to an array of+-- 'SurfaceFormatKHR' structures.+--+-- = Description+--+-- If @pSurfaceFormats@ is @NULL@, then the number of format pairs+-- supported for the given @surface@ is returned in @pSurfaceFormatCount@.+-- Otherwise, @pSurfaceFormatCount@ /must/ point to a variable set by the+-- user to the number of elements in the @pSurfaceFormats@ array, and on+-- return the variable is overwritten with the number of structures+-- actually written to @pSurfaceFormats@. If the value of+-- @pSurfaceFormatCount@ is less than the number of format pairs supported,+-- at most @pSurfaceFormatCount@ structures will be written. If+-- @pSurfaceFormatCount@ is smaller than the number of format pairs+-- supported for the given @surface@,+-- 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned+-- instead of 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' to indicate+-- that not all the available values were returned.+--+-- The number of format pairs supported /must/ be greater than or equal to+-- 1. @pSurfaceFormats@ /must/ not contain an entry whose value for+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' is+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'.+--+-- If @pSurfaceFormats@ includes an entry whose value for @colorSpace@ is+-- 'Graphics.Vulkan.Extensions.VK_EXT_swapchain_colorspace.COLOR_SPACE_SRGB_NONLINEAR_KHR'+-- and whose value for 'Graphics.Vulkan.Core10.Enums.Format.Format' is a+-- UNORM (or SRGB) format and the corresponding SRGB (or UNORM) format is a+-- color renderable format for+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', then+-- @pSurfaceFormats@ /must/ also contain an entry with the same value for+-- @colorSpace@ and 'Graphics.Vulkan.Core10.Enums.Format.Format' equal to+-- the corresponding SRGB (or UNORM) format.+--+-- == Valid Usage+--+-- - @surface@ must be supported by+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice', as reported by+-- 'getPhysicalDeviceSurfaceSupportKHR' or an equivalent+-- platform-specific mechanism.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @surface@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle+--+-- - @pSurfaceFormatCount@ /must/ be a valid pointer to a @uint32_t@+-- value+--+-- - If the value referenced by @pSurfaceFormatCount@ is not @0@, and+-- @pSurfaceFormats@ is not @NULL@, @pSurfaceFormats@ /must/ be a valid+-- pointer to an array of @pSurfaceFormatCount@ 'SurfaceFormatKHR'+-- structures+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.PhysicalDevice', and+-- @surface@ /must/ have been created, allocated, or retrieved from the+-- same 'Graphics.Vulkan.Core10.Handles.Instance'+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice', 'SurfaceFormatKHR',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR'+getPhysicalDeviceSurfaceFormatsKHR :: PhysicalDevice -> SurfaceKHR -> IO (Result, ("surfaceFormats" ::: Vector SurfaceFormatKHR))+getPhysicalDeviceSurfaceFormatsKHR physicalDevice surface = evalContT $ do+ let vkGetPhysicalDeviceSurfaceFormatsKHR' = mkVkGetPhysicalDeviceSurfaceFormatsKHR (pVkGetPhysicalDeviceSurfaceFormatsKHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pPSurfaceFormatCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkGetPhysicalDeviceSurfaceFormatsKHR' physicalDevice' (surface) (pPSurfaceFormatCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSurfaceFormatCount <- lift $ peek @Word32 pPSurfaceFormatCount+ pPSurfaceFormats <- ContT $ bracket (callocBytes @SurfaceFormatKHR ((fromIntegral (pSurfaceFormatCount)) * 8)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPSurfaceFormats `advancePtrBytes` (i * 8) :: Ptr SurfaceFormatKHR) . ($ ())) [0..(fromIntegral (pSurfaceFormatCount)) - 1]+ r' <- lift $ vkGetPhysicalDeviceSurfaceFormatsKHR' physicalDevice' (surface) (pPSurfaceFormatCount) ((pPSurfaceFormats))+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pSurfaceFormatCount' <- lift $ peek @Word32 pPSurfaceFormatCount+ pSurfaceFormats' <- lift $ generateM (fromIntegral (pSurfaceFormatCount')) (\i -> peekCStruct @SurfaceFormatKHR (((pPSurfaceFormats) `advancePtrBytes` (8 * (i)) :: Ptr SurfaceFormatKHR)))+ pure $ ((r'), pSurfaceFormats')+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceSurfacePresentModesKHR+ :: FunPtr (Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr Word32 -> Ptr PresentModeKHR -> IO Result) -> Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr Word32 -> Ptr PresentModeKHR -> IO Result++-- | vkGetPhysicalDeviceSurfacePresentModesKHR - Query supported presentation+-- modes+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device that will be associated with the swapchain to be created, as+-- described for+-- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'.+--+-- - @surface@ is the surface that will be associated with the swapchain.+--+-- - @pPresentModeCount@ is a pointer to an integer related to the number+-- of presentation modes available or queried, as described below.+--+-- - @pPresentModes@ is either @NULL@ or a pointer to an array of+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PresentModeKHR'+-- values, indicating the supported presentation modes.+--+-- = Description+--+-- If @pPresentModes@ is @NULL@, then the number of presentation modes+-- supported for the given @surface@ is returned in @pPresentModeCount@.+-- Otherwise, @pPresentModeCount@ /must/ point to a variable set by the+-- user to the number of elements in the @pPresentModes@ array, and on+-- return the variable is overwritten with the number of values actually+-- written to @pPresentModes@. If the value of @pPresentModeCount@ is less+-- than the number of presentation modes supported, at most+-- @pPresentModeCount@ values will be written. If @pPresentModeCount@ is+-- smaller than the number of presentation modes supported for the given+-- @surface@, 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' will be+-- returned instead of 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' to+-- indicate that not all the available values were returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @surface@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle+--+-- - @pPresentModeCount@ /must/ be a valid pointer to a @uint32_t@ value+--+-- - If the value referenced by @pPresentModeCount@ is not @0@, and+-- @pPresentModes@ is not @NULL@, @pPresentModes@ /must/ be a valid+-- pointer to an array of @pPresentModeCount@+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PresentModeKHR'+-- values+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.PhysicalDevice', and+-- @surface@ /must/ have been created, allocated, or retrieved from the+-- same 'Graphics.Vulkan.Core10.Handles.Instance'+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PresentModeKHR',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR'+getPhysicalDeviceSurfacePresentModesKHR :: PhysicalDevice -> SurfaceKHR -> IO (Result, ("presentModes" ::: Vector PresentModeKHR))+getPhysicalDeviceSurfacePresentModesKHR physicalDevice surface = evalContT $ do+ let vkGetPhysicalDeviceSurfacePresentModesKHR' = mkVkGetPhysicalDeviceSurfacePresentModesKHR (pVkGetPhysicalDeviceSurfacePresentModesKHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pPPresentModeCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkGetPhysicalDeviceSurfacePresentModesKHR' physicalDevice' (surface) (pPPresentModeCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pPresentModeCount <- lift $ peek @Word32 pPPresentModeCount+ pPPresentModes <- ContT $ bracket (callocBytes @PresentModeKHR ((fromIntegral (pPresentModeCount)) * 4)) free+ r' <- lift $ vkGetPhysicalDeviceSurfacePresentModesKHR' physicalDevice' (surface) (pPPresentModeCount) (pPPresentModes)+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pPresentModeCount' <- lift $ peek @Word32 pPPresentModeCount+ pPresentModes' <- lift $ generateM (fromIntegral (pPresentModeCount')) (\i -> peek @PresentModeKHR ((pPPresentModes `advancePtrBytes` (4 * (i)) :: Ptr PresentModeKHR)))+ pure $ ((r'), pPresentModes')+++-- | VkSurfaceCapabilitiesKHR - Structure describing capabilities of a+-- surface+--+-- = Description+--+-- Note+--+-- Supported usage flags of a presentable image when using+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'+-- or+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR'+-- presentation mode are provided by+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.SharedPresentSurfaceCapabilitiesKHR'::@sharedPresentSupportedUsageFlags@.+--+-- Note+--+-- Formulas such as min(N, @maxImageCount@) are not correct, since+-- @maxImageCount@ /may/ be zero.+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.CompositeAlphaFlagsKHR',+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent2D',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.SurfaceTransformFlagBitsKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.SurfaceTransformFlagsKHR',+-- 'getPhysicalDeviceSurfaceCapabilitiesKHR'+data SurfaceCapabilitiesKHR = SurfaceCapabilitiesKHR+ { -- | @minImageCount@ is the minimum number of images the specified device+ -- supports for a swapchain created for the surface, and will be at least+ -- one.+ minImageCount :: Word32+ , -- | @maxImageCount@ is the maximum number of images the specified device+ -- supports for a swapchain created for the surface, and will be either 0,+ -- or greater than or equal to @minImageCount@. A value of 0 means that+ -- there is no limit on the number of images, though there /may/ be limits+ -- related to the total amount of memory used by presentable images.+ maxImageCount :: Word32+ , -- | @currentExtent@ is the current width and height of the surface, or the+ -- special value (0xFFFFFFFF, 0xFFFFFFFF) indicating that the surface size+ -- will be determined by the extent of a swapchain targeting the surface.+ currentExtent :: Extent2D+ , -- | @minImageExtent@ contains the smallest valid swapchain extent for the+ -- surface on the specified device. The @width@ and @height@ of the extent+ -- will each be less than or equal to the corresponding @width@ and+ -- @height@ of @currentExtent@, unless @currentExtent@ has the special+ -- value described above.+ minImageExtent :: Extent2D+ , -- | @maxImageExtent@ contains the largest valid swapchain extent for the+ -- surface on the specified device. The @width@ and @height@ of the extent+ -- will each be greater than or equal to the corresponding @width@ and+ -- @height@ of @minImageExtent@. The @width@ and @height@ of the extent+ -- will each be greater than or equal to the corresponding @width@ and+ -- @height@ of @currentExtent@, unless @currentExtent@ has the special+ -- value described above.+ maxImageExtent :: Extent2D+ , -- | @maxImageArrayLayers@ is the maximum number of layers presentable images+ -- /can/ have for a swapchain created for this device and surface, and will+ -- be at least one.+ maxImageArrayLayers :: Word32+ , -- | @supportedTransforms@ is a bitmask of+ -- 'Graphics.Vulkan.Extensions.VK_KHR_display.SurfaceTransformFlagBitsKHR'+ -- indicating the presentation transforms supported for the surface on the+ -- specified device. At least one bit will be set.+ supportedTransforms :: SurfaceTransformFlagsKHR+ , -- | @currentTransform@ is+ -- 'Graphics.Vulkan.Extensions.VK_KHR_display.SurfaceTransformFlagBitsKHR'+ -- value indicating the surface’s current transform relative to the+ -- presentation engine’s natural orientation.+ currentTransform :: SurfaceTransformFlagBitsKHR+ , -- | @supportedCompositeAlpha@ is a bitmask of+ -- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.CompositeAlphaFlagBitsKHR',+ -- representing the alpha compositing modes supported by the presentation+ -- engine for the surface on the specified device, and at least one bit+ -- will be set. Opaque composition /can/ be achieved in any alpha+ -- compositing mode by either using an image format that has no alpha+ -- component, or by ensuring that all pixels in the presentable images have+ -- an alpha value of 1.0.+ supportedCompositeAlpha :: CompositeAlphaFlagsKHR+ , -- | @supportedUsageFlags@ is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits'+ -- representing the ways the application /can/ use the presentable images+ -- of a swapchain created with+ -- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PresentModeKHR'+ -- set to+ -- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PRESENT_MODE_IMMEDIATE_KHR',+ -- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PRESENT_MODE_MAILBOX_KHR',+ -- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PRESENT_MODE_FIFO_KHR'+ -- or+ -- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PRESENT_MODE_FIFO_RELAXED_KHR'+ -- for the surface on the specified device.+ -- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'+ -- /must/ be included in the set but implementations /may/ support+ -- additional usages.+ supportedUsageFlags :: ImageUsageFlags+ }+ deriving (Typeable)+deriving instance Show SurfaceCapabilitiesKHR++instance ToCStruct SurfaceCapabilitiesKHR where+ withCStruct x f = allocaBytesAligned 52 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SurfaceCapabilitiesKHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (minImageCount)+ lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (maxImageCount)+ ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr Extent2D)) (currentExtent) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (minImageExtent) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent2D)) (maxImageExtent) . ($ ())+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (maxImageArrayLayers)+ lift $ poke ((p `plusPtr` 36 :: Ptr SurfaceTransformFlagsKHR)) (supportedTransforms)+ lift $ poke ((p `plusPtr` 40 :: Ptr SurfaceTransformFlagBitsKHR)) (currentTransform)+ lift $ poke ((p `plusPtr` 44 :: Ptr CompositeAlphaFlagsKHR)) (supportedCompositeAlpha)+ lift $ poke ((p `plusPtr` 48 :: Ptr ImageUsageFlags)) (supportedUsageFlags)+ lift $ f+ cStructSize = 52+ cStructAlignment = 4+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 8 :: Ptr Extent2D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr Extent2D)) (zero) . ($ ())+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 40 :: Ptr SurfaceTransformFlagBitsKHR)) (zero)+ lift $ f++instance FromCStruct SurfaceCapabilitiesKHR where+ peekCStruct p = do+ minImageCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ maxImageCount <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ currentExtent <- peekCStruct @Extent2D ((p `plusPtr` 8 :: Ptr Extent2D))+ minImageExtent <- peekCStruct @Extent2D ((p `plusPtr` 16 :: Ptr Extent2D))+ maxImageExtent <- peekCStruct @Extent2D ((p `plusPtr` 24 :: Ptr Extent2D))+ maxImageArrayLayers <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ supportedTransforms <- peek @SurfaceTransformFlagsKHR ((p `plusPtr` 36 :: Ptr SurfaceTransformFlagsKHR))+ currentTransform <- peek @SurfaceTransformFlagBitsKHR ((p `plusPtr` 40 :: Ptr SurfaceTransformFlagBitsKHR))+ supportedCompositeAlpha <- peek @CompositeAlphaFlagsKHR ((p `plusPtr` 44 :: Ptr CompositeAlphaFlagsKHR))+ supportedUsageFlags <- peek @ImageUsageFlags ((p `plusPtr` 48 :: Ptr ImageUsageFlags))+ pure $ SurfaceCapabilitiesKHR+ minImageCount maxImageCount currentExtent minImageExtent maxImageExtent maxImageArrayLayers supportedTransforms currentTransform supportedCompositeAlpha supportedUsageFlags++instance Zero SurfaceCapabilitiesKHR where+ zero = SurfaceCapabilitiesKHR+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkSurfaceFormatKHR - Structure describing a supported swapchain+-- format-color space pair+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.VK_EXT_swapchain_colorspace.ColorSpaceKHR',+-- 'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceFormat2KHR',+-- 'getPhysicalDeviceSurfaceFormatsKHR'+data SurfaceFormatKHR = SurfaceFormatKHR+ { -- | 'Graphics.Vulkan.Core10.Enums.Format.Format' is a+ -- 'Graphics.Vulkan.Core10.Enums.Format.Format' that is compatible with the+ -- specified surface.+ format :: Format+ , -- | @colorSpace@ is a presentation+ -- 'Graphics.Vulkan.Extensions.VK_EXT_swapchain_colorspace.ColorSpaceKHR'+ -- that is compatible with the surface.+ colorSpace :: ColorSpaceKHR+ }+ deriving (Typeable)+deriving instance Show SurfaceFormatKHR++instance ToCStruct SurfaceFormatKHR where+ withCStruct x f = allocaBytesAligned 8 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SurfaceFormatKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Format)) (format)+ poke ((p `plusPtr` 4 :: Ptr ColorSpaceKHR)) (colorSpace)+ f+ cStructSize = 8+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Format)) (zero)+ poke ((p `plusPtr` 4 :: Ptr ColorSpaceKHR)) (zero)+ f++instance FromCStruct SurfaceFormatKHR where+ peekCStruct p = do+ format <- peek @Format ((p `plusPtr` 0 :: Ptr Format))+ colorSpace <- peek @ColorSpaceKHR ((p `plusPtr` 4 :: Ptr ColorSpaceKHR))+ pure $ SurfaceFormatKHR+ format colorSpace++instance Storable SurfaceFormatKHR where+ sizeOf ~_ = 8+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SurfaceFormatKHR where+ zero = SurfaceFormatKHR+ zero+ zero+++type KHR_SURFACE_SPEC_VERSION = 25++-- No documentation found for TopLevel "VK_KHR_SURFACE_SPEC_VERSION"+pattern KHR_SURFACE_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_SURFACE_SPEC_VERSION = 25+++type KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface"++-- No documentation found for TopLevel "VK_KHR_SURFACE_EXTENSION_NAME"+pattern KHR_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_surface.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_surface ( SurfaceCapabilitiesKHR+ , SurfaceFormatKHR+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data SurfaceCapabilitiesKHR++instance ToCStruct SurfaceCapabilitiesKHR+instance Show SurfaceCapabilitiesKHR++instance FromCStruct SurfaceCapabilitiesKHR+++data SurfaceFormatKHR++instance ToCStruct SurfaceFormatKHR+instance Show SurfaceFormatKHR++instance FromCStruct SurfaceFormatKHR+
+ src/Graphics/Vulkan/Extensions/VK_KHR_surface_protected_capabilities.hs view
@@ -0,0 +1,95 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_surface_protected_capabilities ( SurfaceProtectedCapabilitiesKHR(..)+ , KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION+ , pattern KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION+ , KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME+ , pattern KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR))+-- | VkSurfaceProtectedCapabilitiesKHR - Structure describing capability of a+-- surface to be protected+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data SurfaceProtectedCapabilitiesKHR = SurfaceProtectedCapabilitiesKHR+ { -- | @supportsProtected@ specifies whether a protected swapchain created from+ -- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR'::@surface@+ -- for a particular windowing system /can/ be displayed on screen or not.+ -- If @supportsProtected@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', then+ -- creation of swapchains with the+ -- 'Graphics.Vulkan.Extensions.VK_KHR_swapchain.SWAPCHAIN_CREATE_PROTECTED_BIT_KHR'+ -- flag set /must/ be supported for @surface@.+ supportsProtected :: Bool }+ deriving (Typeable)+deriving instance Show SurfaceProtectedCapabilitiesKHR++instance ToCStruct SurfaceProtectedCapabilitiesKHR where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SurfaceProtectedCapabilitiesKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (supportsProtected))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct SurfaceProtectedCapabilitiesKHR where+ peekCStruct p = do+ supportsProtected <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ SurfaceProtectedCapabilitiesKHR+ (bool32ToBool supportsProtected)++instance Storable SurfaceProtectedCapabilitiesKHR where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero SurfaceProtectedCapabilitiesKHR where+ zero = SurfaceProtectedCapabilitiesKHR+ zero+++type KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION"+pattern KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1+++type KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities"++-- No documentation found for TopLevel "VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME"+pattern KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_surface_protected_capabilities.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_surface_protected_capabilities (SurfaceProtectedCapabilitiesKHR) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data SurfaceProtectedCapabilitiesKHR++instance ToCStruct SurfaceProtectedCapabilitiesKHR+instance Show SurfaceProtectedCapabilitiesKHR++instance FromCStruct SurfaceProtectedCapabilitiesKHR+
src/Graphics/Vulkan/Extensions/VK_KHR_swapchain.hs view
@@ -1,1960 +1,2494 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_KHR_swapchain- ( VkSwapchainCreateFlagBitsKHR(..)- , VkDeviceGroupPresentModeFlagBitsKHR(..)- , pattern VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR- , pattern VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR- , pattern VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR- , pattern VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR- , pattern VK_IMAGE_LAYOUT_PRESENT_SRC_KHR- , pattern VK_SUBOPTIMAL_KHR- , pattern VK_ERROR_OUT_OF_DATE_KHR- , pattern VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR- , pattern VK_STRUCTURE_TYPE_PRESENT_INFO_KHR- , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR- , pattern VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR- , pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR- , pattern VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR- , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR- , pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR- , pattern VK_OBJECT_TYPE_SWAPCHAIN_KHR- , pattern VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR- , pattern VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR- , pattern VK_KHR_SWAPCHAIN_SPEC_VERSION- , pattern VK_KHR_SWAPCHAIN_EXTENSION_NAME- , VkSwapchainKHR- , vkCreateSwapchainKHR- , vkDestroySwapchainKHR- , vkGetSwapchainImagesKHR- , vkAcquireNextImageKHR- , vkQueuePresentKHR- , vkGetDeviceGroupPresentCapabilitiesKHR- , vkGetDeviceGroupSurfacePresentModesKHR- , vkAcquireNextImage2KHR- , vkGetPhysicalDevicePresentRectanglesKHR- , VkSwapchainCreateInfoKHR(..)- , VkPresentInfoKHR(..)- , VkDeviceGroupPresentCapabilitiesKHR(..)- , VkImageSwapchainCreateInfoKHR(..)- , VkBindImageMemorySwapchainInfoKHR(..)- , VkAcquireNextImageInfoKHR(..)- , VkDeviceGroupPresentInfoKHR(..)- , VkDeviceGroupSwapchainCreateInfoKHR(..)- , VkSwapchainCreateFlagsKHR- , VkDeviceGroupPresentModeFlagsKHR- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.String- ( IsString- )-import Data.Vector.Storable.Sized- ( Vector- )-import Data.Word- ( Word32- , Word64- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Buffer- ( VkSharingMode(..)- )-import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkFormat(..)- , VkObjectType(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- , VkImageUsageFlags- , VkPhysicalDevice- )-import Graphics.Vulkan.Core10.Image- ( VkImageLayout(..)- )-import Graphics.Vulkan.Core10.MemoryManagement- ( VkImage- )-import Graphics.Vulkan.Core10.Pipeline- ( VkExtent2D(..)- , VkRect2D(..)- )-import Graphics.Vulkan.Core10.Queue- ( VkFence- , VkQueue- , VkSemaphore- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation- ( VK_MAX_DEVICE_GROUP_SIZE- )-import Graphics.Vulkan.Extensions.VK_KHR_surface- ( VkColorSpaceKHR(..)- , VkCompositeAlphaFlagBitsKHR(..)- , VkPresentModeKHR(..)- , VkSurfaceTransformFlagBitsKHR(..)- , VkSurfaceKHR- )----- ** VkSwapchainCreateFlagBitsKHR---- | VkSwapchainCreateFlagBitsKHR - Bitmask controlling swapchain creation------ = See Also------ 'VkSwapchainCreateFlagsKHR'-newtype VkSwapchainCreateFlagBitsKHR = VkSwapchainCreateFlagBitsKHR VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkSwapchainCreateFlagBitsKHR where- -- The following values are from extensions, the patterns themselves are exported from the extension modules- showsPrec _ (VkSwapchainCreateFlagBitsKHR 0x00000001) = showString "VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR"- showsPrec _ (VkSwapchainCreateFlagBitsKHR 0x00000002) = showString "VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR"- showsPrec p (VkSwapchainCreateFlagBitsKHR x) = showParen (p >= 11) (showString "VkSwapchainCreateFlagBitsKHR " . showsPrec 11 x)--instance Read VkSwapchainCreateFlagBitsKHR where- readPrec = parens ( choose [ -- The following values are from extensions, the patterns themselves are exported from the extension modules- ("VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR", pure (VkSwapchainCreateFlagBitsKHR 0x00000001))- , ("VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR", pure (VkSwapchainCreateFlagBitsKHR 0x00000002))- , ("VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR", pure (VkSwapchainCreateFlagBitsKHR 0x00000001))- ] +++- prec 10 (do- expectP (Ident "VkSwapchainCreateFlagBitsKHR")- v <- step readPrec- pure (VkSwapchainCreateFlagBitsKHR v)- )- )----- ** VkDeviceGroupPresentModeFlagBitsKHR---- | VkDeviceGroupPresentModeFlagBitsKHR - Bitmask specifying supported--- device group present modes------ = See Also------ 'VkDeviceGroupPresentInfoKHR', 'VkDeviceGroupPresentModeFlagsKHR'-newtype VkDeviceGroupPresentModeFlagBitsKHR = VkDeviceGroupPresentModeFlagBitsKHR VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkDeviceGroupPresentModeFlagBitsKHR where- showsPrec _ VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = showString "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR"- showsPrec _ VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = showString "VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR"- showsPrec _ VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = showString "VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR"- showsPrec _ VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = showString "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR"- showsPrec p (VkDeviceGroupPresentModeFlagBitsKHR x) = showParen (p >= 11) (showString "VkDeviceGroupPresentModeFlagBitsKHR " . showsPrec 11 x)--instance Read VkDeviceGroupPresentModeFlagBitsKHR where- readPrec = parens ( choose [ ("VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR", pure VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR)- , ("VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR", pure VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR)- , ("VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR", pure VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR)- , ("VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR", pure VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR)- ] +++- prec 10 (do- expectP (Ident "VkDeviceGroupPresentModeFlagBitsKHR")- v <- step readPrec- pure (VkDeviceGroupPresentModeFlagBitsKHR v)- )- )---- | @VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR@ specifies that any physical--- device with a presentation engine /can/ present its own swapchain--- images.-pattern VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR :: VkDeviceGroupPresentModeFlagBitsKHR-pattern VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = VkDeviceGroupPresentModeFlagBitsKHR 0x00000001---- | @VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR@ specifies that any--- physical device with a presentation engine /can/ present swapchain--- images from any physical device in its @presentMask@.-pattern VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR :: VkDeviceGroupPresentModeFlagBitsKHR-pattern VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = VkDeviceGroupPresentModeFlagBitsKHR 0x00000002---- | @VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR@ specifies that any physical--- device with a presentation engine /can/ present the sum of swapchain--- images from any physical devices in its @presentMask@.-pattern VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR :: VkDeviceGroupPresentModeFlagBitsKHR-pattern VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = VkDeviceGroupPresentModeFlagBitsKHR 0x00000004---- | @VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR@ specifies that--- multiple physical devices with a presentation engine /can/ each present--- their own swapchain images.-pattern VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR :: VkDeviceGroupPresentModeFlagBitsKHR-pattern VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = VkDeviceGroupPresentModeFlagBitsKHR 0x00000008--- No documentation found for Nested "VkImageLayout" "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR"-pattern VK_IMAGE_LAYOUT_PRESENT_SRC_KHR :: VkImageLayout-pattern VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = VkImageLayout 1000001002--- No documentation found for Nested "VkResult" "VK_SUBOPTIMAL_KHR"-pattern VK_SUBOPTIMAL_KHR :: VkResult-pattern VK_SUBOPTIMAL_KHR = VkResult 1000001003--- No documentation found for Nested "VkResult" "VK_ERROR_OUT_OF_DATE_KHR"-pattern VK_ERROR_OUT_OF_DATE_KHR :: VkResult-pattern VK_ERROR_OUT_OF_DATE_KHR = VkResult (-1000001004)--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = VkStructureType 1000001000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR"-pattern VK_STRUCTURE_TYPE_PRESENT_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = VkStructureType 1000001001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = VkStructureType 1000060007--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = VkStructureType 1000060008--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = VkStructureType 1000060009--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = VkStructureType 1000060010--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = VkStructureType 1000060011--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = VkStructureType 1000060012--- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SWAPCHAIN_KHR"-pattern VK_OBJECT_TYPE_SWAPCHAIN_KHR :: VkObjectType-pattern VK_OBJECT_TYPE_SWAPCHAIN_KHR = VkObjectType 1000001000--- | @VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR@ specifies that--- images created from the swapchain (i.e. with the @swapchain@ member of--- 'VkImageSwapchainCreateInfoKHR' set to this swapchain’s handle) /must/--- use @VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT@.-pattern VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR :: VkSwapchainCreateFlagBitsKHR-pattern VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = VkSwapchainCreateFlagBitsKHR 0x00000001--- No documentation found for Nested "VkSwapchainCreateFlagBitsKHR" "VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR"-pattern VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR :: VkSwapchainCreateFlagBitsKHR-pattern VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = VkSwapchainCreateFlagBitsKHR 0x00000002--- No documentation found for TopLevel "VK_KHR_SWAPCHAIN_SPEC_VERSION"-pattern VK_KHR_SWAPCHAIN_SPEC_VERSION :: Integral a => a-pattern VK_KHR_SWAPCHAIN_SPEC_VERSION = 70--- No documentation found for TopLevel "VK_KHR_SWAPCHAIN_EXTENSION_NAME"-pattern VK_KHR_SWAPCHAIN_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain"--- | Dummy data to tag the 'Ptr' with-data VkSwapchainKHR_T--- | VkSwapchainKHR - Opaque handle to a swapchain object------ = Description------ A swapchain is an abstraction for an array of presentable images that--- are associated with a surface. The presentable images are represented by--- @VkImage@ objects created by the platform. One image (which /can/ be an--- array image for multiview\/stereoscopic-3D surfaces) is displayed at a--- time, but multiple images /can/ be queued for presentation. An--- application renders to the image, and then queues the image for--- presentation to the surface.------ A native window /cannot/ be associated with more than one swapchain at a--- time. Further, swapchains /cannot/ be created for native windows that--- have a non-Vulkan graphics API surface associated with them.------ __Note__------ The presentation engine is an abstraction for the platform’s compositor--- or display engine.------ The presentation engine /may/ be synchronous or asynchronous with--- respect to the application and\/or logical device.------ Some implementations /may/ use the device’s graphics queue or dedicated--- presentation hardware to perform presentation.------ The presentable images of a swapchain are owned by the presentation--- engine. An application /can/ acquire use of a presentable image from the--- presentation engine. Use of a presentable image /must/ occur only after--- the image is returned by @vkAcquireNextImageKHR@, and before it is--- presented by @vkQueuePresentKHR@. This includes transitioning the image--- layout and rendering commands.------ An application /can/ acquire use of a presentable image with--- @vkAcquireNextImageKHR@. After acquiring a presentable image and before--- modifying it, the application /must/ use a synchronization primitive to--- ensure that the presentation engine has finished reading from the image.--- The application /can/ then transition the image’s layout, queue--- rendering commands to it, etc. Finally, the application presents the--- image with @vkQueuePresentKHR@, which releases the acquisition of the--- image.------ The presentation engine controls the order in which presentable images--- are acquired for use by the application.------ __Note__------ This allows the platform to handle situations which require out-of-order--- return of images after presentation. At the same time, it allows the--- application to generate command buffers referencing all of the images in--- the swapchain at initialization time, rather than in its main loop.------ = See Also------ 'VkAcquireNextImageInfoKHR', 'VkBindImageMemorySwapchainInfoKHR',--- 'VkImageSwapchainCreateInfoKHR', 'VkPresentInfoKHR',--- 'VkSwapchainCreateInfoKHR', 'vkAcquireNextImageKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.vkCreateSharedSwapchainsKHR',--- 'vkCreateSwapchainKHR', 'vkDestroySwapchainKHR',--- 'Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing.vkGetPastPresentationTimingGOOGLE',--- 'Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing.vkGetRefreshCycleDurationGOOGLE',--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.vkGetSwapchainCounterEXT',--- 'vkGetSwapchainImagesKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.vkGetSwapchainStatusKHR',--- 'Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata.vkSetHdrMetadataEXT'-type VkSwapchainKHR = Ptr VkSwapchainKHR_T--- | vkCreateSwapchainKHR - Create a swapchain------ = Parameters------ - @device@ is the device to create the swapchain for.------ - @pCreateInfo@ is a pointer to an instance of the--- 'VkSwapchainCreateInfoKHR' structure specifying the parameters of--- the created swapchain.------ - @pAllocator@ is the allocator used for host memory allocated for the--- swapchain object when there is no more specific allocator available--- (see [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)).------ - @pSwapchain@ is a pointer to a @VkSwapchainKHR@ handle in which the--- created swapchain object will be returned.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkSwapchainCreateInfoKHR@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pSwapchain@ /must/ be a valid pointer to a @VkSwapchainKHR@ handle------ == Host Synchronization------ - Host access to @pCreateInfo.surface@ /must/ be externally--- synchronized------ - Host access to @pCreateInfo.oldSwapchain@ /must/ be externally--- synchronized------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_DEVICE_LOST@------ - @VK_ERROR_SURFACE_LOST_KHR@------ - @VK_ERROR_NATIVE_WINDOW_IN_USE_KHR@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkSwapchainCreateInfoKHR', 'VkSwapchainKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateSwapchainKHR" vkCreateSwapchainKHR :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkSwapchainCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSwapchain" ::: Ptr VkSwapchainKHR) -> IO VkResult--- | vkDestroySwapchainKHR - Destroy a swapchain object------ = Parameters------ - @device@ is the @VkDevice@ associated with @swapchain@.------ - @swapchain@ is the swapchain to destroy.------ - @pAllocator@ is the allocator used for host memory allocated for the--- swapchain object when there is no more specific allocator available--- (see [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)).------ = Description------ The application /must/ not destroy a swapchain until after completion of--- all outstanding operations on images that were acquired from the--- swapchain. @swapchain@ and all associated @VkImage@ handles are--- destroyed, and /must/ not be acquired or used any more by the--- application. The memory of each @VkImage@ will only be freed after that--- image is no longer used by the presentation engine. For example, if one--- image of the swapchain is being displayed in a window, the memory for--- that image /may/ not be freed until the window is destroyed, or another--- swapchain is created for the window. Destroying the swapchain does not--- invalidate the parent @VkSurfaceKHR@, and a new swapchain /can/ be--- created with it.------ When a swapchain associated with a display surface is destroyed, if the--- image most recently presented to the display surface is from the--- swapchain being destroyed, then either any display resources modified by--- presenting images from any swapchain associated with the display surface--- /must/ be reverted by the implementation to their state prior to the--- first present performed on one of these swapchains, or such resources--- /must/ be left in their current state.------ == Valid Usage------ - All uses of presentable images acquired from @swapchain@ /must/ have--- completed execution------ - If @VkAllocationCallbacks@ were provided when @swapchain@ was--- created, a compatible set of callbacks /must/ be provided here------ - If no @VkAllocationCallbacks@ were provided when @swapchain@ was--- created, @pAllocator@ /must/ be @NULL@------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - If @swapchain@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @swapchain@--- /must/ be a valid @VkSwapchainKHR@ handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - Both of @device@, and @swapchain@ that are valid handles /must/ have--- been created, allocated, or retrieved from the same @VkInstance@------ == Host Synchronization------ - Host access to @swapchain@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice', 'VkSwapchainKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroySwapchainKHR" vkDestroySwapchainKHR :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | vkGetSwapchainImagesKHR - Obtain the array of presentable images--- associated with a swapchain------ = Parameters------ - @device@ is the device associated with @swapchain@.------ - @swapchain@ is the swapchain to query.------ - @pSwapchainImageCount@ is a pointer to an integer related to the--- number of presentable images available or queried, as described--- below.------ - @pSwapchainImages@ is either @NULL@ or a pointer to an array of--- @VkImage@ handles.------ = Description------ If @pSwapchainImages@ is @NULL@, then the number of presentable images--- for @swapchain@ is returned in @pSwapchainImageCount@. Otherwise,--- @pSwapchainImageCount@ /must/ point to a variable set by the user to the--- number of elements in the @pSwapchainImages@ array, and on return the--- variable is overwritten with the number of structures actually written--- to @pSwapchainImages@. If the value of @pSwapchainImageCount@ is less--- than the number of presentable images for @swapchain@, at most--- @pSwapchainImageCount@ structures will be written. If--- @pSwapchainImageCount@ is smaller than the number of presentable images--- for @swapchain@, @VK_INCOMPLETE@ will be returned instead of--- @VK_SUCCESS@ to indicate that not all the available values were--- returned.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @swapchain@ /must/ be a valid @VkSwapchainKHR@ handle------ - @pSwapchainImageCount@ /must/ be a valid pointer to a @uint32_t@--- value------ - If the value referenced by @pSwapchainImageCount@ is not @0@, and--- @pSwapchainImages@ is not @NULL@, @pSwapchainImages@ /must/ be a--- valid pointer to an array of @pSwapchainImageCount@ @VkImage@--- handles------ - Both of @device@, and @swapchain@ /must/ have been created,--- allocated, or retrieved from the same @VkInstance@------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ - @VK_INCOMPLETE@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage', 'VkSwapchainKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetSwapchainImagesKHR" vkGetSwapchainImagesKHR :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("pSwapchainImageCount" ::: Ptr Word32) -> ("pSwapchainImages" ::: Ptr VkImage) -> IO VkResult--- | vkAcquireNextImageKHR - Retrieve the index of the next available--- presentable image------ = Parameters------ - @device@ is the device associated with @swapchain@.------ - @swapchain@ is the non-retired swapchain from which an image is--- being acquired.------ - @timeout@ specifies how long the function waits, in nanoseconds, if--- no image is available.------ - @semaphore@ is 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' or--- a semaphore to signal.------ - @fence@ is 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' or a--- fence to signal.------ - @pImageIndex@ is a pointer to a @uint32_t@ that is set to the index--- of the next image to use (i.e. an index into the array of images--- returned by @vkGetSwapchainImagesKHR@).------ == Valid Usage------ - @swapchain@ /must/ not be in the retired state------ - If @semaphore@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' it /must/ be--- unsignaled------ - If @semaphore@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' it /must/ not have--- any uncompleted signal or wait operations pending------ - If @fence@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'--- it /must/ be unsignaled and /must/ not be associated with any other--- queue command that has not yet completed execution on that queue------ - @semaphore@ and @fence@ /must/ not both be equal to--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'------ - If the number of currently acquired images is greater than the--- difference between the number of images in @swapchain@ and the value--- of--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceCapabilitiesKHR'::@minImageCount@--- as returned by a call to--- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.vkGetPhysicalDeviceSurfaceCapabilities2KHR'--- with the @surface@ used to create @swapchain@, @timeout@ /must/ not--- be @UINT64_MAX@------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @swapchain@ /must/ be a valid @VkSwapchainKHR@ handle------ - If @semaphore@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @semaphore@--- /must/ be a valid @VkSemaphore@ handle------ - If @fence@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @fence@ /must/ be a valid @VkFence@ handle------ - @pImageIndex@ /must/ be a valid pointer to a @uint32_t@ value------ - If @semaphore@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@------ - If @fence@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @device@------ - Both of @device@, and @swapchain@ that are valid handles /must/ have--- been created, allocated, or retrieved from the same @VkInstance@------ == Host Synchronization------ - Host access to @swapchain@ /must/ be externally synchronized------ - Host access to @semaphore@ /must/ be externally synchronized------ - Host access to @fence@ /must/ be externally synchronized------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ - @VK_TIMEOUT@------ - @VK_NOT_READY@------ - @VK_SUBOPTIMAL_KHR@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_DEVICE_LOST@------ - @VK_ERROR_OUT_OF_DATE_KHR@------ - @VK_ERROR_SURFACE_LOST_KHR@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.Queue.VkFence',--- 'Graphics.Vulkan.Core10.Queue.VkSemaphore', 'VkSwapchainKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkAcquireNextImageKHR" vkAcquireNextImageKHR :: ("device" ::: VkDevice) -> ("swapchain" ::: VkSwapchainKHR) -> ("timeout" ::: Word64) -> ("semaphore" ::: VkSemaphore) -> ("fence" ::: VkFence) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult--- | vkQueuePresentKHR - Queue an image for presentation------ = Parameters------ - @queue@ is a queue that is capable of presentation to the target--- surface’s platform on the same device as the image’s swapchain.------ - @pPresentInfo@ is a pointer to an instance of the 'VkPresentInfoKHR'--- structure specifying the parameters of the presentation.------ = Description------ __Note__------ There is no requirement for an application to present images in the same--- order that they were acquired - applications can arbitrarily present any--- image that is currently acquired.------ == Valid Usage------ - Each element of @pSwapchains@ member of @pPresentInfo@ /must/ be a--- swapchain that is created for a surface for which presentation is--- supported from @queue@ as determined using a call to--- @vkGetPhysicalDeviceSurfaceSupportKHR@------ - If more than one member of @pSwapchains@ was created from a display--- surface, all display surfaces referenced that refer to the same--- display /must/ use the same display mode------ - When a semaphore unsignal operation defined by the elements of the--- @pWaitSemaphores@ member of @pPresentInfo@ executes on @queue@, no--- other queue /must/ be waiting on the same semaphore.------ - All elements of the @pWaitSemaphores@ member of @pPresentInfo@--- /must/ be semaphores that are signaled, or have [semaphore signal--- operations](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-semaphores-signaling)--- previously submitted for execution.------ Any writes to memory backing the images referenced by the--- @pImageIndices@ and @pSwapchains@ members of @pPresentInfo@, that are--- available before 'vkQueuePresentKHR' is executed, are automatically made--- visible to the read access performed by the presentation engine. This--- automatic visibility operation for an image happens-after the semaphore--- signal operation, and happens-before the presentation engine accesses--- the image.------ Queueing an image for presentation defines a set of /queue operations/,--- including waiting on the semaphores and submitting a presentation--- request to the presentation engine. However, the scope of this set of--- queue operations does not include the actual processing of the image by--- the presentation engine.------ If @vkQueuePresentKHR@ fails to enqueue the corresponding set of queue--- operations, it /may/ return @VK_ERROR_OUT_OF_HOST_MEMORY@ or--- @VK_ERROR_OUT_OF_DEVICE_MEMORY@. If it does, the implementation /must/--- ensure that the state and contents of any resources or synchronization--- primitives referenced is unaffected by the call or its failure.------ If @vkQueuePresentKHR@ fails in such a way that the implementation is--- unable to make that guarantee, the implementation /must/ return--- @VK_ERROR_DEVICE_LOST@.------ However, if the presentation request is rejected by the presentation--- engine with an error @VK_ERROR_OUT_OF_DATE_KHR@ or--- @VK_ERROR_SURFACE_LOST_KHR@, the set of queue operations are still--- considered to be enqueued and thus any semaphore to be waited on gets--- unsignaled when the corresponding queue operation is complete.------ == Valid Usage (Implicit)------ - @queue@ /must/ be a valid @VkQueue@ handle------ - @pPresentInfo@ /must/ be a valid pointer to a valid--- @VkPresentInfoKHR@ structure------ == Host Synchronization------ - Host access to @queue@ /must/ be externally synchronized------ - Host access to @pPresentInfo.pWaitSemaphores@[] /must/ be externally--- synchronized------ - Host access to @pPresentInfo.pSwapchains@[] /must/ be externally--- synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | - | - | Any | - |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ - @VK_SUBOPTIMAL_KHR@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_DEVICE_LOST@------ - @VK_ERROR_OUT_OF_DATE_KHR@------ - @VK_ERROR_SURFACE_LOST_KHR@------ = See Also------ 'VkPresentInfoKHR', 'Graphics.Vulkan.Core10.Queue.VkQueue'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkQueuePresentKHR" vkQueuePresentKHR :: ("queue" ::: VkQueue) -> ("pPresentInfo" ::: Ptr VkPresentInfoKHR) -> IO VkResult--- | vkGetDeviceGroupPresentCapabilitiesKHR - Query present capabilities from--- other physical devices------ = Parameters------ - @device@ is the logical device.------ - @pDeviceGroupPresentCapabilities@ is a pointer to a structure of--- type 'VkDeviceGroupPresentCapabilitiesKHR' that is filled with the--- logical device’s capabilities.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pDeviceGroupPresentCapabilities@ /must/ be a valid pointer to a--- @VkDeviceGroupPresentCapabilitiesKHR@ structure------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkDeviceGroupPresentCapabilitiesKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetDeviceGroupPresentCapabilitiesKHR" vkGetDeviceGroupPresentCapabilitiesKHR :: ("device" ::: VkDevice) -> ("pDeviceGroupPresentCapabilities" ::: Ptr VkDeviceGroupPresentCapabilitiesKHR) -> IO VkResult--- | vkGetDeviceGroupSurfacePresentModesKHR - Query present capabilities for--- a surface------ = Parameters------ - @device@ is the logical device.------ - @surface@ is the surface.------ - @pModes@ is a pointer to a value of type--- @VkDeviceGroupPresentModeFlagsKHR@ that is filled with the supported--- device group present modes for the surface.------ = Description------ The modes returned by this command are not invariant, and /may/ change--- in response to the surface being moved, resized, or occluded. These--- modes /must/ be a subset of the modes returned by--- 'vkGetDeviceGroupPresentCapabilitiesKHR'.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @surface@ /must/ be a valid @VkSurfaceKHR@ handle------ - @pModes@ /must/ be a valid pointer to a--- 'VkDeviceGroupPresentModeFlagsKHR' value------ - Both of @device@, and @surface@ /must/ have been created, allocated,--- or retrieved from the same @VkInstance@------ == Host Synchronization------ - Host access to @surface@ /must/ be externally synchronized------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_SURFACE_LOST_KHR@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkDeviceGroupPresentModeFlagsKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetDeviceGroupSurfacePresentModesKHR" vkGetDeviceGroupSurfacePresentModesKHR :: ("device" ::: VkDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pModes" ::: Ptr VkDeviceGroupPresentModeFlagsKHR) -> IO VkResult--- | vkAcquireNextImage2KHR - Retrieve the index of the next available--- presentable image------ = Parameters------ - @device@ is the device associated with @swapchain@.------ - @pAcquireInfo@ is a pointer to a structure of type--- 'VkAcquireNextImageInfoKHR' containing parameters of the acquire.------ - @pImageIndex@ is a pointer to a @uint32_t@ that is set to the index--- of the next image to use.------ == Valid Usage------ - If the number of currently acquired images is greater than the--- difference between the number of images in the @swapchain@ member of--- @pAcquireInfo@ and the value of--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceCapabilitiesKHR'::@minImageCount@--- as returned by a call to--- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.vkGetPhysicalDeviceSurfaceCapabilities2KHR'--- with the @surface@ used to create @swapchain@, the @timeout@ member--- of @pAcquireInfo@ /must/ not be @UINT64_MAX@------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pAcquireInfo@ /must/ be a valid pointer to a valid--- @VkAcquireNextImageInfoKHR@ structure------ - @pImageIndex@ /must/ be a valid pointer to a @uint32_t@ value------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ - @VK_TIMEOUT@------ - @VK_NOT_READY@------ - @VK_SUBOPTIMAL_KHR@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ - @VK_ERROR_DEVICE_LOST@------ - @VK_ERROR_OUT_OF_DATE_KHR@------ - @VK_ERROR_SURFACE_LOST_KHR@------ = See Also------ 'VkAcquireNextImageInfoKHR',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkAcquireNextImage2KHR" vkAcquireNextImage2KHR :: ("device" ::: VkDevice) -> ("pAcquireInfo" ::: Ptr VkAcquireNextImageInfoKHR) -> ("pImageIndex" ::: Ptr Word32) -> IO VkResult--- | vkGetPhysicalDevicePresentRectanglesKHR - Query present rectangles for a--- surface on a physical device------ = Parameters------ - @physicalDevice@ is the physical device.------ - @surface@ is the surface.------ - @pRectCount@ is a pointer to an integer related to the number of--- rectangles available or queried, as described below.------ - @pRects@ is either @NULL@ or a pointer to an array of @VkRect2D@--- structures.------ = Description------ If @pRects@ is @NULL@, then the number of rectangles used when--- presenting the given @surface@ is returned in @pRectCount@. Otherwise,--- @pRectCount@ /must/ point to a variable set by the user to the number of--- elements in the @pRects@ array, and on return the variable is--- overwritten with the number of structures actually written to @pRects@.--- If the value of @pRectCount@ is less than the number of rectangles, at--- most @pRectCount@ structures will be written. If @pRectCount@ is smaller--- than the number of rectangles used for the given @surface@,--- @VK_INCOMPLETE@ will be returned instead of @VK_SUCCESS@ to indicate--- that not all the available values were returned.------ The values returned by this command are not invariant, and /may/ change--- in response to the surface being moved, resized, or occluded.------ The rectangles returned by this command /must/ not overlap.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @surface@ /must/ be a valid @VkSurfaceKHR@ handle------ - @pRectCount@ /must/ be a valid pointer to a @uint32_t@ value------ - If the value referenced by @pRectCount@ is not @0@, and @pRects@ is--- not @NULL@, @pRects@ /must/ be a valid pointer to an array of--- @pRectCount@ @VkRect2D@ structures------ - Both of @physicalDevice@, and @surface@ /must/ have been created,--- allocated, or retrieved from the same @VkInstance@------ == Host Synchronization------ - Host access to @surface@ /must/ be externally synchronized------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ - @VK_INCOMPLETE@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice',--- 'Graphics.Vulkan.Core10.Pipeline.VkRect2D',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDevicePresentRectanglesKHR" vkGetPhysicalDevicePresentRectanglesKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("surface" ::: VkSurfaceKHR) -> ("pRectCount" ::: Ptr Word32) -> ("pRects" ::: Ptr VkRect2D) -> IO VkResult--- | VkSwapchainCreateInfoKHR - Structure specifying parameters of a newly--- created swapchain object------ = Description------ __Note__------ On some platforms, it is normal that @maxImageExtent@ /may/ become @(0,--- 0)@, for example when the window is minimized. In such a case, it is not--- possible to create a swapchain due to the Valid Usage requirements.------ - @imageArrayLayers@ is the number of views in a multiview\/stereo--- surface. For non-stereoscopic-3D applications, this value is 1.------ - @imageUsage@ is a bitmask of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits'--- describing the intended usage of the (acquired) swapchain images.------ - @imageSharingMode@ is the sharing mode used for the image(s) of the--- swapchain.------ - @queueFamilyIndexCount@ is the number of queue families having--- access to the image(s) of the swapchain when @imageSharingMode@ is--- @VK_SHARING_MODE_CONCURRENT@.------ - @pQueueFamilyIndices@ is an array of queue family indices having--- access to the images(s) of the swapchain when @imageSharingMode@ is--- @VK_SHARING_MODE_CONCURRENT@.------ - @preTransform@ is a--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceTransformFlagBitsKHR'--- value describing the transform, relative to the presentation--- engine’s natural orientation, applied to the image content prior to--- presentation. If it does not match the @currentTransform@ value--- returned by @vkGetPhysicalDeviceSurfaceCapabilitiesKHR@, the--- presentation engine will transform the image content as part of the--- presentation operation.------ - @compositeAlpha@ is a--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkCompositeAlphaFlagBitsKHR'--- value indicating the alpha compositing mode to use when this surface--- is composited together with other surfaces on certain window--- systems.------ - @presentMode@ is the presentation mode the swapchain will use. A--- swapchain’s present mode determines how incoming present requests--- will be processed and queued internally.------ - @clipped@ specifies whether the Vulkan implementation is allowed to--- discard rendering operations that affect regions of the surface that--- are not visible.------ - If set to @VK_TRUE@, the presentable images associated with the--- swapchain /may/ not own all of their pixels. Pixels in the--- presentable images that correspond to regions of the target--- surface obscured by another window on the desktop, or subject to--- some other clipping mechanism will have undefined content when--- read back. Pixel shaders /may/ not execute for these pixels, and--- thus any side effects they would have had will not occur.--- @VK_TRUE@ value does not guarantee any clipping will occur, but--- allows more optimal presentation methods to be used on some--- platforms.------ - If set to @VK_FALSE@, presentable images associated with the--- swapchain will own all of the pixels they contain.------ __Note__------ Applications /should/ set this value to @VK_TRUE@ if they do not expect--- to read back the content of presentable images before presenting them or--- after reacquiring them, and if their pixel shaders do not have any side--- effects that require them to run for all pixels in the presentable--- image.------ - @oldSwapchain@ is 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- or the existing non-retired swapchain currently associated with--- @surface@. Providing a valid @oldSwapchain@ /may/ aid in the--- resource reuse, and also allows the application to still present any--- images that are already acquired from it.------ Upon calling @vkCreateSwapchainKHR@ with an @oldSwapchain@ that is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @oldSwapchain@ is--- retired — even if creation of the new swapchain fails. The new swapchain--- is created in the non-retired state whether or not @oldSwapchain@ is--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'.------ Upon calling @vkCreateSwapchainKHR@ with an @oldSwapchain@ that is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', any images from--- @oldSwapchain@ that are not acquired by the application /may/ be freed--- by the implementation, which /may/ occur even if creation of the new--- swapchain fails. The application /can/ destroy @oldSwapchain@ to free--- all memory associated with @oldSwapchain@.------ __Note__------ Multiple retired swapchains /can/ be associated with the same--- @VkSurfaceKHR@ through multiple uses of @oldSwapchain@ that outnumber--- calls to 'vkDestroySwapchainKHR'.------ After @oldSwapchain@ is retired, the application /can/ pass to--- 'vkQueuePresentKHR' any images it had already acquired from--- @oldSwapchain@. E.g., an application may present an image from the old--- swapchain before an image from the new swapchain is ready to be--- presented. As usual, 'vkQueuePresentKHR' /may/ fail if @oldSwapchain@--- has entered a state that causes @VK_ERROR_OUT_OF_DATE_KHR@ to be--- returned.------ The application /can/ continue to use a shared presentable image--- obtained from @oldSwapchain@ until a presentable image is acquired from--- the new swapchain, as long as it has not entered a state that causes it--- to return @VK_ERROR_OUT_OF_DATE_KHR@.------ == Valid Usage------ - @surface@ /must/ be a surface that is supported by the device as--- determined using @vkGetPhysicalDeviceSurfaceSupportKHR@------ - @minImageCount@ /must/ be greater than or equal to the value--- returned in the @minImageCount@ member of the--- @VkSurfaceCapabilitiesKHR@ structure returned by--- @vkGetPhysicalDeviceSurfaceCapabilitiesKHR@ for the surface------ - @minImageCount@ /must/ be less than or equal to the value returned--- in the @maxImageCount@ member of the @VkSurfaceCapabilitiesKHR@--- structure returned by @vkGetPhysicalDeviceSurfaceCapabilitiesKHR@--- for the surface if the returned @maxImageCount@ is not zero------ - @minImageCount@ /must/ be @1@ if @presentMode@ is either--- @VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR@ or--- @VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR@------ - @imageFormat@ and @imageColorSpace@ /must/ match the @format@ and--- @colorSpace@ members, respectively, of one of the--- @VkSurfaceFormatKHR@ structures returned by--- @vkGetPhysicalDeviceSurfaceFormatsKHR@ for the surface------ - @imageExtent@ /must/ be between @minImageExtent@ and--- @maxImageExtent@, inclusive, where @minImageExtent@ and--- @maxImageExtent@ are members of the @VkSurfaceCapabilitiesKHR@--- structure returned by @vkGetPhysicalDeviceSurfaceCapabilitiesKHR@--- for the surface------ - @imageExtent@ members @width@ and @height@ /must/ both be non-zero------ - @imageArrayLayers@ /must/ be greater than @0@ and less than or equal--- to the @maxImageArrayLayers@ member of the--- @VkSurfaceCapabilitiesKHR@ structure returned by--- @vkGetPhysicalDeviceSurfaceCapabilitiesKHR@ for the surface------ - If @presentMode@ is @VK_PRESENT_MODE_IMMEDIATE_KHR@,--- @VK_PRESENT_MODE_MAILBOX_KHR@, @VK_PRESENT_MODE_FIFO_KHR@ or--- @VK_PRESENT_MODE_FIFO_RELAXED_KHR@, @imageUsage@ /must/ be a subset--- of the supported usage flags present in the @supportedUsageFlags@--- member of the--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceCapabilitiesKHR'--- structure returned by--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.vkGetPhysicalDeviceSurfaceCapabilitiesKHR'--- for @surface@------ - If @presentMode@ is @VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR@ or--- @VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR@, @imageUsage@ /must/--- be a subset of the supported usage flags present in the--- @sharedPresentSupportedUsageFlags@ member of the--- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.VkSharedPresentSurfaceCapabilitiesKHR'--- structure returned by--- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.vkGetPhysicalDeviceSurfaceCapabilities2KHR'--- for @surface@------ - If @imageSharingMode@ is @VK_SHARING_MODE_CONCURRENT@,--- @pQueueFamilyIndices@ /must/ be a valid pointer to an array of--- @queueFamilyIndexCount@ @uint32_t@ values------ - If @imageSharingMode@ is @VK_SHARING_MODE_CONCURRENT@,--- @queueFamilyIndexCount@ /must/ be greater than @1@------ - If @imageSharingMode@ is @VK_SHARING_MODE_CONCURRENT@, each element--- of @pQueueFamilyIndices@ /must/ be unique and /must/ be less than--- @pQueueFamilyPropertyCount@ returned by either--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceQueueFamilyProperties'--- or--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.vkGetPhysicalDeviceQueueFamilyProperties2'--- for the @physicalDevice@ that was used to create @device@------ - @preTransform@ /must/ be one of the bits present in the--- @supportedTransforms@ member of the @VkSurfaceCapabilitiesKHR@--- structure returned by @vkGetPhysicalDeviceSurfaceCapabilitiesKHR@--- for the surface------ - @compositeAlpha@ /must/ be one of the bits present in the--- @supportedCompositeAlpha@ member of the @VkSurfaceCapabilitiesKHR@--- structure returned by @vkGetPhysicalDeviceSurfaceCapabilitiesKHR@--- for the surface------ - @presentMode@ /must/ be one of the--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkPresentModeKHR' values--- returned by @vkGetPhysicalDeviceSurfacePresentModesKHR@ for the--- surface------ - If the logical device was created with--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation.VkDeviceGroupDeviceCreateInfo'::@physicalDeviceCount@--- equal to 1, @flags@ /must/ not contain--- @VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR@------ - @oldSwapchain@ /must/ not be in the retired state------ - @imageFormat@, @imageUsage@, @imageExtent@, and @imageArrayLayers@--- /must/ be supported for @VK_IMAGE_TYPE_2D@ @VK_IMAGE_TILING_OPTIMAL@--- images as reported by--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceImageFormatProperties'.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of 'VkDeviceGroupSwapchainCreateInfoKHR' or--- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.VkSwapchainCounterCreateInfoEXT'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ - @flags@ /must/ be a valid combination of--- 'VkSwapchainCreateFlagBitsKHR' values------ - @surface@ /must/ be a valid @VkSurfaceKHR@ handle------ - @imageFormat@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Core.VkFormat' value------ - @imageColorSpace@ /must/ be a valid--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkColorSpaceKHR' value------ - @imageUsage@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits'--- values------ - @imageUsage@ /must/ not be @0@------ - @imageSharingMode@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Buffer.VkSharingMode' value------ - @preTransform@ /must/ be a valid--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceTransformFlagBitsKHR'--- value------ - @compositeAlpha@ /must/ be a valid--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkCompositeAlphaFlagBitsKHR'--- value------ - @presentMode@ /must/ be a valid--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkPresentModeKHR' value------ - If @oldSwapchain@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @oldSwapchain@--- /must/ be a valid @VkSwapchainKHR@ handle------ - If @oldSwapchain@ is a valid handle, it /must/ have been created,--- allocated, or retrieved from @surface@------ - Both of @oldSwapchain@, and @surface@ that are valid handles /must/--- have been created, allocated, or retrieved from the same--- @VkInstance@------ = See Also------ @VkBool32@, 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkColorSpaceKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkCompositeAlphaFlagBitsKHR',--- 'Graphics.Vulkan.Core10.Pipeline.VkExtent2D',--- 'Graphics.Vulkan.Core10.Core.VkFormat',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlags',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkPresentModeKHR',--- 'Graphics.Vulkan.Core10.Buffer.VkSharingMode',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceTransformFlagBitsKHR',--- 'VkSwapchainCreateFlagsKHR', 'VkSwapchainKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.vkCreateSharedSwapchainsKHR',--- 'vkCreateSwapchainKHR'-data VkSwapchainCreateInfoKHR = VkSwapchainCreateInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is a bitmask of 'VkSwapchainCreateFlagBitsKHR' indicating- -- parameters of the swapchain creation.- vkFlags :: VkSwapchainCreateFlagsKHR- , -- | @surface@ is the surface onto which the swapchain will present images.- -- If the creation succeeds, the swapchain becomes associated with- -- @surface@.- vkSurface :: VkSurfaceKHR- , -- | @minImageCount@ is the minimum number of presentable images that the- -- application needs. The implementation will either create the swapchain- -- with at least that many images, or it will fail to create the swapchain.- vkMinImageCount :: Word32- , -- | @imageFormat@ is a 'Graphics.Vulkan.Core10.Core.VkFormat' value- -- specifying the format the swapchain image(s) will be created with.- vkImageFormat :: VkFormat- , -- | @imageColorSpace@ is a- -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkColorSpaceKHR' value- -- specifying the way the swapchain interprets image data.- vkImageColorSpace :: VkColorSpaceKHR- , -- | @imageExtent@ is the size (in pixels) of the swapchain image(s). The- -- behavior is platform-dependent if the image extent does not match the- -- surface’s @currentExtent@ as returned by- -- @vkGetPhysicalDeviceSurfaceCapabilitiesKHR@.- vkImageExtent :: VkExtent2D- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "imageArrayLayers"- vkImageArrayLayers :: Word32- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "imageUsage"- vkImageUsage :: VkImageUsageFlags- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "imageSharingMode"- vkImageSharingMode :: VkSharingMode- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "queueFamilyIndexCount"- vkQueueFamilyIndexCount :: Word32- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "pQueueFamilyIndices"- vkPQueueFamilyIndices :: Ptr Word32- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "preTransform"- vkPreTransform :: VkSurfaceTransformFlagBitsKHR- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "compositeAlpha"- vkCompositeAlpha :: VkCompositeAlphaFlagBitsKHR- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "presentMode"- vkPresentMode :: VkPresentModeKHR- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "clipped"- vkClipped :: VkBool32- , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "oldSwapchain"- vkOldSwapchain :: VkSwapchainKHR- }- deriving (Eq, Show)--instance Storable VkSwapchainCreateInfoKHR where- sizeOf ~_ = 104- alignment ~_ = 8- peek ptr = VkSwapchainCreateInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 44)- <*> peek (ptr `plusPtr` 52)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 60)- <*> peek (ptr `plusPtr` 64)- <*> peek (ptr `plusPtr` 72)- <*> peek (ptr `plusPtr` 80)- <*> peek (ptr `plusPtr` 84)- <*> peek (ptr `plusPtr` 88)- <*> peek (ptr `plusPtr` 92)- <*> peek (ptr `plusPtr` 96)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkSwapchainCreateInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkSwapchainCreateInfoKHR))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkSwapchainCreateInfoKHR))- *> poke (ptr `plusPtr` 24) (vkSurface (poked :: VkSwapchainCreateInfoKHR))- *> poke (ptr `plusPtr` 32) (vkMinImageCount (poked :: VkSwapchainCreateInfoKHR))- *> poke (ptr `plusPtr` 36) (vkImageFormat (poked :: VkSwapchainCreateInfoKHR))- *> poke (ptr `plusPtr` 40) (vkImageColorSpace (poked :: VkSwapchainCreateInfoKHR))- *> poke (ptr `plusPtr` 44) (vkImageExtent (poked :: VkSwapchainCreateInfoKHR))- *> poke (ptr `plusPtr` 52) (vkImageArrayLayers (poked :: VkSwapchainCreateInfoKHR))- *> poke (ptr `plusPtr` 56) (vkImageUsage (poked :: VkSwapchainCreateInfoKHR))- *> poke (ptr `plusPtr` 60) (vkImageSharingMode (poked :: VkSwapchainCreateInfoKHR))- *> poke (ptr `plusPtr` 64) (vkQueueFamilyIndexCount (poked :: VkSwapchainCreateInfoKHR))- *> poke (ptr `plusPtr` 72) (vkPQueueFamilyIndices (poked :: VkSwapchainCreateInfoKHR))- *> poke (ptr `plusPtr` 80) (vkPreTransform (poked :: VkSwapchainCreateInfoKHR))- *> poke (ptr `plusPtr` 84) (vkCompositeAlpha (poked :: VkSwapchainCreateInfoKHR))- *> poke (ptr `plusPtr` 88) (vkPresentMode (poked :: VkSwapchainCreateInfoKHR))- *> poke (ptr `plusPtr` 92) (vkClipped (poked :: VkSwapchainCreateInfoKHR))- *> poke (ptr `plusPtr` 96) (vkOldSwapchain (poked :: VkSwapchainCreateInfoKHR))--- | VkPresentInfoKHR - Structure describing parameters of a queue--- presentation------ = Description------ Before an application /can/ present an image, the image’s layout /must/--- be transitioned to the @VK_IMAGE_LAYOUT_PRESENT_SRC_KHR@ layout, or for--- a shared presentable image the @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@--- layout.------ __Note__------ When transitioning the image to @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@ or--- @VK_IMAGE_LAYOUT_PRESENT_SRC_KHR@, there is no need to delay subsequent--- processing, or perform any visibility operations (as 'vkQueuePresentKHR'--- performs automatic visibility operations). To achieve this, the--- @dstAccessMask@ member of the--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkImageMemoryBarrier'--- /should/ be set to @0@, and the @dstStageMask@ parameter /should/ be set--- to @VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT@.------ == Valid Usage------ - Each element of @pImageIndices@ /must/ be the index of a presentable--- image acquired from the swapchain specified by the corresponding--- element of the @pSwapchains@ array, and the presented image--- subresource /must/ be in the @VK_IMAGE_LAYOUT_PRESENT_SRC_KHR@ or--- @VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR@ layout at the time the--- operation is executed on a @VkDevice@------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_PRESENT_INFO_KHR@------ - Each @pNext@ member of any structure (including this one) in the--- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid--- instance of 'VkDeviceGroupPresentInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.VkDisplayPresentInfoKHR',--- 'Graphics.Vulkan.Extensions.VK_KHR_incremental_present.VkPresentRegionsKHR',--- or--- 'Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing.VkPresentTimesInfoGOOGLE'------ - Each @sType@ member in the @pNext@ chain /must/ be unique------ - If @waitSemaphoreCount@ is not @0@, @pWaitSemaphores@ /must/ be a--- valid pointer to an array of @waitSemaphoreCount@ valid--- @VkSemaphore@ handles------ - @pSwapchains@ /must/ be a valid pointer to an array of--- @swapchainCount@ valid @VkSwapchainKHR@ handles------ - @pImageIndices@ /must/ be a valid pointer to an array of--- @swapchainCount@ @uint32_t@ values------ - If @pResults@ is not @NULL@, @pResults@ /must/ be a valid pointer to--- an array of @swapchainCount@ 'Graphics.Vulkan.Core10.Core.VkResult'--- values------ - @swapchainCount@ /must/ be greater than @0@------ - Both of the elements of @pSwapchains@, and the elements of--- @pWaitSemaphores@ that are valid handles /must/ have been created,--- allocated, or retrieved from the same @VkInstance@------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkResult',--- 'Graphics.Vulkan.Core10.Queue.VkSemaphore',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkSwapchainKHR',--- 'vkQueuePresentKHR'-data VkPresentInfoKHR = VkPresentInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @waitSemaphoreCount@ is the number of semaphores to wait for before- -- issuing the present request. The number /may/ be zero.- vkWaitSemaphoreCount :: Word32- , -- | @pWaitSemaphores@, if not @NULL@, is an array of @VkSemaphore@ objects- -- with @waitSemaphoreCount@ entries, and specifies the semaphores to wait- -- for before issuing the present request.- vkPWaitSemaphores :: Ptr VkSemaphore- , -- | @swapchainCount@ is the number of swapchains being presented to by this- -- command.- vkSwapchainCount :: Word32- , -- | @pSwapchains@ is an array of @VkSwapchainKHR@ objects with- -- @swapchainCount@ entries. A given swapchain /must/ not appear in this- -- list more than once.- vkPSwapchains :: Ptr VkSwapchainKHR- , -- | @pImageIndices@ is an array of indices into the array of each- -- swapchain’s presentable images, with @swapchainCount@ entries. Each- -- entry in this array identifies the image to present on the corresponding- -- entry in the @pSwapchains@ array.- vkPImageIndices :: Ptr Word32- , -- | @pResults@ is an array of 'Graphics.Vulkan.Core10.Core.VkResult' typed- -- elements with @swapchainCount@ entries. Applications that do not need- -- per-swapchain results /can/ use @NULL@ for @pResults@. If non-@NULL@,- -- each entry in @pResults@ will be set to the- -- 'Graphics.Vulkan.Core10.Core.VkResult' for presenting the swapchain- -- corresponding to the same index in @pSwapchains@.- vkPResults :: Ptr VkResult- }- deriving (Eq, Show)--instance Storable VkPresentInfoKHR where- sizeOf ~_ = 64- alignment ~_ = 8- peek ptr = VkPresentInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPresentInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPresentInfoKHR))- *> poke (ptr `plusPtr` 16) (vkWaitSemaphoreCount (poked :: VkPresentInfoKHR))- *> poke (ptr `plusPtr` 24) (vkPWaitSemaphores (poked :: VkPresentInfoKHR))- *> poke (ptr `plusPtr` 32) (vkSwapchainCount (poked :: VkPresentInfoKHR))- *> poke (ptr `plusPtr` 40) (vkPSwapchains (poked :: VkPresentInfoKHR))- *> poke (ptr `plusPtr` 48) (vkPImageIndices (poked :: VkPresentInfoKHR))- *> poke (ptr `plusPtr` 56) (vkPResults (poked :: VkPresentInfoKHR))--- | VkDeviceGroupPresentCapabilitiesKHR - Present capabilities from other--- physical devices------ = Description------ @modes@ always has @VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR@ set.------ The present mode flags are also used when presenting an image, in--- 'VkDeviceGroupPresentInfoKHR'::@mode@.------ If a device group only includes a single physical device, then @modes@--- /must/ equal @VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR@------ - @pNext@ /must/ be @NULL@------ = See Also------ 'VkDeviceGroupPresentModeFlagsKHR',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetDeviceGroupPresentCapabilitiesKHR'-data VkDeviceGroupPresentCapabilitiesKHR = VkDeviceGroupPresentCapabilitiesKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @presentMask@ is an array of masks, where the mask at element i is- -- non-zero if physical device i has a presentation engine, and where bit j- -- is set in element i if physical device i /can/ present swapchain images- -- from physical device j. If element i is non-zero, then bit i /must/ be- -- set.- vkPresentMask :: Vector VK_MAX_DEVICE_GROUP_SIZE Word32- , -- | @modes@ is a bitmask of 'VkDeviceGroupPresentModeFlagBitsKHR' indicating- -- which device group presentation modes are supported.- vkModes :: VkDeviceGroupPresentModeFlagsKHR- }- deriving (Eq, Show)--instance Storable VkDeviceGroupPresentCapabilitiesKHR where- sizeOf ~_ = 152- alignment ~_ = 8- peek ptr = VkDeviceGroupPresentCapabilitiesKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 144)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDeviceGroupPresentCapabilitiesKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDeviceGroupPresentCapabilitiesKHR))- *> poke (ptr `plusPtr` 16) (vkPresentMask (poked :: VkDeviceGroupPresentCapabilitiesKHR))- *> poke (ptr `plusPtr` 144) (vkModes (poked :: VkDeviceGroupPresentCapabilitiesKHR))--- | VkImageSwapchainCreateInfoKHR - Specify that an image will be bound to--- swapchain memory------ == Valid Usage------ - If @swapchain@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', the fields of--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo' /must/ match the--- [implied image creation--- parameters](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#swapchain-wsi-image-create-info)--- of the swapchain------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR@------ - If @swapchain@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @swapchain@--- /must/ be a valid @VkSwapchainKHR@ handle------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkSwapchainKHR'-data VkImageSwapchainCreateInfoKHR = VkImageSwapchainCreateInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @swapchain@ is 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' or a- -- handle of a swapchain that the image will be bound to.- vkSwapchain :: VkSwapchainKHR- }- deriving (Eq, Show)--instance Storable VkImageSwapchainCreateInfoKHR where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkImageSwapchainCreateInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkImageSwapchainCreateInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImageSwapchainCreateInfoKHR))- *> poke (ptr `plusPtr` 16) (vkSwapchain (poked :: VkImageSwapchainCreateInfoKHR))--- | VkBindImageMemorySwapchainInfoKHR - Structure specifying swapchain image--- memory to bind to------ = Description------ If @swapchain@ is not @NULL@, the @swapchain@ and @imageIndex@ are used--- to determine the memory that the image is bound to, instead of @memory@--- and @memoryOffset@.------ Memory /can/ be bound to a swapchain and use the @pDeviceIndices@ or--- @pSplitInstanceBindRegions@ members of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2.VkBindImageMemoryDeviceGroupInfo'.------ == Valid Usage------ - @imageIndex@ /must/ be less than the number of images in @swapchain@------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR@------ - @swapchain@ /must/ be a valid @VkSwapchainKHR@ handle------ == Host Synchronization------ - Host access to @swapchain@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkSwapchainKHR'-data VkBindImageMemorySwapchainInfoKHR = VkBindImageMemorySwapchainInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @swapchain@ is 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' or a- -- swapchain handle.- vkSwapchain :: VkSwapchainKHR- , -- | @imageIndex@ is an image index within @swapchain@.- vkImageIndex :: Word32- }- deriving (Eq, Show)--instance Storable VkBindImageMemorySwapchainInfoKHR where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkBindImageMemorySwapchainInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkBindImageMemorySwapchainInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkBindImageMemorySwapchainInfoKHR))- *> poke (ptr `plusPtr` 16) (vkSwapchain (poked :: VkBindImageMemorySwapchainInfoKHR))- *> poke (ptr `plusPtr` 24) (vkImageIndex (poked :: VkBindImageMemorySwapchainInfoKHR))--- | VkAcquireNextImageInfoKHR - Structure specifying parameters of the--- acquire------ = Description------ If 'vkAcquireNextImageKHR' is used, the device mask is considered to--- include all physical devices in the logical device.------ __Note__------ 'vkAcquireNextImage2KHR' signals at most one semaphore, even if the--- application requests waiting for multiple physical devices to be ready--- via the @deviceMask@. However, only a single physical device /can/ wait--- on that semaphore, since the semaphore becomes unsignaled when the wait--- succeeds. For other physical devices to wait for the image to be ready,--- it is necessary for the application to submit semaphore signal--- operation(s) to that first physical device to signal additional--- semaphore(s) after the wait succeeds, which the other physical device(s)--- /can/ wait upon.------ == Valid Usage------ - @swapchain@ /must/ not be in the retired state------ - If @semaphore@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' it /must/ be--- unsignaled------ - If @semaphore@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' it /must/ not have--- any uncompleted signal or wait operations pending------ - If @fence@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'--- it /must/ be unsignaled and /must/ not be associated with any other--- queue command that has not yet completed execution on that queue------ - @semaphore@ and @fence@ /must/ not both be equal to--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'------ - @deviceMask@ /must/ be a valid device mask------ - @deviceMask@ /must/ not be zero------ - @semaphore@ and @fence@ /must/ not both be equal to--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR@------ - @pNext@ /must/ be @NULL@------ - @swapchain@ /must/ be a valid @VkSwapchainKHR@ handle------ - If @semaphore@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @semaphore@--- /must/ be a valid @VkSemaphore@ handle------ - If @fence@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @fence@ /must/ be a valid @VkFence@ handle------ - Each of @fence@, @semaphore@, and @swapchain@ that are valid handles--- /must/ have been created, allocated, or retrieved from the same--- @VkInstance@------ == Host Synchronization------ - Host access to @swapchain@ /must/ be externally synchronized------ - Host access to @semaphore@ /must/ be externally synchronized------ - Host access to @fence@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Core10.Queue.VkFence',--- 'Graphics.Vulkan.Core10.Queue.VkSemaphore',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkSwapchainKHR',--- 'vkAcquireNextImage2KHR'-data VkAcquireNextImageInfoKHR = VkAcquireNextImageInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @swapchain@ is a non-retired swapchain from which an image is acquired.- vkSwapchain :: VkSwapchainKHR- , -- | @timeout@ specifies how long the function waits, in nanoseconds, if no- -- image is available.- vkTimeout :: Word64- , -- | @semaphore@ is @VK_NULL_HANDLE@ or a semaphore to signal.- vkSemaphore :: VkSemaphore- , -- | @fence@ is @VK_NULL_HANDLE@ or a fence to signal.- vkFence :: VkFence- , -- | @deviceMask@ is a mask of physical devices for which the swapchain image- -- will be ready to use when the semaphore or fence is signaled.- vkDeviceMask :: Word32- }- deriving (Eq, Show)--instance Storable VkAcquireNextImageInfoKHR where- sizeOf ~_ = 56- alignment ~_ = 8- peek ptr = VkAcquireNextImageInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkAcquireNextImageInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkAcquireNextImageInfoKHR))- *> poke (ptr `plusPtr` 16) (vkSwapchain (poked :: VkAcquireNextImageInfoKHR))- *> poke (ptr `plusPtr` 24) (vkTimeout (poked :: VkAcquireNextImageInfoKHR))- *> poke (ptr `plusPtr` 32) (vkSemaphore (poked :: VkAcquireNextImageInfoKHR))- *> poke (ptr `plusPtr` 40) (vkFence (poked :: VkAcquireNextImageInfoKHR))- *> poke (ptr `plusPtr` 48) (vkDeviceMask (poked :: VkAcquireNextImageInfoKHR))--- | VkDeviceGroupPresentInfoKHR - Mode and mask controlling which physical--- devices\' images are presented------ = Description------ If @mode@ is @VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR@, then each--- element of @pDeviceMasks@ selects which instance of the swapchain image--- is presented. Each element of @pDeviceMasks@ /must/ have exactly one bit--- set, and the corresponding physical device /must/ have a presentation--- engine as reported by 'VkDeviceGroupPresentCapabilitiesKHR'.------ If @mode@ is @VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR@, then each--- element of @pDeviceMasks@ selects which instance of the swapchain image--- is presented. Each element of @pDeviceMasks@ /must/ have exactly one bit--- set, and some physical device in the logical device /must/ include that--- bit in its 'VkDeviceGroupPresentCapabilitiesKHR'::@presentMask@.------ If @mode@ is @VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR@, then each--- element of @pDeviceMasks@ selects which instances of the swapchain image--- are component-wise summed and the sum of those images is presented. If--- the sum in any component is outside the representable range, the value--- of that component is undefined. Each element of @pDeviceMasks@ /must/--- have a value for which all set bits are set in one of the elements of--- 'VkDeviceGroupPresentCapabilitiesKHR'::@presentMask@.------ If @mode@ is @VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR@,--- then each element of @pDeviceMasks@ selects which instance(s) of the--- swapchain images are presented. For each bit set in each element of--- @pDeviceMasks@, the corresponding physical device /must/ have a--- presentation engine as reported by--- 'VkDeviceGroupPresentCapabilitiesKHR'.------ If @VkDeviceGroupPresentInfoKHR@ is not provided or @swapchainCount@ is--- zero then the masks are considered to be @1@. If--- @VkDeviceGroupPresentInfoKHR@ is not provided, @mode@ is considered to--- be @VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR@.------ == Valid Usage------ - @swapchainCount@ /must/ equal @0@ or--- 'VkPresentInfoKHR'::@swapchainCount@------ - If @mode@ is @VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR@, then each--- element of @pDeviceMasks@ /must/ have exactly one bit set, and the--- corresponding element of--- 'VkDeviceGroupPresentCapabilitiesKHR'::@presentMask@ /must/ be--- non-zero------ - If @mode@ is @VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR@, then--- each element of @pDeviceMasks@ /must/ have exactly one bit set, and--- some physical device in the logical device /must/ include that bit--- in its 'VkDeviceGroupPresentCapabilitiesKHR'::@presentMask@.------ - If @mode@ is @VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR@, then each--- element of @pDeviceMasks@ /must/ have a value for which all set bits--- are set in one of the elements of--- 'VkDeviceGroupPresentCapabilitiesKHR'::@presentMask@------ - If @mode@ is--- @VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR@, then for--- each bit set in each element of @pDeviceMasks@, the corresponding--- element of 'VkDeviceGroupPresentCapabilitiesKHR'::@presentMask@--- /must/ be non-zero------ - The value of each element of @pDeviceMasks@ /must/ be equal to the--- device mask passed in 'VkAcquireNextImageInfoKHR'::@deviceMask@ when--- the image index was last acquired------ - @mode@ /must/ have exactly one bit set, and that bit /must/ have--- been included in 'VkDeviceGroupSwapchainCreateInfoKHR'::@modes@------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR@------ - If @swapchainCount@ is not @0@, @pDeviceMasks@ /must/ be a valid--- pointer to an array of @swapchainCount@ @uint32_t@ values------ - @mode@ /must/ be a valid 'VkDeviceGroupPresentModeFlagBitsKHR' value------ = See Also------ 'VkDeviceGroupPresentModeFlagBitsKHR',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkDeviceGroupPresentInfoKHR = VkDeviceGroupPresentInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @swapchainCount@ is zero or the number of elements in @pDeviceMasks@.- vkSwapchainCount :: Word32- , -- | @pDeviceMasks@ is an array of device masks, one for each element of- -- 'VkPresentInfoKHR'::pSwapchains.- vkPDeviceMasks :: Ptr Word32- , -- | @mode@ is the device group present mode that will be used for this- -- present.- vkMode :: VkDeviceGroupPresentModeFlagBitsKHR- }- deriving (Eq, Show)--instance Storable VkDeviceGroupPresentInfoKHR where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkDeviceGroupPresentInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDeviceGroupPresentInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDeviceGroupPresentInfoKHR))- *> poke (ptr `plusPtr` 16) (vkSwapchainCount (poked :: VkDeviceGroupPresentInfoKHR))- *> poke (ptr `plusPtr` 24) (vkPDeviceMasks (poked :: VkDeviceGroupPresentInfoKHR))- *> poke (ptr `plusPtr` 32) (vkMode (poked :: VkDeviceGroupPresentInfoKHR))--- | VkDeviceGroupSwapchainCreateInfoKHR - Structure specifying parameters of--- a newly created swapchain object------ = Description------ If this structure is not present, @modes@ is considered to be--- @VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR@------ - @modes@ /must/ be a valid combination of--- 'VkDeviceGroupPresentModeFlagBitsKHR' values------ - @modes@ /must/ not be @0@------ = See Also------ 'VkDeviceGroupPresentModeFlagsKHR',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkDeviceGroupSwapchainCreateInfoKHR = VkDeviceGroupSwapchainCreateInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @modes@ is a bitfield of modes that the swapchain /can/ be used with.- vkModes :: VkDeviceGroupPresentModeFlagsKHR- }- deriving (Eq, Show)--instance Storable VkDeviceGroupSwapchainCreateInfoKHR where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkDeviceGroupSwapchainCreateInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDeviceGroupSwapchainCreateInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDeviceGroupSwapchainCreateInfoKHR))- *> poke (ptr `plusPtr` 16) (vkModes (poked :: VkDeviceGroupSwapchainCreateInfoKHR))--- | VkSwapchainCreateFlagsKHR - Bitmask of VkSwapchainCreateFlagBitsKHR------ = Description------ @VkSwapchainCreateFlagsKHR@ is a bitmask type for setting a mask of zero--- or more 'VkSwapchainCreateFlagBitsKHR'.------ = See Also------ 'VkSwapchainCreateFlagBitsKHR', 'VkSwapchainCreateInfoKHR'-type VkSwapchainCreateFlagsKHR = VkSwapchainCreateFlagBitsKHR--- | VkDeviceGroupPresentModeFlagsKHR - Bitmask of--- VkDeviceGroupPresentModeFlagBitsKHR------ = Description------ @VkDeviceGroupPresentModeFlagsKHR@ is a bitmask type for setting a mask--- of zero or more 'VkDeviceGroupPresentModeFlagBitsKHR'.------ = See Also------ 'VkDeviceGroupPresentCapabilitiesKHR',--- 'VkDeviceGroupPresentModeFlagBitsKHR',--- 'VkDeviceGroupSwapchainCreateInfoKHR',--- 'vkGetDeviceGroupSurfacePresentModesKHR'-type VkDeviceGroupPresentModeFlagsKHR = VkDeviceGroupPresentModeFlagBitsKHR+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_swapchain ( createSwapchainKHR+ , withSwapchainKHR+ , destroySwapchainKHR+ , getSwapchainImagesKHR+ , acquireNextImageKHR+ , queuePresentKHR+ , getDeviceGroupPresentCapabilitiesKHR+ , getDeviceGroupSurfacePresentModesKHR+ , acquireNextImage2KHR+ , getPhysicalDevicePresentRectanglesKHR+ , SwapchainCreateInfoKHR(..)+ , PresentInfoKHR(..)+ , DeviceGroupPresentCapabilitiesKHR(..)+ , ImageSwapchainCreateInfoKHR(..)+ , BindImageMemorySwapchainInfoKHR(..)+ , AcquireNextImageInfoKHR(..)+ , DeviceGroupPresentInfoKHR(..)+ , DeviceGroupSwapchainCreateInfoKHR(..)+ , DeviceGroupPresentModeFlagBitsKHR( DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR+ , DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR+ , DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR+ , DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR+ , ..+ )+ , DeviceGroupPresentModeFlagsKHR+ , SwapchainCreateFlagBitsKHR( SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR+ , SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR+ , SWAPCHAIN_CREATE_PROTECTED_BIT_KHR+ , ..+ )+ , SwapchainCreateFlagsKHR+ , KHR_SWAPCHAIN_SPEC_VERSION+ , pattern KHR_SWAPCHAIN_SPEC_VERSION+ , KHR_SWAPCHAIN_EXTENSION_NAME+ , pattern KHR_SWAPCHAIN_EXTENSION_NAME+ , SurfaceKHR(..)+ , SwapchainKHR(..)+ , PresentModeKHR(..)+ , ColorSpaceKHR(..)+ , CompositeAlphaFlagBitsKHR(..)+ , CompositeAlphaFlagsKHR+ , SurfaceTransformFlagBitsKHR(..)+ , SurfaceTransformFlagsKHR+ ) where++import Control.Exception.Base (bracket)+import Control.Monad (unless)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Bits (Bits)+import Data.String (IsString)+import Data.Type.Equality ((:~:)(Refl))+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.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Data.Word (Word64)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import qualified Data.Vector.Storable.Sized (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Extensions.VK_EXT_swapchain_colorspace (ColorSpaceKHR)+import Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter (CompositeAlphaFlagBitsKHR)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkAcquireNextImage2KHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkAcquireNextImageKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateSwapchainKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroySwapchainKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetDeviceGroupPresentCapabilitiesKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetDeviceGroupSurfacePresentModesKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetSwapchainImagesKHR))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkQueuePresentKHR))+import Graphics.Vulkan.Core10.Handles (Device_T)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_display_swapchain (DisplayPresentInfoKHR)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.Core10.SharedTypes (Extent2D)+import Graphics.Vulkan.Core10.Handles (Fence)+import Graphics.Vulkan.Core10.Handles (Fence(..))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Core10.Enums.Format (Format)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Image)+import Graphics.Vulkan.Core10.Handles (Image(..))+import {-# SOURCE #-} Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list (ImageFormatListCreateInfo)+import Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDevicePresentRectanglesKHR))+import Graphics.Vulkan.Core10.APIConstants (MAX_DEVICE_GROUP_SIZE)+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_GGP_frame_token (PresentFrameTokenGGP)+import Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image (PresentModeKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_KHR_incremental_present (PresentRegionsKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing (PresentTimesInfoGOOGLE)+import Graphics.Vulkan.Core10.Handles (Queue)+import Graphics.Vulkan.Core10.Handles (Queue(..))+import Graphics.Vulkan.Core10.Handles (Queue_T)+import Graphics.Vulkan.Core10.CommandBufferBuilding (Rect2D)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Handles (Semaphore)+import Graphics.Vulkan.Core10.Handles (Semaphore(..))+import Graphics.Vulkan.Core10.Enums.SharingMode (SharingMode)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive (SurfaceFullScreenExclusiveInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive (SurfaceFullScreenExclusiveWin32InfoEXT)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (SurfaceTransformFlagBitsKHR)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_display_control (SwapchainCounterCreateInfoEXT)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr (SwapchainDisplayNativeHdrCreateInfoAMD)+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR)+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.APIConstants (pattern MAX_DEVICE_GROUP_SIZE)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PRESENT_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.VK_EXT_swapchain_colorspace (ColorSpaceKHR(..))+import Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter (CompositeAlphaFlagBitsKHR(..))+import Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter (CompositeAlphaFlagsKHR)+import Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image (PresentModeKHR(..))+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (SurfaceTransformFlagBitsKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (SurfaceTransformFlagsKHR)+import Graphics.Vulkan.Extensions.Handles (SwapchainKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateSwapchainKHR+ :: FunPtr (Ptr Device_T -> Ptr (SwapchainCreateInfoKHR a) -> Ptr AllocationCallbacks -> Ptr SwapchainKHR -> IO Result) -> Ptr Device_T -> Ptr (SwapchainCreateInfoKHR a) -> Ptr AllocationCallbacks -> Ptr SwapchainKHR -> IO Result++-- | vkCreateSwapchainKHR - Create a swapchain+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the device to create the+-- swapchain for.+--+-- - @pCreateInfo@ is a pointer to a 'SwapchainCreateInfoKHR' structure+-- specifying the parameters of the created swapchain.+--+-- - @pAllocator@ is the allocator used for host memory allocated for the+-- swapchain object when there is no more specific allocator available+-- (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).+--+-- - @pSwapchain@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR' handle in which+-- the created swapchain object will be returned.+--+-- = Description+--+-- If the @oldSwapchain@ parameter of @pCreateInfo@ is a valid swapchain,+-- which has exclusive full-screen access, that access is released from+-- @oldSwapchain@. If the command succeeds in this case, the newly created+-- swapchain will automatically acquire exclusive full-screen access from+-- @oldSwapchain@.+--+-- Note+--+-- This implicit transfer is intended to avoid exiting and entering+-- full-screen exclusive mode, which may otherwise cause unwanted visual+-- updates to the display.+--+-- In some cases, swapchain creation /may/ fail if exclusive full-screen+-- mode is requested for application control, but for some+-- implementation-specific reason exclusive full-screen access is+-- unavailable for the particular combination of parameters provided. If+-- this occurs,+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED' will+-- be returned.+--+-- Note+--+-- In particular, it will fail if the @imageExtent@ member of @pCreateInfo@+-- does not match the extents of the monitor. Other reasons for failure may+-- include the app not being set as high-dpi aware, or if the physical+-- device and monitor are not compatible in this mode.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'SwapchainCreateInfoKHR' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pSwapchain@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR' handle+--+-- == Host Synchronization+--+-- - Host access to @pCreateInfo.surface@ /must/ be externally+-- synchronized+--+-- - Host access to @pCreateInfo.oldSwapchain@ /must/ be externally+-- synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device', 'SwapchainCreateInfoKHR',+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR'+createSwapchainKHR :: PokeChain a => Device -> SwapchainCreateInfoKHR a -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (SwapchainKHR)+createSwapchainKHR device createInfo allocator = evalContT $ do+ let vkCreateSwapchainKHR' = mkVkCreateSwapchainKHR (pVkCreateSwapchainKHR (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPSwapchain <- ContT $ bracket (callocBytes @SwapchainKHR 8) free+ r <- lift $ vkCreateSwapchainKHR' (deviceHandle (device)) pCreateInfo pAllocator (pPSwapchain)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSwapchain <- lift $ peek @SwapchainKHR pPSwapchain+ pure $ (pSwapchain)++-- | A safe wrapper for 'createSwapchainKHR' and 'destroySwapchainKHR' using+-- 'bracket'+--+-- The allocated value must not be returned from the provided computation+withSwapchainKHR :: PokeChain a => Device -> SwapchainCreateInfoKHR a -> Maybe AllocationCallbacks -> (SwapchainKHR -> IO r) -> IO r+withSwapchainKHR device swapchainCreateInfoKHR allocationCallbacks =+ bracket+ (createSwapchainKHR device swapchainCreateInfoKHR allocationCallbacks)+ (\o -> destroySwapchainKHR device o allocationCallbacks)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDestroySwapchainKHR+ :: FunPtr (Ptr Device_T -> SwapchainKHR -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> SwapchainKHR -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroySwapchainKHR - Destroy a swapchain object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the+-- 'Graphics.Vulkan.Core10.Handles.Device' associated with @swapchain@.+--+-- - @swapchain@ is the swapchain to destroy.+--+-- - @pAllocator@ is the allocator used for host memory allocated for the+-- swapchain object when there is no more specific allocator available+-- (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).+--+-- = Description+--+-- The application /must/ not destroy a swapchain until after completion of+-- all outstanding operations on images that were acquired from the+-- swapchain. @swapchain@ and all associated+-- 'Graphics.Vulkan.Core10.Handles.Image' handles are destroyed, and /must/+-- not be acquired or used any more by the application. The memory of each+-- 'Graphics.Vulkan.Core10.Handles.Image' will only be freed after that+-- image is no longer used by the presentation engine. For example, if one+-- image of the swapchain is being displayed in a window, the memory for+-- that image /may/ not be freed until the window is destroyed, or another+-- swapchain is created for the window. Destroying the swapchain does not+-- invalidate the parent 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR',+-- and a new swapchain /can/ be created with it.+--+-- When a swapchain associated with a display surface is destroyed, if the+-- image most recently presented to the display surface is from the+-- swapchain being destroyed, then either any display resources modified by+-- presenting images from any swapchain associated with the display surface+-- /must/ be reverted by the implementation to their state prior to the+-- first present performed on one of these swapchains, or such resources+-- /must/ be left in their current state.+--+-- If @swapchain@ has exclusive full-screen access, it is released before+-- the swapchain is destroyed.+--+-- == Valid Usage+--+-- - All uses of presentable images acquired from @swapchain@ /must/ have+-- completed execution+--+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when @swapchain@ was created, a compatible set of+-- callbacks /must/ be provided here+--+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when @swapchain@ was created, @pAllocator@ /must/ be+-- @NULL@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - If @swapchain@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @swapchain@+-- /must/ be a valid 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR'+-- handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.Device', and @swapchain@+-- that are valid handles of non-ignored parameters /must/ have been+-- created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Instance'+--+-- == Host Synchronization+--+-- - Host access to @swapchain@ /must/ be externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR'+destroySwapchainKHR :: Device -> SwapchainKHR -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroySwapchainKHR device swapchain allocator = evalContT $ do+ let vkDestroySwapchainKHR' = mkVkDestroySwapchainKHR (pVkDestroySwapchainKHR (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroySwapchainKHR' (deviceHandle (device)) (swapchain) pAllocator+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetSwapchainImagesKHR+ :: FunPtr (Ptr Device_T -> SwapchainKHR -> Ptr Word32 -> Ptr Image -> IO Result) -> Ptr Device_T -> SwapchainKHR -> Ptr Word32 -> Ptr Image -> IO Result++-- | vkGetSwapchainImagesKHR - Obtain the array of presentable images+-- associated with a swapchain+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the device associated+-- with @swapchain@.+--+-- - @swapchain@ is the swapchain to query.+--+-- - @pSwapchainImageCount@ is a pointer to an integer related to the+-- number of presentable images available or queried, as described+-- below.+--+-- - @pSwapchainImages@ is either @NULL@ or a pointer to an array of+-- 'Graphics.Vulkan.Core10.Handles.Image' handles.+--+-- = Description+--+-- If @pSwapchainImages@ is @NULL@, then the number of presentable images+-- for @swapchain@ is returned in @pSwapchainImageCount@. Otherwise,+-- @pSwapchainImageCount@ /must/ point to a variable set by the user to the+-- number of elements in the @pSwapchainImages@ array, and on return the+-- variable is overwritten with the number of structures actually written+-- to @pSwapchainImages@. If the value of @pSwapchainImageCount@ is less+-- than the number of presentable images for @swapchain@, at most+-- @pSwapchainImageCount@ structures will be written. If+-- @pSwapchainImageCount@ is smaller than the number of presentable images+-- for @swapchain@, 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' will+-- be returned instead of 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' to+-- indicate that not all the available values were returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @swapchain@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR' handle+--+-- - @pSwapchainImageCount@ /must/ be a valid pointer to a @uint32_t@+-- value+--+-- - If the value referenced by @pSwapchainImageCount@ is not @0@, and+-- @pSwapchainImages@ is not @NULL@, @pSwapchainImages@ /must/ be a+-- valid pointer to an array of @pSwapchainImageCount@+-- 'Graphics.Vulkan.Core10.Handles.Image' handles+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.Device', and @swapchain@+-- /must/ have been created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Instance'+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Image',+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR'+getSwapchainImagesKHR :: Device -> SwapchainKHR -> IO (Result, ("swapchainImages" ::: Vector Image))+getSwapchainImagesKHR device swapchain = evalContT $ do+ let vkGetSwapchainImagesKHR' = mkVkGetSwapchainImagesKHR (pVkGetSwapchainImagesKHR (deviceCmds (device :: Device)))+ let device' = deviceHandle (device)+ pPSwapchainImageCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkGetSwapchainImagesKHR' device' (swapchain) (pPSwapchainImageCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSwapchainImageCount <- lift $ peek @Word32 pPSwapchainImageCount+ pPSwapchainImages <- ContT $ bracket (callocBytes @Image ((fromIntegral (pSwapchainImageCount)) * 8)) free+ r' <- lift $ vkGetSwapchainImagesKHR' device' (swapchain) (pPSwapchainImageCount) (pPSwapchainImages)+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pSwapchainImageCount' <- lift $ peek @Word32 pPSwapchainImageCount+ pSwapchainImages' <- lift $ generateM (fromIntegral (pSwapchainImageCount')) (\i -> peek @Image ((pPSwapchainImages `advancePtrBytes` (8 * (i)) :: Ptr Image)))+ pure $ ((r'), pSwapchainImages')+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkAcquireNextImageKHR+ :: FunPtr (Ptr Device_T -> SwapchainKHR -> Word64 -> Semaphore -> Fence -> Ptr Word32 -> IO Result) -> Ptr Device_T -> SwapchainKHR -> Word64 -> Semaphore -> Fence -> Ptr Word32 -> IO Result++-- | vkAcquireNextImageKHR - Retrieve the index of the next available+-- presentable image+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the device associated+-- with @swapchain@.+--+-- - @swapchain@ is the non-retired swapchain from which an image is+-- being acquired.+--+-- - @timeout@ specifies how long the function waits, in nanoseconds, if+-- no image is available.+--+-- - 'Graphics.Vulkan.Core10.Handles.Semaphore' is+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' or a semaphore to+-- signal.+--+-- - 'Graphics.Vulkan.Core10.Handles.Fence' is+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' or a fence to+-- signal.+--+-- - @pImageIndex@ is a pointer to a @uint32_t@ in which the index of the+-- next image to use (i.e. an index into the array of images returned+-- by 'getSwapchainImagesKHR') is returned.+--+-- == Valid Usage+--+-- - @swapchain@ /must/ not be in the retired state+--+-- - If 'Graphics.Vulkan.Core10.Handles.Semaphore' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ be+-- unsignaled+--+-- - If 'Graphics.Vulkan.Core10.Handles.Semaphore' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ not have+-- any uncompleted signal or wait operations pending+--+-- - If 'Graphics.Vulkan.Core10.Handles.Fence' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ be+-- unsignaled and /must/ not be associated with any other queue command+-- that has not yet completed execution on that queue+--+-- - 'Graphics.Vulkan.Core10.Handles.Semaphore' and+-- 'Graphics.Vulkan.Core10.Handles.Fence' /must/ not both be equal to+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- - If the number of currently acquired images is greater than the+-- difference between the number of images in @swapchain@ and the value+-- of+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@minImageCount@+-- as returned by a call to+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'+-- with the @surface@ used to create @swapchain@, @timeout@ /must/ not+-- be @UINT64_MAX@+--+-- - 'Graphics.Vulkan.Core10.Handles.Semaphore' /must/ have a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @swapchain@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR' handle+--+-- - If 'Graphics.Vulkan.Core10.Handles.Semaphore' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Semaphore' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Semaphore' handle+--+-- - If 'Graphics.Vulkan.Core10.Handles.Fence' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Fence' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Fence' handle+--+-- - @pImageIndex@ /must/ be a valid pointer to a @uint32_t@ value+--+-- - If 'Graphics.Vulkan.Core10.Handles.Semaphore' is a valid handle, it+-- /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- - If 'Graphics.Vulkan.Core10.Handles.Fence' is a valid handle, it+-- /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.Device', and @swapchain@+-- that are valid handles of non-ignored parameters /must/ have been+-- created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Instance'+--+-- == Host Synchronization+--+-- - Host access to @swapchain@ /must/ be externally synchronized+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Semaphore' /must/ be+-- externally synchronized+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Fence' /must/ be+-- externally synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.TIMEOUT'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.NOT_READY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUBOPTIMAL_KHR'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Fence',+-- 'Graphics.Vulkan.Core10.Handles.Semaphore',+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR'+acquireNextImageKHR :: Device -> SwapchainKHR -> ("timeout" ::: Word64) -> Semaphore -> Fence -> IO (Result, ("imageIndex" ::: Word32))+acquireNextImageKHR device swapchain timeout semaphore fence = evalContT $ do+ let vkAcquireNextImageKHR' = mkVkAcquireNextImageKHR (pVkAcquireNextImageKHR (deviceCmds (device :: Device)))+ pPImageIndex <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkAcquireNextImageKHR' (deviceHandle (device)) (swapchain) (timeout) (semaphore) (fence) (pPImageIndex)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pImageIndex <- lift $ peek @Word32 pPImageIndex+ pure $ (r, pImageIndex)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkQueuePresentKHR+ :: FunPtr (Ptr Queue_T -> Ptr (PresentInfoKHR a) -> IO Result) -> Ptr Queue_T -> Ptr (PresentInfoKHR a) -> IO Result++-- | vkQueuePresentKHR - Queue an image for presentation+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Queue' is a queue that is capable of+-- presentation to the target surface’s platform on the same device as+-- the image’s swapchain.+--+-- - @pPresentInfo@ is a pointer to a 'PresentInfoKHR' structure+-- specifying parameters of the presentation.+--+-- = Description+--+-- Note+--+-- There is no requirement for an application to present images in the same+-- order that they were acquired - applications can arbitrarily present any+-- image that is currently acquired.+--+-- == Valid Usage+--+-- - Each element of @pSwapchains@ member of @pPresentInfo@ /must/ be a+-- swapchain that is created for a surface for which presentation is+-- supported from 'Graphics.Vulkan.Core10.Handles.Queue' as determined+-- using a call to+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR'+--+-- - If more than one member of @pSwapchains@ was created from a display+-- surface, all display surfaces referenced that refer to the same+-- display /must/ use the same display mode+--+-- - When a semaphore wait operation referring to a binary semaphore+-- defined by the elements of the @pWaitSemaphores@ member of+-- @pPresentInfo@ executes on 'Graphics.Vulkan.Core10.Handles.Queue',+-- there /must/ be no other queues waiting on the same semaphore.+--+-- - All elements of the @pWaitSemaphores@ member of @pPresentInfo@+-- /must/ be semaphores that are signaled, or have+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>+-- previously submitted for execution.+--+-- - All elements of the @pWaitSemaphores@ member of @pPresentInfo@+-- /must/ be created with a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY'.+--+-- - All elements of the @pWaitSemaphores@ member of @pPresentInfo@+-- /must/ reference a semaphore signal operation that has been+-- submitted for execution and any semaphore signal operations on which+-- it depends (if any) /must/ have also been submitted for execution.+--+-- Any writes to memory backing the images referenced by the+-- @pImageIndices@ and @pSwapchains@ members of @pPresentInfo@, that are+-- available before 'queuePresentKHR' is executed, are automatically made+-- visible to the read access performed by the presentation engine. This+-- automatic visibility operation for an image happens-after the semaphore+-- signal operation, and happens-before the presentation engine accesses+-- the image.+--+-- Queueing an image for presentation defines a set of /queue operations/,+-- including waiting on the semaphores and submitting a presentation+-- request to the presentation engine. However, the scope of this set of+-- queue operations does not include the actual processing of the image by+-- the presentation engine.+--+-- If 'queuePresentKHR' fails to enqueue the corresponding set of queue+-- operations, it /may/ return+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' or+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'. If it+-- does, the implementation /must/ ensure that the state and contents of+-- any resources or synchronization primitives referenced is unaffected by+-- the call or its failure.+--+-- If 'queuePresentKHR' fails in such a way that the implementation is+-- unable to make that guarantee, the implementation /must/ return+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'.+--+-- However, if the presentation request is rejected by the presentation+-- engine with an error+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR' or+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR', the set of+-- queue operations are still considered to be enqueued and thus any+-- semaphore wait operation specified in 'PresentInfoKHR' will execute when+-- the corresponding queue operation is complete.+--+-- If any @swapchain@ member of @pPresentInfo@ was created with+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT',+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'+-- will be returned if that swapchain does not have exclusive full-screen+-- access, possibly for implementation-specific reasons outside of the+-- application’s control.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Queue' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Queue' handle+--+-- - @pPresentInfo@ /must/ be a valid pointer to a valid 'PresentInfoKHR'+-- structure+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Queue' /must/ be+-- externally synchronized+--+-- - Host access to @pPresentInfo.pWaitSemaphores@[] /must/ be externally+-- synchronized+--+-- - Host access to @pPresentInfo.pSwapchains@[] /must/ be externally+-- synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | - | - | Any | - |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUBOPTIMAL_KHR'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'+--+-- = See Also+--+-- 'PresentInfoKHR', 'Graphics.Vulkan.Core10.Handles.Queue'+queuePresentKHR :: PokeChain a => Queue -> PresentInfoKHR a -> IO (Result)+queuePresentKHR queue presentInfo = evalContT $ do+ let vkQueuePresentKHR' = mkVkQueuePresentKHR (pVkQueuePresentKHR (deviceCmds (queue :: Queue)))+ pPresentInfo <- ContT $ withCStruct (presentInfo)+ r <- lift $ vkQueuePresentKHR' (queueHandle (queue)) pPresentInfo+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pure $ (r)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetDeviceGroupPresentCapabilitiesKHR+ :: FunPtr (Ptr Device_T -> Ptr DeviceGroupPresentCapabilitiesKHR -> IO Result) -> Ptr Device_T -> Ptr DeviceGroupPresentCapabilitiesKHR -> IO Result++-- | vkGetDeviceGroupPresentCapabilitiesKHR - Query present capabilities from+-- other physical devices+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device.+--+-- - @pDeviceGroupPresentCapabilities@ is a pointer to a+-- 'DeviceGroupPresentCapabilitiesKHR' structure in which the device’s+-- capabilities are returned.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'DeviceGroupPresentCapabilitiesKHR'+getDeviceGroupPresentCapabilitiesKHR :: Device -> IO (DeviceGroupPresentCapabilitiesKHR)+getDeviceGroupPresentCapabilitiesKHR device = evalContT $ do+ let vkGetDeviceGroupPresentCapabilitiesKHR' = mkVkGetDeviceGroupPresentCapabilitiesKHR (pVkGetDeviceGroupPresentCapabilitiesKHR (deviceCmds (device :: Device)))+ pPDeviceGroupPresentCapabilities <- ContT (withZeroCStruct @DeviceGroupPresentCapabilitiesKHR)+ r <- lift $ vkGetDeviceGroupPresentCapabilitiesKHR' (deviceHandle (device)) (pPDeviceGroupPresentCapabilities)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pDeviceGroupPresentCapabilities <- lift $ peekCStruct @DeviceGroupPresentCapabilitiesKHR pPDeviceGroupPresentCapabilities+ pure $ (pDeviceGroupPresentCapabilities)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetDeviceGroupSurfacePresentModesKHR+ :: FunPtr (Ptr Device_T -> SurfaceKHR -> Ptr DeviceGroupPresentModeFlagsKHR -> IO Result) -> Ptr Device_T -> SurfaceKHR -> Ptr DeviceGroupPresentModeFlagsKHR -> IO Result++-- | vkGetDeviceGroupSurfacePresentModesKHR - Query present capabilities for+-- a surface+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device.+--+-- - @surface@ is the surface.+--+-- - @pModes@ is a pointer to a 'DeviceGroupPresentModeFlagsKHR' in which+-- the supported device group present modes for the surface are+-- returned.+--+-- = Description+--+-- The modes returned by this command are not invariant, and /may/ change+-- in response to the surface being moved, resized, or occluded. These+-- modes /must/ be a subset of the modes returned by+-- 'getDeviceGroupPresentCapabilitiesKHR'.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @surface@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle+--+-- - @pModes@ /must/ be a valid pointer to a+-- 'DeviceGroupPresentModeFlagsKHR' value+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.Device', and @surface@+-- /must/ have been created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Instance'+--+-- == Host Synchronization+--+-- - Host access to @surface@ /must/ be externally synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'DeviceGroupPresentModeFlagsKHR',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR'+getDeviceGroupSurfacePresentModesKHR :: Device -> SurfaceKHR -> IO (("modes" ::: DeviceGroupPresentModeFlagsKHR))+getDeviceGroupSurfacePresentModesKHR device surface = evalContT $ do+ let vkGetDeviceGroupSurfacePresentModesKHR' = mkVkGetDeviceGroupSurfacePresentModesKHR (pVkGetDeviceGroupSurfacePresentModesKHR (deviceCmds (device :: Device)))+ pPModes <- ContT $ bracket (callocBytes @DeviceGroupPresentModeFlagsKHR 4) free+ r <- lift $ vkGetDeviceGroupSurfacePresentModesKHR' (deviceHandle (device)) (surface) (pPModes)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pModes <- lift $ peek @DeviceGroupPresentModeFlagsKHR pPModes+ pure $ (pModes)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkAcquireNextImage2KHR+ :: FunPtr (Ptr Device_T -> Ptr AcquireNextImageInfoKHR -> Ptr Word32 -> IO Result) -> Ptr Device_T -> Ptr AcquireNextImageInfoKHR -> Ptr Word32 -> IO Result++-- | vkAcquireNextImage2KHR - Retrieve the index of the next available+-- presentable image+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the device associated+-- with @swapchain@.+--+-- - @pAcquireInfo@ is a pointer to a 'AcquireNextImageInfoKHR' structure+-- containing parameters of the acquire.+--+-- - @pImageIndex@ is a pointer to a @uint32_t@ that is set to the index+-- of the next image to use.+--+-- == Valid Usage+--+-- - If the number of currently acquired images is greater than the+-- difference between the number of images in the @swapchain@ member of+-- @pAcquireInfo@ and the value of+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'::@minImageCount@+-- as returned by a call to+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'+-- with the @surface@ used to create @swapchain@, the @timeout@ member+-- of @pAcquireInfo@ /must/ not be @UINT64_MAX@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pAcquireInfo@ /must/ be a valid pointer to a valid+-- 'AcquireNextImageInfoKHR' structure+--+-- - @pImageIndex@ /must/ be a valid pointer to a @uint32_t@ value+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.TIMEOUT'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.NOT_READY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUBOPTIMAL_KHR'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT'+--+-- = See Also+--+-- 'AcquireNextImageInfoKHR', 'Graphics.Vulkan.Core10.Handles.Device'+acquireNextImage2KHR :: Device -> ("acquireInfo" ::: AcquireNextImageInfoKHR) -> IO (Result, ("imageIndex" ::: Word32))+acquireNextImage2KHR device acquireInfo = evalContT $ do+ let vkAcquireNextImage2KHR' = mkVkAcquireNextImage2KHR (pVkAcquireNextImage2KHR (deviceCmds (device :: Device)))+ pAcquireInfo <- ContT $ withCStruct (acquireInfo)+ pPImageIndex <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkAcquireNextImage2KHR' (deviceHandle (device)) pAcquireInfo (pPImageIndex)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pImageIndex <- lift $ peek @Word32 pPImageIndex+ pure $ (r, pImageIndex)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDevicePresentRectanglesKHR+ :: FunPtr (Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr Word32 -> Ptr Rect2D -> IO Result) -> Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr Word32 -> Ptr Rect2D -> IO Result++-- | vkGetPhysicalDevicePresentRectanglesKHR - Query present rectangles for a+-- surface on a physical device+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device.+--+-- - @surface@ is the surface.+--+-- - @pRectCount@ is a pointer to an integer related to the number of+-- rectangles available or queried, as described below.+--+-- - @pRects@ is either @NULL@ or a pointer to an array of+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D' structures.+--+-- = Description+--+-- If @pRects@ is @NULL@, then the number of rectangles used when+-- presenting the given @surface@ is returned in @pRectCount@. Otherwise,+-- @pRectCount@ /must/ point to a variable set by the user to the number of+-- elements in the @pRects@ array, and on return the variable is+-- overwritten with the number of structures actually written to @pRects@.+-- If the value of @pRectCount@ is less than the number of rectangles, at+-- most @pRectCount@ structures will be written. If @pRectCount@ is smaller+-- than the number of rectangles used for the given @surface@,+-- 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned+-- instead of 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' to indicate+-- that not all the available values were returned.+--+-- The values returned by this command are not invariant, and /may/ change+-- in response to the surface being moved, resized, or occluded.+--+-- The rectangles returned by this command /must/ not overlap.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @surface@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle+--+-- - @pRectCount@ /must/ be a valid pointer to a @uint32_t@ value+--+-- - If the value referenced by @pRectCount@ is not @0@, and @pRects@ is+-- not @NULL@, @pRects@ /must/ be a valid pointer to an array of+-- @pRectCount@ 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D'+-- structures+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.PhysicalDevice', and+-- @surface@ /must/ have been created, allocated, or retrieved from the+-- same 'Graphics.Vulkan.Core10.Handles.Instance'+--+-- == Host Synchronization+--+-- - Host access to @surface@ /must/ be externally synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR'+getPhysicalDevicePresentRectanglesKHR :: PhysicalDevice -> SurfaceKHR -> IO (Result, ("rects" ::: Vector Rect2D))+getPhysicalDevicePresentRectanglesKHR physicalDevice surface = evalContT $ do+ let vkGetPhysicalDevicePresentRectanglesKHR' = mkVkGetPhysicalDevicePresentRectanglesKHR (pVkGetPhysicalDevicePresentRectanglesKHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pPRectCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkGetPhysicalDevicePresentRectanglesKHR' physicalDevice' (surface) (pPRectCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pRectCount <- lift $ peek @Word32 pPRectCount+ pPRects <- ContT $ bracket (callocBytes @Rect2D ((fromIntegral (pRectCount)) * 16)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPRects `advancePtrBytes` (i * 16) :: Ptr Rect2D) . ($ ())) [0..(fromIntegral (pRectCount)) - 1]+ r' <- lift $ vkGetPhysicalDevicePresentRectanglesKHR' physicalDevice' (surface) (pPRectCount) ((pPRects))+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pRectCount' <- lift $ peek @Word32 pPRectCount+ pRects' <- lift $ generateM (fromIntegral (pRectCount')) (\i -> peekCStruct @Rect2D (((pPRects) `advancePtrBytes` (16 * (i)) :: Ptr Rect2D)))+ pure $ ((r'), pRects')+++-- | VkSwapchainCreateInfoKHR - Structure specifying parameters of a newly+-- created swapchain object+--+-- = Description+--+-- Note+--+-- On some platforms, it is normal that @maxImageExtent@ /may/ become @(0,+-- 0)@, for example when the window is minimized. In such a case, it is not+-- possible to create a swapchain due to the Valid Usage requirements.+--+-- - @imageArrayLayers@ is the number of views in a multiview\/stereo+-- surface. For non-stereoscopic-3D applications, this value is 1.+--+-- - @imageUsage@ is a bitmask of+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits'+-- describing the intended usage of the (acquired) swapchain images.+--+-- - @imageSharingMode@ is the sharing mode used for the image(s) of the+-- swapchain.+--+-- - @queueFamilyIndexCount@ is the number of queue families having+-- access to the image(s) of the swapchain when @imageSharingMode@ is+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT'.+--+-- - @pQueueFamilyIndices@ is a pointer to an array of queue family+-- indices having access to the images(s) of the swapchain when+-- @imageSharingMode@ is+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT'.+--+-- - @preTransform@ is a+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.SurfaceTransformFlagBitsKHR'+-- value describing the transform, relative to the presentation+-- engine’s natural orientation, applied to the image content prior to+-- presentation. If it does not match the @currentTransform@ value+-- returned by+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR',+-- the presentation engine will transform the image content as part of+-- the presentation operation.+--+-- - @compositeAlpha@ is a+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.CompositeAlphaFlagBitsKHR'+-- value indicating the alpha compositing mode to use when this surface+-- is composited together with other surfaces on certain window+-- systems.+--+-- - @presentMode@ is the presentation mode the swapchain will use. A+-- swapchain’s present mode determines how incoming present requests+-- will be processed and queued internally.+--+-- - @clipped@ specifies whether the Vulkan implementation is allowed to+-- discard rendering operations that affect regions of the surface that+-- are not visible.+--+-- - If set to 'Graphics.Vulkan.Core10.BaseType.TRUE', the+-- presentable images associated with the swapchain /may/ not own+-- all of their pixels. Pixels in the presentable images that+-- correspond to regions of the target surface obscured by another+-- window on the desktop, or subject to some other clipping+-- mechanism will have undefined content when read back. Fragment+-- shaders /may/ not execute for these pixels, and thus any side+-- effects they would have had will not occur.+-- 'Graphics.Vulkan.Core10.BaseType.TRUE' value does not guarantee+-- any clipping will occur, but allows more optimal presentation+-- methods to be used on some platforms.+--+-- - If set to 'Graphics.Vulkan.Core10.BaseType.FALSE', presentable+-- images associated with the swapchain will own all of the pixels+-- they contain.+--+-- Note+--+-- Applications /should/ set this value to+-- 'Graphics.Vulkan.Core10.BaseType.TRUE' if they do not expect to read+-- back the content of presentable images before presenting them or after+-- reacquiring them, and if their fragment shaders do not have any side+-- effects that require them to run for all pixels in the presentable+-- image.+--+-- - @oldSwapchain@ is 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- or the existing non-retired swapchain currently associated with+-- @surface@. Providing a valid @oldSwapchain@ /may/ aid in the+-- resource reuse, and also allows the application to still present any+-- images that are already acquired from it.+--+-- Upon calling 'createSwapchainKHR' with an @oldSwapchain@ that is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @oldSwapchain@ is+-- retired — even if creation of the new swapchain fails. The new swapchain+-- is created in the non-retired state whether or not @oldSwapchain@ is+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'.+--+-- Upon calling 'createSwapchainKHR' with an @oldSwapchain@ that is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', any images from+-- @oldSwapchain@ that are not acquired by the application /may/ be freed+-- by the implementation, which /may/ occur even if creation of the new+-- swapchain fails. The application /can/ destroy @oldSwapchain@ to free+-- all memory associated with @oldSwapchain@.+--+-- Note+--+-- Multiple retired swapchains /can/ be associated with the same+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' through multiple uses of+-- @oldSwapchain@ that outnumber calls to 'destroySwapchainKHR'.+--+-- After @oldSwapchain@ is retired, the application /can/ pass to+-- 'queuePresentKHR' any images it had already acquired from+-- @oldSwapchain@. E.g., an application may present an image from the old+-- swapchain before an image from the new swapchain is ready to be+-- presented. As usual, 'queuePresentKHR' /may/ fail if @oldSwapchain@ has+-- entered a state that causes+-- 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR' to be+-- returned.+--+-- The application /can/ continue to use a shared presentable image+-- obtained from @oldSwapchain@ until a presentable image is acquired from+-- the new swapchain, as long as it has not entered a state that causes it+-- to return 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DATE_KHR'.+--+-- == Valid Usage+--+-- - @surface@ /must/ be a surface that is supported by the device as+-- determined using+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR'+--+-- - @minImageCount@ /must/ be less than or equal to the value returned+-- in the @maxImageCount@ member of the+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'+-- structure returned by+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'+-- for the surface if the returned @maxImageCount@ is not zero+--+-- - If @presentMode@ is not+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'+-- nor+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR',+-- then @minImageCount@ /must/ be greater than or equal to the value+-- returned in the @minImageCount@ member of the+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'+-- structure returned by+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'+-- for the surface+--+-- - @minImageCount@ /must/ be @1@ if @presentMode@ is either+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'+-- or+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR'+--+-- - @imageFormat@ and @imageColorSpace@ /must/ match the+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' and @colorSpace@+-- members, respectively, of one of the+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceFormatKHR'+-- structures returned by+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceFormatsKHR'+-- for the surface+--+-- - @imageExtent@ /must/ be between @minImageExtent@ and+-- @maxImageExtent@, inclusive, where @minImageExtent@ and+-- @maxImageExtent@ are members of the+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'+-- structure returned by+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'+-- for the surface+--+-- - @imageExtent@ members @width@ and @height@ /must/ both be non-zero+--+-- - @imageArrayLayers@ /must/ be greater than @0@ and less than or equal+-- to the @maxImageArrayLayers@ member of the+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'+-- structure returned by+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'+-- for the surface+--+-- - If @presentMode@ is+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PRESENT_MODE_IMMEDIATE_KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PRESENT_MODE_MAILBOX_KHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PRESENT_MODE_FIFO_KHR'+-- or+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PRESENT_MODE_FIFO_RELAXED_KHR',+-- @imageUsage@ /must/ be a subset of the supported usage flags present+-- in the @supportedUsageFlags@ member of the+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'+-- structure returned by+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'+-- for @surface@+--+-- - If @presentMode@ is+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR'+-- or+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR',+-- @imageUsage@ /must/ be a subset of the supported usage flags present+-- in the @sharedPresentSupportedUsageFlags@ member of the+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.SharedPresentSurfaceCapabilitiesKHR'+-- structure returned by+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'+-- for @surface@+--+-- - If @imageSharingMode@ is+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',+-- @pQueueFamilyIndices@ /must/ be a valid pointer to an array of+-- @queueFamilyIndexCount@ @uint32_t@ values+--+-- - If @imageSharingMode@ is+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',+-- @queueFamilyIndexCount@ /must/ be greater than @1@+--+-- - If @imageSharingMode@ is+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',+-- each element of @pQueueFamilyIndices@ /must/ be unique and /must/ be+-- less than @pQueueFamilyPropertyCount@ returned by either+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceQueueFamilyProperties'+-- or+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2'+-- for the 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' that was+-- used to create 'Graphics.Vulkan.Core10.Handles.Device'+--+-- - @preTransform@ /must/ be one of the bits present in the+-- @supportedTransforms@ member of the+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'+-- structure returned by+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'+-- for the surface+--+-- - @compositeAlpha@ /must/ be one of the bits present in the+-- @supportedCompositeAlpha@ member of the+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.SurfaceCapabilitiesKHR'+-- structure returned by+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'+-- for the surface+--+-- - @presentMode@ /must/ be one of the+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PresentModeKHR'+-- values returned by+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfacePresentModesKHR'+-- for the surface+--+-- - If the logical device was created with+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.DeviceGroupDeviceCreateInfo'::@physicalDeviceCount@+-- equal to 1, 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not+-- contain 'SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR'+--+-- - If @oldSwapchain@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @oldSwapchain@+-- /must/ be a non-retired swapchain associated with native window+-- referred to by @surface@+--+-- - The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#swapchain-wsi-image-create-info implied image creation parameters>+-- of the swapchain /must/ be supported as reported by+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR' then the @pNext@ chain+-- /must/ include a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'+-- structure with a @viewFormatCount@ greater than zero and+-- @pViewFormats@ /must/ have an element equal to @imageFormat@+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains+-- 'SWAPCHAIN_CREATE_PROTECTED_BIT_KHR', then+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface_protected_capabilities.SurfaceProtectedCapabilitiesKHR'::@supportsProtected@+-- /must/ be 'Graphics.Vulkan.Core10.BaseType.TRUE' in the+-- 'Graphics.Vulkan.Extensions.VK_KHR_surface_protected_capabilities.SurfaceProtectedCapabilitiesKHR'+-- structure returned by+-- 'Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR'+-- for @surface@+--+-- - If the @pNext@ chain includes a+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveInfoEXT'+-- structure with its @fullScreenExclusive@ member set to+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT',+-- and @surface@ was created using+-- 'Graphics.Vulkan.Extensions.VK_KHR_win32_surface.createWin32SurfaceKHR',+-- a+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveWin32InfoEXT'+-- structure /must/ be included in the @pNext@ chain+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of 'DeviceGroupSwapchainCreateInfoKHR',+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo',+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveInfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive.SurfaceFullScreenExclusiveWin32InfoEXT',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_control.SwapchainCounterCreateInfoEXT',+-- or+-- 'Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr.SwapchainDisplayNativeHdrCreateInfoAMD'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of 'SwapchainCreateFlagBitsKHR' values+--+-- - @surface@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle+--+-- - @imageFormat@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' value+--+-- - @imageColorSpace@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.VK_EXT_swapchain_colorspace.ColorSpaceKHR'+-- value+--+-- - @imageUsage@ /must/ be a valid combination of+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits'+-- values+--+-- - @imageUsage@ /must/ not be @0@+--+-- - @imageSharingMode@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode' value+--+-- - @preTransform@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.SurfaceTransformFlagBitsKHR'+-- value+--+-- - @compositeAlpha@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.CompositeAlphaFlagBitsKHR'+-- value+--+-- - @presentMode@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PresentModeKHR'+-- value+--+-- - If @oldSwapchain@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @oldSwapchain@+-- /must/ be a valid 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR'+-- handle+--+-- - If @oldSwapchain@ is a valid handle, it /must/ have been created,+-- allocated, or retrieved from @surface@+--+-- - Both of @oldSwapchain@, and @surface@ that are valid handles of+-- non-ignored parameters /must/ have been created, allocated, or+-- retrieved from the same 'Graphics.Vulkan.Core10.Handles.Instance'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Extensions.VK_EXT_swapchain_colorspace.ColorSpaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter.CompositeAlphaFlagBitsKHR',+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent2D',+-- 'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',+-- 'Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image.PresentModeKHR',+-- 'Graphics.Vulkan.Core10.Enums.SharingMode.SharingMode',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.SurfaceTransformFlagBitsKHR',+-- 'SwapchainCreateFlagsKHR',+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.createSharedSwapchainsKHR',+-- 'createSwapchainKHR'+data SwapchainCreateInfoKHR (es :: [Type]) = SwapchainCreateInfoKHR+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'SwapchainCreateFlagBitsKHR' indicating parameters of the swapchain+ -- creation.+ flags :: SwapchainCreateFlagsKHR+ , -- | @surface@ is the surface onto which the swapchain will present images.+ -- If the creation succeeds, the swapchain becomes associated with+ -- @surface@.+ surface :: SurfaceKHR+ , -- | @minImageCount@ is the minimum number of presentable images that the+ -- application needs. The implementation will either create the swapchain+ -- with at least that many images, or it will fail to create the swapchain.+ minImageCount :: Word32+ , -- | @imageFormat@ is a 'Graphics.Vulkan.Core10.Enums.Format.Format' value+ -- specifying the format the swapchain image(s) will be created with.+ imageFormat :: Format+ , -- | @imageColorSpace@ is a+ -- 'Graphics.Vulkan.Extensions.VK_EXT_swapchain_colorspace.ColorSpaceKHR'+ -- value specifying the way the swapchain interprets image data.+ imageColorSpace :: ColorSpaceKHR+ , -- | @imageExtent@ is the size (in pixels) of the swapchain image(s). The+ -- behavior is platform-dependent if the image extent does not match the+ -- surface’s @currentExtent@ as returned by+ -- 'Graphics.Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceCapabilitiesKHR'.+ imageExtent :: Extent2D+ , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "imageArrayLayers"+ imageArrayLayers :: Word32+ , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "imageUsage"+ imageUsage :: ImageUsageFlags+ , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "imageSharingMode"+ imageSharingMode :: SharingMode+ , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "pQueueFamilyIndices"+ queueFamilyIndices :: Vector Word32+ , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "preTransform"+ preTransform :: SurfaceTransformFlagBitsKHR+ , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "compositeAlpha"+ compositeAlpha :: CompositeAlphaFlagBitsKHR+ , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "presentMode"+ presentMode :: PresentModeKHR+ , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "clipped"+ clipped :: Bool+ , -- No documentation found for Nested "VkSwapchainCreateInfoKHR" "oldSwapchain"+ oldSwapchain :: SwapchainKHR+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (SwapchainCreateInfoKHR es)++instance Extensible SwapchainCreateInfoKHR where+ extensibleType = STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR+ setNext x next = x{next = next}+ getNext SwapchainCreateInfoKHR{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends SwapchainCreateInfoKHR e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @SurfaceFullScreenExclusiveWin32InfoEXT = Just f+ | Just Refl <- eqT @e @SurfaceFullScreenExclusiveInfoEXT = Just f+ | Just Refl <- eqT @e @ImageFormatListCreateInfo = Just f+ | Just Refl <- eqT @e @SwapchainDisplayNativeHdrCreateInfoAMD = Just f+ | Just Refl <- eqT @e @DeviceGroupSwapchainCreateInfoKHR = Just f+ | Just Refl <- eqT @e @SwapchainCounterCreateInfoEXT = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (SwapchainCreateInfoKHR es) where+ withCStruct x f = allocaBytesAligned 104 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p SwapchainCreateInfoKHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr SwapchainCreateFlagsKHR)) (flags)+ lift $ poke ((p `plusPtr` 24 :: Ptr SurfaceKHR)) (surface)+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (minImageCount)+ lift $ poke ((p `plusPtr` 36 :: Ptr Format)) (imageFormat)+ lift $ poke ((p `plusPtr` 40 :: Ptr ColorSpaceKHR)) (imageColorSpace)+ ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr Extent2D)) (imageExtent) . ($ ())+ lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (imageArrayLayers)+ lift $ poke ((p `plusPtr` 56 :: Ptr ImageUsageFlags)) (imageUsage)+ lift $ poke ((p `plusPtr` 60 :: Ptr SharingMode)) (imageSharingMode)+ lift $ poke ((p `plusPtr` 64 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (queueFamilyIndices)) :: Word32))+ pPQueueFamilyIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (queueFamilyIndices)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPQueueFamilyIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (queueFamilyIndices)+ lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr Word32))) (pPQueueFamilyIndices')+ lift $ poke ((p `plusPtr` 80 :: Ptr SurfaceTransformFlagBitsKHR)) (preTransform)+ lift $ poke ((p `plusPtr` 84 :: Ptr CompositeAlphaFlagBitsKHR)) (compositeAlpha)+ lift $ poke ((p `plusPtr` 88 :: Ptr PresentModeKHR)) (presentMode)+ lift $ poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (clipped))+ lift $ poke ((p `plusPtr` 96 :: Ptr SwapchainKHR)) (oldSwapchain)+ lift $ f+ cStructSize = 104+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ lift $ poke ((p `plusPtr` 24 :: Ptr SurfaceKHR)) (zero)+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 36 :: Ptr Format)) (zero)+ lift $ poke ((p `plusPtr` 40 :: Ptr ColorSpaceKHR)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 44 :: Ptr Extent2D)) (zero) . ($ ())+ lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 56 :: Ptr ImageUsageFlags)) (zero)+ lift $ poke ((p `plusPtr` 60 :: Ptr SharingMode)) (zero)+ pPQueueFamilyIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPQueueFamilyIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 72 :: Ptr (Ptr Word32))) (pPQueueFamilyIndices')+ lift $ poke ((p `plusPtr` 80 :: Ptr SurfaceTransformFlagBitsKHR)) (zero)+ lift $ poke ((p `plusPtr` 84 :: Ptr CompositeAlphaFlagBitsKHR)) (zero)+ lift $ poke ((p `plusPtr` 88 :: Ptr PresentModeKHR)) (zero)+ lift $ poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (zero))+ lift $ f++instance PeekChain es => FromCStruct (SwapchainCreateInfoKHR es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @SwapchainCreateFlagsKHR ((p `plusPtr` 16 :: Ptr SwapchainCreateFlagsKHR))+ surface <- peek @SurfaceKHR ((p `plusPtr` 24 :: Ptr SurfaceKHR))+ minImageCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ imageFormat <- peek @Format ((p `plusPtr` 36 :: Ptr Format))+ imageColorSpace <- peek @ColorSpaceKHR ((p `plusPtr` 40 :: Ptr ColorSpaceKHR))+ imageExtent <- peekCStruct @Extent2D ((p `plusPtr` 44 :: Ptr Extent2D))+ imageArrayLayers <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))+ imageUsage <- peek @ImageUsageFlags ((p `plusPtr` 56 :: Ptr ImageUsageFlags))+ imageSharingMode <- peek @SharingMode ((p `plusPtr` 60 :: Ptr SharingMode))+ queueFamilyIndexCount <- peek @Word32 ((p `plusPtr` 64 :: Ptr Word32))+ pQueueFamilyIndices <- peek @(Ptr Word32) ((p `plusPtr` 72 :: Ptr (Ptr Word32)))+ pQueueFamilyIndices' <- generateM (fromIntegral queueFamilyIndexCount) (\i -> peek @Word32 ((pQueueFamilyIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ preTransform <- peek @SurfaceTransformFlagBitsKHR ((p `plusPtr` 80 :: Ptr SurfaceTransformFlagBitsKHR))+ compositeAlpha <- peek @CompositeAlphaFlagBitsKHR ((p `plusPtr` 84 :: Ptr CompositeAlphaFlagBitsKHR))+ presentMode <- peek @PresentModeKHR ((p `plusPtr` 88 :: Ptr PresentModeKHR))+ clipped <- peek @Bool32 ((p `plusPtr` 92 :: Ptr Bool32))+ oldSwapchain <- peek @SwapchainKHR ((p `plusPtr` 96 :: Ptr SwapchainKHR))+ pure $ SwapchainCreateInfoKHR+ next flags surface minImageCount imageFormat imageColorSpace imageExtent imageArrayLayers imageUsage imageSharingMode pQueueFamilyIndices' preTransform compositeAlpha presentMode (bool32ToBool clipped) oldSwapchain++instance es ~ '[] => Zero (SwapchainCreateInfoKHR es) where+ zero = SwapchainCreateInfoKHR+ ()+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ mempty+ zero+ zero+ zero+ zero+ zero+++-- | VkPresentInfoKHR - Structure describing parameters of a queue+-- presentation+--+-- = Description+--+-- Before an application /can/ present an image, the image’s layout /must/+-- be transitioned to the+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR'+-- layout, or for a shared presentable image the+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'+-- layout.+--+-- Note+--+-- When transitioning the image to+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR',+-- there is no need to delay subsequent processing, or perform any+-- visibility operations (as 'queuePresentKHR' performs automatic+-- visibility operations). To achieve this, the @dstAccessMask@ member of+-- the 'Graphics.Vulkan.Core10.OtherTypes.ImageMemoryBarrier' /should/ be+-- set to @0@, and the @dstStageMask@ parameter /should/ be set to+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT'.+--+-- == Valid Usage+--+-- - Each element of @pImageIndices@ /must/ be the index of a presentable+-- image acquired from the swapchain specified by the corresponding+-- element of the @pSwapchains@ array, and the presented image+-- subresource /must/ be in the+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'+-- layout at the time the operation is executed on a+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- - All elements of the @pWaitSemaphores@ /must/ have a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRESENT_INFO_KHR'+--+-- - Each @pNext@ member of any structure (including this one) in the+-- @pNext@ chain /must/ be either @NULL@ or a pointer to a valid+-- instance of 'DeviceGroupPresentInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display_swapchain.DisplayPresentInfoKHR',+-- 'Graphics.Vulkan.Extensions.VK_GGP_frame_token.PresentFrameTokenGGP',+-- 'Graphics.Vulkan.Extensions.VK_KHR_incremental_present.PresentRegionsKHR',+-- or+-- 'Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing.PresentTimesInfoGOOGLE'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - If @waitSemaphoreCount@ is not @0@, @pWaitSemaphores@ /must/ be a+-- valid pointer to an array of @waitSemaphoreCount@ valid+-- 'Graphics.Vulkan.Core10.Handles.Semaphore' handles+--+-- - @pSwapchains@ /must/ be a valid pointer to an array of+-- @swapchainCount@ valid+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR' handles+--+-- - @pImageIndices@ /must/ be a valid pointer to an array of+-- @swapchainCount@ @uint32_t@ values+--+-- - If @pResults@ is not @NULL@, @pResults@ /must/ be a valid pointer to+-- an array of @swapchainCount@+-- 'Graphics.Vulkan.Core10.Enums.Result.Result' values+--+-- - @swapchainCount@ /must/ be greater than @0@+--+-- - Both of the elements of @pSwapchains@, and the elements of+-- @pWaitSemaphores@ that are valid handles of non-ignored parameters+-- /must/ have been created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Instance'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.Result.Result',+-- 'Graphics.Vulkan.Core10.Handles.Semaphore',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR', 'queuePresentKHR'+data PresentInfoKHR (es :: [Type]) = PresentInfoKHR+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | @pWaitSemaphores@ is @NULL@ or a pointer to an array of+ -- 'Graphics.Vulkan.Core10.Handles.Semaphore' objects with+ -- @waitSemaphoreCount@ entries, and specifies the semaphores to wait for+ -- before issuing the present request.+ waitSemaphores :: Vector Semaphore+ , -- | @pSwapchains@ is a pointer to an array of+ -- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR' objects with+ -- @swapchainCount@ entries. A given swapchain /must/ not appear in this+ -- list more than once.+ swapchains :: Vector SwapchainKHR+ , -- | @pImageIndices@ is a pointer to an array of indices into the array of+ -- each swapchain’s presentable images, with @swapchainCount@ entries. Each+ -- entry in this array identifies the image to present on the corresponding+ -- entry in the @pSwapchains@ array.+ imageIndices :: Vector Word32+ , -- | @pResults@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.Enums.Result.Result' typed elements with+ -- @swapchainCount@ entries. Applications that do not need per-swapchain+ -- results /can/ use @NULL@ for @pResults@. If non-@NULL@, each entry in+ -- @pResults@ will be set to the+ -- 'Graphics.Vulkan.Core10.Enums.Result.Result' for presenting the+ -- swapchain corresponding to the same index in @pSwapchains@.+ results :: Ptr Result+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (PresentInfoKHR es)++instance Extensible PresentInfoKHR where+ extensibleType = STRUCTURE_TYPE_PRESENT_INFO_KHR+ setNext x next = x{next = next}+ getNext PresentInfoKHR{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends PresentInfoKHR e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @PresentFrameTokenGGP = Just f+ | Just Refl <- eqT @e @PresentTimesInfoGOOGLE = Just f+ | Just Refl <- eqT @e @DeviceGroupPresentInfoKHR = Just f+ | Just Refl <- eqT @e @PresentRegionsKHR = Just f+ | Just Refl <- eqT @e @DisplayPresentInfoKHR = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (PresentInfoKHR es) where+ withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PresentInfoKHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_INFO_KHR)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (waitSemaphores)) :: Word32))+ pPWaitSemaphores' <- ContT $ allocaBytesAligned @Semaphore ((Data.Vector.length (waitSemaphores)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPWaitSemaphores' `plusPtr` (8 * (i)) :: Ptr Semaphore) (e)) (waitSemaphores)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Semaphore))) (pPWaitSemaphores')+ let pSwapchainsLength = Data.Vector.length $ (swapchains)+ let pImageIndicesLength = Data.Vector.length $ (imageIndices)+ lift $ unless (pImageIndicesLength == pSwapchainsLength) $+ throwIO $ IOError Nothing InvalidArgument "" "pImageIndices and pSwapchains must have the same length" Nothing Nothing+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral pSwapchainsLength :: Word32))+ pPSwapchains' <- ContT $ allocaBytesAligned @SwapchainKHR ((Data.Vector.length (swapchains)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPSwapchains' `plusPtr` (8 * (i)) :: Ptr SwapchainKHR) (e)) (swapchains)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr SwapchainKHR))) (pPSwapchains')+ pPImageIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (imageIndices)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPImageIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (imageIndices)+ lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPImageIndices')+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr Result))) (results)+ lift $ f+ cStructSize = 64+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRESENT_INFO_KHR)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ pPWaitSemaphores' <- ContT $ allocaBytesAligned @Semaphore ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPWaitSemaphores' `plusPtr` (8 * (i)) :: Ptr Semaphore) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Semaphore))) (pPWaitSemaphores')+ pPSwapchains' <- ContT $ allocaBytesAligned @SwapchainKHR ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPSwapchains' `plusPtr` (8 * (i)) :: Ptr SwapchainKHR) (e)) (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr SwapchainKHR))) (pPSwapchains')+ pPImageIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPImageIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPImageIndices')+ lift $ f++instance PeekChain es => FromCStruct (PresentInfoKHR es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ waitSemaphoreCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pWaitSemaphores <- peek @(Ptr Semaphore) ((p `plusPtr` 24 :: Ptr (Ptr Semaphore)))+ pWaitSemaphores' <- generateM (fromIntegral waitSemaphoreCount) (\i -> peek @Semaphore ((pWaitSemaphores `advancePtrBytes` (8 * (i)) :: Ptr Semaphore)))+ swapchainCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pSwapchains <- peek @(Ptr SwapchainKHR) ((p `plusPtr` 40 :: Ptr (Ptr SwapchainKHR)))+ pSwapchains' <- generateM (fromIntegral swapchainCount) (\i -> peek @SwapchainKHR ((pSwapchains `advancePtrBytes` (8 * (i)) :: Ptr SwapchainKHR)))+ pImageIndices <- peek @(Ptr Word32) ((p `plusPtr` 48 :: Ptr (Ptr Word32)))+ pImageIndices' <- generateM (fromIntegral swapchainCount) (\i -> peek @Word32 ((pImageIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ pResults <- peek @(Ptr Result) ((p `plusPtr` 56 :: Ptr (Ptr Result)))+ pure $ PresentInfoKHR+ next pWaitSemaphores' pSwapchains' pImageIndices' pResults++instance es ~ '[] => Zero (PresentInfoKHR es) where+ zero = PresentInfoKHR+ ()+ mempty+ mempty+ mempty+ zero+++-- | VkDeviceGroupPresentCapabilitiesKHR - Present capabilities from other+-- physical devices+--+-- = Description+--+-- @modes@ always has 'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR' set.+--+-- The present mode flags are also used when presenting an image, in+-- 'DeviceGroupPresentInfoKHR'::@mode@.+--+-- If a device group only includes a single physical device, then @modes@+-- /must/ equal 'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR'.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'DeviceGroupPresentModeFlagsKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getDeviceGroupPresentCapabilitiesKHR'+data DeviceGroupPresentCapabilitiesKHR = DeviceGroupPresentCapabilitiesKHR+ { -- | @presentMask@ is an array of+ -- 'Graphics.Vulkan.Core10.APIConstants.MAX_DEVICE_GROUP_SIZE' @uint32_t@+ -- masks, where the mask at element i is non-zero if physical device i has+ -- a presentation engine, and where bit j is set in element i if physical+ -- device i /can/ present swapchain images from physical device j. If+ -- element i is non-zero, then bit i /must/ be set.+ presentMask :: Vector Word32+ , -- | @modes@ is a bitmask of 'DeviceGroupPresentModeFlagBitsKHR' indicating+ -- which device group presentation modes are supported.+ modes :: DeviceGroupPresentModeFlagsKHR+ }+ deriving (Typeable)+deriving instance Show DeviceGroupPresentCapabilitiesKHR++instance ToCStruct DeviceGroupPresentCapabilitiesKHR where+ withCStruct x f = allocaBytesAligned 152 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DeviceGroupPresentCapabilitiesKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ unless ((Data.Vector.length $ (presentMask)) <= MAX_DEVICE_GROUP_SIZE) $+ throwIO $ IOError Nothing InvalidArgument "" "presentMask is too long, a maximum of MAX_DEVICE_GROUP_SIZE elements are allowed" Nothing Nothing+ Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DEVICE_GROUP_SIZE Word32)))) `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (presentMask)+ poke ((p `plusPtr` 144 :: Ptr DeviceGroupPresentModeFlagsKHR)) (modes)+ f+ cStructSize = 152+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ unless ((Data.Vector.length $ (mempty)) <= MAX_DEVICE_GROUP_SIZE) $+ throwIO $ IOError Nothing InvalidArgument "" "presentMask is too long, a maximum of MAX_DEVICE_GROUP_SIZE elements are allowed" Nothing Nothing+ Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DEVICE_GROUP_SIZE Word32)))) `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ poke ((p `plusPtr` 144 :: Ptr DeviceGroupPresentModeFlagsKHR)) (zero)+ f++instance FromCStruct DeviceGroupPresentCapabilitiesKHR where+ peekCStruct p = do+ presentMask <- generateM (MAX_DEVICE_GROUP_SIZE) (\i -> peek @Word32 (((lowerArrayPtr @Word32 ((p `plusPtr` 16 :: Ptr (Data.Vector.Storable.Sized.Vector MAX_DEVICE_GROUP_SIZE Word32)))) `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ modes <- peek @DeviceGroupPresentModeFlagsKHR ((p `plusPtr` 144 :: Ptr DeviceGroupPresentModeFlagsKHR))+ pure $ DeviceGroupPresentCapabilitiesKHR+ presentMask modes++instance Storable DeviceGroupPresentCapabilitiesKHR where+ sizeOf ~_ = 152+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DeviceGroupPresentCapabilitiesKHR where+ zero = DeviceGroupPresentCapabilitiesKHR+ mempty+ zero+++-- | VkImageSwapchainCreateInfoKHR - Specify that an image will be bound to+-- swapchain memory+--+-- == Valid Usage+--+-- - If @swapchain@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', the fields of+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo' /must/ match the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#swapchain-wsi-image-create-info implied image creation parameters>+-- of the swapchain+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR'+--+-- - If @swapchain@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @swapchain@+-- /must/ be a valid 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR'+-- handle+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR'+data ImageSwapchainCreateInfoKHR = ImageSwapchainCreateInfoKHR+ { -- | @swapchain@ is 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' or a+ -- handle of a swapchain that the image will be bound to.+ swapchain :: SwapchainKHR }+ deriving (Typeable)+deriving instance Show ImageSwapchainCreateInfoKHR++instance ToCStruct ImageSwapchainCreateInfoKHR where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageSwapchainCreateInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr SwapchainKHR)) (swapchain)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct ImageSwapchainCreateInfoKHR where+ peekCStruct p = do+ swapchain <- peek @SwapchainKHR ((p `plusPtr` 16 :: Ptr SwapchainKHR))+ pure $ ImageSwapchainCreateInfoKHR+ swapchain++instance Storable ImageSwapchainCreateInfoKHR where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImageSwapchainCreateInfoKHR where+ zero = ImageSwapchainCreateInfoKHR+ zero+++-- | VkBindImageMemorySwapchainInfoKHR - Structure specifying swapchain image+-- memory to bind to+--+-- = Description+--+-- If @swapchain@ is not @NULL@, the @swapchain@ and @imageIndex@ are used+-- to determine the memory that the image is bound to, instead of @memory@+-- and @memoryOffset@.+--+-- Memory /can/ be bound to a swapchain and use the @pDeviceIndices@ or+-- @pSplitInstanceBindRegions@ members of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2.BindImageMemoryDeviceGroupInfo'.+--+-- == Valid Usage+--+-- - @imageIndex@ /must/ be less than the number of images in @swapchain@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR'+--+-- - @swapchain@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR' handle+--+-- == Host Synchronization+--+-- - Host access to @swapchain@ /must/ be externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR'+data BindImageMemorySwapchainInfoKHR = BindImageMemorySwapchainInfoKHR+ { -- | @swapchain@ is 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' or a+ -- swapchain handle.+ swapchain :: SwapchainKHR+ , -- | @imageIndex@ is an image index within @swapchain@.+ imageIndex :: Word32+ }+ deriving (Typeable)+deriving instance Show BindImageMemorySwapchainInfoKHR++instance ToCStruct BindImageMemorySwapchainInfoKHR where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p BindImageMemorySwapchainInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr SwapchainKHR)) (swapchain)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (imageIndex)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr SwapchainKHR)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ f++instance FromCStruct BindImageMemorySwapchainInfoKHR where+ peekCStruct p = do+ swapchain <- peek @SwapchainKHR ((p `plusPtr` 16 :: Ptr SwapchainKHR))+ imageIndex <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ pure $ BindImageMemorySwapchainInfoKHR+ swapchain imageIndex++instance Storable BindImageMemorySwapchainInfoKHR where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero BindImageMemorySwapchainInfoKHR where+ zero = BindImageMemorySwapchainInfoKHR+ zero+ zero+++-- | VkAcquireNextImageInfoKHR - Structure specifying parameters of the+-- acquire+--+-- = Description+--+-- If 'acquireNextImageKHR' is used, the device mask is considered to+-- include all physical devices in the logical device.+--+-- Note+--+-- 'acquireNextImage2KHR' signals at most one semaphore, even if the+-- application requests waiting for multiple physical devices to be ready+-- via the @deviceMask@. However, only a single physical device /can/ wait+-- on that semaphore, since the semaphore becomes unsignaled when the wait+-- succeeds. For other physical devices to wait for the image to be ready,+-- it is necessary for the application to submit semaphore signal+-- operation(s) to that first physical device to signal additional+-- semaphore(s) after the wait succeeds, which the other physical device(s)+-- /can/ wait upon.+--+-- == Valid Usage+--+-- - @swapchain@ /must/ not be in the retired state+--+-- - If 'Graphics.Vulkan.Core10.Handles.Semaphore' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ be+-- unsignaled+--+-- - If 'Graphics.Vulkan.Core10.Handles.Semaphore' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ not have+-- any uncompleted signal or wait operations pending+--+-- - If 'Graphics.Vulkan.Core10.Handles.Fence' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' it /must/ be+-- unsignaled and /must/ not be associated with any other queue command+-- that has not yet completed execution on that queue+--+-- - 'Graphics.Vulkan.Core10.Handles.Semaphore' and+-- 'Graphics.Vulkan.Core10.Handles.Fence' /must/ not both be equal to+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- - @deviceMask@ /must/ be a valid device mask+--+-- - @deviceMask@ /must/ not be zero+--+-- - 'Graphics.Vulkan.Core10.Handles.Semaphore' /must/ have a+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SemaphoreType' of+-- 'Graphics.Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_BINARY'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR'+--+-- - @pNext@ /must/ be @NULL@+--+-- - @swapchain@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR' handle+--+-- - If 'Graphics.Vulkan.Core10.Handles.Semaphore' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Semaphore' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Semaphore' handle+--+-- - If 'Graphics.Vulkan.Core10.Handles.Fence' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Fence' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Fence' handle+--+-- - Each of 'Graphics.Vulkan.Core10.Handles.Fence',+-- 'Graphics.Vulkan.Core10.Handles.Semaphore', and @swapchain@ that are+-- valid handles of non-ignored parameters /must/ have been created,+-- allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Instance'+--+-- == Host Synchronization+--+-- - Host access to @swapchain@ /must/ be externally synchronized+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Semaphore' /must/ be+-- externally synchronized+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.Fence' /must/ be+-- externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Fence',+-- 'Graphics.Vulkan.Core10.Handles.Semaphore',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Extensions.Handles.SwapchainKHR',+-- 'acquireNextImage2KHR'+data AcquireNextImageInfoKHR = AcquireNextImageInfoKHR+ { -- | @swapchain@ is a non-retired swapchain from which an image is acquired.+ swapchain :: SwapchainKHR+ , -- | @timeout@ specifies how long the function waits, in nanoseconds, if no+ -- image is available.+ timeout :: Word64+ , -- | 'Graphics.Vulkan.Core10.Handles.Semaphore' is+ -- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' or a semaphore to+ -- signal.+ semaphore :: Semaphore+ , -- | 'Graphics.Vulkan.Core10.Handles.Fence' is+ -- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' or a fence to signal.+ fence :: Fence+ , -- | @deviceMask@ is a mask of physical devices for which the swapchain image+ -- will be ready to use when the semaphore or fence is signaled.+ deviceMask :: Word32+ }+ deriving (Typeable)+deriving instance Show AcquireNextImageInfoKHR++instance ToCStruct AcquireNextImageInfoKHR where+ withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p AcquireNextImageInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr SwapchainKHR)) (swapchain)+ poke ((p `plusPtr` 24 :: Ptr Word64)) (timeout)+ poke ((p `plusPtr` 32 :: Ptr Semaphore)) (semaphore)+ poke ((p `plusPtr` 40 :: Ptr Fence)) (fence)+ poke ((p `plusPtr` 48 :: Ptr Word32)) (deviceMask)+ f+ cStructSize = 56+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr SwapchainKHR)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)+ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)+ f++instance FromCStruct AcquireNextImageInfoKHR where+ peekCStruct p = do+ swapchain <- peek @SwapchainKHR ((p `plusPtr` 16 :: Ptr SwapchainKHR))+ timeout <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))+ semaphore <- peek @Semaphore ((p `plusPtr` 32 :: Ptr Semaphore))+ fence <- peek @Fence ((p `plusPtr` 40 :: Ptr Fence))+ deviceMask <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+ pure $ AcquireNextImageInfoKHR+ swapchain timeout semaphore fence deviceMask++instance Storable AcquireNextImageInfoKHR where+ sizeOf ~_ = 56+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AcquireNextImageInfoKHR where+ zero = AcquireNextImageInfoKHR+ zero+ zero+ zero+ zero+ zero+++-- | VkDeviceGroupPresentInfoKHR - Mode and mask controlling which physical+-- devices\' images are presented+--+-- = Description+--+-- If @mode@ is 'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR', then each+-- element of @pDeviceMasks@ selects which instance of the swapchain image+-- is presented. Each element of @pDeviceMasks@ /must/ have exactly one bit+-- set, and the corresponding physical device /must/ have a presentation+-- engine as reported by 'DeviceGroupPresentCapabilitiesKHR'.+--+-- If @mode@ is 'DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR', then each+-- element of @pDeviceMasks@ selects which instance of the swapchain image+-- is presented. Each element of @pDeviceMasks@ /must/ have exactly one bit+-- set, and some physical device in the logical device /must/ include that+-- bit in its 'DeviceGroupPresentCapabilitiesKHR'::@presentMask@.+--+-- If @mode@ is 'DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR', then each element+-- of @pDeviceMasks@ selects which instances of the swapchain image are+-- component-wise summed and the sum of those images is presented. If the+-- sum in any component is outside the representable range, the value of+-- that component is undefined. Each element of @pDeviceMasks@ /must/ have+-- a value for which all set bits are set in one of the elements of+-- 'DeviceGroupPresentCapabilitiesKHR'::@presentMask@.+--+-- If @mode@ is 'DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR',+-- then each element of @pDeviceMasks@ selects which instance(s) of the+-- swapchain images are presented. For each bit set in each element of+-- @pDeviceMasks@, the corresponding physical device /must/ have a+-- presentation engine as reported by 'DeviceGroupPresentCapabilitiesKHR'.+--+-- If 'DeviceGroupPresentInfoKHR' is not provided or @swapchainCount@ is+-- zero then the masks are considered to be @1@. If+-- 'DeviceGroupPresentInfoKHR' is not provided, @mode@ is considered to be+-- 'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR'.+--+-- == Valid Usage+--+-- - @swapchainCount@ /must/ equal @0@ or+-- 'PresentInfoKHR'::@swapchainCount@+--+-- - If @mode@ is 'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR', then each+-- element of @pDeviceMasks@ /must/ have exactly one bit set, and the+-- corresponding element of+-- 'DeviceGroupPresentCapabilitiesKHR'::@presentMask@ /must/ be+-- non-zero+--+-- - If @mode@ is 'DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR', then each+-- element of @pDeviceMasks@ /must/ have exactly one bit set, and some+-- physical device in the logical device /must/ include that bit in its+-- 'DeviceGroupPresentCapabilitiesKHR'::@presentMask@.+--+-- - If @mode@ is 'DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR', then each+-- element of @pDeviceMasks@ /must/ have a value for which all set bits+-- are set in one of the elements of+-- 'DeviceGroupPresentCapabilitiesKHR'::@presentMask@+--+-- - If @mode@ is 'DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR',+-- then for each bit set in each element of @pDeviceMasks@, the+-- corresponding element of+-- 'DeviceGroupPresentCapabilitiesKHR'::@presentMask@ /must/ be+-- non-zero+--+-- - The value of each element of @pDeviceMasks@ /must/ be equal to the+-- device mask passed in 'AcquireNextImageInfoKHR'::@deviceMask@ when+-- the image index was last acquired+--+-- - @mode@ /must/ have exactly one bit set, and that bit /must/ have+-- been included in 'DeviceGroupSwapchainCreateInfoKHR'::@modes@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR'+--+-- - If @swapchainCount@ is not @0@, @pDeviceMasks@ /must/ be a valid+-- pointer to an array of @swapchainCount@ @uint32_t@ values+--+-- - @mode@ /must/ be a valid 'DeviceGroupPresentModeFlagBitsKHR' value+--+-- = See Also+--+-- 'DeviceGroupPresentModeFlagBitsKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DeviceGroupPresentInfoKHR = DeviceGroupPresentInfoKHR+ { -- | @pDeviceMasks@ is a pointer to an array of device masks, one for each+ -- element of 'PresentInfoKHR'::pSwapchains.+ deviceMasks :: Vector Word32+ , -- | @mode@ is the device group present mode that will be used for this+ -- present.+ mode :: DeviceGroupPresentModeFlagBitsKHR+ }+ deriving (Typeable)+deriving instance Show DeviceGroupPresentInfoKHR++instance ToCStruct DeviceGroupPresentInfoKHR where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DeviceGroupPresentInfoKHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (deviceMasks)) :: Word32))+ pPDeviceMasks' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (deviceMasks)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceMasks' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (deviceMasks)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPDeviceMasks')+ lift $ poke ((p `plusPtr` 32 :: Ptr DeviceGroupPresentModeFlagBitsKHR)) (mode)+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPDeviceMasks' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceMasks' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Word32))) (pPDeviceMasks')+ lift $ poke ((p `plusPtr` 32 :: Ptr DeviceGroupPresentModeFlagBitsKHR)) (zero)+ lift $ f++instance FromCStruct DeviceGroupPresentInfoKHR where+ peekCStruct p = do+ swapchainCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pDeviceMasks <- peek @(Ptr Word32) ((p `plusPtr` 24 :: Ptr (Ptr Word32)))+ pDeviceMasks' <- generateM (fromIntegral swapchainCount) (\i -> peek @Word32 ((pDeviceMasks `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ mode <- peek @DeviceGroupPresentModeFlagBitsKHR ((p `plusPtr` 32 :: Ptr DeviceGroupPresentModeFlagBitsKHR))+ pure $ DeviceGroupPresentInfoKHR+ pDeviceMasks' mode++instance Zero DeviceGroupPresentInfoKHR where+ zero = DeviceGroupPresentInfoKHR+ mempty+ zero+++-- | VkDeviceGroupSwapchainCreateInfoKHR - Structure specifying parameters of+-- a newly created swapchain object+--+-- = Description+--+-- If this structure is not present, @modes@ is considered to be+-- 'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR'.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'DeviceGroupPresentModeFlagsKHR',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DeviceGroupSwapchainCreateInfoKHR = DeviceGroupSwapchainCreateInfoKHR+ { -- | @modes@ /must/ not be @0@+ modes :: DeviceGroupPresentModeFlagsKHR }+ deriving (Typeable)+deriving instance Show DeviceGroupSwapchainCreateInfoKHR++instance ToCStruct DeviceGroupSwapchainCreateInfoKHR where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DeviceGroupSwapchainCreateInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DeviceGroupPresentModeFlagsKHR)) (modes)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr DeviceGroupPresentModeFlagsKHR)) (zero)+ f++instance FromCStruct DeviceGroupSwapchainCreateInfoKHR where+ peekCStruct p = do+ modes <- peek @DeviceGroupPresentModeFlagsKHR ((p `plusPtr` 16 :: Ptr DeviceGroupPresentModeFlagsKHR))+ pure $ DeviceGroupSwapchainCreateInfoKHR+ modes++instance Storable DeviceGroupSwapchainCreateInfoKHR where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DeviceGroupSwapchainCreateInfoKHR where+ zero = DeviceGroupSwapchainCreateInfoKHR+ zero+++-- | VkDeviceGroupPresentModeFlagBitsKHR - Bitmask specifying supported+-- device group present modes+--+-- = See Also+--+-- 'DeviceGroupPresentInfoKHR', 'DeviceGroupPresentModeFlagsKHR'+newtype DeviceGroupPresentModeFlagBitsKHR = DeviceGroupPresentModeFlagBitsKHR Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR' specifies that any physical+-- device with a presentation engine /can/ present its own swapchain+-- images.+pattern DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = DeviceGroupPresentModeFlagBitsKHR 0x00000001+-- | 'DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR' specifies that any physical+-- device with a presentation engine /can/ present swapchain images from+-- any physical device in its @presentMask@.+pattern DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = DeviceGroupPresentModeFlagBitsKHR 0x00000002+-- | 'DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR' specifies that any physical+-- device with a presentation engine /can/ present the sum of swapchain+-- images from any physical devices in its @presentMask@.+pattern DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = DeviceGroupPresentModeFlagBitsKHR 0x00000004+-- | 'DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR' specifies that+-- multiple physical devices with a presentation engine /can/ each present+-- their own swapchain images.+pattern DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = DeviceGroupPresentModeFlagBitsKHR 0x00000008++type DeviceGroupPresentModeFlagsKHR = DeviceGroupPresentModeFlagBitsKHR++instance Show DeviceGroupPresentModeFlagBitsKHR where+ showsPrec p = \case+ DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR -> showString "DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR"+ DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR -> showString "DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR"+ DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR -> showString "DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR"+ DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR -> showString "DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR"+ DeviceGroupPresentModeFlagBitsKHR x -> showParen (p >= 11) (showString "DeviceGroupPresentModeFlagBitsKHR 0x" . showHex x)++instance Read DeviceGroupPresentModeFlagBitsKHR where+ readPrec = parens (choose [("DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR", pure DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR)+ , ("DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR", pure DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR)+ , ("DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR", pure DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR)+ , ("DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR", pure DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR)]+ ++++ prec 10 (do+ expectP (Ident "DeviceGroupPresentModeFlagBitsKHR")+ v <- step readPrec+ pure (DeviceGroupPresentModeFlagBitsKHR v)))+++-- | VkSwapchainCreateFlagBitsKHR - Bitmask controlling swapchain creation+--+-- = See Also+--+-- 'SwapchainCreateFlagsKHR'+newtype SwapchainCreateFlagBitsKHR = SwapchainCreateFlagBitsKHR Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR' specifies that the images of+-- the swapchain /can/ be used to create a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' with a different format than+-- what the swapchain was created with. The list of allowed image view+-- formats are specified by adding a+-- 'Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'+-- structure to the @pNext@ chain of 'SwapchainCreateInfoKHR'. In addition,+-- this flag also specifies that the swapchain /can/ be created with usage+-- flags that are not supported for the format the swapchain is created+-- with but are supported for at least one of the allowed image view+-- formats.+pattern SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = SwapchainCreateFlagBitsKHR 0x00000004+-- | 'SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR' specifies that+-- images created from the swapchain (i.e. with the @swapchain@ member of+-- 'ImageSwapchainCreateInfoKHR' set to this swapchain’s handle) /must/ use+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT'.+pattern SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = SwapchainCreateFlagBitsKHR 0x00000001+-- | 'SWAPCHAIN_CREATE_PROTECTED_BIT_KHR' specifies that images created from+-- the swapchain are protected images.+pattern SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = SwapchainCreateFlagBitsKHR 0x00000002++type SwapchainCreateFlagsKHR = SwapchainCreateFlagBitsKHR++instance Show SwapchainCreateFlagBitsKHR where+ showsPrec p = \case+ SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR -> showString "SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR"+ SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR -> showString "SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR"+ SWAPCHAIN_CREATE_PROTECTED_BIT_KHR -> showString "SWAPCHAIN_CREATE_PROTECTED_BIT_KHR"+ SwapchainCreateFlagBitsKHR x -> showParen (p >= 11) (showString "SwapchainCreateFlagBitsKHR 0x" . showHex x)++instance Read SwapchainCreateFlagBitsKHR where+ readPrec = parens (choose [("SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR", pure SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR)+ , ("SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR", pure SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR)+ , ("SWAPCHAIN_CREATE_PROTECTED_BIT_KHR", pure SWAPCHAIN_CREATE_PROTECTED_BIT_KHR)]+ ++++ prec 10 (do+ expectP (Ident "SwapchainCreateFlagBitsKHR")+ v <- step readPrec+ pure (SwapchainCreateFlagBitsKHR v)))+++type KHR_SWAPCHAIN_SPEC_VERSION = 70++-- No documentation found for TopLevel "VK_KHR_SWAPCHAIN_SPEC_VERSION"+pattern KHR_SWAPCHAIN_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_SWAPCHAIN_SPEC_VERSION = 70+++type KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain"++-- No documentation found for TopLevel "VK_KHR_SWAPCHAIN_EXTENSION_NAME"+pattern KHR_SWAPCHAIN_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_swapchain.hs-boot view
@@ -0,0 +1,89 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_swapchain ( AcquireNextImageInfoKHR+ , BindImageMemorySwapchainInfoKHR+ , DeviceGroupPresentCapabilitiesKHR+ , DeviceGroupPresentInfoKHR+ , DeviceGroupSwapchainCreateInfoKHR+ , ImageSwapchainCreateInfoKHR+ , PresentInfoKHR+ , SwapchainCreateInfoKHR+ , DeviceGroupPresentModeFlagBitsKHR+ , DeviceGroupPresentModeFlagsKHR+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+data AcquireNextImageInfoKHR++instance ToCStruct AcquireNextImageInfoKHR+instance Show AcquireNextImageInfoKHR++instance FromCStruct AcquireNextImageInfoKHR+++data BindImageMemorySwapchainInfoKHR++instance ToCStruct BindImageMemorySwapchainInfoKHR+instance Show BindImageMemorySwapchainInfoKHR++instance FromCStruct BindImageMemorySwapchainInfoKHR+++data DeviceGroupPresentCapabilitiesKHR++instance ToCStruct DeviceGroupPresentCapabilitiesKHR+instance Show DeviceGroupPresentCapabilitiesKHR++instance FromCStruct DeviceGroupPresentCapabilitiesKHR+++data DeviceGroupPresentInfoKHR++instance ToCStruct DeviceGroupPresentInfoKHR+instance Show DeviceGroupPresentInfoKHR++instance FromCStruct DeviceGroupPresentInfoKHR+++data DeviceGroupSwapchainCreateInfoKHR++instance ToCStruct DeviceGroupSwapchainCreateInfoKHR+instance Show DeviceGroupSwapchainCreateInfoKHR++instance FromCStruct DeviceGroupSwapchainCreateInfoKHR+++data ImageSwapchainCreateInfoKHR++instance ToCStruct ImageSwapchainCreateInfoKHR+instance Show ImageSwapchainCreateInfoKHR++instance FromCStruct ImageSwapchainCreateInfoKHR+++type role PresentInfoKHR nominal+data PresentInfoKHR (es :: [Type])++instance PokeChain es => ToCStruct (PresentInfoKHR es)+instance Show (Chain es) => Show (PresentInfoKHR es)++instance PeekChain es => FromCStruct (PresentInfoKHR es)+++type role SwapchainCreateInfoKHR nominal+data SwapchainCreateInfoKHR (es :: [Type])++instance PokeChain es => ToCStruct (SwapchainCreateInfoKHR es)+instance Show (Chain es) => Show (SwapchainCreateInfoKHR es)++instance PeekChain es => FromCStruct (SwapchainCreateInfoKHR es)+++data DeviceGroupPresentModeFlagBitsKHR++type DeviceGroupPresentModeFlagsKHR = DeviceGroupPresentModeFlagBitsKHR+
+ src/Graphics/Vulkan/Extensions/VK_KHR_swapchain_mutable_format.hs view
@@ -0,0 +1,25 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_swapchain_mutable_format ( KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION+ , pattern KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION+ , KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME+ , pattern KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME+ , SwapchainCreateFlagBitsKHR(..)+ , SwapchainCreateFlagsKHR+ ) where++import Data.String (IsString)+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagBitsKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_swapchain (SwapchainCreateFlagsKHR)+type KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION"+pattern KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1+++type KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format"++-- No documentation found for TopLevel "VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME"+pattern KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_timeline_semaphore.hs view
@@ -0,0 +1,148 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_timeline_semaphore ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR+ , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR+ , pattern STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR+ , pattern STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR+ , pattern STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR+ , pattern STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR+ , pattern SEMAPHORE_TYPE_BINARY_KHR+ , pattern SEMAPHORE_TYPE_TIMELINE_KHR+ , pattern SEMAPHORE_WAIT_ANY_BIT_KHR+ , getSemaphoreCounterValueKHR+ , waitSemaphoresKHR+ , signalSemaphoreKHR+ , SemaphoreWaitFlagsKHR+ , SemaphoreTypeKHR+ , SemaphoreWaitFlagBitsKHR+ , PhysicalDeviceTimelineSemaphoreFeaturesKHR+ , PhysicalDeviceTimelineSemaphorePropertiesKHR+ , SemaphoreTypeCreateInfoKHR+ , TimelineSemaphoreSubmitInfoKHR+ , SemaphoreWaitInfoKHR+ , SemaphoreSignalInfoKHR+ , KHR_TIMELINE_SEMAPHORE_SPEC_VERSION+ , pattern KHR_TIMELINE_SEMAPHORE_SPEC_VERSION+ , KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME+ , pattern KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME+ ) where++import Data.String (IsString)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (getSemaphoreCounterValue)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (signalSemaphore)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (waitSemaphores)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (PhysicalDeviceTimelineSemaphoreFeatures)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (PhysicalDeviceTimelineSemaphoreProperties)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreSignalInfo)+import Graphics.Vulkan.Core12.Enums.SemaphoreType (SemaphoreType)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreTypeCreateInfo)+import Graphics.Vulkan.Core12.Enums.SemaphoreWaitFlagBits (SemaphoreWaitFlagBits)+import Graphics.Vulkan.Core12.Enums.SemaphoreWaitFlagBits (SemaphoreWaitFlags)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreWaitInfo)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (TimelineSemaphoreSubmitInfo)+import Graphics.Vulkan.Core12.Enums.SemaphoreType (SemaphoreType(SEMAPHORE_TYPE_BINARY))+import Graphics.Vulkan.Core12.Enums.SemaphoreType (SemaphoreType(SEMAPHORE_TYPE_TIMELINE))+import Graphics.Vulkan.Core12.Enums.SemaphoreWaitFlagBits (SemaphoreWaitFlags)+import Graphics.Vulkan.Core12.Enums.SemaphoreWaitFlagBits (SemaphoreWaitFlagBits(SEMAPHORE_WAIT_ANY_BIT))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR"+pattern STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR"+pattern STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR"+pattern STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO+++-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR"+pattern STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO+++-- No documentation found for TopLevel "VK_SEMAPHORE_TYPE_BINARY_KHR"+pattern SEMAPHORE_TYPE_BINARY_KHR = SEMAPHORE_TYPE_BINARY+++-- No documentation found for TopLevel "VK_SEMAPHORE_TYPE_TIMELINE_KHR"+pattern SEMAPHORE_TYPE_TIMELINE_KHR = SEMAPHORE_TYPE_TIMELINE+++-- No documentation found for TopLevel "VK_SEMAPHORE_WAIT_ANY_BIT_KHR"+pattern SEMAPHORE_WAIT_ANY_BIT_KHR = SEMAPHORE_WAIT_ANY_BIT+++-- No documentation found for TopLevel "vkGetSemaphoreCounterValueKHR"+getSemaphoreCounterValueKHR = getSemaphoreCounterValue+++-- No documentation found for TopLevel "vkWaitSemaphoresKHR"+waitSemaphoresKHR = waitSemaphores+++-- No documentation found for TopLevel "vkSignalSemaphoreKHR"+signalSemaphoreKHR = signalSemaphore+++-- No documentation found for TopLevel "VkSemaphoreWaitFlagsKHR"+type SemaphoreWaitFlagsKHR = SemaphoreWaitFlags+++-- No documentation found for TopLevel "VkSemaphoreTypeKHR"+type SemaphoreTypeKHR = SemaphoreType+++-- No documentation found for TopLevel "VkSemaphoreWaitFlagBitsKHR"+type SemaphoreWaitFlagBitsKHR = SemaphoreWaitFlagBits+++-- No documentation found for TopLevel "VkPhysicalDeviceTimelineSemaphoreFeaturesKHR"+type PhysicalDeviceTimelineSemaphoreFeaturesKHR = PhysicalDeviceTimelineSemaphoreFeatures+++-- No documentation found for TopLevel "VkPhysicalDeviceTimelineSemaphorePropertiesKHR"+type PhysicalDeviceTimelineSemaphorePropertiesKHR = PhysicalDeviceTimelineSemaphoreProperties+++-- No documentation found for TopLevel "VkSemaphoreTypeCreateInfoKHR"+type SemaphoreTypeCreateInfoKHR = SemaphoreTypeCreateInfo+++-- No documentation found for TopLevel "VkTimelineSemaphoreSubmitInfoKHR"+type TimelineSemaphoreSubmitInfoKHR = TimelineSemaphoreSubmitInfo+++-- No documentation found for TopLevel "VkSemaphoreWaitInfoKHR"+type SemaphoreWaitInfoKHR = SemaphoreWaitInfo+++-- No documentation found for TopLevel "VkSemaphoreSignalInfoKHR"+type SemaphoreSignalInfoKHR = SemaphoreSignalInfo+++type KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION"+pattern KHR_TIMELINE_SEMAPHORE_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2+++type KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore"++-- No documentation found for TopLevel "VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME"+pattern KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_uniform_buffer_standard_layout.hs view
@@ -0,0 +1,33 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_uniform_buffer_standard_layout ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR+ , PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR+ , KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION+ , pattern KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION+ , KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME+ , pattern KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME+ ) where++import Data.String (IsString)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout (PhysicalDeviceUniformBufferStandardLayoutFeatures)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES+++-- No documentation found for TopLevel "VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR"+type PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = PhysicalDeviceUniformBufferStandardLayoutFeatures+++type KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION"+pattern KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1+++type KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout"++-- No documentation found for TopLevel "VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME"+pattern KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout"+
src/Graphics/Vulkan/Extensions/VK_KHR_variable_pointers.hs view
@@ -1,52 +1,43 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}+module Graphics.Vulkan.Extensions.VK_KHR_variable_pointers ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR+ , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR+ , PhysicalDeviceVariablePointersFeaturesKHR+ , PhysicalDeviceVariablePointerFeaturesKHR+ , KHR_VARIABLE_POINTERS_SPEC_VERSION+ , pattern KHR_VARIABLE_POINTERS_SPEC_VERSION+ , KHR_VARIABLE_POINTERS_EXTENSION_NAME+ , pattern KHR_VARIABLE_POINTERS_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_KHR_variable_pointers- ( pattern VK_KHR_VARIABLE_POINTERS_SPEC_VERSION- , pattern VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME- , VkPhysicalDeviceVariablePointerFeaturesKHR- , pattern VkPhysicalDeviceVariablePointerFeaturesKHR- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR- ) where+import Data.String (IsString)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers (PhysicalDeviceVariablePointersFeatures)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers (pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES)+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES -import Data.String- ( IsString- )-import Foreign.Ptr- ( Ptr- )-import Graphics.Vulkan.NamedType- ( (:::)- ) +-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES -import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core11.Promoted_from_VK_KHR_variable_pointers- ( VkPhysicalDeviceVariablePointerFeatures(..)- , pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES- ) +-- No documentation found for TopLevel "VkPhysicalDeviceVariablePointersFeaturesKHR"+type PhysicalDeviceVariablePointersFeaturesKHR = PhysicalDeviceVariablePointersFeatures --- No documentation found for TopLevel "VK_KHR_VARIABLE_POINTERS_SPEC_VERSION"-pattern VK_KHR_VARIABLE_POINTERS_SPEC_VERSION :: Integral a => a-pattern VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME"-pattern VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers"+ -- No documentation found for TopLevel "VkPhysicalDeviceVariablePointerFeaturesKHR"-type VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointerFeatures+type PhysicalDeviceVariablePointerFeaturesKHR = PhysicalDeviceVariablePointersFeatures --- No documentation found for TopLevel "VkPhysicalDeviceVariablePointerFeaturesKHR"-pattern VkPhysicalDeviceVariablePointerFeaturesKHR :: ("sType" ::: VkStructureType) -> ("pNext" ::: Ptr ()) -> ("variablePointersStorageBuffer" ::: VkBool32) -> ("variablePointers" ::: VkBool32) -> VkPhysicalDeviceVariablePointerFeaturesKHR-pattern VkPhysicalDeviceVariablePointerFeaturesKHR vkSType vkPNext vkVariablePointersStorageBuffer vkVariablePointers = VkPhysicalDeviceVariablePointerFeatures vkSType vkPNext vkVariablePointersStorageBuffer vkVariablePointers--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES+type KHR_VARIABLE_POINTERS_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_VARIABLE_POINTERS_SPEC_VERSION"+pattern KHR_VARIABLE_POINTERS_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_VARIABLE_POINTERS_SPEC_VERSION = 1+++type KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers"++-- No documentation found for TopLevel "VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME"+pattern KHR_VARIABLE_POINTERS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_vulkan_memory_model.hs view
@@ -0,0 +1,33 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_vulkan_memory_model ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR+ , PhysicalDeviceVulkanMemoryModelFeaturesKHR+ , KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION+ , pattern KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION+ , KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME+ , pattern KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME+ ) where++import Data.String (IsString)+import Graphics.Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model (PhysicalDeviceVulkanMemoryModelFeatures)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES))+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR"+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES+++-- No documentation found for TopLevel "VkPhysicalDeviceVulkanMemoryModelFeaturesKHR"+type PhysicalDeviceVulkanMemoryModelFeaturesKHR = PhysicalDeviceVulkanMemoryModelFeatures+++type KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3++-- No documentation found for TopLevel "VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION"+pattern KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3+++type KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model"++-- No documentation found for TopLevel "VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME"+pattern KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model"+
src/Graphics/Vulkan/Extensions/VK_KHR_wayland_surface.hs view
@@ -1,250 +1,288 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_KHR_wayland_surface- ( Wl_display- , Wl_surface- , VkWaylandSurfaceCreateFlagsKHR(..)- , pattern VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR- , pattern VK_KHR_WAYLAND_SURFACE_SPEC_VERSION- , pattern VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME- , vkCreateWaylandSurfaceKHR- , vkGetPhysicalDeviceWaylandPresentationSupportKHR- , VkWaylandSurfaceCreateInfoKHR(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkInstance- , VkPhysicalDevice- )-import Graphics.Vulkan.Extensions.VK_KHR_surface- ( VkSurfaceKHR- )----- | Opaque data-data Wl_display--- | Opaque data-data Wl_surface--- ** VkWaylandSurfaceCreateFlagsKHR---- No documentation found for TopLevel "VkWaylandSurfaceCreateFlagsKHR"-newtype VkWaylandSurfaceCreateFlagsKHR = VkWaylandSurfaceCreateFlagsKHR VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkWaylandSurfaceCreateFlagsKHR where- - showsPrec p (VkWaylandSurfaceCreateFlagsKHR x) = showParen (p >= 11) (showString "VkWaylandSurfaceCreateFlagsKHR " . showsPrec 11 x)--instance Read VkWaylandSurfaceCreateFlagsKHR where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkWaylandSurfaceCreateFlagsKHR")- v <- step readPrec- pure (VkWaylandSurfaceCreateFlagsKHR v)- )- )+module Graphics.Vulkan.Extensions.VK_KHR_wayland_surface ( createWaylandSurfaceKHR+ , getPhysicalDeviceWaylandPresentationSupportKHR+ , WaylandSurfaceCreateInfoKHR(..)+ , WaylandSurfaceCreateFlagsKHR(..)+ , KHR_WAYLAND_SURFACE_SPEC_VERSION+ , pattern KHR_WAYLAND_SURFACE_SPEC_VERSION+ , KHR_WAYLAND_SURFACE_EXTENSION_NAME+ , pattern KHR_WAYLAND_SURFACE_EXTENSION_NAME+ , SurfaceKHR(..)+ , Wl_display+ , Wl_surface+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Bits (Bits)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.BaseType (Bool32(..))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Instance)+import Graphics.Vulkan.Core10.Handles (Instance(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkCreateWaylandSurfaceKHR))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceWaylandPresentationSupportKHR))+import Graphics.Vulkan.Core10.Handles (Instance_T)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Extensions.WSITypes (Wl_display)+import Graphics.Vulkan.Extensions.WSITypes (Wl_surface)+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.Extensions.WSITypes (Wl_display)+import Graphics.Vulkan.Extensions.WSITypes (Wl_surface)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateWaylandSurfaceKHR+ :: FunPtr (Ptr Instance_T -> Ptr WaylandSurfaceCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result) -> Ptr Instance_T -> Ptr WaylandSurfaceCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = VkStructureType 1000006000--- No documentation found for TopLevel "VK_KHR_WAYLAND_SURFACE_SPEC_VERSION"-pattern VK_KHR_WAYLAND_SURFACE_SPEC_VERSION :: Integral a => a-pattern VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6--- No documentation found for TopLevel "VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME"-pattern VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" -- | vkCreateWaylandSurfaceKHR - Create a--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR' object for a--- Wayland window+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' object for a Wayland+-- window -- -- = Parameters ----- - @instance@ is the instance to associate the surface with.+-- - 'Graphics.Vulkan.Core10.Handles.Instance' is the instance to+-- associate the surface with. ----- - @pCreateInfo@ is a pointer to an instance of the--- 'VkWaylandSurfaceCreateInfoKHR' structure containing parameters--- affecting the creation of the surface object.+-- - @pCreateInfo@ is a pointer to a 'WaylandSurfaceCreateInfoKHR'+-- structure containing parameters affecting the creation of the+-- surface object. -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- surface object when there is no more specific allocator available--- (see [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)).+-- (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>). ----- - @pSurface@ points to a @VkSurfaceKHR@ handle in which the created--- surface object is returned.+-- - @pSurface@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle in which the+-- created surface object is returned. -- -- == Valid Usage (Implicit) ----- - @instance@ /must/ be a valid @VkInstance@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle -- -- - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkWaylandSurfaceCreateInfoKHR@ structure+-- 'WaylandSurfaceCreateInfoKHR' structure -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - @pSurface@ /must/ be a valid pointer to a @VkSurfaceKHR@ handle+-- - @pSurface@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR',--- 'VkWaylandSurfaceCreateInfoKHR'+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Instance',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR',+-- 'WaylandSurfaceCreateInfoKHR'+createWaylandSurfaceKHR :: Instance -> WaylandSurfaceCreateInfoKHR -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (SurfaceKHR)+createWaylandSurfaceKHR instance' createInfo allocator = evalContT $ do+ let vkCreateWaylandSurfaceKHR' = mkVkCreateWaylandSurfaceKHR (pVkCreateWaylandSurfaceKHR (instanceCmds (instance' :: Instance)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPSurface <- ContT $ bracket (callocBytes @SurfaceKHR 8) free+ r <- lift $ vkCreateWaylandSurfaceKHR' (instanceHandle (instance')) pCreateInfo pAllocator (pPSurface)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSurface <- lift $ peek @SurfaceKHR pPSurface+ pure $ (pSurface)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkCreateWaylandSurfaceKHR" vkCreateWaylandSurfaceKHR :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWaylandSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult+ "dynamic" mkVkGetPhysicalDeviceWaylandPresentationSupportKHR+ :: FunPtr (Ptr PhysicalDevice_T -> Word32 -> Ptr Wl_display -> IO Bool32) -> Ptr PhysicalDevice_T -> Word32 -> Ptr Wl_display -> IO Bool32+ -- | vkGetPhysicalDeviceWaylandPresentationSupportKHR - Query physical device -- for presentation to Wayland -- -- = Parameters ----- - @physicalDevice@ is the physical device.+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device. -- -- - @queueFamilyIndex@ is the queue family index. ----- - @display@ is a pointer to the @wl_display@ associated with a Wayland--- compositor.+-- - 'Graphics.Vulkan.Extensions.WSITypes.Display' is a pointer to the+-- 'Graphics.Vulkan.Extensions.WSITypes.Wl_display' associated with a+-- Wayland compositor. -- -- = Description -- -- This platform-specific function /can/ be called prior to creating a -- surface. ----- == Valid Usage------ - @queueFamilyIndex@ /must/ be less than @pQueueFamilyPropertyCount@--- returned by @vkGetPhysicalDeviceQueueFamilyProperties@ for the given--- @physicalDevice@--- -- == Valid Usage (Implicit) ----- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @display@ /must/ be a valid pointer to a @wl_display@ value--- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceWaylandPresentationSupportKHR" vkGetPhysicalDeviceWaylandPresentationSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("display" ::: Ptr Wl_display) -> IO VkBool32+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+getPhysicalDeviceWaylandPresentationSupportKHR :: PhysicalDevice -> ("queueFamilyIndex" ::: Word32) -> Ptr Wl_display -> IO (Bool)+getPhysicalDeviceWaylandPresentationSupportKHR physicalDevice queueFamilyIndex display = do+ let vkGetPhysicalDeviceWaylandPresentationSupportKHR' = mkVkGetPhysicalDeviceWaylandPresentationSupportKHR (pVkGetPhysicalDeviceWaylandPresentationSupportKHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ r <- vkGetPhysicalDeviceWaylandPresentationSupportKHR' (physicalDeviceHandle (physicalDevice)) (queueFamilyIndex) (display)+ pure $ ((bool32ToBool r))++ -- | VkWaylandSurfaceCreateInfoKHR - Structure specifying parameters of a -- newly created Wayland surface object ----- == Valid Usage------ - @display@ /must/ point to a valid Wayland @wl_display@.------ - @surface@ /must/ point to a valid Wayland @wl_surface@.--- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@--- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'VkWaylandSurfaceCreateFlagsKHR', 'vkCreateWaylandSurfaceKHR'-data VkWaylandSurfaceCreateInfoKHR = VkWaylandSurfaceCreateInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkWaylandSurfaceCreateFlagsKHR- , -- | @display@ and @surface@ are pointers to the Wayland @wl_display@ and- -- @wl_surface@ to associate the surface with.- vkDisplay :: Ptr Wl_display- , -- No documentation found for Nested "VkWaylandSurfaceCreateInfoKHR" "surface"- vkSurface :: Ptr Wl_surface+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'WaylandSurfaceCreateFlagsKHR', 'createWaylandSurfaceKHR'+data WaylandSurfaceCreateInfoKHR = WaylandSurfaceCreateInfoKHR+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+ flags :: WaylandSurfaceCreateFlagsKHR+ , -- | 'Graphics.Vulkan.Extensions.WSITypes.Display' /must/ point to a valid+ -- Wayland 'Graphics.Vulkan.Extensions.WSITypes.Wl_display'.+ display :: Ptr Wl_display+ , -- | @surface@ /must/ point to a valid Wayland+ -- 'Graphics.Vulkan.Extensions.WSITypes.Wl_surface'.+ surface :: Ptr Wl_surface }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show WaylandSurfaceCreateInfoKHR -instance Storable VkWaylandSurfaceCreateInfoKHR where+instance ToCStruct WaylandSurfaceCreateInfoKHR where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p WaylandSurfaceCreateInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr WaylandSurfaceCreateFlagsKHR)) (flags)+ poke ((p `plusPtr` 24 :: Ptr (Ptr Wl_display))) (display)+ poke ((p `plusPtr` 32 :: Ptr (Ptr Wl_surface))) (surface)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 24 :: Ptr (Ptr Wl_display))) (zero)+ poke ((p `plusPtr` 32 :: Ptr (Ptr Wl_surface))) (zero)+ f++instance FromCStruct WaylandSurfaceCreateInfoKHR where+ peekCStruct p = do+ flags <- peek @WaylandSurfaceCreateFlagsKHR ((p `plusPtr` 16 :: Ptr WaylandSurfaceCreateFlagsKHR))+ display <- peek @(Ptr Wl_display) ((p `plusPtr` 24 :: Ptr (Ptr Wl_display)))+ surface <- peek @(Ptr Wl_surface) ((p `plusPtr` 32 :: Ptr (Ptr Wl_surface)))+ pure $ WaylandSurfaceCreateInfoKHR+ flags display surface++instance Storable WaylandSurfaceCreateInfoKHR where sizeOf ~_ = 40 alignment ~_ = 8- peek ptr = VkWaylandSurfaceCreateInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkWaylandSurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkWaylandSurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkWaylandSurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 24) (vkDisplay (poked :: VkWaylandSurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 32) (vkSurface (poked :: VkWaylandSurfaceCreateInfoKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero WaylandSurfaceCreateInfoKHR where+ zero = WaylandSurfaceCreateInfoKHR+ zero+ zero+ zero+++-- No documentation found for TopLevel "VkWaylandSurfaceCreateFlagsKHR"+newtype WaylandSurfaceCreateFlagsKHR = WaylandSurfaceCreateFlagsKHR Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show WaylandSurfaceCreateFlagsKHR where+ showsPrec p = \case+ WaylandSurfaceCreateFlagsKHR x -> showParen (p >= 11) (showString "WaylandSurfaceCreateFlagsKHR 0x" . showHex x)++instance Read WaylandSurfaceCreateFlagsKHR where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "WaylandSurfaceCreateFlagsKHR")+ v <- step readPrec+ pure (WaylandSurfaceCreateFlagsKHR v)))+++type KHR_WAYLAND_SURFACE_SPEC_VERSION = 6++-- No documentation found for TopLevel "VK_KHR_WAYLAND_SURFACE_SPEC_VERSION"+pattern KHR_WAYLAND_SURFACE_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_WAYLAND_SURFACE_SPEC_VERSION = 6+++type KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface"++-- No documentation found for TopLevel "VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME"+pattern KHR_WAYLAND_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_wayland_surface.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_wayland_surface (WaylandSurfaceCreateInfoKHR) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data WaylandSurfaceCreateInfoKHR++instance ToCStruct WaylandSurfaceCreateInfoKHR+instance Show WaylandSurfaceCreateInfoKHR++instance FromCStruct WaylandSurfaceCreateInfoKHR+
src/Graphics/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs view
@@ -1,50 +1,42 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_KHR_win32_keyed_mutex- ( pattern VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR- , pattern VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION- , pattern VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME- , VkWin32KeyedMutexAcquireReleaseInfoKHR(..)- ) where--import Data.String- ( IsString- )-import Data.Word- ( Word32- , Word64- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )---import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- )-import Graphics.Vulkan.Core10.Memory- ( VkDeviceMemory- )-+module Graphics.Vulkan.Extensions.VK_KHR_win32_keyed_mutex ( Win32KeyedMutexAcquireReleaseInfoKHR(..)+ , KHR_WIN32_KEYED_MUTEX_SPEC_VERSION+ , pattern KHR_WIN32_KEYED_MUTEX_SPEC_VERSION+ , KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME+ , pattern KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME+ ) where --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = VkStructureType 1000075000--- No documentation found for TopLevel "VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION"-pattern VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION :: Integral a => a-pattern VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME"-pattern VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_KHR_win32_keyed_mutex"+import Control.Monad (unless)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import GHC.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Word (Word64)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.Handles (DeviceMemory)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR)) -- | VkWin32KeyedMutexAcquireReleaseInfoKHR - Use the Windows keyed mutex -- mechanism to synchronize work --@@ -52,17 +44,20 @@ -- -- - Each member of @pAcquireSyncs@ and @pReleaseSyncs@ /must/ be a -- device memory object imported by setting--- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.VkImportMemoryWin32HandleInfoKHR'::@handleType@--- to @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT@ or--- @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT@.+-- 'Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32.ImportMemoryWin32HandleInfoKHR'::@handleType@+-- to+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT'+-- or+-- 'Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits.EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT'. -- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR' -- -- - If @acquireCount@ is not @0@, @pAcquireSyncs@ /must/ be a valid--- pointer to an array of @acquireCount@ valid @VkDeviceMemory@ handles+-- pointer to an array of @acquireCount@ valid+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' handles -- -- - If @acquireCount@ is not @0@, @pAcquireKeys@ /must/ be a valid -- pointer to an array of @acquireCount@ @uint64_t@ values@@ -71,69 +66,136 @@ -- pointer to an array of @acquireCount@ @uint32_t@ values -- -- - If @releaseCount@ is not @0@, @pReleaseSyncs@ /must/ be a valid--- pointer to an array of @releaseCount@ valid @VkDeviceMemory@ handles+-- pointer to an array of @releaseCount@ valid+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' handles -- -- - If @releaseCount@ is not @0@, @pReleaseKeys@ /must/ be a valid -- pointer to an array of @releaseCount@ @uint64_t@ values -- -- - Both of the elements of @pAcquireSyncs@, and the elements of--- @pReleaseSyncs@ that are valid handles /must/ have been created,--- allocated, or retrieved from the same @VkDevice@+-- @pReleaseSyncs@ that are valid handles of non-ignored parameters+-- /must/ have been created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device' -- -- = See Also ----- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkWin32KeyedMutexAcquireReleaseInfoKHR = VkWin32KeyedMutexAcquireReleaseInfoKHR- { -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoKHR" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoKHR" "pNext"- vkPNext :: Ptr ()- , -- | @acquireCount@ is the number of entries in the @pAcquireSyncs@,- -- @pAcquireKeys@, and @pAcquireTimeoutMilliseconds@ arrays.- vkAcquireCount :: Word32- , -- | @pAcquireSyncs@ is a pointer to an array of- -- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory' objects which were- -- imported from Direct3D 11 resources.- vkPAcquireSyncs :: Ptr VkDeviceMemory+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data Win32KeyedMutexAcquireReleaseInfoKHR = Win32KeyedMutexAcquireReleaseInfoKHR+ { -- | @pAcquireSyncs@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' objects which were+ -- imported from Direct3D 11 resources.+ acquireSyncs :: Vector DeviceMemory , -- | @pAcquireKeys@ is a pointer to an array of mutex key values to wait for- -- prior to beginning the submitted work. Entries refer to the keyed mutex- -- associated with the corresponding entries in @pAcquireSyncs@.- vkPAcquireKeys :: Ptr Word64+ -- prior to beginning the submitted work. Entries refer to the keyed mutex+ -- associated with the corresponding entries in @pAcquireSyncs@.+ acquireKeys :: Vector Word64 , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoKHR" "pAcquireTimeouts"- vkPAcquireTimeouts :: Ptr Word32- , -- | @releaseCount@ is the number of entries in the @pReleaseSyncs@ and- -- @pReleaseKeys@ arrays.- vkReleaseCount :: Word32+ acquireTimeouts :: Vector Word32 , -- | @pReleaseSyncs@ is a pointer to an array of- -- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory' objects which were- -- imported from Direct3D 11 resources.- vkPReleaseSyncs :: Ptr VkDeviceMemory+ -- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' objects which were+ -- imported from Direct3D 11 resources.+ releaseSyncs :: Vector DeviceMemory , -- | @pReleaseKeys@ is a pointer to an array of mutex key values to set when- -- the submitted work has completed. Entries refer to the keyed mutex- -- associated with the corresponding entries in @pReleaseSyncs@.- vkPReleaseKeys :: Ptr Word64+ -- the submitted work has completed. Entries refer to the keyed mutex+ -- associated with the corresponding entries in @pReleaseSyncs@.+ releaseKeys :: Vector Word64 }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show Win32KeyedMutexAcquireReleaseInfoKHR -instance Storable VkWin32KeyedMutexAcquireReleaseInfoKHR where- sizeOf ~_ = 72- alignment ~_ = 8- peek ptr = VkWin32KeyedMutexAcquireReleaseInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 64)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkWin32KeyedMutexAcquireReleaseInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkWin32KeyedMutexAcquireReleaseInfoKHR))- *> poke (ptr `plusPtr` 16) (vkAcquireCount (poked :: VkWin32KeyedMutexAcquireReleaseInfoKHR))- *> poke (ptr `plusPtr` 24) (vkPAcquireSyncs (poked :: VkWin32KeyedMutexAcquireReleaseInfoKHR))- *> poke (ptr `plusPtr` 32) (vkPAcquireKeys (poked :: VkWin32KeyedMutexAcquireReleaseInfoKHR))- *> poke (ptr `plusPtr` 40) (vkPAcquireTimeouts (poked :: VkWin32KeyedMutexAcquireReleaseInfoKHR))- *> poke (ptr `plusPtr` 48) (vkReleaseCount (poked :: VkWin32KeyedMutexAcquireReleaseInfoKHR))- *> poke (ptr `plusPtr` 56) (vkPReleaseSyncs (poked :: VkWin32KeyedMutexAcquireReleaseInfoKHR))- *> poke (ptr `plusPtr` 64) (vkPReleaseKeys (poked :: VkWin32KeyedMutexAcquireReleaseInfoKHR))+instance ToCStruct Win32KeyedMutexAcquireReleaseInfoKHR where+ withCStruct x f = allocaBytesAligned 72 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p Win32KeyedMutexAcquireReleaseInfoKHR{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ let pAcquireSyncsLength = Data.Vector.length $ (acquireSyncs)+ let pAcquireKeysLength = Data.Vector.length $ (acquireKeys)+ lift $ unless (pAcquireKeysLength == pAcquireSyncsLength) $+ throwIO $ IOError Nothing InvalidArgument "" "pAcquireKeys and pAcquireSyncs must have the same length" Nothing Nothing+ let pAcquireTimeoutsLength = Data.Vector.length $ (acquireTimeouts)+ lift $ unless (pAcquireTimeoutsLength == pAcquireSyncsLength) $+ throwIO $ IOError Nothing InvalidArgument "" "pAcquireTimeouts and pAcquireSyncs must have the same length" Nothing Nothing+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral pAcquireSyncsLength :: Word32))+ pPAcquireSyncs' <- ContT $ allocaBytesAligned @DeviceMemory ((Data.Vector.length (acquireSyncs)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPAcquireSyncs' `plusPtr` (8 * (i)) :: Ptr DeviceMemory) (e)) (acquireSyncs)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DeviceMemory))) (pPAcquireSyncs')+ pPAcquireKeys' <- ContT $ allocaBytesAligned @Word64 ((Data.Vector.length (acquireKeys)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPAcquireKeys' `plusPtr` (8 * (i)) :: Ptr Word64) (e)) (acquireKeys)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Word64))) (pPAcquireKeys')+ pPAcquireTimeouts' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (acquireTimeouts)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPAcquireTimeouts' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (acquireTimeouts)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Word32))) (pPAcquireTimeouts')+ let pReleaseSyncsLength = Data.Vector.length $ (releaseSyncs)+ let pReleaseKeysLength = Data.Vector.length $ (releaseKeys)+ lift $ unless (pReleaseKeysLength == pReleaseSyncsLength) $+ throwIO $ IOError Nothing InvalidArgument "" "pReleaseKeys and pReleaseSyncs must have the same length" Nothing Nothing+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral pReleaseSyncsLength :: Word32))+ pPReleaseSyncs' <- ContT $ allocaBytesAligned @DeviceMemory ((Data.Vector.length (releaseSyncs)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPReleaseSyncs' `plusPtr` (8 * (i)) :: Ptr DeviceMemory) (e)) (releaseSyncs)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr DeviceMemory))) (pPReleaseSyncs')+ pPReleaseKeys' <- ContT $ allocaBytesAligned @Word64 ((Data.Vector.length (releaseKeys)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPReleaseKeys' `plusPtr` (8 * (i)) :: Ptr Word64) (e)) (releaseKeys)+ lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr Word64))) (pPReleaseKeys')+ lift $ f+ cStructSize = 72+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPAcquireSyncs' <- ContT $ allocaBytesAligned @DeviceMemory ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPAcquireSyncs' `plusPtr` (8 * (i)) :: Ptr DeviceMemory) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DeviceMemory))) (pPAcquireSyncs')+ pPAcquireKeys' <- ContT $ allocaBytesAligned @Word64 ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPAcquireKeys' `plusPtr` (8 * (i)) :: Ptr Word64) (e)) (mempty)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Word64))) (pPAcquireKeys')+ pPAcquireTimeouts' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPAcquireTimeouts' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Word32))) (pPAcquireTimeouts')+ pPReleaseSyncs' <- ContT $ allocaBytesAligned @DeviceMemory ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPReleaseSyncs' `plusPtr` (8 * (i)) :: Ptr DeviceMemory) (e)) (mempty)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr DeviceMemory))) (pPReleaseSyncs')+ pPReleaseKeys' <- ContT $ allocaBytesAligned @Word64 ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPReleaseKeys' `plusPtr` (8 * (i)) :: Ptr Word64) (e)) (mempty)+ lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr Word64))) (pPReleaseKeys')+ lift $ f++instance FromCStruct Win32KeyedMutexAcquireReleaseInfoKHR where+ peekCStruct p = do+ acquireCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pAcquireSyncs <- peek @(Ptr DeviceMemory) ((p `plusPtr` 24 :: Ptr (Ptr DeviceMemory)))+ pAcquireSyncs' <- generateM (fromIntegral acquireCount) (\i -> peek @DeviceMemory ((pAcquireSyncs `advancePtrBytes` (8 * (i)) :: Ptr DeviceMemory)))+ pAcquireKeys <- peek @(Ptr Word64) ((p `plusPtr` 32 :: Ptr (Ptr Word64)))+ pAcquireKeys' <- generateM (fromIntegral acquireCount) (\i -> peek @Word64 ((pAcquireKeys `advancePtrBytes` (8 * (i)) :: Ptr Word64)))+ pAcquireTimeouts <- peek @(Ptr Word32) ((p `plusPtr` 40 :: Ptr (Ptr Word32)))+ pAcquireTimeouts' <- generateM (fromIntegral acquireCount) (\i -> peek @Word32 ((pAcquireTimeouts `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ releaseCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+ pReleaseSyncs <- peek @(Ptr DeviceMemory) ((p `plusPtr` 56 :: Ptr (Ptr DeviceMemory)))+ pReleaseSyncs' <- generateM (fromIntegral releaseCount) (\i -> peek @DeviceMemory ((pReleaseSyncs `advancePtrBytes` (8 * (i)) :: Ptr DeviceMemory)))+ pReleaseKeys <- peek @(Ptr Word64) ((p `plusPtr` 64 :: Ptr (Ptr Word64)))+ pReleaseKeys' <- generateM (fromIntegral releaseCount) (\i -> peek @Word64 ((pReleaseKeys `advancePtrBytes` (8 * (i)) :: Ptr Word64)))+ pure $ Win32KeyedMutexAcquireReleaseInfoKHR+ pAcquireSyncs' pAcquireKeys' pAcquireTimeouts' pReleaseSyncs' pReleaseKeys'++instance Zero Win32KeyedMutexAcquireReleaseInfoKHR where+ zero = Win32KeyedMutexAcquireReleaseInfoKHR+ mempty+ mempty+ mempty+ mempty+ mempty+++type KHR_WIN32_KEYED_MUTEX_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION"+pattern KHR_WIN32_KEYED_MUTEX_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_WIN32_KEYED_MUTEX_SPEC_VERSION = 1+++type KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_KHR_win32_keyed_mutex"++-- No documentation found for TopLevel "VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME"+pattern KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_KHR_win32_keyed_mutex"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_win32_keyed_mutex (Win32KeyedMutexAcquireReleaseInfoKHR) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data Win32KeyedMutexAcquireReleaseInfoKHR++instance ToCStruct Win32KeyedMutexAcquireReleaseInfoKHR+instance Show Win32KeyedMutexAcquireReleaseInfoKHR++instance FromCStruct Win32KeyedMutexAcquireReleaseInfoKHR+
src/Graphics/Vulkan/Extensions/VK_KHR_win32_surface.hs view
@@ -1,172 +1,174 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_KHR_win32_surface- ( HINSTANCE- , HWND- , VkWin32SurfaceCreateFlagsKHR(..)- , pattern VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR- , pattern VK_KHR_WIN32_SURFACE_SPEC_VERSION- , pattern VK_KHR_WIN32_SURFACE_EXTENSION_NAME- , vkCreateWin32SurfaceKHR- , vkGetPhysicalDeviceWin32PresentationSupportKHR- , VkWin32SurfaceCreateInfoKHR(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkInstance- , VkPhysicalDevice- )-import Graphics.Vulkan.Extensions.VK_KHR_surface- ( VkSurfaceKHR- )----- No documentation found for TopLevel "HINSTANCE"-type HINSTANCE = Ptr ()--- No documentation found for TopLevel "HWND"-type HWND = Ptr ()--- ** VkWin32SurfaceCreateFlagsKHR---- No documentation found for TopLevel "VkWin32SurfaceCreateFlagsKHR"-newtype VkWin32SurfaceCreateFlagsKHR = VkWin32SurfaceCreateFlagsKHR VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkWin32SurfaceCreateFlagsKHR where- - showsPrec p (VkWin32SurfaceCreateFlagsKHR x) = showParen (p >= 11) (showString "VkWin32SurfaceCreateFlagsKHR " . showsPrec 11 x)--instance Read VkWin32SurfaceCreateFlagsKHR where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkWin32SurfaceCreateFlagsKHR")- v <- step readPrec- pure (VkWin32SurfaceCreateFlagsKHR v)- )- )+module Graphics.Vulkan.Extensions.VK_KHR_win32_surface ( createWin32SurfaceKHR+ , getPhysicalDeviceWin32PresentationSupportKHR+ , Win32SurfaceCreateInfoKHR(..)+ , Win32SurfaceCreateFlagsKHR(..)+ , KHR_WIN32_SURFACE_SPEC_VERSION+ , pattern KHR_WIN32_SURFACE_SPEC_VERSION+ , KHR_WIN32_SURFACE_EXTENSION_NAME+ , pattern KHR_WIN32_SURFACE_EXTENSION_NAME+ , SurfaceKHR(..)+ , HINSTANCE+ , HWND+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Bits (Bits)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.BaseType (Bool32(..))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Extensions.WSITypes (HINSTANCE)+import Graphics.Vulkan.Extensions.WSITypes (HWND)+import Graphics.Vulkan.Core10.Handles (Instance)+import Graphics.Vulkan.Core10.Handles (Instance(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkCreateWin32SurfaceKHR))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceWin32PresentationSupportKHR))+import Graphics.Vulkan.Core10.Handles (Instance_T)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.WSITypes (HINSTANCE)+import Graphics.Vulkan.Extensions.WSITypes (HWND)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateWin32SurfaceKHR+ :: FunPtr (Ptr Instance_T -> Ptr Win32SurfaceCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result) -> Ptr Instance_T -> Ptr Win32SurfaceCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = VkStructureType 1000009000--- No documentation found for TopLevel "VK_KHR_WIN32_SURFACE_SPEC_VERSION"-pattern VK_KHR_WIN32_SURFACE_SPEC_VERSION :: Integral a => a-pattern VK_KHR_WIN32_SURFACE_SPEC_VERSION = 6--- No documentation found for TopLevel "VK_KHR_WIN32_SURFACE_EXTENSION_NAME"-pattern VK_KHR_WIN32_SURFACE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_WIN32_SURFACE_EXTENSION_NAME = "VK_KHR_win32_surface" -- | vkCreateWin32SurfaceKHR - Create a--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR' object for an--- Win32 native window+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' object for an Win32+-- native window -- -- = Parameters ----- - @instance@ is the instance to associate the surface with.+-- - 'Graphics.Vulkan.Core10.Handles.Instance' is the instance to+-- associate the surface with. ----- - @pCreateInfo@ is a pointer to an instance of the--- @VkWin32SurfaceCreateInfoKHR@ structure containing parameters--- affecting the creation of the surface object.+-- - @pCreateInfo@ is a pointer to a 'Win32SurfaceCreateInfoKHR'+-- structure containing parameters affecting the creation of the+-- surface object. -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- surface object when there is no more specific allocator available--- (see [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)).+-- (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>). ----- - @pSurface@ points to a @VkSurfaceKHR@ handle in which the created--- surface object is returned.+-- - @pSurface@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle in which the+-- created surface object is returned. -- -- == Valid Usage (Implicit) ----- - @instance@ /must/ be a valid @VkInstance@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle -- -- - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkWin32SurfaceCreateInfoKHR@ structure+-- 'Win32SurfaceCreateInfoKHR' structure -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - @pSurface@ /must/ be a valid pointer to a @VkSurfaceKHR@ handle+-- - @pSurface@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR',--- 'VkWin32SurfaceCreateInfoKHR'+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Instance',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR',+-- 'Win32SurfaceCreateInfoKHR'+createWin32SurfaceKHR :: Instance -> Win32SurfaceCreateInfoKHR -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (SurfaceKHR)+createWin32SurfaceKHR instance' createInfo allocator = evalContT $ do+ let vkCreateWin32SurfaceKHR' = mkVkCreateWin32SurfaceKHR (pVkCreateWin32SurfaceKHR (instanceCmds (instance' :: Instance)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPSurface <- ContT $ bracket (callocBytes @SurfaceKHR 8) free+ r <- lift $ vkCreateWin32SurfaceKHR' (instanceHandle (instance')) pCreateInfo pAllocator (pPSurface)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSurface <- lift $ peek @SurfaceKHR pPSurface+ pure $ (pSurface)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkCreateWin32SurfaceKHR" vkCreateWin32SurfaceKHR :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkWin32SurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult+ "dynamic" mkVkGetPhysicalDeviceWin32PresentationSupportKHR+ :: FunPtr (Ptr PhysicalDevice_T -> Word32 -> IO Bool32) -> Ptr PhysicalDevice_T -> Word32 -> IO Bool32+ -- | vkGetPhysicalDeviceWin32PresentationSupportKHR - query queue family -- support for presentation on a Win32 display -- -- = Parameters ----- - @physicalDevice@ is the physical device.+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device. -- -- - @queueFamilyIndex@ is the queue family index. --@@ -175,70 +177,117 @@ -- This platform-specific function /can/ be called prior to creating a -- surface. ----- == Valid Usage------ - @queueFamilyIndex@ /must/ be less than @pQueueFamilyPropertyCount@--- returned by @vkGetPhysicalDeviceQueueFamilyProperties@ for the given--- @physicalDevice@--- -- == Valid Usage (Implicit) ----- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle--- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceWin32PresentationSupportKHR" vkGetPhysicalDeviceWin32PresentationSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> IO VkBool32+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+getPhysicalDeviceWin32PresentationSupportKHR :: PhysicalDevice -> ("queueFamilyIndex" ::: Word32) -> IO (Bool)+getPhysicalDeviceWin32PresentationSupportKHR physicalDevice queueFamilyIndex = do+ let vkGetPhysicalDeviceWin32PresentationSupportKHR' = mkVkGetPhysicalDeviceWin32PresentationSupportKHR (pVkGetPhysicalDeviceWin32PresentationSupportKHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ r <- vkGetPhysicalDeviceWin32PresentationSupportKHR' (physicalDeviceHandle (physicalDevice)) (queueFamilyIndex)+ pure $ ((bool32ToBool r))++ -- | VkWin32SurfaceCreateInfoKHR - Structure specifying parameters of a newly -- created Win32 surface object ----- == Valid Usage------ - @hinstance@ /must/ be a valid Win32 @HINSTANCE@.------ - @hwnd@ /must/ be a valid Win32 @HWND@.--- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@--- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'VkWin32SurfaceCreateFlagsKHR', 'vkCreateWin32SurfaceKHR'-data VkWin32SurfaceCreateInfoKHR = VkWin32SurfaceCreateInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkWin32SurfaceCreateFlagsKHR- , -- | @hinstance@ and @hwnd@ are the Win32 @HINSTANCE@ and @HWND@ for the- -- window to associate the surface with.- vkHinstance :: HINSTANCE- , -- No documentation found for Nested "VkWin32SurfaceCreateInfoKHR" "hwnd"- vkHwnd :: HWND+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Win32SurfaceCreateFlagsKHR', 'createWin32SurfaceKHR'+data Win32SurfaceCreateInfoKHR = Win32SurfaceCreateInfoKHR+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+ flags :: Win32SurfaceCreateFlagsKHR+ , -- | @hinstance@ /must/ be a valid Win32+ -- 'Graphics.Vulkan.Extensions.WSITypes.HINSTANCE'.+ hinstance :: HINSTANCE+ , -- | @hwnd@ /must/ be a valid Win32+ -- 'Graphics.Vulkan.Extensions.WSITypes.HWND'.+ hwnd :: HWND }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show Win32SurfaceCreateInfoKHR -instance Storable VkWin32SurfaceCreateInfoKHR where+instance ToCStruct Win32SurfaceCreateInfoKHR where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p Win32SurfaceCreateInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Win32SurfaceCreateFlagsKHR)) (flags)+ poke ((p `plusPtr` 24 :: Ptr HINSTANCE)) (hinstance)+ poke ((p `plusPtr` 32 :: Ptr HWND)) (hwnd)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 24 :: Ptr HINSTANCE)) (zero)+ poke ((p `plusPtr` 32 :: Ptr HWND)) (zero)+ f++instance FromCStruct Win32SurfaceCreateInfoKHR where+ peekCStruct p = do+ flags <- peek @Win32SurfaceCreateFlagsKHR ((p `plusPtr` 16 :: Ptr Win32SurfaceCreateFlagsKHR))+ hinstance <- peek @HINSTANCE ((p `plusPtr` 24 :: Ptr HINSTANCE))+ hwnd <- peek @HWND ((p `plusPtr` 32 :: Ptr HWND))+ pure $ Win32SurfaceCreateInfoKHR+ flags hinstance hwnd++instance Storable Win32SurfaceCreateInfoKHR where sizeOf ~_ = 40 alignment ~_ = 8- peek ptr = VkWin32SurfaceCreateInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkWin32SurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkWin32SurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkWin32SurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 24) (vkHinstance (poked :: VkWin32SurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 32) (vkHwnd (poked :: VkWin32SurfaceCreateInfoKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero Win32SurfaceCreateInfoKHR where+ zero = Win32SurfaceCreateInfoKHR+ zero+ zero+ zero+++-- | VkWin32SurfaceCreateFlagsKHR - Reserved for future use+--+-- = Description+--+-- 'Win32SurfaceCreateFlagsKHR' is a bitmask type for setting a mask, but+-- is currently reserved for future use.+--+-- = See Also+--+-- 'Win32SurfaceCreateInfoKHR'+newtype Win32SurfaceCreateFlagsKHR = Win32SurfaceCreateFlagsKHR Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show Win32SurfaceCreateFlagsKHR where+ showsPrec p = \case+ Win32SurfaceCreateFlagsKHR x -> showParen (p >= 11) (showString "Win32SurfaceCreateFlagsKHR 0x" . showHex x)++instance Read Win32SurfaceCreateFlagsKHR where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "Win32SurfaceCreateFlagsKHR")+ v <- step readPrec+ pure (Win32SurfaceCreateFlagsKHR v)))+++type KHR_WIN32_SURFACE_SPEC_VERSION = 6++-- No documentation found for TopLevel "VK_KHR_WIN32_SURFACE_SPEC_VERSION"+pattern KHR_WIN32_SURFACE_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_WIN32_SURFACE_SPEC_VERSION = 6+++type KHR_WIN32_SURFACE_EXTENSION_NAME = "VK_KHR_win32_surface"++-- No documentation found for TopLevel "VK_KHR_WIN32_SURFACE_EXTENSION_NAME"+pattern KHR_WIN32_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_WIN32_SURFACE_EXTENSION_NAME = "VK_KHR_win32_surface"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_win32_surface.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_win32_surface (Win32SurfaceCreateInfoKHR) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data Win32SurfaceCreateInfoKHR++instance ToCStruct Win32SurfaceCreateInfoKHR+instance Show Win32SurfaceCreateInfoKHR++instance FromCStruct Win32SurfaceCreateInfoKHR+
src/Graphics/Vulkan/Extensions/VK_KHR_xcb_surface.hs view
@@ -1,252 +1,291 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_KHR_xcb_surface- ( Xcb_connection_t- , Xcb_visualid_t- , Xcb_window_t- , VkXcbSurfaceCreateFlagsKHR(..)- , pattern VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR- , pattern VK_KHR_XCB_SURFACE_SPEC_VERSION- , pattern VK_KHR_XCB_SURFACE_EXTENSION_NAME- , vkCreateXcbSurfaceKHR- , vkGetPhysicalDeviceXcbPresentationSupportKHR- , VkXcbSurfaceCreateInfoKHR(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkInstance- , VkPhysicalDevice- )-import Graphics.Vulkan.Extensions.VK_KHR_surface- ( VkSurfaceKHR- )----- | Opaque data-data Xcb_connection_t--- No documentation found for TopLevel "Xcb_visualid_t"-type Xcb_visualid_t = Word32--- No documentation found for TopLevel "Xcb_window_t"-type Xcb_window_t = Word32--- ** VkXcbSurfaceCreateFlagsKHR---- No documentation found for TopLevel "VkXcbSurfaceCreateFlagsKHR"-newtype VkXcbSurfaceCreateFlagsKHR = VkXcbSurfaceCreateFlagsKHR VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkXcbSurfaceCreateFlagsKHR where- - showsPrec p (VkXcbSurfaceCreateFlagsKHR x) = showParen (p >= 11) (showString "VkXcbSurfaceCreateFlagsKHR " . showsPrec 11 x)--instance Read VkXcbSurfaceCreateFlagsKHR where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkXcbSurfaceCreateFlagsKHR")- v <- step readPrec- pure (VkXcbSurfaceCreateFlagsKHR v)- )- )+module Graphics.Vulkan.Extensions.VK_KHR_xcb_surface ( createXcbSurfaceKHR+ , getPhysicalDeviceXcbPresentationSupportKHR+ , XcbSurfaceCreateInfoKHR(..)+ , XcbSurfaceCreateFlagsKHR(..)+ , KHR_XCB_SURFACE_SPEC_VERSION+ , pattern KHR_XCB_SURFACE_SPEC_VERSION+ , KHR_XCB_SURFACE_EXTENSION_NAME+ , pattern KHR_XCB_SURFACE_EXTENSION_NAME+ , SurfaceKHR(..)+ , Xcb_visualid_t+ , Xcb_window_t+ , Xcb_connection_t+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Bits (Bits)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.BaseType (Bool32(..))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Instance)+import Graphics.Vulkan.Core10.Handles (Instance(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkCreateXcbSurfaceKHR))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceXcbPresentationSupportKHR))+import Graphics.Vulkan.Core10.Handles (Instance_T)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Extensions.WSITypes (Xcb_connection_t)+import Graphics.Vulkan.Extensions.WSITypes (Xcb_visualid_t)+import Graphics.Vulkan.Extensions.WSITypes (Xcb_window_t)+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.Extensions.WSITypes (Xcb_connection_t)+import Graphics.Vulkan.Extensions.WSITypes (Xcb_visualid_t)+import Graphics.Vulkan.Extensions.WSITypes (Xcb_window_t)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateXcbSurfaceKHR+ :: FunPtr (Ptr Instance_T -> Ptr XcbSurfaceCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result) -> Ptr Instance_T -> Ptr XcbSurfaceCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = VkStructureType 1000005000--- No documentation found for TopLevel "VK_KHR_XCB_SURFACE_SPEC_VERSION"-pattern VK_KHR_XCB_SURFACE_SPEC_VERSION :: Integral a => a-pattern VK_KHR_XCB_SURFACE_SPEC_VERSION = 6--- No documentation found for TopLevel "VK_KHR_XCB_SURFACE_EXTENSION_NAME"-pattern VK_KHR_XCB_SURFACE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" -- | vkCreateXcbSurfaceKHR - Create a--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR' object for a--- X11 window, using the XCB client-side library+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' object for a X11 window,+-- using the XCB client-side library -- -- = Parameters ----- - @instance@ is the instance to associate the surface with.+-- - 'Graphics.Vulkan.Core10.Handles.Instance' is the instance to+-- associate the surface with. ----- - @pCreateInfo@ is a pointer to an instance of the--- @VkXcbSurfaceCreateInfoKHR@ structure containing parameters--- affecting the creation of the surface object.+-- - @pCreateInfo@ is a pointer to a 'XcbSurfaceCreateInfoKHR' structure+-- containing parameters affecting the creation of the surface object. -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- surface object when there is no more specific allocator available--- (see [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)).+-- (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>). ----- - @pSurface@ points to a @VkSurfaceKHR@ handle in which the created--- surface object is returned.+-- - @pSurface@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle in which the+-- created surface object is returned. -- -- == Valid Usage (Implicit) ----- - @instance@ /must/ be a valid @VkInstance@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle -- -- - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkXcbSurfaceCreateInfoKHR@ structure+-- 'XcbSurfaceCreateInfoKHR' structure -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - @pSurface@ /must/ be a valid pointer to a @VkSurfaceKHR@ handle+-- - @pSurface@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR',--- 'VkXcbSurfaceCreateInfoKHR'+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Instance',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR',+-- 'XcbSurfaceCreateInfoKHR'+createXcbSurfaceKHR :: Instance -> XcbSurfaceCreateInfoKHR -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (SurfaceKHR)+createXcbSurfaceKHR instance' createInfo allocator = evalContT $ do+ let vkCreateXcbSurfaceKHR' = mkVkCreateXcbSurfaceKHR (pVkCreateXcbSurfaceKHR (instanceCmds (instance' :: Instance)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPSurface <- ContT $ bracket (callocBytes @SurfaceKHR 8) free+ r <- lift $ vkCreateXcbSurfaceKHR' (instanceHandle (instance')) pCreateInfo pAllocator (pPSurface)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSurface <- lift $ peek @SurfaceKHR pPSurface+ pure $ (pSurface)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkCreateXcbSurfaceKHR" vkCreateXcbSurfaceKHR :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXcbSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult+ "dynamic" mkVkGetPhysicalDeviceXcbPresentationSupportKHR+ :: FunPtr (Ptr PhysicalDevice_T -> Word32 -> Ptr Xcb_connection_t -> Xcb_visualid_t -> IO Bool32) -> Ptr PhysicalDevice_T -> Word32 -> Ptr Xcb_connection_t -> Xcb_visualid_t -> IO Bool32+ -- | vkGetPhysicalDeviceXcbPresentationSupportKHR - Query physical device for -- presentation to X11 server using XCB -- -- = Parameters ----- - @physicalDevice@ is the physical device.+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device. -- -- - @queueFamilyIndex@ is the queue family index. ----- - @connection@ is a pointer to an @xcb_connection_t@ to the X server.--- @visual_id@ is an X11 visual (@xcb_visualid_t@).+-- - @connection@ is a pointer to an+-- 'Graphics.Vulkan.Extensions.WSITypes.Xcb_connection_t' to the X+-- server. @visual_id@ is an X11 visual+-- ('Graphics.Vulkan.Extensions.WSITypes.Xcb_visualid_t'). -- -- = Description -- -- This platform-specific function /can/ be called prior to creating a -- surface. ----- == Valid Usage------ - @queueFamilyIndex@ /must/ be less than @pQueueFamilyPropertyCount@--- returned by @vkGetPhysicalDeviceQueueFamilyProperties@ for the given--- @physicalDevice@--- -- == Valid Usage (Implicit) ----- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @connection@ /must/ be a valid pointer to a @xcb_connection_t@ value--- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceXcbPresentationSupportKHR" vkGetPhysicalDeviceXcbPresentationSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("connection" ::: Ptr Xcb_connection_t) -> ("visual_id" ::: Xcb_visualid_t) -> IO VkBool32+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+getPhysicalDeviceXcbPresentationSupportKHR :: PhysicalDevice -> ("queueFamilyIndex" ::: Word32) -> Ptr Xcb_connection_t -> ("visual_id" ::: Xcb_visualid_t) -> IO (Bool)+getPhysicalDeviceXcbPresentationSupportKHR physicalDevice queueFamilyIndex connection visual_id = do+ let vkGetPhysicalDeviceXcbPresentationSupportKHR' = mkVkGetPhysicalDeviceXcbPresentationSupportKHR (pVkGetPhysicalDeviceXcbPresentationSupportKHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ r <- vkGetPhysicalDeviceXcbPresentationSupportKHR' (physicalDeviceHandle (physicalDevice)) (queueFamilyIndex) (connection) (visual_id)+ pure $ ((bool32ToBool r))++ -- | VkXcbSurfaceCreateInfoKHR - Structure specifying parameters of a newly -- created Xcb surface object ----- == Valid Usage------ - @connection@ /must/ point to a valid X11 @xcb_connection_t@.------ - @window@ /must/ be a valid X11 @xcb_window_t@.--- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@--- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'VkXcbSurfaceCreateFlagsKHR', 'vkCreateXcbSurfaceKHR'-data VkXcbSurfaceCreateInfoKHR = VkXcbSurfaceCreateInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkXcbSurfaceCreateFlagsKHR- , -- | @connection@ is a pointer to an @xcb_connection_t@ to the X server.- vkConnection :: Ptr Xcb_connection_t- , -- | @window@ is the @xcb_window_t@ for the X11 window to associate the- -- surface with.- vkWindow :: Xcb_window_t+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'XcbSurfaceCreateFlagsKHR', 'createXcbSurfaceKHR'+data XcbSurfaceCreateInfoKHR = XcbSurfaceCreateInfoKHR+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+ flags :: XcbSurfaceCreateFlagsKHR+ , -- | @connection@ /must/ point to a valid X11+ -- 'Graphics.Vulkan.Extensions.WSITypes.Xcb_connection_t'.+ connection :: Ptr Xcb_connection_t+ , -- | 'Graphics.Vulkan.Extensions.WSITypes.Window' /must/ be a valid X11+ -- 'Graphics.Vulkan.Extensions.WSITypes.Xcb_window_t'.+ window :: Xcb_window_t }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show XcbSurfaceCreateInfoKHR -instance Storable VkXcbSurfaceCreateInfoKHR where+instance ToCStruct XcbSurfaceCreateInfoKHR where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p XcbSurfaceCreateInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr XcbSurfaceCreateFlagsKHR)) (flags)+ poke ((p `plusPtr` 24 :: Ptr (Ptr Xcb_connection_t))) (connection)+ poke ((p `plusPtr` 32 :: Ptr Xcb_window_t)) (window)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 24 :: Ptr (Ptr Xcb_connection_t))) (zero)+ poke ((p `plusPtr` 32 :: Ptr Xcb_window_t)) (zero)+ f++instance FromCStruct XcbSurfaceCreateInfoKHR where+ peekCStruct p = do+ flags <- peek @XcbSurfaceCreateFlagsKHR ((p `plusPtr` 16 :: Ptr XcbSurfaceCreateFlagsKHR))+ connection <- peek @(Ptr Xcb_connection_t) ((p `plusPtr` 24 :: Ptr (Ptr Xcb_connection_t)))+ window <- peek @Xcb_window_t ((p `plusPtr` 32 :: Ptr Xcb_window_t))+ pure $ XcbSurfaceCreateInfoKHR+ flags connection window++instance Storable XcbSurfaceCreateInfoKHR where sizeOf ~_ = 40 alignment ~_ = 8- peek ptr = VkXcbSurfaceCreateInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkXcbSurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkXcbSurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkXcbSurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 24) (vkConnection (poked :: VkXcbSurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 32) (vkWindow (poked :: VkXcbSurfaceCreateInfoKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero XcbSurfaceCreateInfoKHR where+ zero = XcbSurfaceCreateInfoKHR+ zero+ zero+ zero+++-- No documentation found for TopLevel "VkXcbSurfaceCreateFlagsKHR"+newtype XcbSurfaceCreateFlagsKHR = XcbSurfaceCreateFlagsKHR Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show XcbSurfaceCreateFlagsKHR where+ showsPrec p = \case+ XcbSurfaceCreateFlagsKHR x -> showParen (p >= 11) (showString "XcbSurfaceCreateFlagsKHR 0x" . showHex x)++instance Read XcbSurfaceCreateFlagsKHR where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "XcbSurfaceCreateFlagsKHR")+ v <- step readPrec+ pure (XcbSurfaceCreateFlagsKHR v)))+++type KHR_XCB_SURFACE_SPEC_VERSION = 6++-- No documentation found for TopLevel "VK_KHR_XCB_SURFACE_SPEC_VERSION"+pattern KHR_XCB_SURFACE_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_XCB_SURFACE_SPEC_VERSION = 6+++type KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface"++-- No documentation found for TopLevel "VK_KHR_XCB_SURFACE_EXTENSION_NAME"+pattern KHR_XCB_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_xcb_surface.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_xcb_surface (XcbSurfaceCreateInfoKHR) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data XcbSurfaceCreateInfoKHR++instance ToCStruct XcbSurfaceCreateInfoKHR+instance Show XcbSurfaceCreateInfoKHR++instance FromCStruct XcbSurfaceCreateInfoKHR+
src/Graphics/Vulkan/Extensions/VK_KHR_xlib_surface.hs view
@@ -1,253 +1,294 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_KHR_xlib_surface- ( Display(..)- , VisualID- , Window- , VkXlibSurfaceCreateFlagsKHR(..)- , pattern VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR- , pattern VK_KHR_XLIB_SURFACE_SPEC_VERSION- , pattern VK_KHR_XLIB_SURFACE_EXTENSION_NAME- , vkCreateXlibSurfaceKHR- , vkGetPhysicalDeviceXlibPresentationSupportKHR- , VkXlibSurfaceCreateInfoKHR(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.String- ( IsString- )-import Data.Word- ( Word32- , Word64- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkInstance- , VkPhysicalDevice- )-import Graphics.Vulkan.Extensions.VK_KHR_surface- ( VkSurfaceKHR- )----- No documentation found for TopLevel "Display"-newtype Display = Display (Ptr Display)--- No documentation found for TopLevel "VisualID"-type VisualID = Word64--- No documentation found for TopLevel "Window"-type Window = Word64--- ** VkXlibSurfaceCreateFlagsKHR---- No documentation found for TopLevel "VkXlibSurfaceCreateFlagsKHR"-newtype VkXlibSurfaceCreateFlagsKHR = VkXlibSurfaceCreateFlagsKHR VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkXlibSurfaceCreateFlagsKHR where- - showsPrec p (VkXlibSurfaceCreateFlagsKHR x) = showParen (p >= 11) (showString "VkXlibSurfaceCreateFlagsKHR " . showsPrec 11 x)--instance Read VkXlibSurfaceCreateFlagsKHR where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkXlibSurfaceCreateFlagsKHR")- v <- step readPrec- pure (VkXlibSurfaceCreateFlagsKHR v)- )- )+module Graphics.Vulkan.Extensions.VK_KHR_xlib_surface ( createXlibSurfaceKHR+ , getPhysicalDeviceXlibPresentationSupportKHR+ , XlibSurfaceCreateInfoKHR(..)+ , XlibSurfaceCreateFlagsKHR(..)+ , KHR_XLIB_SURFACE_SPEC_VERSION+ , pattern KHR_XLIB_SURFACE_SPEC_VERSION+ , KHR_XLIB_SURFACE_EXTENSION_NAME+ , pattern KHR_XLIB_SURFACE_EXTENSION_NAME+ , SurfaceKHR(..)+ , Display+ , VisualID+ , Window+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Bits (Bits)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.BaseType (Bool32(..))+import Graphics.Vulkan.Extensions.WSITypes (Display)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Instance)+import Graphics.Vulkan.Core10.Handles (Instance(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkCreateXlibSurfaceKHR))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceXlibPresentationSupportKHR))+import Graphics.Vulkan.Core10.Handles (Instance_T)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Extensions.WSITypes (VisualID)+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Extensions.WSITypes (Window)+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.WSITypes (Display)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.Extensions.WSITypes (VisualID)+import Graphics.Vulkan.Extensions.WSITypes (Window)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateXlibSurfaceKHR+ :: FunPtr (Ptr Instance_T -> Ptr XlibSurfaceCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result) -> Ptr Instance_T -> Ptr XlibSurfaceCreateInfoKHR -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR"-pattern VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR :: VkStructureType-pattern VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = VkStructureType 1000004000--- No documentation found for TopLevel "VK_KHR_XLIB_SURFACE_SPEC_VERSION"-pattern VK_KHR_XLIB_SURFACE_SPEC_VERSION :: Integral a => a-pattern VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6--- No documentation found for TopLevel "VK_KHR_XLIB_SURFACE_EXTENSION_NAME"-pattern VK_KHR_XLIB_SURFACE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" -- | vkCreateXlibSurfaceKHR - Create a--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR' object for an--- X11 window, using the Xlib client-side library+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' object for an X11+-- window, using the Xlib client-side library -- -- = Parameters ----- - @instance@ is the instance to associate the surface with.+-- - 'Graphics.Vulkan.Core10.Handles.Instance' is the instance to+-- associate the surface with. ----- - @pCreateInfo@ is a pointer to an instance of the--- @VkXlibSurfaceCreateInfoKHR@ structure containing the parameters--- affecting the creation of the surface object.+-- - @pCreateInfo@ is a pointer to a 'XlibSurfaceCreateInfoKHR' structure+-- containing the parameters affecting the creation of the surface+-- object. -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- surface object when there is no more specific allocator available--- (see [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)).+-- (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>). ----- - @pSurface@ points to a @VkSurfaceKHR@ handle in which the created--- surface object is returned.+-- - @pSurface@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle in which the+-- created surface object is returned. -- -- == Valid Usage (Implicit) ----- - @instance@ /must/ be a valid @VkInstance@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle -- -- - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkXlibSurfaceCreateInfoKHR@ structure+-- 'XlibSurfaceCreateInfoKHR' structure -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - @pSurface@ /must/ be a valid pointer to a @VkSurfaceKHR@ handle+-- - @pSurface@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR',--- 'VkXlibSurfaceCreateInfoKHR'+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Instance',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR',+-- 'XlibSurfaceCreateInfoKHR'+createXlibSurfaceKHR :: Instance -> XlibSurfaceCreateInfoKHR -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (SurfaceKHR)+createXlibSurfaceKHR instance' createInfo allocator = evalContT $ do+ let vkCreateXlibSurfaceKHR' = mkVkCreateXlibSurfaceKHR (pVkCreateXlibSurfaceKHR (instanceCmds (instance' :: Instance)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPSurface <- ContT $ bracket (callocBytes @SurfaceKHR 8) free+ r <- lift $ vkCreateXlibSurfaceKHR' (instanceHandle (instance')) pCreateInfo pAllocator (pPSurface)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSurface <- lift $ peek @SurfaceKHR pPSurface+ pure $ (pSurface)++ foreign import ccall #if !defined(SAFE_FOREIGN_CALLS) unsafe #endif- "vkCreateXlibSurfaceKHR" vkCreateXlibSurfaceKHR :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkXlibSurfaceCreateInfoKHR) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult+ "dynamic" mkVkGetPhysicalDeviceXlibPresentationSupportKHR+ :: FunPtr (Ptr PhysicalDevice_T -> Word32 -> Ptr Display -> VisualID -> IO Bool32) -> Ptr PhysicalDevice_T -> Word32 -> Ptr Display -> VisualID -> IO Bool32+ -- | vkGetPhysicalDeviceXlibPresentationSupportKHR - Query physical device -- for presentation to X11 server using Xlib -- -- = Parameters ----- - @physicalDevice@ is the physical device.+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device. -- -- - @queueFamilyIndex@ is the queue family index. ----- - @dpy@ is a pointer to an Xlib @Display@ connection to the server.+-- - @dpy@ is a pointer to an Xlib+-- 'Graphics.Vulkan.Extensions.WSITypes.Display' connection to the+-- server. ----- - @visualId@ is an X11 visual (@VisualID@).+-- - @visualId@ is an X11 visual+-- ('Graphics.Vulkan.Extensions.WSITypes.VisualID'). -- -- = Description -- -- This platform-specific function /can/ be called prior to creating a -- surface. ----- == Valid Usage------ - @queueFamilyIndex@ /must/ be less than @pQueueFamilyPropertyCount@--- returned by @vkGetPhysicalDeviceQueueFamilyProperties@ for the given--- @physicalDevice@--- -- == Valid Usage (Implicit) ----- - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @dpy@ /must/ be a valid pointer to a @Display@ value--- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceXlibPresentationSupportKHR" vkGetPhysicalDeviceXlibPresentationSupportKHR :: ("physicalDevice" ::: VkPhysicalDevice) -> ("queueFamilyIndex" ::: Word32) -> ("dpy" ::: Ptr Display) -> ("visualID" ::: VisualID) -> IO VkBool32+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+getPhysicalDeviceXlibPresentationSupportKHR :: PhysicalDevice -> ("queueFamilyIndex" ::: Word32) -> ("dpy" ::: Ptr Display) -> VisualID -> IO (Bool)+getPhysicalDeviceXlibPresentationSupportKHR physicalDevice queueFamilyIndex dpy visualID = do+ let vkGetPhysicalDeviceXlibPresentationSupportKHR' = mkVkGetPhysicalDeviceXlibPresentationSupportKHR (pVkGetPhysicalDeviceXlibPresentationSupportKHR (instanceCmds (physicalDevice :: PhysicalDevice)))+ r <- vkGetPhysicalDeviceXlibPresentationSupportKHR' (physicalDeviceHandle (physicalDevice)) (queueFamilyIndex) (dpy) (visualID)+ pure $ ((bool32ToBool r))++ -- | VkXlibSurfaceCreateInfoKHR - Structure specifying parameters of a newly -- created Xlib surface object ----- == Valid Usage------ - @dpy@ /must/ point to a valid Xlib @Display@.------ - @window@ /must/ be a valid Xlib @Window@.--- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@--- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'VkXlibSurfaceCreateFlagsKHR', 'vkCreateXlibSurfaceKHR'-data VkXlibSurfaceCreateInfoKHR = VkXlibSurfaceCreateInfoKHR- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkXlibSurfaceCreateFlagsKHR- , -- | @dpy@ is a pointer to an Xlib @Display@ connection to the X server.- vkDpy :: Ptr Display- , -- | @window@ is an Xlib @Window@ to associate the surface with.- vkWindow :: Window+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'XlibSurfaceCreateFlagsKHR', 'createXlibSurfaceKHR'+data XlibSurfaceCreateInfoKHR = XlibSurfaceCreateInfoKHR+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+ flags :: XlibSurfaceCreateFlagsKHR+ , -- | @dpy@ /must/ point to a valid Xlib+ -- 'Graphics.Vulkan.Extensions.WSITypes.Display'.+ dpy :: Ptr Display+ , -- | 'Graphics.Vulkan.Extensions.WSITypes.Window' /must/ be a valid Xlib+ -- 'Graphics.Vulkan.Extensions.WSITypes.Window'.+ window :: Window }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show XlibSurfaceCreateInfoKHR -instance Storable VkXlibSurfaceCreateInfoKHR where+instance ToCStruct XlibSurfaceCreateInfoKHR where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p XlibSurfaceCreateInfoKHR{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr XlibSurfaceCreateFlagsKHR)) (flags)+ poke ((p `plusPtr` 24 :: Ptr (Ptr Display))) (dpy)+ poke ((p `plusPtr` 32 :: Ptr Window)) (window)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 24 :: Ptr (Ptr Display))) (zero)+ poke ((p `plusPtr` 32 :: Ptr Window)) (zero)+ f++instance FromCStruct XlibSurfaceCreateInfoKHR where+ peekCStruct p = do+ flags <- peek @XlibSurfaceCreateFlagsKHR ((p `plusPtr` 16 :: Ptr XlibSurfaceCreateFlagsKHR))+ dpy <- peek @(Ptr Display) ((p `plusPtr` 24 :: Ptr (Ptr Display)))+ window <- peek @Window ((p `plusPtr` 32 :: Ptr Window))+ pure $ XlibSurfaceCreateInfoKHR+ flags dpy window++instance Storable XlibSurfaceCreateInfoKHR where sizeOf ~_ = 40 alignment ~_ = 8- peek ptr = VkXlibSurfaceCreateInfoKHR <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkXlibSurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkXlibSurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkXlibSurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 24) (vkDpy (poked :: VkXlibSurfaceCreateInfoKHR))- *> poke (ptr `plusPtr` 32) (vkWindow (poked :: VkXlibSurfaceCreateInfoKHR))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero XlibSurfaceCreateInfoKHR where+ zero = XlibSurfaceCreateInfoKHR+ zero+ zero+ zero+++-- No documentation found for TopLevel "VkXlibSurfaceCreateFlagsKHR"+newtype XlibSurfaceCreateFlagsKHR = XlibSurfaceCreateFlagsKHR Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show XlibSurfaceCreateFlagsKHR where+ showsPrec p = \case+ XlibSurfaceCreateFlagsKHR x -> showParen (p >= 11) (showString "XlibSurfaceCreateFlagsKHR 0x" . showHex x)++instance Read XlibSurfaceCreateFlagsKHR where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "XlibSurfaceCreateFlagsKHR")+ v <- step readPrec+ pure (XlibSurfaceCreateFlagsKHR v)))+++type KHR_XLIB_SURFACE_SPEC_VERSION = 6++-- No documentation found for TopLevel "VK_KHR_XLIB_SURFACE_SPEC_VERSION"+pattern KHR_XLIB_SURFACE_SPEC_VERSION :: forall a . Integral a => a+pattern KHR_XLIB_SURFACE_SPEC_VERSION = 6+++type KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface"++-- No documentation found for TopLevel "VK_KHR_XLIB_SURFACE_EXTENSION_NAME"+pattern KHR_XLIB_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface"+
+ src/Graphics/Vulkan/Extensions/VK_KHR_xlib_surface.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_KHR_xlib_surface (XlibSurfaceCreateInfoKHR) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data XlibSurfaceCreateInfoKHR++instance ToCStruct XlibSurfaceCreateInfoKHR+instance Show XlibSurfaceCreateInfoKHR++instance FromCStruct XlibSurfaceCreateInfoKHR+
src/Graphics/Vulkan/Extensions/VK_MVK_ios_surface.hs view
@@ -1,196 +1,227 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_MVK_ios_surface- ( VkIOSSurfaceCreateFlagsMVK(..)- , pattern VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK- , pattern VK_MVK_IOS_SURFACE_SPEC_VERSION- , pattern VK_MVK_IOS_SURFACE_EXTENSION_NAME- , vkCreateIOSSurfaceMVK- , VkIOSSurfaceCreateInfoMVK(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.String- ( IsString- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkInstance- )-import Graphics.Vulkan.Extensions.VK_KHR_surface- ( VkSurfaceKHR- )----- ** VkIOSSurfaceCreateFlagsMVK---- No documentation found for TopLevel "VkIOSSurfaceCreateFlagsMVK"-newtype VkIOSSurfaceCreateFlagsMVK = VkIOSSurfaceCreateFlagsMVK VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkIOSSurfaceCreateFlagsMVK where- - showsPrec p (VkIOSSurfaceCreateFlagsMVK x) = showParen (p >= 11) (showString "VkIOSSurfaceCreateFlagsMVK " . showsPrec 11 x)--instance Read VkIOSSurfaceCreateFlagsMVK where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkIOSSurfaceCreateFlagsMVK")- v <- step readPrec- pure (VkIOSSurfaceCreateFlagsMVK v)- )- )+module Graphics.Vulkan.Extensions.VK_MVK_ios_surface ( createIOSSurfaceMVK+ , IOSSurfaceCreateInfoMVK(..)+ , IOSSurfaceCreateFlagsMVK(..)+ , MVK_IOS_SURFACE_SPEC_VERSION+ , pattern MVK_IOS_SURFACE_SPEC_VERSION+ , MVK_IOS_SURFACE_EXTENSION_NAME+ , pattern MVK_IOS_SURFACE_EXTENSION_NAME+ , SurfaceKHR(..)+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Bits (Bits)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Instance)+import Graphics.Vulkan.Core10.Handles (Instance(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkCreateIOSSurfaceMVK))+import Graphics.Vulkan.Core10.Handles (Instance_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateIOSSurfaceMVK+ :: FunPtr (Ptr Instance_T -> Ptr IOSSurfaceCreateInfoMVK -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result) -> Ptr Instance_T -> Ptr IOSSurfaceCreateInfoMVK -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK"-pattern VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK :: VkStructureType-pattern VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = VkStructureType 1000122000--- No documentation found for TopLevel "VK_MVK_IOS_SURFACE_SPEC_VERSION"-pattern VK_MVK_IOS_SURFACE_SPEC_VERSION :: Integral a => a-pattern VK_MVK_IOS_SURFACE_SPEC_VERSION = 2--- No documentation found for TopLevel "VK_MVK_IOS_SURFACE_EXTENSION_NAME"-pattern VK_MVK_IOS_SURFACE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_MVK_IOS_SURFACE_EXTENSION_NAME = "VK_MVK_ios_surface" -- | vkCreateIOSSurfaceMVK - Create a VkSurfaceKHR object for an iOS UIView -- -- = Parameters ----- - @instance@ is the instance with which to associate the surface.+-- - 'Graphics.Vulkan.Core10.Handles.Instance' is the instance with which+-- to associate the surface. ----- - @pCreateInfo@ is a pointer to an instance of the--- 'VkIOSSurfaceCreateInfoMVK' structure containing parameters--- affecting the creation of the surface object.+-- - @pCreateInfo@ is a pointer to a 'IOSSurfaceCreateInfoMVK' structure+-- containing parameters affecting the creation of the surface object. -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- surface object when there is no more specific allocator available--- (see [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)).+-- (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>). ----- - @pSurface@ points to a @VkSurfaceKHR@ handle in which the created--- surface object is returned.+-- - @pSurface@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle in which the+-- created surface object is returned. -- -- == Valid Usage (Implicit) ----- - @instance@ /must/ be a valid @VkInstance@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle -- -- - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkIOSSurfaceCreateInfoMVK@ structure+-- 'IOSSurfaceCreateInfoMVK' structure -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - @pSurface@ /must/ be a valid pointer to a @VkSurfaceKHR@ handle+-- - @pSurface@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- - @VK_ERROR_NATIVE_WINDOW_IN_USE_KHR@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'VkIOSSurfaceCreateInfoMVK',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateIOSSurfaceMVK" vkCreateIOSSurfaceMVK :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkIOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'IOSSurfaceCreateInfoMVK', 'Graphics.Vulkan.Core10.Handles.Instance',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR'+createIOSSurfaceMVK :: Instance -> IOSSurfaceCreateInfoMVK -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (SurfaceKHR)+createIOSSurfaceMVK instance' createInfo allocator = evalContT $ do+ let vkCreateIOSSurfaceMVK' = mkVkCreateIOSSurfaceMVK (pVkCreateIOSSurfaceMVK (instanceCmds (instance' :: Instance)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPSurface <- ContT $ bracket (callocBytes @SurfaceKHR 8) free+ r <- lift $ vkCreateIOSSurfaceMVK' (instanceHandle (instance')) pCreateInfo pAllocator (pPSurface)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSurface <- lift $ peek @SurfaceKHR pPSurface+ pure $ (pSurface)++ -- | VkIOSSurfaceCreateInfoMVK - Structure specifying parameters of a newly -- created iOS surface object ----- == Valid Usage------ - @pView@ /must/ be a valid @UIView@ and /must/ be backed by a--- @CALayer@ instance of type @CAMetalLayer@.--- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@--- -- = See Also ----- 'VkIOSSurfaceCreateFlagsMVK',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateIOSSurfaceMVK'-data VkIOSSurfaceCreateInfoMVK = VkIOSSurfaceCreateInfoMVK- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkIOSSurfaceCreateFlagsMVK- , -- | @pView@ is a reference to a @UIView@ object which will display this- -- surface. This @UIView@ /must/ be backed by a @CALayer@ instance of type- -- @CAMetalLayer@.- vkPView :: Ptr ()+-- 'IOSSurfaceCreateFlagsMVK',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createIOSSurfaceMVK'+data IOSSurfaceCreateInfoMVK = IOSSurfaceCreateInfoMVK+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+ flags :: IOSSurfaceCreateFlagsMVK+ , -- | @pView@ /must/ be a valid @UIView@ and /must/ be backed by a @CALayer@+ -- instance of type 'Graphics.Vulkan.Extensions.WSITypes.CAMetalLayer'.+ view :: Ptr () }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show IOSSurfaceCreateInfoMVK -instance Storable VkIOSSurfaceCreateInfoMVK where+instance ToCStruct IOSSurfaceCreateInfoMVK where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p IOSSurfaceCreateInfoMVK{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr IOSSurfaceCreateFlagsMVK)) (flags)+ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (view)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (zero)+ f++instance FromCStruct IOSSurfaceCreateInfoMVK where+ peekCStruct p = do+ flags <- peek @IOSSurfaceCreateFlagsMVK ((p `plusPtr` 16 :: Ptr IOSSurfaceCreateFlagsMVK))+ pView <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))+ pure $ IOSSurfaceCreateInfoMVK+ flags pView++instance Storable IOSSurfaceCreateInfoMVK where sizeOf ~_ = 32 alignment ~_ = 8- peek ptr = VkIOSSurfaceCreateInfoMVK <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkIOSSurfaceCreateInfoMVK))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkIOSSurfaceCreateInfoMVK))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkIOSSurfaceCreateInfoMVK))- *> poke (ptr `plusPtr` 24) (vkPView (poked :: VkIOSSurfaceCreateInfoMVK))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero IOSSurfaceCreateInfoMVK where+ zero = IOSSurfaceCreateInfoMVK+ zero+ zero+++-- No documentation found for TopLevel "VkIOSSurfaceCreateFlagsMVK"+newtype IOSSurfaceCreateFlagsMVK = IOSSurfaceCreateFlagsMVK Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show IOSSurfaceCreateFlagsMVK where+ showsPrec p = \case+ IOSSurfaceCreateFlagsMVK x -> showParen (p >= 11) (showString "IOSSurfaceCreateFlagsMVK 0x" . showHex x)++instance Read IOSSurfaceCreateFlagsMVK where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "IOSSurfaceCreateFlagsMVK")+ v <- step readPrec+ pure (IOSSurfaceCreateFlagsMVK v)))+++type MVK_IOS_SURFACE_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_MVK_IOS_SURFACE_SPEC_VERSION"+pattern MVK_IOS_SURFACE_SPEC_VERSION :: forall a . Integral a => a+pattern MVK_IOS_SURFACE_SPEC_VERSION = 2+++type MVK_IOS_SURFACE_EXTENSION_NAME = "VK_MVK_ios_surface"++-- No documentation found for TopLevel "VK_MVK_IOS_SURFACE_EXTENSION_NAME"+pattern MVK_IOS_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern MVK_IOS_SURFACE_EXTENSION_NAME = "VK_MVK_ios_surface"+
+ src/Graphics/Vulkan/Extensions/VK_MVK_ios_surface.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_MVK_ios_surface (IOSSurfaceCreateInfoMVK) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data IOSSurfaceCreateInfoMVK++instance ToCStruct IOSSurfaceCreateInfoMVK+instance Show IOSSurfaceCreateInfoMVK++instance FromCStruct IOSSurfaceCreateInfoMVK+
src/Graphics/Vulkan/Extensions/VK_MVK_macos_surface.hs view
@@ -1,197 +1,229 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_MVK_macos_surface- ( VkMacOSSurfaceCreateFlagsMVK(..)- , pattern VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK- , pattern VK_MVK_MACOS_SURFACE_SPEC_VERSION- , pattern VK_MVK_MACOS_SURFACE_EXTENSION_NAME- , vkCreateMacOSSurfaceMVK- , VkMacOSSurfaceCreateInfoMVK(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.String- ( IsString- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkInstance- )-import Graphics.Vulkan.Extensions.VK_KHR_surface- ( VkSurfaceKHR- )----- ** VkMacOSSurfaceCreateFlagsMVK---- No documentation found for TopLevel "VkMacOSSurfaceCreateFlagsMVK"-newtype VkMacOSSurfaceCreateFlagsMVK = VkMacOSSurfaceCreateFlagsMVK VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkMacOSSurfaceCreateFlagsMVK where- - showsPrec p (VkMacOSSurfaceCreateFlagsMVK x) = showParen (p >= 11) (showString "VkMacOSSurfaceCreateFlagsMVK " . showsPrec 11 x)--instance Read VkMacOSSurfaceCreateFlagsMVK where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkMacOSSurfaceCreateFlagsMVK")- v <- step readPrec- pure (VkMacOSSurfaceCreateFlagsMVK v)- )- )+module Graphics.Vulkan.Extensions.VK_MVK_macos_surface ( createMacOSSurfaceMVK+ , MacOSSurfaceCreateInfoMVK(..)+ , MacOSSurfaceCreateFlagsMVK(..)+ , MVK_MACOS_SURFACE_SPEC_VERSION+ , pattern MVK_MACOS_SURFACE_SPEC_VERSION+ , MVK_MACOS_SURFACE_EXTENSION_NAME+ , pattern MVK_MACOS_SURFACE_EXTENSION_NAME+ , SurfaceKHR(..)+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Bits (Bits)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Instance)+import Graphics.Vulkan.Core10.Handles (Instance(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkCreateMacOSSurfaceMVK))+import Graphics.Vulkan.Core10.Handles (Instance_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateMacOSSurfaceMVK+ :: FunPtr (Ptr Instance_T -> Ptr MacOSSurfaceCreateInfoMVK -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result) -> Ptr Instance_T -> Ptr MacOSSurfaceCreateInfoMVK -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK"-pattern VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK :: VkStructureType-pattern VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = VkStructureType 1000123000--- No documentation found for TopLevel "VK_MVK_MACOS_SURFACE_SPEC_VERSION"-pattern VK_MVK_MACOS_SURFACE_SPEC_VERSION :: Integral a => a-pattern VK_MVK_MACOS_SURFACE_SPEC_VERSION = 2--- No documentation found for TopLevel "VK_MVK_MACOS_SURFACE_EXTENSION_NAME"-pattern VK_MVK_MACOS_SURFACE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_MVK_MACOS_SURFACE_EXTENSION_NAME = "VK_MVK_macos_surface" -- | vkCreateMacOSSurfaceMVK - Create a VkSurfaceKHR object for a macOS -- NSView -- -- = Parameters ----- - @instance@ is the instance with which to associate the surface.+-- - 'Graphics.Vulkan.Core10.Handles.Instance' is the instance with which+-- to associate the surface. ----- - @pCreateInfo@ is a pointer to an instance of the--- 'VkMacOSSurfaceCreateInfoMVK' structure containing parameters--- affecting the creation of the surface object.+-- - @pCreateInfo@ is a pointer to a 'MacOSSurfaceCreateInfoMVK'+-- structure containing parameters affecting the creation of the+-- surface object. -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- surface object when there is no more specific allocator available--- (see [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)).+-- (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>). ----- - @pSurface@ points to a @VkSurfaceKHR@ handle in which the created--- surface object is returned.+-- - @pSurface@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle in which the+-- created surface object is returned. -- -- == Valid Usage (Implicit) ----- - @instance@ /must/ be a valid @VkInstance@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle -- -- - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkMacOSSurfaceCreateInfoMVK@ structure+-- 'MacOSSurfaceCreateInfoMVK' structure -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - @pSurface@ /must/ be a valid pointer to a @VkSurfaceKHR@ handle+-- - @pSurface@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- - @VK_ERROR_NATIVE_WINDOW_IN_USE_KHR@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',--- 'VkMacOSSurfaceCreateInfoMVK',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateMacOSSurfaceMVK" vkCreateMacOSSurfaceMVK :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkMacOSSurfaceCreateInfoMVK) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Instance', 'MacOSSurfaceCreateInfoMVK',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR'+createMacOSSurfaceMVK :: Instance -> MacOSSurfaceCreateInfoMVK -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (SurfaceKHR)+createMacOSSurfaceMVK instance' createInfo allocator = evalContT $ do+ let vkCreateMacOSSurfaceMVK' = mkVkCreateMacOSSurfaceMVK (pVkCreateMacOSSurfaceMVK (instanceCmds (instance' :: Instance)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPSurface <- ContT $ bracket (callocBytes @SurfaceKHR 8) free+ r <- lift $ vkCreateMacOSSurfaceMVK' (instanceHandle (instance')) pCreateInfo pAllocator (pPSurface)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSurface <- lift $ peek @SurfaceKHR pPSurface+ pure $ (pSurface)++ -- | VkMacOSSurfaceCreateInfoMVK - Structure specifying parameters of a newly -- created macOS surface object ----- == Valid Usage------ - @pView@ /must/ be a valid @NSView@ and /must/ be backed by a--- @CALayer@ instance of type @CAMetalLayer@.--- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@--- -- = See Also ----- 'VkMacOSSurfaceCreateFlagsMVK',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateMacOSSurfaceMVK'-data VkMacOSSurfaceCreateInfoMVK = VkMacOSSurfaceCreateInfoMVK- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkMacOSSurfaceCreateFlagsMVK- , -- | @pView@ is a reference to a @NSView@ object which will display this- -- surface. This @NSView@ /must/ be backed by a @CALayer@ instance of type- -- @CAMetalLayer@.- vkPView :: Ptr ()+-- 'MacOSSurfaceCreateFlagsMVK',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createMacOSSurfaceMVK'+data MacOSSurfaceCreateInfoMVK = MacOSSurfaceCreateInfoMVK+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+ flags :: MacOSSurfaceCreateFlagsMVK+ , -- | @pView@ /must/ be a valid @NSView@ and /must/ be backed by a @CALayer@+ -- instance of type 'Graphics.Vulkan.Extensions.WSITypes.CAMetalLayer'.+ view :: Ptr () }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show MacOSSurfaceCreateInfoMVK -instance Storable VkMacOSSurfaceCreateInfoMVK where+instance ToCStruct MacOSSurfaceCreateInfoMVK where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p MacOSSurfaceCreateInfoMVK{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr MacOSSurfaceCreateFlagsMVK)) (flags)+ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (view)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (zero)+ f++instance FromCStruct MacOSSurfaceCreateInfoMVK where+ peekCStruct p = do+ flags <- peek @MacOSSurfaceCreateFlagsMVK ((p `plusPtr` 16 :: Ptr MacOSSurfaceCreateFlagsMVK))+ pView <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))+ pure $ MacOSSurfaceCreateInfoMVK+ flags pView++instance Storable MacOSSurfaceCreateInfoMVK where sizeOf ~_ = 32 alignment ~_ = 8- peek ptr = VkMacOSSurfaceCreateInfoMVK <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkMacOSSurfaceCreateInfoMVK))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkMacOSSurfaceCreateInfoMVK))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkMacOSSurfaceCreateInfoMVK))- *> poke (ptr `plusPtr` 24) (vkPView (poked :: VkMacOSSurfaceCreateInfoMVK))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero MacOSSurfaceCreateInfoMVK where+ zero = MacOSSurfaceCreateInfoMVK+ zero+ zero+++-- No documentation found for TopLevel "VkMacOSSurfaceCreateFlagsMVK"+newtype MacOSSurfaceCreateFlagsMVK = MacOSSurfaceCreateFlagsMVK Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show MacOSSurfaceCreateFlagsMVK where+ showsPrec p = \case+ MacOSSurfaceCreateFlagsMVK x -> showParen (p >= 11) (showString "MacOSSurfaceCreateFlagsMVK 0x" . showHex x)++instance Read MacOSSurfaceCreateFlagsMVK where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "MacOSSurfaceCreateFlagsMVK")+ v <- step readPrec+ pure (MacOSSurfaceCreateFlagsMVK v)))+++type MVK_MACOS_SURFACE_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_MVK_MACOS_SURFACE_SPEC_VERSION"+pattern MVK_MACOS_SURFACE_SPEC_VERSION :: forall a . Integral a => a+pattern MVK_MACOS_SURFACE_SPEC_VERSION = 2+++type MVK_MACOS_SURFACE_EXTENSION_NAME = "VK_MVK_macos_surface"++-- No documentation found for TopLevel "VK_MVK_MACOS_SURFACE_EXTENSION_NAME"+pattern MVK_MACOS_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern MVK_MACOS_SURFACE_EXTENSION_NAME = "VK_MVK_macos_surface"+
+ src/Graphics/Vulkan/Extensions/VK_MVK_macos_surface.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_MVK_macos_surface (MacOSSurfaceCreateInfoMVK) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data MacOSSurfaceCreateInfoMVK++instance ToCStruct MacOSSurfaceCreateInfoMVK+instance Show MacOSSurfaceCreateInfoMVK++instance FromCStruct MacOSSurfaceCreateInfoMVK+
src/Graphics/Vulkan/Extensions/VK_NN_vi_surface.hs view
@@ -1,209 +1,243 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_NN_vi_surface- ( VkViSurfaceCreateFlagsNN(..)- , pattern VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN- , pattern VK_NN_VI_SURFACE_SPEC_VERSION- , pattern VK_NN_VI_SURFACE_EXTENSION_NAME- , vkCreateViSurfaceNN- , VkViSurfaceCreateInfoNN(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.String- ( IsString- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkInstance- )-import Graphics.Vulkan.Extensions.VK_KHR_surface- ( VkSurfaceKHR- )----- ** VkViSurfaceCreateFlagsNN---- No documentation found for TopLevel "VkViSurfaceCreateFlagsNN"-newtype VkViSurfaceCreateFlagsNN = VkViSurfaceCreateFlagsNN VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkViSurfaceCreateFlagsNN where- - showsPrec p (VkViSurfaceCreateFlagsNN x) = showParen (p >= 11) (showString "VkViSurfaceCreateFlagsNN " . showsPrec 11 x)--instance Read VkViSurfaceCreateFlagsNN where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkViSurfaceCreateFlagsNN")- v <- step readPrec- pure (VkViSurfaceCreateFlagsNN v)- )- )+module Graphics.Vulkan.Extensions.VK_NN_vi_surface ( createViSurfaceNN+ , ViSurfaceCreateInfoNN(..)+ , ViSurfaceCreateFlagsNN(..)+ , NN_VI_SURFACE_SPEC_VERSION+ , pattern NN_VI_SURFACE_SPEC_VERSION+ , NN_VI_SURFACE_EXTENSION_NAME+ , pattern NN_VI_SURFACE_EXTENSION_NAME+ , SurfaceKHR(..)+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Bits (Bits)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Instance)+import Graphics.Vulkan.Core10.Handles (Instance(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkCreateViSurfaceNN))+import Graphics.Vulkan.Core10.Handles (Instance_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR)+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.Handles (SurfaceKHR(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateViSurfaceNN+ :: FunPtr (Ptr Instance_T -> Ptr ViSurfaceCreateInfoNN -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result) -> Ptr Instance_T -> Ptr ViSurfaceCreateInfoNN -> Ptr AllocationCallbacks -> Ptr SurfaceKHR -> IO Result --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN"-pattern VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN :: VkStructureType-pattern VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = VkStructureType 1000062000--- No documentation found for TopLevel "VK_NN_VI_SURFACE_SPEC_VERSION"-pattern VK_NN_VI_SURFACE_SPEC_VERSION :: Integral a => a-pattern VK_NN_VI_SURFACE_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_NN_VI_SURFACE_EXTENSION_NAME"-pattern VK_NN_VI_SURFACE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_NN_VI_SURFACE_EXTENSION_NAME = "VK_NN_vi_surface" -- | vkCreateViSurfaceNN - Create a--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR' object for a VI--- layer+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' object for a VI layer -- -- = Parameters ----- - @instance@ is the instance with which to associate the surface.+-- - 'Graphics.Vulkan.Core10.Handles.Instance' is the instance with which+-- to associate the surface. ----- - @pCreateInfo@ is a pointer to an instance of the--- @VkViSurfaceCreateInfoNN@ structure containing parameters affecting--- the creation of the surface object.+-- - @pCreateInfo@ is a pointer to a 'ViSurfaceCreateInfoNN' structure+-- containing parameters affecting the creation of the surface object. -- -- - @pAllocator@ is the allocator used for host memory allocated for the -- surface object when there is no more specific allocator available--- (see [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)).+-- (see+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>). ----- - @pSurface@ points to a @VkSurfaceKHR@ handle in which the created--- surface object is returned.+-- - @pSurface@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle in which the+-- created surface object is returned. -- -- = Description -- -- During the lifetime of a surface created using a particular--- @nn@::@vi@::@NativeWindowHandle@ any attempts to create another surface--- for the same @nn@::@vi@::@Layer@ and any attempts to connect to the same--- @nn@::@vi@::@Layer@ through other platform mechanisms will have--- undefined results.+-- @nn@::@vi@::@NativeWindowHandle@, applications /must/ not attempt to+-- create another surface for the same @nn@::@vi@::@Layer@ or attempt to+-- connect to the same @nn@::@vi@::@Layer@ through other platform+-- mechanisms. ----- The @currentExtent@ of a VI surface is always undefined. Applications--- are expected to choose an appropriate size for the swapchain’s--- @imageExtent@ (e.g., by matching the the result of a call to+-- If the native window is created with a specified size, @currentExtent@+-- will reflect that size. In this case, applications should use the same+-- size for the swapchain’s @imageExtent@. Otherwise, the @currentExtent@+-- will have the special value (0xFFFFFFFF, 0xFFFFFFFF), indicating that+-- applications are expected to choose an appropriate size for the+-- swapchain’s @imageExtent@ (e.g., by matching the result of a call to -- @nn@::@vi@::@GetDisplayResolution@). -- -- == Valid Usage (Implicit) ----- - @instance@ /must/ be a valid @VkInstance@ handle+-- - 'Graphics.Vulkan.Core10.Handles.Instance' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Instance' handle -- -- - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkViSurfaceCreateInfoNN@ structure+-- 'ViSurfaceCreateInfoNN' structure -- -- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure ----- - @pSurface@ /must/ be a valid pointer to a @VkSurfaceKHR@ handle+-- - @pSurface@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR' handle -- -- == Return Codes ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- - @VK_ERROR_NATIVE_WINDOW_IN_USE_KHR@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' --+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR'+-- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkInstance',--- 'Graphics.Vulkan.Extensions.VK_KHR_surface.VkSurfaceKHR',--- 'VkViSurfaceCreateInfoNN'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateViSurfaceNN" vkCreateViSurfaceNN :: ("instance" ::: VkInstance) -> ("pCreateInfo" ::: Ptr VkViSurfaceCreateInfoNN) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pSurface" ::: Ptr VkSurfaceKHR) -> IO VkResult+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Instance',+-- 'Graphics.Vulkan.Extensions.Handles.SurfaceKHR', 'ViSurfaceCreateInfoNN'+createViSurfaceNN :: Instance -> ViSurfaceCreateInfoNN -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (SurfaceKHR)+createViSurfaceNN instance' createInfo allocator = evalContT $ do+ let vkCreateViSurfaceNN' = mkVkCreateViSurfaceNN (pVkCreateViSurfaceNN (instanceCmds (instance' :: Instance)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPSurface <- ContT $ bracket (callocBytes @SurfaceKHR 8) free+ r <- lift $ vkCreateViSurfaceNN' (instanceHandle (instance')) pCreateInfo pAllocator (pPSurface)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pSurface <- lift $ peek @SurfaceKHR pPSurface+ pure $ (pSurface)++ -- | VkViSurfaceCreateInfoNN - Structure specifying parameters of a newly -- created VI surface object ----- == Valid Usage------ - @window@ /must/ be a valid @nn@::@vi@::@NativeWindowHandle@--- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN@------ - @pNext@ /must/ be @NULL@------ - @flags@ /must/ be @0@--- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'VkViSurfaceCreateFlagsNN', 'vkCreateViSurfaceNN'-data VkViSurfaceCreateInfoNN = VkViSurfaceCreateInfoNN- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkViSurfaceCreateFlagsNN- , -- | @window@ is the @nn@::@vi@::@NativeWindowHandle@ for the- -- @nn@::@vi@::@Layer@ with which to associate the surface.- vkWindow :: Ptr ()+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'ViSurfaceCreateFlagsNN', 'createViSurfaceNN'+data ViSurfaceCreateInfoNN = ViSurfaceCreateInfoNN+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+ flags :: ViSurfaceCreateFlagsNN+ , -- | 'Graphics.Vulkan.Extensions.WSITypes.Window' /must/ be a valid+ -- @nn@::@vi@::@NativeWindowHandle@+ window :: Ptr () }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show ViSurfaceCreateInfoNN -instance Storable VkViSurfaceCreateInfoNN where+instance ToCStruct ViSurfaceCreateInfoNN where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ViSurfaceCreateInfoNN{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ViSurfaceCreateFlagsNN)) (flags)+ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (window)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (zero)+ f++instance FromCStruct ViSurfaceCreateInfoNN where+ peekCStruct p = do+ flags <- peek @ViSurfaceCreateFlagsNN ((p `plusPtr` 16 :: Ptr ViSurfaceCreateFlagsNN))+ window <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))+ pure $ ViSurfaceCreateInfoNN+ flags window++instance Storable ViSurfaceCreateInfoNN where sizeOf ~_ = 32 alignment ~_ = 8- peek ptr = VkViSurfaceCreateInfoNN <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkViSurfaceCreateInfoNN))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkViSurfaceCreateInfoNN))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkViSurfaceCreateInfoNN))- *> poke (ptr `plusPtr` 24) (vkWindow (poked :: VkViSurfaceCreateInfoNN))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ViSurfaceCreateInfoNN where+ zero = ViSurfaceCreateInfoNN+ zero+ zero+++-- No documentation found for TopLevel "VkViSurfaceCreateFlagsNN"+newtype ViSurfaceCreateFlagsNN = ViSurfaceCreateFlagsNN Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show ViSurfaceCreateFlagsNN where+ showsPrec p = \case+ ViSurfaceCreateFlagsNN x -> showParen (p >= 11) (showString "ViSurfaceCreateFlagsNN 0x" . showHex x)++instance Read ViSurfaceCreateFlagsNN where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "ViSurfaceCreateFlagsNN")+ v <- step readPrec+ pure (ViSurfaceCreateFlagsNN v)))+++type NN_VI_SURFACE_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NN_VI_SURFACE_SPEC_VERSION"+pattern NN_VI_SURFACE_SPEC_VERSION :: forall a . Integral a => a+pattern NN_VI_SURFACE_SPEC_VERSION = 1+++type NN_VI_SURFACE_EXTENSION_NAME = "VK_NN_vi_surface"++-- No documentation found for TopLevel "VK_NN_VI_SURFACE_EXTENSION_NAME"+pattern NN_VI_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NN_VI_SURFACE_EXTENSION_NAME = "VK_NN_vi_surface"+
+ src/Graphics/Vulkan/Extensions/VK_NN_vi_surface.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NN_vi_surface (ViSurfaceCreateInfoNN) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ViSurfaceCreateInfoNN++instance ToCStruct ViSurfaceCreateInfoNN+instance Show ViSurfaceCreateInfoNN++instance FromCStruct ViSurfaceCreateInfoNN+
src/Graphics/Vulkan/Extensions/VK_NVX_device_generated_commands.hs view
@@ -1,1894 +1,2365 @@-{-# language Strict #-}-{-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands- ( VkIndirectCommandsTokenTypeNVX(..)- , pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX- , pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX- , pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX- , pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX- , pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX- , pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX- , pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX- , pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX- , VkObjectEntryTypeNVX(..)- , pattern VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX- , pattern VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX- , pattern VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX- , pattern VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX- , pattern VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX- , VkIndirectCommandsLayoutUsageFlagBitsNVX(..)- , pattern VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX- , pattern VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX- , pattern VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX- , pattern VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX- , VkObjectEntryUsageFlagBitsNVX(..)- , pattern VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX- , pattern VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX- , pattern VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX- , pattern VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX- , pattern VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX- , pattern VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX- , pattern VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX- , pattern VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX- , pattern VK_OBJECT_TYPE_OBJECT_TABLE_NVX- , pattern VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX- , pattern VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX- , pattern VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX- , pattern VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX- , pattern VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION- , pattern VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME- , VkObjectTableNVX- , VkIndirectCommandsLayoutNVX- , vkCmdProcessCommandsNVX- , vkCmdReserveSpaceForCommandsNVX- , vkCreateIndirectCommandsLayoutNVX- , vkDestroyIndirectCommandsLayoutNVX- , vkCreateObjectTableNVX- , vkDestroyObjectTableNVX- , vkRegisterObjectsNVX- , vkUnregisterObjectsNVX- , vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX- , VkDeviceGeneratedCommandsFeaturesNVX(..)- , VkDeviceGeneratedCommandsLimitsNVX(..)- , VkIndirectCommandsTokenNVX(..)- , VkIndirectCommandsLayoutTokenNVX(..)- , VkIndirectCommandsLayoutCreateInfoNVX(..)- , VkCmdProcessCommandsInfoNVX(..)- , VkCmdReserveSpaceForCommandsInfoNVX(..)- , VkObjectTableCreateInfoNVX(..)- , VkObjectTableEntryNVX(..)- , VkObjectTablePipelineEntryNVX(..)- , VkObjectTableDescriptorSetEntryNVX(..)- , VkObjectTableVertexBufferEntryNVX(..)- , VkObjectTableIndexBufferEntryNVX(..)- , VkObjectTablePushConstantEntryNVX(..)- , VkIndirectCommandsLayoutUsageFlagsNVX- , VkObjectEntryUsageFlagsNVX- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Int- ( Int32- )-import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.CommandBufferBuilding- ( VkIndexType(..)- )-import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkObjectType(..)- , VkResult(..)- , VkStructureType(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DescriptorSet- ( VkDescriptorSet- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkAllocationCallbacks(..)- , VkDevice- , VkDeviceSize- , VkPhysicalDevice- )-import Graphics.Vulkan.Core10.MemoryManagement- ( VkBuffer- )-import Graphics.Vulkan.Core10.Pass- ( VkAccessFlagBits(..)- , VkPipelineBindPoint(..)- )-import Graphics.Vulkan.Core10.Pipeline- ( VkPipeline- , VkPipelineLayout- )-import Graphics.Vulkan.Core10.PipelineLayout- ( VkShaderStageFlags- )-import Graphics.Vulkan.Core10.Queue- ( VkPipelineStageFlagBits(..)- , VkCommandBuffer- )----- ** VkIndirectCommandsTokenTypeNVX---- | VkIndirectCommandsTokenTypeNVX - Enum specifying------ = Description------ \'------ +------------------------------------------------------+----------------------------+--- | Token type | Equivalent command |--- +======================================================+============================+--- | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX@ | @vkCmdBindPipeline@ |--- +------------------------------------------------------+----------------------------+--- | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX@ | @vkCmdBindDescriptorSets@ |--- +------------------------------------------------------+----------------------------+--- | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX@ | @vkCmdBindIndexBuffer@ |--- +------------------------------------------------------+----------------------------+--- | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX@ | @vkCmdBindVertexBuffers@ |--- +------------------------------------------------------+----------------------------+--- | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX@ | @vkCmdPushConstants@ |--- +------------------------------------------------------+----------------------------+--- | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX@ | @vkCmdDrawIndexedIndirect@ |--- +------------------------------------------------------+----------------------------+--- | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX@ | @vkCmdDrawIndirect@ |--- +------------------------------------------------------+----------------------------+--- | @VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX@ | @vkCmdDispatchIndirect@ |--- +------------------------------------------------------+----------------------------+------ Supported indirect command tokens------ = See Also------ 'VkIndirectCommandsLayoutTokenNVX', 'VkIndirectCommandsTokenNVX'-newtype VkIndirectCommandsTokenTypeNVX = VkIndirectCommandsTokenTypeNVX Int32- deriving (Eq, Ord, Storable)--instance Show VkIndirectCommandsTokenTypeNVX where- showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX"- showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX"- showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX"- showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX"- showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX"- showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX"- showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX"- showsPrec _ VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX = showString "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX"- showsPrec p (VkIndirectCommandsTokenTypeNVX x) = showParen (p >= 11) (showString "VkIndirectCommandsTokenTypeNVX " . showsPrec 11 x)--instance Read VkIndirectCommandsTokenTypeNVX where- readPrec = parens ( choose [ ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX", pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX)- , ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX", pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX)- , ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX", pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX)- , ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX", pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX)- , ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX", pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX)- , ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX", pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX)- , ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX", pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX)- , ("VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX", pure VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX)- ] +++- prec 10 (do- expectP (Ident "VkIndirectCommandsTokenTypeNVX")- v <- step readPrec- pure (VkIndirectCommandsTokenTypeNVX v)- )- )---- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX"-pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX :: VkIndirectCommandsTokenTypeNVX-pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX = VkIndirectCommandsTokenTypeNVX 0---- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX"-pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX :: VkIndirectCommandsTokenTypeNVX-pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX = VkIndirectCommandsTokenTypeNVX 1---- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX"-pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX :: VkIndirectCommandsTokenTypeNVX-pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX = VkIndirectCommandsTokenTypeNVX 2---- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX"-pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX :: VkIndirectCommandsTokenTypeNVX-pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX = VkIndirectCommandsTokenTypeNVX 3---- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX"-pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX :: VkIndirectCommandsTokenTypeNVX-pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX = VkIndirectCommandsTokenTypeNVX 4---- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX"-pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX :: VkIndirectCommandsTokenTypeNVX-pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX = VkIndirectCommandsTokenTypeNVX 5---- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX"-pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX :: VkIndirectCommandsTokenTypeNVX-pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX = VkIndirectCommandsTokenTypeNVX 6---- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX"-pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX :: VkIndirectCommandsTokenTypeNVX-pattern VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX = VkIndirectCommandsTokenTypeNVX 7--- ** VkObjectEntryTypeNVX---- | VkObjectEntryTypeNVX - Enum specifying object table entry type------ = See Also------ 'VkObjectTableCreateInfoNVX', 'VkObjectTableDescriptorSetEntryNVX',--- 'VkObjectTableEntryNVX', 'VkObjectTableIndexBufferEntryNVX',--- 'VkObjectTablePipelineEntryNVX', 'VkObjectTablePushConstantEntryNVX',--- 'VkObjectTableVertexBufferEntryNVX', 'vkUnregisterObjectsNVX'-newtype VkObjectEntryTypeNVX = VkObjectEntryTypeNVX Int32- deriving (Eq, Ord, Storable)--instance Show VkObjectEntryTypeNVX where- showsPrec _ VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX = showString "VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX"- showsPrec _ VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX = showString "VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX"- showsPrec _ VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX = showString "VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX"- showsPrec _ VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX = showString "VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX"- showsPrec _ VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX = showString "VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX"- showsPrec p (VkObjectEntryTypeNVX x) = showParen (p >= 11) (showString "VkObjectEntryTypeNVX " . showsPrec 11 x)--instance Read VkObjectEntryTypeNVX where- readPrec = parens ( choose [ ("VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX", pure VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX)- , ("VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX", pure VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX)- , ("VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX", pure VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX)- , ("VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX", pure VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX)- , ("VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX", pure VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX)- ] +++- prec 10 (do- expectP (Ident "VkObjectEntryTypeNVX")- v <- step readPrec- pure (VkObjectEntryTypeNVX v)- )- )---- | @VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX@ specifies a @VkDescriptorSet@--- resource entry that is registered via--- @VkObjectTableDescriptorSetEntryNVX@.-pattern VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX :: VkObjectEntryTypeNVX-pattern VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX = VkObjectEntryTypeNVX 0---- | @VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX@ specifies a @VkPipeline@ resource--- entry that is registered via @VkObjectTablePipelineEntryNVX@.-pattern VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX :: VkObjectEntryTypeNVX-pattern VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX = VkObjectEntryTypeNVX 1---- | @VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX@ specifies a @VkBuffer@ resource--- entry that is registered via @VkObjectTableIndexBufferEntryNVX@.-pattern VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX :: VkObjectEntryTypeNVX-pattern VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX = VkObjectEntryTypeNVX 2---- | @VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX@ specifies a @VkBuffer@ resource--- entry that is registered via @VkObjectTableVertexBufferEntryNVX@.-pattern VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX :: VkObjectEntryTypeNVX-pattern VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX = VkObjectEntryTypeNVX 3---- | @VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX@ specifies the resource entry is--- registered via @VkObjectTablePushConstantEntryNVX@.-pattern VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX :: VkObjectEntryTypeNVX-pattern VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX = VkObjectEntryTypeNVX 4--- ** VkIndirectCommandsLayoutUsageFlagBitsNVX---- | VkIndirectCommandsLayoutUsageFlagBitsNVX - Bitmask specifying allowed--- usage of a indirect commands layout------ = See Also------ 'VkIndirectCommandsLayoutUsageFlagsNVX'-newtype VkIndirectCommandsLayoutUsageFlagBitsNVX = VkIndirectCommandsLayoutUsageFlagBitsNVX VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkIndirectCommandsLayoutUsageFlagBitsNVX where- showsPrec _ VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = showString "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX"- showsPrec _ VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = showString "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX"- showsPrec _ VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = showString "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX"- showsPrec _ VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = showString "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX"- showsPrec p (VkIndirectCommandsLayoutUsageFlagBitsNVX x) = showParen (p >= 11) (showString "VkIndirectCommandsLayoutUsageFlagBitsNVX " . showsPrec 11 x)--instance Read VkIndirectCommandsLayoutUsageFlagBitsNVX where- readPrec = parens ( choose [ ("VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX", pure VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX)- , ("VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX", pure VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX)- , ("VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX", pure VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX)- , ("VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX", pure VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX)- ] +++- prec 10 (do- expectP (Ident "VkIndirectCommandsLayoutUsageFlagBitsNVX")- v <- step readPrec- pure (VkIndirectCommandsLayoutUsageFlagBitsNVX v)- )- )---- | @VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX@--- specifies that the processing of sequences /can/ happen at an--- implementation-dependent order, which is not guaranteed to be coherent--- across multiple invocations.-pattern VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX :: VkIndirectCommandsLayoutUsageFlagBitsNVX-pattern VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = VkIndirectCommandsLayoutUsageFlagBitsNVX 0x00000001---- | @VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX@ specifies--- that there is likely a high difference between allocated number of--- sequences and actually used.-pattern VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX :: VkIndirectCommandsLayoutUsageFlagBitsNVX-pattern VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = VkIndirectCommandsLayoutUsageFlagBitsNVX 0x00000002---- | @VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX@ specifies--- that there are likely many draw or dispatch calls that are zero-sized--- (zero grid dimension, no primitives to render).-pattern VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX :: VkIndirectCommandsLayoutUsageFlagBitsNVX-pattern VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = VkIndirectCommandsLayoutUsageFlagBitsNVX 0x00000004---- | @VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX@ specifies--- that the input data for the sequences is not implicitly indexed from--- 0..sequencesUsed but a user provided @VkBuffer@ encoding the index is--- provided.-pattern VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX :: VkIndirectCommandsLayoutUsageFlagBitsNVX-pattern VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = VkIndirectCommandsLayoutUsageFlagBitsNVX 0x00000008--- ** VkObjectEntryUsageFlagBitsNVX---- | VkObjectEntryUsageFlagBitsNVX - Bitmask specifying allowed usage of an--- object entry------ = See Also------ 'VkObjectEntryUsageFlagsNVX'-newtype VkObjectEntryUsageFlagBitsNVX = VkObjectEntryUsageFlagBitsNVX VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkObjectEntryUsageFlagBitsNVX where- showsPrec _ VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = showString "VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX"- showsPrec _ VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = showString "VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX"- showsPrec p (VkObjectEntryUsageFlagBitsNVX x) = showParen (p >= 11) (showString "VkObjectEntryUsageFlagBitsNVX " . showsPrec 11 x)--instance Read VkObjectEntryUsageFlagBitsNVX where- readPrec = parens ( choose [ ("VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX", pure VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX)- , ("VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX", pure VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX)- ] +++- prec 10 (do- expectP (Ident "VkObjectEntryUsageFlagBitsNVX")- v <- step readPrec- pure (VkObjectEntryUsageFlagBitsNVX v)- )- )---- | @VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX@ specifies that the resource is--- bound to @VK_PIPELINE_BIND_POINT_GRAPHICS@-pattern VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX :: VkObjectEntryUsageFlagBitsNVX-pattern VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = VkObjectEntryUsageFlagBitsNVX 0x00000001---- | @VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX@ specifies that the resource is--- bound to @VK_PIPELINE_BIND_POINT_COMPUTE@-pattern VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX :: VkObjectEntryUsageFlagBitsNVX-pattern VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = VkObjectEntryUsageFlagBitsNVX 0x00000002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX"-pattern VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX :: VkStructureType-pattern VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = VkStructureType 1000086000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX"-pattern VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX :: VkStructureType-pattern VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = VkStructureType 1000086001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX"-pattern VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX :: VkStructureType-pattern VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = VkStructureType 1000086002--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX"-pattern VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX :: VkStructureType-pattern VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = VkStructureType 1000086003--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX"-pattern VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = VkStructureType 1000086004--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX"-pattern VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = VkStructureType 1000086005--- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_OBJECT_TABLE_NVX"-pattern VK_OBJECT_TYPE_OBJECT_TABLE_NVX :: VkObjectType-pattern VK_OBJECT_TYPE_OBJECT_TABLE_NVX = VkObjectType 1000086000--- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX"-pattern VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX :: VkObjectType-pattern VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX = VkObjectType 1000086001--- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX"-pattern VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX :: VkAccessFlagBits-pattern VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = VkAccessFlagBits 0x00020000--- No documentation found for Nested "VkAccessFlagBits" "VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX"-pattern VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX :: VkAccessFlagBits-pattern VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = VkAccessFlagBits 0x00040000--- No documentation found for Nested "VkPipelineStageFlagBits" "VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX"-pattern VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX :: VkPipelineStageFlagBits-pattern VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = VkPipelineStageFlagBits 0x00020000--- No documentation found for TopLevel "VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION"-pattern VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION :: Integral a => a-pattern VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3--- No documentation found for TopLevel "VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME"-pattern VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NVX_device_generated_commands"--- | Dummy data to tag the 'Ptr' with-data VkObjectTableNVX_T--- | VkObjectTableNVX - Opaque handle to an object table------ = See Also------ 'VkCmdProcessCommandsInfoNVX', 'VkCmdReserveSpaceForCommandsInfoNVX',--- 'vkCreateObjectTableNVX', 'vkDestroyObjectTableNVX',--- 'vkRegisterObjectsNVX', 'vkUnregisterObjectsNVX'-type VkObjectTableNVX = Ptr VkObjectTableNVX_T--- | Dummy data to tag the 'Ptr' with-data VkIndirectCommandsLayoutNVX_T--- | VkIndirectCommandsLayoutNVX - Opaque handle to an indirect commands--- layout object------ = See Also------ 'VkCmdProcessCommandsInfoNVX', 'VkCmdReserveSpaceForCommandsInfoNVX',--- 'vkCreateIndirectCommandsLayoutNVX',--- 'vkDestroyIndirectCommandsLayoutNVX'-type VkIndirectCommandsLayoutNVX = Ptr VkIndirectCommandsLayoutNVX_T--- | vkCmdProcessCommandsNVX - Performs the generation of commands on the--- device------ = Parameters------ - @commandBuffer@ is the primary command buffer in which the--- generation process takes space.------ - @pProcessCommandsInfo@ is a pointer to an instance of the--- 'VkCmdProcessCommandsInfoNVX' structure containing parameters--- affecting the processing of commands.------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pProcessCommandsInfo@ /must/ be a valid pointer to a valid--- @VkCmdProcessCommandsInfoNVX@ structure------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - This command /must/ only be called inside of a render pass instance------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Inside | Graphics | |--- | Secondary | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'VkCmdProcessCommandsInfoNVX',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdProcessCommandsNVX" vkCmdProcessCommandsNVX :: ("commandBuffer" ::: VkCommandBuffer) -> ("pProcessCommandsInfo" ::: Ptr VkCmdProcessCommandsInfoNVX) -> IO ()--- | vkCmdReserveSpaceForCommandsNVX - Perform a reservation of command--- buffer space------ = Parameters------ - @commandBuffer@ is the secondary command buffer in which the space--- for device-generated commands is reserved.------ - @pProcessCommandsInfo@ is a pointer to an instance of the--- 'vkCmdReserveSpaceForCommandsNVX' structure containing parameters--- affecting the reservation of command buffer space.------ == Valid Usage------ - The provided @commandBuffer@ /must/ not have had a prior space--- reservation since its creation or the last reset.------ - The state of the @commandBuffer@ /must/ be legal to execute all--- commands within the sequence provided by the--- @indirectCommandsLayout@ member of @pProcessCommandsInfo@.------ == Valid Usage (Implicit)------ - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle------ - @pReserveSpaceInfo@ /must/ be a valid pointer to a valid--- @VkCmdReserveSpaceForCommandsInfoNVX@ structure------ - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)------ - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics, or compute operations------ - This command /must/ only be called inside of a render pass instance------ - @commandBuffer@ /must/ be a secondary @VkCommandBuffer@------ == Host Synchronization------ - Host access to @commandBuffer@ /must/ be externally synchronized------ - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized------ == Command Properties------ \'------ +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Secondary | Inside | Graphics | |--- | | | Compute | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+------ = See Also------ 'VkCmdReserveSpaceForCommandsInfoNVX',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdReserveSpaceForCommandsNVX" vkCmdReserveSpaceForCommandsNVX :: ("commandBuffer" ::: VkCommandBuffer) -> ("pReserveSpaceInfo" ::: Ptr VkCmdReserveSpaceForCommandsInfoNVX) -> IO ()--- | vkCreateIndirectCommandsLayoutNVX - Create an indirect command layout--- object------ = Parameters------ - @device@ is the logical device that creates the indirect command--- layout.------ - @pCreateInfo@ is a pointer to an instance of the--- @VkIndirectCommandsLayoutCreateInfoNVX@ structure containing--- parameters affecting creation of the indirect command layout.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ - @pIndirectCommandsLayout@ points to a @VkIndirectCommandsLayoutNVX@--- handle in which the resulting indirect command layout is returned.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkIndirectCommandsLayoutCreateInfoNVX@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pIndirectCommandsLayout@ /must/ be a valid pointer to a--- @VkIndirectCommandsLayoutNVX@ handle------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkIndirectCommandsLayoutCreateInfoNVX', 'VkIndirectCommandsLayoutNVX'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateIndirectCommandsLayoutNVX" vkCreateIndirectCommandsLayoutNVX :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkIndirectCommandsLayoutCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pIndirectCommandsLayout" ::: Ptr VkIndirectCommandsLayoutNVX) -> IO VkResult--- | vkDestroyIndirectCommandsLayoutNVX - Destroy a object table------ = Parameters------ - @device@ is the logical device that destroys the layout.------ - @indirectCommandsLayout@ is the table to destroy.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ == Valid Usage------ - All submitted commands that refer to @indirectCommandsLayout@ /must/--- have completed execution------ - If @VkAllocationCallbacks@ were provided when @objectTable@ was--- created, a compatible set of callbacks /must/ be provided here------ - If no @VkAllocationCallbacks@ were provided when @objectTable@ was--- created, @pAllocator@ /must/ be @NULL@------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @indirectCommandsLayout@ /must/ be a valid--- @VkIndirectCommandsLayoutNVX@ handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @indirectCommandsLayout@ /must/ have been created, allocated, or--- retrieved from @device@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkIndirectCommandsLayoutNVX'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroyIndirectCommandsLayoutNVX" vkDestroyIndirectCommandsLayoutNVX :: ("device" ::: VkDevice) -> ("indirectCommandsLayout" ::: VkIndirectCommandsLayoutNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | vkCreateObjectTableNVX - Create an object table------ = Parameters------ - @device@ is the logical device that creates the object table.------ - @pCreateInfo@ is a pointer to an instance of the--- @VkObjectTableCreateInfoNVX@ structure containing parameters--- affecting creation of the table.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ - @pObjectTable@ points to a @VkObjectTableNVX@ handle in which the--- resulting object table is returned.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @pCreateInfo@ /must/ be a valid pointer to a valid--- @VkObjectTableCreateInfoNVX@ structure------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @pObjectTable@ /must/ be a valid pointer to a @VkObjectTableNVX@--- handle------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkObjectTableCreateInfoNVX', 'VkObjectTableNVX'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCreateObjectTableNVX" vkCreateObjectTableNVX :: ("device" ::: VkDevice) -> ("pCreateInfo" ::: Ptr VkObjectTableCreateInfoNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> ("pObjectTable" ::: Ptr VkObjectTableNVX) -> IO VkResult--- | vkDestroyObjectTableNVX - Destroy a object table------ = Parameters------ - @device@ is the logical device that destroys the table.------ - @objectTable@ is the table to destroy.------ - @pAllocator@ controls host memory allocation as described in the--- [Memory--- Allocation](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#memory-allocation)--- chapter.------ == Valid Usage------ - All submitted commands that refer to @objectTable@ /must/ have--- completed execution.------ - If @VkAllocationCallbacks@ were provided when @objectTable@ was--- created, a compatible set of callbacks /must/ be provided here.------ - If no @VkAllocationCallbacks@ were provided when @objectTable@ was--- created, @pAllocator@ /must/ be @NULL@.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @objectTable@ /must/ be a valid @VkObjectTableNVX@ handle------ - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid--- pointer to a valid @VkAllocationCallbacks@ structure------ - @objectTable@ /must/ have been created, allocated, or retrieved from--- @device@------ == Host Synchronization------ - Host access to @objectTable@ /must/ be externally synchronized------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkAllocationCallbacks',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkObjectTableNVX'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkDestroyObjectTableNVX" vkDestroyObjectTableNVX :: ("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("pAllocator" ::: Ptr VkAllocationCallbacks) -> IO ()--- | vkRegisterObjectsNVX - Register resource bindings in an object table------ = Parameters------ - @device@ is the logical device that creates the object table.------ - @objectTable@ is the table for which the resources are registered.------ - @objectCount@ is the number of resources to register.------ - @ppObjectTableEntries@ provides an array for detailed binding--- informations, each array element is a pointer to a struct of type--- @VkObjectTablePipelineEntryNVX@,--- @VkObjectTableDescriptorSetEntryNVX@,--- @VkObjectTableVertexBufferEntryNVX@,--- @VkObjectTableIndexBufferEntryNVX@ or--- @VkObjectTablePushConstantEntryNVX@ (see below for details).------ - @pObjectIndices@ are the indices at which each resource is--- registered.------ == Valid Usage------ - The contents of @pObjectTableEntry@ /must/ yield plausible bindings--- supported by the device.------ - At any @pObjectIndices@ there /must/ not be a registered resource--- already.------ - Any value inside @pObjectIndices@ /must/ be below the appropriate--- @VkObjectTableCreateInfoNVX@::@pObjectEntryCounts@ limits provided--- at @objectTable@ creation time.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @objectTable@ /must/ be a valid @VkObjectTableNVX@ handle------ - @ppObjectTableEntries@ /must/ be a valid pointer to an array of--- @objectCount@ valid @VkObjectTableEntryNVX@ structures------ - @pObjectIndices@ /must/ be a valid pointer to an array of--- @objectCount@ @uint32_t@ values------ - @objectCount@ /must/ be greater than @0@------ - @objectTable@ /must/ have been created, allocated, or retrieved from--- @device@------ == Host Synchronization------ - Host access to @objectTable@ /must/ be externally synchronized------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkObjectTableEntryNVX', 'VkObjectTableNVX'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkRegisterObjectsNVX" vkRegisterObjectsNVX :: ("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("ppObjectTableEntries" ::: Ptr (Ptr VkObjectTableEntryNVX)) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult--- | vkUnregisterObjectsNVX - Unregister resource bindings in an object table------ = Parameters------ - @device@ is the logical device that creates the object table.------ - @objectTable@ is the table from which the resources are--- unregistered.------ - @objectCount@ is the number of resources being removed from the--- object table.------ - @pObjectEntryType@ provides an array of @VkObjectEntryTypeNVX@ for--- the resources being removed.------ - @pObjectIndices@ provides the array of object indices to be removed.------ == Valid Usage------ - At any @pObjectIndices@ there /must/ be a registered resource--- already.------ - The @pObjectEntryTypes@ of the resource at @pObjectIndices@ /must/--- match.------ - All operations on the device using the registered resource /must/--- have been completed.------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @objectTable@ /must/ be a valid @VkObjectTableNVX@ handle------ - @pObjectEntryTypes@ /must/ be a valid pointer to an array of--- @objectCount@ valid 'VkObjectEntryTypeNVX' values------ - @pObjectIndices@ /must/ be a valid pointer to an array of--- @objectCount@ @uint32_t@ values------ - @objectCount@ /must/ be greater than @0@------ - @objectTable@ /must/ have been created, allocated, or retrieved from--- @device@------ == Host Synchronization------ - Host access to @objectTable@ /must/ be externally synchronized------ == Return Codes------ [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@------ [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@------ - @VK_ERROR_OUT_OF_DEVICE_MEMORY@------ = See Also------ 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'VkObjectEntryTypeNVX', 'VkObjectTableNVX'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkUnregisterObjectsNVX" vkUnregisterObjectsNVX :: ("device" ::: VkDevice) -> ("objectTable" ::: VkObjectTableNVX) -> ("objectCount" ::: Word32) -> ("pObjectEntryTypes" ::: Ptr VkObjectEntryTypeNVX) -> ("pObjectIndices" ::: Ptr Word32) -> IO VkResult--- | vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX - Returns--- device-generated commands related properties of a physical device------ = Parameters------ - @physicalDevice@ is the handle to the physical device whose--- properties will be queried.------ - @pFeatures@ points to an instance of the--- 'VkDeviceGeneratedCommandsFeaturesNVX' structure, that will be--- filled with returned information.------ - @pLimits@ points to an instance of the--- 'VkDeviceGeneratedCommandsLimitsNVX' structure, that will be filled--- with returned information.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @pFeatures@ /must/ be a valid pointer to a--- @VkDeviceGeneratedCommandsFeaturesNVX@ structure------ - @pLimits@ /must/ be a valid pointer to a--- @VkDeviceGeneratedCommandsLimitsNVX@ structure------ = See Also------ 'VkDeviceGeneratedCommandsFeaturesNVX',--- 'VkDeviceGeneratedCommandsLimitsNVX',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX" vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX :: ("physicalDevice" ::: VkPhysicalDevice) -> ("pFeatures" ::: Ptr VkDeviceGeneratedCommandsFeaturesNVX) -> ("pLimits" ::: Ptr VkDeviceGeneratedCommandsLimitsNVX) -> IO ()--- | VkDeviceGeneratedCommandsFeaturesNVX - Structure specifying physical--- device support------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX@------ - @pNext@ /must/ be @NULL@------ = See Also------ @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX'-data VkDeviceGeneratedCommandsFeaturesNVX = VkDeviceGeneratedCommandsFeaturesNVX- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @computeBindingPointSupport@ specifies whether the @VkObjectTableNVX@- -- supports entries with @VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX@ bit set- -- and @VkIndirectCommandsLayoutNVX@ supports- -- @VK_PIPELINE_BIND_POINT_COMPUTE@.- vkComputeBindingPointSupport :: VkBool32- }- deriving (Eq, Show)--instance Storable VkDeviceGeneratedCommandsFeaturesNVX where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkDeviceGeneratedCommandsFeaturesNVX <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDeviceGeneratedCommandsFeaturesNVX))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDeviceGeneratedCommandsFeaturesNVX))- *> poke (ptr `plusPtr` 16) (vkComputeBindingPointSupport (poked :: VkDeviceGeneratedCommandsFeaturesNVX))--- | VkDeviceGeneratedCommandsLimitsNVX - Structure specifying physical--- device limits------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX@------ - @pNext@ /must/ be @NULL@------ = See Also------ 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX'-data VkDeviceGeneratedCommandsLimitsNVX = VkDeviceGeneratedCommandsLimitsNVX- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @maxIndirectCommandsLayoutTokenCount@ the maximum number of tokens in- -- @VkIndirectCommandsLayoutNVX@.- vkMaxIndirectCommandsLayoutTokenCount :: Word32- , -- | @maxObjectEntryCounts@ the maximum number of entries per resource type- -- in @VkObjectTableNVX@.- vkMaxObjectEntryCounts :: Word32- , -- | @minSequenceCountBufferOffsetAlignment@ the minimum alignment for memory- -- addresses optionally used in @vkCmdProcessCommandsNVX@.- vkMinSequenceCountBufferOffsetAlignment :: Word32- , -- | @minSequenceIndexBufferOffsetAlignment@ the minimum alignment for memory- -- addresses optionally used in @vkCmdProcessCommandsNVX@.- vkMinSequenceIndexBufferOffsetAlignment :: Word32- , -- | @minCommandsTokenBufferOffsetAlignment@ the minimum alignment for memory- -- addresses optionally used in @vkCmdProcessCommandsNVX@.- vkMinCommandsTokenBufferOffsetAlignment :: Word32- }- deriving (Eq, Show)--instance Storable VkDeviceGeneratedCommandsLimitsNVX where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkDeviceGeneratedCommandsLimitsNVX <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDeviceGeneratedCommandsLimitsNVX))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDeviceGeneratedCommandsLimitsNVX))- *> poke (ptr `plusPtr` 16) (vkMaxIndirectCommandsLayoutTokenCount (poked :: VkDeviceGeneratedCommandsLimitsNVX))- *> poke (ptr `plusPtr` 20) (vkMaxObjectEntryCounts (poked :: VkDeviceGeneratedCommandsLimitsNVX))- *> poke (ptr `plusPtr` 24) (vkMinSequenceCountBufferOffsetAlignment (poked :: VkDeviceGeneratedCommandsLimitsNVX))- *> poke (ptr `plusPtr` 28) (vkMinSequenceIndexBufferOffsetAlignment (poked :: VkDeviceGeneratedCommandsLimitsNVX))- *> poke (ptr `plusPtr` 32) (vkMinCommandsTokenBufferOffsetAlignment (poked :: VkDeviceGeneratedCommandsLimitsNVX))--- | VkIndirectCommandsTokenNVX - Structure specifying parameters for the--- reservation of command buffer space------ == Valid Usage------ - The @buffer@’s usage flag /must/ have the--- @VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT@ bit set.------ - The @offset@ /must/ be aligned to--- @VkDeviceGeneratedCommandsLimitsNVX@::@minCommandsTokenBufferOffsetAlignment@.------ == Valid Usage (Implicit)------ - @tokenType@ /must/ be a valid 'VkIndirectCommandsTokenTypeNVX' value------ - @buffer@ /must/ be a valid @VkBuffer@ handle------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'VkCmdProcessCommandsInfoNVX', @VkDeviceSize@,--- 'VkIndirectCommandsTokenTypeNVX'-data VkIndirectCommandsTokenNVX = VkIndirectCommandsTokenNVX- { -- | @tokenType@ specifies the token command type.- vkTokenType :: VkIndirectCommandsTokenTypeNVX- , -- | @buffer@ specifies the @VkBuffer@ storing the functional arguments for- -- each squence. These argumetns can be written by the device.- vkBuffer :: VkBuffer- , -- | @offset@ specified an offset into @buffer@ where the arguments start.- vkOffset :: VkDeviceSize- }- deriving (Eq, Show)--instance Storable VkIndirectCommandsTokenNVX where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkIndirectCommandsTokenNVX <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkTokenType (poked :: VkIndirectCommandsTokenNVX))- *> poke (ptr `plusPtr` 8) (vkBuffer (poked :: VkIndirectCommandsTokenNVX))- *> poke (ptr `plusPtr` 16) (vkOffset (poked :: VkIndirectCommandsTokenNVX))--- | VkIndirectCommandsLayoutTokenNVX - Struct specifying the details of an--- indirect command layout token------ == Valid Usage------ - @bindingUnit@ /must/ stay within device supported limits for the--- appropriate commands.------ - @dynamicCount@ /must/ stay within device supported limits for the--- appropriate commands.------ - @divisor@ /must/ be greater than @0@ and a power of two.------ == Valid Usage (Implicit)------ - @tokenType@ /must/ be a valid 'VkIndirectCommandsTokenTypeNVX' value------ = See Also------ 'VkIndirectCommandsLayoutCreateInfoNVX',--- 'VkIndirectCommandsTokenTypeNVX'-data VkIndirectCommandsLayoutTokenNVX = VkIndirectCommandsLayoutTokenNVX- { -- No documentation found for Nested "VkIndirectCommandsLayoutTokenNVX" "tokenType"- vkTokenType :: VkIndirectCommandsTokenTypeNVX- , -- | @bindingUnit@ has a different meaning depending on the type, please- -- refer pseudo code further down for details.- vkBindingUnit :: Word32- , -- | @dynamicCount@ has a different meaning depending on the type, please- -- refer pseudo code further down for details.- vkDynamicCount :: Word32- , -- | @divisor@ defines the rate at which the input data buffers are accessed.- vkDivisor :: Word32- }- deriving (Eq, Show)--instance Storable VkIndirectCommandsLayoutTokenNVX where- sizeOf ~_ = 16- alignment ~_ = 4- peek ptr = VkIndirectCommandsLayoutTokenNVX <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- poke ptr poked = poke (ptr `plusPtr` 0) (vkTokenType (poked :: VkIndirectCommandsLayoutTokenNVX))- *> poke (ptr `plusPtr` 4) (vkBindingUnit (poked :: VkIndirectCommandsLayoutTokenNVX))- *> poke (ptr `plusPtr` 8) (vkDynamicCount (poked :: VkIndirectCommandsLayoutTokenNVX))- *> poke (ptr `plusPtr` 12) (vkDivisor (poked :: VkIndirectCommandsLayoutTokenNVX))--- | VkIndirectCommandsLayoutCreateInfoNVX - Structure specifying the--- parameters of a newly created indirect commands layout object------ = Description------ The following code illustrates some of the key flags:------ > void cmdProcessAllSequences(cmd, objectTable, indirectCommandsLayout, pIndirectCommandsTokens, sequencesCount, indexbuffer, indexbufferoffset)--- > {--- > for (s = 0; s < sequencesCount; s++)--- > {--- > sequence = s;--- >--- > if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX) {--- > sequence = incoherent_implementation_dependent_permutation[ sequence ];--- > }--- > if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX) {--- > sequence = indexbuffer.load_uint32( sequence * sizeof(uint32_t) + indexbufferoffset);--- > }--- >--- > cmdProcessSequence( cmd, objectTable, indirectCommandsLayout, pIndirectCommandsTokens, sequence );--- > }--- > }------ == Valid Usage------ - @tokenCount@ /must/ be greater than @0@ and below--- @VkDeviceGeneratedCommandsLimitsNVX@::@maxIndirectCommandsLayoutTokenCount@------ - If the--- @VkDeviceGeneratedCommandsFeaturesNVX@::@computeBindingPointSupport@--- feature is not enabled, then @pipelineBindPoint@ /must/ not be--- @VK_PIPELINE_BIND_POINT_COMPUTE@------ - If @pTokens@ contains an entry of--- @VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX@ it /must/ be the--- first element of the array and there /must/ be only a single element--- of such token type.------ - All state binding tokens in @pTokens@ /must/ occur prior work--- provoking tokens (@VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX@,--- @VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX@,--- @VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX@).------ - The content of @pTokens@ /must/ include one single work provoking--- token that is compatible with the @pipelineBindPoint@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX@------ - @pNext@ /must/ be @NULL@------ - @pipelineBindPoint@ /must/ be a valid--- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint' value------ - @flags@ /must/ be a valid combination of--- 'VkIndirectCommandsLayoutUsageFlagBitsNVX' values------ - @flags@ /must/ not be @0@------ - @pTokens@ /must/ be a valid pointer to an array of @tokenCount@--- valid @VkIndirectCommandsLayoutTokenNVX@ structures------ - @tokenCount@ /must/ be greater than @0@------ = See Also------ 'VkIndirectCommandsLayoutTokenNVX',--- 'VkIndirectCommandsLayoutUsageFlagsNVX',--- 'Graphics.Vulkan.Core10.Pass.VkPipelineBindPoint',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkCreateIndirectCommandsLayoutNVX'-data VkIndirectCommandsLayoutCreateInfoNVX = VkIndirectCommandsLayoutCreateInfoNVX- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @pipelineBindPoint@ is the @VkPipelineBindPoint@ that this layout- -- targets.- vkPipelineBindPoint :: VkPipelineBindPoint- , -- | @flags@ is a bitmask of 'VkIndirectCommandsLayoutUsageFlagBitsNVX'- -- specifying usage hints of this layout.- vkFlags :: VkIndirectCommandsLayoutUsageFlagsNVX- , -- | @tokenCount@ is the length of the individual command sequnce.- vkTokenCount :: Word32- , -- | @pTokens@ is an array describing each command token in detail. See- -- 'VkIndirectCommandsTokenTypeNVX' and 'VkIndirectCommandsLayoutTokenNVX'- -- below for details.- vkPTokens :: Ptr VkIndirectCommandsLayoutTokenNVX- }- deriving (Eq, Show)--instance Storable VkIndirectCommandsLayoutCreateInfoNVX where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkIndirectCommandsLayoutCreateInfoNVX <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkIndirectCommandsLayoutCreateInfoNVX))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkIndirectCommandsLayoutCreateInfoNVX))- *> poke (ptr `plusPtr` 16) (vkPipelineBindPoint (poked :: VkIndirectCommandsLayoutCreateInfoNVX))- *> poke (ptr `plusPtr` 20) (vkFlags (poked :: VkIndirectCommandsLayoutCreateInfoNVX))- *> poke (ptr `plusPtr` 24) (vkTokenCount (poked :: VkIndirectCommandsLayoutCreateInfoNVX))- *> poke (ptr `plusPtr` 32) (vkPTokens (poked :: VkIndirectCommandsLayoutCreateInfoNVX))--- | VkCmdProcessCommandsInfoNVX - Structure specifying parameters for the--- generation of commands------ == Valid Usage------ - The provided @objectTable@ /must/ include all objects referenced by--- the generation process.------ - @indirectCommandsTokenCount@ /must/ match the--- @indirectCommandsLayout@’s @tokenCount@.------ - The @tokenType@ member of each entry in the--- @pIndirectCommandsTokens@ array /must/ match the values used at--- creation time of @indirectCommandsLayout@------ - If @targetCommandBuffer@ is provided, it /must/ have reserved--- command space.------ - If @targetCommandBuffer@ is provided, the @objectTable@ /must/ match--- the reservation’s objectTable and /must/ have had all referenced--- objects registered at reservation time.------ - If @targetCommandBuffer@ is provided, the @indirectCommandsLayout@--- /must/ match the reservation’s indirectCommandsLayout.------ - If @targetCommandBuffer@ is provided, the @maxSequencesCount@ /must/--- not exceed the reservation’s maxSequencesCount.------ - If @sequencesCountBuffer@ is used, its usage flag /must/ have--- @VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT@ bit set.------ - If @sequencesCountBuffer@ is used, @sequencesCountOffset@ /must/ be--- aligned to--- @VkDeviceGeneratedCommandsLimitsNVX@::@minSequenceCountBufferOffsetAlignment@.------ - If @sequencesIndexBuffer@ is used, its usage flag /must/ have--- @VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT@ bit set.------ - If @sequencesIndexBuffer@ is used, @sequencesIndexOffset@ /must/ be--- aligned to--- @VkDeviceGeneratedCommandsLimitsNVX@::@minSequenceIndexBufferOffsetAlignment@.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX@------ - @pNext@ /must/ be @NULL@------ - @objectTable@ /must/ be a valid @VkObjectTableNVX@ handle------ - @indirectCommandsLayout@ /must/ be a valid--- @VkIndirectCommandsLayoutNVX@ handle------ - @pIndirectCommandsTokens@ /must/ be a valid pointer to an array of--- @indirectCommandsTokenCount@ valid @VkIndirectCommandsTokenNVX@--- structures------ - If @targetCommandBuffer@ is not @NULL@, @targetCommandBuffer@ /must/--- be a valid @VkCommandBuffer@ handle------ - If @sequencesCountBuffer@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @sequencesCountBuffer@ /must/ be a valid @VkBuffer@ handle------ - If @sequencesIndexBuffer@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @sequencesIndexBuffer@ /must/ be a valid @VkBuffer@ handle------ - @indirectCommandsTokenCount@ /must/ be greater than @0@------ - Each of @indirectCommandsLayout@, @objectTable@,--- @sequencesCountBuffer@, @sequencesIndexBuffer@, and--- @targetCommandBuffer@ that are valid handles /must/ have been--- created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @objectTable@ /must/ be externally synchronized------ - Host access to @targetCommandBuffer@ /must/ be externally--- synchronized------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', @VkDeviceSize@,--- 'VkIndirectCommandsLayoutNVX', 'VkIndirectCommandsTokenNVX',--- 'VkObjectTableNVX', 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkCmdProcessCommandsNVX'-data VkCmdProcessCommandsInfoNVX = VkCmdProcessCommandsInfoNVX- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @objectTable@ is the @VkObjectTableNVX@ to be used for the generation- -- process. Only registered objects at the time- -- 'vkCmdReserveSpaceForCommandsNVX' is called, will be taken into account- -- for the reservation.- vkObjectTable :: VkObjectTableNVX- , -- | @indirectCommandsLayout@ is the @VkIndirectCommandsLayoutNVX@ that- -- provides the command sequence to generate.- vkIndirectCommandsLayout :: VkIndirectCommandsLayoutNVX- , -- | @indirectCommandsTokenCount@ defines the number of input tokens used.- vkIndirectCommandsTokenCount :: Word32- , -- | @pIndirectCommandsTokens@ provides an array of- -- 'VkIndirectCommandsTokenNVX' that reference the input data for each- -- token command.- vkPIndirectCommandsTokens :: Ptr VkIndirectCommandsTokenNVX- , -- | @maxSequencesCount@ is the maximum number of sequences for which command- -- buffer space will be reserved. If @sequencesCountBuffer@ is- -- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', this is also the- -- actual number of sequences generated.- vkMaxSequencesCount :: Word32- , -- | @targetCommandBuffer@ /can/ be the secondary @VkCommandBuffer@ in which- -- the commands should be recorded. If @targetCommandBuffer@ is @NULL@ an- -- implicit reservation as well as execution takes place on the processing- -- @VkCommandBuffer@.- vkTargetCommandBuffer :: VkCommandBuffer- , -- | @sequencesCountBuffer@ /can/ be @VkBuffer@ from which the actual amount- -- of sequences is sourced from as @uint32_t@ value.- vkSequencesCountBuffer :: VkBuffer- , -- | @sequencesCountOffset@ is the byte offset into @sequencesCountBuffer@- -- where the count value is stored.- vkSequencesCountOffset :: VkDeviceSize- , -- | @sequencesIndexBuffer@ /must/ be set if @indirectCommandsLayout@’s- -- @VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT@ is set and- -- provides the used sequence indices as @uint32_t@ array. Otherwise it- -- /must/ be 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'.- vkSequencesIndexBuffer :: VkBuffer- , -- | @sequencesIndexOffset@ is the byte offset into @sequencesIndexBuffer@- -- where the index values start.- vkSequencesIndexOffset :: VkDeviceSize- }- deriving (Eq, Show)--instance Storable VkCmdProcessCommandsInfoNVX where- sizeOf ~_ = 96- alignment ~_ = 8- peek ptr = VkCmdProcessCommandsInfoNVX <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 64)- <*> peek (ptr `plusPtr` 72)- <*> peek (ptr `plusPtr` 80)- <*> peek (ptr `plusPtr` 88)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkCmdProcessCommandsInfoNVX))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkCmdProcessCommandsInfoNVX))- *> poke (ptr `plusPtr` 16) (vkObjectTable (poked :: VkCmdProcessCommandsInfoNVX))- *> poke (ptr `plusPtr` 24) (vkIndirectCommandsLayout (poked :: VkCmdProcessCommandsInfoNVX))- *> poke (ptr `plusPtr` 32) (vkIndirectCommandsTokenCount (poked :: VkCmdProcessCommandsInfoNVX))- *> poke (ptr `plusPtr` 40) (vkPIndirectCommandsTokens (poked :: VkCmdProcessCommandsInfoNVX))- *> poke (ptr `plusPtr` 48) (vkMaxSequencesCount (poked :: VkCmdProcessCommandsInfoNVX))- *> poke (ptr `plusPtr` 56) (vkTargetCommandBuffer (poked :: VkCmdProcessCommandsInfoNVX))- *> poke (ptr `plusPtr` 64) (vkSequencesCountBuffer (poked :: VkCmdProcessCommandsInfoNVX))- *> poke (ptr `plusPtr` 72) (vkSequencesCountOffset (poked :: VkCmdProcessCommandsInfoNVX))- *> poke (ptr `plusPtr` 80) (vkSequencesIndexBuffer (poked :: VkCmdProcessCommandsInfoNVX))- *> poke (ptr `plusPtr` 88) (vkSequencesIndexOffset (poked :: VkCmdProcessCommandsInfoNVX))--- | VkCmdReserveSpaceForCommandsInfoNVX - Structure specifying parameters--- for the reservation of command buffer space------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX@------ - @pNext@ /must/ be @NULL@------ - @objectTable@ /must/ be a valid @VkObjectTableNVX@ handle------ - @indirectCommandsLayout@ /must/ be a valid--- @VkIndirectCommandsLayoutNVX@ handle------ - Both of @indirectCommandsLayout@, and @objectTable@ /must/ have been--- created, allocated, or retrieved from the same @VkDevice@------ == Host Synchronization------ - Host access to @objectTable@ /must/ be externally synchronized------ = See Also------ 'VkIndirectCommandsLayoutNVX', 'VkObjectTableNVX',--- 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'vkCmdReserveSpaceForCommandsNVX'-data VkCmdReserveSpaceForCommandsInfoNVX = VkCmdReserveSpaceForCommandsInfoNVX- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @objectTable@ is the @VkObjectTableNVX@ to be used for the generation- -- process. Only registered objects at the time- -- 'vkCmdReserveSpaceForCommandsNVX' is called, will be taken into account- -- for the reservation.- vkObjectTable :: VkObjectTableNVX- , -- | @indirectCommandsLayout@ is the @VkIndirectCommandsLayoutNVX@ that- -- /must/ also be used at generation time.- vkIndirectCommandsLayout :: VkIndirectCommandsLayoutNVX- , -- | @maxSequencesCount@ is the maximum number of sequences for which command- -- buffer space will be reserved.- vkMaxSequencesCount :: Word32- }- deriving (Eq, Show)--instance Storable VkCmdReserveSpaceForCommandsInfoNVX where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkCmdReserveSpaceForCommandsInfoNVX <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkCmdReserveSpaceForCommandsInfoNVX))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkCmdReserveSpaceForCommandsInfoNVX))- *> poke (ptr `plusPtr` 16) (vkObjectTable (poked :: VkCmdReserveSpaceForCommandsInfoNVX))- *> poke (ptr `plusPtr` 24) (vkIndirectCommandsLayout (poked :: VkCmdReserveSpaceForCommandsInfoNVX))- *> poke (ptr `plusPtr` 32) (vkMaxSequencesCount (poked :: VkCmdReserveSpaceForCommandsInfoNVX))--- | VkObjectTableCreateInfoNVX - Structure specifying the parameters of a--- newly created object table------ == Valid Usage------ - If the--- @VkDeviceGeneratedCommandsFeaturesNVX@::@computeBindingPointSupport@--- feature is not enabled, @pObjectEntryUsageFlags@ /must/ not contain--- @VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX@------ - Any value within @pObjectEntryCounts@ /must/ not exceed--- @VkDeviceGeneratedCommandsLimitsNVX@::@maxObjectEntryCounts@------ - @maxUniformBuffersPerDescriptor@ /must/ be within the limits--- supported by the device.------ - @maxStorageBuffersPerDescriptor@ /must/ be within the limits--- supported by the device.------ - @maxStorageImagesPerDescriptor@ /must/ be within the limits--- supported by the device.------ - @maxSampledImagesPerDescriptor@ /must/ be within the limits--- supported by the device.------ == Valid Usage (Implicit)------ - @sType@ /must/ be @VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX@------ - @pNext@ /must/ be @NULL@------ - @pObjectEntryTypes@ /must/ be a valid pointer to an array of--- @objectCount@ valid 'VkObjectEntryTypeNVX' values------ - @pObjectEntryCounts@ /must/ be a valid pointer to an array of--- @objectCount@ @uint32_t@ values------ - @pObjectEntryUsageFlags@ /must/ be a valid pointer to an array of--- @objectCount@ valid combinations of 'VkObjectEntryUsageFlagBitsNVX'--- values------ - Each element of @pObjectEntryUsageFlags@ /must/ not be @0@------ - @objectCount@ /must/ be greater than @0@------ = See Also------ 'VkObjectEntryTypeNVX', 'VkObjectEntryUsageFlagsNVX',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'vkCreateObjectTableNVX'-data VkObjectTableCreateInfoNVX = VkObjectTableCreateInfoNVX- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @objectCount@ is the number of entry configurations that the object- -- table supports.- vkObjectCount :: Word32- , -- | @pObjectEntryTypes@ is an array of 'VkObjectEntryTypeNVX' values- -- providing the entry type of a given configuration.- vkPObjectEntryTypes :: Ptr VkObjectEntryTypeNVX- , -- | @pObjectEntryCounts@ is an array of counts of how many objects can be- -- registered in the table.- vkPObjectEntryCounts :: Ptr Word32- , -- | @pObjectEntryUsageFlags@ is an array of bitmasks of- -- 'VkObjectEntryUsageFlagBitsNVX' specifying the binding usage of the- -- entry.- vkPObjectEntryUsageFlags :: Ptr VkObjectEntryUsageFlagsNVX- , -- | @maxUniformBuffersPerDescriptor@ is the maximum number of- -- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER@ or- -- @VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC@ used by any single- -- registered @VkDescriptorSet@ in this table.- vkMaxUniformBuffersPerDescriptor :: Word32- , -- | @maxStorageBuffersPerDescriptor@ is the maximum number of- -- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER@ or- -- @VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC@ used by any single- -- registered @VkDescriptorSet@ in this table.- vkMaxStorageBuffersPerDescriptor :: Word32- , -- | @maxStorageImagesPerDescriptor@ is the maximum number of- -- @VK_DESCRIPTOR_TYPE_STORAGE_IMAGE@ or- -- @VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER@ used by any single registered- -- @VkDescriptorSet@ in this table.- vkMaxStorageImagesPerDescriptor :: Word32- , -- | @maxSampledImagesPerDescriptor@ is the maximum number of- -- @VK_DESCRIPTOR_TYPE_SAMPLER@,- -- @VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER@,- -- @VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER@ or- -- @VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT@ used by any single registered- -- @VkDescriptorSet@ in this table.- vkMaxSampledImagesPerDescriptor :: Word32- , -- | @maxPipelineLayouts@ is the maximum number of unique @VkPipelineLayout@- -- used by any registered @VkDescriptorSet@ or @VkPipeline@ in this table.- vkMaxPipelineLayouts :: Word32- }- deriving (Eq, Show)--instance Storable VkObjectTableCreateInfoNVX where- sizeOf ~_ = 72- alignment ~_ = 8- peek ptr = VkObjectTableCreateInfoNVX <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 52)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 60)- <*> peek (ptr `plusPtr` 64)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkObjectTableCreateInfoNVX))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkObjectTableCreateInfoNVX))- *> poke (ptr `plusPtr` 16) (vkObjectCount (poked :: VkObjectTableCreateInfoNVX))- *> poke (ptr `plusPtr` 24) (vkPObjectEntryTypes (poked :: VkObjectTableCreateInfoNVX))- *> poke (ptr `plusPtr` 32) (vkPObjectEntryCounts (poked :: VkObjectTableCreateInfoNVX))- *> poke (ptr `plusPtr` 40) (vkPObjectEntryUsageFlags (poked :: VkObjectTableCreateInfoNVX))- *> poke (ptr `plusPtr` 48) (vkMaxUniformBuffersPerDescriptor (poked :: VkObjectTableCreateInfoNVX))- *> poke (ptr `plusPtr` 52) (vkMaxStorageBuffersPerDescriptor (poked :: VkObjectTableCreateInfoNVX))- *> poke (ptr `plusPtr` 56) (vkMaxStorageImagesPerDescriptor (poked :: VkObjectTableCreateInfoNVX))- *> poke (ptr `plusPtr` 60) (vkMaxSampledImagesPerDescriptor (poked :: VkObjectTableCreateInfoNVX))- *> poke (ptr `plusPtr` 64) (vkMaxPipelineLayouts (poked :: VkObjectTableCreateInfoNVX))--- | VkObjectTableEntryNVX - Common parameters of an object table resource--- entry------ == Valid Usage------ - If the--- @VkDeviceGeneratedCommandsFeaturesNVX@::@computeBindingPointSupport@--- feature is not enabled, @flags@ /must/ not contain--- @VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX@------ == Valid Usage (Implicit)------ - @type@ /must/ be a valid 'VkObjectEntryTypeNVX' value------ - @flags@ /must/ be a valid combination of--- 'VkObjectEntryUsageFlagBitsNVX' values------ - @flags@ /must/ not be @0@------ = See Also------ 'VkObjectEntryTypeNVX', 'VkObjectEntryUsageFlagsNVX',--- 'vkRegisterObjectsNVX'-data VkObjectTableEntryNVX = VkObjectTableEntryNVX- { -- | @type@ defines the entry type- vkType :: VkObjectEntryTypeNVX- , -- | @flags@ defines which @VkPipelineBindPoint@ the resource can be used- -- with. Some entry types allow only a single flag to be set.- vkFlags :: VkObjectEntryUsageFlagsNVX- }- deriving (Eq, Show)--instance Storable VkObjectTableEntryNVX where- sizeOf ~_ = 8- alignment ~_ = 4- peek ptr = VkObjectTableEntryNVX <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- poke ptr poked = poke (ptr `plusPtr` 0) (vkType (poked :: VkObjectTableEntryNVX))- *> poke (ptr `plusPtr` 4) (vkFlags (poked :: VkObjectTableEntryNVX))--- | VkObjectTablePipelineEntryNVX - Parameters of an object table pipeline--- entry------ == Valid Usage------ - @type@ /must/ be @VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX@------ == Valid Usage (Implicit)------ - @type@ /must/ be a valid 'VkObjectEntryTypeNVX' value------ - @flags@ /must/ be a valid combination of--- 'VkObjectEntryUsageFlagBitsNVX' values------ - @flags@ /must/ not be @0@------ - @pipeline@ /must/ be a valid @VkPipeline@ handle------ = See Also------ 'VkObjectEntryTypeNVX', 'VkObjectEntryUsageFlagsNVX',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipeline'-data VkObjectTablePipelineEntryNVX = VkObjectTablePipelineEntryNVX- { -- No documentation found for Nested "VkObjectTablePipelineEntryNVX" "type"- vkType :: VkObjectEntryTypeNVX- , -- No documentation found for Nested "VkObjectTablePipelineEntryNVX" "flags"- vkFlags :: VkObjectEntryUsageFlagsNVX- , -- | @pipeline@ specifies the @VkPipeline@ that this resource entry- -- references.- vkPipeline :: VkPipeline- }- deriving (Eq, Show)--instance Storable VkObjectTablePipelineEntryNVX where- sizeOf ~_ = 16- alignment ~_ = 8- peek ptr = VkObjectTablePipelineEntryNVX <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkType (poked :: VkObjectTablePipelineEntryNVX))- *> poke (ptr `plusPtr` 4) (vkFlags (poked :: VkObjectTablePipelineEntryNVX))- *> poke (ptr `plusPtr` 8) (vkPipeline (poked :: VkObjectTablePipelineEntryNVX))--- | VkObjectTableDescriptorSetEntryNVX - Parameters of an object table--- descriptor set entry------ == Valid Usage------ - @type@ /must/ be @VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX@------ == Valid Usage (Implicit)------ - @type@ /must/ be a valid 'VkObjectEntryTypeNVX' value------ - @flags@ /must/ be a valid combination of--- 'VkObjectEntryUsageFlagBitsNVX' values------ - @flags@ /must/ not be @0@------ - @pipelineLayout@ /must/ be a valid @VkPipelineLayout@ handle------ - @descriptorSet@ /must/ be a valid @VkDescriptorSet@ handle------ - Both of @descriptorSet@, and @pipelineLayout@ /must/ have been--- created, allocated, or retrieved from the same @VkDevice@------ = See Also------ 'Graphics.Vulkan.Core10.DescriptorSet.VkDescriptorSet',--- 'VkObjectEntryTypeNVX', 'VkObjectEntryUsageFlagsNVX',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout'-data VkObjectTableDescriptorSetEntryNVX = VkObjectTableDescriptorSetEntryNVX- { -- No documentation found for Nested "VkObjectTableDescriptorSetEntryNVX" "type"- vkType :: VkObjectEntryTypeNVX- , -- No documentation found for Nested "VkObjectTableDescriptorSetEntryNVX" "flags"- vkFlags :: VkObjectEntryUsageFlagsNVX- , -- | @pipelineLayout@ specifies the @VkPipelineLayout@ that the- -- @descriptorSet@ is used with.- vkPipelineLayout :: VkPipelineLayout- , -- | @descriptorSet@ specifies the @VkDescriptorSet@ that can be bound with- -- this entry.- vkDescriptorSet :: VkDescriptorSet- }- deriving (Eq, Show)--instance Storable VkObjectTableDescriptorSetEntryNVX where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkObjectTableDescriptorSetEntryNVX <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkType (poked :: VkObjectTableDescriptorSetEntryNVX))- *> poke (ptr `plusPtr` 4) (vkFlags (poked :: VkObjectTableDescriptorSetEntryNVX))- *> poke (ptr `plusPtr` 8) (vkPipelineLayout (poked :: VkObjectTableDescriptorSetEntryNVX))- *> poke (ptr `plusPtr` 16) (vkDescriptorSet (poked :: VkObjectTableDescriptorSetEntryNVX))--- | VkObjectTableVertexBufferEntryNVX - Parameters of an object table vertex--- buffer entry------ == Valid Usage------ - @type@ /must/ be @VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX@------ == Valid Usage (Implicit)------ - @type@ /must/ be a valid 'VkObjectEntryTypeNVX' value------ - @flags@ /must/ be a valid combination of--- 'VkObjectEntryUsageFlagBitsNVX' values------ - @flags@ /must/ not be @0@------ - @buffer@ /must/ be a valid @VkBuffer@ handle------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'VkObjectEntryTypeNVX', 'VkObjectEntryUsageFlagsNVX'-data VkObjectTableVertexBufferEntryNVX = VkObjectTableVertexBufferEntryNVX- { -- No documentation found for Nested "VkObjectTableVertexBufferEntryNVX" "type"- vkType :: VkObjectEntryTypeNVX- , -- No documentation found for Nested "VkObjectTableVertexBufferEntryNVX" "flags"- vkFlags :: VkObjectEntryUsageFlagsNVX- , -- | @buffer@ specifies the @VkBuffer@ that can be bound as vertex bufer- vkBuffer :: VkBuffer- }- deriving (Eq, Show)--instance Storable VkObjectTableVertexBufferEntryNVX where- sizeOf ~_ = 16- alignment ~_ = 8- peek ptr = VkObjectTableVertexBufferEntryNVX <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- poke ptr poked = poke (ptr `plusPtr` 0) (vkType (poked :: VkObjectTableVertexBufferEntryNVX))- *> poke (ptr `plusPtr` 4) (vkFlags (poked :: VkObjectTableVertexBufferEntryNVX))- *> poke (ptr `plusPtr` 8) (vkBuffer (poked :: VkObjectTableVertexBufferEntryNVX))--- | VkObjectTableIndexBufferEntryNVX - Parameters of an object table index--- buffer entry------ == Valid Usage------ - @type@ /must/ be @VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX@------ == Valid Usage (Implicit)------ - @type@ /must/ be a valid 'VkObjectEntryTypeNVX' value------ - @flags@ /must/ be a valid combination of--- 'VkObjectEntryUsageFlagBitsNVX' values------ - @flags@ /must/ not be @0@------ - @buffer@ /must/ be a valid @VkBuffer@ handle------ - @indexType@ /must/ be a valid--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkIndexType' value------ = See Also------ 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.CommandBufferBuilding.VkIndexType',--- 'VkObjectEntryTypeNVX', 'VkObjectEntryUsageFlagsNVX'-data VkObjectTableIndexBufferEntryNVX = VkObjectTableIndexBufferEntryNVX- { -- No documentation found for Nested "VkObjectTableIndexBufferEntryNVX" "type"- vkType :: VkObjectEntryTypeNVX- , -- No documentation found for Nested "VkObjectTableIndexBufferEntryNVX" "flags"- vkFlags :: VkObjectEntryUsageFlagsNVX- , -- | @buffer@ specifies the @VkBuffer@ that can be bound as index buffer- vkBuffer :: VkBuffer- , -- | @indexType@ specifies the @VkIndexType@ used with this index buffer- vkIndexType :: VkIndexType- }- deriving (Eq, Show)--instance Storable VkObjectTableIndexBufferEntryNVX where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkObjectTableIndexBufferEntryNVX <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkType (poked :: VkObjectTableIndexBufferEntryNVX))- *> poke (ptr `plusPtr` 4) (vkFlags (poked :: VkObjectTableIndexBufferEntryNVX))- *> poke (ptr `plusPtr` 8) (vkBuffer (poked :: VkObjectTableIndexBufferEntryNVX))- *> poke (ptr `plusPtr` 16) (vkIndexType (poked :: VkObjectTableIndexBufferEntryNVX))--- | VkObjectTablePushConstantEntryNVX - Parameters of an object table push--- constant entry------ == Valid Usage------ - @type@ /must/ be @VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX@------ == Valid Usage (Implicit)------ - @type@ /must/ be a valid 'VkObjectEntryTypeNVX' value------ - @flags@ /must/ be a valid combination of--- 'VkObjectEntryUsageFlagBitsNVX' values------ - @flags@ /must/ not be @0@------ - @pipelineLayout@ /must/ be a valid @VkPipelineLayout@ handle------ - @stageFlags@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.Pipeline.VkShaderStageFlagBits' values------ - @stageFlags@ /must/ not be @0@------ = See Also------ 'VkObjectEntryTypeNVX', 'VkObjectEntryUsageFlagsNVX',--- 'Graphics.Vulkan.Core10.Pipeline.VkPipelineLayout',--- 'Graphics.Vulkan.Core10.PipelineLayout.VkShaderStageFlags'-data VkObjectTablePushConstantEntryNVX = VkObjectTablePushConstantEntryNVX- { -- No documentation found for Nested "VkObjectTablePushConstantEntryNVX" "type"- vkType :: VkObjectEntryTypeNVX- , -- No documentation found for Nested "VkObjectTablePushConstantEntryNVX" "flags"- vkFlags :: VkObjectEntryUsageFlagsNVX- , -- | @pipelineLayout@ specifies the @VkPipelineLayout@ that the pushconstants- -- are used with- vkPipelineLayout :: VkPipelineLayout- , -- | @stageFlags@ specifies the @VkShaderStageFlags@ that the pushconstants- -- are used with- vkStageFlags :: VkShaderStageFlags- }- deriving (Eq, Show)--instance Storable VkObjectTablePushConstantEntryNVX where- sizeOf ~_ = 24- alignment ~_ = 8- peek ptr = VkObjectTablePushConstantEntryNVX <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkType (poked :: VkObjectTablePushConstantEntryNVX))- *> poke (ptr `plusPtr` 4) (vkFlags (poked :: VkObjectTablePushConstantEntryNVX))- *> poke (ptr `plusPtr` 8) (vkPipelineLayout (poked :: VkObjectTablePushConstantEntryNVX))- *> poke (ptr `plusPtr` 16) (vkStageFlags (poked :: VkObjectTablePushConstantEntryNVX))--- | VkIndirectCommandsLayoutUsageFlagsNVX - Bitmask of--- VkIndirectCommandsLayoutUsageFlagBitsNVX------ = Description------ @VkIndirectCommandsLayoutUsageFlagsNVX@ is a bitmask type for setting a--- mask of zero or more 'VkIndirectCommandsLayoutUsageFlagBitsNVX'.------ = See Also------ 'VkIndirectCommandsLayoutCreateInfoNVX',--- 'VkIndirectCommandsLayoutUsageFlagBitsNVX'-type VkIndirectCommandsLayoutUsageFlagsNVX = VkIndirectCommandsLayoutUsageFlagBitsNVX--- | VkObjectEntryUsageFlagsNVX - Bitmask of VkObjectEntryUsageFlagBitsNVX------ = Description------ @VkObjectEntryUsageFlagsNVX@ is a bitmask type for setting a mask of--- zero or more 'VkObjectEntryUsageFlagBitsNVX'.------ = See Also------ 'VkObjectEntryUsageFlagBitsNVX', 'VkObjectTableCreateInfoNVX',--- 'VkObjectTableDescriptorSetEntryNVX', 'VkObjectTableEntryNVX',--- 'VkObjectTableIndexBufferEntryNVX', 'VkObjectTablePipelineEntryNVX',--- 'VkObjectTablePushConstantEntryNVX', 'VkObjectTableVertexBufferEntryNVX'-type VkObjectEntryUsageFlagsNVX = VkObjectEntryUsageFlagBitsNVX+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands ( cmdProcessCommandsNVX+ , cmdReserveSpaceForCommandsNVX+ , createIndirectCommandsLayoutNVX+ , withIndirectCommandsLayoutNVX+ , destroyIndirectCommandsLayoutNVX+ , createObjectTableNVX+ , withObjectTableNVX+ , destroyObjectTableNVX+ , registerObjectsNVX+ , withRegisteredObjectsNVX+ , unregisterObjectsNVX+ , getPhysicalDeviceGeneratedCommandsPropertiesNVX+ , DeviceGeneratedCommandsFeaturesNVX(..)+ , DeviceGeneratedCommandsLimitsNVX(..)+ , IndirectCommandsTokenNVX(..)+ , IndirectCommandsLayoutTokenNVX(..)+ , IndirectCommandsLayoutCreateInfoNVX(..)+ , CmdProcessCommandsInfoNVX(..)+ , CmdReserveSpaceForCommandsInfoNVX(..)+ , ObjectTableCreateInfoNVX(..)+ , ObjectTableEntryNVX(..)+ , ObjectTablePipelineEntryNVX(..)+ , ObjectTableDescriptorSetEntryNVX(..)+ , ObjectTableVertexBufferEntryNVX(..)+ , ObjectTableIndexBufferEntryNVX(..)+ , ObjectTablePushConstantEntryNVX(..)+ , IndirectCommandsLayoutUsageFlagBitsNVX( INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX+ , INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX+ , INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX+ , INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX+ , ..+ )+ , IndirectCommandsLayoutUsageFlagsNVX+ , ObjectEntryUsageFlagBitsNVX( OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX+ , OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX+ , ..+ )+ , ObjectEntryUsageFlagsNVX+ , IndirectCommandsTokenTypeNVX( INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX+ , INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX+ , INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX+ , INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX+ , INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX+ , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX+ , INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX+ , INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX+ , ..+ )+ , ObjectEntryTypeNVX( OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX+ , OBJECT_ENTRY_TYPE_PIPELINE_NVX+ , OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX+ , OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX+ , OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX+ , ..+ )+ , NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION+ , pattern NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION+ , NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME+ , pattern NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME+ , ObjectTableNVX(..)+ , IndirectCommandsLayoutNVX(..)+ ) where++import Control.Exception.Base (bracket)+import Control.Exception.Base (bracket_)+import Control.Monad (unless)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Bits (Bits)+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.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Core10.Handles (DescriptorSet)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdProcessCommandsNVX))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdReserveSpaceForCommandsNVX))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateIndirectCommandsLayoutNVX))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateObjectTableNVX))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyIndirectCommandsLayoutNVX))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyObjectTableNVX))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkRegisterObjectsNVX))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkUnregisterObjectsNVX))+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.IndexType (IndexType)+import Graphics.Vulkan.Extensions.Handles (IndirectCommandsLayoutNVX)+import Graphics.Vulkan.Extensions.Handles (IndirectCommandsLayoutNVX(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX))+import Graphics.Vulkan.Extensions.Handles (ObjectTableNVX)+import Graphics.Vulkan.Extensions.Handles (ObjectTableNVX(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Core10.Handles (Pipeline)+import Graphics.Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint)+import Graphics.Vulkan.Core10.Handles (PipelineLayout)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.Handles (IndirectCommandsLayoutNVX(..))+import Graphics.Vulkan.Extensions.Handles (ObjectTableNVX(..))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdProcessCommandsNVX+ :: FunPtr (Ptr CommandBuffer_T -> Ptr CmdProcessCommandsInfoNVX -> IO ()) -> Ptr CommandBuffer_T -> Ptr CmdProcessCommandsInfoNVX -> IO ()++-- | vkCmdProcessCommandsNVX - Performs the generation of commands on the+-- device+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the primary+-- command buffer in which the generation process takes space.+--+-- - @pProcessCommandsInfo@ is a pointer to a 'CmdProcessCommandsInfoNVX'+-- structure containing parameters affecting the processing of+-- commands.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pProcessCommandsInfo@ /must/ be a valid pointer to a valid+-- 'CmdProcessCommandsInfoNVX' structure+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Inside | Graphics | |+-- | Secondary | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'CmdProcessCommandsInfoNVX',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdProcessCommandsNVX :: CommandBuffer -> CmdProcessCommandsInfoNVX -> IO ()+cmdProcessCommandsNVX commandBuffer processCommandsInfo = evalContT $ do+ let vkCmdProcessCommandsNVX' = mkVkCmdProcessCommandsNVX (pVkCmdProcessCommandsNVX (deviceCmds (commandBuffer :: CommandBuffer)))+ pProcessCommandsInfo <- ContT $ withCStruct (processCommandsInfo)+ lift $ vkCmdProcessCommandsNVX' (commandBufferHandle (commandBuffer)) pProcessCommandsInfo+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdReserveSpaceForCommandsNVX+ :: FunPtr (Ptr CommandBuffer_T -> Ptr CmdReserveSpaceForCommandsInfoNVX -> IO ()) -> Ptr CommandBuffer_T -> Ptr CmdReserveSpaceForCommandsInfoNVX -> IO ()++-- | vkCmdReserveSpaceForCommandsNVX - Perform a reservation of command+-- buffer space+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the secondary+-- command buffer in which the space for device-generated commands is+-- reserved.+--+-- - @pProcessCommandsInfo@ is a pointer to a+-- 'CmdReserveSpaceForCommandsInfoNVX' structure containing parameters+-- affecting the reservation of command buffer space.+--+-- == Valid Usage+--+-- - The provided 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- not have had a prior space reservation since its creation or the+-- last reset.+--+-- - The state of the 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+-- /must/ be legal to execute all commands within the sequence provided+-- by the @indirectCommandsLayout@ member of @pProcessCommandsInfo@.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pReserveSpaceInfo@ /must/ be a valid pointer to a valid+-- 'CmdReserveSpaceForCommandsInfoNVX' structure+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, or compute operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a secondary+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Secondary | Inside | Graphics | |+-- | | | Compute | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'CmdReserveSpaceForCommandsInfoNVX',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdReserveSpaceForCommandsNVX :: CommandBuffer -> ("reserveSpaceInfo" ::: CmdReserveSpaceForCommandsInfoNVX) -> IO ()+cmdReserveSpaceForCommandsNVX commandBuffer reserveSpaceInfo = evalContT $ do+ let vkCmdReserveSpaceForCommandsNVX' = mkVkCmdReserveSpaceForCommandsNVX (pVkCmdReserveSpaceForCommandsNVX (deviceCmds (commandBuffer :: CommandBuffer)))+ pReserveSpaceInfo <- ContT $ withCStruct (reserveSpaceInfo)+ lift $ vkCmdReserveSpaceForCommandsNVX' (commandBufferHandle (commandBuffer)) pReserveSpaceInfo+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateIndirectCommandsLayoutNVX+ :: FunPtr (Ptr Device_T -> Ptr IndirectCommandsLayoutCreateInfoNVX -> Ptr AllocationCallbacks -> Ptr IndirectCommandsLayoutNVX -> IO Result) -> Ptr Device_T -> Ptr IndirectCommandsLayoutCreateInfoNVX -> Ptr AllocationCallbacks -> Ptr IndirectCommandsLayoutNVX -> IO Result++-- | vkCreateIndirectCommandsLayoutNVX - Create an indirect command layout+-- object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the indirect command layout.+--+-- - @pCreateInfo@ is a pointer to a+-- 'IndirectCommandsLayoutCreateInfoNVX' structure containing+-- parameters affecting creation of the indirect command layout.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pIndirectCommandsLayout@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX'+-- handle in which the resulting indirect command layout is returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'IndirectCommandsLayoutCreateInfoNVX' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pIndirectCommandsLayout@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX'+-- handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'IndirectCommandsLayoutCreateInfoNVX',+-- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX'+createIndirectCommandsLayoutNVX :: Device -> IndirectCommandsLayoutCreateInfoNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (IndirectCommandsLayoutNVX)+createIndirectCommandsLayoutNVX device createInfo allocator = evalContT $ do+ let vkCreateIndirectCommandsLayoutNVX' = mkVkCreateIndirectCommandsLayoutNVX (pVkCreateIndirectCommandsLayoutNVX (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPIndirectCommandsLayout <- ContT $ bracket (callocBytes @IndirectCommandsLayoutNVX 8) free+ r <- lift $ vkCreateIndirectCommandsLayoutNVX' (deviceHandle (device)) pCreateInfo pAllocator (pPIndirectCommandsLayout)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pIndirectCommandsLayout <- lift $ peek @IndirectCommandsLayoutNVX pPIndirectCommandsLayout+ pure $ (pIndirectCommandsLayout)++-- | A safe wrapper for 'createIndirectCommandsLayoutNVX' and+-- 'destroyIndirectCommandsLayoutNVX' using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withIndirectCommandsLayoutNVX :: Device -> IndirectCommandsLayoutCreateInfoNVX -> Maybe AllocationCallbacks -> (IndirectCommandsLayoutNVX -> IO r) -> IO r+withIndirectCommandsLayoutNVX device indirectCommandsLayoutCreateInfoNVX allocationCallbacks =+ bracket+ (createIndirectCommandsLayoutNVX device indirectCommandsLayoutCreateInfoNVX allocationCallbacks)+ (\o -> destroyIndirectCommandsLayoutNVX device o allocationCallbacks)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDestroyIndirectCommandsLayoutNVX+ :: FunPtr (Ptr Device_T -> IndirectCommandsLayoutNVX -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> IndirectCommandsLayoutNVX -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyIndirectCommandsLayoutNVX - Destroy an object table+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the layout.+--+-- - @indirectCommandsLayout@ is the table to destroy.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- == Valid Usage+--+-- - All submitted commands that refer to @indirectCommandsLayout@ /must/+-- have completed execution+--+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when @objectTable@ was created, a compatible set of+-- callbacks /must/ be provided here+--+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when @objectTable@ was created, @pAllocator@ /must/ be+-- @NULL@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @indirectCommandsLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX'+-- handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @indirectCommandsLayout@ /must/ have been created, allocated, or+-- retrieved from 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX'+destroyIndirectCommandsLayoutNVX :: Device -> IndirectCommandsLayoutNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyIndirectCommandsLayoutNVX device indirectCommandsLayout allocator = evalContT $ do+ let vkDestroyIndirectCommandsLayoutNVX' = mkVkDestroyIndirectCommandsLayoutNVX (pVkDestroyIndirectCommandsLayoutNVX (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyIndirectCommandsLayoutNVX' (deviceHandle (device)) (indirectCommandsLayout) pAllocator+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateObjectTableNVX+ :: FunPtr (Ptr Device_T -> Ptr ObjectTableCreateInfoNVX -> Ptr AllocationCallbacks -> Ptr ObjectTableNVX -> IO Result) -> Ptr Device_T -> Ptr ObjectTableCreateInfoNVX -> Ptr AllocationCallbacks -> Ptr ObjectTableNVX -> IO Result++-- | vkCreateObjectTableNVX - Create an object table+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the object table.+--+-- - @pCreateInfo@ is a pointer to a 'ObjectTableCreateInfoNVX' structure+-- containing parameters affecting creation of the table.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pObjectTable@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX' handle in which+-- the resulting object table is returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'ObjectTableCreateInfoNVX' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pObjectTable@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device', 'ObjectTableCreateInfoNVX',+-- 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX'+createObjectTableNVX :: Device -> ObjectTableCreateInfoNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (ObjectTableNVX)+createObjectTableNVX device createInfo allocator = evalContT $ do+ let vkCreateObjectTableNVX' = mkVkCreateObjectTableNVX (pVkCreateObjectTableNVX (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPObjectTable <- ContT $ bracket (callocBytes @ObjectTableNVX 8) free+ r <- lift $ vkCreateObjectTableNVX' (deviceHandle (device)) pCreateInfo pAllocator (pPObjectTable)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pObjectTable <- lift $ peek @ObjectTableNVX pPObjectTable+ pure $ (pObjectTable)++-- | A safe wrapper for 'createObjectTableNVX' and 'destroyObjectTableNVX'+-- using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withObjectTableNVX :: Device -> ObjectTableCreateInfoNVX -> Maybe AllocationCallbacks -> (ObjectTableNVX -> IO r) -> IO r+withObjectTableNVX device objectTableCreateInfoNVX allocationCallbacks =+ bracket+ (createObjectTableNVX device objectTableCreateInfoNVX allocationCallbacks)+ (\o -> destroyObjectTableNVX device o allocationCallbacks)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDestroyObjectTableNVX+ :: FunPtr (Ptr Device_T -> ObjectTableNVX -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> ObjectTableNVX -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyObjectTableNVX - Destroy an object table+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the table.+--+-- - @objectTable@ is the table to destroy.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- == Valid Usage+--+-- - All submitted commands that refer to @objectTable@ /must/ have+-- completed execution.+--+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when @objectTable@ was created, a compatible set of+-- callbacks /must/ be provided here.+--+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when @objectTable@ was created, @pAllocator@ /must/ be+-- @NULL@.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @objectTable@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX' handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @objectTable@ /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to @objectTable@ /must/ be externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX'+destroyObjectTableNVX :: Device -> ObjectTableNVX -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyObjectTableNVX device objectTable allocator = evalContT $ do+ let vkDestroyObjectTableNVX' = mkVkDestroyObjectTableNVX (pVkDestroyObjectTableNVX (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyObjectTableNVX' (deviceHandle (device)) (objectTable) pAllocator+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkRegisterObjectsNVX+ :: FunPtr (Ptr Device_T -> ObjectTableNVX -> Word32 -> Ptr (Ptr ObjectTableEntryNVX) -> Ptr Word32 -> IO Result) -> Ptr Device_T -> ObjectTableNVX -> Word32 -> Ptr (Ptr ObjectTableEntryNVX) -> Ptr Word32 -> IO Result++-- | vkRegisterObjectsNVX - Register resource bindings in an object table+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the object table.+--+-- - @objectTable@ is the table for which the resources are registered.+--+-- - @objectCount@ is the number of resources to register.+--+-- - @ppObjectTableEntries@ provides an array for detailed binding+-- informations. Each array element is a pointer to a structure of type+-- 'ObjectTablePipelineEntryNVX', 'ObjectTableDescriptorSetEntryNVX',+-- 'ObjectTableVertexBufferEntryNVX', 'ObjectTableIndexBufferEntryNVX'+-- or 'ObjectTablePushConstantEntryNVX' (see below for details).+--+-- - @pObjectIndices@ are the indices at which each resource is+-- registered.+--+-- == Valid Usage+--+-- - The contents of @pObjectTableEntry@ /must/ yield plausible bindings+-- supported by the device.+--+-- - At any @pObjectIndices@ there /must/ not be a registered resource+-- already.+--+-- - Any value inside @pObjectIndices@ /must/ be below the appropriate+-- 'ObjectTableCreateInfoNVX'::@pObjectEntryCounts@ limits provided at+-- @objectTable@ creation time.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @objectTable@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX' handle+--+-- - @ppObjectTableEntries@ /must/ be a valid pointer to an array of+-- @objectCount@ valid 'ObjectTableEntryNVX' structures+--+-- - @pObjectIndices@ /must/ be a valid pointer to an array of+-- @objectCount@ @uint32_t@ values+--+-- - @objectCount@ /must/ be greater than @0@+--+-- - @objectTable@ /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to @objectTable@ /must/ be externally synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device', 'ObjectTableEntryNVX',+-- 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX'+registerObjectsNVX :: Device -> ObjectTableNVX -> ("objectTableEntries" ::: Vector ObjectTableEntryNVX) -> ("objectIndices" ::: Vector Word32) -> IO ()+registerObjectsNVX device objectTable objectTableEntries objectIndices = evalContT $ do+ let vkRegisterObjectsNVX' = mkVkRegisterObjectsNVX (pVkRegisterObjectsNVX (deviceCmds (device :: Device)))+ let ppObjectTableEntriesLength = Data.Vector.length $ (objectTableEntries)+ let pObjectIndicesLength = Data.Vector.length $ (objectIndices)+ lift $ unless (pObjectIndicesLength == ppObjectTableEntriesLength) $+ throwIO $ IOError Nothing InvalidArgument "" "pObjectIndices and ppObjectTableEntries must have the same length" Nothing Nothing+ pPpObjectTableEntries <- ContT $ allocaBytesAligned @(Ptr ObjectTableEntryNVX) ((Data.Vector.length (objectTableEntries)) * 8) 8+ Data.Vector.imapM_ (\i e -> do+ ppObjectTableEntries <- ContT $ withCStruct (e)+ lift $ poke (pPpObjectTableEntries `plusPtr` (8 * (i)) :: Ptr (Ptr ObjectTableEntryNVX)) ppObjectTableEntries) (objectTableEntries)+ pPObjectIndices <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (objectIndices)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPObjectIndices `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (objectIndices)+ r <- lift $ vkRegisterObjectsNVX' (deviceHandle (device)) (objectTable) ((fromIntegral ppObjectTableEntriesLength :: Word32)) (pPpObjectTableEntries) (pPObjectIndices)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))++-- | A safe wrapper for 'registerObjectsNVX' and 'unregisterObjectsNVX' using+-- 'bracket_'+--+-- The allocated value must not be returned from the provided computation+withRegisteredObjectsNVX :: Device -> ObjectTableNVX -> Vector ObjectTableEntryNVX -> Vector Word32 -> Vector ObjectEntryTypeNVX -> IO r -> IO r+withRegisteredObjectsNVX device objectTableNVX objectTableEntryNVX objectIndices objectEntryTypeNVX =+ bracket_+ (registerObjectsNVX device objectTableNVX objectTableEntryNVX objectIndices)+ ( unregisterObjectsNVX device objectTableNVX objectEntryTypeNVX objectIndices)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkUnregisterObjectsNVX+ :: FunPtr (Ptr Device_T -> ObjectTableNVX -> Word32 -> Ptr ObjectEntryTypeNVX -> Ptr Word32 -> IO Result) -> Ptr Device_T -> ObjectTableNVX -> Word32 -> Ptr ObjectEntryTypeNVX -> Ptr Word32 -> IO Result++-- | vkUnregisterObjectsNVX - Unregister resource bindings in an object table+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the object table.+--+-- - @objectTable@ is the table from which the resources are+-- unregistered.+--+-- - @objectCount@ is the number of resources being removed from the+-- object table.+--+-- - @pObjectEntryType@ provides an array of 'ObjectEntryTypeNVX' for the+-- resources being removed.+--+-- - @pObjectIndices@ provides the array of object indices to be removed.+--+-- == Valid Usage+--+-- - At any @pObjectIndices@ there /must/ be a registered resource+-- already.+--+-- - The @pObjectEntryTypes@ of the resource at @pObjectIndices@ /must/+-- match.+--+-- - All operations on the device using the registered resource /must/+-- have been completed.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @objectTable@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX' handle+--+-- - @pObjectEntryTypes@ /must/ be a valid pointer to an array of+-- @objectCount@ valid 'ObjectEntryTypeNVX' values+--+-- - @pObjectIndices@ /must/ be a valid pointer to an array of+-- @objectCount@ @uint32_t@ values+--+-- - @objectCount@ /must/ be greater than @0@+--+-- - @objectTable@ /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to @objectTable@ /must/ be externally synchronized+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device', 'ObjectEntryTypeNVX',+-- 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX'+unregisterObjectsNVX :: Device -> ObjectTableNVX -> ("objectEntryTypes" ::: Vector ObjectEntryTypeNVX) -> ("objectIndices" ::: Vector Word32) -> IO ()+unregisterObjectsNVX device objectTable objectEntryTypes objectIndices = evalContT $ do+ let vkUnregisterObjectsNVX' = mkVkUnregisterObjectsNVX (pVkUnregisterObjectsNVX (deviceCmds (device :: Device)))+ let pObjectEntryTypesLength = Data.Vector.length $ (objectEntryTypes)+ let pObjectIndicesLength = Data.Vector.length $ (objectIndices)+ lift $ unless (pObjectIndicesLength == pObjectEntryTypesLength) $+ throwIO $ IOError Nothing InvalidArgument "" "pObjectIndices and pObjectEntryTypes must have the same length" Nothing Nothing+ pPObjectEntryTypes <- ContT $ allocaBytesAligned @ObjectEntryTypeNVX ((Data.Vector.length (objectEntryTypes)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPObjectEntryTypes `plusPtr` (4 * (i)) :: Ptr ObjectEntryTypeNVX) (e)) (objectEntryTypes)+ pPObjectIndices <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (objectIndices)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPObjectIndices `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (objectIndices)+ r <- lift $ vkUnregisterObjectsNVX' (deviceHandle (device)) (objectTable) ((fromIntegral pObjectEntryTypesLength :: Word32)) (pPObjectEntryTypes) (pPObjectIndices)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr DeviceGeneratedCommandsFeaturesNVX -> Ptr DeviceGeneratedCommandsLimitsNVX -> IO ()) -> Ptr PhysicalDevice_T -> Ptr DeviceGeneratedCommandsFeaturesNVX -> Ptr DeviceGeneratedCommandsLimitsNVX -> IO ()++-- | vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX - Returns+-- device-generated commands related properties of a physical device+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the handle to the+-- physical device whose properties will be queried.+--+-- - @pFeatures@ is a pointer to a 'DeviceGeneratedCommandsFeaturesNVX'+-- structure in which features are returned.+--+-- - @pLimits@ is a pointer to a 'DeviceGeneratedCommandsLimitsNVX'+-- structure in which limitations are returned.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'DeviceGeneratedCommandsFeaturesNVX',+-- 'DeviceGeneratedCommandsLimitsNVX',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+getPhysicalDeviceGeneratedCommandsPropertiesNVX :: PhysicalDevice -> IO (DeviceGeneratedCommandsFeaturesNVX, DeviceGeneratedCommandsLimitsNVX)+getPhysicalDeviceGeneratedCommandsPropertiesNVX physicalDevice = evalContT $ do+ let vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX' = mkVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX (pVkGetPhysicalDeviceGeneratedCommandsPropertiesNVX (instanceCmds (physicalDevice :: PhysicalDevice)))+ pPFeatures <- ContT (withZeroCStruct @DeviceGeneratedCommandsFeaturesNVX)+ pPLimits <- ContT (withZeroCStruct @DeviceGeneratedCommandsLimitsNVX)+ lift $ vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX' (physicalDeviceHandle (physicalDevice)) (pPFeatures) (pPLimits)+ pFeatures <- lift $ peekCStruct @DeviceGeneratedCommandsFeaturesNVX pPFeatures+ pLimits <- lift $ peekCStruct @DeviceGeneratedCommandsLimitsNVX pPLimits+ pure $ (pFeatures, pLimits)+++-- | VkDeviceGeneratedCommandsFeaturesNVX - Structure specifying physical+-- device support+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceGeneratedCommandsPropertiesNVX'+data DeviceGeneratedCommandsFeaturesNVX = DeviceGeneratedCommandsFeaturesNVX+ { -- | @computeBindingPointSupport@ specifies whether the+ -- 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX' supports entries+ -- with 'OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX' bit set and+ -- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX' supports+ -- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'.+ computeBindingPointSupport :: Bool }+ deriving (Typeable)+deriving instance Show DeviceGeneratedCommandsFeaturesNVX++instance ToCStruct DeviceGeneratedCommandsFeaturesNVX where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DeviceGeneratedCommandsFeaturesNVX{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (computeBindingPointSupport))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct DeviceGeneratedCommandsFeaturesNVX where+ peekCStruct p = do+ computeBindingPointSupport <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ DeviceGeneratedCommandsFeaturesNVX+ (bool32ToBool computeBindingPointSupport)++instance Storable DeviceGeneratedCommandsFeaturesNVX where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DeviceGeneratedCommandsFeaturesNVX where+ zero = DeviceGeneratedCommandsFeaturesNVX+ zero+++-- | VkDeviceGeneratedCommandsLimitsNVX - Structure specifying physical+-- device limits+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceGeneratedCommandsPropertiesNVX'+data DeviceGeneratedCommandsLimitsNVX = DeviceGeneratedCommandsLimitsNVX+ { -- | @maxIndirectCommandsLayoutTokenCount@ the maximum number of tokens in+ -- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX'.+ maxIndirectCommandsLayoutTokenCount :: Word32+ , -- | @maxObjectEntryCounts@ the maximum number of entries per resource type+ -- in 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX'.+ maxObjectEntryCounts :: Word32+ , -- | @minSequenceCountBufferOffsetAlignment@ the minimum alignment for memory+ -- addresses optionally used in 'cmdProcessCommandsNVX'.+ minSequenceCountBufferOffsetAlignment :: Word32+ , -- | @minSequenceIndexBufferOffsetAlignment@ the minimum alignment for memory+ -- addresses optionally used in 'cmdProcessCommandsNVX'.+ minSequenceIndexBufferOffsetAlignment :: Word32+ , -- | @minCommandsTokenBufferOffsetAlignment@ the minimum alignment for memory+ -- addresses optionally used in 'cmdProcessCommandsNVX'.+ minCommandsTokenBufferOffsetAlignment :: Word32+ }+ deriving (Typeable)+deriving instance Show DeviceGeneratedCommandsLimitsNVX++instance ToCStruct DeviceGeneratedCommandsLimitsNVX where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DeviceGeneratedCommandsLimitsNVX{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (maxIndirectCommandsLayoutTokenCount)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (maxObjectEntryCounts)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (minSequenceCountBufferOffsetAlignment)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (minSequenceIndexBufferOffsetAlignment)+ poke ((p `plusPtr` 32 :: Ptr Word32)) (minCommandsTokenBufferOffsetAlignment)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+ f++instance FromCStruct DeviceGeneratedCommandsLimitsNVX where+ peekCStruct p = do+ maxIndirectCommandsLayoutTokenCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ maxObjectEntryCounts <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ minSequenceCountBufferOffsetAlignment <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ minSequenceIndexBufferOffsetAlignment <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+ minCommandsTokenBufferOffsetAlignment <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pure $ DeviceGeneratedCommandsLimitsNVX+ maxIndirectCommandsLayoutTokenCount maxObjectEntryCounts minSequenceCountBufferOffsetAlignment minSequenceIndexBufferOffsetAlignment minCommandsTokenBufferOffsetAlignment++instance Storable DeviceGeneratedCommandsLimitsNVX where+ sizeOf ~_ = 40+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DeviceGeneratedCommandsLimitsNVX where+ zero = DeviceGeneratedCommandsLimitsNVX+ zero+ zero+ zero+ zero+ zero+++-- | VkIndirectCommandsTokenNVX - Structure specifying parameters for the+-- reservation of command buffer space+--+-- == Valid Usage+--+-- - The 'Graphics.Vulkan.Core10.Handles.Buffer'’s usage flag /must/ have+-- the+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+-- bit set.+--+-- - The @offset@ /must/ be aligned to+-- 'DeviceGeneratedCommandsLimitsNVX'::@minCommandsTokenBufferOffsetAlignment@.+--+-- == Valid Usage (Implicit)+--+-- - @tokenType@ /must/ be a valid 'IndirectCommandsTokenTypeNVX' value+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer', 'CmdProcessCommandsInfoNVX',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'IndirectCommandsTokenTypeNVX'+data IndirectCommandsTokenNVX = IndirectCommandsTokenNVX+ { -- | @tokenType@ specifies the token command type.+ tokenType :: IndirectCommandsTokenTypeNVX+ , -- | 'Graphics.Vulkan.Core10.Handles.Buffer' specifies the+ -- 'Graphics.Vulkan.Core10.Handles.Buffer' storing the functional arguments+ -- for each squence. These argumetns can be written by the device.+ buffer :: Buffer+ , -- | @offset@ specified an offset into+ -- 'Graphics.Vulkan.Core10.Handles.Buffer' where the arguments start.+ offset :: DeviceSize+ }+ deriving (Typeable)+deriving instance Show IndirectCommandsTokenNVX++instance ToCStruct IndirectCommandsTokenNVX where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p IndirectCommandsTokenNVX{..} f = do+ poke ((p `plusPtr` 0 :: Ptr IndirectCommandsTokenTypeNVX)) (tokenType)+ poke ((p `plusPtr` 8 :: Ptr Buffer)) (buffer)+ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (offset)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr IndirectCommandsTokenTypeNVX)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Buffer)) (zero)+ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)+ f++instance FromCStruct IndirectCommandsTokenNVX where+ peekCStruct p = do+ tokenType <- peek @IndirectCommandsTokenTypeNVX ((p `plusPtr` 0 :: Ptr IndirectCommandsTokenTypeNVX))+ buffer <- peek @Buffer ((p `plusPtr` 8 :: Ptr Buffer))+ offset <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))+ pure $ IndirectCommandsTokenNVX+ tokenType buffer offset++instance Storable IndirectCommandsTokenNVX where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero IndirectCommandsTokenNVX where+ zero = IndirectCommandsTokenNVX+ zero+ zero+ zero+++-- | VkIndirectCommandsLayoutTokenNVX - Struct specifying the details of an+-- indirect command layout token+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'IndirectCommandsLayoutCreateInfoNVX', 'IndirectCommandsTokenTypeNVX'+data IndirectCommandsLayoutTokenNVX = IndirectCommandsLayoutTokenNVX+ { -- | @tokenType@ /must/ be a valid 'IndirectCommandsTokenTypeNVX' value+ tokenType :: IndirectCommandsTokenTypeNVX+ , -- | @bindingUnit@ /must/ stay within device supported limits for the+ -- appropriate commands.+ bindingUnit :: Word32+ , -- | @dynamicCount@ /must/ stay within device supported limits for the+ -- appropriate commands.+ dynamicCount :: Word32+ , -- | @divisor@ /must/ be greater than @0@ and a power of two.+ divisor :: Word32+ }+ deriving (Typeable)+deriving instance Show IndirectCommandsLayoutTokenNVX++instance ToCStruct IndirectCommandsLayoutTokenNVX where+ withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p IndirectCommandsLayoutTokenNVX{..} f = do+ poke ((p `plusPtr` 0 :: Ptr IndirectCommandsTokenTypeNVX)) (tokenType)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (bindingUnit)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (dynamicCount)+ poke ((p `plusPtr` 12 :: Ptr Word32)) (divisor)+ f+ cStructSize = 16+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr IndirectCommandsTokenTypeNVX)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)+ f++instance FromCStruct IndirectCommandsLayoutTokenNVX where+ peekCStruct p = do+ tokenType <- peek @IndirectCommandsTokenTypeNVX ((p `plusPtr` 0 :: Ptr IndirectCommandsTokenTypeNVX))+ bindingUnit <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ dynamicCount <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ divisor <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))+ pure $ IndirectCommandsLayoutTokenNVX+ tokenType bindingUnit dynamicCount divisor++instance Storable IndirectCommandsLayoutTokenNVX where+ sizeOf ~_ = 16+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero IndirectCommandsLayoutTokenNVX where+ zero = IndirectCommandsLayoutTokenNVX+ zero+ zero+ zero+ zero+++-- | VkIndirectCommandsLayoutCreateInfoNVX - Structure specifying the+-- parameters of a newly created indirect commands layout object+--+-- = Description+--+-- The following code illustrates some of the key flags:+--+-- > void cmdProcessAllSequences(cmd, objectTable, indirectCommandsLayout, pIndirectCommandsTokens, sequencesCount, indexbuffer, indexbufferoffset)+-- > {+-- > for (s = 0; s < sequencesCount; s++)+-- > {+-- > sequence = s;+-- >+-- > if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX) {+-- > sequence = incoherent_implementation_dependent_permutation[ sequence ];+-- > }+-- > if (indirectCommandsLayout.flags & VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX) {+-- > sequence = indexbuffer.load_uint32( sequence * sizeof(uint32_t) + indexbufferoffset);+-- > }+-- >+-- > cmdProcessSequence( cmd, objectTable, indirectCommandsLayout, pIndirectCommandsTokens, sequence );+-- > }+-- > }+--+-- == Valid Usage+--+-- - @tokenCount@ /must/ be greater than @0@ and below+-- 'DeviceGeneratedCommandsLimitsNVX'::@maxIndirectCommandsLayoutTokenCount@+--+-- - If the+-- 'DeviceGeneratedCommandsFeaturesNVX'::@computeBindingPointSupport@+-- feature is not enabled, then+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- /must/ not be+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'+--+-- - If @pTokens@ contains an entry of+-- 'INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX' it /must/ be the first+-- element of the array and there /must/ be only a single element of+-- such token type.+--+-- - All state binding tokens in @pTokens@ /must/ occur prior work+-- provoking tokens ('INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX',+-- 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX',+-- 'INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX').+--+-- - The content of @pTokens@ /must/ include one single work provoking+-- token that is compatible with the+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX'+--+-- - @pNext@ /must/ be @NULL@+--+-- - 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+-- value+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of 'IndirectCommandsLayoutUsageFlagBitsNVX' values+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not be @0@+--+-- - @pTokens@ /must/ be a valid pointer to an array of @tokenCount@+-- valid 'IndirectCommandsLayoutTokenNVX' structures+--+-- - @tokenCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'IndirectCommandsLayoutTokenNVX', 'IndirectCommandsLayoutUsageFlagsNVX',+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createIndirectCommandsLayoutNVX'+data IndirectCommandsLayoutCreateInfoNVX = IndirectCommandsLayoutCreateInfoNVX+ { -- | 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' is+ -- the 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'+ -- that this layout targets.+ pipelineBindPoint :: PipelineBindPoint+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'IndirectCommandsLayoutUsageFlagBitsNVX' specifying usage hints of this+ -- layout.+ flags :: IndirectCommandsLayoutUsageFlagsNVX+ , -- | @pTokens@ is an array describing each command token in detail. See+ -- 'IndirectCommandsTokenTypeNVX' and 'IndirectCommandsLayoutTokenNVX'+ -- below for details.+ tokens :: Vector IndirectCommandsLayoutTokenNVX+ }+ deriving (Typeable)+deriving instance Show IndirectCommandsLayoutCreateInfoNVX++instance ToCStruct IndirectCommandsLayoutCreateInfoNVX where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p IndirectCommandsLayoutCreateInfoNVX{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr PipelineBindPoint)) (pipelineBindPoint)+ lift $ poke ((p `plusPtr` 20 :: Ptr IndirectCommandsLayoutUsageFlagsNVX)) (flags)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (tokens)) :: Word32))+ pPTokens' <- ContT $ allocaBytesAligned @IndirectCommandsLayoutTokenNVX ((Data.Vector.length (tokens)) * 16) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPTokens' `plusPtr` (16 * (i)) :: Ptr IndirectCommandsLayoutTokenNVX) (e) . ($ ())) (tokens)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr IndirectCommandsLayoutTokenNVX))) (pPTokens')+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr PipelineBindPoint)) (zero)+ lift $ poke ((p `plusPtr` 20 :: Ptr IndirectCommandsLayoutUsageFlagsNVX)) (zero)+ pPTokens' <- ContT $ allocaBytesAligned @IndirectCommandsLayoutTokenNVX ((Data.Vector.length (mempty)) * 16) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPTokens' `plusPtr` (16 * (i)) :: Ptr IndirectCommandsLayoutTokenNVX) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr IndirectCommandsLayoutTokenNVX))) (pPTokens')+ lift $ f++instance FromCStruct IndirectCommandsLayoutCreateInfoNVX where+ peekCStruct p = do+ pipelineBindPoint <- peek @PipelineBindPoint ((p `plusPtr` 16 :: Ptr PipelineBindPoint))+ flags <- peek @IndirectCommandsLayoutUsageFlagsNVX ((p `plusPtr` 20 :: Ptr IndirectCommandsLayoutUsageFlagsNVX))+ tokenCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ pTokens <- peek @(Ptr IndirectCommandsLayoutTokenNVX) ((p `plusPtr` 32 :: Ptr (Ptr IndirectCommandsLayoutTokenNVX)))+ pTokens' <- generateM (fromIntegral tokenCount) (\i -> peekCStruct @IndirectCommandsLayoutTokenNVX ((pTokens `advancePtrBytes` (16 * (i)) :: Ptr IndirectCommandsLayoutTokenNVX)))+ pure $ IndirectCommandsLayoutCreateInfoNVX+ pipelineBindPoint flags pTokens'++instance Zero IndirectCommandsLayoutCreateInfoNVX where+ zero = IndirectCommandsLayoutCreateInfoNVX+ zero+ zero+ mempty+++-- | VkCmdProcessCommandsInfoNVX - Structure specifying parameters for the+-- generation of commands+--+-- == Valid Usage+--+-- - The provided @objectTable@ /must/ include all objects referenced by+-- the generation process+--+-- - @indirectCommandsTokenCount@ /must/ match the+-- @indirectCommandsLayout@’s @tokenCount@+--+-- - The @tokenType@ member of each entry in the+-- @pIndirectCommandsTokens@ array /must/ match the values used at+-- creation time of @indirectCommandsLayout@+--+-- - If @targetCommandBuffer@ is provided, it /must/ have reserved+-- command space+--+-- - If @targetCommandBuffer@ is provided, the @objectTable@ /must/ match+-- the reservation’s @objectTable@ and /must/ have had all referenced+-- objects registered at reservation time+--+-- - If @targetCommandBuffer@ is provided, the @indirectCommandsLayout@+-- /must/ match the reservation’s @indirectCommandsLayout@+--+-- - If @targetCommandBuffer@ is provided, the @maxSequencesCount@ /must/+-- not exceed the reservation’s @maxSequencesCount@+--+-- - If @sequencesCountBuffer@ is used, its usage flag /must/ have the+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+-- bit set+--+-- - If @sequencesCountBuffer@ is used, @sequencesCountOffset@ /must/ be+-- aligned to+-- 'DeviceGeneratedCommandsLimitsNVX'::@minSequenceCountBufferOffsetAlignment@+--+-- - If @sequencesIndexBuffer@ is used, its usage flag /must/ have the+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+-- bit set+--+-- - If @sequencesIndexBuffer@ is used, @sequencesIndexOffset@ /must/ be+-- aligned to+-- 'DeviceGeneratedCommandsLimitsNVX'::@minSequenceIndexBufferOffsetAlignment@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX'+--+-- - @pNext@ /must/ be @NULL@+--+-- - @objectTable@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX' handle+--+-- - @indirectCommandsLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX'+-- handle+--+-- - @pIndirectCommandsTokens@ /must/ be a valid pointer to an array of+-- @indirectCommandsTokenCount@ valid 'IndirectCommandsTokenNVX'+-- structures+--+-- - If @targetCommandBuffer@ is not @NULL@, @targetCommandBuffer@ /must/+-- be a valid 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - If @sequencesCountBuffer@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- @sequencesCountBuffer@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - If @sequencesIndexBuffer@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- @sequencesIndexBuffer@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - @indirectCommandsTokenCount@ /must/ be greater than @0@+--+-- - Each of @indirectCommandsLayout@, @objectTable@,+-- @sequencesCountBuffer@, @sequencesIndexBuffer@, and+-- @targetCommandBuffer@ that are valid handles of non-ignored+-- parameters /must/ have been created, allocated, or retrieved from+-- the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to @objectTable@ /must/ be externally synchronized+--+-- - Host access to @targetCommandBuffer@ /must/ be externally+-- synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX',+-- 'IndirectCommandsTokenNVX',+-- 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'cmdProcessCommandsNVX'+data CmdProcessCommandsInfoNVX = CmdProcessCommandsInfoNVX+ { -- | @objectTable@ is the 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX'+ -- to be used for the generation process. Only registered objects at the+ -- time 'cmdReserveSpaceForCommandsNVX' is called, will be taken into+ -- account for the reservation.+ objectTable :: ObjectTableNVX+ , -- | @indirectCommandsLayout@ is the+ -- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX' that+ -- provides the command sequence to generate.+ indirectCommandsLayout :: IndirectCommandsLayoutNVX+ , -- | @pIndirectCommandsTokens@ provides an array of+ -- 'IndirectCommandsTokenNVX' that reference the input data for each token+ -- command.+ indirectCommandsTokens :: Vector IndirectCommandsTokenNVX+ , -- | @maxSequencesCount@ is the maximum number of sequences for which command+ -- buffer space will be reserved. If @sequencesCountBuffer@ is+ -- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', this is also the+ -- actual number of sequences generated.+ maxSequencesCount :: Word32+ , -- | @targetCommandBuffer@ /can/ be the secondary+ -- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' in which the commands+ -- should be recorded. If @targetCommandBuffer@ is @NULL@ an implicit+ -- reservation as well as execution takes place on the processing+ -- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'.+ targetCommandBuffer :: Ptr CommandBuffer_T+ , -- | @sequencesCountBuffer@ /can/ be 'Graphics.Vulkan.Core10.Handles.Buffer'+ -- from which the actual amount of sequences is sourced from as @uint32_t@+ -- value.+ sequencesCountBuffer :: Buffer+ , -- | @sequencesCountOffset@ is the byte offset into @sequencesCountBuffer@+ -- where the count value is stored.+ sequencesCountOffset :: DeviceSize+ , -- | @sequencesIndexBuffer@ /must/ be set if @indirectCommandsLayout@’s+ -- 'INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX' is set and+ -- provides the used sequence indices as @uint32_t@ array. Otherwise it+ -- /must/ be 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'.+ sequencesIndexBuffer :: Buffer+ , -- | @sequencesIndexOffset@ is the byte offset into @sequencesIndexBuffer@+ -- where the index values start.+ sequencesIndexOffset :: DeviceSize+ }+ deriving (Typeable)+deriving instance Show CmdProcessCommandsInfoNVX++instance ToCStruct CmdProcessCommandsInfoNVX where+ withCStruct x f = allocaBytesAligned 96 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p CmdProcessCommandsInfoNVX{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr ObjectTableNVX)) (objectTable)+ lift $ poke ((p `plusPtr` 24 :: Ptr IndirectCommandsLayoutNVX)) (indirectCommandsLayout)+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (indirectCommandsTokens)) :: Word32))+ pPIndirectCommandsTokens' <- ContT $ allocaBytesAligned @IndirectCommandsTokenNVX ((Data.Vector.length (indirectCommandsTokens)) * 24) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPIndirectCommandsTokens' `plusPtr` (24 * (i)) :: Ptr IndirectCommandsTokenNVX) (e) . ($ ())) (indirectCommandsTokens)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr IndirectCommandsTokenNVX))) (pPIndirectCommandsTokens')+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (maxSequencesCount)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr CommandBuffer_T))) (targetCommandBuffer)+ lift $ poke ((p `plusPtr` 64 :: Ptr Buffer)) (sequencesCountBuffer)+ lift $ poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (sequencesCountOffset)+ lift $ poke ((p `plusPtr` 80 :: Ptr Buffer)) (sequencesIndexBuffer)+ lift $ poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (sequencesIndexOffset)+ lift $ f+ cStructSize = 96+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr ObjectTableNVX)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr IndirectCommandsLayoutNVX)) (zero)+ pPIndirectCommandsTokens' <- ContT $ allocaBytesAligned @IndirectCommandsTokenNVX ((Data.Vector.length (mempty)) * 24) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPIndirectCommandsTokens' `plusPtr` (24 * (i)) :: Ptr IndirectCommandsTokenNVX) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr IndirectCommandsTokenNVX))) (pPIndirectCommandsTokens')+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)+ lift $ f++instance FromCStruct CmdProcessCommandsInfoNVX where+ peekCStruct p = do+ objectTable <- peek @ObjectTableNVX ((p `plusPtr` 16 :: Ptr ObjectTableNVX))+ indirectCommandsLayout <- peek @IndirectCommandsLayoutNVX ((p `plusPtr` 24 :: Ptr IndirectCommandsLayoutNVX))+ indirectCommandsTokenCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pIndirectCommandsTokens <- peek @(Ptr IndirectCommandsTokenNVX) ((p `plusPtr` 40 :: Ptr (Ptr IndirectCommandsTokenNVX)))+ pIndirectCommandsTokens' <- generateM (fromIntegral indirectCommandsTokenCount) (\i -> peekCStruct @IndirectCommandsTokenNVX ((pIndirectCommandsTokens `advancePtrBytes` (24 * (i)) :: Ptr IndirectCommandsTokenNVX)))+ maxSequencesCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+ targetCommandBuffer <- peek @(Ptr CommandBuffer_T) ((p `plusPtr` 56 :: Ptr (Ptr CommandBuffer_T)))+ sequencesCountBuffer <- peek @Buffer ((p `plusPtr` 64 :: Ptr Buffer))+ sequencesCountOffset <- peek @DeviceSize ((p `plusPtr` 72 :: Ptr DeviceSize))+ sequencesIndexBuffer <- peek @Buffer ((p `plusPtr` 80 :: Ptr Buffer))+ sequencesIndexOffset <- peek @DeviceSize ((p `plusPtr` 88 :: Ptr DeviceSize))+ pure $ CmdProcessCommandsInfoNVX+ objectTable indirectCommandsLayout pIndirectCommandsTokens' maxSequencesCount targetCommandBuffer sequencesCountBuffer sequencesCountOffset sequencesIndexBuffer sequencesIndexOffset++instance Zero CmdProcessCommandsInfoNVX where+ zero = CmdProcessCommandsInfoNVX+ zero+ zero+ mempty+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkCmdReserveSpaceForCommandsInfoNVX - Structure specifying parameters+-- for the reservation of command buffer space+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX'+--+-- - @pNext@ /must/ be @NULL@+--+-- - @objectTable@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX' handle+--+-- - @indirectCommandsLayout@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX'+-- handle+--+-- - Both of @indirectCommandsLayout@, and @objectTable@ /must/ have been+-- created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to @objectTable@ /must/ be externally synchronized+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX',+-- 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'cmdReserveSpaceForCommandsNVX'+data CmdReserveSpaceForCommandsInfoNVX = CmdReserveSpaceForCommandsInfoNVX+ { -- | @objectTable@ is the 'Graphics.Vulkan.Extensions.Handles.ObjectTableNVX'+ -- to be used for the generation process. Only registered objects at the+ -- time 'cmdReserveSpaceForCommandsNVX' is called, will be taken into+ -- account for the reservation.+ objectTable :: ObjectTableNVX+ , -- | @indirectCommandsLayout@ is the+ -- 'Graphics.Vulkan.Extensions.Handles.IndirectCommandsLayoutNVX' that+ -- /must/ also be used at generation time.+ indirectCommandsLayout :: IndirectCommandsLayoutNVX+ , -- | @maxSequencesCount@ is the maximum number of sequences for which command+ -- buffer space will be reserved.+ maxSequencesCount :: Word32+ }+ deriving (Typeable)+deriving instance Show CmdReserveSpaceForCommandsInfoNVX++instance ToCStruct CmdReserveSpaceForCommandsInfoNVX where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p CmdReserveSpaceForCommandsInfoNVX{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ObjectTableNVX)) (objectTable)+ poke ((p `plusPtr` 24 :: Ptr IndirectCommandsLayoutNVX)) (indirectCommandsLayout)+ poke ((p `plusPtr` 32 :: Ptr Word32)) (maxSequencesCount)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ObjectTableNVX)) (zero)+ poke ((p `plusPtr` 24 :: Ptr IndirectCommandsLayoutNVX)) (zero)+ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+ f++instance FromCStruct CmdReserveSpaceForCommandsInfoNVX where+ peekCStruct p = do+ objectTable <- peek @ObjectTableNVX ((p `plusPtr` 16 :: Ptr ObjectTableNVX))+ indirectCommandsLayout <- peek @IndirectCommandsLayoutNVX ((p `plusPtr` 24 :: Ptr IndirectCommandsLayoutNVX))+ maxSequencesCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pure $ CmdReserveSpaceForCommandsInfoNVX+ objectTable indirectCommandsLayout maxSequencesCount++instance Storable CmdReserveSpaceForCommandsInfoNVX where+ sizeOf ~_ = 40+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero CmdReserveSpaceForCommandsInfoNVX where+ zero = CmdReserveSpaceForCommandsInfoNVX+ zero+ zero+ zero+++-- | VkObjectTableCreateInfoNVX - Structure specifying the parameters of a+-- newly created object table+--+-- == Valid Usage+--+-- - If the+-- 'DeviceGeneratedCommandsFeaturesNVX'::@computeBindingPointSupport@+-- feature is not enabled, @pObjectEntryUsageFlags@ /must/ not contain+-- 'OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX'+--+-- - Any value within @pObjectEntryCounts@ /must/ not exceed+-- 'DeviceGeneratedCommandsLimitsNVX'::@maxObjectEntryCounts@+--+-- - @maxUniformBuffersPerDescriptor@ /must/ be within the limits+-- supported by the device.+--+-- - @maxStorageBuffersPerDescriptor@ /must/ be within the limits+-- supported by the device.+--+-- - @maxStorageImagesPerDescriptor@ /must/ be within the limits+-- supported by the device.+--+-- - @maxSampledImagesPerDescriptor@ /must/ be within the limits+-- supported by the device.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX'+--+-- - @pNext@ /must/ be @NULL@+--+-- - @pObjectEntryTypes@ /must/ be a valid pointer to an array of+-- @objectCount@ valid 'ObjectEntryTypeNVX' values+--+-- - @pObjectEntryCounts@ /must/ be a valid pointer to an array of+-- @objectCount@ @uint32_t@ values+--+-- - @pObjectEntryUsageFlags@ /must/ be a valid pointer to an array of+-- @objectCount@ valid combinations of 'ObjectEntryUsageFlagBitsNVX'+-- values+--+-- - Each element of @pObjectEntryUsageFlags@ /must/ not be @0@+--+-- - @objectCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'ObjectEntryTypeNVX', 'ObjectEntryUsageFlagsNVX',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createObjectTableNVX'+data ObjectTableCreateInfoNVX = ObjectTableCreateInfoNVX+ { -- | @pObjectEntryTypes@ is a pointer to an array of 'ObjectEntryTypeNVX'+ -- values providing the entry type of a given configuration.+ objectEntryTypes :: Vector ObjectEntryTypeNVX+ , -- | @pObjectEntryCounts@ is a pointer to an array of counts of how many+ -- objects can be registered in the table.+ objectEntryCounts :: Vector Word32+ , -- | @pObjectEntryUsageFlags@ is a pointer to an array of bitmasks of+ -- 'ObjectEntryUsageFlagBitsNVX' specifying the binding usage of the entry.+ objectEntryUsageFlags :: Vector ObjectEntryUsageFlagsNVX+ , -- | @maxUniformBuffersPerDescriptor@ is the maximum number of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER'+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'+ -- used by any single registered+ -- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' in this table.+ maxUniformBuffersPerDescriptor :: Word32+ , -- | @maxStorageBuffersPerDescriptor@ is the maximum number of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER'+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'+ -- used by any single registered+ -- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' in this table.+ maxStorageBuffersPerDescriptor :: Word32+ , -- | @maxStorageImagesPerDescriptor@ is the maximum number of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'+ -- used by any single registered+ -- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' in this table.+ maxStorageImagesPerDescriptor :: Word32+ , -- | @maxSampledImagesPerDescriptor@ is the maximum number of+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLER',+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'+ -- or+ -- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'+ -- used by any single registered+ -- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' in this table.+ maxSampledImagesPerDescriptor :: Word32+ , -- | @maxPipelineLayouts@ is the maximum number of unique+ -- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used by any registered+ -- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' or+ -- 'Graphics.Vulkan.Core10.Handles.Pipeline' in this table.+ maxPipelineLayouts :: Word32+ }+ deriving (Typeable)+deriving instance Show ObjectTableCreateInfoNVX++instance ToCStruct ObjectTableCreateInfoNVX where+ withCStruct x f = allocaBytesAligned 72 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ObjectTableCreateInfoNVX{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ let pObjectEntryTypesLength = Data.Vector.length $ (objectEntryTypes)+ let pObjectEntryCountsLength = Data.Vector.length $ (objectEntryCounts)+ lift $ unless (pObjectEntryCountsLength == pObjectEntryTypesLength) $+ throwIO $ IOError Nothing InvalidArgument "" "pObjectEntryCounts and pObjectEntryTypes must have the same length" Nothing Nothing+ let pObjectEntryUsageFlagsLength = Data.Vector.length $ (objectEntryUsageFlags)+ lift $ unless (pObjectEntryUsageFlagsLength == pObjectEntryTypesLength) $+ throwIO $ IOError Nothing InvalidArgument "" "pObjectEntryUsageFlags and pObjectEntryTypes must have the same length" Nothing Nothing+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral pObjectEntryTypesLength :: Word32))+ pPObjectEntryTypes' <- ContT $ allocaBytesAligned @ObjectEntryTypeNVX ((Data.Vector.length (objectEntryTypes)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPObjectEntryTypes' `plusPtr` (4 * (i)) :: Ptr ObjectEntryTypeNVX) (e)) (objectEntryTypes)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ObjectEntryTypeNVX))) (pPObjectEntryTypes')+ pPObjectEntryCounts' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (objectEntryCounts)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPObjectEntryCounts' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (objectEntryCounts)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Word32))) (pPObjectEntryCounts')+ pPObjectEntryUsageFlags' <- ContT $ allocaBytesAligned @ObjectEntryUsageFlagsNVX ((Data.Vector.length (objectEntryUsageFlags)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPObjectEntryUsageFlags' `plusPtr` (4 * (i)) :: Ptr ObjectEntryUsageFlagsNVX) (e)) (objectEntryUsageFlags)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr ObjectEntryUsageFlagsNVX))) (pPObjectEntryUsageFlags')+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (maxUniformBuffersPerDescriptor)+ lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (maxStorageBuffersPerDescriptor)+ lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (maxStorageImagesPerDescriptor)+ lift $ poke ((p `plusPtr` 60 :: Ptr Word32)) (maxSampledImagesPerDescriptor)+ lift $ poke ((p `plusPtr` 64 :: Ptr Word32)) (maxPipelineLayouts)+ lift $ f+ cStructSize = 72+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPObjectEntryTypes' <- ContT $ allocaBytesAligned @ObjectEntryTypeNVX ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPObjectEntryTypes' `plusPtr` (4 * (i)) :: Ptr ObjectEntryTypeNVX) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ObjectEntryTypeNVX))) (pPObjectEntryTypes')+ pPObjectEntryCounts' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPObjectEntryCounts' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Word32))) (pPObjectEntryCounts')+ pPObjectEntryUsageFlags' <- ContT $ allocaBytesAligned @ObjectEntryUsageFlagsNVX ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPObjectEntryUsageFlags' `plusPtr` (4 * (i)) :: Ptr ObjectEntryUsageFlagsNVX) (e)) (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr ObjectEntryUsageFlagsNVX))) (pPObjectEntryUsageFlags')+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 60 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 64 :: Ptr Word32)) (zero)+ lift $ f++instance FromCStruct ObjectTableCreateInfoNVX where+ peekCStruct p = do+ objectCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pObjectEntryTypes <- peek @(Ptr ObjectEntryTypeNVX) ((p `plusPtr` 24 :: Ptr (Ptr ObjectEntryTypeNVX)))+ pObjectEntryTypes' <- generateM (fromIntegral objectCount) (\i -> peek @ObjectEntryTypeNVX ((pObjectEntryTypes `advancePtrBytes` (4 * (i)) :: Ptr ObjectEntryTypeNVX)))+ pObjectEntryCounts <- peek @(Ptr Word32) ((p `plusPtr` 32 :: Ptr (Ptr Word32)))+ pObjectEntryCounts' <- generateM (fromIntegral objectCount) (\i -> peek @Word32 ((pObjectEntryCounts `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ pObjectEntryUsageFlags <- peek @(Ptr ObjectEntryUsageFlagsNVX) ((p `plusPtr` 40 :: Ptr (Ptr ObjectEntryUsageFlagsNVX)))+ pObjectEntryUsageFlags' <- generateM (fromIntegral objectCount) (\i -> peek @ObjectEntryUsageFlagsNVX ((pObjectEntryUsageFlags `advancePtrBytes` (4 * (i)) :: Ptr ObjectEntryUsageFlagsNVX)))+ maxUniformBuffersPerDescriptor <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+ maxStorageBuffersPerDescriptor <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))+ maxStorageImagesPerDescriptor <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))+ maxSampledImagesPerDescriptor <- peek @Word32 ((p `plusPtr` 60 :: Ptr Word32))+ maxPipelineLayouts <- peek @Word32 ((p `plusPtr` 64 :: Ptr Word32))+ pure $ ObjectTableCreateInfoNVX+ pObjectEntryTypes' pObjectEntryCounts' pObjectEntryUsageFlags' maxUniformBuffersPerDescriptor maxStorageBuffersPerDescriptor maxStorageImagesPerDescriptor maxSampledImagesPerDescriptor maxPipelineLayouts++instance Zero ObjectTableCreateInfoNVX where+ zero = ObjectTableCreateInfoNVX+ mempty+ mempty+ mempty+ zero+ zero+ zero+ zero+ zero+++-- | VkObjectTableEntryNVX - Common parameters of an object table resource+-- entry+--+-- == Valid Usage+--+-- - If the+-- 'DeviceGeneratedCommandsFeaturesNVX'::@computeBindingPointSupport@+-- feature is not enabled, 'Graphics.Vulkan.Core10.BaseType.Flags'+-- /must/ not contain 'OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX'+--+-- == Valid Usage (Implicit)+--+-- - @type@ /must/ be a valid 'ObjectEntryTypeNVX' value+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of 'ObjectEntryUsageFlagBitsNVX' values+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not be @0@+--+-- = See Also+--+-- 'ObjectEntryTypeNVX', 'ObjectEntryUsageFlagsNVX', 'registerObjectsNVX'+data ObjectTableEntryNVX = ObjectTableEntryNVX+ { -- | @type@ defines the entry type+ type' :: ObjectEntryTypeNVX+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' defines which+ -- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' the+ -- resource can be used with. Some entry types allow only a single flag to+ -- be set.+ flags :: ObjectEntryUsageFlagsNVX+ }+ deriving (Typeable)+deriving instance Show ObjectTableEntryNVX++instance ToCStruct ObjectTableEntryNVX where+ withCStruct x f = allocaBytesAligned 8 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ObjectTableEntryNVX{..} f = do+ poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (type')+ poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (flags)+ f+ cStructSize = 8+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (zero)+ poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (zero)+ f++instance FromCStruct ObjectTableEntryNVX where+ peekCStruct p = do+ type' <- peek @ObjectEntryTypeNVX ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX))+ flags <- peek @ObjectEntryUsageFlagsNVX ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX))+ pure $ ObjectTableEntryNVX+ type' flags++instance Storable ObjectTableEntryNVX where+ sizeOf ~_ = 8+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ObjectTableEntryNVX where+ zero = ObjectTableEntryNVX+ zero+ zero+++-- | VkObjectTablePipelineEntryNVX - Parameters of an object table pipeline+-- entry+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'ObjectEntryTypeNVX', 'ObjectEntryUsageFlagsNVX',+-- 'Graphics.Vulkan.Core10.Handles.Pipeline'+data ObjectTablePipelineEntryNVX = ObjectTablePipelineEntryNVX+ { -- | @type@ /must/ be a valid 'ObjectEntryTypeNVX' value+ type' :: ObjectEntryTypeNVX+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not be @0@+ flags :: ObjectEntryUsageFlagsNVX+ , -- | 'Graphics.Vulkan.Core10.Handles.Pipeline' /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Handles.Pipeline' handle+ pipeline :: Pipeline+ }+ deriving (Typeable)+deriving instance Show ObjectTablePipelineEntryNVX++instance ToCStruct ObjectTablePipelineEntryNVX where+ withCStruct x f = allocaBytesAligned 16 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ObjectTablePipelineEntryNVX{..} f = do+ poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (type')+ poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (flags)+ poke ((p `plusPtr` 8 :: Ptr Pipeline)) (pipeline)+ f+ cStructSize = 16+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (zero)+ poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Pipeline)) (zero)+ f++instance FromCStruct ObjectTablePipelineEntryNVX where+ peekCStruct p = do+ type' <- peek @ObjectEntryTypeNVX ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX))+ flags <- peek @ObjectEntryUsageFlagsNVX ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX))+ pipeline <- peek @Pipeline ((p `plusPtr` 8 :: Ptr Pipeline))+ pure $ ObjectTablePipelineEntryNVX+ type' flags pipeline++instance Storable ObjectTablePipelineEntryNVX where+ sizeOf ~_ = 16+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ObjectTablePipelineEntryNVX where+ zero = ObjectTablePipelineEntryNVX+ zero+ zero+ zero+++-- | VkObjectTableDescriptorSetEntryNVX - Parameters of an object table+-- descriptor set entry+--+-- == Valid Usage+--+-- - @type@ /must/ be 'OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX'+--+-- == Valid Usage (Implicit)+--+-- - @type@ /must/ be a valid 'ObjectEntryTypeNVX' value+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of 'ObjectEntryUsageFlagBitsNVX' values+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not be @0@+--+-- - 'Graphics.Vulkan.Core10.Handles.PipelineLayout' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.DescriptorSet' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' handle+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.DescriptorSet', and+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' /must/ have been+-- created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSet', 'ObjectEntryTypeNVX',+-- 'ObjectEntryUsageFlagsNVX',+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout'+data ObjectTableDescriptorSetEntryNVX = ObjectTableDescriptorSetEntryNVX+ { -- No documentation found for Nested "VkObjectTableDescriptorSetEntryNVX" "type"+ type' :: ObjectEntryTypeNVX+ , -- No documentation found for Nested "VkObjectTableDescriptorSetEntryNVX" "flags"+ flags :: ObjectEntryUsageFlagsNVX+ , -- | 'Graphics.Vulkan.Core10.Handles.PipelineLayout' specifies the+ -- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that the+ -- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' is used with.+ pipelineLayout :: PipelineLayout+ , -- | 'Graphics.Vulkan.Core10.Handles.DescriptorSet' specifies the+ -- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' that can be bound with+ -- this entry.+ descriptorSet :: DescriptorSet+ }+ deriving (Typeable)+deriving instance Show ObjectTableDescriptorSetEntryNVX++instance ToCStruct ObjectTableDescriptorSetEntryNVX where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ObjectTableDescriptorSetEntryNVX{..} f = do+ poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (type')+ poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (flags)+ poke ((p `plusPtr` 8 :: Ptr PipelineLayout)) (pipelineLayout)+ poke ((p `plusPtr` 16 :: Ptr DescriptorSet)) (descriptorSet)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (zero)+ poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (zero)+ poke ((p `plusPtr` 8 :: Ptr PipelineLayout)) (zero)+ poke ((p `plusPtr` 16 :: Ptr DescriptorSet)) (zero)+ f++instance FromCStruct ObjectTableDescriptorSetEntryNVX where+ peekCStruct p = do+ type' <- peek @ObjectEntryTypeNVX ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX))+ flags <- peek @ObjectEntryUsageFlagsNVX ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX))+ pipelineLayout <- peek @PipelineLayout ((p `plusPtr` 8 :: Ptr PipelineLayout))+ descriptorSet <- peek @DescriptorSet ((p `plusPtr` 16 :: Ptr DescriptorSet))+ pure $ ObjectTableDescriptorSetEntryNVX+ type' flags pipelineLayout descriptorSet++instance Storable ObjectTableDescriptorSetEntryNVX where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ObjectTableDescriptorSetEntryNVX where+ zero = ObjectTableDescriptorSetEntryNVX+ zero+ zero+ zero+ zero+++-- | VkObjectTableVertexBufferEntryNVX - Parameters of an object table vertex+-- buffer entry+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer', 'ObjectEntryTypeNVX',+-- 'ObjectEntryUsageFlagsNVX'+data ObjectTableVertexBufferEntryNVX = ObjectTableVertexBufferEntryNVX+ { -- | @type@ /must/ be a valid 'ObjectEntryTypeNVX' value+ type' :: ObjectEntryTypeNVX+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not be @0@+ flags :: ObjectEntryUsageFlagsNVX+ , -- | 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+ buffer :: Buffer+ }+ deriving (Typeable)+deriving instance Show ObjectTableVertexBufferEntryNVX++instance ToCStruct ObjectTableVertexBufferEntryNVX where+ withCStruct x f = allocaBytesAligned 16 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ObjectTableVertexBufferEntryNVX{..} f = do+ poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (type')+ poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (flags)+ poke ((p `plusPtr` 8 :: Ptr Buffer)) (buffer)+ f+ cStructSize = 16+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (zero)+ poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Buffer)) (zero)+ f++instance FromCStruct ObjectTableVertexBufferEntryNVX where+ peekCStruct p = do+ type' <- peek @ObjectEntryTypeNVX ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX))+ flags <- peek @ObjectEntryUsageFlagsNVX ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX))+ buffer <- peek @Buffer ((p `plusPtr` 8 :: Ptr Buffer))+ pure $ ObjectTableVertexBufferEntryNVX+ type' flags buffer++instance Storable ObjectTableVertexBufferEntryNVX where+ sizeOf ~_ = 16+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ObjectTableVertexBufferEntryNVX where+ zero = ObjectTableVertexBufferEntryNVX+ zero+ zero+ zero+++-- | VkObjectTableIndexBufferEntryNVX - Parameters of an object table index+-- buffer entry+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType',+-- 'ObjectEntryTypeNVX', 'ObjectEntryUsageFlagsNVX'+data ObjectTableIndexBufferEntryNVX = ObjectTableIndexBufferEntryNVX+ { -- | @type@ /must/ be a valid 'ObjectEntryTypeNVX' value+ type' :: ObjectEntryTypeNVX+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not be @0@+ flags :: ObjectEntryUsageFlagsNVX+ , -- | 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+ buffer :: Buffer+ , -- | 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' value+ indexType :: IndexType+ }+ deriving (Typeable)+deriving instance Show ObjectTableIndexBufferEntryNVX++instance ToCStruct ObjectTableIndexBufferEntryNVX where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ObjectTableIndexBufferEntryNVX{..} f = do+ poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (type')+ poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (flags)+ poke ((p `plusPtr` 8 :: Ptr Buffer)) (buffer)+ poke ((p `plusPtr` 16 :: Ptr IndexType)) (indexType)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (zero)+ poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Buffer)) (zero)+ poke ((p `plusPtr` 16 :: Ptr IndexType)) (zero)+ f++instance FromCStruct ObjectTableIndexBufferEntryNVX where+ peekCStruct p = do+ type' <- peek @ObjectEntryTypeNVX ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX))+ flags <- peek @ObjectEntryUsageFlagsNVX ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX))+ buffer <- peek @Buffer ((p `plusPtr` 8 :: Ptr Buffer))+ indexType <- peek @IndexType ((p `plusPtr` 16 :: Ptr IndexType))+ pure $ ObjectTableIndexBufferEntryNVX+ type' flags buffer indexType++instance Storable ObjectTableIndexBufferEntryNVX where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ObjectTableIndexBufferEntryNVX where+ zero = ObjectTableIndexBufferEntryNVX+ zero+ zero+ zero+ zero+++-- | VkObjectTablePushConstantEntryNVX - Parameters of an object table push+-- constant entry+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'ObjectEntryTypeNVX', 'ObjectEntryUsageFlagsNVX',+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout',+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags'+data ObjectTablePushConstantEntryNVX = ObjectTablePushConstantEntryNVX+ { -- | @type@ /must/ be a valid 'ObjectEntryTypeNVX' value+ type' :: ObjectEntryTypeNVX+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ not be @0@+ flags :: ObjectEntryUsageFlagsNVX+ , -- | 'Graphics.Vulkan.Core10.Handles.PipelineLayout' /must/ be a valid+ -- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' handle+ pipelineLayout :: PipelineLayout+ , -- | @stageFlags@ /must/ not be @0@+ stageFlags :: ShaderStageFlags+ }+ deriving (Typeable)+deriving instance Show ObjectTablePushConstantEntryNVX++instance ToCStruct ObjectTablePushConstantEntryNVX where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ObjectTablePushConstantEntryNVX{..} f = do+ poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (type')+ poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (flags)+ poke ((p `plusPtr` 8 :: Ptr PipelineLayout)) (pipelineLayout)+ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (stageFlags)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX)) (zero)+ poke ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX)) (zero)+ poke ((p `plusPtr` 8 :: Ptr PipelineLayout)) (zero)+ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (zero)+ f++instance FromCStruct ObjectTablePushConstantEntryNVX where+ peekCStruct p = do+ type' <- peek @ObjectEntryTypeNVX ((p `plusPtr` 0 :: Ptr ObjectEntryTypeNVX))+ flags <- peek @ObjectEntryUsageFlagsNVX ((p `plusPtr` 4 :: Ptr ObjectEntryUsageFlagsNVX))+ pipelineLayout <- peek @PipelineLayout ((p `plusPtr` 8 :: Ptr PipelineLayout))+ stageFlags <- peek @ShaderStageFlags ((p `plusPtr` 16 :: Ptr ShaderStageFlags))+ pure $ ObjectTablePushConstantEntryNVX+ type' flags pipelineLayout stageFlags++instance Storable ObjectTablePushConstantEntryNVX where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ObjectTablePushConstantEntryNVX where+ zero = ObjectTablePushConstantEntryNVX+ zero+ zero+ zero+ zero+++-- | VkIndirectCommandsLayoutUsageFlagBitsNVX - Bitmask specifying allowed+-- usage of an indirect commands layout+--+-- = See Also+--+-- 'IndirectCommandsLayoutUsageFlagsNVX'+newtype IndirectCommandsLayoutUsageFlagBitsNVX = IndirectCommandsLayoutUsageFlagBitsNVX Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX' specifies+-- that the processing of sequences /can/ happen at an+-- implementation-dependent order, which is not guaranteed to be coherent+-- across multiple invocations.+pattern INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = IndirectCommandsLayoutUsageFlagBitsNVX 0x00000001+-- | 'INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX' specifies that+-- there is likely a high difference between allocated number of sequences+-- and actually used.+pattern INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = IndirectCommandsLayoutUsageFlagBitsNVX 0x00000002+-- | 'INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX' specifies that+-- there are likely many draw or dispatch calls that are zero-sized (zero+-- grid dimension, no primitives to render).+pattern INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = IndirectCommandsLayoutUsageFlagBitsNVX 0x00000004+-- | 'INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX' specifies+-- that the input data for the sequences is not implicitly indexed from+-- 0..sequencesUsed but a user provided+-- 'Graphics.Vulkan.Core10.Handles.Buffer' encoding the index is provided.+pattern INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = IndirectCommandsLayoutUsageFlagBitsNVX 0x00000008++type IndirectCommandsLayoutUsageFlagsNVX = IndirectCommandsLayoutUsageFlagBitsNVX++instance Show IndirectCommandsLayoutUsageFlagBitsNVX where+ showsPrec p = \case+ INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX -> showString "INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX"+ INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX -> showString "INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX"+ INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX -> showString "INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX"+ INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX -> showString "INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX"+ IndirectCommandsLayoutUsageFlagBitsNVX x -> showParen (p >= 11) (showString "IndirectCommandsLayoutUsageFlagBitsNVX 0x" . showHex x)++instance Read IndirectCommandsLayoutUsageFlagBitsNVX where+ readPrec = parens (choose [("INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX", pure INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX)+ , ("INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX", pure INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX)+ , ("INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX", pure INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX)+ , ("INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX", pure INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX)]+ ++++ prec 10 (do+ expectP (Ident "IndirectCommandsLayoutUsageFlagBitsNVX")+ v <- step readPrec+ pure (IndirectCommandsLayoutUsageFlagBitsNVX v)))+++-- | VkObjectEntryUsageFlagBitsNVX - Bitmask specifying allowed usage of an+-- object entry+--+-- = See Also+--+-- 'ObjectEntryUsageFlagsNVX'+newtype ObjectEntryUsageFlagBitsNVX = ObjectEntryUsageFlagBitsNVX Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX' specifies that the resource is+-- bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'+pattern OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = ObjectEntryUsageFlagBitsNVX 0x00000001+-- | 'OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX' specifies that the resource is+-- bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'+pattern OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = ObjectEntryUsageFlagBitsNVX 0x00000002++type ObjectEntryUsageFlagsNVX = ObjectEntryUsageFlagBitsNVX++instance Show ObjectEntryUsageFlagBitsNVX where+ showsPrec p = \case+ OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX -> showString "OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX"+ OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX -> showString "OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX"+ ObjectEntryUsageFlagBitsNVX x -> showParen (p >= 11) (showString "ObjectEntryUsageFlagBitsNVX 0x" . showHex x)++instance Read ObjectEntryUsageFlagBitsNVX where+ readPrec = parens (choose [("OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX", pure OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX)+ , ("OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX", pure OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX)]+ ++++ prec 10 (do+ expectP (Ident "ObjectEntryUsageFlagBitsNVX")+ v <- step readPrec+ pure (ObjectEntryUsageFlagBitsNVX v)))+++-- | VkIndirectCommandsTokenTypeNVX - Enum specifying+--+-- = Description+--+-- \'+--+-- +---------------------------------------------------+-----------------------------------------------------------------------++-- | Token type | Equivalent command |+-- +===================================================+=======================================================================++-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX' | 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindPipeline' |+-- +---------------------------------------------------+-----------------------------------------------------------------------++-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX' | 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets' |+-- +---------------------------------------------------+-----------------------------------------------------------------------++-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX' | 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer' |+-- +---------------------------------------------------+-----------------------------------------------------------------------++-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX' | 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers' |+-- +---------------------------------------------------+-----------------------------------------------------------------------++-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX' | 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdPushConstants' |+-- +---------------------------------------------------+-----------------------------------------------------------------------++-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX' | 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndexedIndirect' |+-- +---------------------------------------------------+-----------------------------------------------------------------------++-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX' | 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDrawIndirect' |+-- +---------------------------------------------------+-----------------------------------------------------------------------++-- | 'INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX' | 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdDispatchIndirect' |+-- +---------------------------------------------------+-----------------------------------------------------------------------++--+-- Supported indirect command tokens+--+-- = See Also+--+-- 'IndirectCommandsLayoutTokenNVX', 'IndirectCommandsTokenNVX'+newtype IndirectCommandsTokenTypeNVX = IndirectCommandsTokenTypeNVX Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX"+pattern INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX = IndirectCommandsTokenTypeNVX 0+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX"+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX = IndirectCommandsTokenTypeNVX 1+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX"+pattern INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX = IndirectCommandsTokenTypeNVX 2+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX"+pattern INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX = IndirectCommandsTokenTypeNVX 3+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX"+pattern INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX = IndirectCommandsTokenTypeNVX 4+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX"+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX = IndirectCommandsTokenTypeNVX 5+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX"+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX = IndirectCommandsTokenTypeNVX 6+-- No documentation found for Nested "VkIndirectCommandsTokenTypeNVX" "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX"+pattern INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX = IndirectCommandsTokenTypeNVX 7+{-# complete INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX,+ INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX,+ INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX,+ INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX,+ INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX,+ INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX,+ INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX,+ INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX :: IndirectCommandsTokenTypeNVX #-}++instance Show IndirectCommandsTokenTypeNVX where+ showsPrec p = \case+ INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX"+ INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX"+ INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX"+ INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX"+ INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX"+ INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX"+ INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX"+ INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX -> showString "INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX"+ IndirectCommandsTokenTypeNVX x -> showParen (p >= 11) (showString "IndirectCommandsTokenTypeNVX " . showsPrec 11 x)++instance Read IndirectCommandsTokenTypeNVX where+ readPrec = parens (choose [("INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX", pure INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX)+ , ("INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX", pure INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX)+ , ("INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX", pure INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX)+ , ("INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX", pure INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX)+ , ("INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX", pure INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX)+ , ("INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX", pure INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX)+ , ("INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX", pure INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX)+ , ("INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX", pure INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX)]+ ++++ prec 10 (do+ expectP (Ident "IndirectCommandsTokenTypeNVX")+ v <- step readPrec+ pure (IndirectCommandsTokenTypeNVX v)))+++-- | VkObjectEntryTypeNVX - Enum specifying object table entry type+--+-- = See Also+--+-- 'ObjectTableCreateInfoNVX', 'ObjectTableDescriptorSetEntryNVX',+-- 'ObjectTableEntryNVX', 'ObjectTableIndexBufferEntryNVX',+-- 'ObjectTablePipelineEntryNVX', 'ObjectTablePushConstantEntryNVX',+-- 'ObjectTableVertexBufferEntryNVX', 'unregisterObjectsNVX'+newtype ObjectEntryTypeNVX = ObjectEntryTypeNVX Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX' specifies a+-- 'Graphics.Vulkan.Core10.Handles.DescriptorSet' resource entry that is+-- registered via 'ObjectTableDescriptorSetEntryNVX'.+pattern OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX = ObjectEntryTypeNVX 0+-- | 'OBJECT_ENTRY_TYPE_PIPELINE_NVX' specifies a+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' resource entry that is+-- registered via 'ObjectTablePipelineEntryNVX'.+pattern OBJECT_ENTRY_TYPE_PIPELINE_NVX = ObjectEntryTypeNVX 1+-- | 'OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX' specifies a+-- 'Graphics.Vulkan.Core10.Handles.Buffer' resource entry that is+-- registered via 'ObjectTableIndexBufferEntryNVX'.+pattern OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX = ObjectEntryTypeNVX 2+-- | 'OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX' specifies a+-- 'Graphics.Vulkan.Core10.Handles.Buffer' resource entry that is+-- registered via 'ObjectTableVertexBufferEntryNVX'.+pattern OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX = ObjectEntryTypeNVX 3+-- | 'OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX' specifies the resource entry is+-- registered via 'ObjectTablePushConstantEntryNVX'.+pattern OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX = ObjectEntryTypeNVX 4+{-# complete OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX,+ OBJECT_ENTRY_TYPE_PIPELINE_NVX,+ OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX,+ OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX,+ OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX :: ObjectEntryTypeNVX #-}++instance Show ObjectEntryTypeNVX where+ showsPrec p = \case+ OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX -> showString "OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX"+ OBJECT_ENTRY_TYPE_PIPELINE_NVX -> showString "OBJECT_ENTRY_TYPE_PIPELINE_NVX"+ OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX -> showString "OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX"+ OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX -> showString "OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX"+ OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX -> showString "OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX"+ ObjectEntryTypeNVX x -> showParen (p >= 11) (showString "ObjectEntryTypeNVX " . showsPrec 11 x)++instance Read ObjectEntryTypeNVX where+ readPrec = parens (choose [("OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX", pure OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX)+ , ("OBJECT_ENTRY_TYPE_PIPELINE_NVX", pure OBJECT_ENTRY_TYPE_PIPELINE_NVX)+ , ("OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX", pure OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX)+ , ("OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX", pure OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX)+ , ("OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX", pure OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX)]+ ++++ prec 10 (do+ expectP (Ident "ObjectEntryTypeNVX")+ v <- step readPrec+ pure (ObjectEntryTypeNVX v)))+++type NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3++-- No documentation found for TopLevel "VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION"+pattern NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION :: forall a . Integral a => a+pattern NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3+++type NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NVX_device_generated_commands"++-- No documentation found for TopLevel "VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME"+pattern NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NVX_device_generated_commands"+
+ src/Graphics/Vulkan/Extensions/VK_NVX_device_generated_commands.hs-boot view
@@ -0,0 +1,135 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands ( CmdProcessCommandsInfoNVX+ , CmdReserveSpaceForCommandsInfoNVX+ , DeviceGeneratedCommandsFeaturesNVX+ , DeviceGeneratedCommandsLimitsNVX+ , IndirectCommandsLayoutCreateInfoNVX+ , IndirectCommandsLayoutTokenNVX+ , IndirectCommandsTokenNVX+ , ObjectTableCreateInfoNVX+ , ObjectTableDescriptorSetEntryNVX+ , ObjectTableEntryNVX+ , ObjectTableIndexBufferEntryNVX+ , ObjectTablePipelineEntryNVX+ , ObjectTablePushConstantEntryNVX+ , ObjectTableVertexBufferEntryNVX+ , ObjectEntryTypeNVX+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data CmdProcessCommandsInfoNVX++instance ToCStruct CmdProcessCommandsInfoNVX+instance Show CmdProcessCommandsInfoNVX++instance FromCStruct CmdProcessCommandsInfoNVX+++data CmdReserveSpaceForCommandsInfoNVX++instance ToCStruct CmdReserveSpaceForCommandsInfoNVX+instance Show CmdReserveSpaceForCommandsInfoNVX++instance FromCStruct CmdReserveSpaceForCommandsInfoNVX+++data DeviceGeneratedCommandsFeaturesNVX++instance ToCStruct DeviceGeneratedCommandsFeaturesNVX+instance Show DeviceGeneratedCommandsFeaturesNVX++instance FromCStruct DeviceGeneratedCommandsFeaturesNVX+++data DeviceGeneratedCommandsLimitsNVX++instance ToCStruct DeviceGeneratedCommandsLimitsNVX+instance Show DeviceGeneratedCommandsLimitsNVX++instance FromCStruct DeviceGeneratedCommandsLimitsNVX+++data IndirectCommandsLayoutCreateInfoNVX++instance ToCStruct IndirectCommandsLayoutCreateInfoNVX+instance Show IndirectCommandsLayoutCreateInfoNVX++instance FromCStruct IndirectCommandsLayoutCreateInfoNVX+++data IndirectCommandsLayoutTokenNVX++instance ToCStruct IndirectCommandsLayoutTokenNVX+instance Show IndirectCommandsLayoutTokenNVX++instance FromCStruct IndirectCommandsLayoutTokenNVX+++data IndirectCommandsTokenNVX++instance ToCStruct IndirectCommandsTokenNVX+instance Show IndirectCommandsTokenNVX++instance FromCStruct IndirectCommandsTokenNVX+++data ObjectTableCreateInfoNVX++instance ToCStruct ObjectTableCreateInfoNVX+instance Show ObjectTableCreateInfoNVX++instance FromCStruct ObjectTableCreateInfoNVX+++data ObjectTableDescriptorSetEntryNVX++instance ToCStruct ObjectTableDescriptorSetEntryNVX+instance Show ObjectTableDescriptorSetEntryNVX++instance FromCStruct ObjectTableDescriptorSetEntryNVX+++data ObjectTableEntryNVX++instance ToCStruct ObjectTableEntryNVX+instance Show ObjectTableEntryNVX++instance FromCStruct ObjectTableEntryNVX+++data ObjectTableIndexBufferEntryNVX++instance ToCStruct ObjectTableIndexBufferEntryNVX+instance Show ObjectTableIndexBufferEntryNVX++instance FromCStruct ObjectTableIndexBufferEntryNVX+++data ObjectTablePipelineEntryNVX++instance ToCStruct ObjectTablePipelineEntryNVX+instance Show ObjectTablePipelineEntryNVX++instance FromCStruct ObjectTablePipelineEntryNVX+++data ObjectTablePushConstantEntryNVX++instance ToCStruct ObjectTablePushConstantEntryNVX+instance Show ObjectTablePushConstantEntryNVX++instance FromCStruct ObjectTablePushConstantEntryNVX+++data ObjectTableVertexBufferEntryNVX++instance ToCStruct ObjectTableVertexBufferEntryNVX+instance Show ObjectTableVertexBufferEntryNVX++instance FromCStruct ObjectTableVertexBufferEntryNVX+++data ObjectEntryTypeNVX+
+ src/Graphics/Vulkan/Extensions/VK_NVX_image_view_handle.hs view
@@ -0,0 +1,198 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NVX_image_view_handle ( getImageViewHandleNVX+ , ImageViewHandleInfoNVX(..)+ , NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION+ , pattern NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION+ , NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME+ , pattern NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Core10.Enums.DescriptorType (DescriptorType)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetImageViewHandleNVX))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (ImageView)+import Graphics.Vulkan.Core10.Handles (Sampler)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetImageViewHandleNVX+ :: FunPtr (Ptr Device_T -> Ptr ImageViewHandleInfoNVX -> IO Word32) -> Ptr Device_T -> Ptr ImageViewHandleInfoNVX -> IO Word32++-- | vkGetImageViewHandleNVX - Get the handle for an image view for a+-- specific descriptor type+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the image view.+--+-- - @pInfo@ describes the image view to query and type of handle.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device', 'ImageViewHandleInfoNVX'+getImageViewHandleNVX :: Device -> ImageViewHandleInfoNVX -> IO (Word32)+getImageViewHandleNVX device info = evalContT $ do+ let vkGetImageViewHandleNVX' = mkVkGetImageViewHandleNVX (pVkGetImageViewHandleNVX (deviceCmds (device :: Device)))+ pInfo <- ContT $ withCStruct (info)+ r <- lift $ vkGetImageViewHandleNVX' (deviceHandle (device)) pInfo+ pure $ (r)+++-- | VkImageViewHandleInfoNVX - Structure specifying the image view for+-- handle queries+--+-- == Valid Usage+--+-- - 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' /must/+-- be+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE',+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'+--+-- - 'Graphics.Vulkan.Core10.Handles.Sampler' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Sampler' if+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'+--+-- - If descriptorType is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'+-- or+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER',+-- the image that 'Graphics.Vulkan.Core10.Handles.ImageView' was+-- created from /must/ have been created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT'+-- usage bit set+--+-- - If descriptorType is+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE',+-- the image that 'Graphics.Vulkan.Core10.Handles.ImageView' was+-- created from /must/ have been created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT'+-- usage bit set+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX'+--+-- - @pNext@ /must/ be @NULL@+--+-- - 'Graphics.Vulkan.Core10.Handles.ImageView' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.ImageView' handle+--+-- - 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' /must/+-- be a valid+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' value+--+-- - If 'Graphics.Vulkan.Core10.Handles.Sampler' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Sampler' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Sampler' handle+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.ImageView', and+-- 'Graphics.Vulkan.Core10.Handles.Sampler' that are valid handles of+-- non-ignored parameters /must/ have been created, allocated, or+-- retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType',+-- 'Graphics.Vulkan.Core10.Handles.ImageView',+-- 'Graphics.Vulkan.Core10.Handles.Sampler',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getImageViewHandleNVX'+data ImageViewHandleInfoNVX = ImageViewHandleInfoNVX+ { -- | 'Graphics.Vulkan.Core10.Handles.ImageView' is the image view to query.+ imageView :: ImageView+ , -- | 'Graphics.Vulkan.Core10.Enums.DescriptorType.DescriptorType' is the type+ -- of descriptor for which to query a handle.+ descriptorType :: DescriptorType+ , -- | 'Graphics.Vulkan.Core10.Handles.Sampler' is the sampler to combine with+ -- the image view when generating the handle.+ sampler :: Sampler+ }+ deriving (Typeable)+deriving instance Show ImageViewHandleInfoNVX++instance ToCStruct ImageViewHandleInfoNVX where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImageViewHandleInfoNVX{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ImageView)) (imageView)+ poke ((p `plusPtr` 24 :: Ptr DescriptorType)) (descriptorType)+ poke ((p `plusPtr` 32 :: Ptr Sampler)) (sampler)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ImageView)) (zero)+ poke ((p `plusPtr` 24 :: Ptr DescriptorType)) (zero)+ f++instance FromCStruct ImageViewHandleInfoNVX where+ peekCStruct p = do+ imageView <- peek @ImageView ((p `plusPtr` 16 :: Ptr ImageView))+ descriptorType <- peek @DescriptorType ((p `plusPtr` 24 :: Ptr DescriptorType))+ sampler <- peek @Sampler ((p `plusPtr` 32 :: Ptr Sampler))+ pure $ ImageViewHandleInfoNVX+ imageView descriptorType sampler++instance Storable ImageViewHandleInfoNVX where+ sizeOf ~_ = 40+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImageViewHandleInfoNVX where+ zero = ImageViewHandleInfoNVX+ zero+ zero+ zero+++type NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION"+pattern NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION :: forall a . Integral a => a+pattern NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 1+++type NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle"++-- No documentation found for TopLevel "VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME"+pattern NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle"+
+ src/Graphics/Vulkan/Extensions/VK_NVX_image_view_handle.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NVX_image_view_handle (ImageViewHandleInfoNVX) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ImageViewHandleInfoNVX++instance ToCStruct ImageViewHandleInfoNVX+instance Show ImageViewHandleInfoNVX++instance FromCStruct ImageViewHandleInfoNVX+
src/Graphics/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs view
@@ -1,107 +1,104 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes- ( pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX- , pattern VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX- , pattern VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX- , pattern VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION- , pattern VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME- , VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(..)- ) where--import Data.String- ( IsString- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.Pass- ( VkSubpassDescriptionFlagBits(..)- )-+module Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes ( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(..)+ , NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION+ , pattern NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION+ , NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME+ , pattern NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME+ ) where --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX :: VkStructureType-pattern VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = VkStructureType 1000097000--- | @VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX@ specifies that--- shaders compiled for this subpass write the attributes for all views in--- a single invocation of each vertex processing stage. All pipelines--- compiled against a subpass that includes this bit /must/ write per-view--- attributes to the code:*PerViewNV[] shader outputs, in addition to the--- non-per-view (e.g. @Position@) outputs.-pattern VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX :: VkSubpassDescriptionFlagBits-pattern VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = VkSubpassDescriptionFlagBits 0x00000001--- | @VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX@ specifies that--- shaders compiled for this subpass use per-view positions which only--- differ in value in the x component. Per-view viewport mask /can/ also be--- used.-pattern VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX :: VkSubpassDescriptionFlagBits-pattern VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = VkSubpassDescriptionFlagBits 0x00000002--- No documentation found for TopLevel "VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION"-pattern VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION :: Integral a => a-pattern VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME"-pattern VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes"+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX)) -- | VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX - Structure -- describing multiview limits that can be supported by an implementation -- -- = Members -- -- The members of the--- @VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX@ structure+-- 'PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX' structure -- describe the following implementation-dependent limits: -- -- = Description ----- - @perViewPositionAllComponents@ is @VK_TRUE@ if the implementation--- supports per-view position values that differ in components other--- than the X component.+-- If the 'PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX' structure+-- is included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits. -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX@------ If the @VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX@--- structure is included in the @pNext@ chain of--- 'Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2.VkPhysicalDeviceProperties2',--- it is filled with the implementation-dependent limits.--- -- = See Also ----- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX- { -- No documentation found for Nested "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX" "pNext"- vkPNext :: Ptr ()- , -- No documentation found for Nested "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX" "perViewPositionAllComponents"- vkPerViewPositionAllComponents :: VkBool32- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX+ { -- | @perViewPositionAllComponents@ is 'Graphics.Vulkan.Core10.BaseType.TRUE'+ -- if the implementation supports per-view position values that differ in+ -- components other than the X component.+ perViewPositionAllComponents :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX -instance Storable VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX where+instance ToCStruct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (perViewPositionAllComponents))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX where+ peekCStruct p = do+ perViewPositionAllComponents <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX+ (bool32ToBool perViewPositionAllComponents)++instance Storable PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX))- *> poke (ptr `plusPtr` 16) (vkPerViewPositionAllComponents (poked :: VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX where+ zero = PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX+ zero+++type NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION"+pattern NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION :: forall a . Integral a => a+pattern NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1+++type NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes"++-- No documentation found for TopLevel "VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME"+pattern NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes"+
+ src/Graphics/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes (PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX++instance ToCStruct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX+instance Show PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX++instance FromCStruct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX+
src/Graphics/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs view
@@ -1,80 +1,67 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling- ( pattern VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV- , pattern VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV- , pattern VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION- , pattern VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME- , vkCmdSetViewportWScalingNV- , VkViewportWScalingNV(..)- , VkPipelineViewportWScalingStateCreateInfoNV(..)- ) where--import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.C.Types- ( CFloat(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.Pipeline- ( VkDynamicState(..)- )-import Graphics.Vulkan.Core10.Queue- ( VkCommandBuffer- )+module Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling ( cmdSetViewportWScalingNV+ , ViewportWScalingNV(..)+ , PipelineViewportWScalingStateCreateInfoNV(..)+ , NV_CLIP_SPACE_W_SCALING_SPEC_VERSION+ , pattern NV_CLIP_SPACE_W_SCALING_SPEC_VERSION+ , NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME+ , pattern NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME+ ) where +import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Utils (maybePeek)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Either (Either)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CFloat(CFloat))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetViewportWScalingNV))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetViewportWScalingNV+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr ViewportWScalingNV -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr ViewportWScalingNV -> IO () --- | @VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV@ specifies that the--- @pViewportScalings@ state in--- @VkPipelineViewportWScalingStateCreateInfoNV@ will be ignored and /must/--- be set dynamically with 'vkCmdSetViewportWScalingNV' before any draws--- are performed with a pipeline state with--- @VkPipelineViewportWScalingStateCreateInfo@ member--- @viewportScalingEnable@ set to @VK_TRUE@-pattern VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV :: VkDynamicState-pattern VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = VkDynamicState 1000087000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"-pattern VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = VkStructureType 1000087000--- No documentation found for TopLevel "VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION"-pattern VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION :: Integral a => a-pattern VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME"-pattern VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" -- | vkCmdSetViewportWScalingNV - Set the viewport W scaling on a command -- buffer -- -- = Parameters ----- - @commandBuffer@ is the command buffer into which the command will be--- recorded.+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded. -- -- - @firstViewport@ is the index of the first viewport whose parameters -- are updated by the command.@@ -83,7 +70,7 @@ -- updated by the command. -- -- - @pViewportWScalings@ is a pointer to an array of--- 'VkViewportWScalingNV' structures specifying viewport parameters.+-- 'ViewportWScalingNV' structures specifying viewport parameters. -- -- = Description --@@ -93,125 +80,182 @@ -- -- == Valid Usage ----- - The bound graphics pipeline /must/ have been created with the--- @VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV@ dynamic state enabled--- -- - @firstViewport@ /must/ be less than--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceLimits'::@maxViewports@+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@ -- -- - The sum of @firstViewport@ and @viewportCount@ /must/ be between @1@ -- and--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDeviceLimits'::@maxViewports@,+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@, -- inclusive -- -- == Valid Usage (Implicit) ----- - @commandBuffer@ /must/ be a valid @VkCommandBuffer@ handle+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle -- -- - @pViewportWScalings@ /must/ be a valid pointer to an array of--- @viewportCount@ @VkViewportWScalingNV@ structures+-- @viewportCount@ 'ViewportWScalingNV' structures ----- - @commandBuffer@ /must/ be in the [recording--- state](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#commandbuffers-lifecycle)+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state> ----- - The @VkCommandPool@ that @commandBuffer@ was allocated from /must/--- support graphics operations+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations -- -- - @viewportCount@ /must/ be greater than @0@ -- -- == Host Synchronization ----- - Host access to @commandBuffer@ /must/ be externally synchronized+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized ----- - Host access to the @VkCommandPool@ that @commandBuffer@ was--- allocated from /must/ be externally synchronized+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized -- -- == Command Properties -- -- \' ----- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------+--- | [Command Buffer | [Render Pass | [Supported Queue | [Pipeline |--- | Levels](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkCommandBufferLevel) | Scope](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vkCmdBeginRenderPass) | Types](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VkQueueFlagBits) | Type](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#synchronization-pipeline-stages-types) |--- +=============================================================================================================+============================================================================================================+=======================================================================================================+============================================================================================================================+--- | Primary | Both | Graphics | |--- | Secondary | | | |--- +-------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------++-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ -- -- = See Also ----- 'Graphics.Vulkan.Core10.Queue.VkCommandBuffer', 'VkViewportWScalingNV'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkCmdSetViewportWScalingNV" vkCmdSetViewportWScalingNV :: ("commandBuffer" ::: VkCommandBuffer) -> ("firstViewport" ::: Word32) -> ("viewportCount" ::: Word32) -> ("pViewportWScalings" ::: Ptr VkViewportWScalingNV) -> IO ()+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', 'ViewportWScalingNV'+cmdSetViewportWScalingNV :: CommandBuffer -> ("firstViewport" ::: Word32) -> ("viewportWScalings" ::: Vector ViewportWScalingNV) -> IO ()+cmdSetViewportWScalingNV commandBuffer firstViewport viewportWScalings = evalContT $ do+ let vkCmdSetViewportWScalingNV' = mkVkCmdSetViewportWScalingNV (pVkCmdSetViewportWScalingNV (deviceCmds (commandBuffer :: CommandBuffer)))+ pPViewportWScalings <- ContT $ allocaBytesAligned @ViewportWScalingNV ((Data.Vector.length (viewportWScalings)) * 8) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPViewportWScalings `plusPtr` (8 * (i)) :: Ptr ViewportWScalingNV) (e) . ($ ())) (viewportWScalings)+ lift $ vkCmdSetViewportWScalingNV' (commandBufferHandle (commandBuffer)) (firstViewport) ((fromIntegral (Data.Vector.length $ (viewportWScalings)) :: Word32)) (pPViewportWScalings)+ pure $ ()++ -- | VkViewportWScalingNV - Structure specifying a viewport -- -- = See Also ----- 'VkPipelineViewportWScalingStateCreateInfoNV',--- 'vkCmdSetViewportWScalingNV'-data VkViewportWScalingNV = VkViewportWScalingNV+-- 'PipelineViewportWScalingStateCreateInfoNV', 'cmdSetViewportWScalingNV'+data ViewportWScalingNV = ViewportWScalingNV { -- | @xcoeff@ and @ycoeff@ are the viewport’s W scaling factor for x and y- -- respectively.- vkXcoeff :: CFloat+ -- respectively.+ xcoeff :: Float , -- No documentation found for Nested "VkViewportWScalingNV" "ycoeff"- vkYcoeff :: CFloat+ ycoeff :: Float }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show ViewportWScalingNV -instance Storable VkViewportWScalingNV where+instance ToCStruct ViewportWScalingNV where+ withCStruct x f = allocaBytesAligned 8 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ViewportWScalingNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (xcoeff))+ poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (ycoeff))+ f+ cStructSize = 8+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (zero))+ poke ((p `plusPtr` 4 :: Ptr CFloat)) (CFloat (zero))+ f++instance FromCStruct ViewportWScalingNV where+ peekCStruct p = do+ xcoeff <- peek @CFloat ((p `plusPtr` 0 :: Ptr CFloat))+ ycoeff <- peek @CFloat ((p `plusPtr` 4 :: Ptr CFloat))+ pure $ ViewportWScalingNV+ ((\(CFloat a) -> a) xcoeff) ((\(CFloat a) -> a) ycoeff)++instance Storable ViewportWScalingNV where sizeOf ~_ = 8 alignment ~_ = 4- peek ptr = VkViewportWScalingNV <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- poke ptr poked = poke (ptr `plusPtr` 0) (vkXcoeff (poked :: VkViewportWScalingNV))- *> poke (ptr `plusPtr` 4) (vkYcoeff (poked :: VkViewportWScalingNV))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ViewportWScalingNV where+ zero = ViewportWScalingNV+ zero+ zero++ -- | VkPipelineViewportWScalingStateCreateInfoNV - Structure specifying -- parameters of a newly created pipeline viewport W scaling state -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV@------ - @viewportCount@ /must/ be greater than @0@--- -- = See Also ----- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType',--- 'VkViewportWScalingNV'-data VkPipelineViewportWScalingStateCreateInfoNV = VkPipelineViewportWScalingStateCreateInfoNV- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @viewportWScalingEnable@ controls whether viewport __W__ scaling is- -- enabled.- vkViewportWScalingEnable :: VkBool32- , -- | @viewportCount@ is the number of viewports used by __W__ scaling, and- -- /must/ match the number of viewports in the pipeline if viewport __W__- -- scaling is enabled.- vkViewportCount :: Word32- , -- | @pViewportWScalings@ is a pointer to an array of @VkViewportWScalingNV@- -- structures, which define the __W__ scaling parameters for the- -- corresponding viewport. If the viewport __W__ scaling state is dynamic,- -- this member is ignored.- vkPViewportWScalings :: Ptr VkViewportWScalingNV+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'ViewportWScalingNV'+data PipelineViewportWScalingStateCreateInfoNV = PipelineViewportWScalingStateCreateInfoNV+ { -- | @viewportWScalingEnable@ controls whether viewport __W__ scaling is+ -- enabled.+ viewportWScalingEnable :: Bool+ , -- | @pViewportWScalings@ is a pointer to an array of 'ViewportWScalingNV'+ -- structures defining the __W__ scaling parameters for the corresponding+ -- viewports. If the viewport __W__ scaling state is dynamic, this member+ -- is ignored.+ viewportWScalings :: Either Word32 (Vector ViewportWScalingNV) }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show PipelineViewportWScalingStateCreateInfoNV -instance Storable VkPipelineViewportWScalingStateCreateInfoNV where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkPipelineViewportWScalingStateCreateInfoNV <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineViewportWScalingStateCreateInfoNV))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineViewportWScalingStateCreateInfoNV))- *> poke (ptr `plusPtr` 16) (vkViewportWScalingEnable (poked :: VkPipelineViewportWScalingStateCreateInfoNV))- *> poke (ptr `plusPtr` 20) (vkViewportCount (poked :: VkPipelineViewportWScalingStateCreateInfoNV))- *> poke (ptr `plusPtr` 24) (vkPViewportWScalings (poked :: VkPipelineViewportWScalingStateCreateInfoNV))+instance ToCStruct PipelineViewportWScalingStateCreateInfoNV where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineViewportWScalingStateCreateInfoNV{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (viewportWScalingEnable))+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (either id (fromIntegral . Data.Vector.length) (viewportWScalings)) :: Word32))+ pViewportWScalings'' <- case (viewportWScalings) of+ Left _ -> pure nullPtr+ Right v -> do+ pPViewportWScalings' <- ContT $ allocaBytesAligned @ViewportWScalingNV ((Data.Vector.length (v)) * 8) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPViewportWScalings' `plusPtr` (8 * (i)) :: Ptr ViewportWScalingNV) (e) . ($ ())) (v)+ pure $ pPViewportWScalings'+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ViewportWScalingNV))) pViewportWScalings''+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PipelineViewportWScalingStateCreateInfoNV where+ peekCStruct p = do+ viewportWScalingEnable <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ viewportCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pViewportWScalings <- peek @(Ptr ViewportWScalingNV) ((p `plusPtr` 24 :: Ptr (Ptr ViewportWScalingNV)))+ pViewportWScalings' <- maybePeek (\j -> generateM (fromIntegral viewportCount) (\i -> peekCStruct @ViewportWScalingNV (((j) `advancePtrBytes` (8 * (i)) :: Ptr ViewportWScalingNV)))) pViewportWScalings+ let pViewportWScalings'' = maybe (Left viewportCount) Right pViewportWScalings'+ pure $ PipelineViewportWScalingStateCreateInfoNV+ (bool32ToBool viewportWScalingEnable) pViewportWScalings''++instance Zero PipelineViewportWScalingStateCreateInfoNV where+ zero = PipelineViewportWScalingStateCreateInfoNV+ zero+ (Left 0)+++type NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION"+pattern NV_CLIP_SPACE_W_SCALING_SPEC_VERSION :: forall a . Integral a => a+pattern NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1+++type NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling"++-- No documentation found for TopLevel "VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME"+pattern NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling"+
+ src/Graphics/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling ( PipelineViewportWScalingStateCreateInfoNV+ , ViewportWScalingNV+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PipelineViewportWScalingStateCreateInfoNV++instance ToCStruct PipelineViewportWScalingStateCreateInfoNV+instance Show PipelineViewportWScalingStateCreateInfoNV++instance FromCStruct PipelineViewportWScalingStateCreateInfoNV+++data ViewportWScalingNV++instance ToCStruct ViewportWScalingNV+instance Show ViewportWScalingNV++instance FromCStruct ViewportWScalingNV+
+ src/Graphics/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs view
@@ -0,0 +1,118 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_compute_shader_derivatives ( PhysicalDeviceComputeShaderDerivativesFeaturesNV(..)+ , NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION+ , pattern NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION+ , NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME+ , pattern NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV))+-- | VkPhysicalDeviceComputeShaderDerivativesFeaturesNV - Structure+-- describing compute shader derivative features that can be supported by+-- an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceComputeShaderDerivativesFeaturesNV'+-- structure describe the following features:+--+-- = Description+--+-- See+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#texture-derivatives-compute Compute Shader Derivatives>+-- for more information.+--+-- If the 'PhysicalDeviceComputeShaderDerivativesFeaturesNV' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether each feature is supported.+-- 'PhysicalDeviceComputeShaderDerivativesFeaturesNV' /can/ also be+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceComputeShaderDerivativesFeaturesNV = PhysicalDeviceComputeShaderDerivativesFeaturesNV+ { -- | @computeDerivativeGroupQuads@ indicates that the implementation supports+ -- the @ComputeDerivativeGroupQuadsNV@ SPIR-V capability.+ computeDerivativeGroupQuads :: Bool+ , -- | @computeDerivativeGroupLinear@ indicates that the implementation+ -- supports the @ComputeDerivativeGroupLinearNV@ SPIR-V capability.+ computeDerivativeGroupLinear :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceComputeShaderDerivativesFeaturesNV++instance ToCStruct PhysicalDeviceComputeShaderDerivativesFeaturesNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceComputeShaderDerivativesFeaturesNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (computeDerivativeGroupQuads))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (computeDerivativeGroupLinear))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceComputeShaderDerivativesFeaturesNV where+ peekCStruct p = do+ computeDerivativeGroupQuads <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ computeDerivativeGroupLinear <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ pure $ PhysicalDeviceComputeShaderDerivativesFeaturesNV+ (bool32ToBool computeDerivativeGroupQuads) (bool32ToBool computeDerivativeGroupLinear)++instance Storable PhysicalDeviceComputeShaderDerivativesFeaturesNV where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceComputeShaderDerivativesFeaturesNV where+ zero = PhysicalDeviceComputeShaderDerivativesFeaturesNV+ zero+ zero+++type NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION"+pattern NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION :: forall a . Integral a => a+pattern NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1+++type NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives"++-- No documentation found for TopLevel "VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME"+pattern NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives"+
+ src/Graphics/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_compute_shader_derivatives (PhysicalDeviceComputeShaderDerivativesFeaturesNV) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceComputeShaderDerivativesFeaturesNV++instance ToCStruct PhysicalDeviceComputeShaderDerivativesFeaturesNV+instance Show PhysicalDeviceComputeShaderDerivativesFeaturesNV++instance FromCStruct PhysicalDeviceComputeShaderDerivativesFeaturesNV+
+ src/Graphics/Vulkan/Extensions/VK_NV_cooperative_matrix.hs view
@@ -0,0 +1,545 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix ( getPhysicalDeviceCooperativeMatrixPropertiesNV+ , PhysicalDeviceCooperativeMatrixFeaturesNV(..)+ , PhysicalDeviceCooperativeMatrixPropertiesNV(..)+ , CooperativeMatrixPropertiesNV(..)+ , ScopeNV( SCOPE_DEVICE_NV+ , SCOPE_WORKGROUP_NV+ , SCOPE_SUBGROUP_NV+ , SCOPE_QUEUE_FAMILY_NV+ , ..+ )+ , ComponentTypeNV( COMPONENT_TYPE_FLOAT16_NV+ , COMPONENT_TYPE_FLOAT32_NV+ , COMPONENT_TYPE_FLOAT64_NV+ , COMPONENT_TYPE_SINT8_NV+ , COMPONENT_TYPE_SINT16_NV+ , COMPONENT_TYPE_SINT32_NV+ , COMPONENT_TYPE_SINT64_NV+ , COMPONENT_TYPE_UINT8_NV+ , COMPONENT_TYPE_UINT16_NV+ , COMPONENT_TYPE_UINT32_NV+ , COMPONENT_TYPE_UINT64_NV+ , ..+ )+ , NV_COOPERATIVE_MATRIX_SPEC_VERSION+ , pattern NV_COOPERATIVE_MATRIX_SPEC_VERSION+ , NV_COOPERATIVE_MATRIX_EXTENSION_NAME+ , pattern NV_COOPERATIVE_MATRIX_EXTENSION_NAME+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+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 Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceCooperativeMatrixPropertiesNV))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceCooperativeMatrixPropertiesNV+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr CooperativeMatrixPropertiesNV -> IO Result) -> Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr CooperativeMatrixPropertiesNV -> IO Result++-- | vkGetPhysicalDeviceCooperativeMatrixPropertiesNV - Returns properties+-- describing what cooperative matrix types are supported+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device.+--+-- - @pPropertyCount@ is a pointer to an integer related to the number of+-- cooperative matrix properties available or queried.+--+-- - @pProperties@ is either @NULL@ or a pointer to an array of+-- 'CooperativeMatrixPropertiesNV' structures.+--+-- = Description+--+-- If @pProperties@ is @NULL@, then the number of cooperative matrix+-- properties available is returned in @pPropertyCount@. Otherwise,+-- @pPropertyCount@ /must/ point to a variable set by the user to the+-- number of elements in the @pProperties@ array, and on return the+-- variable is overwritten with the number of structures actually written+-- to @pProperties@. If @pPropertyCount@ is less than the number of+-- cooperative matrix properties available, at most @pPropertyCount@+-- structures will be written. If @pPropertyCount@ is smaller than the+-- number of cooperative matrix properties available,+-- 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned+-- instead of 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS', to indicate+-- that not all the available cooperative matrix properties were returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @pPropertyCount@ /must/ be a valid pointer to a @uint32_t@ value+--+-- - If the value referenced by @pPropertyCount@ is not @0@, and+-- @pProperties@ is not @NULL@, @pProperties@ /must/ be a valid pointer+-- to an array of @pPropertyCount@ 'CooperativeMatrixPropertiesNV'+-- structures+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'CooperativeMatrixPropertiesNV',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+getPhysicalDeviceCooperativeMatrixPropertiesNV :: PhysicalDevice -> IO (Result, ("properties" ::: Vector CooperativeMatrixPropertiesNV))+getPhysicalDeviceCooperativeMatrixPropertiesNV physicalDevice = evalContT $ do+ let vkGetPhysicalDeviceCooperativeMatrixPropertiesNV' = mkVkGetPhysicalDeviceCooperativeMatrixPropertiesNV (pVkGetPhysicalDeviceCooperativeMatrixPropertiesNV (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pPPropertyCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkGetPhysicalDeviceCooperativeMatrixPropertiesNV' physicalDevice' (pPPropertyCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pPropertyCount <- lift $ peek @Word32 pPPropertyCount+ pPProperties <- ContT $ bracket (callocBytes @CooperativeMatrixPropertiesNV ((fromIntegral (pPropertyCount)) * 48)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPProperties `advancePtrBytes` (i * 48) :: Ptr CooperativeMatrixPropertiesNV) . ($ ())) [0..(fromIntegral (pPropertyCount)) - 1]+ r' <- lift $ vkGetPhysicalDeviceCooperativeMatrixPropertiesNV' physicalDevice' (pPPropertyCount) ((pPProperties))+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pPropertyCount' <- lift $ peek @Word32 pPPropertyCount+ pProperties' <- lift $ generateM (fromIntegral (pPropertyCount')) (\i -> peekCStruct @CooperativeMatrixPropertiesNV (((pPProperties) `advancePtrBytes` (48 * (i)) :: Ptr CooperativeMatrixPropertiesNV)))+ pure $ ((r'), pProperties')+++-- | VkPhysicalDeviceCooperativeMatrixFeaturesNV - Structure describing+-- cooperative matrix features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceCooperativeMatrixFeaturesNV' structure+-- describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceCooperativeMatrixFeaturesNV' structure is included+-- in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceCooperativeMatrixFeaturesNV' /can/ also be included in+-- the @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceCooperativeMatrixFeaturesNV = PhysicalDeviceCooperativeMatrixFeaturesNV+ { -- | @cooperativeMatrix@ indicates that the implementation supports the+ -- @CooperativeMatrixNV@ SPIR-V capability.+ cooperativeMatrix :: Bool+ , -- | @cooperativeMatrixRobustBufferAccess@ indicates that the implementation+ -- supports robust buffer access for SPIR-V @OpCooperativeMatrixLoadNV@ and+ -- @OpCooperativeMatrixStoreNV@ instructions.+ cooperativeMatrixRobustBufferAccess :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceCooperativeMatrixFeaturesNV++instance ToCStruct PhysicalDeviceCooperativeMatrixFeaturesNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceCooperativeMatrixFeaturesNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (cooperativeMatrix))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (cooperativeMatrixRobustBufferAccess))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceCooperativeMatrixFeaturesNV where+ peekCStruct p = do+ cooperativeMatrix <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ cooperativeMatrixRobustBufferAccess <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ pure $ PhysicalDeviceCooperativeMatrixFeaturesNV+ (bool32ToBool cooperativeMatrix) (bool32ToBool cooperativeMatrixRobustBufferAccess)++instance Storable PhysicalDeviceCooperativeMatrixFeaturesNV where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceCooperativeMatrixFeaturesNV where+ zero = PhysicalDeviceCooperativeMatrixFeaturesNV+ zero+ zero+++-- | VkPhysicalDeviceCooperativeMatrixPropertiesNV - Structure describing+-- cooperative matrix properties supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceCooperativeMatrixPropertiesNV'+-- structure describe the following implementation-dependent limits:+--+-- = Description+--+-- If the 'PhysicalDeviceCooperativeMatrixPropertiesNV' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceCooperativeMatrixPropertiesNV = PhysicalDeviceCooperativeMatrixPropertiesNV+ { -- | @cooperativeMatrixSupportedStages@ is a bitfield of+ -- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits'+ -- describing the shader stages that cooperative matrix instructions are+ -- supported in. @cooperativeMatrixSupportedStages@ will have the+ -- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT'+ -- bit set if any of the physical device’s queues support+ -- 'Graphics.Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'.+ cooperativeMatrixSupportedStages :: ShaderStageFlags }+ deriving (Typeable)+deriving instance Show PhysicalDeviceCooperativeMatrixPropertiesNV++instance ToCStruct PhysicalDeviceCooperativeMatrixPropertiesNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceCooperativeMatrixPropertiesNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (cooperativeMatrixSupportedStages)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ShaderStageFlags)) (zero)+ f++instance FromCStruct PhysicalDeviceCooperativeMatrixPropertiesNV where+ peekCStruct p = do+ cooperativeMatrixSupportedStages <- peek @ShaderStageFlags ((p `plusPtr` 16 :: Ptr ShaderStageFlags))+ pure $ PhysicalDeviceCooperativeMatrixPropertiesNV+ cooperativeMatrixSupportedStages++instance Storable PhysicalDeviceCooperativeMatrixPropertiesNV where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceCooperativeMatrixPropertiesNV where+ zero = PhysicalDeviceCooperativeMatrixPropertiesNV+ zero+++-- | VkCooperativeMatrixPropertiesNV - Structure specifying cooperative+-- matrix properties+--+-- = Description+--+-- If some types are preferred over other types (e.g. for performance),+-- they /should/ appear earlier in the list enumerated by+-- 'getPhysicalDeviceCooperativeMatrixPropertiesNV'.+--+-- At least one entry in the list /must/ have power of two values for all+-- of @MSize@, @KSize@, and @NSize@.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'ComponentTypeNV', 'ScopeNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceCooperativeMatrixPropertiesNV'+data CooperativeMatrixPropertiesNV = CooperativeMatrixPropertiesNV+ { -- | @MSize@ is the number of rows in matrices A, C, and D.+ mSize :: Word32+ , -- | @NSize@ is the number of columns in matrices B, C, D.+ nSize :: Word32+ , -- | @KSize@ is the number of columns in matrix A and rows in matrix B.+ kSize :: Word32+ , -- | @AType@ /must/ be a valid 'ComponentTypeNV' value+ aType :: ComponentTypeNV+ , -- | @BType@ /must/ be a valid 'ComponentTypeNV' value+ bType :: ComponentTypeNV+ , -- | @CType@ /must/ be a valid 'ComponentTypeNV' value+ cType :: ComponentTypeNV+ , -- | @DType@ /must/ be a valid 'ComponentTypeNV' value+ dType :: ComponentTypeNV+ , -- | @scope@ /must/ be a valid 'ScopeNV' value+ scope :: ScopeNV+ }+ deriving (Typeable)+deriving instance Show CooperativeMatrixPropertiesNV++instance ToCStruct CooperativeMatrixPropertiesNV where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p CooperativeMatrixPropertiesNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (mSize)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (nSize)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (kSize)+ poke ((p `plusPtr` 28 :: Ptr ComponentTypeNV)) (aType)+ poke ((p `plusPtr` 32 :: Ptr ComponentTypeNV)) (bType)+ poke ((p `plusPtr` 36 :: Ptr ComponentTypeNV)) (cType)+ poke ((p `plusPtr` 40 :: Ptr ComponentTypeNV)) (dType)+ poke ((p `plusPtr` 44 :: Ptr ScopeNV)) (scope)+ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 28 :: Ptr ComponentTypeNV)) (zero)+ poke ((p `plusPtr` 32 :: Ptr ComponentTypeNV)) (zero)+ poke ((p `plusPtr` 36 :: Ptr ComponentTypeNV)) (zero)+ poke ((p `plusPtr` 40 :: Ptr ComponentTypeNV)) (zero)+ poke ((p `plusPtr` 44 :: Ptr ScopeNV)) (zero)+ f++instance FromCStruct CooperativeMatrixPropertiesNV where+ peekCStruct p = do+ mSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ nSize <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ kSize <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ aType <- peek @ComponentTypeNV ((p `plusPtr` 28 :: Ptr ComponentTypeNV))+ bType <- peek @ComponentTypeNV ((p `plusPtr` 32 :: Ptr ComponentTypeNV))+ cType <- peek @ComponentTypeNV ((p `plusPtr` 36 :: Ptr ComponentTypeNV))+ dType <- peek @ComponentTypeNV ((p `plusPtr` 40 :: Ptr ComponentTypeNV))+ scope <- peek @ScopeNV ((p `plusPtr` 44 :: Ptr ScopeNV))+ pure $ CooperativeMatrixPropertiesNV+ mSize nSize kSize aType bType cType dType scope++instance Storable CooperativeMatrixPropertiesNV where+ sizeOf ~_ = 48+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero CooperativeMatrixPropertiesNV where+ zero = CooperativeMatrixPropertiesNV+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkScopeNV - Specify SPIR-V scope+--+-- = Description+--+-- All enum values match the corresponding SPIR-V value.+--+-- = See Also+--+-- 'CooperativeMatrixPropertiesNV'+newtype ScopeNV = ScopeNV Int32+ deriving newtype (Eq, Ord, Storable, Zero)+-- Note that the zero instance does not produce a valid value, passing 'zero' to Vulkan will result in an error++-- | 'SCOPE_DEVICE_NV' corresponds to SPIR-V+-- 'Graphics.Vulkan.Core10.Handles.Device' scope.+pattern SCOPE_DEVICE_NV = ScopeNV 1+-- | 'SCOPE_WORKGROUP_NV' corresponds to SPIR-V @Workgroup@ scope.+pattern SCOPE_WORKGROUP_NV = ScopeNV 2+-- | 'SCOPE_SUBGROUP_NV' corresponds to SPIR-V @Subgroup@ scope.+pattern SCOPE_SUBGROUP_NV = ScopeNV 3+-- | 'SCOPE_QUEUE_FAMILY_NV' corresponds to SPIR-V @QueueFamily@ scope.+pattern SCOPE_QUEUE_FAMILY_NV = ScopeNV 5+{-# complete SCOPE_DEVICE_NV,+ SCOPE_WORKGROUP_NV,+ SCOPE_SUBGROUP_NV,+ SCOPE_QUEUE_FAMILY_NV :: ScopeNV #-}++instance Show ScopeNV where+ showsPrec p = \case+ SCOPE_DEVICE_NV -> showString "SCOPE_DEVICE_NV"+ SCOPE_WORKGROUP_NV -> showString "SCOPE_WORKGROUP_NV"+ SCOPE_SUBGROUP_NV -> showString "SCOPE_SUBGROUP_NV"+ SCOPE_QUEUE_FAMILY_NV -> showString "SCOPE_QUEUE_FAMILY_NV"+ ScopeNV x -> showParen (p >= 11) (showString "ScopeNV " . showsPrec 11 x)++instance Read ScopeNV where+ readPrec = parens (choose [("SCOPE_DEVICE_NV", pure SCOPE_DEVICE_NV)+ , ("SCOPE_WORKGROUP_NV", pure SCOPE_WORKGROUP_NV)+ , ("SCOPE_SUBGROUP_NV", pure SCOPE_SUBGROUP_NV)+ , ("SCOPE_QUEUE_FAMILY_NV", pure SCOPE_QUEUE_FAMILY_NV)]+ ++++ prec 10 (do+ expectP (Ident "ScopeNV")+ v <- step readPrec+ pure (ScopeNV v)))+++-- | VkComponentTypeNV - Specify SPIR-V cooperative matrix component type+--+-- = See Also+--+-- 'CooperativeMatrixPropertiesNV'+newtype ComponentTypeNV = ComponentTypeNV Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'COMPONENT_TYPE_FLOAT16_NV' corresponds to SPIR-V @OpTypeFloat@ 16.+pattern COMPONENT_TYPE_FLOAT16_NV = ComponentTypeNV 0+-- | 'COMPONENT_TYPE_FLOAT32_NV' corresponds to SPIR-V @OpTypeFloat@ 32.+pattern COMPONENT_TYPE_FLOAT32_NV = ComponentTypeNV 1+-- | 'COMPONENT_TYPE_FLOAT64_NV' corresponds to SPIR-V @OpTypeFloat@ 64.+pattern COMPONENT_TYPE_FLOAT64_NV = ComponentTypeNV 2+-- | 'COMPONENT_TYPE_SINT8_NV' corresponds to SPIR-V @OpTypeInt@ 8 1.+pattern COMPONENT_TYPE_SINT8_NV = ComponentTypeNV 3+-- | 'COMPONENT_TYPE_SINT16_NV' corresponds to SPIR-V @OpTypeInt@ 16 1.+pattern COMPONENT_TYPE_SINT16_NV = ComponentTypeNV 4+-- | 'COMPONENT_TYPE_SINT32_NV' corresponds to SPIR-V @OpTypeInt@ 32 1.+pattern COMPONENT_TYPE_SINT32_NV = ComponentTypeNV 5+-- | 'COMPONENT_TYPE_SINT64_NV' corresponds to SPIR-V @OpTypeInt@ 64 1.+pattern COMPONENT_TYPE_SINT64_NV = ComponentTypeNV 6+-- | 'COMPONENT_TYPE_UINT8_NV' corresponds to SPIR-V @OpTypeInt@ 8 0.+pattern COMPONENT_TYPE_UINT8_NV = ComponentTypeNV 7+-- | 'COMPONENT_TYPE_UINT16_NV' corresponds to SPIR-V @OpTypeInt@ 16 0.+pattern COMPONENT_TYPE_UINT16_NV = ComponentTypeNV 8+-- | 'COMPONENT_TYPE_UINT32_NV' corresponds to SPIR-V @OpTypeInt@ 32 0.+pattern COMPONENT_TYPE_UINT32_NV = ComponentTypeNV 9+-- | 'COMPONENT_TYPE_UINT64_NV' corresponds to SPIR-V @OpTypeInt@ 64 0.+pattern COMPONENT_TYPE_UINT64_NV = ComponentTypeNV 10+{-# complete COMPONENT_TYPE_FLOAT16_NV,+ COMPONENT_TYPE_FLOAT32_NV,+ COMPONENT_TYPE_FLOAT64_NV,+ COMPONENT_TYPE_SINT8_NV,+ COMPONENT_TYPE_SINT16_NV,+ COMPONENT_TYPE_SINT32_NV,+ COMPONENT_TYPE_SINT64_NV,+ COMPONENT_TYPE_UINT8_NV,+ COMPONENT_TYPE_UINT16_NV,+ COMPONENT_TYPE_UINT32_NV,+ COMPONENT_TYPE_UINT64_NV :: ComponentTypeNV #-}++instance Show ComponentTypeNV where+ showsPrec p = \case+ COMPONENT_TYPE_FLOAT16_NV -> showString "COMPONENT_TYPE_FLOAT16_NV"+ COMPONENT_TYPE_FLOAT32_NV -> showString "COMPONENT_TYPE_FLOAT32_NV"+ COMPONENT_TYPE_FLOAT64_NV -> showString "COMPONENT_TYPE_FLOAT64_NV"+ COMPONENT_TYPE_SINT8_NV -> showString "COMPONENT_TYPE_SINT8_NV"+ COMPONENT_TYPE_SINT16_NV -> showString "COMPONENT_TYPE_SINT16_NV"+ COMPONENT_TYPE_SINT32_NV -> showString "COMPONENT_TYPE_SINT32_NV"+ COMPONENT_TYPE_SINT64_NV -> showString "COMPONENT_TYPE_SINT64_NV"+ COMPONENT_TYPE_UINT8_NV -> showString "COMPONENT_TYPE_UINT8_NV"+ COMPONENT_TYPE_UINT16_NV -> showString "COMPONENT_TYPE_UINT16_NV"+ COMPONENT_TYPE_UINT32_NV -> showString "COMPONENT_TYPE_UINT32_NV"+ COMPONENT_TYPE_UINT64_NV -> showString "COMPONENT_TYPE_UINT64_NV"+ ComponentTypeNV x -> showParen (p >= 11) (showString "ComponentTypeNV " . showsPrec 11 x)++instance Read ComponentTypeNV where+ readPrec = parens (choose [("COMPONENT_TYPE_FLOAT16_NV", pure COMPONENT_TYPE_FLOAT16_NV)+ , ("COMPONENT_TYPE_FLOAT32_NV", pure COMPONENT_TYPE_FLOAT32_NV)+ , ("COMPONENT_TYPE_FLOAT64_NV", pure COMPONENT_TYPE_FLOAT64_NV)+ , ("COMPONENT_TYPE_SINT8_NV", pure COMPONENT_TYPE_SINT8_NV)+ , ("COMPONENT_TYPE_SINT16_NV", pure COMPONENT_TYPE_SINT16_NV)+ , ("COMPONENT_TYPE_SINT32_NV", pure COMPONENT_TYPE_SINT32_NV)+ , ("COMPONENT_TYPE_SINT64_NV", pure COMPONENT_TYPE_SINT64_NV)+ , ("COMPONENT_TYPE_UINT8_NV", pure COMPONENT_TYPE_UINT8_NV)+ , ("COMPONENT_TYPE_UINT16_NV", pure COMPONENT_TYPE_UINT16_NV)+ , ("COMPONENT_TYPE_UINT32_NV", pure COMPONENT_TYPE_UINT32_NV)+ , ("COMPONENT_TYPE_UINT64_NV", pure COMPONENT_TYPE_UINT64_NV)]+ ++++ prec 10 (do+ expectP (Ident "ComponentTypeNV")+ v <- step readPrec+ pure (ComponentTypeNV v)))+++type NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION"+pattern NV_COOPERATIVE_MATRIX_SPEC_VERSION :: forall a . Integral a => a+pattern NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1+++type NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix"++-- No documentation found for TopLevel "VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME"+pattern NV_COOPERATIVE_MATRIX_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix"+
+ src/Graphics/Vulkan/Extensions/VK_NV_cooperative_matrix.hs-boot view
@@ -0,0 +1,32 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix ( CooperativeMatrixPropertiesNV+ , PhysicalDeviceCooperativeMatrixFeaturesNV+ , PhysicalDeviceCooperativeMatrixPropertiesNV+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data CooperativeMatrixPropertiesNV++instance ToCStruct CooperativeMatrixPropertiesNV+instance Show CooperativeMatrixPropertiesNV++instance FromCStruct CooperativeMatrixPropertiesNV+++data PhysicalDeviceCooperativeMatrixFeaturesNV++instance ToCStruct PhysicalDeviceCooperativeMatrixFeaturesNV+instance Show PhysicalDeviceCooperativeMatrixFeaturesNV++instance FromCStruct PhysicalDeviceCooperativeMatrixFeaturesNV+++data PhysicalDeviceCooperativeMatrixPropertiesNV++instance ToCStruct PhysicalDeviceCooperativeMatrixPropertiesNV+instance Show PhysicalDeviceCooperativeMatrixPropertiesNV++instance FromCStruct PhysicalDeviceCooperativeMatrixPropertiesNV+
+ src/Graphics/Vulkan/Extensions/VK_NV_corner_sampled_image.hs view
@@ -0,0 +1,109 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_corner_sampled_image ( PhysicalDeviceCornerSampledImageFeaturesNV(..)+ , NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION+ , pattern NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION+ , NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME+ , pattern NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV))+-- | VkPhysicalDeviceCornerSampledImageFeaturesNV - Structure describing+-- corner sampled image features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceCornerSampledImageFeaturesNV'+-- structure describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceCornerSampledImageFeaturesNV' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether each feature is supported.+-- 'PhysicalDeviceCornerSampledImageFeaturesNV' /can/ also be included in+-- the @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceCornerSampledImageFeaturesNV = PhysicalDeviceCornerSampledImageFeaturesNV+ { -- | @cornerSampledImage@ specifies whether images can be created with a+ -- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+ -- containing+ -- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'.+ -- See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-images-corner-sampled Corner-Sampled Images>.+ cornerSampledImage :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceCornerSampledImageFeaturesNV++instance ToCStruct PhysicalDeviceCornerSampledImageFeaturesNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceCornerSampledImageFeaturesNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (cornerSampledImage))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceCornerSampledImageFeaturesNV where+ peekCStruct p = do+ cornerSampledImage <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceCornerSampledImageFeaturesNV+ (bool32ToBool cornerSampledImage)++instance Storable PhysicalDeviceCornerSampledImageFeaturesNV where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceCornerSampledImageFeaturesNV where+ zero = PhysicalDeviceCornerSampledImageFeaturesNV+ zero+++type NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION"+pattern NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION :: forall a . Integral a => a+pattern NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2+++type NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image"++-- No documentation found for TopLevel "VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME"+pattern NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image"+
+ src/Graphics/Vulkan/Extensions/VK_NV_corner_sampled_image.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_corner_sampled_image (PhysicalDeviceCornerSampledImageFeaturesNV) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceCornerSampledImageFeaturesNV++instance ToCStruct PhysicalDeviceCornerSampledImageFeaturesNV+instance Show PhysicalDeviceCornerSampledImageFeaturesNV++instance FromCStruct PhysicalDeviceCornerSampledImageFeaturesNV+
+ src/Graphics/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs view
@@ -0,0 +1,463 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode ( getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV+ , PhysicalDeviceCoverageReductionModeFeaturesNV(..)+ , PipelineCoverageReductionStateCreateInfoNV(..)+ , FramebufferMixedSamplesCombinationNV(..)+ , PipelineCoverageReductionStateCreateFlagsNV(..)+ , CoverageReductionModeNV( COVERAGE_REDUCTION_MODE_MERGE_NV+ , COVERAGE_REDUCTION_MODE_TRUNCATE_NV+ , ..+ )+ , NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION+ , pattern NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION+ , NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME+ , pattern NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import Data.Bits (Bits)+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 Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)+import Graphics.Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlags)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV+ :: FunPtr (Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr FramebufferMixedSamplesCombinationNV -> IO Result) -> Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr FramebufferMixedSamplesCombinationNV -> IO Result++-- | vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV -+-- Query supported sample count combinations+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device from which to query the set of combinations.+--+-- - @pCombinationCount@ is a pointer to an integer related to the number+-- of combinations available or queried, as described below.+--+-- - @pCombinations@ is either @NULL@ or a pointer to an array of+-- 'FramebufferMixedSamplesCombinationNV' values, indicating the+-- supported combinations of coverage reduction mode, rasterization+-- samples, and color, depth, stencil attachment sample counts.+--+-- = Description+--+-- If @pCombinations@ is @NULL@, then the number of supported combinations+-- for the given 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is+-- returned in @pCombinationCount@. Otherwise, @pCombinationCount@ /must/+-- point to a variable set by the user to the number of elements in the+-- @pCombinations@ array, and on return the variable is overwritten with+-- the number of values actually written to @pCombinations@. If the value+-- of @pCombinationCount@ is less than the number of combinations supported+-- for the given 'Graphics.Vulkan.Core10.Handles.PhysicalDevice', at most+-- @pCombinationCount@ values will be written @pCombinations@ and+-- 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned+-- instead of 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' to indicate+-- that not all the supported values were returned.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' handle+--+-- - @pCombinationCount@ /must/ be a valid pointer to a @uint32_t@ value+--+-- - If the value referenced by @pCombinationCount@ is not @0@, and+-- @pCombinations@ is not @NULL@, @pCombinations@ /must/ be a valid+-- pointer to an array of @pCombinationCount@+-- 'FramebufferMixedSamplesCombinationNV' structures+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.INCOMPLETE'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'FramebufferMixedSamplesCombinationNV',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV :: PhysicalDevice -> IO (Result, ("combinations" ::: Vector FramebufferMixedSamplesCombinationNV))+getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV physicalDevice = evalContT $ do+ let vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV' = mkVkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV (pVkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV (instanceCmds (physicalDevice :: PhysicalDevice)))+ let physicalDevice' = physicalDeviceHandle (physicalDevice)+ pPCombinationCount <- ContT $ bracket (callocBytes @Word32 4) free+ r <- lift $ vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV' physicalDevice' (pPCombinationCount) (nullPtr)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pCombinationCount <- lift $ peek @Word32 pPCombinationCount+ pPCombinations <- ContT $ bracket (callocBytes @FramebufferMixedSamplesCombinationNV ((fromIntegral (pCombinationCount)) * 32)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPCombinations `advancePtrBytes` (i * 32) :: Ptr FramebufferMixedSamplesCombinationNV) . ($ ())) [0..(fromIntegral (pCombinationCount)) - 1]+ r' <- lift $ vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV' physicalDevice' (pPCombinationCount) ((pPCombinations))+ lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))+ pCombinationCount' <- lift $ peek @Word32 pPCombinationCount+ pCombinations' <- lift $ generateM (fromIntegral (pCombinationCount')) (\i -> peekCStruct @FramebufferMixedSamplesCombinationNV (((pPCombinations) `advancePtrBytes` (32 * (i)) :: Ptr FramebufferMixedSamplesCombinationNV)))+ pure $ ((r'), pCombinations')+++-- | VkPhysicalDeviceCoverageReductionModeFeaturesNV - Structure describing+-- the coverage reduction mode features that can be supported by an+-- implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceCoverageReductionModeFeaturesNV'+-- structure describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceCoverageReductionModeFeaturesNV' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceCoverageReductionModeFeaturesNV' /can/ also be included+-- in the @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo'+-- to enable the feature.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceCoverageReductionModeFeaturesNV = PhysicalDeviceCoverageReductionModeFeaturesNV+ { -- | @coverageReductionMode@ indicates whether the implementation supports+ -- coverage reduction modes. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-coverage-reduction Coverage Reduction>.+ coverageReductionMode :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceCoverageReductionModeFeaturesNV++instance ToCStruct PhysicalDeviceCoverageReductionModeFeaturesNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceCoverageReductionModeFeaturesNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (coverageReductionMode))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceCoverageReductionModeFeaturesNV where+ peekCStruct p = do+ coverageReductionMode <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceCoverageReductionModeFeaturesNV+ (bool32ToBool coverageReductionMode)++instance Storable PhysicalDeviceCoverageReductionModeFeaturesNV where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceCoverageReductionModeFeaturesNV where+ zero = PhysicalDeviceCoverageReductionModeFeaturesNV+ zero+++-- | VkPipelineCoverageReductionStateCreateInfoNV - Structure specifying+-- parameters controlling coverage reduction+--+-- = Description+--+-- If this structure is not present, the default coverage reduction mode is+-- inferred as follows:+--+-- - If the @VK_NV_framebuffer_mixed_samples@ extension is enabled, then+-- it is as if the @coverageReductionMode@ is+-- 'COVERAGE_REDUCTION_MODE_MERGE_NV'.+--+-- - If the @VK_AMD_mixed_attachment_samples@ extension is enabled, then+-- it is as if the @coverageReductionMode@ is+-- 'COVERAGE_REDUCTION_MODE_TRUNCATE_NV'.+--+-- - If both @VK_NV_framebuffer_mixed_samples@ and+-- @VK_AMD_mixed_attachment_samples@ are enabled, then the default+-- coverage reduction mode is implementation-dependent.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV'+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+--+-- - @coverageReductionMode@ /must/ be a valid 'CoverageReductionModeNV'+-- value+--+-- = See Also+--+-- 'CoverageReductionModeNV',+-- 'PipelineCoverageReductionStateCreateFlagsNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineCoverageReductionStateCreateInfoNV = PipelineCoverageReductionStateCreateInfoNV+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: PipelineCoverageReductionStateCreateFlagsNV+ , -- | @coverageReductionMode@ is a 'CoverageReductionModeNV' value controlling+ -- how the /color sample mask/ is generated from the coverage mask.+ coverageReductionMode :: CoverageReductionModeNV+ }+ deriving (Typeable)+deriving instance Show PipelineCoverageReductionStateCreateInfoNV++instance ToCStruct PipelineCoverageReductionStateCreateInfoNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineCoverageReductionStateCreateInfoNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr PipelineCoverageReductionStateCreateFlagsNV)) (flags)+ poke ((p `plusPtr` 20 :: Ptr CoverageReductionModeNV)) (coverageReductionMode)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 20 :: Ptr CoverageReductionModeNV)) (zero)+ f++instance FromCStruct PipelineCoverageReductionStateCreateInfoNV where+ peekCStruct p = do+ flags <- peek @PipelineCoverageReductionStateCreateFlagsNV ((p `plusPtr` 16 :: Ptr PipelineCoverageReductionStateCreateFlagsNV))+ coverageReductionMode <- peek @CoverageReductionModeNV ((p `plusPtr` 20 :: Ptr CoverageReductionModeNV))+ pure $ PipelineCoverageReductionStateCreateInfoNV+ flags coverageReductionMode++instance Storable PipelineCoverageReductionStateCreateInfoNV where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineCoverageReductionStateCreateInfoNV where+ zero = PipelineCoverageReductionStateCreateInfoNV+ zero+ zero+++-- | VkFramebufferMixedSamplesCombinationNV - Structure specifying a+-- supported sample count combination+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'CoverageReductionModeNV',+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV'+data FramebufferMixedSamplesCombinationNV = FramebufferMixedSamplesCombinationNV+ { -- | @coverageReductionMode@ is a 'CoverageReductionModeNV' value specifying+ -- the coverage reduction mode.+ coverageReductionMode :: CoverageReductionModeNV+ , -- | @rasterizationSamples@ specifies the number of rasterization samples in+ -- the supported combination.+ rasterizationSamples :: SampleCountFlagBits+ , -- | @depthStencilSamples@ specifies the number of samples in the depth+ -- stencil attachment in the supported combination. A value of 0 indicates+ -- the combination does not have a depth stencil attachment.+ depthStencilSamples :: SampleCountFlags+ , -- | @colorSamples@ specifies the number of color samples in a color+ -- attachment in the supported combination. A value of 0 indicates the+ -- combination does not have a color attachment.+ colorSamples :: SampleCountFlags+ }+ deriving (Typeable)+deriving instance Show FramebufferMixedSamplesCombinationNV++instance ToCStruct FramebufferMixedSamplesCombinationNV where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p FramebufferMixedSamplesCombinationNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr CoverageReductionModeNV)) (coverageReductionMode)+ poke ((p `plusPtr` 20 :: Ptr SampleCountFlagBits)) (rasterizationSamples)+ poke ((p `plusPtr` 24 :: Ptr SampleCountFlags)) (depthStencilSamples)+ poke ((p `plusPtr` 28 :: Ptr SampleCountFlags)) (colorSamples)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr CoverageReductionModeNV)) (zero)+ poke ((p `plusPtr` 20 :: Ptr SampleCountFlagBits)) (zero)+ poke ((p `plusPtr` 24 :: Ptr SampleCountFlags)) (zero)+ poke ((p `plusPtr` 28 :: Ptr SampleCountFlags)) (zero)+ f++instance FromCStruct FramebufferMixedSamplesCombinationNV where+ peekCStruct p = do+ coverageReductionMode <- peek @CoverageReductionModeNV ((p `plusPtr` 16 :: Ptr CoverageReductionModeNV))+ rasterizationSamples <- peek @SampleCountFlagBits ((p `plusPtr` 20 :: Ptr SampleCountFlagBits))+ depthStencilSamples <- peek @SampleCountFlags ((p `plusPtr` 24 :: Ptr SampleCountFlags))+ colorSamples <- peek @SampleCountFlags ((p `plusPtr` 28 :: Ptr SampleCountFlags))+ pure $ FramebufferMixedSamplesCombinationNV+ coverageReductionMode rasterizationSamples depthStencilSamples colorSamples++instance Storable FramebufferMixedSamplesCombinationNV where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero FramebufferMixedSamplesCombinationNV where+ zero = FramebufferMixedSamplesCombinationNV+ zero+ zero+ zero+ zero+++-- | VkPipelineCoverageReductionStateCreateFlagsNV - Reserved for future use+--+-- = Description+--+-- 'PipelineCoverageReductionStateCreateFlagsNV' is a bitmask type for+-- setting a mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'PipelineCoverageReductionStateCreateInfoNV'+newtype PipelineCoverageReductionStateCreateFlagsNV = PipelineCoverageReductionStateCreateFlagsNV Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show PipelineCoverageReductionStateCreateFlagsNV where+ showsPrec p = \case+ PipelineCoverageReductionStateCreateFlagsNV x -> showParen (p >= 11) (showString "PipelineCoverageReductionStateCreateFlagsNV 0x" . showHex x)++instance Read PipelineCoverageReductionStateCreateFlagsNV where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "PipelineCoverageReductionStateCreateFlagsNV")+ v <- step readPrec+ pure (PipelineCoverageReductionStateCreateFlagsNV v)))+++-- | VkCoverageReductionModeNV - Specify the coverage reduction mode+--+-- = See Also+--+-- 'FramebufferMixedSamplesCombinationNV',+-- 'PipelineCoverageReductionStateCreateInfoNV'+newtype CoverageReductionModeNV = CoverageReductionModeNV Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'COVERAGE_REDUCTION_MODE_MERGE_NV': In this mode, there is an+-- implementation-dependent association of each raster sample to a color+-- sample. The reduced color sample mask is computed such that the bit for+-- each color sample is 1 if any of the associated bits in the fragment’s+-- coverage is on, and 0 otherwise.+pattern COVERAGE_REDUCTION_MODE_MERGE_NV = CoverageReductionModeNV 0+-- | 'COVERAGE_REDUCTION_MODE_TRUNCATE_NV': In this mode, only the first M+-- raster samples are associated with the color samples such that raster+-- sample i maps to color sample i, where M is the number of color samples.+pattern COVERAGE_REDUCTION_MODE_TRUNCATE_NV = CoverageReductionModeNV 1+{-# complete COVERAGE_REDUCTION_MODE_MERGE_NV,+ COVERAGE_REDUCTION_MODE_TRUNCATE_NV :: CoverageReductionModeNV #-}++instance Show CoverageReductionModeNV where+ showsPrec p = \case+ COVERAGE_REDUCTION_MODE_MERGE_NV -> showString "COVERAGE_REDUCTION_MODE_MERGE_NV"+ COVERAGE_REDUCTION_MODE_TRUNCATE_NV -> showString "COVERAGE_REDUCTION_MODE_TRUNCATE_NV"+ CoverageReductionModeNV x -> showParen (p >= 11) (showString "CoverageReductionModeNV " . showsPrec 11 x)++instance Read CoverageReductionModeNV where+ readPrec = parens (choose [("COVERAGE_REDUCTION_MODE_MERGE_NV", pure COVERAGE_REDUCTION_MODE_MERGE_NV)+ , ("COVERAGE_REDUCTION_MODE_TRUNCATE_NV", pure COVERAGE_REDUCTION_MODE_TRUNCATE_NV)]+ ++++ prec 10 (do+ expectP (Ident "CoverageReductionModeNV")+ v <- step readPrec+ pure (CoverageReductionModeNV v)))+++type NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION"+pattern NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION :: forall a . Integral a => a+pattern NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1+++type NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode"++-- No documentation found for TopLevel "VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME"+pattern NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode"+
+ src/Graphics/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs-boot view
@@ -0,0 +1,32 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode ( FramebufferMixedSamplesCombinationNV+ , PhysicalDeviceCoverageReductionModeFeaturesNV+ , PipelineCoverageReductionStateCreateInfoNV+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data FramebufferMixedSamplesCombinationNV++instance ToCStruct FramebufferMixedSamplesCombinationNV+instance Show FramebufferMixedSamplesCombinationNV++instance FromCStruct FramebufferMixedSamplesCombinationNV+++data PhysicalDeviceCoverageReductionModeFeaturesNV++instance ToCStruct PhysicalDeviceCoverageReductionModeFeaturesNV+instance Show PhysicalDeviceCoverageReductionModeFeaturesNV++instance FromCStruct PhysicalDeviceCoverageReductionModeFeaturesNV+++data PipelineCoverageReductionStateCreateInfoNV++instance ToCStruct PipelineCoverageReductionStateCreateInfoNV+instance Show PipelineCoverageReductionStateCreateInfoNV++instance FromCStruct PipelineCoverageReductionStateCreateInfoNV+
src/Graphics/Vulkan/Extensions/VK_NV_dedicated_allocation.hs view
@@ -1,216 +1,287 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation- ( pattern VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV- , pattern VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV- , pattern VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV- , pattern VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION- , pattern VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME- , VkDedicatedAllocationImageCreateInfoNV(..)- , VkDedicatedAllocationBufferCreateInfoNV(..)- , VkDedicatedAllocationMemoryAllocateInfoNV(..)- ) where--import Data.String- ( IsString- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.MemoryManagement- ( VkBuffer- , VkImage- )-+module Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation ( DedicatedAllocationImageCreateInfoNV(..)+ , DedicatedAllocationBufferCreateInfoNV(..)+ , DedicatedAllocationMemoryAllocateInfoNV(..)+ , NV_DEDICATED_ALLOCATION_SPEC_VERSION+ , pattern NV_DEDICATED_ALLOCATION_SPEC_VERSION+ , NV_DEDICATED_ALLOCATION_EXTENSION_NAME+ , pattern NV_DEDICATED_ALLOCATION_EXTENSION_NAME+ ) where --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"-pattern VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = VkStructureType 1000026000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"-pattern VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = VkStructureType 1000026001--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"-pattern VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV :: VkStructureType-pattern VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = VkStructureType 1000026002--- No documentation found for TopLevel "VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION"-pattern VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION :: Integral a => a-pattern VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME"-pattern VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation"+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Handles (Image)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV)) -- | VkDedicatedAllocationImageCreateInfoNV - Specify that an image is bound -- to a dedicated memory resource -- -- = Description ----- __Note__+-- Note -- -- Using a dedicated allocation for color and depth\/stencil attachments or -- other large images /may/ improve performance on some devices. -- -- == Valid Usage ----- - If @dedicatedAllocation@ is @VK_TRUE@, @VkImageCreateInfo@::@flags@--- /must/ not include @VK_IMAGE_CREATE_SPARSE_BINDING_BIT@,--- @VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT@, or--- @VK_IMAGE_CREATE_SPARSE_ALIASED_BIT@+-- - If @dedicatedAllocation@ is 'Graphics.Vulkan.Core10.BaseType.TRUE',+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- /must/ not include+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT',+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_ALIASED_BIT' -- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV' -- -- = See Also ----- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkDedicatedAllocationImageCreateInfoNV = VkDedicatedAllocationImageCreateInfoNV- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @dedicatedAllocation@ specifies whether the image will have a dedicated- -- allocation bound to it.- vkDedicatedAllocation :: VkBool32- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DedicatedAllocationImageCreateInfoNV = DedicatedAllocationImageCreateInfoNV+ { -- | @dedicatedAllocation@ specifies whether the image will have a dedicated+ -- allocation bound to it.+ dedicatedAllocation :: Bool }+ deriving (Typeable)+deriving instance Show DedicatedAllocationImageCreateInfoNV -instance Storable VkDedicatedAllocationImageCreateInfoNV where+instance ToCStruct DedicatedAllocationImageCreateInfoNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DedicatedAllocationImageCreateInfoNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (dedicatedAllocation))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct DedicatedAllocationImageCreateInfoNV where+ peekCStruct p = do+ dedicatedAllocation <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ DedicatedAllocationImageCreateInfoNV+ (bool32ToBool dedicatedAllocation)++instance Storable DedicatedAllocationImageCreateInfoNV where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkDedicatedAllocationImageCreateInfoNV <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDedicatedAllocationImageCreateInfoNV))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDedicatedAllocationImageCreateInfoNV))- *> poke (ptr `plusPtr` 16) (vkDedicatedAllocation (poked :: VkDedicatedAllocationImageCreateInfoNV))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DedicatedAllocationImageCreateInfoNV where+ zero = DedicatedAllocationImageCreateInfoNV+ zero++ -- | VkDedicatedAllocationBufferCreateInfoNV - Specify that a buffer is bound -- to a dedicated memory resource -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV@--- -- = See Also ----- @VkBool32@, 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkDedicatedAllocationBufferCreateInfoNV = VkDedicatedAllocationBufferCreateInfoNV- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @dedicatedAllocation@ specifies whether the buffer will have a dedicated- -- allocation bound to it.- vkDedicatedAllocation :: VkBool32- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DedicatedAllocationBufferCreateInfoNV = DedicatedAllocationBufferCreateInfoNV+ { -- | @dedicatedAllocation@ specifies whether the buffer will have a dedicated+ -- allocation bound to it.+ dedicatedAllocation :: Bool }+ deriving (Typeable)+deriving instance Show DedicatedAllocationBufferCreateInfoNV -instance Storable VkDedicatedAllocationBufferCreateInfoNV where+instance ToCStruct DedicatedAllocationBufferCreateInfoNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DedicatedAllocationBufferCreateInfoNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (dedicatedAllocation))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct DedicatedAllocationBufferCreateInfoNV where+ peekCStruct p = do+ dedicatedAllocation <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ DedicatedAllocationBufferCreateInfoNV+ (bool32ToBool dedicatedAllocation)++instance Storable DedicatedAllocationBufferCreateInfoNV where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkDedicatedAllocationBufferCreateInfoNV <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDedicatedAllocationBufferCreateInfoNV))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDedicatedAllocationBufferCreateInfoNV))- *> poke (ptr `plusPtr` 16) (vkDedicatedAllocation (poked :: VkDedicatedAllocationBufferCreateInfoNV))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DedicatedAllocationBufferCreateInfoNV where+ zero = DedicatedAllocationBufferCreateInfoNV+ zero++ -- | VkDedicatedAllocationMemoryAllocateInfoNV - Specify a dedicated memory -- allocation resource -- -- == Valid Usage ----- - At least one of @image@ and @buffer@ /must/ be--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'+-- - At least one of 'Graphics.Vulkan.Core10.Handles.Image' and+-- 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' ----- - If @image@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- the image /must/ have been created with--- @VkDedicatedAllocationImageCreateInfoNV@::@dedicatedAllocation@--- equal to @VK_TRUE@+-- - If 'Graphics.Vulkan.Core10.Handles.Image' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', the image /must/+-- have been created with+-- 'DedicatedAllocationImageCreateInfoNV'::@dedicatedAllocation@ equal+-- to 'Graphics.Vulkan.Core10.BaseType.TRUE' ----- - If @buffer@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', the buffer /must/+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', the buffer /must/ -- have been created with--- @VkDedicatedAllocationBufferCreateInfoNV@::@dedicatedAllocation@--- equal to @VK_TRUE@+-- 'DedicatedAllocationBufferCreateInfoNV'::@dedicatedAllocation@ equal+-- to 'Graphics.Vulkan.Core10.BaseType.TRUE' ----- - If @image@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @VkMemoryAllocateInfo@::@allocationSize@ /must/ equal the--- @VkMemoryRequirements@::@size@ of the image+-- - If 'Graphics.Vulkan.Core10.Handles.Image' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo'::@allocationSize@+-- /must/ equal the+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'::@size@+-- of the image ----- - If @buffer@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @VkMemoryAllocateInfo@::@allocationSize@ /must/ equal the--- @VkMemoryRequirements@::@size@ of the buffer+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo'::@allocationSize@+-- /must/ equal the+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'::@size@+-- of the buffer ----- - If @image@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'--- and 'Graphics.Vulkan.Core10.Memory.VkMemoryAllocateInfo' defines a--- memory import operation, the memory being imported /must/ also be a--- dedicated image allocation and @image@ /must/ be identical to the+-- - If 'Graphics.Vulkan.Core10.Handles.Image' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' and+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' defines a memory+-- import operation, the memory being imported /must/ also be a+-- dedicated image allocation and+-- 'Graphics.Vulkan.Core10.Handles.Image' /must/ be identical to the -- image associated with the imported memory. ----- - If @buffer@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE'--- and 'Graphics.Vulkan.Core10.Memory.VkMemoryAllocateInfo' defines a--- memory import operation, the memory being imported /must/ also be a--- dedicated buffer allocation and @buffer@ /must/ be identical to the+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' and+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' defines a memory+-- import operation, the memory being imported /must/ also be a+-- dedicated buffer allocation and+-- 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be identical to the -- buffer associated with the imported memory. -- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV' ----- - If @image@ is not 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE',--- @image@ /must/ be a valid @VkImage@ handle+-- - If 'Graphics.Vulkan.Core10.Handles.Image' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Image' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Image' handle ----- - If @buffer@ is not--- 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE', @buffer@ /must/--- be a valid @VkBuffer@ handle+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle ----- - Both of @buffer@, and @image@ that are valid handles /must/ have--- been created, allocated, or retrieved from the same @VkDevice@+-- - Both of 'Graphics.Vulkan.Core10.Handles.Buffer', and+-- 'Graphics.Vulkan.Core10.Handles.Image' that are valid handles of+-- non-ignored parameters /must/ have been created, allocated, or+-- retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device' -- -- = See Also ----- 'Graphics.Vulkan.Core10.MemoryManagement.VkBuffer',--- 'Graphics.Vulkan.Core10.MemoryManagement.VkImage',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkDedicatedAllocationMemoryAllocateInfoNV = VkDedicatedAllocationMemoryAllocateInfoNV- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @image@ is 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' or a handle- -- of an image which this memory will be bound to.- vkImage :: VkImage- , -- | @buffer@ is 'Graphics.Vulkan.Core10.Constants.VK_NULL_HANDLE' or a- -- handle of a buffer which this memory will be bound to.- vkBuffer :: VkBuffer+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.Image',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data DedicatedAllocationMemoryAllocateInfoNV = DedicatedAllocationMemoryAllocateInfoNV+ { -- | 'Graphics.Vulkan.Core10.Handles.Image' is+ -- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' or a handle of an+ -- image which this memory will be bound to.+ image :: Image+ , -- | 'Graphics.Vulkan.Core10.Handles.Buffer' is+ -- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' or a handle of a+ -- buffer which this memory will be bound to.+ buffer :: Buffer }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show DedicatedAllocationMemoryAllocateInfoNV -instance Storable VkDedicatedAllocationMemoryAllocateInfoNV where+instance ToCStruct DedicatedAllocationMemoryAllocateInfoNV where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DedicatedAllocationMemoryAllocateInfoNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Image)) (image)+ poke ((p `plusPtr` 24 :: Ptr Buffer)) (buffer)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct DedicatedAllocationMemoryAllocateInfoNV where+ peekCStruct p = do+ image <- peek @Image ((p `plusPtr` 16 :: Ptr Image))+ buffer <- peek @Buffer ((p `plusPtr` 24 :: Ptr Buffer))+ pure $ DedicatedAllocationMemoryAllocateInfoNV+ image buffer++instance Storable DedicatedAllocationMemoryAllocateInfoNV where sizeOf ~_ = 32 alignment ~_ = 8- peek ptr = VkDedicatedAllocationMemoryAllocateInfoNV <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkDedicatedAllocationMemoryAllocateInfoNV))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkDedicatedAllocationMemoryAllocateInfoNV))- *> poke (ptr `plusPtr` 16) (vkImage (poked :: VkDedicatedAllocationMemoryAllocateInfoNV))- *> poke (ptr `plusPtr` 24) (vkBuffer (poked :: VkDedicatedAllocationMemoryAllocateInfoNV))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DedicatedAllocationMemoryAllocateInfoNV where+ zero = DedicatedAllocationMemoryAllocateInfoNV+ zero+ zero+++type NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION"+pattern NV_DEDICATED_ALLOCATION_SPEC_VERSION :: forall a . Integral a => a+pattern NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1+++type NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation"++-- No documentation found for TopLevel "VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME"+pattern NV_DEDICATED_ALLOCATION_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation"+
+ src/Graphics/Vulkan/Extensions/VK_NV_dedicated_allocation.hs-boot view
@@ -0,0 +1,32 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation ( DedicatedAllocationBufferCreateInfoNV+ , DedicatedAllocationImageCreateInfoNV+ , DedicatedAllocationMemoryAllocateInfoNV+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data DedicatedAllocationBufferCreateInfoNV++instance ToCStruct DedicatedAllocationBufferCreateInfoNV+instance Show DedicatedAllocationBufferCreateInfoNV++instance FromCStruct DedicatedAllocationBufferCreateInfoNV+++data DedicatedAllocationImageCreateInfoNV++instance ToCStruct DedicatedAllocationImageCreateInfoNV+instance Show DedicatedAllocationImageCreateInfoNV++instance FromCStruct DedicatedAllocationImageCreateInfoNV+++data DedicatedAllocationMemoryAllocateInfoNV++instance ToCStruct DedicatedAllocationMemoryAllocateInfoNV+instance Show DedicatedAllocationMemoryAllocateInfoNV++instance FromCStruct DedicatedAllocationMemoryAllocateInfoNV+
+ src/Graphics/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs view
@@ -0,0 +1,107 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing ( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(..)+ , NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION+ , pattern NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION+ , NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME+ , pattern NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV))+-- | VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV - Structure+-- describing dedicated allocation image aliasing features that can be+-- supported by an implementation+--+-- = Members+--+-- The members of the+-- 'PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV' structure+-- describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV'+-- structure is included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether each feature is supported.+-- 'PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV' /can/ also be+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV+ { -- | @dedicatedAllocationImageAliasing@ indicates that the implementation+ -- supports aliasing of compatible image objects on a dedicated allocation.+ dedicatedAllocationImageAliasing :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV++instance ToCStruct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (dedicatedAllocationImageAliasing))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV where+ peekCStruct p = do+ dedicatedAllocationImageAliasing <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV+ (bool32ToBool dedicatedAllocationImageAliasing)++instance Storable PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV where+ zero = PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV+ zero+++type NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION"+pattern NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION :: forall a . Integral a => a+pattern NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1+++type NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing"++-- No documentation found for TopLevel "VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME"+pattern NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing"+
+ src/Graphics/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing (PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV++instance ToCStruct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV+instance Show PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV++instance FromCStruct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV+
+ src/Graphics/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs view
@@ -0,0 +1,301 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints ( cmdSetCheckpointNV+ , getQueueCheckpointDataNV+ , QueueFamilyCheckpointPropertiesNV(..)+ , CheckpointDataNV(..)+ , NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION+ , pattern NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION+ , NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME+ , pattern NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME+ ) where++import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetCheckpointNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetQueueCheckpointDataNV))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits)+import Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)+import Graphics.Vulkan.Core10.Handles (Queue)+import Graphics.Vulkan.Core10.Handles (Queue(..))+import Graphics.Vulkan.Core10.Handles (Queue_T)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_CHECKPOINT_DATA_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetCheckpointNV+ :: FunPtr (Ptr CommandBuffer_T -> Ptr () -> IO ()) -> Ptr CommandBuffer_T -> Ptr () -> IO ()++-- | vkCmdSetCheckpointNV - insert diagnostic checkpoint in command stream+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- that will receive the marker+--+-- - @pCheckpointMarker@ is an opaque application-provided value that+-- will be associated with the checkpoint.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics, compute, or transfer operations+--+-- == Host Synchronization+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | Compute | |+-- | | | Transfer | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdSetCheckpointNV :: CommandBuffer -> ("checkpointMarker" ::: Ptr ()) -> IO ()+cmdSetCheckpointNV commandBuffer checkpointMarker = do+ let vkCmdSetCheckpointNV' = mkVkCmdSetCheckpointNV (pVkCmdSetCheckpointNV (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdSetCheckpointNV' (commandBufferHandle (commandBuffer)) (checkpointMarker)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetQueueCheckpointDataNV+ :: FunPtr (Ptr Queue_T -> Ptr Word32 -> Ptr CheckpointDataNV -> IO ()) -> Ptr Queue_T -> Ptr Word32 -> Ptr CheckpointDataNV -> IO ()++-- | vkGetQueueCheckpointDataNV - retrieve diagnostic checkpoint data+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Queue' is the+-- 'Graphics.Vulkan.Core10.Handles.Queue' object the caller would like+-- to retrieve checkpoint data for+--+-- - @pCheckpointDataCount@ is a pointer to an integer related to the+-- number of checkpoint markers available or queried, as described+-- below.+--+-- - @pCheckpointData@ is either @NULL@ or a pointer to an array of+-- 'CheckpointDataNV' structures.+--+-- = Description+--+-- If @pCheckpointData@ is @NULL@, then the number of checkpoint markers+-- available is returned in @pCheckpointDataCount@.+--+-- Otherwise, @pCheckpointDataCount@ /must/ point to a variable set by the+-- user to the number of elements in the @pCheckpointData@ array, and on+-- return the variable is overwritten with the number of structures+-- actually written to @pCheckpointData@.+--+-- If @pCheckpointDataCount@ is less than the number of checkpoint markers+-- available, at most @pCheckpointDataCount@ structures will be written.+--+-- == Valid Usage+--+-- - The device that 'Graphics.Vulkan.Core10.Handles.Queue' belongs to+-- /must/ be in the lost state+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Queue' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Queue' handle+--+-- - @pCheckpointDataCount@ /must/ be a valid pointer to a @uint32_t@+-- value+--+-- - If the value referenced by @pCheckpointDataCount@ is not @0@, and+-- @pCheckpointData@ is not @NULL@, @pCheckpointData@ /must/ be a valid+-- pointer to an array of @pCheckpointDataCount@ 'CheckpointDataNV'+-- structures+--+-- = See Also+--+-- 'CheckpointDataNV', 'Graphics.Vulkan.Core10.Handles.Queue'+getQueueCheckpointDataNV :: Queue -> IO (("checkpointData" ::: Vector CheckpointDataNV))+getQueueCheckpointDataNV queue = evalContT $ do+ let vkGetQueueCheckpointDataNV' = mkVkGetQueueCheckpointDataNV (pVkGetQueueCheckpointDataNV (deviceCmds (queue :: Queue)))+ let queue' = queueHandle (queue)+ pPCheckpointDataCount <- ContT $ bracket (callocBytes @Word32 4) free+ lift $ vkGetQueueCheckpointDataNV' queue' (pPCheckpointDataCount) (nullPtr)+ pCheckpointDataCount <- lift $ peek @Word32 pPCheckpointDataCount+ pPCheckpointData <- ContT $ bracket (callocBytes @CheckpointDataNV ((fromIntegral (pCheckpointDataCount)) * 32)) free+ _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPCheckpointData `advancePtrBytes` (i * 32) :: Ptr CheckpointDataNV) . ($ ())) [0..(fromIntegral (pCheckpointDataCount)) - 1]+ lift $ vkGetQueueCheckpointDataNV' queue' (pPCheckpointDataCount) ((pPCheckpointData))+ pCheckpointDataCount' <- lift $ peek @Word32 pPCheckpointDataCount+ pCheckpointData' <- lift $ generateM (fromIntegral (pCheckpointDataCount')) (\i -> peekCStruct @CheckpointDataNV (((pPCheckpointData) `advancePtrBytes` (32 * (i)) :: Ptr CheckpointDataNV)))+ pure $ (pCheckpointData')+++-- | VkQueueFamilyCheckpointPropertiesNV - return structure for queue family+-- checkpoint info query+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data QueueFamilyCheckpointPropertiesNV = QueueFamilyCheckpointPropertiesNV+ { -- | @checkpointExecutionStageMask@ is a mask indicating which pipeline+ -- stages the implementation can execute checkpoint markers in.+ checkpointExecutionStageMask :: PipelineStageFlags }+ deriving (Typeable)+deriving instance Show QueueFamilyCheckpointPropertiesNV++instance ToCStruct QueueFamilyCheckpointPropertiesNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p QueueFamilyCheckpointPropertiesNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr PipelineStageFlags)) (checkpointExecutionStageMask)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr PipelineStageFlags)) (zero)+ f++instance FromCStruct QueueFamilyCheckpointPropertiesNV where+ peekCStruct p = do+ checkpointExecutionStageMask <- peek @PipelineStageFlags ((p `plusPtr` 16 :: Ptr PipelineStageFlags))+ pure $ QueueFamilyCheckpointPropertiesNV+ checkpointExecutionStageMask++instance Storable QueueFamilyCheckpointPropertiesNV where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero QueueFamilyCheckpointPropertiesNV where+ zero = QueueFamilyCheckpointPropertiesNV+ zero+++-- | VkCheckpointDataNV - return structure for command buffer checkpoint data+--+-- == Valid Usage (Implicit)+--+-- Note that the stages at which a checkpoint marker /can/ be executed are+-- implementation-defined and /can/ be queried by calling+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2'.+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getQueueCheckpointDataNV'+data CheckpointDataNV = CheckpointDataNV+ { -- | @stage@ indicates which pipeline stage the checkpoint marker data refers+ -- to.+ stage :: PipelineStageFlagBits+ , -- | @pCheckpointMarker@ contains the value of the last checkpoint marker+ -- executed in the stage that @stage@ refers to.+ checkpointMarker :: Ptr ()+ }+ deriving (Typeable)+deriving instance Show CheckpointDataNV++instance ToCStruct CheckpointDataNV where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p CheckpointDataNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CHECKPOINT_DATA_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr PipelineStageFlagBits)) (stage)+ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (checkpointMarker)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CHECKPOINT_DATA_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr PipelineStageFlagBits)) (zero)+ poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (zero)+ f++instance FromCStruct CheckpointDataNV where+ peekCStruct p = do+ stage <- peek @PipelineStageFlagBits ((p `plusPtr` 16 :: Ptr PipelineStageFlagBits))+ pCheckpointMarker <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))+ pure $ CheckpointDataNV+ stage pCheckpointMarker++instance Storable CheckpointDataNV where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero CheckpointDataNV where+ zero = CheckpointDataNV+ zero+ zero+++type NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION"+pattern NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION :: forall a . Integral a => a+pattern NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2+++type NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints"++-- No documentation found for TopLevel "VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME"+pattern NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints"+
+ src/Graphics/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints ( CheckpointDataNV+ , QueueFamilyCheckpointPropertiesNV+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data CheckpointDataNV++instance ToCStruct CheckpointDataNV+instance Show CheckpointDataNV++instance FromCStruct CheckpointDataNV+++data QueueFamilyCheckpointPropertiesNV++instance ToCStruct QueueFamilyCheckpointPropertiesNV+instance Show QueueFamilyCheckpointPropertiesNV++instance FromCStruct QueueFamilyCheckpointPropertiesNV+
src/Graphics/Vulkan/Extensions/VK_NV_external_memory.hs view
@@ -1,124 +1,142 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_NV_external_memory- ( pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV- , pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV- , pattern VK_NV_EXTERNAL_MEMORY_SPEC_VERSION- , pattern VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME- , VkExternalMemoryImageCreateInfoNV(..)- , VkExportMemoryAllocateInfoNV(..)- ) where--import Data.String- ( IsString- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )---import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- )-import Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities- ( VkExternalMemoryHandleTypeFlagsNV- )-+module Graphics.Vulkan.Extensions.VK_NV_external_memory ( ExternalMemoryImageCreateInfoNV(..)+ , ExportMemoryAllocateInfoNV(..)+ , NV_EXTERNAL_MEMORY_SPEC_VERSION+ , pattern NV_EXTERNAL_MEMORY_SPEC_VERSION+ , NV_EXTERNAL_MEMORY_EXTENSION_NAME+ , pattern NV_EXTERNAL_MEMORY_EXTENSION_NAME+ , ExternalMemoryHandleTypeFlagBitsNV(..)+ , ExternalMemoryHandleTypeFlagsNV+ ) where --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV"-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = VkStructureType 1000056000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV"-pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = VkStructureType 1000056001--- No documentation found for TopLevel "VK_NV_EXTERNAL_MEMORY_SPEC_VERSION"-pattern VK_NV_EXTERNAL_MEMORY_SPEC_VERSION :: Integral a => a-pattern VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME"-pattern VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory"+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities (ExternalMemoryHandleTypeFlagsNV)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV))+import Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities (ExternalMemoryHandleTypeFlagBitsNV(..))+import Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities (ExternalMemoryHandleTypeFlagsNV) -- | VkExternalMemoryImageCreateInfoNV - Specify that an image may be backed -- by external memory -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV@------ - @handleTypes@ /must/ be a valid combination of--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBitsNV'--- values--- -- = See Also ----- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalMemoryHandleTypeFlagsNV',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkExternalMemoryImageCreateInfoNV = VkExternalMemoryImageCreateInfoNV- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @handleTypes@ is a bitmask of- -- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBitsNV'- -- specifying one or more external memory handle types.- vkHandleTypes :: VkExternalMemoryHandleTypeFlagsNV- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.ExternalMemoryHandleTypeFlagsNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ExternalMemoryImageCreateInfoNV = ExternalMemoryImageCreateInfoNV+ { -- | @handleTypes@ /must/ be a valid combination of+ -- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.ExternalMemoryHandleTypeFlagBitsNV'+ -- values+ handleTypes :: ExternalMemoryHandleTypeFlagsNV }+ deriving (Typeable)+deriving instance Show ExternalMemoryImageCreateInfoNV -instance Storable VkExternalMemoryImageCreateInfoNV where+instance ToCStruct ExternalMemoryImageCreateInfoNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ExternalMemoryImageCreateInfoNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlagsNV)) (handleTypes)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct ExternalMemoryImageCreateInfoNV where+ peekCStruct p = do+ handleTypes <- peek @ExternalMemoryHandleTypeFlagsNV ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlagsNV))+ pure $ ExternalMemoryImageCreateInfoNV+ handleTypes++instance Storable ExternalMemoryImageCreateInfoNV where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkExternalMemoryImageCreateInfoNV <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkExternalMemoryImageCreateInfoNV))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkExternalMemoryImageCreateInfoNV))- *> poke (ptr `plusPtr` 16) (vkHandleTypes (poked :: VkExternalMemoryImageCreateInfoNV))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ExternalMemoryImageCreateInfoNV where+ zero = ExternalMemoryImageCreateInfoNV+ zero++ -- | VkExportMemoryAllocateInfoNV - Specify memory handle types that may be -- exported -- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be @VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV@------ - @handleTypes@ /must/ be a valid combination of--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBitsNV'--- values--- -- = See Also ----- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalMemoryHandleTypeFlagsNV',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkExportMemoryAllocateInfoNV = VkExportMemoryAllocateInfoNV- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @handleTypes@ is a bitmask of- -- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBitsNV'- -- specifying one or more memory handle types that /may/ be exported.- -- Multiple handle types /may/ be requested for the same allocation as long- -- as they are compatible, as reported by- -- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.vkGetPhysicalDeviceExternalImageFormatPropertiesNV'.- vkHandleTypes :: VkExternalMemoryHandleTypeFlagsNV- }- deriving (Eq, Show)+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.ExternalMemoryHandleTypeFlagsNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ExportMemoryAllocateInfoNV = ExportMemoryAllocateInfoNV+ { -- | @handleTypes@ /must/ be a valid combination of+ -- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.ExternalMemoryHandleTypeFlagBitsNV'+ -- values+ handleTypes :: ExternalMemoryHandleTypeFlagsNV }+ deriving (Typeable)+deriving instance Show ExportMemoryAllocateInfoNV -instance Storable VkExportMemoryAllocateInfoNV where+instance ToCStruct ExportMemoryAllocateInfoNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ExportMemoryAllocateInfoNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlagsNV)) (handleTypes)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct ExportMemoryAllocateInfoNV where+ peekCStruct p = do+ handleTypes <- peek @ExternalMemoryHandleTypeFlagsNV ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlagsNV))+ pure $ ExportMemoryAllocateInfoNV+ handleTypes++instance Storable ExportMemoryAllocateInfoNV where sizeOf ~_ = 24 alignment ~_ = 8- peek ptr = VkExportMemoryAllocateInfoNV <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkExportMemoryAllocateInfoNV))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkExportMemoryAllocateInfoNV))- *> poke (ptr `plusPtr` 16) (vkHandleTypes (poked :: VkExportMemoryAllocateInfoNV))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ExportMemoryAllocateInfoNV where+ zero = ExportMemoryAllocateInfoNV+ zero+++type NV_EXTERNAL_MEMORY_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NV_EXTERNAL_MEMORY_SPEC_VERSION"+pattern NV_EXTERNAL_MEMORY_SPEC_VERSION :: forall a . Integral a => a+pattern NV_EXTERNAL_MEMORY_SPEC_VERSION = 1+++type NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory"++-- No documentation found for TopLevel "VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME"+pattern NV_EXTERNAL_MEMORY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory"+
+ src/Graphics/Vulkan/Extensions/VK_NV_external_memory.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_external_memory ( ExportMemoryAllocateInfoNV+ , ExternalMemoryImageCreateInfoNV+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ExportMemoryAllocateInfoNV++instance ToCStruct ExportMemoryAllocateInfoNV+instance Show ExportMemoryAllocateInfoNV++instance FromCStruct ExportMemoryAllocateInfoNV+++data ExternalMemoryImageCreateInfoNV++instance ToCStruct ExternalMemoryImageCreateInfoNV+instance Show ExternalMemoryImageCreateInfoNV++instance FromCStruct ExternalMemoryImageCreateInfoNV+
src/Graphics/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs view
@@ -1,363 +1,335 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities- ( VkExternalMemoryHandleTypeFlagBitsNV(..)- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV- , pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV- , VkExternalMemoryFeatureFlagBitsNV(..)- , pattern VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV- , pattern VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV- , pattern VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV- , pattern VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION- , pattern VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME- , vkGetPhysicalDeviceExternalImageFormatPropertiesNV- , VkExternalImageFormatPropertiesNV(..)- , VkExternalMemoryHandleTypeFlagsNV- , VkExternalMemoryFeatureFlagsNV- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.String- ( IsString- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Graphics.Vulkan.NamedType- ( (:::)- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkFormat(..)- , VkResult(..)- , VkFlags- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkImageCreateFlagBits(..)- , VkImageFormatProperties(..)- , VkImageTiling(..)- , VkImageType(..)- , VkImageUsageFlagBits(..)- , VkImageCreateFlags- , VkImageUsageFlags- , VkPhysicalDevice- )----- ** VkExternalMemoryHandleTypeFlagBitsNV---- | VkExternalMemoryHandleTypeFlagBitsNV - Bitmask specifying external--- memory handle types------ = See Also------ 'VkExternalMemoryHandleTypeFlagsNV'-newtype VkExternalMemoryHandleTypeFlagBitsNV = VkExternalMemoryHandleTypeFlagBitsNV VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkExternalMemoryHandleTypeFlagBitsNV where- showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV"- showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV"- showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV"- showsPrec _ VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = showString "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV"- showsPrec p (VkExternalMemoryHandleTypeFlagBitsNV x) = showParen (p >= 11) (showString "VkExternalMemoryHandleTypeFlagBitsNV " . showsPrec 11 x)--instance Read VkExternalMemoryHandleTypeFlagBitsNV where- readPrec = parens ( choose [ ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV", pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV)- , ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV", pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV)- , ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV", pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV)- , ("VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV", pure VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV)- ] +++- prec 10 (do- expectP (Ident "VkExternalMemoryHandleTypeFlagBitsNV")- v <- step readPrec- pure (VkExternalMemoryHandleTypeFlagBitsNV v)- )- )---- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV@ specifies a handle--- to memory returned by--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.vkGetMemoryWin32HandleNV',--- or one duplicated from such a handle using @DuplicateHandle()@.-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV :: VkExternalMemoryHandleTypeFlagBitsNV-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = VkExternalMemoryHandleTypeFlagBitsNV 0x00000001---- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV@ specifies a--- handle to memory returned by--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.vkGetMemoryWin32HandleNV'.-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV :: VkExternalMemoryHandleTypeFlagBitsNV-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = VkExternalMemoryHandleTypeFlagBitsNV 0x00000002---- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV@ specifies a valid NT--- handle to memory returned by @IDXGIResource1::CreateSharedHandle()@, or--- a handle duplicated from such a handle using @DuplicateHandle()@.-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV :: VkExternalMemoryHandleTypeFlagBitsNV-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = VkExternalMemoryHandleTypeFlagBitsNV 0x00000004---- | @VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV@ specifies a--- handle to memory returned by @IDXGIResource::GetSharedHandle()@.-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV :: VkExternalMemoryHandleTypeFlagBitsNV-pattern VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = VkExternalMemoryHandleTypeFlagBitsNV 0x00000008--- ** VkExternalMemoryFeatureFlagBitsNV---- | VkExternalMemoryFeatureFlagBitsNV - Bitmask specifying external memory--- features------ = See Also------ 'VkExternalImageFormatPropertiesNV', 'VkExternalMemoryFeatureFlagsNV',--- 'vkGetPhysicalDeviceExternalImageFormatPropertiesNV'-newtype VkExternalMemoryFeatureFlagBitsNV = VkExternalMemoryFeatureFlagBitsNV VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkExternalMemoryFeatureFlagBitsNV where- showsPrec _ VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = showString "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV"- showsPrec _ VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = showString "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV"- showsPrec _ VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = showString "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV"- showsPrec p (VkExternalMemoryFeatureFlagBitsNV x) = showParen (p >= 11) (showString "VkExternalMemoryFeatureFlagBitsNV " . showsPrec 11 x)--instance Read VkExternalMemoryFeatureFlagBitsNV where- readPrec = parens ( choose [ ("VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV", pure VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV)- , ("VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV", pure VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV)- , ("VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV", pure VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV)- ] +++- prec 10 (do- expectP (Ident "VkExternalMemoryFeatureFlagBitsNV")- v <- step readPrec- pure (VkExternalMemoryFeatureFlagBitsNV v)- )- )---- | @VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV@ specifies that--- external memory of the specified type /must/ be created as a dedicated--- allocation when used in the manner specified.-pattern VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV :: VkExternalMemoryFeatureFlagBitsNV-pattern VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = VkExternalMemoryFeatureFlagBitsNV 0x00000001+module Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities ( getPhysicalDeviceExternalImageFormatPropertiesNV+ , ExternalImageFormatPropertiesNV(..)+ , ExternalMemoryHandleTypeFlagBitsNV( EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV+ , EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV+ , EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV+ , EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV+ , ..+ )+ , ExternalMemoryHandleTypeFlagsNV+ , ExternalMemoryFeatureFlagBitsNV( EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV+ , EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV+ , EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV+ , ..+ )+ , ExternalMemoryFeatureFlagsNV+ , NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION+ , pattern NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION+ , NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME+ , pattern NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME+ ) where --- | @VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV@ specifies that the--- implementation supports exporting handles of the specified type.-pattern VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV :: VkExternalMemoryFeatureFlagBitsNV-pattern VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = VkExternalMemoryFeatureFlagBitsNV 0x00000002+import Foreign.Marshal.Alloc (allocaBytesAligned)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Bits (Bits)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Core10.Enums.Format (Format)+import Graphics.Vulkan.Core10.Enums.Format (Format(..))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)+import Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(..))+import Graphics.Vulkan.Core10.DeviceInitialization (ImageFormatProperties)+import Graphics.Vulkan.Core10.Enums.ImageTiling (ImageTiling)+import Graphics.Vulkan.Core10.Enums.ImageTiling (ImageTiling(..))+import Graphics.Vulkan.Core10.Enums.ImageType (ImageType)+import Graphics.Vulkan.Core10.Enums.ImageType (ImageType(..))+import Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)+import Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)+import Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlagBits(..))+import Graphics.Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceExternalImageFormatPropertiesNV))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice)+import Graphics.Vulkan.Core10.Handles (PhysicalDevice(..))+import Graphics.Vulkan.Core10.Handles (PhysicalDevice_T)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetPhysicalDeviceExternalImageFormatPropertiesNV+ :: FunPtr (Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> ExternalMemoryHandleTypeFlagsNV -> Ptr ExternalImageFormatPropertiesNV -> IO Result) -> Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> ExternalMemoryHandleTypeFlagsNV -> Ptr ExternalImageFormatPropertiesNV -> IO Result --- | @VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV@ specifies that the--- implementation supports importing handles of the specified type.-pattern VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV :: VkExternalMemoryFeatureFlagBitsNV-pattern VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = VkExternalMemoryFeatureFlagBitsNV 0x00000004--- No documentation found for TopLevel "VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION"-pattern VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION :: Integral a => a-pattern VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME"-pattern VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" -- | vkGetPhysicalDeviceExternalImageFormatPropertiesNV - determine image -- capabilities compatible with external memory handle types -- -- = Parameters ----- - @physicalDevice@ is the physical device from which to query the--- image capabilities+-- - 'Graphics.Vulkan.Core10.Handles.PhysicalDevice' is the physical+-- device from which to query the image capabilities ----- - @format@ is the image format, corresponding to--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@format@.+-- - 'Graphics.Vulkan.Core10.Enums.Format.Format' is the image format,+-- corresponding to+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.Enums.Format.Format'. -- -- - @type@ is the image type, corresponding to--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@imageType@.+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.Enums.ImageType.ImageType'. -- -- - @tiling@ is the image tiling, corresponding to--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@tiling@.+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@tiling@. -- -- - @usage@ is the intended usage of the image, corresponding to--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@usage@.+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::@usage@. ----- - @flags@ is a bitmask describing additional parameters of the image,--- corresponding to--- 'Graphics.Vulkan.Core10.Image.VkImageCreateInfo'::@flags@.+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask describing+-- additional parameters of the image, corresponding to+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'. -- -- - @externalHandleType@ is either one of the bits from--- 'VkExternalMemoryHandleTypeFlagBitsNV', or 0.+-- 'ExternalMemoryHandleTypeFlagBitsNV', or 0. ----- - @pExternalImageFormatProperties@ points to an instance of the--- 'VkExternalImageFormatPropertiesNV' structure in which capabilities+-- - @pExternalImageFormatProperties@ is a pointer to a+-- 'ExternalImageFormatPropertiesNV' structure in which capabilities -- are returned. -- -- = Description -- -- If @externalHandleType@ is 0,--- @pExternalImageFormatProperties@::imageFormatProperties will return the+-- @pExternalImageFormatProperties->imageFormatProperties@ will return the -- same values as a call to--- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceImageFormatProperties',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties', -- and the other members of @pExternalImageFormatProperties@ will all be 0. -- Otherwise, they are filled in as described for--- 'VkExternalImageFormatPropertiesNV'.------ == Valid Usage (Implicit)------ - @physicalDevice@ /must/ be a valid @VkPhysicalDevice@ handle------ - @format@ /must/ be a valid 'Graphics.Vulkan.Core10.Core.VkFormat'--- value------ - @type@ /must/ be a valid--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType' value------ - @tiling@ /must/ be a valid--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageTiling' value------ - @usage@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlagBits'--- values------ - @usage@ /must/ not be @0@------ - @flags@ /must/ be a valid combination of--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageCreateFlagBits'--- values+-- 'ExternalImageFormatPropertiesNV'. ----- - @externalHandleType@ /must/ be a valid combination of--- 'VkExternalMemoryHandleTypeFlagBitsNV' values+-- == Return Codes ----- - @pExternalImageFormatProperties@ /must/ be a valid pointer to a--- @VkExternalImageFormatPropertiesNV@ structure+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- == Return Codes+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' ----- - @VK_ERROR_OUT_OF_DEVICE_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY' ----- - @VK_ERROR_FORMAT_NOT_SUPPORTED@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_FORMAT_NOT_SUPPORTED' -- -- = See Also ----- 'VkExternalImageFormatPropertiesNV',--- 'VkExternalMemoryHandleTypeFlagsNV',--- 'Graphics.Vulkan.Core10.Core.VkFormat',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageCreateFlags',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageTiling',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageType',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageUsageFlags',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkPhysicalDevice'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetPhysicalDeviceExternalImageFormatPropertiesNV" vkGetPhysicalDeviceExternalImageFormatPropertiesNV :: ("physicalDevice" ::: VkPhysicalDevice) -> ("format" ::: VkFormat) -> ("type" ::: VkImageType) -> ("tiling" ::: VkImageTiling) -> ("usage" ::: VkImageUsageFlags) -> ("flags" ::: VkImageCreateFlags) -> ("externalHandleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pExternalImageFormatProperties" ::: Ptr VkExternalImageFormatPropertiesNV) -> IO VkResult+-- 'ExternalImageFormatPropertiesNV', 'ExternalMemoryHandleTypeFlagsNV',+-- 'Graphics.Vulkan.Core10.Enums.Format.Format',+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlags',+-- 'Graphics.Vulkan.Core10.Enums.ImageTiling.ImageTiling',+-- 'Graphics.Vulkan.Core10.Enums.ImageType.ImageType',+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',+-- 'Graphics.Vulkan.Core10.Handles.PhysicalDevice'+getPhysicalDeviceExternalImageFormatPropertiesNV :: PhysicalDevice -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> IO (ExternalImageFormatPropertiesNV)+getPhysicalDeviceExternalImageFormatPropertiesNV physicalDevice format type' tiling usage flags externalHandleType = evalContT $ do+ let vkGetPhysicalDeviceExternalImageFormatPropertiesNV' = mkVkGetPhysicalDeviceExternalImageFormatPropertiesNV (pVkGetPhysicalDeviceExternalImageFormatPropertiesNV (instanceCmds (physicalDevice :: PhysicalDevice)))+ pPExternalImageFormatProperties <- ContT (withZeroCStruct @ExternalImageFormatPropertiesNV)+ r <- lift $ vkGetPhysicalDeviceExternalImageFormatPropertiesNV' (physicalDeviceHandle (physicalDevice)) (format) (type') (tiling) (usage) (flags) (externalHandleType) (pPExternalImageFormatProperties)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pExternalImageFormatProperties <- lift $ peekCStruct @ExternalImageFormatPropertiesNV pPExternalImageFormatProperties+ pure $ (pExternalImageFormatProperties)++ -- | VkExternalImageFormatPropertiesNV - Structure specifying external image -- format properties -- -- = See Also ----- 'VkExternalMemoryFeatureFlagsNV', 'VkExternalMemoryHandleTypeFlagsNV',--- 'Graphics.Vulkan.Core10.DeviceInitialization.VkImageFormatProperties',--- 'vkGetPhysicalDeviceExternalImageFormatPropertiesNV'-data VkExternalImageFormatPropertiesNV = VkExternalImageFormatPropertiesNV- { -- | @imageFormatProperties@ will be filled in as when calling- -- 'Graphics.Vulkan.Core10.DeviceInitialization.vkGetPhysicalDeviceImageFormatProperties',- -- but the values returned /may/ vary depending on the external handle type- -- requested.- vkImageFormatProperties :: VkImageFormatProperties+-- 'ExternalMemoryFeatureFlagsNV', 'ExternalMemoryHandleTypeFlagsNV',+-- 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties',+-- 'getPhysicalDeviceExternalImageFormatPropertiesNV'+data ExternalImageFormatPropertiesNV = ExternalImageFormatPropertiesNV+ { -- | 'Graphics.Vulkan.Core10.DeviceInitialization.ImageFormatProperties' will+ -- be filled in as when calling+ -- 'Graphics.Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties',+ -- but the values returned /may/ vary depending on the external handle type+ -- requested.+ imageFormatProperties :: ImageFormatProperties , -- | @externalMemoryFeatures@ is a bitmask of- -- 'VkExternalMemoryFeatureFlagBitsNV', indicating properties of the- -- external memory handle type- -- ('vkGetPhysicalDeviceExternalImageFormatPropertiesNV'::@externalHandleType@)- -- being queried, or 0 if the external memory handle type is 0.- vkExternalMemoryFeatures :: VkExternalMemoryFeatureFlagsNV+ -- 'ExternalMemoryFeatureFlagBitsNV', indicating properties of the external+ -- memory handle type+ -- ('getPhysicalDeviceExternalImageFormatPropertiesNV'::@externalHandleType@)+ -- being queried, or 0 if the external memory handle type is 0.+ externalMemoryFeatures :: ExternalMemoryFeatureFlagsNV , -- | @exportFromImportedHandleTypes@ is a bitmask of- -- 'VkExternalMemoryHandleTypeFlagBitsNV' containing a bit set for every- -- external handle type that /may/ be used to create memory from which the- -- handles of the type specified in- -- 'vkGetPhysicalDeviceExternalImageFormatPropertiesNV'::@externalHandleType@- -- /can/ be exported, or 0 if the external memory handle type is 0.- vkExportFromImportedHandleTypes :: VkExternalMemoryHandleTypeFlagsNV+ -- 'ExternalMemoryHandleTypeFlagBitsNV' containing a bit set for every+ -- external handle type that /may/ be used to create memory from which the+ -- handles of the type specified in+ -- 'getPhysicalDeviceExternalImageFormatPropertiesNV'::@externalHandleType@+ -- /can/ be exported, or 0 if the external memory handle type is 0.+ exportFromImportedHandleTypes :: ExternalMemoryHandleTypeFlagsNV , -- | @compatibleHandleTypes@ is a bitmask of- -- 'VkExternalMemoryHandleTypeFlagBitsNV' containing a bit set for every- -- external handle type that /may/ be specified simultaneously with the- -- handle type specified by- -- 'vkGetPhysicalDeviceExternalImageFormatPropertiesNV'::@externalHandleType@- -- when calling 'Graphics.Vulkan.Core10.Memory.vkAllocateMemory', or 0 if- -- the external memory handle type is 0. @compatibleHandleTypes@ will- -- always contain- -- 'vkGetPhysicalDeviceExternalImageFormatPropertiesNV'::@externalHandleType@- vkCompatibleHandleTypes :: VkExternalMemoryHandleTypeFlagsNV+ -- 'ExternalMemoryHandleTypeFlagBitsNV' containing a bit set for every+ -- external handle type that /may/ be specified simultaneously with the+ -- handle type specified by+ -- 'getPhysicalDeviceExternalImageFormatPropertiesNV'::@externalHandleType@+ -- when calling 'Graphics.Vulkan.Core10.Memory.allocateMemory', or 0 if the+ -- external memory handle type is 0. @compatibleHandleTypes@ will always+ -- contain+ -- 'getPhysicalDeviceExternalImageFormatPropertiesNV'::@externalHandleType@+ compatibleHandleTypes :: ExternalMemoryHandleTypeFlagsNV }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show ExternalImageFormatPropertiesNV -instance Storable VkExternalImageFormatPropertiesNV where- sizeOf ~_ = 48- alignment ~_ = 8- peek ptr = VkExternalImageFormatPropertiesNV <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 36)- <*> peek (ptr `plusPtr` 40)- poke ptr poked = poke (ptr `plusPtr` 0) (vkImageFormatProperties (poked :: VkExternalImageFormatPropertiesNV))- *> poke (ptr `plusPtr` 32) (vkExternalMemoryFeatures (poked :: VkExternalImageFormatPropertiesNV))- *> poke (ptr `plusPtr` 36) (vkExportFromImportedHandleTypes (poked :: VkExternalImageFormatPropertiesNV))- *> poke (ptr `plusPtr` 40) (vkCompatibleHandleTypes (poked :: VkExternalImageFormatPropertiesNV))--- | VkExternalMemoryHandleTypeFlagsNV - Bitmask of--- VkExternalMemoryHandleTypeFlagBitsNV------ = Description------ @VkExternalMemoryHandleTypeFlagsNV@ is a bitmask type for setting a mask--- of zero or more 'VkExternalMemoryHandleTypeFlagBitsNV'.+instance ToCStruct ExternalImageFormatPropertiesNV where+ withCStruct x f = allocaBytesAligned 48 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ExternalImageFormatPropertiesNV{..} f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageFormatProperties)) (imageFormatProperties) . ($ ())+ lift $ poke ((p `plusPtr` 32 :: Ptr ExternalMemoryFeatureFlagsNV)) (externalMemoryFeatures)+ lift $ poke ((p `plusPtr` 36 :: Ptr ExternalMemoryHandleTypeFlagsNV)) (exportFromImportedHandleTypes)+ lift $ poke ((p `plusPtr` 40 :: Ptr ExternalMemoryHandleTypeFlagsNV)) (compatibleHandleTypes)+ lift $ f+ cStructSize = 48+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr ImageFormatProperties)) (zero) . ($ ())+ lift $ f++instance FromCStruct ExternalImageFormatPropertiesNV where+ peekCStruct p = do+ imageFormatProperties <- peekCStruct @ImageFormatProperties ((p `plusPtr` 0 :: Ptr ImageFormatProperties))+ externalMemoryFeatures <- peek @ExternalMemoryFeatureFlagsNV ((p `plusPtr` 32 :: Ptr ExternalMemoryFeatureFlagsNV))+ exportFromImportedHandleTypes <- peek @ExternalMemoryHandleTypeFlagsNV ((p `plusPtr` 36 :: Ptr ExternalMemoryHandleTypeFlagsNV))+ compatibleHandleTypes <- peek @ExternalMemoryHandleTypeFlagsNV ((p `plusPtr` 40 :: Ptr ExternalMemoryHandleTypeFlagsNV))+ pure $ ExternalImageFormatPropertiesNV+ imageFormatProperties externalMemoryFeatures exportFromImportedHandleTypes compatibleHandleTypes++instance Zero ExternalImageFormatPropertiesNV where+ zero = ExternalImageFormatPropertiesNV+ zero+ zero+ zero+ zero+++-- | VkExternalMemoryHandleTypeFlagBitsNV - Bitmask specifying external+-- memory handle types -- -- = See Also ----- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.VkExportMemoryAllocateInfoNV',--- 'VkExternalImageFormatPropertiesNV',--- 'VkExternalMemoryHandleTypeFlagBitsNV',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.VkExternalMemoryImageCreateInfoNV',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.VkImportMemoryWin32HandleInfoNV',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.vkGetMemoryWin32HandleNV',--- 'vkGetPhysicalDeviceExternalImageFormatPropertiesNV'-type VkExternalMemoryHandleTypeFlagsNV = VkExternalMemoryHandleTypeFlagBitsNV--- | VkExternalMemoryFeatureFlagsNV - Bitmask of--- VkExternalMemoryFeatureFlagBitsNV------ = Description------ @VkExternalMemoryFeatureFlagsNV@ is a bitmask type for setting a mask of--- zero or more 'VkExternalMemoryFeatureFlagBitsNV'.+-- 'ExternalMemoryHandleTypeFlagsNV'+newtype ExternalMemoryHandleTypeFlagBitsNV = ExternalMemoryHandleTypeFlagBitsNV Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV' specifies a handle to+-- memory returned by+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.getMemoryWin32HandleNV',+-- or one duplicated from such a handle using @DuplicateHandle()@.+pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = ExternalMemoryHandleTypeFlagBitsNV 0x00000001+-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV' specifies a handle+-- to memory returned by+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_win32.getMemoryWin32HandleNV'.+pattern EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = ExternalMemoryHandleTypeFlagBitsNV 0x00000002+-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV' specifies a valid NT+-- handle to memory returned by @IDXGIResource1::CreateSharedHandle@, or a+-- handle duplicated from such a handle using @DuplicateHandle()@.+pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = ExternalMemoryHandleTypeFlagBitsNV 0x00000004+-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV' specifies a handle+-- to memory returned by @IDXGIResource::GetSharedHandle()@.+pattern EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = ExternalMemoryHandleTypeFlagBitsNV 0x00000008++type ExternalMemoryHandleTypeFlagsNV = ExternalMemoryHandleTypeFlagBitsNV++instance Show ExternalMemoryHandleTypeFlagBitsNV where+ showsPrec p = \case+ EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV"+ EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV"+ EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV"+ EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV -> showString "EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV"+ ExternalMemoryHandleTypeFlagBitsNV x -> showParen (p >= 11) (showString "ExternalMemoryHandleTypeFlagBitsNV 0x" . showHex x)++instance Read ExternalMemoryHandleTypeFlagBitsNV where+ readPrec = parens (choose [("EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV", pure EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV)+ , ("EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV", pure EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV)+ , ("EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV", pure EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV)+ , ("EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV", pure EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV)]+ ++++ prec 10 (do+ expectP (Ident "ExternalMemoryHandleTypeFlagBitsNV")+ v <- step readPrec+ pure (ExternalMemoryHandleTypeFlagBitsNV v)))+++-- | VkExternalMemoryFeatureFlagBitsNV - Bitmask specifying external memory+-- features -- -- = See Also ----- 'VkExternalImageFormatPropertiesNV', 'VkExternalMemoryFeatureFlagBitsNV'-type VkExternalMemoryFeatureFlagsNV = VkExternalMemoryFeatureFlagBitsNV+-- 'ExternalImageFormatPropertiesNV', 'ExternalMemoryFeatureFlagsNV',+-- 'getPhysicalDeviceExternalImageFormatPropertiesNV'+newtype ExternalMemoryFeatureFlagBitsNV = ExternalMemoryFeatureFlagBitsNV Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV' specifies that external+-- memory of the specified type /must/ be created as a dedicated allocation+-- when used in the manner specified.+pattern EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = ExternalMemoryFeatureFlagBitsNV 0x00000001+-- | 'EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV' specifies that the+-- implementation supports exporting handles of the specified type.+pattern EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = ExternalMemoryFeatureFlagBitsNV 0x00000002+-- | 'EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV' specifies that the+-- implementation supports importing handles of the specified type.+pattern EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = ExternalMemoryFeatureFlagBitsNV 0x00000004++type ExternalMemoryFeatureFlagsNV = ExternalMemoryFeatureFlagBitsNV++instance Show ExternalMemoryFeatureFlagBitsNV where+ showsPrec p = \case+ EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV -> showString "EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV"+ EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV -> showString "EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV"+ EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV -> showString "EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV"+ ExternalMemoryFeatureFlagBitsNV x -> showParen (p >= 11) (showString "ExternalMemoryFeatureFlagBitsNV 0x" . showHex x)++instance Read ExternalMemoryFeatureFlagBitsNV where+ readPrec = parens (choose [("EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV", pure EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV)+ , ("EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV", pure EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV)+ , ("EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV", pure EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV)]+ ++++ prec 10 (do+ expectP (Ident "ExternalMemoryFeatureFlagBitsNV")+ v <- step readPrec+ pure (ExternalMemoryFeatureFlagBitsNV v)))+++type NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION"+pattern NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION :: forall a . Integral a => a+pattern NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1+++type NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities"++-- No documentation found for TopLevel "VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME"+pattern NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities"+
+ src/Graphics/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs-boot view
@@ -0,0 +1,21 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities ( ExternalImageFormatPropertiesNV+ , ExternalMemoryHandleTypeFlagBitsNV+ , ExternalMemoryHandleTypeFlagsNV+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ExternalImageFormatPropertiesNV++instance ToCStruct ExternalImageFormatPropertiesNV+instance Show ExternalImageFormatPropertiesNV++instance FromCStruct ExternalImageFormatPropertiesNV+++data ExternalMemoryHandleTypeFlagBitsNV++type ExternalMemoryHandleTypeFlagsNV = ExternalMemoryHandleTypeFlagBitsNV+
src/Graphics/Vulkan/Extensions/VK_NV_external_memory_win32.hs view
@@ -1,190 +1,181 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DataKinds #-}-{-# language TypeOperators #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_NV_external_memory_win32- ( HANDLE- , SECURITY_ATTRIBUTES- , DWORD- , pattern VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV- , pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV- , pattern VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION- , pattern VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME- , vkGetMemoryWin32HandleNV- , VkImportMemoryWin32HandleInfoNV(..)- , VkExportMemoryWin32HandleInfoNV(..)- ) where--import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import Graphics.Vulkan.NamedType- ( (:::)- )---import Graphics.Vulkan.Core10.Core- ( VkResult(..)- , VkStructureType(..)- )-import Graphics.Vulkan.Core10.DeviceInitialization- ( VkDevice- )-import Graphics.Vulkan.Core10.Memory- ( VkDeviceMemory- )-import Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities- ( VkExternalMemoryHandleTypeFlagBitsNV(..)- , VkExternalMemoryHandleTypeFlagsNV- )+module Graphics.Vulkan.Extensions.VK_NV_external_memory_win32 ( getMemoryWin32HandleNV+ , ImportMemoryWin32HandleInfoNV(..)+ , ExportMemoryWin32HandleInfoNV(..)+ , NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION+ , pattern NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION+ , NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME+ , pattern NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME+ , ExternalMemoryHandleTypeFlagBitsNV(..)+ , ExternalMemoryHandleTypeFlagsNV+ , HANDLE+ , DWORD+ , SECURITY_ATTRIBUTES+ ) where +import Control.Exception.Base (bracket)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.Extensions.WSITypes (DWORD)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetMemoryWin32HandleNV))+import Graphics.Vulkan.Core10.Handles (DeviceMemory)+import Graphics.Vulkan.Core10.Handles (DeviceMemory(..))+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities (ExternalMemoryHandleTypeFlagsNV)+import Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities (ExternalMemoryHandleTypeFlagsNV)+import Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities (ExternalMemoryHandleTypeFlagBitsNV(..))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Extensions.WSITypes (HANDLE)+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.Extensions.WSITypes (SECURITY_ATTRIBUTES)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.WSITypes (DWORD)+import Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities (ExternalMemoryHandleTypeFlagBitsNV(..))+import Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities (ExternalMemoryHandleTypeFlagsNV)+import Graphics.Vulkan.Extensions.WSITypes (HANDLE)+import Graphics.Vulkan.Extensions.WSITypes (SECURITY_ATTRIBUTES)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetMemoryWin32HandleNV+ :: FunPtr (Ptr Device_T -> DeviceMemory -> ExternalMemoryHandleTypeFlagsNV -> Ptr HANDLE -> IO Result) -> Ptr Device_T -> DeviceMemory -> ExternalMemoryHandleTypeFlagsNV -> Ptr HANDLE -> IO Result --- No documentation found for TopLevel "HANDLE"-type HANDLE = Ptr ()--- | Opaque data-data SECURITY_ATTRIBUTES--- No documentation found for TopLevel "DWORD"-type DWORD = Word32--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV"-pattern VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV :: VkStructureType-pattern VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = VkStructureType 1000057000--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV"-pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV :: VkStructureType-pattern VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = VkStructureType 1000057001--- No documentation found for TopLevel "VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION"-pattern VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION :: Integral a => a-pattern VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME"-pattern VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_NV_external_memory_win32" -- | vkGetMemoryWin32HandleNV - retrieve Win32 handle to a device memory -- object -- -- = Parameters ----- - @device@ is the logical device that owns the memory.+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the memory. ----- - @memory@ is the @VkDeviceMemory@ object.+-- - @memory@ is the 'Graphics.Vulkan.Core10.Handles.DeviceMemory'+-- object. -- -- - @handleType@ is a bitmask of--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBitsNV'+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.ExternalMemoryHandleTypeFlagBitsNV' -- containing a single bit specifying the type of handle requested. ----- - @handle@ points to a Windows @HANDLE@ in which the handle is+-- - @handle@ is a pointer to a Windows+-- 'Graphics.Vulkan.Extensions.WSITypes.HANDLE' in which the handle is -- returned. ----- == Valid Usage------ - @handleType@ /must/ be a flag specified in--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory.VkExportMemoryAllocateInfoNV'::@handleTypes@--- when allocating @memory@------ == Valid Usage (Implicit)------ - @device@ /must/ be a valid @VkDevice@ handle------ - @memory@ /must/ be a valid @VkDeviceMemory@ handle------ - @handleType@ /must/ be a valid combination of--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBitsNV'--- values------ - @handleType@ /must/ not be @0@------ - @pHandle@ /must/ be a valid pointer to a @HANDLE@ value+-- == Return Codes ----- - @memory@ /must/ have been created, allocated, or retrieved from--- @device@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>] ----- == Return Codes+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS' ----- [[Success](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-successcodes)]--- - @VK_SUCCESS@+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>] ----- [[Failure](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fundamentals-errorcodes)]--- - @VK_ERROR_TOO_MANY_OBJECTS@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_TOO_MANY_OBJECTS' ----- - @VK_ERROR_OUT_OF_HOST_MEMORY@+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' -- -- = See Also ----- 'Graphics.Vulkan.Core10.DeviceInitialization.VkDevice',--- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory',--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalMemoryHandleTypeFlagsNV'-foreign import ccall-#if !defined(SAFE_FOREIGN_CALLS)- unsafe-#endif- "vkGetMemoryWin32HandleNV" vkGetMemoryWin32HandleNV :: ("device" ::: VkDevice) -> ("memory" ::: VkDeviceMemory) -> ("handleType" ::: VkExternalMemoryHandleTypeFlagsNV) -> ("pHandle" ::: Ptr HANDLE) -> IO VkResult+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory',+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.ExternalMemoryHandleTypeFlagsNV'+getMemoryWin32HandleNV :: Device -> DeviceMemory -> ExternalMemoryHandleTypeFlagsNV -> IO (HANDLE)+getMemoryWin32HandleNV device memory handleType = evalContT $ do+ let vkGetMemoryWin32HandleNV' = mkVkGetMemoryWin32HandleNV (pVkGetMemoryWin32HandleNV (deviceCmds (device :: Device)))+ pPHandle <- ContT $ bracket (callocBytes @HANDLE 8) free+ r <- lift $ vkGetMemoryWin32HandleNV' (deviceHandle (device)) (memory) (handleType) (pPHandle)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pHandle <- lift $ peek @HANDLE pPHandle+ pure $ (pHandle)++ -- | VkImportMemoryWin32HandleInfoNV - import Win32 memory created on the -- same physical device -- -- = Description -- -- If @handleType@ is @0@, this structure is ignored by consumers of the--- 'Graphics.Vulkan.Core10.Memory.VkMemoryAllocateInfo' structure it is+-- 'Graphics.Vulkan.Core10.Memory.MemoryAllocateInfo' structure it is -- chained from. ----- == Valid Usage------ - @handleType@ /must/ not have more than one bit set.------ - @handle@ /must/ be a valid handle to memory, obtained as specified--- by @handleType@.--- -- == Valid Usage (Implicit) ----- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV@------ - @handleType@ /must/ be a valid combination of--- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBitsNV'--- values--- -- = See Also ----- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalMemoryHandleTypeFlagsNV',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkImportMemoryWin32HandleInfoNV = VkImportMemoryWin32HandleInfoNV- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @handleType@ is @0@ or a- -- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.VkExternalMemoryHandleTypeFlagBitsNV'- -- value specifying the type of memory handle in @handle@.- vkHandleType :: VkExternalMemoryHandleTypeFlagsNV- , -- | @handle@ is a Windows @HANDLE@ referring to the memory.- vkHandle :: HANDLE+-- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.ExternalMemoryHandleTypeFlagsNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ImportMemoryWin32HandleInfoNV = ImportMemoryWin32HandleInfoNV+ { -- | @handleType@ /must/ be a valid combination of+ -- 'Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities.ExternalMemoryHandleTypeFlagBitsNV'+ -- values+ handleType :: ExternalMemoryHandleTypeFlagsNV+ , -- | @handle@ /must/ be a valid handle to memory, obtained as specified by+ -- @handleType@.+ handle :: HANDLE }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show ImportMemoryWin32HandleInfoNV -instance Storable VkImportMemoryWin32HandleInfoNV where+instance ToCStruct ImportMemoryWin32HandleInfoNV where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ImportMemoryWin32HandleInfoNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlagsNV)) (handleType)+ poke ((p `plusPtr` 24 :: Ptr HANDLE)) (handle)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct ImportMemoryWin32HandleInfoNV where+ peekCStruct p = do+ handleType <- peek @ExternalMemoryHandleTypeFlagsNV ((p `plusPtr` 16 :: Ptr ExternalMemoryHandleTypeFlagsNV))+ handle <- peek @HANDLE ((p `plusPtr` 24 :: Ptr HANDLE))+ pure $ ImportMemoryWin32HandleInfoNV+ handleType handle++instance Storable ImportMemoryWin32HandleInfoNV where sizeOf ~_ = 32 alignment ~_ = 8- peek ptr = VkImportMemoryWin32HandleInfoNV <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkImportMemoryWin32HandleInfoNV))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkImportMemoryWin32HandleInfoNV))- *> poke (ptr `plusPtr` 16) (vkHandleType (poked :: VkImportMemoryWin32HandleInfoNV))- *> poke (ptr `plusPtr` 24) (vkHandle (poked :: VkImportMemoryWin32HandleInfoNV))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ImportMemoryWin32HandleInfoNV where+ zero = ImportMemoryWin32HandleInfoNV+ zero+ zero++ -- | VkExportMemoryWin32HandleInfoNV - specify security attributes and access -- rights for Win32 memory handles --@@ -194,46 +185,82 @@ -- default security descriptor values will be used, and child processes -- created by the application will not inherit the handle, as described in -- the MSDN documentation for “Synchronization Object Security and Access--- Rights”[1]. Further, if the structure is not present, the access rights+-- Rights”1. Further, if the structure is not present, the access rights -- will be ----- > DXGI_SHARED_RESOURCE_READ | DXGI_SHARED_RESOURCE_WRITE+-- @DXGI_SHARED_RESOURCE_READ@ | @DXGI_SHARED_RESOURCE_WRITE@ -- -- [1]--- <https://msdn.microsoft.com/en-us/library/windows/desktop/ms686670.aspx>+-- <https://docs.microsoft.com/en-us/windows/win32/sync/synchronization-object-security-and-access-rights> -- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV' -- -- - If @pAttributes@ is not @NULL@, @pAttributes@ /must/ be a valid--- pointer to a valid @SECURITY_ATTRIBUTES@ value+-- pointer to a valid+-- 'Graphics.Vulkan.Extensions.WSITypes.SECURITY_ATTRIBUTES' value -- -- = See Also ----- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkExportMemoryWin32HandleInfoNV = VkExportMemoryWin32HandleInfoNV- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @pAttributes@ is a pointer to a Windows @SECURITY_ATTRIBUTES@ structure- -- specifying security attributes of the handle.- vkPAttributes :: Ptr SECURITY_ATTRIBUTES- , -- | @dwAccess@ is a @DWORD@ specifying access rights of the handle.- vkDwAccess :: DWORD+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data ExportMemoryWin32HandleInfoNV = ExportMemoryWin32HandleInfoNV+ { -- | @pAttributes@ is a pointer to a Windows+ -- 'Graphics.Vulkan.Extensions.WSITypes.SECURITY_ATTRIBUTES' structure+ -- specifying security attributes of the handle.+ attributes :: Ptr SECURITY_ATTRIBUTES+ , -- | @dwAccess@ is a 'Graphics.Vulkan.Extensions.WSITypes.DWORD' specifying+ -- access rights of the handle.+ dwAccess :: DWORD }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show ExportMemoryWin32HandleInfoNV -instance Storable VkExportMemoryWin32HandleInfoNV where+instance ToCStruct ExportMemoryWin32HandleInfoNV where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ExportMemoryWin32HandleInfoNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr (Ptr SECURITY_ATTRIBUTES))) (attributes)+ poke ((p `plusPtr` 24 :: Ptr DWORD)) (dwAccess)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct ExportMemoryWin32HandleInfoNV where+ peekCStruct p = do+ pAttributes <- peek @(Ptr SECURITY_ATTRIBUTES) ((p `plusPtr` 16 :: Ptr (Ptr SECURITY_ATTRIBUTES)))+ dwAccess <- peek @DWORD ((p `plusPtr` 24 :: Ptr DWORD))+ pure $ ExportMemoryWin32HandleInfoNV+ pAttributes dwAccess++instance Storable ExportMemoryWin32HandleInfoNV where sizeOf ~_ = 32 alignment ~_ = 8- peek ptr = VkExportMemoryWin32HandleInfoNV <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkExportMemoryWin32HandleInfoNV))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkExportMemoryWin32HandleInfoNV))- *> poke (ptr `plusPtr` 16) (vkPAttributes (poked :: VkExportMemoryWin32HandleInfoNV))- *> poke (ptr `plusPtr` 24) (vkDwAccess (poked :: VkExportMemoryWin32HandleInfoNV))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero ExportMemoryWin32HandleInfoNV where+ zero = ExportMemoryWin32HandleInfoNV+ zero+ zero+++type NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION"+pattern NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION :: forall a . Integral a => a+pattern NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1+++type NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_NV_external_memory_win32"++-- No documentation found for TopLevel "VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME"+pattern NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_NV_external_memory_win32"+
+ src/Graphics/Vulkan/Extensions/VK_NV_external_memory_win32.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_external_memory_win32 ( ExportMemoryWin32HandleInfoNV+ , ImportMemoryWin32HandleInfoNV+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data ExportMemoryWin32HandleInfoNV++instance ToCStruct ExportMemoryWin32HandleInfoNV+instance Show ExportMemoryWin32HandleInfoNV++instance FromCStruct ExportMemoryWin32HandleInfoNV+++data ImportMemoryWin32HandleInfoNV++instance ToCStruct ImportMemoryWin32HandleInfoNV+instance Show ImportMemoryWin32HandleInfoNV++instance FromCStruct ImportMemoryWin32HandleInfoNV+
src/Graphics/Vulkan/Extensions/VK_NV_fill_rectangle.hs view
@@ -1,30 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}+module Graphics.Vulkan.Extensions.VK_NV_fill_rectangle ( NV_FILL_RECTANGLE_SPEC_VERSION+ , pattern NV_FILL_RECTANGLE_SPEC_VERSION+ , NV_FILL_RECTANGLE_EXTENSION_NAME+ , pattern NV_FILL_RECTANGLE_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_NV_fill_rectangle- ( pattern VK_POLYGON_MODE_FILL_RECTANGLE_NV- , pattern VK_NV_FILL_RECTANGLE_SPEC_VERSION- , pattern VK_NV_FILL_RECTANGLE_EXTENSION_NAME- ) where+import Data.String (IsString) -import Data.String- ( IsString- )+type NV_FILL_RECTANGLE_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_NV_FILL_RECTANGLE_SPEC_VERSION"+pattern NV_FILL_RECTANGLE_SPEC_VERSION :: forall a . Integral a => a+pattern NV_FILL_RECTANGLE_SPEC_VERSION = 1 -import Graphics.Vulkan.Core10.Pipeline- ( VkPolygonMode(..)- ) +type NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" --- No documentation found for Nested "VkPolygonMode" "VK_POLYGON_MODE_FILL_RECTANGLE_NV"-pattern VK_POLYGON_MODE_FILL_RECTANGLE_NV :: VkPolygonMode-pattern VK_POLYGON_MODE_FILL_RECTANGLE_NV = VkPolygonMode 1000153000--- No documentation found for TopLevel "VK_NV_FILL_RECTANGLE_SPEC_VERSION"-pattern VK_NV_FILL_RECTANGLE_SPEC_VERSION :: Integral a => a-pattern VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_NV_FILL_RECTANGLE_EXTENSION_NAME"-pattern VK_NV_FILL_RECTANGLE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle"+pattern NV_FILL_RECTANGLE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle"+
src/Graphics/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs view
@@ -1,109 +1,57 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_NV_fragment_coverage_to_color- ( VkPipelineCoverageToColorStateCreateFlagsNV(..)- , pattern VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV- , pattern VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION- , pattern VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME- , VkPipelineCoverageToColorStateCreateInfoNV(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- , VkFlags- )----- ** VkPipelineCoverageToColorStateCreateFlagsNV---- | VkPipelineCoverageToColorStateCreateFlagsNV - Reserved for future use------ = Description------ @VkPipelineCoverageToColorStateCreateFlagsNV@ is a bitmask type for--- setting a mask, but is currently reserved for future use.------ = See Also------ 'VkPipelineCoverageToColorStateCreateInfoNV'-newtype VkPipelineCoverageToColorStateCreateFlagsNV = VkPipelineCoverageToColorStateCreateFlagsNV VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineCoverageToColorStateCreateFlagsNV where- - showsPrec p (VkPipelineCoverageToColorStateCreateFlagsNV x) = showParen (p >= 11) (showString "VkPipelineCoverageToColorStateCreateFlagsNV " . showsPrec 11 x)--instance Read VkPipelineCoverageToColorStateCreateFlagsNV where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineCoverageToColorStateCreateFlagsNV")- v <- step readPrec- pure (VkPipelineCoverageToColorStateCreateFlagsNV v)- )- )-+module Graphics.Vulkan.Extensions.VK_NV_fragment_coverage_to_color ( PipelineCoverageToColorStateCreateInfoNV(..)+ , PipelineCoverageToColorStateCreateFlagsNV(..)+ , NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION+ , pattern NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION+ , NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME+ , pattern NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME+ ) where --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"-pattern VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = VkStructureType 1000149000--- No documentation found for TopLevel "VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION"-pattern VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION :: Integral a => a-pattern VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME"-pattern VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color"+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Data.Bits (Bits)+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 Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV)) -- | VkPipelineCoverageToColorStateCreateInfoNV - Structure specifying -- whether fragment coverage replaces a color -- -- = Description ----- If @coverageToColorEnable@ is @VK_TRUE@, the fragment coverage--- information is treated as a bitmask with one bit for each sample (as in--- the [Sample--- Mask](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-samplemask)+-- If @coverageToColorEnable@ is 'Graphics.Vulkan.Core10.BaseType.TRUE',+-- the fragment coverage information is treated as a bitmask with one bit+-- for each sample (as in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-samplemask Sample Mask> -- section), and this bitmask replaces the first component of the color -- value corresponding to the fragment shader output location with -- @Location@ equal to @coverageToColorLocation@ and @Index@ equal to zero.@@ -113,8 +61,8 @@ -- coverage, the high bits of the sample coverage bitmask are filled with -- zeros. ----- If [Sample--- Shading](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#primsrast-sampleshading)+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading Sample Shading> -- is in use, the coverage bitmask only has bits set for samples that -- correspond to the fragment shader invocation that shades those samples. --@@ -122,60 +70,129 @@ -- and is always performed after fragment shading regardless of the setting -- of @EarlyFragmentTests@. ----- If @coverageToColorEnable@ is @VK_FALSE@, these operations are skipped.--- If this structure is not present, it is as if @coverageToColorEnable@ is--- @VK_FALSE@.+-- If @coverageToColorEnable@ is 'Graphics.Vulkan.Core10.BaseType.FALSE',+-- these operations are skipped. If this structure is not present, it is as+-- if @coverageToColorEnable@ is 'Graphics.Vulkan.Core10.BaseType.FALSE'. -- -- == Valid Usage ----- - If @coverageToColorEnable@ is @VK_TRUE@, then the render pass--- subpass indicated by--- 'Graphics.Vulkan.Core10.Pipeline.VkGraphicsPipelineCreateInfo'::@renderPass@+-- - If @coverageToColorEnable@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', then the render pass subpass+-- indicated by+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::'Graphics.Vulkan.Core10.Handles.RenderPass' -- and--- 'Graphics.Vulkan.Core10.Pipeline.VkGraphicsPipelineCreateInfo'::@subpass@+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@subpass@ -- /must/ have a color attachment at the location selected by -- @coverageToColorLocation@, with a--- 'Graphics.Vulkan.Core10.Core.VkFormat' of @VK_FORMAT_R8_UINT@,--- @VK_FORMAT_R8_SINT@, @VK_FORMAT_R16_UINT@, @VK_FORMAT_R16_SINT@,--- @VK_FORMAT_R32_UINT@, or @VK_FORMAT_R32_SINT@+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' of+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R8_UINT',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R8_SINT',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16_UINT',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16_SINT',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R32_UINT', or+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R32_SINT' -- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV' ----- - @flags@ /must/ be @0@+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@ -- -- = See Also ----- @VkBool32@, 'VkPipelineCoverageToColorStateCreateFlagsNV',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineCoverageToColorStateCreateInfoNV = VkPipelineCoverageToColorStateCreateInfoNV- { -- | @sType@ is the type of this structure- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkPipelineCoverageToColorStateCreateFlagsNV+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'PipelineCoverageToColorStateCreateFlagsNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineCoverageToColorStateCreateInfoNV = PipelineCoverageToColorStateCreateInfoNV+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: PipelineCoverageToColorStateCreateFlagsNV , -- | @coverageToColorEnable@ controls whether the fragment coverage value- -- replaces a fragment color output.- vkCoverageToColorEnable :: VkBool32+ -- replaces a fragment color output.+ coverageToColorEnable :: Bool , -- | @coverageToColorLocation@ controls which fragment shader color output- -- value is replaced.- vkCoverageToColorLocation :: Word32+ -- value is replaced.+ coverageToColorLocation :: Word32 }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show PipelineCoverageToColorStateCreateInfoNV -instance Storable VkPipelineCoverageToColorStateCreateInfoNV where+instance ToCStruct PipelineCoverageToColorStateCreateInfoNV where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineCoverageToColorStateCreateInfoNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr PipelineCoverageToColorStateCreateFlagsNV)) (flags)+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (coverageToColorEnable))+ poke ((p `plusPtr` 24 :: Ptr Word32)) (coverageToColorLocation)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PipelineCoverageToColorStateCreateInfoNV where+ peekCStruct p = do+ flags <- peek @PipelineCoverageToColorStateCreateFlagsNV ((p `plusPtr` 16 :: Ptr PipelineCoverageToColorStateCreateFlagsNV))+ coverageToColorEnable <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ coverageToColorLocation <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ pure $ PipelineCoverageToColorStateCreateInfoNV+ flags (bool32ToBool coverageToColorEnable) coverageToColorLocation++instance Storable PipelineCoverageToColorStateCreateInfoNV where sizeOf ~_ = 32 alignment ~_ = 8- peek ptr = VkPipelineCoverageToColorStateCreateInfoNV <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineCoverageToColorStateCreateInfoNV))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineCoverageToColorStateCreateInfoNV))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineCoverageToColorStateCreateInfoNV))- *> poke (ptr `plusPtr` 20) (vkCoverageToColorEnable (poked :: VkPipelineCoverageToColorStateCreateInfoNV))- *> poke (ptr `plusPtr` 24) (vkCoverageToColorLocation (poked :: VkPipelineCoverageToColorStateCreateInfoNV))+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineCoverageToColorStateCreateInfoNV where+ zero = PipelineCoverageToColorStateCreateInfoNV+ zero+ zero+ zero+++-- | VkPipelineCoverageToColorStateCreateFlagsNV - Reserved for future use+--+-- = Description+--+-- 'PipelineCoverageToColorStateCreateFlagsNV' is a bitmask type for+-- setting a mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'PipelineCoverageToColorStateCreateInfoNV'+newtype PipelineCoverageToColorStateCreateFlagsNV = PipelineCoverageToColorStateCreateFlagsNV Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show PipelineCoverageToColorStateCreateFlagsNV where+ showsPrec p = \case+ PipelineCoverageToColorStateCreateFlagsNV x -> showParen (p >= 11) (showString "PipelineCoverageToColorStateCreateFlagsNV 0x" . showHex x)++instance Read PipelineCoverageToColorStateCreateFlagsNV where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "PipelineCoverageToColorStateCreateFlagsNV")+ v <- step readPrec+ pure (PipelineCoverageToColorStateCreateFlagsNV v)))+++type NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION"+pattern NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION :: forall a . Integral a => a+pattern NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1+++type NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color"++-- No documentation found for TopLevel "VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME"+pattern NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color"+
+ src/Graphics/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_fragment_coverage_to_color (PipelineCoverageToColorStateCreateInfoNV) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PipelineCoverageToColorStateCreateInfoNV++instance ToCStruct PipelineCoverageToColorStateCreateInfoNV+instance Show PipelineCoverageToColorStateCreateInfoNV++instance FromCStruct PipelineCoverageToColorStateCreateInfoNV+
+ src/Graphics/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs view
@@ -0,0 +1,112 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_fragment_shader_barycentric ( PhysicalDeviceFragmentShaderBarycentricFeaturesNV(..)+ , NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION+ , pattern NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION+ , NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME+ , pattern NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV))+-- | VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV - Structure+-- describing barycentric support in fragment shaders that can be supported+-- by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceFragmentShaderBarycentricFeaturesNV'+-- structure describe the following features:+--+-- = Description+--+-- See+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-barycentric Barycentric Interpolation>+-- for more information.+--+-- If the 'PhysicalDeviceFragmentShaderBarycentricFeaturesNV' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceFragmentShaderBarycentricFeaturesNV' /can/ also be+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceFragmentShaderBarycentricFeaturesNV = PhysicalDeviceFragmentShaderBarycentricFeaturesNV+ { -- | @fragmentShaderBarycentric@ indicates that the implementation supports+ -- the @BaryCoordNV@ and @BaryCoordNoPerspNV@ SPIR-V fragment shader+ -- built-ins and supports the @PerVertexNV@ SPIR-V decoration on fragment+ -- shader input variables.+ fragmentShaderBarycentric :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceFragmentShaderBarycentricFeaturesNV++instance ToCStruct PhysicalDeviceFragmentShaderBarycentricFeaturesNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceFragmentShaderBarycentricFeaturesNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (fragmentShaderBarycentric))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceFragmentShaderBarycentricFeaturesNV where+ peekCStruct p = do+ fragmentShaderBarycentric <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceFragmentShaderBarycentricFeaturesNV+ (bool32ToBool fragmentShaderBarycentric)++instance Storable PhysicalDeviceFragmentShaderBarycentricFeaturesNV where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceFragmentShaderBarycentricFeaturesNV where+ zero = PhysicalDeviceFragmentShaderBarycentricFeaturesNV+ zero+++type NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION"+pattern NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION :: forall a . Integral a => a+pattern NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1+++type NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric"++-- No documentation found for TopLevel "VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME"+pattern NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric"+
+ src/Graphics/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_fragment_shader_barycentric (PhysicalDeviceFragmentShaderBarycentricFeaturesNV) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceFragmentShaderBarycentricFeaturesNV++instance ToCStruct PhysicalDeviceFragmentShaderBarycentricFeaturesNV+instance Show PhysicalDeviceFragmentShaderBarycentricFeaturesNV++instance FromCStruct PhysicalDeviceFragmentShaderBarycentricFeaturesNV+
src/Graphics/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs view
@@ -1,182 +1,91 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_NV_framebuffer_mixed_samples- ( VkCoverageModulationModeNV(..)- , pattern VK_COVERAGE_MODULATION_MODE_NONE_NV- , pattern VK_COVERAGE_MODULATION_MODE_RGB_NV- , pattern VK_COVERAGE_MODULATION_MODE_ALPHA_NV- , pattern VK_COVERAGE_MODULATION_MODE_RGBA_NV- , VkPipelineCoverageModulationStateCreateFlagsNV(..)- , pattern VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV- , pattern VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION- , pattern VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME- , VkPipelineCoverageModulationStateCreateInfoNV(..)- ) where--import Data.Bits- ( Bits- , FiniteBits- )-import Data.Int- ( Int32- )-import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.C.Types- ( CFloat(..)- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )---import Graphics.Vulkan.Core10.Core- ( VkBool32(..)- , VkStructureType(..)- , VkFlags- )----- ** VkCoverageModulationModeNV---- | VkCoverageModulationModeNV - Specify the discard rectangle mode------ = See Also------ 'VkPipelineCoverageModulationStateCreateInfoNV'-newtype VkCoverageModulationModeNV = VkCoverageModulationModeNV Int32- deriving (Eq, Ord, Storable)--instance Show VkCoverageModulationModeNV where- showsPrec _ VK_COVERAGE_MODULATION_MODE_NONE_NV = showString "VK_COVERAGE_MODULATION_MODE_NONE_NV"- showsPrec _ VK_COVERAGE_MODULATION_MODE_RGB_NV = showString "VK_COVERAGE_MODULATION_MODE_RGB_NV"- showsPrec _ VK_COVERAGE_MODULATION_MODE_ALPHA_NV = showString "VK_COVERAGE_MODULATION_MODE_ALPHA_NV"- showsPrec _ VK_COVERAGE_MODULATION_MODE_RGBA_NV = showString "VK_COVERAGE_MODULATION_MODE_RGBA_NV"- showsPrec p (VkCoverageModulationModeNV x) = showParen (p >= 11) (showString "VkCoverageModulationModeNV " . showsPrec 11 x)--instance Read VkCoverageModulationModeNV where- readPrec = parens ( choose [ ("VK_COVERAGE_MODULATION_MODE_NONE_NV", pure VK_COVERAGE_MODULATION_MODE_NONE_NV)- , ("VK_COVERAGE_MODULATION_MODE_RGB_NV", pure VK_COVERAGE_MODULATION_MODE_RGB_NV)- , ("VK_COVERAGE_MODULATION_MODE_ALPHA_NV", pure VK_COVERAGE_MODULATION_MODE_ALPHA_NV)- , ("VK_COVERAGE_MODULATION_MODE_RGBA_NV", pure VK_COVERAGE_MODULATION_MODE_RGBA_NV)- ] +++- prec 10 (do- expectP (Ident "VkCoverageModulationModeNV")- v <- step readPrec- pure (VkCoverageModulationModeNV v)- )- )---- | @VK_COVERAGE_MODULATION_MODE_NONE_NV@ specifies that no components are--- multiplied by the modulation factor.-pattern VK_COVERAGE_MODULATION_MODE_NONE_NV :: VkCoverageModulationModeNV-pattern VK_COVERAGE_MODULATION_MODE_NONE_NV = VkCoverageModulationModeNV 0---- | @VK_COVERAGE_MODULATION_MODE_RGB_NV@ specifies that the red, green, and--- blue components are multiplied by the modulation factor.-pattern VK_COVERAGE_MODULATION_MODE_RGB_NV :: VkCoverageModulationModeNV-pattern VK_COVERAGE_MODULATION_MODE_RGB_NV = VkCoverageModulationModeNV 1---- | @VK_COVERAGE_MODULATION_MODE_ALPHA_NV@ specifies that the alpha--- component is multiplied by the modulation factor.-pattern VK_COVERAGE_MODULATION_MODE_ALPHA_NV :: VkCoverageModulationModeNV-pattern VK_COVERAGE_MODULATION_MODE_ALPHA_NV = VkCoverageModulationModeNV 2---- | @VK_COVERAGE_MODULATION_MODE_RGBA_NV@ specifies that all components are--- multiplied by the modulation factor.-pattern VK_COVERAGE_MODULATION_MODE_RGBA_NV :: VkCoverageModulationModeNV-pattern VK_COVERAGE_MODULATION_MODE_RGBA_NV = VkCoverageModulationModeNV 3--- ** VkPipelineCoverageModulationStateCreateFlagsNV---- | VkPipelineCoverageModulationStateCreateFlagsNV - Reserved for future use------ = Description------ @VkPipelineCoverageModulationStateCreateFlagsNV@ is a bitmask type for--- setting a mask, but is currently reserved for future use.------ = See Also------ 'VkPipelineCoverageModulationStateCreateInfoNV'-newtype VkPipelineCoverageModulationStateCreateFlagsNV = VkPipelineCoverageModulationStateCreateFlagsNV VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)--instance Show VkPipelineCoverageModulationStateCreateFlagsNV where- - showsPrec p (VkPipelineCoverageModulationStateCreateFlagsNV x) = showParen (p >= 11) (showString "VkPipelineCoverageModulationStateCreateFlagsNV " . showsPrec 11 x)--instance Read VkPipelineCoverageModulationStateCreateFlagsNV where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineCoverageModulationStateCreateFlagsNV")- v <- step readPrec- pure (VkPipelineCoverageModulationStateCreateFlagsNV v)- )- )-+module Graphics.Vulkan.Extensions.VK_NV_framebuffer_mixed_samples ( PipelineCoverageModulationStateCreateInfoNV(..)+ , PipelineCoverageModulationStateCreateFlagsNV(..)+ , CoverageModulationModeNV( COVERAGE_MODULATION_MODE_NONE_NV+ , COVERAGE_MODULATION_MODE_RGB_NV+ , COVERAGE_MODULATION_MODE_ALPHA_NV+ , COVERAGE_MODULATION_MODE_RGBA_NV+ , ..+ )+ , NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION+ , pattern NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION+ , NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME+ , pattern NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME+ ) where --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"-pattern VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = VkStructureType 1000152000--- No documentation found for TopLevel "VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION"-pattern VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION :: Integral a => a-pattern VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME"-pattern VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples"+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Utils (maybePeek)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Bits (Bits)+import Data.Either (Either)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CFloat(CFloat))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import Data.Int (Int32)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV)) -- | VkPipelineCoverageModulationStateCreateInfoNV - Structure specifying -- parameters controlling coverage modulation -- -- = Description ----- If @coverageModulationTableEnable@ is @VK_FALSE@, then for each color--- sample the associated bits of the fragment’s coverage are counted and--- divided by the number of associated bits to produce a modulation factor--- R in the range (0,1] (a value of zero would have been killed due to a--- color coverage of 0). Specifically:+-- If @coverageModulationTableEnable@ is+-- 'Graphics.Vulkan.Core10.BaseType.FALSE', then for each color sample the+-- associated bits of the fragment’s coverage are counted and divided by+-- the number of associated bits to produce a modulation factor R in the+-- range (0,1] (a value of zero would have been killed due to a color+-- coverage of 0). Specifically: -- -- - N = value of @rasterizationSamples@ -- -- - M = value of--- 'Graphics.Vulkan.Core10.Pass.VkAttachmentDescription'::@samples@ for+-- 'Graphics.Vulkan.Core10.Pass.AttachmentDescription'::@samples@ for -- any color attachments -- -- - R = popcount(associated coverage bits) \/ (N \/ M) ----- If @coverageModulationTableEnable@ is @VK_TRUE@, the value R is computed--- using a programmable lookup table. The lookup table has N \/ M elements,--- and the element of the table is selected by:+-- If @coverageModulationTableEnable@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', the value R is computed using a+-- programmable lookup table. The lookup table has N \/ M elements, and the+-- element of the table is selected by: -- -- - R = @pCoverageModulationTable@[popcount(associated coverage bits)-1] --@@ -193,69 +102,187 @@ -- value of R. Which components are modulated is controlled by -- @coverageModulationMode@. ----- If this structure is not present, it is as if coverageModulationMode is--- @VK_COVERAGE_MODULATION_MODE_NONE_NV@.+-- If this structure is not present, it is as if @coverageModulationMode@+-- is 'COVERAGE_MODULATION_MODE_NONE_NV'. --+-- If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-coverage-reduction coverage reduction mode>+-- is+-- 'Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV',+-- each color sample is associated with only a single coverage sample. In+-- this case, it is as if @coverageModulationMode@ is+-- 'COVERAGE_MODULATION_MODE_NONE_NV'.+-- -- == Valid Usage ----- - If @coverageModulationTableEnable@ is @VK_TRUE@,+-- - If @coverageModulationTableEnable@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', -- @coverageModulationTableCount@ /must/ be equal to the number of -- rasterization samples divided by the number of color samples in the--- subpass.+-- subpass -- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV' ----- - @flags@ /must/ be @0@+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@ -- -- - @coverageModulationMode@ /must/ be a valid--- 'VkCoverageModulationModeNV' value------ - @coverageModulationTableCount@ /must/ be greater than @0@+-- 'CoverageModulationModeNV' value -- -- = See Also ----- @VkBool32@, 'VkCoverageModulationModeNV',--- 'VkPipelineCoverageModulationStateCreateFlagsNV',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkPipelineCoverageModulationStateCreateInfoNV = VkPipelineCoverageModulationStateCreateInfoNV- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkPipelineCoverageModulationStateCreateFlagsNV- , -- | @coverageModulationMode@ controls which color components are modulated- -- and is of type 'VkCoverageModulationModeNV'.- vkCoverageModulationMode :: VkCoverageModulationModeNV+-- 'Graphics.Vulkan.Core10.BaseType.Bool32', 'CoverageModulationModeNV',+-- 'PipelineCoverageModulationStateCreateFlagsNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineCoverageModulationStateCreateInfoNV = PipelineCoverageModulationStateCreateInfoNV+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is reserved for future use.+ flags :: PipelineCoverageModulationStateCreateFlagsNV+ , -- | @coverageModulationMode@ is a 'CoverageModulationModeNV' value+ -- controlling which color components are modulated.+ coverageModulationMode :: CoverageModulationModeNV , -- | @coverageModulationTableEnable@ controls whether the modulation factor- -- is looked up from a table in @pCoverageModulationTable@.- vkCoverageModulationTableEnable :: VkBool32- , -- | @coverageModulationTableCount@ is the number of elements in- -- @pCoverageModulationTable@.- vkCoverageModulationTableCount :: Word32+ -- is looked up from a table in @pCoverageModulationTable@.+ coverageModulationTableEnable :: Bool , -- | @pCoverageModulationTable@ is a table of modulation factors containing a- -- value for each number of covered samples.- vkPCoverageModulationTable :: Ptr CFloat+ -- value for each number of covered samples.+ coverageModulationTable :: Either Word32 (Vector Float) }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show PipelineCoverageModulationStateCreateInfoNV -instance Storable VkPipelineCoverageModulationStateCreateInfoNV where- sizeOf ~_ = 40- alignment ~_ = 8- peek ptr = VkPipelineCoverageModulationStateCreateInfoNV <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 28)- <*> peek (ptr `plusPtr` 32)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineCoverageModulationStateCreateInfoNV))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineCoverageModulationStateCreateInfoNV))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineCoverageModulationStateCreateInfoNV))- *> poke (ptr `plusPtr` 20) (vkCoverageModulationMode (poked :: VkPipelineCoverageModulationStateCreateInfoNV))- *> poke (ptr `plusPtr` 24) (vkCoverageModulationTableEnable (poked :: VkPipelineCoverageModulationStateCreateInfoNV))- *> poke (ptr `plusPtr` 28) (vkCoverageModulationTableCount (poked :: VkPipelineCoverageModulationStateCreateInfoNV))- *> poke (ptr `plusPtr` 32) (vkPCoverageModulationTable (poked :: VkPipelineCoverageModulationStateCreateInfoNV))+instance ToCStruct PipelineCoverageModulationStateCreateInfoNV where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineCoverageModulationStateCreateInfoNV{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCoverageModulationStateCreateFlagsNV)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr CoverageModulationModeNV)) (coverageModulationMode)+ lift $ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (coverageModulationTableEnable))+ lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) ((fromIntegral (either id (fromIntegral . Data.Vector.length) (coverageModulationTable)) :: Word32))+ pCoverageModulationTable'' <- case (coverageModulationTable) of+ Left _ -> pure nullPtr+ Right v -> do+ pPCoverageModulationTable' <- ContT $ allocaBytesAligned @CFloat ((Data.Vector.length (v)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPCoverageModulationTable' `plusPtr` (4 * (i)) :: Ptr CFloat) (CFloat (e))) (v)+ pure $ pPCoverageModulationTable'+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr CFloat))) pCoverageModulationTable''+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 20 :: Ptr CoverageModulationModeNV)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PipelineCoverageModulationStateCreateInfoNV where+ peekCStruct p = do+ flags <- peek @PipelineCoverageModulationStateCreateFlagsNV ((p `plusPtr` 16 :: Ptr PipelineCoverageModulationStateCreateFlagsNV))+ coverageModulationMode <- peek @CoverageModulationModeNV ((p `plusPtr` 20 :: Ptr CoverageModulationModeNV))+ coverageModulationTableEnable <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))+ coverageModulationTableCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+ pCoverageModulationTable <- peek @(Ptr CFloat) ((p `plusPtr` 32 :: Ptr (Ptr CFloat)))+ pCoverageModulationTable' <- maybePeek (\j -> generateM (fromIntegral coverageModulationTableCount) (\i -> do+ pCoverageModulationTableElem <- peek @CFloat (((j) `advancePtrBytes` (4 * (i)) :: Ptr CFloat))+ pure $ (\(CFloat a) -> a) pCoverageModulationTableElem)) pCoverageModulationTable+ let pCoverageModulationTable'' = maybe (Left coverageModulationTableCount) Right pCoverageModulationTable'+ pure $ PipelineCoverageModulationStateCreateInfoNV+ flags coverageModulationMode (bool32ToBool coverageModulationTableEnable) pCoverageModulationTable''++instance Zero PipelineCoverageModulationStateCreateInfoNV where+ zero = PipelineCoverageModulationStateCreateInfoNV+ zero+ zero+ zero+ (Left 0)+++-- | VkPipelineCoverageModulationStateCreateFlagsNV - Reserved for future use+--+-- = Description+--+-- 'PipelineCoverageModulationStateCreateFlagsNV' is a bitmask type for+-- setting a mask, but is currently reserved for future use.+--+-- = See Also+--+-- 'PipelineCoverageModulationStateCreateInfoNV'+newtype PipelineCoverageModulationStateCreateFlagsNV = PipelineCoverageModulationStateCreateFlagsNV Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++++instance Show PipelineCoverageModulationStateCreateFlagsNV where+ showsPrec p = \case+ PipelineCoverageModulationStateCreateFlagsNV x -> showParen (p >= 11) (showString "PipelineCoverageModulationStateCreateFlagsNV 0x" . showHex x)++instance Read PipelineCoverageModulationStateCreateFlagsNV where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "PipelineCoverageModulationStateCreateFlagsNV")+ v <- step readPrec+ pure (PipelineCoverageModulationStateCreateFlagsNV v)))+++-- | VkCoverageModulationModeNV - Specify the coverage modulation mode+--+-- = See Also+--+-- 'PipelineCoverageModulationStateCreateInfoNV'+newtype CoverageModulationModeNV = CoverageModulationModeNV Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'COVERAGE_MODULATION_MODE_NONE_NV' specifies that no components are+-- multiplied by the modulation factor.+pattern COVERAGE_MODULATION_MODE_NONE_NV = CoverageModulationModeNV 0+-- | 'COVERAGE_MODULATION_MODE_RGB_NV' specifies that the red, green, and+-- blue components are multiplied by the modulation factor.+pattern COVERAGE_MODULATION_MODE_RGB_NV = CoverageModulationModeNV 1+-- | 'COVERAGE_MODULATION_MODE_ALPHA_NV' specifies that the alpha component+-- is multiplied by the modulation factor.+pattern COVERAGE_MODULATION_MODE_ALPHA_NV = CoverageModulationModeNV 2+-- | 'COVERAGE_MODULATION_MODE_RGBA_NV' specifies that all components are+-- multiplied by the modulation factor.+pattern COVERAGE_MODULATION_MODE_RGBA_NV = CoverageModulationModeNV 3+{-# complete COVERAGE_MODULATION_MODE_NONE_NV,+ COVERAGE_MODULATION_MODE_RGB_NV,+ COVERAGE_MODULATION_MODE_ALPHA_NV,+ COVERAGE_MODULATION_MODE_RGBA_NV :: CoverageModulationModeNV #-}++instance Show CoverageModulationModeNV where+ showsPrec p = \case+ COVERAGE_MODULATION_MODE_NONE_NV -> showString "COVERAGE_MODULATION_MODE_NONE_NV"+ COVERAGE_MODULATION_MODE_RGB_NV -> showString "COVERAGE_MODULATION_MODE_RGB_NV"+ COVERAGE_MODULATION_MODE_ALPHA_NV -> showString "COVERAGE_MODULATION_MODE_ALPHA_NV"+ COVERAGE_MODULATION_MODE_RGBA_NV -> showString "COVERAGE_MODULATION_MODE_RGBA_NV"+ CoverageModulationModeNV x -> showParen (p >= 11) (showString "CoverageModulationModeNV " . showsPrec 11 x)++instance Read CoverageModulationModeNV where+ readPrec = parens (choose [("COVERAGE_MODULATION_MODE_NONE_NV", pure COVERAGE_MODULATION_MODE_NONE_NV)+ , ("COVERAGE_MODULATION_MODE_RGB_NV", pure COVERAGE_MODULATION_MODE_RGB_NV)+ , ("COVERAGE_MODULATION_MODE_ALPHA_NV", pure COVERAGE_MODULATION_MODE_ALPHA_NV)+ , ("COVERAGE_MODULATION_MODE_RGBA_NV", pure COVERAGE_MODULATION_MODE_RGBA_NV)]+ ++++ prec 10 (do+ expectP (Ident "CoverageModulationModeNV")+ v <- step readPrec+ pure (CoverageModulationModeNV v)))+++type NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION"+pattern NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION :: forall a . Integral a => a+pattern NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1+++type NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples"++-- No documentation found for TopLevel "VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME"+pattern NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples"+
+ src/Graphics/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_framebuffer_mixed_samples (PipelineCoverageModulationStateCreateInfoNV) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PipelineCoverageModulationStateCreateInfoNV++instance ToCStruct PipelineCoverageModulationStateCreateInfoNV+instance Show PipelineCoverageModulationStateCreateInfoNV++instance FromCStruct PipelineCoverageModulationStateCreateInfoNV+
src/Graphics/Vulkan/Extensions/VK_NV_geometry_shader_passthrough.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_NV_geometry_shader_passthrough- ( pattern VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION- , pattern VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_NV_geometry_shader_passthrough ( NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION+ , pattern NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION+ , NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME+ , pattern NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION"+pattern NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION :: forall a . Integral a => a+pattern NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 +type NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" --- No documentation found for TopLevel "VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION"-pattern VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION :: Integral a => a-pattern VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME"-pattern VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough"+pattern NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough"+
src/Graphics/Vulkan/Extensions/VK_NV_glsl_shader.hs view
@@ -1,30 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}+module Graphics.Vulkan.Extensions.VK_NV_glsl_shader ( NV_GLSL_SHADER_SPEC_VERSION+ , pattern NV_GLSL_SHADER_SPEC_VERSION+ , NV_GLSL_SHADER_EXTENSION_NAME+ , pattern NV_GLSL_SHADER_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_NV_glsl_shader- ( pattern VK_ERROR_INVALID_SHADER_NV- , pattern VK_NV_GLSL_SHADER_SPEC_VERSION- , pattern VK_NV_GLSL_SHADER_EXTENSION_NAME- ) where+import Data.String (IsString) -import Data.String- ( IsString- )+type NV_GLSL_SHADER_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_NV_GLSL_SHADER_SPEC_VERSION"+pattern NV_GLSL_SHADER_SPEC_VERSION :: forall a . Integral a => a+pattern NV_GLSL_SHADER_SPEC_VERSION = 1 -import Graphics.Vulkan.Core10.Core- ( VkResult(..)- ) +type NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" --- No documentation found for Nested "VkResult" "VK_ERROR_INVALID_SHADER_NV"-pattern VK_ERROR_INVALID_SHADER_NV :: VkResult-pattern VK_ERROR_INVALID_SHADER_NV = VkResult (-1000012000)--- No documentation found for TopLevel "VK_NV_GLSL_SHADER_SPEC_VERSION"-pattern VK_NV_GLSL_SHADER_SPEC_VERSION :: Integral a => a-pattern VK_NV_GLSL_SHADER_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_NV_GLSL_SHADER_EXTENSION_NAME"-pattern VK_NV_GLSL_SHADER_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader"+pattern NV_GLSL_SHADER_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader"+
+ src/Graphics/Vulkan/Extensions/VK_NV_mesh_shader.hs view
@@ -0,0 +1,1261 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_mesh_shader ( cmdDrawMeshTasksNV+ , cmdDrawMeshTasksIndirectNV+ , cmdDrawMeshTasksIndirectCountNV+ , PhysicalDeviceMeshShaderFeaturesNV(..)+ , PhysicalDeviceMeshShaderPropertiesNV(..)+ , DrawMeshTasksIndirectCommandNV(..)+ , NV_MESH_SHADER_SPEC_VERSION+ , pattern NV_MESH_SHADER_SPEC_VERSION+ , NV_MESH_SHADER_EXTENSION_NAME+ , pattern NV_MESH_SHADER_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import qualified Data.Vector.Storable.Sized (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.CStruct.Utils (lowerArrayPtr)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.Core10.Handles (Buffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdDrawMeshTasksIndirectCountNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdDrawMeshTasksIndirectNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdDrawMeshTasksNV))+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdDrawMeshTasksNV+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> IO ()++-- | vkCmdDrawMeshTasksNV - Draw mesh task work items+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @taskCount@ is the number of local workgroups to dispatch in the X+-- dimension. Y and Z dimension are implicitly set to one.+--+-- - @firstTask@ is the X component of the first workgroup ID.+--+-- = Description+--+-- When the command is executed, a global workgroup consisting of+-- @taskCount@ local workgroups is assembled.+--+-- == Valid Usage+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' as a result of+-- this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is accessed using+-- atomic operations as a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering, as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'+-- with a reduction mode of either+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+-- or+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+-- as a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering together with minmax filtering,+-- as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.Image' created with a+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- containing+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+-- sampled as a result of this command /must/ only be sampled using a+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+-- of+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--+-- - For each set /n/ that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a descriptor set /must/ have been bound+-- to /n/ at the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for set /n/, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - For each push constant that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a push constant value /must/ have been+-- set for the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for push constants, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - Descriptors in each bound descriptor set, specified via+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',+-- /must/ be valid if they are statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command+--+-- - A valid pipeline /must/ be bound to the pipeline bind point used by+-- this command+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command requires any dynamic state,+-- that state /must/ have been set for+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and done so after+-- any previously bound pipeline with the corresponding state not+-- specified as dynamic+--+-- - There /must/ not have been any calls to dynamic state setting+-- commands for any state not specified as dynamic in the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command, since that pipeline was+-- bound+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used to sample+-- from any 'Graphics.Vulkan.Core10.Handles.Image' with a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' of the type+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY',+-- in any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions with @ImplicitLod@, @Dref@ or @Proj@ in their name, in+-- any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions that includes a LOD bias or any offset values, in any+-- shader stage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a uniform buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a storage buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, any resource accessed by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command /must/ not be a protected+-- resource+--+-- - The current render pass /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>+-- with the 'Graphics.Vulkan.Core10.Handles.RenderPass' member of the+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+-- structure specified when creating the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--+-- - The subpass index of the current render pass /must/ be equal to the+-- @subpass@ member of the+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+-- structure specified when creating the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--+-- - Every input attachment used by the current subpass /must/ be bound+-- to the pipeline via a descriptor set+--+-- - Image subresources used as attachments in the current render pass+-- /must/ not be accessed in any way other than as an attachment by+-- this command.+--+-- - If the draw is recorded in a render pass instance with multiview+-- enabled, the maximum instance index /must/ be less than or equal to+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--+-- - If the bound graphics pipeline was created with+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@+-- set to 'Graphics.Vulkan.Core10.BaseType.TRUE' and the current+-- subpass has a depth\/stencil attachment, then that attachment /must/+-- have been created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+-- bit set+--+-- - @taskCount@ /must/ be less than or equal to+-- 'PhysicalDeviceMeshShaderPropertiesNV'::@maxDrawMeshTasksCount@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdDrawMeshTasksNV :: CommandBuffer -> ("taskCount" ::: Word32) -> ("firstTask" ::: Word32) -> IO ()+cmdDrawMeshTasksNV commandBuffer taskCount firstTask = do+ let vkCmdDrawMeshTasksNV' = mkVkCmdDrawMeshTasksNV (pVkCmdDrawMeshTasksNV (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdDrawMeshTasksNV' (commandBufferHandle (commandBuffer)) (taskCount) (firstTask)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdDrawMeshTasksIndirectNV+ :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()++-- | vkCmdDrawMeshTasksIndirectNV - Issue an indirect mesh tasks draw into a+-- command buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded.+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' is the buffer containing+-- draw parameters.+--+-- - @offset@ is the byte offset into+-- 'Graphics.Vulkan.Core10.Handles.Buffer' where parameters begin.+--+-- - @drawCount@ is the number of draws to execute, and /can/ be zero.+--+-- - @stride@ is the byte stride between successive sets of draw+-- parameters.+--+-- = Description+--+-- 'cmdDrawMeshTasksIndirectNV' behaves similarly to 'cmdDrawMeshTasksNV'+-- except that the parameters are read by the device from a buffer during+-- execution. @drawCount@ draws are executed by the command, with+-- parameters taken from 'Graphics.Vulkan.Core10.Handles.Buffer' starting+-- at @offset@ and increasing by @stride@ bytes for each successive draw.+-- The parameters of each draw are encoded in an array of+-- 'DrawMeshTasksIndirectCommandNV' structures. If @drawCount@ is less than+-- or equal to one, @stride@ is ignored.+--+-- == Valid Usage+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' as a result of+-- this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is accessed using+-- atomic operations as a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering, as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'+-- with a reduction mode of either+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+-- or+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+-- as a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering together with minmax filtering,+-- as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.Image' created with a+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- containing+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+-- sampled as a result of this command /must/ only be sampled using a+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+-- of+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--+-- - For each set /n/ that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a descriptor set /must/ have been bound+-- to /n/ at the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for set /n/, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - For each push constant that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a push constant value /must/ have been+-- set for the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for push constants, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - Descriptors in each bound descriptor set, specified via+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',+-- /must/ be valid if they are statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command+--+-- - A valid pipeline /must/ be bound to the pipeline bind point used by+-- this command+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command requires any dynamic state,+-- that state /must/ have been set for+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and done so after+-- any previously bound pipeline with the corresponding state not+-- specified as dynamic+--+-- - There /must/ not have been any calls to dynamic state setting+-- commands for any state not specified as dynamic in the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command, since that pipeline was+-- bound+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used to sample+-- from any 'Graphics.Vulkan.Core10.Handles.Image' with a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' of the type+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY',+-- in any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions with @ImplicitLod@, @Dref@ or @Proj@ in their name, in+-- any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions that includes a LOD bias or any offset values, in any+-- shader stage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a uniform buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a storage buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, any resource accessed by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command /must/ not be a protected+-- resource+--+-- - The current render pass /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>+-- with the 'Graphics.Vulkan.Core10.Handles.RenderPass' member of the+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+-- structure specified when creating the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--+-- - The subpass index of the current render pass /must/ be equal to the+-- @subpass@ member of the+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+-- structure specified when creating the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--+-- - Every input attachment used by the current subpass /must/ be bound+-- to the pipeline via a descriptor set+--+-- - Image subresources used as attachments in the current render pass+-- /must/ not be accessed in any way other than as an attachment by+-- this command.+--+-- - If the draw is recorded in a render pass instance with multiview+-- enabled, the maximum instance index /must/ be less than or equal to+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--+-- - If the bound graphics pipeline was created with+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@+-- set to 'Graphics.Vulkan.Core10.BaseType.TRUE' and the current+-- subpass has a depth\/stencil attachment, then that attachment /must/+-- have been created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+-- bit set+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is non-sparse then it+-- /must/ be bound completely and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ have been created+-- with the+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+-- bit set+--+-- - @offset@ /must/ be a multiple of @4@+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ not be a+-- protected command buffer+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirect multi-draw indirect>+-- feature is not enabled, @drawCount@ /must/ be @0@ or @1@+--+-- - @drawCount@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@+--+-- - If @drawCount@ is greater than @1@, @stride@ /must/ be a multiple of+-- @4@ and /must/ be greater than or equal to+-- @sizeof@('DrawMeshTasksIndirectCommandNV')+--+-- - If @drawCount@ is equal to @1@, (@offset@ ++-- @sizeof@('DrawMeshTasksIndirectCommandNV')) /must/ be less than or+-- equal to the size of 'Graphics.Vulkan.Core10.Handles.Buffer'+--+-- - If @drawCount@ is greater than @1@, (@stride@ × (@drawCount@ - 1) ++-- @offset@ + @sizeof@('DrawMeshTasksIndirectCommandNV')) /must/ be+-- less than or equal to the size of+-- 'Graphics.Vulkan.Core10.Handles.Buffer'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.Buffer', and+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ have been+-- created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+cmdDrawMeshTasksIndirectNV :: CommandBuffer -> Buffer -> ("offset" ::: DeviceSize) -> ("drawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()+cmdDrawMeshTasksIndirectNV commandBuffer buffer offset drawCount stride = do+ let vkCmdDrawMeshTasksIndirectNV' = mkVkCmdDrawMeshTasksIndirectNV (pVkCmdDrawMeshTasksIndirectNV (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdDrawMeshTasksIndirectNV' (commandBufferHandle (commandBuffer)) (buffer) (offset) (drawCount) (stride)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdDrawMeshTasksIndirectCountNV+ :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()++-- | vkCmdDrawMeshTasksIndirectCountNV - Perform an indirect mesh tasks draw+-- with the draw count sourced from a buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command is recorded.+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' is the buffer containing+-- draw parameters.+--+-- - @offset@ is the byte offset into+-- 'Graphics.Vulkan.Core10.Handles.Buffer' where parameters begin.+--+-- - @countBuffer@ is the buffer containing the draw count.+--+-- - @countBufferOffset@ is the byte offset into @countBuffer@ where the+-- draw count begins.+--+-- - @maxDrawCount@ specifies the maximum number of draws that will be+-- executed. The actual number of executed draw calls is the minimum of+-- the count specified in @countBuffer@ and @maxDrawCount@.+--+-- - @stride@ is the byte stride between successive sets of draw+-- parameters.+--+-- = Description+--+-- 'cmdDrawMeshTasksIndirectCountNV' behaves similarly to+-- 'cmdDrawMeshTasksIndirectNV' except that the draw count is read by the+-- device from a buffer during execution. The command will read an unsigned+-- 32-bit integer from @countBuffer@ located at @countBufferOffset@ and use+-- this as the draw count.+--+-- == Valid Usage+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' as a result of+-- this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is accessed using+-- atomic operations as a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering, as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'+-- with a reduction mode of either+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+-- or+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+-- as a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering together with minmax filtering,+-- as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.Image' created with a+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- containing+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+-- sampled as a result of this command /must/ only be sampled using a+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+-- of+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--+-- - For each set /n/ that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a descriptor set /must/ have been bound+-- to /n/ at the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for set /n/, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - For each push constant that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a push constant value /must/ have been+-- set for the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for push constants, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - Descriptors in each bound descriptor set, specified via+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',+-- /must/ be valid if they are statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command+--+-- - A valid pipeline /must/ be bound to the pipeline bind point used by+-- this command+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command requires any dynamic state,+-- that state /must/ have been set for+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and done so after+-- any previously bound pipeline with the corresponding state not+-- specified as dynamic+--+-- - There /must/ not have been any calls to dynamic state setting+-- commands for any state not specified as dynamic in the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command, since that pipeline was+-- bound+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used to sample+-- from any 'Graphics.Vulkan.Core10.Handles.Image' with a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' of the type+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY',+-- in any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions with @ImplicitLod@, @Dref@ or @Proj@ in their name, in+-- any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions that includes a LOD bias or any offset values, in any+-- shader stage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a uniform buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a storage buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, any resource accessed by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command /must/ not be a protected+-- resource+--+-- - The current render pass /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>+-- with the 'Graphics.Vulkan.Core10.Handles.RenderPass' member of the+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+-- structure specified when creating the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--+-- - The subpass index of the current render pass /must/ be equal to the+-- @subpass@ member of the+-- 'Graphics.Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'+-- structure specified when creating the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to+-- 'Graphics.Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'.+--+-- - Every input attachment used by the current subpass /must/ be bound+-- to the pipeline via a descriptor set+--+-- - Image subresources used as attachments in the current render pass+-- /must/ not be accessed in any way other than as an attachment by+-- this command.+--+-- - If the draw is recorded in a render pass instance with multiview+-- enabled, the maximum instance index /must/ be less than or equal to+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@.+--+-- - If the bound graphics pipeline was created with+-- 'Graphics.Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@+-- set to 'Graphics.Vulkan.Core10.BaseType.TRUE' and the current+-- subpass has a depth\/stencil attachment, then that attachment /must/+-- have been created with the+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'+-- bit set+--+-- - If 'Graphics.Vulkan.Core10.Handles.Buffer' is non-sparse then it+-- /must/ be bound completely and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ have been created+-- with the+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+-- bit set+--+-- - @offset@ /must/ be a multiple of @4@+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ not be a+-- protected command buffer+--+-- - If @countBuffer@ is non-sparse then it /must/ be bound completely+-- and contiguously to a single+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+--+-- - @countBuffer@ /must/ have been created with the+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'+-- bit set+--+-- - @countBufferOffset@ /must/ be a multiple of @4@+--+-- - The count stored in @countBuffer@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@+--+-- - @stride@ /must/ be a multiple of @4@ and /must/ be greater than or+-- equal to @sizeof@('DrawMeshTasksIndirectCommandNV')+--+-- - If @maxDrawCount@ is greater than or equal to @1@, (@stride@ ×+-- (@maxDrawCount@ - 1) + @offset@ ++-- @sizeof@('DrawMeshTasksIndirectCommandNV')) /must/ be less than or+-- equal to the size of 'Graphics.Vulkan.Core10.Handles.Buffer'+--+-- - If the count stored in @countBuffer@ is equal to @1@, (@offset@ ++-- @sizeof@('DrawMeshTasksIndirectCommandNV')) /must/ be less than or+-- equal to the size of 'Graphics.Vulkan.Core10.Handles.Buffer'+--+-- - If the count stored in @countBuffer@ is greater than @1@, (@stride@+-- × (@drawCount@ - 1) + @offset@ ++-- @sizeof@('DrawMeshTasksIndirectCommandNV')) /must/ be less than or+-- equal to the size of 'Graphics.Vulkan.Core10.Handles.Buffer'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.Buffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - @countBuffer@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - This command /must/ only be called inside of a render pass instance+--+-- - Each of 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and @countBuffer@+-- /must/ have been created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Inside | Graphics | Graphics |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+cmdDrawMeshTasksIndirectCountNV :: CommandBuffer -> Buffer -> ("offset" ::: DeviceSize) -> ("countBuffer" ::: Buffer) -> ("countBufferOffset" ::: DeviceSize) -> ("maxDrawCount" ::: Word32) -> ("stride" ::: Word32) -> IO ()+cmdDrawMeshTasksIndirectCountNV commandBuffer buffer offset countBuffer countBufferOffset maxDrawCount stride = do+ let vkCmdDrawMeshTasksIndirectCountNV' = mkVkCmdDrawMeshTasksIndirectCountNV (pVkCmdDrawMeshTasksIndirectCountNV (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdDrawMeshTasksIndirectCountNV' (commandBufferHandle (commandBuffer)) (buffer) (offset) (countBuffer) (countBufferOffset) (maxDrawCount) (stride)+ pure $ ()+++-- | VkPhysicalDeviceMeshShaderFeaturesNV - Structure describing mesh shading+-- features that can be supported by an implementation+--+-- = Description+--+-- If the 'PhysicalDeviceMeshShaderFeaturesNV' structure is included in the+-- @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with a value indicating whether the feature is supported.+-- 'PhysicalDeviceMeshShaderFeaturesNV' /can/ also be included in @pNext@+-- chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to enable the+-- features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceMeshShaderFeaturesNV = PhysicalDeviceMeshShaderFeaturesNV+ { -- | @taskShader@ indicates whether the task shader stage is supported.+ taskShader :: Bool+ , -- | @meshShader@ indicates whether the mesh shader stage is supported.+ meshShader :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceMeshShaderFeaturesNV++instance ToCStruct PhysicalDeviceMeshShaderFeaturesNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceMeshShaderFeaturesNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (taskShader))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (meshShader))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceMeshShaderFeaturesNV where+ peekCStruct p = do+ taskShader <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ meshShader <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ pure $ PhysicalDeviceMeshShaderFeaturesNV+ (bool32ToBool taskShader) (bool32ToBool meshShader)++instance Storable PhysicalDeviceMeshShaderFeaturesNV where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceMeshShaderFeaturesNV where+ zero = PhysicalDeviceMeshShaderFeaturesNV+ zero+ zero+++-- | VkPhysicalDeviceMeshShaderPropertiesNV - Structure describing mesh+-- shading properties+--+-- = Members+--+-- The members of the 'PhysicalDeviceMeshShaderPropertiesNV' structure+-- describe the following implementation-dependent limits:+--+-- = Description+--+-- If the 'PhysicalDeviceMeshShaderPropertiesNV' structure is included in+-- the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceMeshShaderPropertiesNV = PhysicalDeviceMeshShaderPropertiesNV+ { -- | @maxDrawMeshTasksCount@ is the maximum number of local workgroups that+ -- /can/ be launched by a single draw mesh tasks command. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-mesh-shading>.+ maxDrawMeshTasksCount :: Word32+ , -- | @maxTaskWorkGroupInvocations@ is the maximum total number of task shader+ -- invocations in a single local workgroup. The product of the X, Y, and Z+ -- sizes, as specified by the @LocalSize@ execution mode in shader modules+ -- or by the object decorated by the @WorkgroupSize@ decoration, /must/ be+ -- less than or equal to this limit.+ maxTaskWorkGroupInvocations :: Word32+ , -- | @maxTaskWorkGroupSize@[3] is the maximum size of a local task workgroup.+ -- These three values represent the maximum local workgroup size in the X,+ -- Y, and Z dimensions, respectively. The @x@, @y@, and @z@ sizes, as+ -- specified by the @LocalSize@ execution mode or by the object decorated+ -- by the @WorkgroupSize@ decoration in shader modules, /must/ be less than+ -- or equal to the corresponding limit.+ maxTaskWorkGroupSize :: (Word32, Word32, Word32)+ , -- | @maxTaskTotalMemorySize@ is the maximum number of bytes that the task+ -- shader can use in total for shared and output memory combined.+ maxTaskTotalMemorySize :: Word32+ , -- | @maxTaskOutputCount@ is the maximum number of output tasks a single task+ -- shader workgroup can emit.+ maxTaskOutputCount :: Word32+ , -- | @maxMeshWorkGroupInvocations@ is the maximum total number of mesh shader+ -- invocations in a single local workgroup. The product of the X, Y, and Z+ -- sizes, as specified by the @LocalSize@ execution mode in shader modules+ -- or by the object decorated by the @WorkgroupSize@ decoration, /must/ be+ -- less than or equal to this limit.+ maxMeshWorkGroupInvocations :: Word32+ , -- | @maxMeshWorkGroupSize@[3] is the maximum size of a local mesh workgroup.+ -- These three values represent the maximum local workgroup size in the X,+ -- Y, and Z dimensions, respectively. The @x@, @y@, and @z@ sizes, as+ -- specified by the @LocalSize@ execution mode or by the object decorated+ -- by the @WorkgroupSize@ decoration in shader modules, /must/ be less than+ -- or equal to the corresponding limit.+ maxMeshWorkGroupSize :: (Word32, Word32, Word32)+ , -- | @maxMeshTotalMemorySize@ is the maximum number of bytes that the mesh+ -- shader can use in total for shared and output memory combined.+ maxMeshTotalMemorySize :: Word32+ , -- | @maxMeshOutputVertices@ is the maximum number of vertices a mesh shader+ -- output can store.+ maxMeshOutputVertices :: Word32+ , -- | @maxMeshOutputPrimitives@ is the maximum number of primitives a mesh+ -- shader output can store.+ maxMeshOutputPrimitives :: Word32+ , -- | @maxMeshMultiviewViewCount@ is the maximum number of multi-view views a+ -- mesh shader can use.+ maxMeshMultiviewViewCount :: Word32+ , -- | @meshOutputPerVertexGranularity@ is the granularity with which mesh+ -- vertex outputs are allocated. The value can be used to compute the+ -- memory size used by the mesh shader, which must be less than or equal to+ -- @maxMeshTotalMemorySize@.+ meshOutputPerVertexGranularity :: Word32+ , -- | @meshOutputPerPrimitiveGranularity@ is the granularity with which mesh+ -- outputs qualified as per-primitive are allocated. The value can be used+ -- to compute the memory size used by the mesh shader, which must be less+ -- than or equal to @maxMeshTotalMemorySize@.+ meshOutputPerPrimitiveGranularity :: Word32+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceMeshShaderPropertiesNV++instance ToCStruct PhysicalDeviceMeshShaderPropertiesNV where+ withCStruct x f = allocaBytesAligned 88 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceMeshShaderPropertiesNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (maxDrawMeshTasksCount)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (maxTaskWorkGroupInvocations)+ let pMaxTaskWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 24 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+ case (maxTaskWorkGroupSize) of+ (e0, e1, e2) -> do+ poke (pMaxTaskWorkGroupSize' :: Ptr Word32) (e0)+ poke (pMaxTaskWorkGroupSize' `plusPtr` 4 :: Ptr Word32) (e1)+ poke (pMaxTaskWorkGroupSize' `plusPtr` 8 :: Ptr Word32) (e2)+ poke ((p `plusPtr` 36 :: Ptr Word32)) (maxTaskTotalMemorySize)+ poke ((p `plusPtr` 40 :: Ptr Word32)) (maxTaskOutputCount)+ poke ((p `plusPtr` 44 :: Ptr Word32)) (maxMeshWorkGroupInvocations)+ let pMaxMeshWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 48 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+ case (maxMeshWorkGroupSize) of+ (e0, e1, e2) -> do+ poke (pMaxMeshWorkGroupSize' :: Ptr Word32) (e0)+ poke (pMaxMeshWorkGroupSize' `plusPtr` 4 :: Ptr Word32) (e1)+ poke (pMaxMeshWorkGroupSize' `plusPtr` 8 :: Ptr Word32) (e2)+ poke ((p `plusPtr` 60 :: Ptr Word32)) (maxMeshTotalMemorySize)+ poke ((p `plusPtr` 64 :: Ptr Word32)) (maxMeshOutputVertices)+ poke ((p `plusPtr` 68 :: Ptr Word32)) (maxMeshOutputPrimitives)+ poke ((p `plusPtr` 72 :: Ptr Word32)) (maxMeshMultiviewViewCount)+ poke ((p `plusPtr` 76 :: Ptr Word32)) (meshOutputPerVertexGranularity)+ poke ((p `plusPtr` 80 :: Ptr Word32)) (meshOutputPerPrimitiveGranularity)+ f+ cStructSize = 88+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ let pMaxTaskWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 24 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+ case ((zero, zero, zero)) of+ (e0, e1, e2) -> do+ poke (pMaxTaskWorkGroupSize' :: Ptr Word32) (e0)+ poke (pMaxTaskWorkGroupSize' `plusPtr` 4 :: Ptr Word32) (e1)+ poke (pMaxTaskWorkGroupSize' `plusPtr` 8 :: Ptr Word32) (e2)+ poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)+ let pMaxMeshWorkGroupSize' = lowerArrayPtr ((p `plusPtr` 48 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+ case ((zero, zero, zero)) of+ (e0, e1, e2) -> do+ poke (pMaxMeshWorkGroupSize' :: Ptr Word32) (e0)+ poke (pMaxMeshWorkGroupSize' `plusPtr` 4 :: Ptr Word32) (e1)+ poke (pMaxMeshWorkGroupSize' `plusPtr` 8 :: Ptr Word32) (e2)+ poke ((p `plusPtr` 60 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 64 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 68 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 72 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 76 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 80 :: Ptr Word32)) (zero)+ f++instance FromCStruct PhysicalDeviceMeshShaderPropertiesNV where+ peekCStruct p = do+ maxDrawMeshTasksCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ maxTaskWorkGroupInvocations <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ let pmaxTaskWorkGroupSize = lowerArrayPtr @Word32 ((p `plusPtr` 24 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+ maxTaskWorkGroupSize0 <- peek @Word32 ((pmaxTaskWorkGroupSize `advancePtrBytes` 0 :: Ptr Word32))+ maxTaskWorkGroupSize1 <- peek @Word32 ((pmaxTaskWorkGroupSize `advancePtrBytes` 4 :: Ptr Word32))+ maxTaskWorkGroupSize2 <- peek @Word32 ((pmaxTaskWorkGroupSize `advancePtrBytes` 8 :: Ptr Word32))+ maxTaskTotalMemorySize <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))+ maxTaskOutputCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))+ maxMeshWorkGroupInvocations <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))+ let pmaxMeshWorkGroupSize = lowerArrayPtr @Word32 ((p `plusPtr` 48 :: Ptr (Data.Vector.Storable.Sized.Vector 3 Word32)))+ maxMeshWorkGroupSize0 <- peek @Word32 ((pmaxMeshWorkGroupSize `advancePtrBytes` 0 :: Ptr Word32))+ maxMeshWorkGroupSize1 <- peek @Word32 ((pmaxMeshWorkGroupSize `advancePtrBytes` 4 :: Ptr Word32))+ maxMeshWorkGroupSize2 <- peek @Word32 ((pmaxMeshWorkGroupSize `advancePtrBytes` 8 :: Ptr Word32))+ maxMeshTotalMemorySize <- peek @Word32 ((p `plusPtr` 60 :: Ptr Word32))+ maxMeshOutputVertices <- peek @Word32 ((p `plusPtr` 64 :: Ptr Word32))+ maxMeshOutputPrimitives <- peek @Word32 ((p `plusPtr` 68 :: Ptr Word32))+ maxMeshMultiviewViewCount <- peek @Word32 ((p `plusPtr` 72 :: Ptr Word32))+ meshOutputPerVertexGranularity <- peek @Word32 ((p `plusPtr` 76 :: Ptr Word32))+ meshOutputPerPrimitiveGranularity <- peek @Word32 ((p `plusPtr` 80 :: Ptr Word32))+ pure $ PhysicalDeviceMeshShaderPropertiesNV+ maxDrawMeshTasksCount maxTaskWorkGroupInvocations ((maxTaskWorkGroupSize0, maxTaskWorkGroupSize1, maxTaskWorkGroupSize2)) maxTaskTotalMemorySize maxTaskOutputCount maxMeshWorkGroupInvocations ((maxMeshWorkGroupSize0, maxMeshWorkGroupSize1, maxMeshWorkGroupSize2)) maxMeshTotalMemorySize maxMeshOutputVertices maxMeshOutputPrimitives maxMeshMultiviewViewCount meshOutputPerVertexGranularity meshOutputPerPrimitiveGranularity++instance Storable PhysicalDeviceMeshShaderPropertiesNV where+ sizeOf ~_ = 88+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceMeshShaderPropertiesNV where+ zero = PhysicalDeviceMeshShaderPropertiesNV+ zero+ zero+ (zero, zero, zero)+ zero+ zero+ zero+ (zero, zero, zero)+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkDrawMeshTasksIndirectCommandNV - Structure specifying a mesh tasks+-- draw indirect command+--+-- = Description+--+-- The members of 'DrawMeshTasksIndirectCommandNV' have the same meaning as+-- the similarly named parameters of 'cmdDrawMeshTasksNV'.+--+-- == Valid Usage+--+-- = See Also+--+-- 'cmdDrawMeshTasksIndirectNV'+data DrawMeshTasksIndirectCommandNV = DrawMeshTasksIndirectCommandNV+ { -- | @taskCount@ /must/ be less than or equal to+ -- 'PhysicalDeviceMeshShaderPropertiesNV'::@maxDrawMeshTasksCount@+ taskCount :: Word32+ , -- | @firstTask@ is the X component of the first workgroup ID.+ firstTask :: Word32+ }+ deriving (Typeable)+deriving instance Show DrawMeshTasksIndirectCommandNV++instance ToCStruct DrawMeshTasksIndirectCommandNV where+ withCStruct x f = allocaBytesAligned 8 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p DrawMeshTasksIndirectCommandNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (taskCount)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (firstTask)+ f+ cStructSize = 8+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ f++instance FromCStruct DrawMeshTasksIndirectCommandNV where+ peekCStruct p = do+ taskCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ firstTask <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ pure $ DrawMeshTasksIndirectCommandNV+ taskCount firstTask++instance Storable DrawMeshTasksIndirectCommandNV where+ sizeOf ~_ = 8+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero DrawMeshTasksIndirectCommandNV where+ zero = DrawMeshTasksIndirectCommandNV+ zero+ zero+++type NV_MESH_SHADER_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NV_MESH_SHADER_SPEC_VERSION"+pattern NV_MESH_SHADER_SPEC_VERSION :: forall a . Integral a => a+pattern NV_MESH_SHADER_SPEC_VERSION = 1+++type NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader"++-- No documentation found for TopLevel "VK_NV_MESH_SHADER_EXTENSION_NAME"+pattern NV_MESH_SHADER_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader"+
+ src/Graphics/Vulkan/Extensions/VK_NV_mesh_shader.hs-boot view
@@ -0,0 +1,32 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_mesh_shader ( DrawMeshTasksIndirectCommandNV+ , PhysicalDeviceMeshShaderFeaturesNV+ , PhysicalDeviceMeshShaderPropertiesNV+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data DrawMeshTasksIndirectCommandNV++instance ToCStruct DrawMeshTasksIndirectCommandNV+instance Show DrawMeshTasksIndirectCommandNV++instance FromCStruct DrawMeshTasksIndirectCommandNV+++data PhysicalDeviceMeshShaderFeaturesNV++instance ToCStruct PhysicalDeviceMeshShaderFeaturesNV+instance Show PhysicalDeviceMeshShaderFeaturesNV++instance FromCStruct PhysicalDeviceMeshShaderFeaturesNV+++data PhysicalDeviceMeshShaderPropertiesNV++instance ToCStruct PhysicalDeviceMeshShaderPropertiesNV+instance Show PhysicalDeviceMeshShaderPropertiesNV++instance FromCStruct PhysicalDeviceMeshShaderPropertiesNV+
+ src/Graphics/Vulkan/Extensions/VK_NV_ray_tracing.hs view
@@ -0,0 +1,3066 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_ray_tracing ( compileDeferredNV+ , createAccelerationStructureNV+ , withAccelerationStructureNV+ , destroyAccelerationStructureNV+ , getAccelerationStructureMemoryRequirementsNV+ , bindAccelerationStructureMemoryNV+ , cmdCopyAccelerationStructureNV+ , cmdWriteAccelerationStructuresPropertiesNV+ , cmdBuildAccelerationStructureNV+ , cmdTraceRaysNV+ , getRayTracingShaderGroupHandlesNV+ , getAccelerationStructureHandleNV+ , createRayTracingPipelinesNV+ , RayTracingShaderGroupCreateInfoNV(..)+ , RayTracingPipelineCreateInfoNV(..)+ , GeometryTrianglesNV(..)+ , GeometryAABBNV(..)+ , GeometryDataNV(..)+ , GeometryNV(..)+ , AccelerationStructureInfoNV(..)+ , AccelerationStructureCreateInfoNV(..)+ , BindAccelerationStructureMemoryInfoNV(..)+ , WriteDescriptorSetAccelerationStructureNV(..)+ , AccelerationStructureMemoryRequirementsInfoNV(..)+ , PhysicalDeviceRayTracingPropertiesNV(..)+ , GeometryInstanceFlagBitsNV( GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV+ , GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV+ , GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV+ , GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV+ , ..+ )+ , GeometryInstanceFlagsNV+ , GeometryFlagBitsNV( GEOMETRY_OPAQUE_BIT_NV+ , GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV+ , ..+ )+ , GeometryFlagsNV+ , BuildAccelerationStructureFlagBitsNV( BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV+ , BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV+ , BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV+ , BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV+ , BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV+ , ..+ )+ , BuildAccelerationStructureFlagsNV+ , CopyAccelerationStructureModeNV( COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV+ , COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV+ , ..+ )+ , AccelerationStructureTypeNV( ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV+ , ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV+ , ..+ )+ , GeometryTypeNV( GEOMETRY_TYPE_TRIANGLES_NV+ , GEOMETRY_TYPE_AABBS_NV+ , ..+ )+ , AccelerationStructureMemoryRequirementsTypeNV( ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV+ , ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV+ , ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV+ , ..+ )+ , RayTracingShaderGroupTypeNV( RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV+ , RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV+ , RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV+ , ..+ )+ , NV_RAY_TRACING_SPEC_VERSION+ , pattern NV_RAY_TRACING_SPEC_VERSION+ , NV_RAY_TRACING_EXTENSION_NAME+ , pattern NV_RAY_TRACING_EXTENSION_NAME+ , AccelerationStructureNV(..)+ , DebugReportObjectTypeEXT(..)+ , SHADER_UNUSED_NV+ , pattern SHADER_UNUSED_NV+ ) where++import Control.Exception.Base (bracket)+import Data.Typeable (eqT)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Alloc (callocBytes)+import Foreign.Marshal.Alloc (free)+import GHC.Base (when)+import GHC.IO (throwIO)+import GHC.Ptr (castPtr)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Bits (Bits)+import Data.String (IsString)+import Data.Type.Equality ((:~:)(Refl))+import Data.Typeable (Typeable)+import Foreign.C.Types (CSize)+import Foreign.C.Types (CSize(..))+import Foreign.C.Types (CSize(CSize))+import Foreign.Storable (Storable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import qualified Foreign.Storable (Storable(..))+import Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Data.Word (Word64)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.CStruct.Extends (forgetExtensions)+import Graphics.Vulkan.CStruct.Extends (peekSomeCStruct)+import Graphics.Vulkan.CStruct.Extends (pokeSomeCStruct)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Extensions.Handles (AccelerationStructureNV)+import Graphics.Vulkan.Extensions.Handles (AccelerationStructureNV(..))+import Graphics.Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.BaseType (Bool32(..))+import Graphics.Vulkan.Core10.Handles (Buffer)+import Graphics.Vulkan.Core10.Handles (Buffer(..))+import Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Core10.Handles (Device)+import Graphics.Vulkan.Core10.Handles (Device(..))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkBindAccelerationStructureMemoryNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdBuildAccelerationStructureNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdCopyAccelerationStructureNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdTraceRaysNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdWriteAccelerationStructuresPropertiesNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCompileDeferredNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateAccelerationStructureNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCreateRayTracingPipelinesNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkDestroyAccelerationStructureNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureHandleNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetAccelerationStructureMemoryRequirementsNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkGetRayTracingShaderGroupHandlesNV))+import Graphics.Vulkan.Core10.Handles (DeviceMemory)+import Graphics.Vulkan.Core10.BaseType (DeviceSize)+import Graphics.Vulkan.Core10.Handles (Device_T)+import Graphics.Vulkan.CStruct.Extends (Extends)+import Graphics.Vulkan.CStruct.Extends (Extensible(..))+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.Core10.Enums.Format (Format)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.IndexType (IndexType)+import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2KHR)+import Graphics.Vulkan.CStruct.Extends (PeekChain)+import Graphics.Vulkan.CStruct.Extends (PeekChain(..))+import Graphics.Vulkan.Core10.Handles (Pipeline)+import Graphics.Vulkan.Core10.Handles (Pipeline(..))+import Graphics.Vulkan.Core10.Handles (PipelineCache)+import Graphics.Vulkan.Core10.Handles (PipelineCache(..))+import Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)+import {-# SOURCE #-} Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfoEXT)+import Graphics.Vulkan.Core10.Handles (PipelineLayout)+import Graphics.Vulkan.Core10.Pipeline (PipelineShaderStageCreateInfo)+import Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct.Extends (PokeChain(..))+import Graphics.Vulkan.Core10.Handles (QueryPool)+import Graphics.Vulkan.Core10.Handles (QueryPool(..))+import Graphics.Vulkan.Core10.Enums.QueryType (QueryType)+import Graphics.Vulkan.Core10.Enums.QueryType (QueryType(..))+import Graphics.Vulkan.Core10.Enums.Result (Result)+import Graphics.Vulkan.Core10.Enums.Result (Result(..))+import Graphics.Vulkan.CStruct.Extends (SomeStruct)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Exception (VulkanException(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_AABB_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV))+import Graphics.Vulkan.Core10.Enums.Result (Result(SUCCESS))+import Graphics.Vulkan.Extensions.Handles (AccelerationStructureNV(..))+import Graphics.Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(..))+import Graphics.Vulkan.Core10.APIConstants (SHADER_UNUSED_NV)+import Graphics.Vulkan.Core10.APIConstants (pattern SHADER_UNUSED_NV)+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCompileDeferredNV+ :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> IO Result) -> Ptr Device_T -> Pipeline -> Word32 -> IO Result++-- | vkCompileDeferredNV - Deferred compilation of shaders+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device+-- containing the ray tracing pipeline.+--+-- - 'Graphics.Vulkan.Core10.Handles.Pipeline' is the ray tracing+-- pipeline object containing the shaders.+--+-- - @shader@ is the index of the shader to compile.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Pipeline'+compileDeferredNV :: Device -> Pipeline -> ("shader" ::: Word32) -> IO ()+compileDeferredNV device pipeline shader = do+ let vkCompileDeferredNV' = mkVkCompileDeferredNV (pVkCompileDeferredNV (deviceCmds (device :: Device)))+ r <- vkCompileDeferredNV' (deviceHandle (device)) (pipeline) (shader)+ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateAccelerationStructureNV+ :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureCreateInfoNV -> Ptr AllocationCallbacks -> Ptr AccelerationStructureNV -> IO Result) -> Ptr Device_T -> Ptr AccelerationStructureCreateInfoNV -> Ptr AllocationCallbacks -> Ptr AccelerationStructureNV -> IO Result++-- | vkCreateAccelerationStructureNV - Create a new acceleration structure+-- object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the buffer object.+--+-- - @pCreateInfo@ is a pointer to a 'AccelerationStructureCreateInfoNV'+-- structure containing parameters affecting creation of the+-- acceleration structure.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pAccelerationStructure@ is a pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handle+-- in which the resulting acceleration structure object is returned.+--+-- = Description+--+-- Similar to other objects in Vulkan, the acceleration structure creation+-- merely creates an object with a specific “shape” as specified by the+-- information in 'AccelerationStructureInfoNV' and @compactedSize@ in+-- @pCreateInfo@. Populating the data in the object after allocating and+-- binding memory is done with 'cmdBuildAccelerationStructureNV' and+-- 'cmdCopyAccelerationStructureNV'.+--+-- Acceleration structure creation uses the count and type information from+-- the geometries, but does not use the data references in the structures.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @pCreateInfo@ /must/ be a valid pointer to a valid+-- 'AccelerationStructureCreateInfoNV' structure+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pAccelerationStructure@ /must/ be a valid pointer to a+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handle+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- = See Also+--+-- 'AccelerationStructureCreateInfoNV',+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV',+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device'+createAccelerationStructureNV :: Device -> AccelerationStructureCreateInfoNV -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (AccelerationStructureNV)+createAccelerationStructureNV device createInfo allocator = evalContT $ do+ let vkCreateAccelerationStructureNV' = mkVkCreateAccelerationStructureNV (pVkCreateAccelerationStructureNV (deviceCmds (device :: Device)))+ pCreateInfo <- ContT $ withCStruct (createInfo)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPAccelerationStructure <- ContT $ bracket (callocBytes @AccelerationStructureNV 8) free+ r <- lift $ vkCreateAccelerationStructureNV' (deviceHandle (device)) pCreateInfo pAllocator (pPAccelerationStructure)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pAccelerationStructure <- lift $ peek @AccelerationStructureNV pPAccelerationStructure+ pure $ (pAccelerationStructure)++-- | A safe wrapper for 'createAccelerationStructureNV' and+-- 'destroyAccelerationStructureNV' using 'bracket'+--+-- The allocated value must not be returned from the provided computation+withAccelerationStructureNV :: Device -> AccelerationStructureCreateInfoNV -> Maybe AllocationCallbacks -> (AccelerationStructureNV -> IO r) -> IO r+withAccelerationStructureNV device accelerationStructureCreateInfoNV allocationCallbacks =+ bracket+ (createAccelerationStructureNV device accelerationStructureCreateInfoNV allocationCallbacks)+ (\o -> destroyAccelerationStructureNV device o allocationCallbacks)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkDestroyAccelerationStructureNV+ :: FunPtr (Ptr Device_T -> AccelerationStructureNV -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> AccelerationStructureNV -> Ptr AllocationCallbacks -> IO ()++-- | vkDestroyAccelerationStructureNV - Destroy an acceleration structure+-- object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- destroys the buffer.+--+-- - @accelerationStructure@ is the acceleration structure to destroy.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- == Valid Usage+--+-- - All submitted commands that refer to @accelerationStructure@ /must/+-- have completed execution+--+-- - If 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when @accelerationStructure@ was created, a compatible+-- set of callbacks /must/ be provided here+--+-- - If no+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- were provided when @accelerationStructure@ was created, @pAllocator@+-- /must/ be @NULL@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - @accelerationStructure@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handle+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @accelerationStructure@ /must/ have been created, allocated, or+-- retrieved from 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV',+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device'+destroyAccelerationStructureNV :: Device -> AccelerationStructureNV -> ("allocator" ::: Maybe AllocationCallbacks) -> IO ()+destroyAccelerationStructureNV device accelerationStructure allocator = evalContT $ do+ let vkDestroyAccelerationStructureNV' = mkVkDestroyAccelerationStructureNV (pVkDestroyAccelerationStructureNV (deviceCmds (device :: Device)))+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ lift $ vkDestroyAccelerationStructureNV' (deviceHandle (device)) (accelerationStructure) pAllocator+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetAccelerationStructureMemoryRequirementsNV+ :: FunPtr (Ptr Device_T -> Ptr AccelerationStructureMemoryRequirementsInfoNV -> Ptr (MemoryRequirements2KHR a) -> IO ()) -> Ptr Device_T -> Ptr AccelerationStructureMemoryRequirementsInfoNV -> Ptr (MemoryRequirements2KHR a) -> IO ()++-- | vkGetAccelerationStructureMemoryRequirementsNV - Get acceleration+-- structure memory requirements+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device on+-- which the acceleration structure was created.+--+-- - @pInfo@ specifies the acceleration structure to get memory+-- requirements for.+--+-- - @pMemoryRequirements@ returns the requested acceleration structure+-- memory requirements.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'AccelerationStructureMemoryRequirementsInfoNV',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2KHR'+getAccelerationStructureMemoryRequirementsNV :: (PokeChain a, PeekChain a) => Device -> AccelerationStructureMemoryRequirementsInfoNV -> IO (MemoryRequirements2KHR a)+getAccelerationStructureMemoryRequirementsNV device info = evalContT $ do+ let vkGetAccelerationStructureMemoryRequirementsNV' = mkVkGetAccelerationStructureMemoryRequirementsNV (pVkGetAccelerationStructureMemoryRequirementsNV (deviceCmds (device :: Device)))+ pInfo <- ContT $ withCStruct (info)+ pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2KHR _))+ lift $ vkGetAccelerationStructureMemoryRequirementsNV' (deviceHandle (device)) pInfo (pPMemoryRequirements)+ pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2KHR _) pPMemoryRequirements+ pure $ (pMemoryRequirements)+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkBindAccelerationStructureMemoryNV+ :: FunPtr (Ptr Device_T -> Word32 -> Ptr BindAccelerationStructureMemoryInfoNV -> IO Result) -> Ptr Device_T -> Word32 -> Ptr BindAccelerationStructureMemoryInfoNV -> IO Result++-- | vkBindAccelerationStructureMemoryNV - Bind acceleration structure memory+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the acceleration structures and memory.+--+-- - @bindInfoCount@ is the number of elements in @pBindInfos@.+--+-- - @pBindInfos@ is a pointer to an array of+-- 'BindAccelerationStructureMemoryInfoNV' structures describing images+-- and memory to bind.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'BindAccelerationStructureMemoryInfoNV',+-- 'Graphics.Vulkan.Core10.Handles.Device'+bindAccelerationStructureMemoryNV :: Device -> ("bindInfos" ::: Vector BindAccelerationStructureMemoryInfoNV) -> IO ()+bindAccelerationStructureMemoryNV device bindInfos = evalContT $ do+ let vkBindAccelerationStructureMemoryNV' = mkVkBindAccelerationStructureMemoryNV (pVkBindAccelerationStructureMemoryNV (deviceCmds (device :: Device)))+ pPBindInfos <- ContT $ allocaBytesAligned @BindAccelerationStructureMemoryInfoNV ((Data.Vector.length (bindInfos)) * 56) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPBindInfos `plusPtr` (56 * (i)) :: Ptr BindAccelerationStructureMemoryInfoNV) (e) . ($ ())) (bindInfos)+ r <- lift $ vkBindAccelerationStructureMemoryNV' (deviceHandle (device)) ((fromIntegral (Data.Vector.length $ (bindInfos)) :: Word32)) (pPBindInfos)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdCopyAccelerationStructureNV+ :: FunPtr (Ptr CommandBuffer_T -> AccelerationStructureNV -> AccelerationStructureNV -> CopyAccelerationStructureModeNV -> IO ()) -> Ptr CommandBuffer_T -> AccelerationStructureNV -> AccelerationStructureNV -> CopyAccelerationStructureModeNV -> IO ()++-- | vkCmdCopyAccelerationStructureNV - Copy an acceleration structure+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @dst@ is a pointer to the target acceleration structure for the+-- copy.+--+-- - @src@ is a pointer to the source acceleration structure for the+-- copy.+--+-- - @mode@ is a 'CopyAccelerationStructureModeNV' value specifying+-- additional operations to perform during the copy.+--+-- == Valid Usage+--+-- - @mode@ /must/ be 'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV' or+-- 'COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV'+--+-- - @src@ /must/ have been built with+-- 'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV' if @mode@ is+-- 'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @dst@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handle+--+-- - @src@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handle+--+-- - @mode@ /must/ be a valid 'CopyAccelerationStructureModeNV' value+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - Each of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', @dst@, and+-- @src@ /must/ have been created, allocated, or retrieved from the+-- same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Compute | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'CopyAccelerationStructureModeNV'+cmdCopyAccelerationStructureNV :: CommandBuffer -> ("dst" ::: AccelerationStructureNV) -> ("src" ::: AccelerationStructureNV) -> CopyAccelerationStructureModeNV -> IO ()+cmdCopyAccelerationStructureNV commandBuffer dst src mode = do+ let vkCmdCopyAccelerationStructureNV' = mkVkCmdCopyAccelerationStructureNV (pVkCmdCopyAccelerationStructureNV (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdCopyAccelerationStructureNV' (commandBufferHandle (commandBuffer)) (dst) (src) (mode)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdWriteAccelerationStructuresPropertiesNV+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureNV -> QueryType -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr AccelerationStructureNV -> QueryType -> QueryPool -> Word32 -> IO ()++-- | vkCmdWriteAccelerationStructuresPropertiesNV - Write acceleration+-- structure result parameters to query results.+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @accelerationStructureCount@ is the count of acceleration structures+-- for which to query the property.+--+-- - @pAccelerationStructures@ is a pointer to an array of existing+-- previously built acceleration structures.+--+-- - 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' is a+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' value specifying+-- the type of queries managed by the pool.+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' is the query pool that+-- will manage the results of the query.+--+-- - @firstQuery@ is the first query index within the query pool that+-- will contain the @accelerationStructureCount@ number of results.+--+-- == Valid Usage+--+-- - 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV'+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ have been created+-- with a 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' matching+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType'+--+-- - The queries identified by 'Graphics.Vulkan.Core10.Handles.QueryPool'+-- and @firstQuery@ /must/ be /unavailable/+--+-- - All acceleration structures in @accelerationStructures@ /must/ have+-- been built with+-- 'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV' if+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' is+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV'+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pAccelerationStructures@ /must/ be a valid pointer to an array of+-- @accelerationStructureCount@ valid+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handles+--+-- - 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType' value+--+-- - 'Graphics.Vulkan.Core10.Handles.QueryPool' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.QueryPool' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - @accelerationStructureCount@ /must/ be greater than @0@+--+-- - Each of 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Handles.QueryPool', and the elements of+-- @pAccelerationStructures@ /must/ have been created, allocated, or+-- retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Compute | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Handles.QueryPool',+-- 'Graphics.Vulkan.Core10.Enums.QueryType.QueryType'+cmdWriteAccelerationStructuresPropertiesNV :: CommandBuffer -> ("accelerationStructures" ::: Vector AccelerationStructureNV) -> QueryType -> QueryPool -> ("firstQuery" ::: Word32) -> IO ()+cmdWriteAccelerationStructuresPropertiesNV commandBuffer accelerationStructures queryType queryPool firstQuery = evalContT $ do+ let vkCmdWriteAccelerationStructuresPropertiesNV' = mkVkCmdWriteAccelerationStructuresPropertiesNV (pVkCmdWriteAccelerationStructuresPropertiesNV (deviceCmds (commandBuffer :: CommandBuffer)))+ pPAccelerationStructures <- ContT $ allocaBytesAligned @AccelerationStructureNV ((Data.Vector.length (accelerationStructures)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures `plusPtr` (8 * (i)) :: Ptr AccelerationStructureNV) (e)) (accelerationStructures)+ lift $ vkCmdWriteAccelerationStructuresPropertiesNV' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32)) (pPAccelerationStructures) (queryType) (queryPool) (firstQuery)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdBuildAccelerationStructureNV+ :: FunPtr (Ptr CommandBuffer_T -> Ptr AccelerationStructureInfoNV -> Buffer -> DeviceSize -> Bool32 -> AccelerationStructureNV -> AccelerationStructureNV -> Buffer -> DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Ptr AccelerationStructureInfoNV -> Buffer -> DeviceSize -> Bool32 -> AccelerationStructureNV -> AccelerationStructureNV -> Buffer -> DeviceSize -> IO ()++-- | vkCmdBuildAccelerationStructureNV - Build an acceleration structure+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @pInfo@ contains the shared information for the acceleration+-- structure’s structure.+--+-- - @instanceData@ is the buffer containing instance data that will be+-- used to build the acceleration structure as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-instance Accelerator structure instances.>+-- This parameter /must/ be @NULL@ for bottom level acceleration+-- structures.+--+-- - @instanceOffset@ is the offset in bytes (relative to the start of+-- @instanceData@) at which the instance data is located.+--+-- - @update@ specifies whether to update the @dst@ acceleration+-- structure with the data in @src@.+--+-- - @dst@ is a pointer to the target acceleration structure for the+-- build.+--+-- - @src@ is a pointer to an existing acceleration structure that is to+-- be used to update the @dst@ acceleration structure.+--+-- - @scratch@ is the 'Graphics.Vulkan.Core10.Handles.Buffer' that will+-- be used as scratch memory for the build.+--+-- - @scratchOffset@ is the offset in bytes relative to the start of+-- @scratch@ that will be used as a scratch memory.+--+-- == Valid Usage+--+-- - @geometryCount@ /must/ be less than or equal to+-- 'PhysicalDeviceRayTracingPropertiesNV'::@maxGeometryCount@+--+-- - @dst@ /must/ have been created with compatible+-- 'AccelerationStructureInfoNV' where+-- 'AccelerationStructureInfoNV'::@type@ and+-- 'AccelerationStructureInfoNV'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- are identical, 'AccelerationStructureInfoNV'::@instanceCount@ and+-- 'AccelerationStructureInfoNV'::@geometryCount@ for @dst@ are greater+-- than or equal to the build size and each geometry in+-- 'AccelerationStructureInfoNV'::@pGeometries@ for @dst@ has greater+-- than or equal to the number of vertices, indices, and AABBs.+--+-- - If @update@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', @src@ /must/+-- not be 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- - If @update@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', @src@ /must/+-- have been built before with+-- 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV' set in+-- 'AccelerationStructureInfoNV'::'Graphics.Vulkan.Core10.BaseType.Flags'+--+-- - If @update@ is 'Graphics.Vulkan.Core10.BaseType.FALSE', The @size@+-- member of the+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'+-- structure returned from a call to+-- 'getAccelerationStructureMemoryRequirementsNV' with+-- 'AccelerationStructureMemoryRequirementsInfoNV'::@accelerationStructure@+-- set to @dst@ and+-- 'AccelerationStructureMemoryRequirementsInfoNV'::@type@ set to+-- 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV'+-- /must/ be less than or equal to the size of @scratch@ minus+-- @scratchOffset@+--+-- - If @update@ is 'Graphics.Vulkan.Core10.BaseType.TRUE', The @size@+-- member of the+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'+-- structure returned from a call to+-- 'getAccelerationStructureMemoryRequirementsNV' with+-- 'AccelerationStructureMemoryRequirementsInfoNV'::@accelerationStructure@+-- set to @dst@ and+-- 'AccelerationStructureMemoryRequirementsInfoNV'::@type@ set to+-- 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV'+-- /must/ be less than or equal to the size of @scratch@ minus+-- @scratchOffset@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pInfo@ /must/ be a valid pointer to a valid+-- 'AccelerationStructureInfoNV' structure+--+-- - If @instanceData@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @instanceData@+-- /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - @dst@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handle+--+-- - If @src@ is not 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- @src@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handle+--+-- - @scratch@ /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer'+-- handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - Each of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', @dst@,+-- @instanceData@, @scratch@, and @src@ that are valid handles of+-- non-ignored parameters /must/ have been created, allocated, or+-- retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Compute | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'AccelerationStructureInfoNV',+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV',+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+cmdBuildAccelerationStructureNV :: CommandBuffer -> AccelerationStructureInfoNV -> ("instanceData" ::: Buffer) -> ("instanceOffset" ::: DeviceSize) -> ("update" ::: Bool) -> ("dst" ::: AccelerationStructureNV) -> ("src" ::: AccelerationStructureNV) -> ("scratch" ::: Buffer) -> ("scratchOffset" ::: DeviceSize) -> IO ()+cmdBuildAccelerationStructureNV commandBuffer info instanceData instanceOffset update dst src scratch scratchOffset = evalContT $ do+ let vkCmdBuildAccelerationStructureNV' = mkVkCmdBuildAccelerationStructureNV (pVkCmdBuildAccelerationStructureNV (deviceCmds (commandBuffer :: CommandBuffer)))+ pInfo <- ContT $ withCStruct (info)+ lift $ vkCmdBuildAccelerationStructureNV' (commandBufferHandle (commandBuffer)) pInfo (instanceData) (instanceOffset) (boolToBool32 (update)) (dst) (src) (scratch) (scratchOffset)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdTraceRaysNV+ :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> Word32 -> Word32 -> IO ()++-- | vkCmdTraceRaysNV - Initialize a ray tracing dispatch+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @raygenShaderBindingTableBuffer@ is the buffer object that holds the+-- shader binding table data for the ray generation shader stage.+--+-- - @raygenShaderBindingOffset@ is the offset in bytes (relative to+-- @raygenShaderBindingTableBuffer@) of the ray generation shader being+-- used for the trace.+--+-- - @missShaderBindingTableBuffer@ is the buffer object that holds the+-- shader binding table data for the miss shader stage.+--+-- - @missShaderBindingOffset@ is the offset in bytes (relative to+-- @missShaderBindingTableBuffer@) of the miss shader being used for+-- the trace.+--+-- - @missShaderBindingStride@ is the size in bytes of each shader+-- binding table record in @missShaderBindingTableBuffer@.+--+-- - @hitShaderBindingTableBuffer@ is the buffer object that holds the+-- shader binding table data for the hit shader stages.+--+-- - @hitShaderBindingOffset@ is the offset in bytes (relative to+-- @hitShaderBindingTableBuffer@) of the hit shader group being used+-- for the trace.+--+-- - @hitShaderBindingStride@ is the size in bytes of each shader binding+-- table record in @hitShaderBindingTableBuffer@.+--+-- - @callableShaderBindingTableBuffer@ is the buffer object that holds+-- the shader binding table data for the callable shader stage.+--+-- - @callableShaderBindingOffset@ is the offset in bytes (relative to+-- @callableShaderBindingTableBuffer@) of the callable shader being+-- used for the trace.+--+-- - @callableShaderBindingStride@ is the size in bytes of each shader+-- binding table record in @callableShaderBindingTableBuffer@.+--+-- - @width@ is the width of the ray trace query dimensions.+--+-- - @height@ is height of the ray trace query dimensions.+--+-- - @depth@ is depth of the ray trace query dimensions.+--+-- = Description+--+-- When the command is executed, a ray generation group of @width@ ×+-- @height@ × @depth@ rays is assembled.+--+-- == Valid Usage+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Core10.Enums.Filter.FILTER_LINEAR' as a result of+-- this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is accessed using+-- atomic operations as a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'+--+-- - If a 'Graphics.Vulkan.Core10.Handles.ImageView' is sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command, then the image view’s+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>+-- /must/ contain+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as+-- a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering, as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.ImageView' being sampled with+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'+-- with a reduction mode of either+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'+-- or+-- 'Graphics.Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'+-- as a result of this command /must/ have a+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.ImageViewType' and+-- format that supports cubic filtering together with minmax filtering,+-- as specified by+-- 'Graphics.Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@+-- returned by+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'+--+-- - Any 'Graphics.Vulkan.Core10.Handles.Image' created with a+-- 'Graphics.Vulkan.Core10.Image.ImageCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- containing+-- 'Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'+-- sampled as a result of this command /must/ only be sampled using a+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode'+-- of+-- 'Graphics.Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.+--+-- - For each set /n/ that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a descriptor set /must/ have been bound+-- to /n/ at the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for set /n/, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - For each push constant that is statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command, a push constant value /must/ have been+-- set for the same pipeline bind point, with a+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' that is compatible+-- for push constants, with the+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' used to create the+-- current 'Graphics.Vulkan.Core10.Handles.Pipeline', as described in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility ???>+--+-- - Descriptors in each bound descriptor set, specified via+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdBindDescriptorSets',+-- /must/ be valid if they are statically used by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind+-- point used by this command+--+-- - A valid pipeline /must/ be bound to the pipeline bind point used by+-- this command+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command requires any dynamic state,+-- that state /must/ have been set for+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and done so after+-- any previously bound pipeline with the corresponding state not+-- specified as dynamic+--+-- - There /must/ not have been any calls to dynamic state setting+-- commands for any state not specified as dynamic in the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command, since that pipeline was+-- bound+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used to sample+-- from any 'Graphics.Vulkan.Core10.Handles.Image' with a+-- 'Graphics.Vulkan.Core10.Handles.ImageView' of the type+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'+-- or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY',+-- in any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions with @ImplicitLod@, @Dref@ or @Proj@ in their name, in+-- any shader stage+--+-- - If the 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a+-- 'Graphics.Vulkan.Core10.Handles.Sampler' object that uses+-- unnormalized coordinates, that sampler /must/ not be used with any+-- of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@+-- instructions that includes a LOD bias or any offset values, in any+-- shader stage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a uniform buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>+-- feature is not enabled, and if the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command accesses a storage buffer,+-- it /must/ not access values outside of the range of the buffer as+-- specified in the descriptor set bound to the same pipeline bind+-- point+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is an unprotected+-- command buffer, any resource accessed by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command /must/ not be a protected+-- resource+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a protected+-- command buffer, any resource written to by the+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' object bound to the+-- pipeline bind point used by this command /must/ not be an+-- unprotected resource+--+-- - If 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is a protected+-- command buffer, pipeline stages other than the framebuffer-space and+-- compute stages in the 'Graphics.Vulkan.Core10.Handles.Pipeline'+-- object bound to the pipeline bind point /must/ not write to any+-- resource+--+-- - @raygenShaderBindingOffset@ /must/ be less than the size of+-- @raygenShaderBindingTableBuffer@+--+-- - @raygenShaderBindingOffset@ /must/ be a multiple of+-- 'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@+--+-- - @missShaderBindingOffset@ /must/ be less than the size of+-- @missShaderBindingTableBuffer@+--+-- - @missShaderBindingOffset@ /must/ be a multiple of+-- 'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@+--+-- - @hitShaderBindingOffset@ /must/ be less than the size of+-- @hitShaderBindingTableBuffer@+--+-- - @hitShaderBindingOffset@ /must/ be a multiple of+-- 'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@+--+-- - @callableShaderBindingOffset@ /must/ be less than the size of+-- @callableShaderBindingTableBuffer@+--+-- - @callableShaderBindingOffset@ /must/ be a multiple of+-- 'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupBaseAlignment@+--+-- - @missShaderBindingStride@ /must/ be a multiple of+-- 'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupHandleSize@+--+-- - @hitShaderBindingStride@ /must/ be a multiple of+-- 'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupHandleSize@+--+-- - @callableShaderBindingStride@ /must/ be a multiple of+-- 'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupHandleSize@+--+-- - @missShaderBindingStride@ /must/ be a less than or equal to+-- 'PhysicalDeviceRayTracingPropertiesNV'::@maxShaderGroupStride@+--+-- - @hitShaderBindingStride@ /must/ be a less than or equal to+-- 'PhysicalDeviceRayTracingPropertiesNV'::@maxShaderGroupStride@+--+-- - @callableShaderBindingStride@ /must/ be a less than or equal to+-- 'PhysicalDeviceRayTracingPropertiesNV'::@maxShaderGroupStride@+--+-- - @width@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]+--+-- - @height@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]+--+-- - @depth@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @raygenShaderBindingTableBuffer@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - If @missShaderBindingTableBuffer@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- @missShaderBindingTableBuffer@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - If @hitShaderBindingTableBuffer@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- @hitShaderBindingTableBuffer@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - If @callableShaderBindingTableBuffer@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- @callableShaderBindingTableBuffer@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support compute operations+--+-- - This command /must/ only be called outside of a render pass instance+--+-- - Each of @callableShaderBindingTableBuffer@,+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- @hitShaderBindingTableBuffer@, @missShaderBindingTableBuffer@, and+-- @raygenShaderBindingTableBuffer@ that are valid handles of+-- non-ignored parameters /must/ have been created, allocated, or+-- retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Outside | Compute | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize'+cmdTraceRaysNV :: CommandBuffer -> ("raygenShaderBindingTableBuffer" ::: Buffer) -> ("raygenShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingTableBuffer" ::: Buffer) -> ("missShaderBindingOffset" ::: DeviceSize) -> ("missShaderBindingStride" ::: DeviceSize) -> ("hitShaderBindingTableBuffer" ::: Buffer) -> ("hitShaderBindingOffset" ::: DeviceSize) -> ("hitShaderBindingStride" ::: DeviceSize) -> ("callableShaderBindingTableBuffer" ::: Buffer) -> ("callableShaderBindingOffset" ::: DeviceSize) -> ("callableShaderBindingStride" ::: DeviceSize) -> ("width" ::: Word32) -> ("height" ::: Word32) -> ("depth" ::: Word32) -> IO ()+cmdTraceRaysNV commandBuffer raygenShaderBindingTableBuffer raygenShaderBindingOffset missShaderBindingTableBuffer missShaderBindingOffset missShaderBindingStride hitShaderBindingTableBuffer hitShaderBindingOffset hitShaderBindingStride callableShaderBindingTableBuffer callableShaderBindingOffset callableShaderBindingStride width height depth = do+ let vkCmdTraceRaysNV' = mkVkCmdTraceRaysNV (pVkCmdTraceRaysNV (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdTraceRaysNV' (commandBufferHandle (commandBuffer)) (raygenShaderBindingTableBuffer) (raygenShaderBindingOffset) (missShaderBindingTableBuffer) (missShaderBindingOffset) (missShaderBindingStride) (hitShaderBindingTableBuffer) (hitShaderBindingOffset) (hitShaderBindingStride) (callableShaderBindingTableBuffer) (callableShaderBindingOffset) (callableShaderBindingStride) (width) (height) (depth)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetRayTracingShaderGroupHandlesNV+ :: FunPtr (Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result) -> Ptr Device_T -> Pipeline -> Word32 -> Word32 -> CSize -> Ptr () -> IO Result++-- | vkGetRayTracingShaderGroupHandlesNV - Query ray tracing pipeline shader+-- group handles+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device+-- containing the ray tracing pipeline.+--+-- - 'Graphics.Vulkan.Core10.Handles.Pipeline' is the ray tracing+-- pipeline object containing the shaders.+--+-- - @firstGroup@ is the index of the first group to retrieve a handle+-- for from the 'RayTracingShaderGroupCreateInfoNV'::@pGroups@ array.+--+-- - @groupCount@ is the number of shader handles to retrieve.+--+-- - @dataSize@ is the size in bytes of the buffer pointed to by @pData@.+--+-- - @pData@ is a pointer to a user-allocated buffer where the results+-- will be written.+--+-- == Valid Usage+--+-- - The sum of @firstGroup@ and @groupCount@ /must/ be less than the+-- number of shader groups in+-- 'Graphics.Vulkan.Core10.Handles.Pipeline'.+--+-- - @dataSize@ /must/ be at least+-- 'PhysicalDeviceRayTracingPropertiesNV'::@shaderGroupHandleSize@ ×+-- @groupCount@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - 'Graphics.Vulkan.Core10.Handles.Pipeline' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Pipeline' handle+--+-- - @pData@ /must/ be a valid pointer to an array of @dataSize@ bytes+--+-- - @dataSize@ /must/ be greater than @0@+--+-- - 'Graphics.Vulkan.Core10.Handles.Pipeline' /must/ have been created,+-- allocated, or retrieved from 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Pipeline'+getRayTracingShaderGroupHandlesNV :: Device -> Pipeline -> ("firstGroup" ::: Word32) -> ("groupCount" ::: Word32) -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> IO ()+getRayTracingShaderGroupHandlesNV device pipeline firstGroup groupCount dataSize data' = do+ let vkGetRayTracingShaderGroupHandlesNV' = mkVkGetRayTracingShaderGroupHandlesNV (pVkGetRayTracingShaderGroupHandlesNV (deviceCmds (device :: Device)))+ r <- vkGetRayTracingShaderGroupHandlesNV' (deviceHandle (device)) (pipeline) (firstGroup) (groupCount) (CSize (dataSize)) (data')+ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkGetAccelerationStructureHandleNV+ :: FunPtr (Ptr Device_T -> AccelerationStructureNV -> CSize -> Ptr () -> IO Result) -> Ptr Device_T -> AccelerationStructureNV -> CSize -> Ptr () -> IO Result++-- | vkGetAccelerationStructureHandleNV - Get opaque acceleration structure+-- handle+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- owns the acceleration structures.+--+-- - @accelerationStructure@ is the acceleration structure.+--+-- - @dataSize@ is the size in bytes of the buffer pointed to by @pData@.+--+-- - @pData@ is a pointer to a user-allocated buffer where the results+-- will be written.+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV',+-- 'Graphics.Vulkan.Core10.Handles.Device'+getAccelerationStructureHandleNV :: Device -> AccelerationStructureNV -> ("dataSize" ::: Word64) -> ("data" ::: Ptr ()) -> IO ()+getAccelerationStructureHandleNV device accelerationStructure dataSize data' = do+ let vkGetAccelerationStructureHandleNV' = mkVkGetAccelerationStructureHandleNV (pVkGetAccelerationStructureHandleNV (deviceCmds (device :: Device)))+ r <- vkGetAccelerationStructureHandleNV' (deviceHandle (device)) (accelerationStructure) (CSize (dataSize)) (data')+ when (r < SUCCESS) (throwIO (VulkanException r))+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCreateRayTracingPipelinesNV+ :: FunPtr (Ptr Device_T -> PipelineCache -> Word32 -> Ptr (RayTracingPipelineCreateInfoNV a) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result) -> Ptr Device_T -> PipelineCache -> Word32 -> Ptr (RayTracingPipelineCreateInfoNV a) -> Ptr AllocationCallbacks -> Ptr Pipeline -> IO Result++-- | vkCreateRayTracingPipelinesNV - Creates a new ray tracing pipeline+-- object+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' is the logical device that+-- creates the ray tracing pipelines.+--+-- - 'Graphics.Vulkan.Core10.Handles.PipelineCache' is either+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', indicating that+-- pipeline caching is disabled, or the handle of a valid+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cache pipeline cache>+-- object, in which case use of that cache is enabled for the duration+-- of the command.+--+-- - @createInfoCount@ is the length of the @pCreateInfos@ and+-- @pPipelines@ arrays.+--+-- - @pCreateInfos@ is a pointer to an array of+-- 'RayTracingPipelineCreateInfoNV' structures.+--+-- - @pAllocator@ controls host memory allocation as described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>+-- chapter.+--+-- - @pPipelines@ is a pointer to an array in which the resulting ray+-- tracing pipeline objects are returned.+--+-- == Valid Usage+--+-- - If the 'Graphics.Vulkan.Core10.BaseType.Flags' member of any element+-- of @pCreateInfos@ contains the+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+-- flag, and the @basePipelineIndex@ member of that same element is not+-- @-1@, @basePipelineIndex@ /must/ be less than the index into+-- @pCreateInfos@ that corresponds to that element+--+-- - If the 'Graphics.Vulkan.Core10.BaseType.Flags' member of any element+-- of @pCreateInfos@ contains the+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+-- flag, the base pipeline /must/ have been created with the+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT'+-- flag set+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.Device' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Device' handle+--+-- - If 'Graphics.Vulkan.Core10.Handles.PipelineCache' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache' handle+--+-- - @pCreateInfos@ /must/ be a valid pointer to an array of+-- @createInfoCount@ valid 'RayTracingPipelineCreateInfoNV' structures+--+-- - If @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid+-- pointer to a valid+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'+-- structure+--+-- - @pPipelines@ /must/ be a valid pointer to an array of+-- @createInfoCount@ 'Graphics.Vulkan.Core10.Handles.Pipeline' handles+--+-- - @createInfoCount@ /must/ be greater than @0@+--+-- - If 'Graphics.Vulkan.Core10.Handles.PipelineCache' is a valid handle,+-- it /must/ have been created, allocated, or retrieved from+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Return Codes+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.SUCCESS'+--+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'+--+-- - 'Graphics.Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',+-- 'Graphics.Vulkan.Core10.Handles.Device',+-- 'Graphics.Vulkan.Core10.Handles.Pipeline',+-- 'Graphics.Vulkan.Core10.Handles.PipelineCache',+-- 'RayTracingPipelineCreateInfoNV'+createRayTracingPipelinesNV :: PokeChain a => Device -> PipelineCache -> ("createInfos" ::: Vector (RayTracingPipelineCreateInfoNV a)) -> ("allocator" ::: Maybe AllocationCallbacks) -> IO (("pipelines" ::: Vector Pipeline))+createRayTracingPipelinesNV device pipelineCache createInfos allocator = evalContT $ do+ let vkCreateRayTracingPipelinesNV' = mkVkCreateRayTracingPipelinesNV (pVkCreateRayTracingPipelinesNV (deviceCmds (device :: Device)))+ pPCreateInfos <- ContT $ allocaBytesAligned @(RayTracingPipelineCreateInfoNV _) ((Data.Vector.length (createInfos)) * 80) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPCreateInfos `plusPtr` (80 * (i)) :: Ptr (RayTracingPipelineCreateInfoNV _)) (e) . ($ ())) (createInfos)+ pAllocator <- case (allocator) of+ Nothing -> pure nullPtr+ Just j -> ContT $ withCStruct (j)+ pPPipelines <- ContT $ bracket (callocBytes @Pipeline ((fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) * 8)) free+ r <- lift $ vkCreateRayTracingPipelinesNV' (deviceHandle (device)) (pipelineCache) ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32)) (pPCreateInfos) pAllocator (pPPipelines)+ lift $ when (r < SUCCESS) (throwIO (VulkanException r))+ pPipelines <- lift $ generateM (fromIntegral ((fromIntegral (Data.Vector.length $ (createInfos)) :: Word32))) (\i -> peek @Pipeline ((pPPipelines `advancePtrBytes` (8 * (i)) :: Ptr Pipeline)))+ pure $ (pPipelines)+++-- | VkRayTracingShaderGroupCreateInfoNV - Structure specifying shaders in a+-- shader group+--+-- == Valid Usage+--+-- - If @type@ is 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV' then+-- @generalShader@ /must/ be a valid index into @pStages@ referring to+-- a shader of+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_NV',+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_NV',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_NV'+--+-- - If @type@ is 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV' then+-- @closestHitShader@, @anyHitShader@, and @intersectionShader@ /must/+-- be 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV'+--+-- - If @type@ is 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV'+-- then @intersectionShader@ /must/ be a valid index into @pStages@+-- referring to a shader of+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_INTERSECTION_BIT_NV'+--+-- - If @type@ is 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV'+-- then @intersectionShader@ /must/ be+-- 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV'+--+-- - @closestHitShader@ /must/ be either+-- 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' or a valid+-- index into @pStages@ referring to a shader of+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CLOSEST_HIT_BIT_NV'+--+-- - @anyHitShader@ /must/ be either+-- 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' or a valid+-- index into @pStages@ referring to a shader of+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_ANY_HIT_BIT_NV'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV'+--+-- - @pNext@ /must/ be @NULL@+--+-- - @type@ /must/ be a valid 'RayTracingShaderGroupTypeNV' value+--+-- = See Also+--+-- 'RayTracingPipelineCreateInfoNV', 'RayTracingShaderGroupTypeNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data RayTracingShaderGroupCreateInfoNV = RayTracingShaderGroupCreateInfoNV+ { -- | @type@ is the type of hit group specified in this structure.+ type' :: RayTracingShaderGroupTypeNV+ , -- | @generalShader@ is the index of the ray generation, miss, or callable+ -- shader from 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if+ -- the shader group has @type@ of+ -- 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV' and+ -- 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.+ generalShader :: Word32+ , -- | @closestHitShader@ is the optional index of the closest hit shader from+ -- 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if the shader+ -- group has @type@ of+ -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV' or+ -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV' and+ -- 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.+ closestHitShader :: Word32+ , -- | @anyHitShader@ is the optional index of the any-hit shader from+ -- 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if the shader+ -- group has @type@ of+ -- 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV' or+ -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV' and+ -- 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.+ anyHitShader :: Word32+ , -- | @intersectionShader@ is the index of the intersection shader from+ -- 'RayTracingPipelineCreateInfoNV'::@pStages@ in the group if the shader+ -- group has @type@ of+ -- 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV' and+ -- 'Graphics.Vulkan.Core10.APIConstants.SHADER_UNUSED_NV' otherwise.+ intersectionShader :: Word32+ }+ deriving (Typeable)+deriving instance Show RayTracingShaderGroupCreateInfoNV++instance ToCStruct RayTracingShaderGroupCreateInfoNV where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p RayTracingShaderGroupCreateInfoNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeNV)) (type')+ poke ((p `plusPtr` 20 :: Ptr Word32)) (generalShader)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (closestHitShader)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (anyHitShader)+ poke ((p `plusPtr` 32 :: Ptr Word32)) (intersectionShader)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeNV)) (zero)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+ f++instance FromCStruct RayTracingShaderGroupCreateInfoNV where+ peekCStruct p = do+ type' <- peek @RayTracingShaderGroupTypeNV ((p `plusPtr` 16 :: Ptr RayTracingShaderGroupTypeNV))+ generalShader <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ closestHitShader <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ anyHitShader <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+ intersectionShader <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pure $ RayTracingShaderGroupCreateInfoNV+ type' generalShader closestHitShader anyHitShader intersectionShader++instance Storable RayTracingShaderGroupCreateInfoNV where+ sizeOf ~_ = 40+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero RayTracingShaderGroupCreateInfoNV where+ zero = RayTracingShaderGroupCreateInfoNV+ zero+ zero+ zero+ zero+ zero+++-- | VkRayTracingPipelineCreateInfoNV - Structure specifying parameters of a+-- newly created ray tracing pipeline+--+-- = Description+--+-- The parameters @basePipelineHandle@ and @basePipelineIndex@ are+-- described in more detail in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.+--+-- == Valid Usage+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains the+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+-- flag, and @basePipelineIndex@ is @-1@, @basePipelineHandle@ /must/+-- be a valid handle to a ray tracing+-- 'Graphics.Vulkan.Core10.Handles.Pipeline'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains the+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+-- flag, and @basePipelineHandle@ is+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- @basePipelineIndex@ /must/ be a valid index into the calling+-- command’s @pCreateInfos@ parameter+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains the+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+-- flag, and @basePipelineIndex@ is not @-1@, @basePipelineHandle@+-- /must/ be 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE'+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' contains the+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DERIVATIVE_BIT'+-- flag, and @basePipelineHandle@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- @basePipelineIndex@ /must/ be @-1@+--+-- - The @stage@ member of one element of @pStages@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_NV'+--+-- - The shader code for the entry points identified by @pStages@, and+-- the rest of the state identified by this structure /must/ adhere to+-- the pipeline linking rules described in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces Shader Interfaces>+-- chapter+--+-- - @layout@ /must/ be+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent>+-- with all shaders specified in @pStages@+--+-- - The number of resources in @layout@ accessible to each shader stage+-- that is used by the pipeline /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPerStageResources@+--+-- - @maxRecursionDepth@ /must/ be less than or equal to+-- 'PhysicalDeviceRayTracingPropertiesNV'::@maxRecursionDepth@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV'+--+-- - @pNext@ /must/ be @NULL@ or a pointer to a valid instance of+-- 'Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT'+--+-- - The @sType@ value of each struct in the @pNext@ chain /must/ be+-- unique+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+-- values+--+-- - @pStages@ /must/ be a valid pointer to an array of @stageCount@+-- valid+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'+-- structures+--+-- - @pGroups@ /must/ be a valid pointer to an array of @groupCount@+-- valid 'RayTracingShaderGroupCreateInfoNV' structures+--+-- - @layout@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout' handle+--+-- - @stageCount@ /must/ be greater than @0@+--+-- - @groupCount@ /must/ be greater than @0@+--+-- - Both of @basePipelineHandle@, and @layout@ that are valid handles of+-- non-ignored parameters /must/ have been created, allocated, or+-- retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Pipeline',+-- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags',+-- 'Graphics.Vulkan.Core10.Handles.PipelineLayout',+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',+-- 'RayTracingShaderGroupCreateInfoNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createRayTracingPipelinesNV'+data RayTracingPipelineCreateInfoNV (es :: [Type]) = RayTracingPipelineCreateInfoNV+ { -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.+ next :: Chain es+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits'+ -- specifying how the pipeline will be generated.+ flags :: PipelineCreateFlags+ , -- | @pStages@ is a pointer to an array of @stageCount@+ -- 'Graphics.Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'+ -- structures describing the set of the shader stages to be included in the+ -- ray tracing pipeline.+ stages :: Vector (SomeStruct PipelineShaderStageCreateInfo)+ , -- | @pGroups@ is a pointer to an array of @groupCount@+ -- 'RayTracingShaderGroupCreateInfoNV' structures describing the set of the+ -- shader stages to be included in each shader group in the ray tracing+ -- pipeline.+ groups :: Vector RayTracingShaderGroupCreateInfoNV+ , -- | @maxRecursionDepth@ is the maximum recursion that will be called from+ -- this pipeline.+ maxRecursionDepth :: Word32+ , -- | @layout@ is the description of binding locations used by both the+ -- pipeline and descriptor sets used with the pipeline.+ layout :: PipelineLayout+ , -- | @basePipelineHandle@ is a pipeline to derive from.+ basePipelineHandle :: Pipeline+ , -- | @basePipelineIndex@ is an index into the @pCreateInfos@ parameter to use+ -- as a pipeline to derive from.+ basePipelineIndex :: Int32+ }+ deriving (Typeable)+deriving instance Show (Chain es) => Show (RayTracingPipelineCreateInfoNV es)++instance Extensible RayTracingPipelineCreateInfoNV where+ extensibleType = STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV+ setNext x next = x{next = next}+ getNext RayTracingPipelineCreateInfoNV{..} = next+ extends :: forall e b proxy. Typeable e => proxy e -> (Extends RayTracingPipelineCreateInfoNV e => b) -> Maybe b+ extends _ f+ | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfoEXT = Just f+ | otherwise = Nothing++instance PokeChain es => ToCStruct (RayTracingPipelineCreateInfoNV es) where+ withCStruct x f = allocaBytesAligned 80 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p RayTracingPipelineCreateInfoNV{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV)+ pNext'' <- fmap castPtr . ContT $ withChain (next)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''+ lift $ poke ((p `plusPtr` 16 :: Ptr PipelineCreateFlags)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (stages)) :: Word32))+ pPStages' <- ContT $ allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (stages)) * 48) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (stages)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')+ lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (groups)) :: Word32))+ pPGroups' <- ContT $ allocaBytesAligned @RayTracingShaderGroupCreateInfoNV ((Data.Vector.length (groups)) * 40) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGroups' `plusPtr` (40 * (i)) :: Ptr RayTracingShaderGroupCreateInfoNV) (e) . ($ ())) (groups)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV))) (pPGroups')+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (maxRecursionDepth)+ lift $ poke ((p `plusPtr` 56 :: Ptr PipelineLayout)) (layout)+ lift $ poke ((p `plusPtr` 64 :: Ptr Pipeline)) (basePipelineHandle)+ lift $ poke ((p `plusPtr` 72 :: Ptr Int32)) (basePipelineIndex)+ lift $ f+ cStructSize = 80+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV)+ pNext' <- fmap castPtr . ContT $ withZeroChain @es+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'+ pPStages' <- ContT $ allocaBytesAligned @(PipelineShaderStageCreateInfo _) ((Data.Vector.length (mempty)) * 48) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPStages' `plusPtr` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _))) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo _)))) (pPStages')+ pPGroups' <- ContT $ allocaBytesAligned @RayTracingShaderGroupCreateInfoNV ((Data.Vector.length (mempty)) * 40) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGroups' `plusPtr` (40 * (i)) :: Ptr RayTracingShaderGroupCreateInfoNV) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV))) (pPGroups')+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 56 :: Ptr PipelineLayout)) (zero)+ lift $ poke ((p `plusPtr` 72 :: Ptr Int32)) (zero)+ lift $ f++instance PeekChain es => FromCStruct (RayTracingPipelineCreateInfoNV es) where+ peekCStruct p = do+ pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))+ next <- peekChain (castPtr pNext)+ flags <- peek @PipelineCreateFlags ((p `plusPtr` 16 :: Ptr PipelineCreateFlags))+ stageCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pStages <- peek @(Ptr (PipelineShaderStageCreateInfo _)) ((p `plusPtr` 24 :: Ptr (Ptr (PipelineShaderStageCreateInfo a))))+ pStages' <- generateM (fromIntegral stageCount) (\i -> peekSomeCStruct (forgetExtensions ((pStages `advancePtrBytes` (48 * (i)) :: Ptr (PipelineShaderStageCreateInfo _)))))+ groupCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ pGroups <- peek @(Ptr RayTracingShaderGroupCreateInfoNV) ((p `plusPtr` 40 :: Ptr (Ptr RayTracingShaderGroupCreateInfoNV)))+ pGroups' <- generateM (fromIntegral groupCount) (\i -> peekCStruct @RayTracingShaderGroupCreateInfoNV ((pGroups `advancePtrBytes` (40 * (i)) :: Ptr RayTracingShaderGroupCreateInfoNV)))+ maxRecursionDepth <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+ layout <- peek @PipelineLayout ((p `plusPtr` 56 :: Ptr PipelineLayout))+ basePipelineHandle <- peek @Pipeline ((p `plusPtr` 64 :: Ptr Pipeline))+ basePipelineIndex <- peek @Int32 ((p `plusPtr` 72 :: Ptr Int32))+ pure $ RayTracingPipelineCreateInfoNV+ next flags pStages' pGroups' maxRecursionDepth layout basePipelineHandle basePipelineIndex++instance es ~ '[] => Zero (RayTracingPipelineCreateInfoNV es) where+ zero = RayTracingPipelineCreateInfoNV+ ()+ zero+ mempty+ mempty+ zero+ zero+ zero+ zero+++-- | VkGeometryTrianglesNV - Structure specifying a triangle geometry in a+-- bottom-level acceleration structure+--+-- = Description+--+-- If 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' is+-- 'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_NV', then this+-- structure describes a set of triangles determined by @vertexCount@.+-- Otherwise, this structure describes a set of indexed triangles+-- determined by @indexCount@.+--+-- == Valid Usage+--+-- - @vertexOffset@ /must/ be less than the size of @vertexData@+--+-- - @vertexOffset@ /must/ be a multiple of the component size of+-- @vertexFormat@+--+-- - @vertexFormat@ /must/ be one of+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R32G32B32_SFLOAT',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R32G32_SFLOAT',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16G16B16_SFLOAT',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16G16_SFLOAT',+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16G16_SNORM', or+-- 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R16G16B16_SNORM'+--+-- - @indexOffset@ /must/ be less than the size of @indexData@+--+-- - @indexOffset@ /must/ be a multiple of the element size of+-- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType'+--+-- - 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16',+-- 'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32', or+-- 'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_NV'+--+-- - @indexData@ /must/ be+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE' if+-- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' is+-- 'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_NV'+--+-- - @indexData@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.Buffer' handle if+-- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' is not+-- 'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_NV'+--+-- - @indexCount@ /must/ be @0@ if+-- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' is+-- 'Graphics.Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_NV'+--+-- - @transformOffset@ /must/ be less than the size of @transformData@+--+-- - @transformOffset@ /must/ be a multiple of @16@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV'+--+-- - @pNext@ /must/ be @NULL@+--+-- - If @vertexData@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @vertexData@+-- /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - @vertexFormat@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.Format.Format' value+--+-- - If @indexData@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @indexData@+-- /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' value+--+-- - If @transformData@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @transformData@+-- /must/ be a valid 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- - Each of @indexData@, @transformData@, and @vertexData@ that are+-- valid handles of non-ignored parameters /must/ have been created,+-- allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.Format.Format', 'GeometryDataNV',+-- 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data GeometryTrianglesNV = GeometryTrianglesNV+ { -- | @vertexData@ is the buffer containing vertex data for this geometry.+ vertexData :: Buffer+ , -- | @vertexOffset@ is the offset in bytes within @vertexData@ containing+ -- vertex data for this geometry.+ vertexOffset :: DeviceSize+ , -- | @vertexCount@ is the number of valid vertices.+ vertexCount :: Word32+ , -- | @vertexStride@ is the stride in bytes between each vertex.+ vertexStride :: DeviceSize+ , -- | @vertexFormat@ is the format of each vertex element.+ vertexFormat :: Format+ , -- | @indexData@ is the buffer containing index data for this geometry.+ indexData :: Buffer+ , -- | @indexOffset@ is the offset in bytes within @indexData@ containing index+ -- data for this geometry.+ indexOffset :: DeviceSize+ , -- | @indexCount@ is the number of indices to include in this geometry.+ indexCount :: Word32+ , -- | 'Graphics.Vulkan.Core10.Enums.IndexType.IndexType' is the format of each+ -- index.+ indexType :: IndexType+ , -- | @transformData@ is a buffer containing optional reference to an array of+ -- 32-bit floats representing a 3x4 row major affine transformation matrix+ -- for this geometry.+ transformData :: Buffer+ , -- | @transformOffset@ is the offset in bytes in @transformData@ of the+ -- transform information described above.+ transformOffset :: DeviceSize+ }+ deriving (Typeable)+deriving instance Show GeometryTrianglesNV++instance ToCStruct GeometryTrianglesNV where+ withCStruct x f = allocaBytesAligned 96 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p GeometryTrianglesNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Buffer)) (vertexData)+ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (vertexOffset)+ poke ((p `plusPtr` 32 :: Ptr Word32)) (vertexCount)+ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (vertexStride)+ poke ((p `plusPtr` 48 :: Ptr Format)) (vertexFormat)+ poke ((p `plusPtr` 56 :: Ptr Buffer)) (indexData)+ poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (indexOffset)+ poke ((p `plusPtr` 72 :: Ptr Word32)) (indexCount)+ poke ((p `plusPtr` 76 :: Ptr IndexType)) (indexType)+ poke ((p `plusPtr` 80 :: Ptr Buffer)) (transformData)+ poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (transformOffset)+ f+ cStructSize = 96+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 40 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 48 :: Ptr Format)) (zero)+ poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (zero)+ poke ((p `plusPtr` 72 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 76 :: Ptr IndexType)) (zero)+ poke ((p `plusPtr` 88 :: Ptr DeviceSize)) (zero)+ f++instance FromCStruct GeometryTrianglesNV where+ peekCStruct p = do+ vertexData <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))+ vertexOffset <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))+ vertexCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))+ vertexStride <- peek @DeviceSize ((p `plusPtr` 40 :: Ptr DeviceSize))+ vertexFormat <- peek @Format ((p `plusPtr` 48 :: Ptr Format))+ indexData <- peek @Buffer ((p `plusPtr` 56 :: Ptr Buffer))+ indexOffset <- peek @DeviceSize ((p `plusPtr` 64 :: Ptr DeviceSize))+ indexCount <- peek @Word32 ((p `plusPtr` 72 :: Ptr Word32))+ indexType <- peek @IndexType ((p `plusPtr` 76 :: Ptr IndexType))+ transformData <- peek @Buffer ((p `plusPtr` 80 :: Ptr Buffer))+ transformOffset <- peek @DeviceSize ((p `plusPtr` 88 :: Ptr DeviceSize))+ pure $ GeometryTrianglesNV+ vertexData vertexOffset vertexCount vertexStride vertexFormat indexData indexOffset indexCount indexType transformData transformOffset++instance Storable GeometryTrianglesNV where+ sizeOf ~_ = 96+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero GeometryTrianglesNV where+ zero = GeometryTrianglesNV+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkGeometryAABBNV - Structure specifying axis-aligned bounding box+-- geometry in a bottom-level acceleration structure+--+-- = Description+--+-- The AABB data in memory is six 32-bit floats consisting of the minimum+-- x, y, and z values followed by the maximum x, y, and z values.+--+-- == Valid Usage+--+-- - @offset@ /must/ be less than the size of @aabbData@+--+-- - @offset@ /must/ be a multiple of @8@+--+-- - @stride@ /must/ be a multiple of @8@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_GEOMETRY_AABB_NV'+--+-- - @pNext@ /must/ be @NULL@+--+-- - If @aabbData@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @aabbData@ /must/+-- be a valid 'Graphics.Vulkan.Core10.Handles.Buffer' handle+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.Buffer',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize', 'GeometryDataNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data GeometryAABBNV = GeometryAABBNV+ { -- | @aabbData@ is the buffer containing axis-aligned bounding box data.+ aabbData :: Buffer+ , -- | @numAABBs@ is the number of AABBs in this geometry.+ numAABBs :: Word32+ , -- | @stride@ is the stride in bytes between AABBs in @aabbData@.+ stride :: Word32+ , -- | @offset@ is the offset in bytes of the first AABB in @aabbData@.+ offset :: DeviceSize+ }+ deriving (Typeable)+deriving instance Show GeometryAABBNV++instance ToCStruct GeometryAABBNV where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p GeometryAABBNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_AABB_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Buffer)) (aabbData)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (numAABBs)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (stride)+ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (offset)+ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_AABB_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)+ f++instance FromCStruct GeometryAABBNV where+ peekCStruct p = do+ aabbData <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))+ numAABBs <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ stride <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+ offset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))+ pure $ GeometryAABBNV+ aabbData numAABBs stride offset++instance Storable GeometryAABBNV where+ sizeOf ~_ = 40+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero GeometryAABBNV where+ zero = GeometryAABBNV+ zero+ zero+ zero+ zero+++-- | VkGeometryDataNV - Structure specifying geometry in a bottom-level+-- acceleration structure+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'GeometryAABBNV', 'GeometryNV', 'GeometryTrianglesNV'+data GeometryDataNV = GeometryDataNV+ { -- | @triangles@ /must/ be a valid 'GeometryTrianglesNV' structure+ triangles :: GeometryTrianglesNV+ , -- | @aabbs@ /must/ be a valid 'GeometryAABBNV' structure+ aabbs :: GeometryAABBNV+ }+ deriving (Typeable)+deriving instance Show GeometryDataNV++instance ToCStruct GeometryDataNV where+ withCStruct x f = allocaBytesAligned 136 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p GeometryDataNV{..} f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr GeometryTrianglesNV)) (triangles) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 96 :: Ptr GeometryAABBNV)) (aabbs) . ($ ())+ lift $ f+ cStructSize = 136+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ ContT $ pokeCStruct ((p `plusPtr` 0 :: Ptr GeometryTrianglesNV)) (zero) . ($ ())+ ContT $ pokeCStruct ((p `plusPtr` 96 :: Ptr GeometryAABBNV)) (zero) . ($ ())+ lift $ f++instance FromCStruct GeometryDataNV where+ peekCStruct p = do+ triangles <- peekCStruct @GeometryTrianglesNV ((p `plusPtr` 0 :: Ptr GeometryTrianglesNV))+ aabbs <- peekCStruct @GeometryAABBNV ((p `plusPtr` 96 :: Ptr GeometryAABBNV))+ pure $ GeometryDataNV+ triangles aabbs++instance Zero GeometryDataNV where+ zero = GeometryDataNV+ zero+ zero+++-- | VkGeometryNV - Structure specifying a geometry in a bottom-level+-- acceleration structure+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'AccelerationStructureInfoNV', 'GeometryDataNV', 'GeometryFlagsNV',+-- 'GeometryTypeNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data GeometryNV = GeometryNV+ { -- | @geometryType@ /must/ be a valid 'GeometryTypeNV' value+ geometryType :: GeometryTypeNV+ , -- | @geometry@ /must/ be a valid 'GeometryDataNV' structure+ geometry :: GeometryDataNV+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid combination of+ -- 'GeometryFlagBitsNV' values+ flags :: GeometryFlagsNV+ }+ deriving (Typeable)+deriving instance Show GeometryNV++instance ToCStruct GeometryNV where+ withCStruct x f = allocaBytesAligned 168 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p GeometryNV{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr GeometryTypeNV)) (geometryType)+ ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr GeometryDataNV)) (geometry) . ($ ())+ lift $ poke ((p `plusPtr` 160 :: Ptr GeometryFlagsNV)) (flags)+ lift $ f+ cStructSize = 168+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_GEOMETRY_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr GeometryTypeNV)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr GeometryDataNV)) (zero) . ($ ())+ lift $ f++instance FromCStruct GeometryNV where+ peekCStruct p = do+ geometryType <- peek @GeometryTypeNV ((p `plusPtr` 16 :: Ptr GeometryTypeNV))+ geometry <- peekCStruct @GeometryDataNV ((p `plusPtr` 24 :: Ptr GeometryDataNV))+ flags <- peek @GeometryFlagsNV ((p `plusPtr` 160 :: Ptr GeometryFlagsNV))+ pure $ GeometryNV+ geometryType geometry flags++instance Zero GeometryNV where+ zero = GeometryNV+ zero+ zero+ zero+++-- | VkAccelerationStructureInfoNV - Structure specifying the parameters of+-- acceleration structure object+--+-- = Description+--+-- 'AccelerationStructureInfoNV' contains information that is used both for+-- acceleration structure creation with 'createAccelerationStructureNV' and+-- in combination with the actual geometric data to build the acceleration+-- structure with 'cmdBuildAccelerationStructureNV'.+--+-- == Valid Usage+--+-- - @geometryCount@ /must/ be less than or equal to+-- 'PhysicalDeviceRayTracingPropertiesNV'::@maxGeometryCount@+--+-- - @instanceCount@ /must/ be less than or equal to+-- 'PhysicalDeviceRayTracingPropertiesNV'::@maxInstanceCount@+--+-- - The total number of triangles in all geometries /must/ be less than+-- or equal to+-- 'PhysicalDeviceRayTracingPropertiesNV'::@maxTriangleCount@+--+-- - If @type@ is 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV' then+-- @geometryCount@ /must/ be @0@+--+-- - If @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV' then+-- @instanceCount@ /must/ be @0@+--+-- - If @type@ is 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV' then the+-- @geometryType@ member of each geometry in @pGeometries@ /must/ be+-- the same+--+-- - If 'Graphics.Vulkan.Core10.BaseType.Flags' has the+-- 'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV' bit set,+-- then it /must/ not have the+-- 'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV' bit set+--+-- - @scratch@ /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RAY_TRACING_BIT_NV'+-- usage flag+--+-- - If @instanceData@ is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', @instanceData@+-- /must/ have been created with+-- 'Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_RAY_TRACING_BIT_NV'+-- usage flag+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV'+--+-- - @pNext@ /must/ be @NULL@+--+-- - @type@ /must/ be a valid 'AccelerationStructureTypeNV' value+--+-- - 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be a valid+-- combination of 'BuildAccelerationStructureFlagBitsNV' values+--+-- - If @geometryCount@ is not @0@, @pGeometries@ /must/ be a valid+-- pointer to an array of @geometryCount@ valid 'GeometryNV' structures+--+-- = See Also+--+-- 'AccelerationStructureCreateInfoNV', 'AccelerationStructureTypeNV',+-- 'BuildAccelerationStructureFlagsNV', 'GeometryNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'cmdBuildAccelerationStructureNV'+data AccelerationStructureInfoNV = AccelerationStructureInfoNV+ { -- | @type@ is a 'AccelerationStructureTypeNV' value specifying the type of+ -- acceleration structure that will be created.+ type' :: AccelerationStructureTypeNV+ , -- | 'Graphics.Vulkan.Core10.BaseType.Flags' is a bitmask of+ -- 'BuildAccelerationStructureFlagBitsNV' specifying additional parameters+ -- of the acceleration structure.+ flags :: BuildAccelerationStructureFlagsNV+ , -- | @instanceCount@ specifies the number of instances that will be in the+ -- new acceleration structure.+ instanceCount :: Word32+ , -- | @pGeometries@ is a pointer to an array of @geometryCount@ 'GeometryNV'+ -- structures containing the scene data being passed into the acceleration+ -- structure.+ geometries :: Vector GeometryNV+ }+ deriving (Typeable)+deriving instance Show AccelerationStructureInfoNV++instance ToCStruct AccelerationStructureInfoNV where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p AccelerationStructureInfoNV{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeNV)) (type')+ lift $ poke ((p `plusPtr` 20 :: Ptr BuildAccelerationStructureFlagsNV)) (flags)+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (instanceCount)+ lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (geometries)) :: Word32))+ pPGeometries' <- ContT $ allocaBytesAligned @GeometryNV ((Data.Vector.length (geometries)) * 168) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGeometries' `plusPtr` (168 * (i)) :: Ptr GeometryNV) (e) . ($ ())) (geometries)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr GeometryNV))) (pPGeometries')+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeNV)) (zero)+ pPGeometries' <- ContT $ allocaBytesAligned @GeometryNV ((Data.Vector.length (mempty)) * 168) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPGeometries' `plusPtr` (168 * (i)) :: Ptr GeometryNV) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr GeometryNV))) (pPGeometries')+ lift $ f++instance FromCStruct AccelerationStructureInfoNV where+ peekCStruct p = do+ type' <- peek @AccelerationStructureTypeNV ((p `plusPtr` 16 :: Ptr AccelerationStructureTypeNV))+ flags <- peek @BuildAccelerationStructureFlagsNV ((p `plusPtr` 20 :: Ptr BuildAccelerationStructureFlagsNV))+ instanceCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ geometryCount <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+ pGeometries <- peek @(Ptr GeometryNV) ((p `plusPtr` 32 :: Ptr (Ptr GeometryNV)))+ pGeometries' <- generateM (fromIntegral geometryCount) (\i -> peekCStruct @GeometryNV ((pGeometries `advancePtrBytes` (168 * (i)) :: Ptr GeometryNV)))+ pure $ AccelerationStructureInfoNV+ type' flags instanceCount pGeometries'++instance Zero AccelerationStructureInfoNV where+ zero = AccelerationStructureInfoNV+ zero+ zero+ zero+ mempty+++-- | VkAccelerationStructureCreateInfoNV - Structure specifying the+-- parameters of a newly created acceleration structure object+--+-- == Valid Usage+--+-- - If @compactedSize@ is not @0@ then both @info.geometryCount@ and+-- @info.instanceCount@ /must/ be @0@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV'+--+-- - @pNext@ /must/ be @NULL@+--+-- - @info@ /must/ be a valid 'AccelerationStructureInfoNV' structure+--+-- = See Also+--+-- 'AccelerationStructureInfoNV',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'createAccelerationStructureNV'+data AccelerationStructureCreateInfoNV = AccelerationStructureCreateInfoNV+ { -- | @compactedSize@ is the size from the result of+ -- 'cmdWriteAccelerationStructuresPropertiesNV' if this acceleration+ -- structure is going to be the target of a compacting copy.+ compactedSize :: DeviceSize+ , -- | @info@ is the 'AccelerationStructureInfoNV' structure specifying further+ -- parameters of the created acceleration structure.+ info :: AccelerationStructureInfoNV+ }+ deriving (Typeable)+deriving instance Show AccelerationStructureCreateInfoNV++instance ToCStruct AccelerationStructureCreateInfoNV where+ withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p AccelerationStructureCreateInfoNV{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (compactedSize)+ ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV)) (info) . ($ ())+ lift $ f+ cStructSize = 64+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV)) (zero) . ($ ())+ lift $ f++instance FromCStruct AccelerationStructureCreateInfoNV where+ peekCStruct p = do+ compactedSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))+ info <- peekCStruct @AccelerationStructureInfoNV ((p `plusPtr` 24 :: Ptr AccelerationStructureInfoNV))+ pure $ AccelerationStructureCreateInfoNV+ compactedSize info++instance Zero AccelerationStructureCreateInfoNV where+ zero = AccelerationStructureCreateInfoNV+ zero+ zero+++-- | VkBindAccelerationStructureMemoryInfoNV - Structure specifying+-- acceleration structure memory binding+--+-- == Valid Usage+--+-- - @accelerationStructure@ /must/ not already be backed by a memory+-- object+--+-- - @memoryOffset@ /must/ be less than the size of @memory@+--+-- - @memory@ /must/ have been allocated using one of the memory types+-- allowed in the @memoryTypeBits@ member of the+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'+-- structure returned from a call to+-- 'getAccelerationStructureMemoryRequirementsNV' with+-- @accelerationStructure@ and @type@ of+-- 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV'+--+-- - @memoryOffset@ /must/ be an integer multiple of the @alignment@+-- member of the+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'+-- structure returned from a call to+-- 'getAccelerationStructureMemoryRequirementsNV' with+-- @accelerationStructure@ and @type@ of+-- 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV'+--+-- - The @size@ member of the+-- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'+-- structure returned from a call to+-- 'getAccelerationStructureMemoryRequirementsNV' with+-- @accelerationStructure@ and @type@ of+-- 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV' /must/+-- be less than or equal to the size of @memory@ minus @memoryOffset@+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV'+--+-- - @pNext@ /must/ be @NULL@+--+-- - @accelerationStructure@ /must/ be a valid+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handle+--+-- - @memory@ /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' handle+--+-- - If @deviceIndexCount@ is not @0@, @pDeviceIndices@ /must/ be a valid+-- pointer to an array of @deviceIndexCount@ @uint32_t@ values+--+-- - Both of @accelerationStructure@, and @memory@ /must/ have been+-- created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device'+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV',+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory',+-- 'Graphics.Vulkan.Core10.BaseType.DeviceSize',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'bindAccelerationStructureMemoryNV'+data BindAccelerationStructureMemoryInfoNV = BindAccelerationStructureMemoryInfoNV+ { -- | @accelerationStructure@ is the acceleration structure to be attached to+ -- memory.+ accelerationStructure :: AccelerationStructureNV+ , -- | @memory@ is a 'Graphics.Vulkan.Core10.Handles.DeviceMemory' object+ -- describing the device memory to attach.+ memory :: DeviceMemory+ , -- | @memoryOffset@ is the start offset of the region of memory that is to be+ -- bound to the acceleration structure. The number of bytes returned in the+ -- 'Graphics.Vulkan.Core10.MemoryManagement.MemoryRequirements'::@size@+ -- member in @memory@, starting from @memoryOffset@ bytes, will be bound to+ -- the specified acceleration structure.+ memoryOffset :: DeviceSize+ , -- | @pDeviceIndices@ is a pointer to an array of device indices.+ deviceIndices :: Vector Word32+ }+ deriving (Typeable)+deriving instance Show BindAccelerationStructureMemoryInfoNV++instance ToCStruct BindAccelerationStructureMemoryInfoNV where+ withCStruct x f = allocaBytesAligned 56 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p BindAccelerationStructureMemoryInfoNV{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureNV)) (accelerationStructure)+ lift $ poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (memory)+ lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (memoryOffset)+ lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (deviceIndices)) :: Word32))+ pPDeviceIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (deviceIndices)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (deviceIndices)+ lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPDeviceIndices')+ lift $ f+ cStructSize = 56+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureNV)) (zero)+ lift $ poke ((p `plusPtr` 24 :: Ptr DeviceMemory)) (zero)+ lift $ poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)+ pPDeviceIndices' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPDeviceIndices' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr Word32))) (pPDeviceIndices')+ lift $ f++instance FromCStruct BindAccelerationStructureMemoryInfoNV where+ peekCStruct p = do+ accelerationStructure <- peek @AccelerationStructureNV ((p `plusPtr` 16 :: Ptr AccelerationStructureNV))+ memory <- peek @DeviceMemory ((p `plusPtr` 24 :: Ptr DeviceMemory))+ memoryOffset <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))+ deviceIndexCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))+ pDeviceIndices <- peek @(Ptr Word32) ((p `plusPtr` 48 :: Ptr (Ptr Word32)))+ pDeviceIndices' <- generateM (fromIntegral deviceIndexCount) (\i -> peek @Word32 ((pDeviceIndices `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ pure $ BindAccelerationStructureMemoryInfoNV+ accelerationStructure memory memoryOffset pDeviceIndices'++instance Zero BindAccelerationStructureMemoryInfoNV where+ zero = BindAccelerationStructureMemoryInfoNV+ zero+ zero+ zero+ mempty+++-- | VkWriteDescriptorSetAccelerationStructureNV - Structure specifying+-- acceleration structure descriptor info+--+-- == Valid Usage+--+-- - @accelerationStructureCount@ /must/ be equal to @descriptorCount@ in+-- the extended structure+--+-- - Each acceleration structure in @pAccelerationStructures@ must have+-- been created with 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV'+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV'+--+-- - @pAccelerationStructures@ /must/ be a valid pointer to an array of+-- @accelerationStructureCount@ valid+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handles+--+-- - @accelerationStructureCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data WriteDescriptorSetAccelerationStructureNV = WriteDescriptorSetAccelerationStructureNV+ { -- | @pAccelerationStructures@ are the acceleration structures to update.+ accelerationStructures :: Vector AccelerationStructureNV }+ deriving (Typeable)+deriving instance Show WriteDescriptorSetAccelerationStructureNV++instance ToCStruct WriteDescriptorSetAccelerationStructureNV where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p WriteDescriptorSetAccelerationStructureNV{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (accelerationStructures)) :: Word32))+ pPAccelerationStructures' <- ContT $ allocaBytesAligned @AccelerationStructureNV ((Data.Vector.length (accelerationStructures)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures' `plusPtr` (8 * (i)) :: Ptr AccelerationStructureNV) (e)) (accelerationStructures)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureNV))) (pPAccelerationStructures')+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPAccelerationStructures' <- ContT $ allocaBytesAligned @AccelerationStructureNV ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPAccelerationStructures' `plusPtr` (8 * (i)) :: Ptr AccelerationStructureNV) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureNV))) (pPAccelerationStructures')+ lift $ f++instance FromCStruct WriteDescriptorSetAccelerationStructureNV where+ peekCStruct p = do+ accelerationStructureCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pAccelerationStructures <- peek @(Ptr AccelerationStructureNV) ((p `plusPtr` 24 :: Ptr (Ptr AccelerationStructureNV)))+ pAccelerationStructures' <- generateM (fromIntegral accelerationStructureCount) (\i -> peek @AccelerationStructureNV ((pAccelerationStructures `advancePtrBytes` (8 * (i)) :: Ptr AccelerationStructureNV)))+ pure $ WriteDescriptorSetAccelerationStructureNV+ pAccelerationStructures'++instance Zero WriteDescriptorSetAccelerationStructureNV where+ zero = WriteDescriptorSetAccelerationStructureNV+ mempty+++-- | VkAccelerationStructureMemoryRequirementsInfoNV - Structure specifying+-- acceleration to query for memory requirements+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'AccelerationStructureMemoryRequirementsTypeNV',+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'getAccelerationStructureMemoryRequirementsNV'+data AccelerationStructureMemoryRequirementsInfoNV = AccelerationStructureMemoryRequirementsInfoNV+ { -- | @type@ /must/ be a valid 'AccelerationStructureMemoryRequirementsTypeNV'+ -- value+ type' :: AccelerationStructureMemoryRequirementsTypeNV+ , -- | @accelerationStructure@ /must/ be a valid+ -- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' handle+ accelerationStructure :: AccelerationStructureNV+ }+ deriving (Typeable)+deriving instance Show AccelerationStructureMemoryRequirementsInfoNV++instance ToCStruct AccelerationStructureMemoryRequirementsInfoNV where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p AccelerationStructureMemoryRequirementsInfoNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV)) (type')+ poke ((p `plusPtr` 24 :: Ptr AccelerationStructureNV)) (accelerationStructure)+ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV)) (zero)+ poke ((p `plusPtr` 24 :: Ptr AccelerationStructureNV)) (zero)+ f++instance FromCStruct AccelerationStructureMemoryRequirementsInfoNV where+ peekCStruct p = do+ type' <- peek @AccelerationStructureMemoryRequirementsTypeNV ((p `plusPtr` 16 :: Ptr AccelerationStructureMemoryRequirementsTypeNV))+ accelerationStructure <- peek @AccelerationStructureNV ((p `plusPtr` 24 :: Ptr AccelerationStructureNV))+ pure $ AccelerationStructureMemoryRequirementsInfoNV+ type' accelerationStructure++instance Storable AccelerationStructureMemoryRequirementsInfoNV where+ sizeOf ~_ = 32+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero AccelerationStructureMemoryRequirementsInfoNV where+ zero = AccelerationStructureMemoryRequirementsInfoNV+ zero+ zero+++-- | VkPhysicalDeviceRayTracingPropertiesNV - Properties of the physical+-- device for ray tracing+--+-- = Description+--+-- If the 'PhysicalDeviceRayTracingPropertiesNV' structure is included in+-- the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceRayTracingPropertiesNV = PhysicalDeviceRayTracingPropertiesNV+ { -- | @shaderGroupHandleSize@ size in bytes of the shader header.+ shaderGroupHandleSize :: Word32+ , -- | @maxRecursionDepth@ is the maximum number of levels of recursion allowed+ -- in a trace command.+ maxRecursionDepth :: Word32+ , -- | @maxShaderGroupStride@ is the maximum stride in bytes allowed between+ -- shader groups in the SBT.+ maxShaderGroupStride :: Word32+ , -- | @shaderGroupBaseAlignment@ is the required alignment in bytes for the+ -- base of the SBTs.+ shaderGroupBaseAlignment :: Word32+ , -- | @maxGeometryCount@ is the maximum number of geometries in the bottom+ -- level acceleration structure.+ maxGeometryCount :: Word64+ , -- | @maxInstanceCount@ is the maximum number of instances in the top level+ -- acceleration structure.+ maxInstanceCount :: Word64+ , -- | @maxTriangleCount@ is the maximum number of triangles in all geometries+ -- in the bottom level acceleration structure.+ maxTriangleCount :: Word64+ , -- | @maxDescriptorSetAccelerationStructures@ is the maximum number of+ -- acceleration structure descriptors that are allowed in a descriptor set.+ maxDescriptorSetAccelerationStructures :: Word32+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceRayTracingPropertiesNV++instance ToCStruct PhysicalDeviceRayTracingPropertiesNV where+ withCStruct x f = allocaBytesAligned 64 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceRayTracingPropertiesNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (shaderGroupHandleSize)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (maxRecursionDepth)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (maxShaderGroupStride)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (shaderGroupBaseAlignment)+ poke ((p `plusPtr` 32 :: Ptr Word64)) (maxGeometryCount)+ poke ((p `plusPtr` 40 :: Ptr Word64)) (maxInstanceCount)+ poke ((p `plusPtr` 48 :: Ptr Word64)) (maxTriangleCount)+ poke ((p `plusPtr` 56 :: Ptr Word32)) (maxDescriptorSetAccelerationStructures)+ f+ cStructSize = 64+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 32 :: Ptr Word64)) (zero)+ poke ((p `plusPtr` 40 :: Ptr Word64)) (zero)+ poke ((p `plusPtr` 48 :: Ptr Word64)) (zero)+ poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)+ f++instance FromCStruct PhysicalDeviceRayTracingPropertiesNV where+ peekCStruct p = do+ shaderGroupHandleSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ maxRecursionDepth <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ maxShaderGroupStride <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ shaderGroupBaseAlignment <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+ maxGeometryCount <- peek @Word64 ((p `plusPtr` 32 :: Ptr Word64))+ maxInstanceCount <- peek @Word64 ((p `plusPtr` 40 :: Ptr Word64))+ maxTriangleCount <- peek @Word64 ((p `plusPtr` 48 :: Ptr Word64))+ maxDescriptorSetAccelerationStructures <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))+ pure $ PhysicalDeviceRayTracingPropertiesNV+ shaderGroupHandleSize maxRecursionDepth maxShaderGroupStride shaderGroupBaseAlignment maxGeometryCount maxInstanceCount maxTriangleCount maxDescriptorSetAccelerationStructures++instance Storable PhysicalDeviceRayTracingPropertiesNV where+ sizeOf ~_ = 64+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceRayTracingPropertiesNV where+ zero = PhysicalDeviceRayTracingPropertiesNV+ zero+ zero+ zero+ zero+ zero+ zero+ zero+ zero+++-- | VkGeometryInstanceFlagBitsNV - Instance flag bits+--+-- = Description+--+-- 'GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV' and+-- 'GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV' /must/ not be used in the same+-- flag.+--+-- = See Also+--+-- 'GeometryInstanceFlagsNV'+newtype GeometryInstanceFlagBitsNV = GeometryInstanceFlagBitsNV Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV' disables face culling+-- for this instance.+pattern GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = GeometryInstanceFlagBitsNV 0x00000001+-- | 'GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV' indicates+-- that the front face of the triangle for culling purposes is the face+-- that is counter clockwise in object space relative to the ray origin.+-- Because the facing is determined in object space, an instance transform+-- matrix does not change the winding, but a geometry transform does.+pattern GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = GeometryInstanceFlagBitsNV 0x00000002+-- | 'GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV' causes this instance to act as+-- though 'GEOMETRY_OPAQUE_BIT_NV' were specified on all geometries+-- referenced by this instance. This behavior /can/ be overridden by the+-- ray flag @gl_RayFlagsNoOpaqueNV@.+pattern GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = GeometryInstanceFlagBitsNV 0x00000004+-- | 'GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV' causes this instance to act+-- as though 'GEOMETRY_OPAQUE_BIT_NV' were not specified on all geometries+-- referenced by this instance. This behavior /can/ be overridden by the+-- ray flag @gl_RayFlagsOpaqueNV@.+pattern GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = GeometryInstanceFlagBitsNV 0x00000008++type GeometryInstanceFlagsNV = GeometryInstanceFlagBitsNV++instance Show GeometryInstanceFlagBitsNV where+ showsPrec p = \case+ GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV -> showString "GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV"+ GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV -> showString "GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV"+ GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV -> showString "GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV"+ GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV -> showString "GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV"+ GeometryInstanceFlagBitsNV x -> showParen (p >= 11) (showString "GeometryInstanceFlagBitsNV 0x" . showHex x)++instance Read GeometryInstanceFlagBitsNV where+ readPrec = parens (choose [("GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV", pure GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV)+ , ("GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV", pure GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV)+ , ("GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV", pure GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV)+ , ("GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV", pure GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV)]+ ++++ prec 10 (do+ expectP (Ident "GeometryInstanceFlagBitsNV")+ v <- step readPrec+ pure (GeometryInstanceFlagBitsNV v)))+++-- | VkGeometryFlagBitsNV - Bitmask specifying additional parameters for a+-- geometry+--+-- = See Also+--+-- 'GeometryFlagsNV'+newtype GeometryFlagBitsNV = GeometryFlagBitsNV Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'GEOMETRY_OPAQUE_BIT_NV' indicates that this geometry does not invoke+-- the any-hit shaders even if present in a hit group.+pattern GEOMETRY_OPAQUE_BIT_NV = GeometryFlagBitsNV 0x00000001+-- | 'GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV' indicates that the+-- implementation /must/ only call the any-hit shader a single time for+-- each primitive in this geometry. If this bit is absent an implementation+-- /may/ invoke the any-hit shader more than once for this geometry.+pattern GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = GeometryFlagBitsNV 0x00000002++type GeometryFlagsNV = GeometryFlagBitsNV++instance Show GeometryFlagBitsNV where+ showsPrec p = \case+ GEOMETRY_OPAQUE_BIT_NV -> showString "GEOMETRY_OPAQUE_BIT_NV"+ GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV -> showString "GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV"+ GeometryFlagBitsNV x -> showParen (p >= 11) (showString "GeometryFlagBitsNV 0x" . showHex x)++instance Read GeometryFlagBitsNV where+ readPrec = parens (choose [("GEOMETRY_OPAQUE_BIT_NV", pure GEOMETRY_OPAQUE_BIT_NV)+ , ("GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV", pure GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV)]+ ++++ prec 10 (do+ expectP (Ident "GeometryFlagBitsNV")+ v <- step readPrec+ pure (GeometryFlagBitsNV v)))+++-- | VkBuildAccelerationStructureFlagBitsNV - Bitmask specifying additional+-- parameters for acceleration structure builds+--+-- = Description+--+-- Note+--+-- 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV' and+-- 'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV' /may/ take more+-- time and memory than a normal build, and so /should/ only be used when+-- those features are used.+--+-- = See Also+--+-- 'BuildAccelerationStructureFlagsNV'+newtype BuildAccelerationStructureFlagBitsNV = BuildAccelerationStructureFlagBitsNV Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits)++-- | 'BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV' indicates that the+-- specified acceleration structure /can/ be updated with @update@ of+-- 'Graphics.Vulkan.Core10.BaseType.TRUE' in+-- 'cmdBuildAccelerationStructureNV'.+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = BuildAccelerationStructureFlagBitsNV 0x00000001+-- | 'BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV' indicates that+-- the specified acceleration structure /can/ act as the source for+-- 'cmdCopyAccelerationStructureNV' with @mode@ of+-- 'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV' to produce a compacted+-- acceleration structure.+pattern BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = BuildAccelerationStructureFlagBitsNV 0x00000002+-- | 'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV' indicates that+-- the given acceleration structure build /should/ prioritize trace+-- performance over build time.+pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = BuildAccelerationStructureFlagBitsNV 0x00000004+-- | 'BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV' indicates that+-- the given acceleration structure build /should/ prioritize build time+-- over trace performance.+pattern BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = BuildAccelerationStructureFlagBitsNV 0x00000008+-- | 'BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV' indicates that this+-- acceleration structure /should/ minimize the size of the scratch memory+-- and the final result build, potentially at the expense of build time or+-- trace performance.+pattern BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = BuildAccelerationStructureFlagBitsNV 0x00000010++type BuildAccelerationStructureFlagsNV = BuildAccelerationStructureFlagBitsNV++instance Show BuildAccelerationStructureFlagBitsNV where+ showsPrec p = \case+ BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV -> showString "BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV"+ BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV -> showString "BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV"+ BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV -> showString "BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV"+ BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV -> showString "BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV"+ BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV -> showString "BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV"+ BuildAccelerationStructureFlagBitsNV x -> showParen (p >= 11) (showString "BuildAccelerationStructureFlagBitsNV 0x" . showHex x)++instance Read BuildAccelerationStructureFlagBitsNV where+ readPrec = parens (choose [("BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV", pure BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV)+ , ("BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV", pure BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV)+ , ("BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV", pure BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV)+ , ("BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV", pure BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV)+ , ("BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV", pure BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV)]+ ++++ prec 10 (do+ expectP (Ident "BuildAccelerationStructureFlagBitsNV")+ v <- step readPrec+ pure (BuildAccelerationStructureFlagBitsNV v)))+++-- | VkCopyAccelerationStructureModeNV - Acceleration structure copy mode+--+-- = See Also+--+-- 'cmdCopyAccelerationStructureNV'+newtype CopyAccelerationStructureModeNV = CopyAccelerationStructureModeNV Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV' creates a direct copy of the+-- acceleration structure specified in @src@ into the one specified by+-- @dst@. The @dst@ acceleration structure /must/ have been created with+-- the same parameters as @src@.+pattern COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = CopyAccelerationStructureModeNV 0+-- | 'COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV' creates a more compact+-- version of an acceleration structure @src@ into @dst@. The acceleration+-- structure @dst@ /must/ have been created with a @compactedSize@+-- corresponding to the one returned by+-- 'cmdWriteAccelerationStructuresPropertiesNV' after the build of the+-- acceleration structure specified by @src@.+pattern COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = CopyAccelerationStructureModeNV 1+{-# complete COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV,+ COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV :: CopyAccelerationStructureModeNV #-}++instance Show CopyAccelerationStructureModeNV where+ showsPrec p = \case+ COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV -> showString "COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV"+ COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV -> showString "COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV"+ CopyAccelerationStructureModeNV x -> showParen (p >= 11) (showString "CopyAccelerationStructureModeNV " . showsPrec 11 x)++instance Read CopyAccelerationStructureModeNV where+ readPrec = parens (choose [("COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV", pure COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV)+ , ("COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV", pure COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV)]+ ++++ prec 10 (do+ expectP (Ident "CopyAccelerationStructureModeNV")+ v <- step readPrec+ pure (CopyAccelerationStructureModeNV v)))+++-- | VkAccelerationStructureTypeNV - Type of acceleration structure+--+-- = See Also+--+-- 'AccelerationStructureInfoNV'+newtype AccelerationStructureTypeNV = AccelerationStructureTypeNV Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV' is a top-level acceleration+-- structure containing instance data referring to bottom-level level+-- acceleration structures.+pattern ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = AccelerationStructureTypeNV 0+-- | 'ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV' is a bottom-level+-- acceleration structure containing the AABBs or geometry to be+-- intersected.+pattern ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = AccelerationStructureTypeNV 1+{-# complete ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV,+ ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV :: AccelerationStructureTypeNV #-}++instance Show AccelerationStructureTypeNV where+ showsPrec p = \case+ ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV -> showString "ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV"+ ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV -> showString "ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV"+ AccelerationStructureTypeNV x -> showParen (p >= 11) (showString "AccelerationStructureTypeNV " . showsPrec 11 x)++instance Read AccelerationStructureTypeNV where+ readPrec = parens (choose [("ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV", pure ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV)+ , ("ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV", pure ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV)]+ ++++ prec 10 (do+ expectP (Ident "AccelerationStructureTypeNV")+ v <- step readPrec+ pure (AccelerationStructureTypeNV v)))+++-- | VkGeometryTypeNV - Enum specifying which type of geometry is provided+--+-- = See Also+--+-- 'GeometryNV'+newtype GeometryTypeNV = GeometryTypeNV Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'GEOMETRY_TYPE_TRIANGLES_NV' indicates that the @triangles@ of+-- 'GeometryDataNV' contains valid data.+pattern GEOMETRY_TYPE_TRIANGLES_NV = GeometryTypeNV 0+-- | 'GEOMETRY_TYPE_AABBS_NV' indicates that the @aabbs@ of 'GeometryDataNV'+-- contains valid data.+pattern GEOMETRY_TYPE_AABBS_NV = GeometryTypeNV 1+{-# complete GEOMETRY_TYPE_TRIANGLES_NV,+ GEOMETRY_TYPE_AABBS_NV :: GeometryTypeNV #-}++instance Show GeometryTypeNV where+ showsPrec p = \case+ GEOMETRY_TYPE_TRIANGLES_NV -> showString "GEOMETRY_TYPE_TRIANGLES_NV"+ GEOMETRY_TYPE_AABBS_NV -> showString "GEOMETRY_TYPE_AABBS_NV"+ GeometryTypeNV x -> showParen (p >= 11) (showString "GeometryTypeNV " . showsPrec 11 x)++instance Read GeometryTypeNV where+ readPrec = parens (choose [("GEOMETRY_TYPE_TRIANGLES_NV", pure GEOMETRY_TYPE_TRIANGLES_NV)+ , ("GEOMETRY_TYPE_AABBS_NV", pure GEOMETRY_TYPE_AABBS_NV)]+ ++++ prec 10 (do+ expectP (Ident "GeometryTypeNV")+ v <- step readPrec+ pure (GeometryTypeNV v)))+++-- | VkAccelerationStructureMemoryRequirementsTypeNV - Acceleration structure+-- memory requirement type+--+-- = See Also+--+-- 'AccelerationStructureMemoryRequirementsInfoNV'+newtype AccelerationStructureMemoryRequirementsTypeNV = AccelerationStructureMemoryRequirementsTypeNV Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV' requests the+-- memory requirement for the+-- 'Graphics.Vulkan.Extensions.Handles.AccelerationStructureNV' backing+-- store.+pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = AccelerationStructureMemoryRequirementsTypeNV 0+-- | 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV'+-- requests the memory requirement for scratch space during the initial+-- build.+pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = AccelerationStructureMemoryRequirementsTypeNV 1+-- | 'ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV'+-- requests the memory requirement for scratch space during an update.+pattern ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = AccelerationStructureMemoryRequirementsTypeNV 2+{-# complete ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV,+ ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV,+ ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV :: AccelerationStructureMemoryRequirementsTypeNV #-}++instance Show AccelerationStructureMemoryRequirementsTypeNV where+ showsPrec p = \case+ ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV -> showString "ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV"+ ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV -> showString "ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV"+ ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV -> showString "ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV"+ AccelerationStructureMemoryRequirementsTypeNV x -> showParen (p >= 11) (showString "AccelerationStructureMemoryRequirementsTypeNV " . showsPrec 11 x)++instance Read AccelerationStructureMemoryRequirementsTypeNV where+ readPrec = parens (choose [("ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV", pure ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV)+ , ("ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV", pure ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV)+ , ("ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV", pure ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV)]+ ++++ prec 10 (do+ expectP (Ident "AccelerationStructureMemoryRequirementsTypeNV")+ v <- step readPrec+ pure (AccelerationStructureMemoryRequirementsTypeNV v)))+++-- | VkRayTracingShaderGroupTypeNV - Shader group types+--+-- = Description+--+-- Note+--+-- For current group types, the hit group type could be inferred from the+-- presence or absence of the intersection shader, but we provide the type+-- explicitly for future hit groups that do not have that property.+--+-- = See Also+--+-- 'RayTracingShaderGroupCreateInfoNV'+newtype RayTracingShaderGroupTypeNV = RayTracingShaderGroupTypeNV Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV' indicates a shader group with+-- a single+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_RAYGEN_BIT_NV',+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MISS_BIT_NV',+-- or+-- 'Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_CALLABLE_BIT_NV'+-- shader in it.+pattern RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = RayTracingShaderGroupTypeNV 0+-- | 'RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV' specifies a+-- shader group that only hits triangles and /must/ not contain an+-- intersection shader, only closest hit and any-hit.+pattern RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = RayTracingShaderGroupTypeNV 1+-- | 'RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV' specifies a+-- shader group that only intersects with custom geometry and /must/+-- contain an intersection shader and /may/ contain closest hit and any-hit+-- shaders.+pattern RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = RayTracingShaderGroupTypeNV 2+{-# complete RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV,+ RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV,+ RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV :: RayTracingShaderGroupTypeNV #-}++instance Show RayTracingShaderGroupTypeNV where+ showsPrec p = \case+ RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV -> showString "RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV"+ RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV -> showString "RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV"+ RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV -> showString "RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV"+ RayTracingShaderGroupTypeNV x -> showParen (p >= 11) (showString "RayTracingShaderGroupTypeNV " . showsPrec 11 x)++instance Read RayTracingShaderGroupTypeNV where+ readPrec = parens (choose [("RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV", pure RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV)+ , ("RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV", pure RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV)+ , ("RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV", pure RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV)]+ ++++ prec 10 (do+ expectP (Ident "RayTracingShaderGroupTypeNV")+ v <- step readPrec+ pure (RayTracingShaderGroupTypeNV v)))+++type NV_RAY_TRACING_SPEC_VERSION = 3++-- No documentation found for TopLevel "VK_NV_RAY_TRACING_SPEC_VERSION"+pattern NV_RAY_TRACING_SPEC_VERSION :: forall a . Integral a => a+pattern NV_RAY_TRACING_SPEC_VERSION = 3+++type NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing"++-- No documentation found for TopLevel "VK_NV_RAY_TRACING_EXTENSION_NAME"+pattern NV_RAY_TRACING_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing"+
+ src/Graphics/Vulkan/Extensions/VK_NV_ray_tracing.hs-boot view
@@ -0,0 +1,121 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_ray_tracing ( AccelerationStructureCreateInfoNV+ , AccelerationStructureInfoNV+ , AccelerationStructureMemoryRequirementsInfoNV+ , BindAccelerationStructureMemoryInfoNV+ , GeometryAABBNV+ , GeometryDataNV+ , GeometryNV+ , GeometryTrianglesNV+ , PhysicalDeviceRayTracingPropertiesNV+ , RayTracingPipelineCreateInfoNV+ , RayTracingShaderGroupCreateInfoNV+ , WriteDescriptorSetAccelerationStructureNV+ , CopyAccelerationStructureModeNV+ ) where++import Data.Kind (Type)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (Chain)+import Graphics.Vulkan.CStruct (FromCStruct)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PeekChain)+import {-# SOURCE #-} Graphics.Vulkan.CStruct.Extends (PokeChain)+import Graphics.Vulkan.CStruct (ToCStruct)+data AccelerationStructureCreateInfoNV++instance ToCStruct AccelerationStructureCreateInfoNV+instance Show AccelerationStructureCreateInfoNV++instance FromCStruct AccelerationStructureCreateInfoNV+++data AccelerationStructureInfoNV++instance ToCStruct AccelerationStructureInfoNV+instance Show AccelerationStructureInfoNV++instance FromCStruct AccelerationStructureInfoNV+++data AccelerationStructureMemoryRequirementsInfoNV++instance ToCStruct AccelerationStructureMemoryRequirementsInfoNV+instance Show AccelerationStructureMemoryRequirementsInfoNV++instance FromCStruct AccelerationStructureMemoryRequirementsInfoNV+++data BindAccelerationStructureMemoryInfoNV++instance ToCStruct BindAccelerationStructureMemoryInfoNV+instance Show BindAccelerationStructureMemoryInfoNV++instance FromCStruct BindAccelerationStructureMemoryInfoNV+++data GeometryAABBNV++instance ToCStruct GeometryAABBNV+instance Show GeometryAABBNV++instance FromCStruct GeometryAABBNV+++data GeometryDataNV++instance ToCStruct GeometryDataNV+instance Show GeometryDataNV++instance FromCStruct GeometryDataNV+++data GeometryNV++instance ToCStruct GeometryNV+instance Show GeometryNV++instance FromCStruct GeometryNV+++data GeometryTrianglesNV++instance ToCStruct GeometryTrianglesNV+instance Show GeometryTrianglesNV++instance FromCStruct GeometryTrianglesNV+++data PhysicalDeviceRayTracingPropertiesNV++instance ToCStruct PhysicalDeviceRayTracingPropertiesNV+instance Show PhysicalDeviceRayTracingPropertiesNV++instance FromCStruct PhysicalDeviceRayTracingPropertiesNV+++type role RayTracingPipelineCreateInfoNV nominal+data RayTracingPipelineCreateInfoNV (es :: [Type])++instance PokeChain es => ToCStruct (RayTracingPipelineCreateInfoNV es)+instance Show (Chain es) => Show (RayTracingPipelineCreateInfoNV es)++instance PeekChain es => FromCStruct (RayTracingPipelineCreateInfoNV es)+++data RayTracingShaderGroupCreateInfoNV++instance ToCStruct RayTracingShaderGroupCreateInfoNV+instance Show RayTracingShaderGroupCreateInfoNV++instance FromCStruct RayTracingShaderGroupCreateInfoNV+++data WriteDescriptorSetAccelerationStructureNV++instance ToCStruct WriteDescriptorSetAccelerationStructureNV+instance Show WriteDescriptorSetAccelerationStructureNV++instance FromCStruct WriteDescriptorSetAccelerationStructureNV+++data CopyAccelerationStructureModeNV+
+ src/Graphics/Vulkan/Extensions/VK_NV_representative_fragment_test.hs view
@@ -0,0 +1,168 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test ( PhysicalDeviceRepresentativeFragmentTestFeaturesNV(..)+ , PipelineRepresentativeFragmentTestStateCreateInfoNV(..)+ , NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION+ , pattern NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION+ , NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME+ , pattern NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV))+-- | VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV - Structure+-- describing the representative fragment test features that can be+-- supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceRepresentativeFragmentTestFeaturesNV'+-- structure describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceRepresentativeFragmentTestFeaturesNV' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceRepresentativeFragmentTestFeaturesNV' /can/ also be+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to enable the feature.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceRepresentativeFragmentTestFeaturesNV = PhysicalDeviceRepresentativeFragmentTestFeaturesNV+ { -- | @representativeFragmentTest@ indicates whether the implementation+ -- supports the representative fragment test. See+ -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-rep-frag-test Representative Fragment Test>.+ representativeFragmentTest :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceRepresentativeFragmentTestFeaturesNV++instance ToCStruct PhysicalDeviceRepresentativeFragmentTestFeaturesNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceRepresentativeFragmentTestFeaturesNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (representativeFragmentTest))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceRepresentativeFragmentTestFeaturesNV where+ peekCStruct p = do+ representativeFragmentTest <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceRepresentativeFragmentTestFeaturesNV+ (bool32ToBool representativeFragmentTest)++instance Storable PhysicalDeviceRepresentativeFragmentTestFeaturesNV where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceRepresentativeFragmentTestFeaturesNV where+ zero = PhysicalDeviceRepresentativeFragmentTestFeaturesNV+ zero+++-- | VkPipelineRepresentativeFragmentTestStateCreateInfoNV - Structure+-- specifying representative fragment test+--+-- = Description+--+-- If this structure is not present, @representativeFragmentTestEnable@ is+-- considered to be 'Graphics.Vulkan.Core10.BaseType.FALSE', and the+-- representative fragment test is disabled.+--+-- If+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-early-mode early fragment tests>+-- are not enabled in the active fragment shader, the representative+-- fragment shader test has no effect, even if enabled.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineRepresentativeFragmentTestStateCreateInfoNV = PipelineRepresentativeFragmentTestStateCreateInfoNV+ { -- | @representativeFragmentTestEnable@ controls whether the representative+ -- fragment test is enabled.+ representativeFragmentTestEnable :: Bool }+ deriving (Typeable)+deriving instance Show PipelineRepresentativeFragmentTestStateCreateInfoNV++instance ToCStruct PipelineRepresentativeFragmentTestStateCreateInfoNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineRepresentativeFragmentTestStateCreateInfoNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (representativeFragmentTestEnable))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PipelineRepresentativeFragmentTestStateCreateInfoNV where+ peekCStruct p = do+ representativeFragmentTestEnable <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PipelineRepresentativeFragmentTestStateCreateInfoNV+ (bool32ToBool representativeFragmentTestEnable)++instance Storable PipelineRepresentativeFragmentTestStateCreateInfoNV where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PipelineRepresentativeFragmentTestStateCreateInfoNV where+ zero = PipelineRepresentativeFragmentTestStateCreateInfoNV+ zero+++type NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION"+pattern NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION :: forall a . Integral a => a+pattern NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2+++type NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test"++-- No documentation found for TopLevel "VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME"+pattern NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test"+
+ src/Graphics/Vulkan/Extensions/VK_NV_representative_fragment_test.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test ( PhysicalDeviceRepresentativeFragmentTestFeaturesNV+ , PipelineRepresentativeFragmentTestStateCreateInfoNV+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceRepresentativeFragmentTestFeaturesNV++instance ToCStruct PhysicalDeviceRepresentativeFragmentTestFeaturesNV+instance Show PhysicalDeviceRepresentativeFragmentTestFeaturesNV++instance FromCStruct PhysicalDeviceRepresentativeFragmentTestFeaturesNV+++data PipelineRepresentativeFragmentTestStateCreateInfoNV++instance ToCStruct PipelineRepresentativeFragmentTestStateCreateInfoNV+instance Show PipelineRepresentativeFragmentTestStateCreateInfoNV++instance FromCStruct PipelineRepresentativeFragmentTestStateCreateInfoNV+
src/Graphics/Vulkan/Extensions/VK_NV_sample_mask_override_coverage.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_NV_sample_mask_override_coverage- ( pattern VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION- , pattern VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_NV_sample_mask_override_coverage ( NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION+ , pattern NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION+ , NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME+ , pattern NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION"+pattern NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION :: forall a . Integral a => a+pattern NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 +type NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" --- No documentation found for TopLevel "VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION"-pattern VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION :: Integral a => a-pattern VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME"-pattern VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage"+pattern NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage"+
+ src/Graphics/Vulkan/Extensions/VK_NV_scissor_exclusive.hs view
@@ -0,0 +1,336 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive ( cmdSetExclusiveScissorNV+ , PhysicalDeviceExclusiveScissorFeaturesNV(..)+ , PipelineViewportExclusiveScissorStateCreateInfoNV(..)+ , NV_SCISSOR_EXCLUSIVE_SPEC_VERSION+ , pattern NV_SCISSOR_EXCLUSIVE_SPEC_VERSION+ , NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME+ , pattern NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Utils (maybePeek)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Either (Either)+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 Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetExclusiveScissorNV))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.CommandBufferBuilding (Rect2D)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetExclusiveScissorNV+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Rect2D -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Rect2D -> IO ()++-- | vkCmdSetExclusiveScissorNV - Set the dynamic exclusive scissor+-- rectangles on a command buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @firstExclusiveScissor@ is the index of the first exclusive scissor+-- rectangle whose state is updated by the command.+--+-- - @exclusiveScissorCount@ is the number of exclusive scissor+-- rectangles updated by the command.+--+-- - @pExclusiveScissors@ is a pointer to an array of+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D' structures+-- defining exclusive scissor rectangles.+--+-- = Description+--+-- The scissor rectangles taken from element i of @pExclusiveScissors@+-- replace the current state for the scissor index @firstExclusiveScissor@+-- + i, for i in [0, @exclusiveScissorCount@).+--+-- Each scissor rectangle is described by a+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D' structure, with+-- the @offset.x@ and @offset.y@ values determining the upper left corner+-- of the scissor rectangle, and the @extent.width@ and @extent.height@+-- values determining the size in pixels.+--+-- == Valid Usage+--+-- - The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusive scissor>+-- feature /must/ be enabled.+--+-- - @firstExclusiveScissor@ /must/ be less than+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@+--+-- - The sum of @firstExclusiveScissor@ and @exclusiveScissorCount@+-- /must/ be between @1@ and+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@,+-- inclusive+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>+-- feature is not enabled, @firstExclusiveScissor@ /must/ be @0@+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>+-- feature is not enabled, @exclusiveScissorCount@ /must/ be @1@+--+-- - The @x@ and @y@ members of @offset@ in each member of+-- @pExclusiveScissors@ /must/ be greater than or equal to @0@+--+-- - Evaluation of (@offset.x@ + @extent.width@) for each member of+-- @pExclusiveScissors@ /must/ not cause a signed integer addition+-- overflow+--+-- - Evaluation of (@offset.y@ + @extent.height@) for each member of+-- @pExclusiveScissors@ /must/ not cause a signed integer addition+-- overflow+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pExclusiveScissors@ /must/ be a valid pointer to an array of+-- @exclusiveScissorCount@+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D' structures+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - @exclusiveScissorCount@ /must/ be greater than @0@+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D'+cmdSetExclusiveScissorNV :: CommandBuffer -> ("firstExclusiveScissor" ::: Word32) -> ("exclusiveScissors" ::: Vector Rect2D) -> IO ()+cmdSetExclusiveScissorNV commandBuffer firstExclusiveScissor exclusiveScissors = evalContT $ do+ let vkCmdSetExclusiveScissorNV' = mkVkCmdSetExclusiveScissorNV (pVkCmdSetExclusiveScissorNV (deviceCmds (commandBuffer :: CommandBuffer)))+ pPExclusiveScissors <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (exclusiveScissors)) * 16) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPExclusiveScissors `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (exclusiveScissors)+ lift $ vkCmdSetExclusiveScissorNV' (commandBufferHandle (commandBuffer)) (firstExclusiveScissor) ((fromIntegral (Data.Vector.length $ (exclusiveScissors)) :: Word32)) (pPExclusiveScissors)+ pure $ ()+++-- | VkPhysicalDeviceExclusiveScissorFeaturesNV - Structure describing+-- exclusive scissor features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceExclusiveScissorFeaturesNV' structure+-- describe the following features:+--+-- = Description+--+-- See+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-exclusive-scissor Exclusive Scissor Test>+-- for more information.+--+-- If the 'PhysicalDeviceExclusiveScissorFeaturesNV' structure is included+-- in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceExclusiveScissorFeaturesNV' /can/ also be included in the+-- @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable the feature.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceExclusiveScissorFeaturesNV = PhysicalDeviceExclusiveScissorFeaturesNV+ { -- | @exclusiveScissor@ indicates that the implementation supports the+ -- exclusive scissor test.+ exclusiveScissor :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceExclusiveScissorFeaturesNV++instance ToCStruct PhysicalDeviceExclusiveScissorFeaturesNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceExclusiveScissorFeaturesNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (exclusiveScissor))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceExclusiveScissorFeaturesNV where+ peekCStruct p = do+ exclusiveScissor <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceExclusiveScissorFeaturesNV+ (bool32ToBool exclusiveScissor)++instance Storable PhysicalDeviceExclusiveScissorFeaturesNV where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceExclusiveScissorFeaturesNV where+ zero = PhysicalDeviceExclusiveScissorFeaturesNV+ zero+++-- | VkPipelineViewportExclusiveScissorStateCreateInfoNV - Structure+-- specifying parameters controlling exclusive scissor testing+--+-- = Description+--+-- If this structure is not present, @exclusiveScissorCount@ is considered+-- to be @0@ and the exclusive scissor test is disabled.+--+-- == Valid Usage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>+-- feature is not enabled, @exclusiveScissorCount@ /must/ be @0@ or @1@+--+-- - @exclusiveScissorCount@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@+--+-- - @exclusiveScissorCount@ /must/ be @0@ or identical to the+-- @viewportCount@ member of+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'+--+-- - If no element of the @pDynamicStates@ member of @pDynamicState@ is+-- 'Graphics.Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV'+-- and @exclusiveScissorCount@ is not @0@, @pExclusiveScissors@ /must/+-- be a valid pointer to an array of @exclusiveScissorCount@+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D' structures+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV'+--+-- - If @exclusiveScissorCount@ is not @0@, and @pExclusiveScissors@ is+-- not @NULL@, @pExclusiveScissors@ /must/ be a valid pointer to an+-- array of @exclusiveScissorCount@+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D' structures+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineViewportExclusiveScissorStateCreateInfoNV = PipelineViewportExclusiveScissorStateCreateInfoNV+ { -- | @pExclusiveScissors@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D' structures+ -- defining exclusive scissor rectangles. If the exclusive scissor state is+ -- dynamic, this member is ignored.+ exclusiveScissors :: Either Word32 (Vector Rect2D) }+ deriving (Typeable)+deriving instance Show PipelineViewportExclusiveScissorStateCreateInfoNV++instance ToCStruct PipelineViewportExclusiveScissorStateCreateInfoNV where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineViewportExclusiveScissorStateCreateInfoNV{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (either id (fromIntegral . Data.Vector.length) (exclusiveScissors)) :: Word32))+ pExclusiveScissors'' <- case (exclusiveScissors) of+ Left _ -> pure nullPtr+ Right v -> do+ pPExclusiveScissors' <- ContT $ allocaBytesAligned @Rect2D ((Data.Vector.length (v)) * 16) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPExclusiveScissors' `plusPtr` (16 * (i)) :: Ptr Rect2D) (e) . ($ ())) (v)+ pure $ pPExclusiveScissors'+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Rect2D))) pExclusiveScissors''+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ f++instance FromCStruct PipelineViewportExclusiveScissorStateCreateInfoNV where+ peekCStruct p = do+ exclusiveScissorCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pExclusiveScissors <- peek @(Ptr Rect2D) ((p `plusPtr` 24 :: Ptr (Ptr Rect2D)))+ pExclusiveScissors' <- maybePeek (\j -> generateM (fromIntegral exclusiveScissorCount) (\i -> peekCStruct @Rect2D (((j) `advancePtrBytes` (16 * (i)) :: Ptr Rect2D)))) pExclusiveScissors+ let pExclusiveScissors'' = maybe (Left exclusiveScissorCount) Right pExclusiveScissors'+ pure $ PipelineViewportExclusiveScissorStateCreateInfoNV+ pExclusiveScissors''++instance Zero PipelineViewportExclusiveScissorStateCreateInfoNV where+ zero = PipelineViewportExclusiveScissorStateCreateInfoNV+ (Left 0)+++type NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION"+pattern NV_SCISSOR_EXCLUSIVE_SPEC_VERSION :: forall a . Integral a => a+pattern NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1+++type NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive"++-- No documentation found for TopLevel "VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME"+pattern NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive"+
+ src/Graphics/Vulkan/Extensions/VK_NV_scissor_exclusive.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive ( PhysicalDeviceExclusiveScissorFeaturesNV+ , PipelineViewportExclusiveScissorStateCreateInfoNV+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceExclusiveScissorFeaturesNV++instance ToCStruct PhysicalDeviceExclusiveScissorFeaturesNV+instance Show PhysicalDeviceExclusiveScissorFeaturesNV++instance FromCStruct PhysicalDeviceExclusiveScissorFeaturesNV+++data PipelineViewportExclusiveScissorStateCreateInfoNV++instance ToCStruct PipelineViewportExclusiveScissorStateCreateInfoNV+instance Show PipelineViewportExclusiveScissorStateCreateInfoNV++instance FromCStruct PipelineViewportExclusiveScissorStateCreateInfoNV+
+ src/Graphics/Vulkan/Extensions/VK_NV_shader_image_footprint.hs view
@@ -0,0 +1,105 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_shader_image_footprint ( PhysicalDeviceShaderImageFootprintFeaturesNV(..)+ , NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION+ , pattern NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION+ , NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME+ , pattern NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV))+-- | VkPhysicalDeviceShaderImageFootprintFeaturesNV - Structure describing+-- shader image footprint features that can be supported by an+-- implementation+--+-- = Description+--+-- See+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-footprint Texel Footprint Evaluation>+-- for more information.+--+-- If the 'PhysicalDeviceShaderImageFootprintFeaturesNV' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether each feature is supported.+-- 'PhysicalDeviceShaderImageFootprintFeaturesNV' /can/ also be included in+-- the @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceShaderImageFootprintFeaturesNV = PhysicalDeviceShaderImageFootprintFeaturesNV+ { -- | @imageFootprint@ specifies whether the implementation supports the+ -- @ImageFootprintNV@ SPIR-V capability.+ imageFootprint :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceShaderImageFootprintFeaturesNV++instance ToCStruct PhysicalDeviceShaderImageFootprintFeaturesNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceShaderImageFootprintFeaturesNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (imageFootprint))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceShaderImageFootprintFeaturesNV where+ peekCStruct p = do+ imageFootprint <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceShaderImageFootprintFeaturesNV+ (bool32ToBool imageFootprint)++instance Storable PhysicalDeviceShaderImageFootprintFeaturesNV where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceShaderImageFootprintFeaturesNV where+ zero = PhysicalDeviceShaderImageFootprintFeaturesNV+ zero+++type NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION"+pattern NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION :: forall a . Integral a => a+pattern NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2+++type NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint"++-- No documentation found for TopLevel "VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME"+pattern NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint"+
+ src/Graphics/Vulkan/Extensions/VK_NV_shader_image_footprint.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_shader_image_footprint (PhysicalDeviceShaderImageFootprintFeaturesNV) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceShaderImageFootprintFeaturesNV++instance ToCStruct PhysicalDeviceShaderImageFootprintFeaturesNV+instance Show PhysicalDeviceShaderImageFootprintFeaturesNV++instance FromCStruct PhysicalDeviceShaderImageFootprintFeaturesNV+
+ src/Graphics/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs view
@@ -0,0 +1,174 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_shader_sm_builtins ( PhysicalDeviceShaderSMBuiltinsPropertiesNV(..)+ , PhysicalDeviceShaderSMBuiltinsFeaturesNV(..)+ , NV_SHADER_SM_BUILTINS_SPEC_VERSION+ , pattern NV_SHADER_SM_BUILTINS_SPEC_VERSION+ , NV_SHADER_SM_BUILTINS_EXTENSION_NAME+ , pattern NV_SHADER_SM_BUILTINS_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+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 Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Kind (Type)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV))+-- | VkPhysicalDeviceShaderSMBuiltinsPropertiesNV - Structure describing+-- shader SM Builtins properties supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceShaderSMBuiltinsPropertiesNV'+-- structure describe the following implementation-dependent limits:+--+-- = Description+--+-- If the 'PhysicalDeviceShaderSMBuiltinsPropertiesNV' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceShaderSMBuiltinsPropertiesNV = PhysicalDeviceShaderSMBuiltinsPropertiesNV+ { -- | @shaderSMCount@ is the number of SMs on the device.+ shaderSMCount :: Word32+ , -- | @shaderWarpsPerSM@ is the maximum number of simultaneously executing+ -- warps on an SM.+ shaderWarpsPerSM :: Word32+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceShaderSMBuiltinsPropertiesNV++instance ToCStruct PhysicalDeviceShaderSMBuiltinsPropertiesNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceShaderSMBuiltinsPropertiesNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (shaderSMCount)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (shaderWarpsPerSM)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)+ f++instance FromCStruct PhysicalDeviceShaderSMBuiltinsPropertiesNV where+ peekCStruct p = do+ shaderSMCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ shaderWarpsPerSM <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pure $ PhysicalDeviceShaderSMBuiltinsPropertiesNV+ shaderSMCount shaderWarpsPerSM++instance Storable PhysicalDeviceShaderSMBuiltinsPropertiesNV where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceShaderSMBuiltinsPropertiesNV where+ zero = PhysicalDeviceShaderSMBuiltinsPropertiesNV+ zero+ zero+++-- | VkPhysicalDeviceShaderSMBuiltinsFeaturesNV - Structure describing the+-- shader SM Builtins features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceShaderSMBuiltinsFeaturesNV' structure+-- describe the following features:+--+-- = Description+--+-- If the 'PhysicalDeviceShaderSMBuiltinsFeaturesNV' structure is included+-- in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceShaderSMBuiltinsFeaturesNV' /can/ also be included in the+-- @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable the feature.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceShaderSMBuiltinsFeaturesNV = PhysicalDeviceShaderSMBuiltinsFeaturesNV+ { -- | @shaderSMBuiltins@ indicates whether the implementation supports the+ -- SPIR-V @ShaderSMBuiltinsNV@ capability.+ shaderSMBuiltins :: Bool }+ deriving (Typeable)+deriving instance Show PhysicalDeviceShaderSMBuiltinsFeaturesNV++instance ToCStruct PhysicalDeviceShaderSMBuiltinsFeaturesNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceShaderSMBuiltinsFeaturesNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderSMBuiltins))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceShaderSMBuiltinsFeaturesNV where+ peekCStruct p = do+ shaderSMBuiltins <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ pure $ PhysicalDeviceShaderSMBuiltinsFeaturesNV+ (bool32ToBool shaderSMBuiltins)++instance Storable PhysicalDeviceShaderSMBuiltinsFeaturesNV where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceShaderSMBuiltinsFeaturesNV where+ zero = PhysicalDeviceShaderSMBuiltinsFeaturesNV+ zero+++type NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION"+pattern NV_SHADER_SM_BUILTINS_SPEC_VERSION :: forall a . Integral a => a+pattern NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1+++type NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins"++-- No documentation found for TopLevel "VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME"+pattern NV_SHADER_SM_BUILTINS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins"+
+ src/Graphics/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_shader_sm_builtins ( PhysicalDeviceShaderSMBuiltinsFeaturesNV+ , PhysicalDeviceShaderSMBuiltinsPropertiesNV+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PhysicalDeviceShaderSMBuiltinsFeaturesNV++instance ToCStruct PhysicalDeviceShaderSMBuiltinsFeaturesNV+instance Show PhysicalDeviceShaderSMBuiltinsFeaturesNV++instance FromCStruct PhysicalDeviceShaderSMBuiltinsFeaturesNV+++data PhysicalDeviceShaderSMBuiltinsPropertiesNV++instance ToCStruct PhysicalDeviceShaderSMBuiltinsPropertiesNV+instance Show PhysicalDeviceShaderSMBuiltinsPropertiesNV++instance FromCStruct PhysicalDeviceShaderSMBuiltinsPropertiesNV+
src/Graphics/Vulkan/Extensions/VK_NV_shader_subgroup_partitioned.hs view
@@ -1,32 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}+module Graphics.Vulkan.Extensions.VK_NV_shader_subgroup_partitioned ( NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION+ , pattern NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION+ , NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME+ , pattern NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_NV_shader_subgroup_partitioned- ( pattern VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV- , pattern VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION- , pattern VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME- ) where+import Data.String (IsString) -import Data.String- ( IsString- )+type NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION"+pattern NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION :: forall a . Integral a => a+pattern NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 -import Graphics.Vulkan.Core11.Promoted_From_VK_KHR_subgroup- ( VkSubgroupFeatureFlagBits(..)- ) +type NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" --- | @VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV@ specifies the device will--- accept SPIR-V shader modules that contain the--- @GroupNonUniformPartitionedNV@ capability.-pattern VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV :: VkSubgroupFeatureFlagBits-pattern VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = VkSubgroupFeatureFlagBits 0x00000100--- No documentation found for TopLevel "VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION"-pattern VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION :: Integral a => a-pattern VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME"-pattern VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned"+pattern NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned"+
+ src/Graphics/Vulkan/Extensions/VK_NV_shading_rate_image.hs view
@@ -0,0 +1,1125 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_shading_rate_image ( cmdBindShadingRateImageNV+ , cmdSetViewportShadingRatePaletteNV+ , cmdSetCoarseSampleOrderNV+ , ShadingRatePaletteNV(..)+ , PipelineViewportShadingRateImageStateCreateInfoNV(..)+ , PhysicalDeviceShadingRateImageFeaturesNV(..)+ , PhysicalDeviceShadingRateImagePropertiesNV(..)+ , CoarseSampleLocationNV(..)+ , CoarseSampleOrderCustomNV(..)+ , PipelineViewportCoarseSampleOrderStateCreateInfoNV(..)+ , ShadingRatePaletteEntryNV( SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV+ , SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV+ , SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV+ , SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV+ , SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV+ , SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV+ , SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV+ , SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV+ , SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV+ , SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV+ , SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV+ , SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV+ , ..+ )+ , CoarseSampleOrderTypeNV( COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV+ , COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV+ , COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV+ , COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV+ , ..+ )+ , NV_SHADING_RATE_IMAGE_SPEC_VERSION+ , pattern NV_SHADING_RATE_IMAGE_SPEC_VERSION+ , NV_SHADING_RATE_IMAGE_EXTENSION_NAME+ , pattern NV_SHADING_RATE_IMAGE_EXTENSION_NAME+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Marshal.Utils (maybePeek)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Either (Either)+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 Data.Int (Int32)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (bool32ToBool)+import Graphics.Vulkan.Core10.BaseType (boolToBool32)+import Graphics.Vulkan.NamedType ((:::))+import Graphics.Vulkan.Core10.BaseType (Bool32)+import Graphics.Vulkan.Core10.Handles (CommandBuffer)+import Graphics.Vulkan.Core10.Handles (CommandBuffer(..))+import Graphics.Vulkan.Core10.Handles (CommandBuffer_T)+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdBindShadingRateImageNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetCoarseSampleOrderNV))+import Graphics.Vulkan.Dynamic (DeviceCmds(pVkCmdSetViewportShadingRatePaletteNV))+import Graphics.Vulkan.Core10.SharedTypes (Extent2D)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout)+import Graphics.Vulkan.Core10.Enums.ImageLayout (ImageLayout(..))+import Graphics.Vulkan.Core10.Handles (ImageView)+import Graphics.Vulkan.Core10.Handles (ImageView(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV))+foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdBindShadingRateImageNV+ :: FunPtr (Ptr CommandBuffer_T -> ImageView -> ImageLayout -> IO ()) -> Ptr CommandBuffer_T -> ImageView -> ImageLayout -> IO ()++-- | vkCmdBindShadingRateImageNV - Bind a shading rate image on a command+-- buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - 'Graphics.Vulkan.Core10.Handles.ImageView' is an image view handle+-- specifying the shading rate image.+-- 'Graphics.Vulkan.Core10.Handles.ImageView' /may/ be set to+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', which is+-- equivalent to specifying a view of an image filled with zero values.+--+-- - 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' is the layout+-- that the image subresources accessible from+-- 'Graphics.Vulkan.Core10.Handles.ImageView' will be in when the+-- shading rate image is accessed.+--+-- == Valid Usage+--+-- - The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>+-- feature /must/ be enabled.+--+-- - If 'Graphics.Vulkan.Core10.Handles.ImageView' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ be a+-- valid 'Graphics.Vulkan.Core10.Handles.ImageView' handle of type+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D' or+-- 'Graphics.Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'.+--+-- - If 'Graphics.Vulkan.Core10.Handles.ImageView' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ have a+-- format of 'Graphics.Vulkan.Core10.Enums.Format.FORMAT_R8_UINT'.+--+-- - If 'Graphics.Vulkan.Core10.Handles.ImageView' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ have+-- been created with a @usage@ value including+-- 'Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV'+--+-- - If 'Graphics.Vulkan.Core10.Handles.ImageView' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ match+-- the actual 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' of+-- each subresource accessible from+-- 'Graphics.Vulkan.Core10.Handles.ImageView' at the time the+-- subresource is accessed.+--+-- - If 'Graphics.Vulkan.Core10.Handles.ImageView' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ be+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV'+-- or 'Graphics.Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - If 'Graphics.Vulkan.Core10.Handles.ImageView' is not+-- 'Graphics.Vulkan.Core10.APIConstants.NULL_HANDLE',+-- 'Graphics.Vulkan.Core10.Handles.ImageView' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.ImageView' handle+--+-- - 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' /must/ be a+-- valid 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout' value+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - Both of 'Graphics.Vulkan.Core10.Handles.CommandBuffer', and+-- 'Graphics.Vulkan.Core10.Handles.ImageView' that are valid handles of+-- non-ignored parameters /must/ have been created, allocated, or+-- retrieved from the same 'Graphics.Vulkan.Core10.Handles.Device'+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer',+-- 'Graphics.Vulkan.Core10.Enums.ImageLayout.ImageLayout',+-- 'Graphics.Vulkan.Core10.Handles.ImageView'+cmdBindShadingRateImageNV :: CommandBuffer -> ImageView -> ImageLayout -> IO ()+cmdBindShadingRateImageNV commandBuffer imageView imageLayout = do+ let vkCmdBindShadingRateImageNV' = mkVkCmdBindShadingRateImageNV (pVkCmdBindShadingRateImageNV (deviceCmds (commandBuffer :: CommandBuffer)))+ vkCmdBindShadingRateImageNV' (commandBufferHandle (commandBuffer)) (imageView) (imageLayout)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetViewportShadingRatePaletteNV+ :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr ShadingRatePaletteNV -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr ShadingRatePaletteNV -> IO ()++-- | vkCmdSetViewportShadingRatePaletteNV - Set shading rate image palettes+-- on a command buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @firstViewport@ is the index of the first viewport whose shading+-- rate palette is updated by the command.+--+-- - @viewportCount@ is the number of viewports whose shading rate+-- palettes are updated by the command.+--+-- - @pShadingRatePalettes@ is a pointer to an array of+-- 'ShadingRatePaletteNV' structures defining the palette for each+-- viewport.+--+-- == Valid Usage+--+-- - The+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>+-- feature /must/ be enabled.+--+-- - @firstViewport@ /must/ be less than+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@+--+-- - The sum of @firstViewport@ and @viewportCount@ /must/ be between @1@+-- and+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@,+-- inclusive+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>+-- feature is not enabled, @firstViewport@ /must/ be @0@+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>+-- feature is not enabled, @viewportCount@ /must/ be @1@+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @pShadingRatePalettes@ /must/ be a valid pointer to an array of+-- @viewportCount@ valid 'ShadingRatePaletteNV' structures+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- - @viewportCount@ /must/ be greater than @0@+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer', 'ShadingRatePaletteNV'+cmdSetViewportShadingRatePaletteNV :: CommandBuffer -> ("firstViewport" ::: Word32) -> ("shadingRatePalettes" ::: Vector ShadingRatePaletteNV) -> IO ()+cmdSetViewportShadingRatePaletteNV commandBuffer firstViewport shadingRatePalettes = evalContT $ do+ let vkCmdSetViewportShadingRatePaletteNV' = mkVkCmdSetViewportShadingRatePaletteNV (pVkCmdSetViewportShadingRatePaletteNV (deviceCmds (commandBuffer :: CommandBuffer)))+ pPShadingRatePalettes <- ContT $ allocaBytesAligned @ShadingRatePaletteNV ((Data.Vector.length (shadingRatePalettes)) * 16) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPShadingRatePalettes `plusPtr` (16 * (i)) :: Ptr ShadingRatePaletteNV) (e) . ($ ())) (shadingRatePalettes)+ lift $ vkCmdSetViewportShadingRatePaletteNV' (commandBufferHandle (commandBuffer)) (firstViewport) ((fromIntegral (Data.Vector.length $ (shadingRatePalettes)) :: Word32)) (pPShadingRatePalettes)+ pure $ ()+++foreign import ccall+#if !defined(SAFE_FOREIGN_CALLS)+ unsafe+#endif+ "dynamic" mkVkCmdSetCoarseSampleOrderNV+ :: FunPtr (Ptr CommandBuffer_T -> CoarseSampleOrderTypeNV -> Word32 -> Ptr CoarseSampleOrderCustomNV -> IO ()) -> Ptr CommandBuffer_T -> CoarseSampleOrderTypeNV -> Word32 -> Ptr CoarseSampleOrderCustomNV -> IO ()++-- | vkCmdSetCoarseSampleOrderNV - Set sample order for coarse fragments on a+-- command buffer+--+-- = Parameters+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' is the command buffer+-- into which the command will be recorded.+--+-- - @sampleOrderType@ specifies the mechanism used to order coverage+-- samples in fragments larger than one pixel.+--+-- - @customSampleOrderCount@ specifies the number of custom sample+-- orderings to use when ordering coverage samples.+--+-- - @pCustomSampleOrders@ is a pointer to an array of+-- 'CoarseSampleOrderCustomNV' structures, each of which specifies the+-- coverage sample order for a single combination of fragment area and+-- coverage sample count.+--+-- = Description+--+-- If @sampleOrderType@ is 'COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV', the+-- coverage sample order used for any combination of fragment area and+-- coverage sample count not enumerated in @pCustomSampleOrders@ will be+-- identical to that used for 'COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV'.+--+-- == Valid Usage+--+-- - If @sampleOrderType@ is not 'COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV',+-- @customSamplerOrderCount@ /must/ be @0@+--+-- - The array @pCustomSampleOrders@ /must/ not contain two structures+-- with matching values for both the @shadingRate@ and @sampleCount@+-- members.+--+-- == Valid Usage (Implicit)+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be a valid+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' handle+--+-- - @sampleOrderType@ /must/ be a valid 'CoarseSampleOrderTypeNV' value+--+-- - If @customSampleOrderCount@ is not @0@, @pCustomSampleOrders@ /must/+-- be a valid pointer to an array of @customSampleOrderCount@ valid+-- 'CoarseSampleOrderCustomNV' structures+--+-- - 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/ be in the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>+--+-- - The 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ support graphics operations+--+-- == Host Synchronization+--+-- - Host access to 'Graphics.Vulkan.Core10.Handles.CommandBuffer' /must/+-- be externally synchronized+--+-- - Host access to the 'Graphics.Vulkan.Core10.Handles.CommandPool' that+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer' was allocated from+-- /must/ be externally synchronized+--+-- == Command Properties+--+-- \'+--+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types Pipeline Type> |+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+=====================================================================================================================================++-- | Primary | Both | Graphics | |+-- | Secondary | | | |+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------++--+-- = See Also+--+-- 'CoarseSampleOrderCustomNV', 'CoarseSampleOrderTypeNV',+-- 'Graphics.Vulkan.Core10.Handles.CommandBuffer'+cmdSetCoarseSampleOrderNV :: CommandBuffer -> CoarseSampleOrderTypeNV -> ("customSampleOrders" ::: Vector CoarseSampleOrderCustomNV) -> IO ()+cmdSetCoarseSampleOrderNV commandBuffer sampleOrderType customSampleOrders = evalContT $ do+ let vkCmdSetCoarseSampleOrderNV' = mkVkCmdSetCoarseSampleOrderNV (pVkCmdSetCoarseSampleOrderNV (deviceCmds (commandBuffer :: CommandBuffer)))+ pPCustomSampleOrders <- ContT $ allocaBytesAligned @CoarseSampleOrderCustomNV ((Data.Vector.length (customSampleOrders)) * 24) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPCustomSampleOrders `plusPtr` (24 * (i)) :: Ptr CoarseSampleOrderCustomNV) (e) . ($ ())) (customSampleOrders)+ lift $ vkCmdSetCoarseSampleOrderNV' (commandBufferHandle (commandBuffer)) (sampleOrderType) ((fromIntegral (Data.Vector.length $ (customSampleOrders)) :: Word32)) (pPCustomSampleOrders)+ pure $ ()+++-- | VkShadingRatePaletteNV - Structure specifying a single shading rate+-- palette+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'PipelineViewportShadingRateImageStateCreateInfoNV',+-- 'ShadingRatePaletteEntryNV', 'cmdSetViewportShadingRatePaletteNV'+data ShadingRatePaletteNV = ShadingRatePaletteNV+ { -- | @pShadingRatePaletteEntries@ /must/ be a valid pointer to an array of+ -- @shadingRatePaletteEntryCount@ valid 'ShadingRatePaletteEntryNV' values+ shadingRatePaletteEntries :: Vector ShadingRatePaletteEntryNV }+ deriving (Typeable)+deriving instance Show ShadingRatePaletteNV++instance ToCStruct ShadingRatePaletteNV where+ withCStruct x f = allocaBytesAligned 16 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ShadingRatePaletteNV{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (shadingRatePaletteEntries)) :: Word32))+ pPShadingRatePaletteEntries' <- ContT $ allocaBytesAligned @ShadingRatePaletteEntryNV ((Data.Vector.length (shadingRatePaletteEntries)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPShadingRatePaletteEntries' `plusPtr` (4 * (i)) :: Ptr ShadingRatePaletteEntryNV) (e)) (shadingRatePaletteEntries)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ShadingRatePaletteEntryNV))) (pPShadingRatePaletteEntries')+ lift $ f+ cStructSize = 16+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ pPShadingRatePaletteEntries' <- ContT $ allocaBytesAligned @ShadingRatePaletteEntryNV ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPShadingRatePaletteEntries' `plusPtr` (4 * (i)) :: Ptr ShadingRatePaletteEntryNV) (e)) (mempty)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ShadingRatePaletteEntryNV))) (pPShadingRatePaletteEntries')+ lift $ f++instance FromCStruct ShadingRatePaletteNV where+ peekCStruct p = do+ shadingRatePaletteEntryCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ pShadingRatePaletteEntries <- peek @(Ptr ShadingRatePaletteEntryNV) ((p `plusPtr` 8 :: Ptr (Ptr ShadingRatePaletteEntryNV)))+ pShadingRatePaletteEntries' <- generateM (fromIntegral shadingRatePaletteEntryCount) (\i -> peek @ShadingRatePaletteEntryNV ((pShadingRatePaletteEntries `advancePtrBytes` (4 * (i)) :: Ptr ShadingRatePaletteEntryNV)))+ pure $ ShadingRatePaletteNV+ pShadingRatePaletteEntries'++instance Zero ShadingRatePaletteNV where+ zero = ShadingRatePaletteNV+ mempty+++-- | VkPipelineViewportShadingRateImageStateCreateInfoNV - Structure+-- specifying parameters controlling shading rate image usage+--+-- = Description+--+-- If this structure is not present, @shadingRateImageEnable@ is considered+-- to be 'Graphics.Vulkan.Core10.BaseType.FALSE', and the shading rate+-- image and palettes are not used.+--+-- == Valid Usage+--+-- - If the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>+-- feature is not enabled, @viewportCount@ /must/ be @0@ or @1@+--+-- - @viewportCount@ /must/ be less than or equal to+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@+--+-- - If @shadingRateImageEnable@ is+-- 'Graphics.Vulkan.Core10.BaseType.TRUE', @viewportCount@ /must/ be+-- equal to the @viewportCount@ member of+-- 'Graphics.Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'+--+-- - If no element of the @pDynamicStates@ member of @pDynamicState@ is+-- 'Graphics.Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV',+-- @pShadingRatePalettes@ /must/ be a valid pointer to an array of+-- @viewportCount@ 'ShadingRatePaletteNV' structures+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV'+--+-- - If @viewportCount@ is not @0@, and @pShadingRatePalettes@ is not+-- @NULL@, @pShadingRatePalettes@ /must/ be a valid pointer to an array+-- of @viewportCount@ valid 'ShadingRatePaletteNV' structures+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32', 'ShadingRatePaletteNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineViewportShadingRateImageStateCreateInfoNV = PipelineViewportShadingRateImageStateCreateInfoNV+ { -- | @shadingRateImageEnable@ specifies whether shading rate image and+ -- palettes are used during rasterization.+ shadingRateImageEnable :: Bool+ , -- | @pShadingRatePalettes@ is a pointer to an array of+ -- 'ShadingRatePaletteNV' structures defining the palette for each+ -- viewport. If the shading rate palette state is dynamic, this member is+ -- ignored.+ shadingRatePalettes :: Either Word32 (Vector ShadingRatePaletteNV)+ }+ deriving (Typeable)+deriving instance Show PipelineViewportShadingRateImageStateCreateInfoNV++instance ToCStruct PipelineViewportShadingRateImageStateCreateInfoNV where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineViewportShadingRateImageStateCreateInfoNV{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shadingRateImageEnable))+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (either id (fromIntegral . Data.Vector.length) (shadingRatePalettes)) :: Word32))+ pShadingRatePalettes'' <- case (shadingRatePalettes) of+ Left _ -> pure nullPtr+ Right v -> do+ pPShadingRatePalettes' <- ContT $ allocaBytesAligned @ShadingRatePaletteNV ((Data.Vector.length (v)) * 16) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPShadingRatePalettes' `plusPtr` (16 * (i)) :: Ptr ShadingRatePaletteNV) (e) . ($ ())) (v)+ pure $ pPShadingRatePalettes'+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ShadingRatePaletteNV))) pShadingRatePalettes''+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PipelineViewportShadingRateImageStateCreateInfoNV where+ peekCStruct p = do+ shadingRateImageEnable <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ viewportCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pShadingRatePalettes <- peek @(Ptr ShadingRatePaletteNV) ((p `plusPtr` 24 :: Ptr (Ptr ShadingRatePaletteNV)))+ pShadingRatePalettes' <- maybePeek (\j -> generateM (fromIntegral viewportCount) (\i -> peekCStruct @ShadingRatePaletteNV (((j) `advancePtrBytes` (16 * (i)) :: Ptr ShadingRatePaletteNV)))) pShadingRatePalettes+ let pShadingRatePalettes'' = maybe (Left viewportCount) Right pShadingRatePalettes'+ pure $ PipelineViewportShadingRateImageStateCreateInfoNV+ (bool32ToBool shadingRateImageEnable) pShadingRatePalettes''++instance Zero PipelineViewportShadingRateImageStateCreateInfoNV where+ zero = PipelineViewportShadingRateImageStateCreateInfoNV+ zero+ (Left 0)+++-- | VkPhysicalDeviceShadingRateImageFeaturesNV - Structure describing+-- shading rate image features that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceShadingRateImageFeaturesNV' structure+-- describe the following features:+--+-- = Description+--+-- See+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-image Shading Rate Image>+-- for more information.+--+-- If the 'PhysicalDeviceShadingRateImageFeaturesNV' structure is included+-- in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',+-- it is filled with values indicating whether the feature is supported.+-- 'PhysicalDeviceShadingRateImageFeaturesNV' /can/ also be included in the+-- @pNext@ chain of 'Graphics.Vulkan.Core10.Device.DeviceCreateInfo' to+-- enable features.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.BaseType.Bool32',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceShadingRateImageFeaturesNV = PhysicalDeviceShadingRateImageFeaturesNV+ { -- | @shadingRateImage@ indicates that the implementation supports the use of+ -- a shading rate image to derive an effective shading rate for fragment+ -- processing. It also indicates that the implementation supports the+ -- @ShadingRateNV@ SPIR-V execution mode.+ shadingRateImage :: Bool+ , -- | @shadingRateCoarseSampleOrder@ indicates that the implementation+ -- supports a user-configurable ordering of coverage samples in fragments+ -- larger than one pixel.+ shadingRateCoarseSampleOrder :: Bool+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceShadingRateImageFeaturesNV++instance ToCStruct PhysicalDeviceShadingRateImageFeaturesNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceShadingRateImageFeaturesNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shadingRateImage))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (shadingRateCoarseSampleOrder))+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))+ poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))+ f++instance FromCStruct PhysicalDeviceShadingRateImageFeaturesNV where+ peekCStruct p = do+ shadingRateImage <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))+ shadingRateCoarseSampleOrder <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))+ pure $ PhysicalDeviceShadingRateImageFeaturesNV+ (bool32ToBool shadingRateImage) (bool32ToBool shadingRateCoarseSampleOrder)++instance Storable PhysicalDeviceShadingRateImageFeaturesNV where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero PhysicalDeviceShadingRateImageFeaturesNV where+ zero = PhysicalDeviceShadingRateImageFeaturesNV+ zero+ zero+++-- | VkPhysicalDeviceShadingRateImagePropertiesNV - Structure describing+-- shading rate image limits that can be supported by an implementation+--+-- = Members+--+-- The members of the 'PhysicalDeviceShadingRateImagePropertiesNV'+-- structure describe the following implementation-dependent properties+-- related to the+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image>+-- feature:+--+-- = Description+--+-- If the 'PhysicalDeviceShadingRateImagePropertiesNV' structure is+-- included in the @pNext@ chain of+-- 'Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',+-- it is filled with the implementation-dependent limits.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.SharedTypes.Extent2D',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PhysicalDeviceShadingRateImagePropertiesNV = PhysicalDeviceShadingRateImagePropertiesNV+ { -- | @shadingRateTexelSize@ indicates the width and height of the portion of+ -- the framebuffer corresponding to each texel in the shading rate image.+ shadingRateTexelSize :: Extent2D+ , -- | @shadingRatePaletteSize@ indicates the maximum number of palette entries+ -- supported for the shading rate image.+ shadingRatePaletteSize :: Word32+ , -- | @shadingRateMaxCoarseSamples@ specifies the maximum number of coverage+ -- samples supported in a single fragment. If the product of the fragment+ -- size derived from the base shading rate and the number of coverage+ -- samples per pixel exceeds this limit, the final shading rate will be+ -- adjusted so that its product does not exceed the limit.+ shadingRateMaxCoarseSamples :: Word32+ }+ deriving (Typeable)+deriving instance Show PhysicalDeviceShadingRateImagePropertiesNV++instance ToCStruct PhysicalDeviceShadingRateImagePropertiesNV where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PhysicalDeviceShadingRateImagePropertiesNV{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (shadingRateTexelSize) . ($ ())+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (shadingRatePaletteSize)+ lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (shadingRateMaxCoarseSamples)+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ ContT $ pokeCStruct ((p `plusPtr` 16 :: Ptr Extent2D)) (zero) . ($ ())+ lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)+ lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)+ lift $ f++instance FromCStruct PhysicalDeviceShadingRateImagePropertiesNV where+ peekCStruct p = do+ shadingRateTexelSize <- peekCStruct @Extent2D ((p `plusPtr` 16 :: Ptr Extent2D))+ shadingRatePaletteSize <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))+ shadingRateMaxCoarseSamples <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))+ pure $ PhysicalDeviceShadingRateImagePropertiesNV+ shadingRateTexelSize shadingRatePaletteSize shadingRateMaxCoarseSamples++instance Zero PhysicalDeviceShadingRateImagePropertiesNV where+ zero = PhysicalDeviceShadingRateImagePropertiesNV+ zero+ zero+ zero+++-- | VkCoarseSampleLocationNV - Structure specifying parameters controlling+-- shading rate image usage+--+-- == Valid Usage+--+-- = See Also+--+-- 'CoarseSampleOrderCustomNV'+data CoarseSampleLocationNV = CoarseSampleLocationNV+ { -- | @pixelX@ /must/ be less than the width (in pixels) of the fragment.+ pixelX :: Word32+ , -- | @pixelY@ /must/ be less than the height (in pixels) of the fragment.+ pixelY :: Word32+ , -- | @sample@ /must/ be less than the number of coverage samples in each+ -- pixel belonging to the fragment.+ sample :: Word32+ }+ deriving (Typeable)+deriving instance Show CoarseSampleLocationNV++instance ToCStruct CoarseSampleLocationNV where+ withCStruct x f = allocaBytesAligned 12 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p CoarseSampleLocationNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (pixelX)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (pixelY)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (sample)+ f+ cStructSize = 12+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)+ f++instance FromCStruct CoarseSampleLocationNV where+ peekCStruct p = do+ pixelX <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))+ pixelY <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ sample <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ pure $ CoarseSampleLocationNV+ pixelX pixelY sample++instance Storable CoarseSampleLocationNV where+ sizeOf ~_ = 12+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero CoarseSampleLocationNV where+ zero = CoarseSampleLocationNV+ zero+ zero+ zero+++-- | VkCoarseSampleOrderCustomNV - Structure specifying parameters+-- controlling shading rate image usage+--+-- = Description+--+-- When using a custom sample ordering, element /i/ in @pSampleLocations@+-- specifies a specific pixel and per-pixel coverage sample number that+-- corresponds to the coverage sample numbered /i/ in the multi-pixel+-- fragment.+--+-- == Valid Usage+--+-- - @shadingRate@ /must/ be a shading rate that generates fragments with+-- more than one pixel.+--+-- - @sampleCount@ /must/ correspond to a sample count enumerated in+-- 'Graphics.Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlags'+-- whose corresponding bit is set in+-- 'Graphics.Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@framebufferNoAttachmentsSampleCounts@.+--+-- - @sampleLocationCount@ /must/ be equal to the product of+-- @sampleCount@, the fragment width for @shadingRate@, and the+-- fragment height for @shadingRate@.+--+-- - @sampleLocationCount@ /must/ be less than or equal to the value of+-- 'PhysicalDeviceShadingRateImagePropertiesNV'::@shadingRateMaxCoarseSamples@.+--+-- - The array @pSampleLocations@ /must/ contain exactly one entry for+-- every combination of valid values for @pixelX@, @pixelY@, and+-- @sample@ in the structure 'CoarseSampleOrderCustomNV'.+--+-- == Valid Usage (Implicit)+--+-- - @shadingRate@ /must/ be a valid 'ShadingRatePaletteEntryNV' value+--+-- - @pSampleLocations@ /must/ be a valid pointer to an array of+-- @sampleLocationCount@ 'CoarseSampleLocationNV' structures+--+-- - @sampleLocationCount@ /must/ be greater than @0@+--+-- = See Also+--+-- 'CoarseSampleLocationNV',+-- 'PipelineViewportCoarseSampleOrderStateCreateInfoNV',+-- 'ShadingRatePaletteEntryNV', 'cmdSetCoarseSampleOrderNV'+data CoarseSampleOrderCustomNV = CoarseSampleOrderCustomNV+ { -- | @shadingRate@ is a shading rate palette entry that identifies the+ -- fragment width and height for the combination of fragment area and+ -- per-pixel coverage sample count to control.+ shadingRate :: ShadingRatePaletteEntryNV+ , -- | @sampleCount@ identifies the per-pixel coverage sample count for the+ -- combination of fragment area and coverage sample count to control.+ sampleCount :: Word32+ , -- | @pSampleLocations@ is a pointer to an array of+ -- 'CoarseSampleOrderCustomNV' structures specifying the location of each+ -- sample in the custom ordering.+ sampleLocations :: Vector CoarseSampleLocationNV+ }+ deriving (Typeable)+deriving instance Show CoarseSampleOrderCustomNV++instance ToCStruct CoarseSampleOrderCustomNV where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p CoarseSampleOrderCustomNV{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr ShadingRatePaletteEntryNV)) (shadingRate)+ lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (sampleCount)+ lift $ poke ((p `plusPtr` 8 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (sampleLocations)) :: Word32))+ pPSampleLocations' <- ContT $ allocaBytesAligned @CoarseSampleLocationNV ((Data.Vector.length (sampleLocations)) * 12) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPSampleLocations' `plusPtr` (12 * (i)) :: Ptr CoarseSampleLocationNV) (e) . ($ ())) (sampleLocations)+ lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CoarseSampleLocationNV))) (pPSampleLocations')+ lift $ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr ShadingRatePaletteEntryNV)) (zero)+ lift $ poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)+ pPSampleLocations' <- ContT $ allocaBytesAligned @CoarseSampleLocationNV ((Data.Vector.length (mempty)) * 12) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPSampleLocations' `plusPtr` (12 * (i)) :: Ptr CoarseSampleLocationNV) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr CoarseSampleLocationNV))) (pPSampleLocations')+ lift $ f++instance FromCStruct CoarseSampleOrderCustomNV where+ peekCStruct p = do+ shadingRate <- peek @ShadingRatePaletteEntryNV ((p `plusPtr` 0 :: Ptr ShadingRatePaletteEntryNV))+ sampleCount <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))+ sampleLocationCount <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))+ pSampleLocations <- peek @(Ptr CoarseSampleLocationNV) ((p `plusPtr` 16 :: Ptr (Ptr CoarseSampleLocationNV)))+ pSampleLocations' <- generateM (fromIntegral sampleLocationCount) (\i -> peekCStruct @CoarseSampleLocationNV ((pSampleLocations `advancePtrBytes` (12 * (i)) :: Ptr CoarseSampleLocationNV)))+ pure $ CoarseSampleOrderCustomNV+ shadingRate sampleCount pSampleLocations'++instance Zero CoarseSampleOrderCustomNV where+ zero = CoarseSampleOrderCustomNV+ zero+ zero+ mempty+++-- | VkPipelineViewportCoarseSampleOrderStateCreateInfoNV - Structure+-- specifying parameters controlling sample order in coarse fragments+--+-- = Description+--+-- If this structure is not present, @sampleOrderType@ is considered to be+-- 'COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV'.+--+-- If @sampleOrderType@ is 'COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV', the+-- coverage sample order used for any combination of fragment area and+-- coverage sample count not enumerated in @pCustomSampleOrders@ will be+-- identical to that used for 'COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV'.+--+-- If the pipeline was created with+-- 'Graphics.Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV',+-- the contents of this structure (if present) are ignored, and the+-- coverage sample order is instead specified by+-- 'cmdSetCoarseSampleOrderNV'.+--+-- == Valid Usage+--+-- - If @sampleOrderType@ is not 'COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV',+-- @customSamplerOrderCount@ /must/ be @0@+--+-- - The array @pCustomSampleOrders@ /must/ not contain two structures+-- with matching values for both the @shadingRate@ and @sampleCount@+-- members.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV'+--+-- - @sampleOrderType@ /must/ be a valid 'CoarseSampleOrderTypeNV' value+--+-- - If @customSampleOrderCount@ is not @0@, @pCustomSampleOrders@ /must/+-- be a valid pointer to an array of @customSampleOrderCount@ valid+-- 'CoarseSampleOrderCustomNV' structures+--+-- = See Also+--+-- 'CoarseSampleOrderCustomNV', 'CoarseSampleOrderTypeNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data PipelineViewportCoarseSampleOrderStateCreateInfoNV = PipelineViewportCoarseSampleOrderStateCreateInfoNV+ { -- | @sampleOrderType@ specifies the mechanism used to order coverage samples+ -- in fragments larger than one pixel.+ sampleOrderType :: CoarseSampleOrderTypeNV+ , -- | @pCustomSampleOrders@ is a pointer to an array of+ -- @customSampleOrderCount@ 'CoarseSampleOrderCustomNV' structures, each of+ -- which specifies the coverage sample order for a single combination of+ -- fragment area and coverage sample count.+ customSampleOrders :: Vector CoarseSampleOrderCustomNV+ }+ deriving (Typeable)+deriving instance Show PipelineViewportCoarseSampleOrderStateCreateInfoNV++instance ToCStruct PipelineViewportCoarseSampleOrderStateCreateInfoNV where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineViewportCoarseSampleOrderStateCreateInfoNV{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr CoarseSampleOrderTypeNV)) (sampleOrderType)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (customSampleOrders)) :: Word32))+ pPCustomSampleOrders' <- ContT $ allocaBytesAligned @CoarseSampleOrderCustomNV ((Data.Vector.length (customSampleOrders)) * 24) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPCustomSampleOrders' `plusPtr` (24 * (i)) :: Ptr CoarseSampleOrderCustomNV) (e) . ($ ())) (customSampleOrders)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr CoarseSampleOrderCustomNV))) (pPCustomSampleOrders')+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr CoarseSampleOrderTypeNV)) (zero)+ pPCustomSampleOrders' <- ContT $ allocaBytesAligned @CoarseSampleOrderCustomNV ((Data.Vector.length (mempty)) * 24) 8+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPCustomSampleOrders' `plusPtr` (24 * (i)) :: Ptr CoarseSampleOrderCustomNV) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr CoarseSampleOrderCustomNV))) (pPCustomSampleOrders')+ lift $ f++instance FromCStruct PipelineViewportCoarseSampleOrderStateCreateInfoNV where+ peekCStruct p = do+ sampleOrderType <- peek @CoarseSampleOrderTypeNV ((p `plusPtr` 16 :: Ptr CoarseSampleOrderTypeNV))+ customSampleOrderCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pCustomSampleOrders <- peek @(Ptr CoarseSampleOrderCustomNV) ((p `plusPtr` 24 :: Ptr (Ptr CoarseSampleOrderCustomNV)))+ pCustomSampleOrders' <- generateM (fromIntegral customSampleOrderCount) (\i -> peekCStruct @CoarseSampleOrderCustomNV ((pCustomSampleOrders `advancePtrBytes` (24 * (i)) :: Ptr CoarseSampleOrderCustomNV)))+ pure $ PipelineViewportCoarseSampleOrderStateCreateInfoNV+ sampleOrderType pCustomSampleOrders'++instance Zero PipelineViewportCoarseSampleOrderStateCreateInfoNV where+ zero = PipelineViewportCoarseSampleOrderStateCreateInfoNV+ zero+ mempty+++-- | VkShadingRatePaletteEntryNV - Shading rate image palette entry types+--+-- = Description+--+-- The following table indicates the width and height (in pixels) of each+-- fragment generated using the indicated shading rate, as well as the+-- maximum number of fragment shader invocations launched for each+-- fragment. When processing regions of a primitive that have a shading+-- rate of 'SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV', no fragments+-- will be generated in that region.+--+-- +-------------------------------------------------------------+-----------------+-----------------+-----------------++-- | Shading Rate | Width | Height | Invocations |+-- +=============================================================+=================+=================+=================++-- | 'SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV' | 0 | 0 | 0 |+-- +-------------------------------------------------------------+-----------------+-----------------+-----------------++-- | 'SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV' | 1 | 1 | 16 |+-- +-------------------------------------------------------------+-----------------+-----------------+-----------------++-- | 'SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV' | 1 | 1 | 8 |+-- +-------------------------------------------------------------+-----------------+-----------------+-----------------++-- | 'SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV' | 1 | 1 | 4 |+-- +-------------------------------------------------------------+-----------------+-----------------+-----------------++-- | 'SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV' | 1 | 1 | 2 |+-- +-------------------------------------------------------------+-----------------+-----------------+-----------------++-- | 'SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV' | 1 | 1 | 1 |+-- +-------------------------------------------------------------+-----------------+-----------------+-----------------++-- | 'SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV' | 2 | 1 | 1 |+-- +-------------------------------------------------------------+-----------------+-----------------+-----------------++-- | 'SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV' | 1 | 2 | 1 |+-- +-------------------------------------------------------------+-----------------+-----------------+-----------------++-- | 'SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV' | 2 | 2 | 1 |+-- +-------------------------------------------------------------+-----------------+-----------------+-----------------++-- | 'SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV' | 4 | 2 | 1 |+-- +-------------------------------------------------------------+-----------------+-----------------+-----------------++-- | 'SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV' | 2 | 4 | 1 |+-- +-------------------------------------------------------------+-----------------+-----------------+-----------------++-- | 'SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV' | 4 | 4 | 1 |+-- +-------------------------------------------------------------+-----------------+-----------------+-----------------++--+-- = See Also+--+-- 'CoarseSampleOrderCustomNV', 'ShadingRatePaletteNV'+newtype ShadingRatePaletteEntryNV = ShadingRatePaletteEntryNV Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- No documentation found for Nested "VkShadingRatePaletteEntryNV" "VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV"+pattern SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = ShadingRatePaletteEntryNV 0+-- No documentation found for Nested "VkShadingRatePaletteEntryNV" "VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV"+pattern SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = ShadingRatePaletteEntryNV 1+-- No documentation found for Nested "VkShadingRatePaletteEntryNV" "VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV"+pattern SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = ShadingRatePaletteEntryNV 2+-- No documentation found for Nested "VkShadingRatePaletteEntryNV" "VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV"+pattern SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = ShadingRatePaletteEntryNV 3+-- No documentation found for Nested "VkShadingRatePaletteEntryNV" "VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV"+pattern SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = ShadingRatePaletteEntryNV 4+-- No documentation found for Nested "VkShadingRatePaletteEntryNV" "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV"+pattern SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = ShadingRatePaletteEntryNV 5+-- No documentation found for Nested "VkShadingRatePaletteEntryNV" "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV"+pattern SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = ShadingRatePaletteEntryNV 6+-- No documentation found for Nested "VkShadingRatePaletteEntryNV" "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV"+pattern SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = ShadingRatePaletteEntryNV 7+-- No documentation found for Nested "VkShadingRatePaletteEntryNV" "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV"+pattern SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = ShadingRatePaletteEntryNV 8+-- No documentation found for Nested "VkShadingRatePaletteEntryNV" "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV"+pattern SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = ShadingRatePaletteEntryNV 9+-- No documentation found for Nested "VkShadingRatePaletteEntryNV" "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV"+pattern SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = ShadingRatePaletteEntryNV 10+-- No documentation found for Nested "VkShadingRatePaletteEntryNV" "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV"+pattern SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = ShadingRatePaletteEntryNV 11+{-# complete SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV,+ SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV,+ SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV,+ SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV,+ SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV,+ SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV,+ SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV,+ SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV,+ SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV,+ SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV,+ SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV,+ SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV :: ShadingRatePaletteEntryNV #-}++instance Show ShadingRatePaletteEntryNV where+ showsPrec p = \case+ SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV -> showString "SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV"+ SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV -> showString "SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV"+ SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV -> showString "SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV"+ SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV -> showString "SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV"+ SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV -> showString "SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV"+ SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV -> showString "SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV"+ SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV -> showString "SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV"+ SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV -> showString "SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV"+ SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV -> showString "SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV"+ SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV -> showString "SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV"+ SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV -> showString "SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV"+ SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV -> showString "SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV"+ ShadingRatePaletteEntryNV x -> showParen (p >= 11) (showString "ShadingRatePaletteEntryNV " . showsPrec 11 x)++instance Read ShadingRatePaletteEntryNV where+ readPrec = parens (choose [("SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV", pure SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV)+ , ("SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV", pure SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV)+ , ("SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV", pure SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV)+ , ("SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV", pure SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV)+ , ("SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV", pure SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV)+ , ("SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV", pure SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV)+ , ("SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV", pure SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV)+ , ("SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV", pure SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV)+ , ("SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV", pure SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV)+ , ("SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV", pure SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV)+ , ("SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV", pure SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV)+ , ("SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV", pure SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV)]+ ++++ prec 10 (do+ expectP (Ident "ShadingRatePaletteEntryNV")+ v <- step readPrec+ pure (ShadingRatePaletteEntryNV v)))+++-- | VkCoarseSampleOrderTypeNV - Shading rate image sample ordering types+--+-- = See Also+--+-- 'PipelineViewportCoarseSampleOrderStateCreateInfoNV',+-- 'cmdSetCoarseSampleOrderNV'+newtype CoarseSampleOrderTypeNV = CoarseSampleOrderTypeNV Int32+ deriving newtype (Eq, Ord, Storable, Zero)++-- | 'COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV' specifies that coverage samples+-- will be ordered in an implementation-dependent manner.+pattern COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = CoarseSampleOrderTypeNV 0+-- | 'COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV' specifies that coverage samples+-- will be ordered according to the array of custom orderings provided in+-- either the @pCustomSampleOrders@ member of+-- 'PipelineViewportCoarseSampleOrderStateCreateInfoNV' or the+-- @pCustomSampleOrders@ member of 'cmdSetCoarseSampleOrderNV'.+pattern COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = CoarseSampleOrderTypeNV 1+-- | 'COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV' specifies that coverage+-- samples will be ordered sequentially, sorted first by pixel coordinate+-- (in row-major order) and then by coverage sample number.+pattern COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = CoarseSampleOrderTypeNV 2+-- | 'COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV' specifies that coverage+-- samples will be ordered sequentially, sorted first by coverage sample+-- number and then by pixel coordinate (in row-major order).+pattern COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = CoarseSampleOrderTypeNV 3+{-# complete COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV,+ COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV,+ COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV,+ COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV :: CoarseSampleOrderTypeNV #-}++instance Show CoarseSampleOrderTypeNV where+ showsPrec p = \case+ COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV -> showString "COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV"+ COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV -> showString "COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV"+ COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV -> showString "COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV"+ COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV -> showString "COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV"+ CoarseSampleOrderTypeNV x -> showParen (p >= 11) (showString "CoarseSampleOrderTypeNV " . showsPrec 11 x)++instance Read CoarseSampleOrderTypeNV where+ readPrec = parens (choose [("COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV", pure COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV)+ , ("COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV", pure COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV)+ , ("COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV", pure COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV)+ , ("COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV", pure COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV)]+ ++++ prec 10 (do+ expectP (Ident "CoarseSampleOrderTypeNV")+ v <- step readPrec+ pure (CoarseSampleOrderTypeNV v)))+++type NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3++-- No documentation found for TopLevel "VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION"+pattern NV_SHADING_RATE_IMAGE_SPEC_VERSION :: forall a . Integral a => a+pattern NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3+++type NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image"++-- No documentation found for TopLevel "VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME"+pattern NV_SHADING_RATE_IMAGE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image"+
+ src/Graphics/Vulkan/Extensions/VK_NV_shading_rate_image.hs-boot view
@@ -0,0 +1,72 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_shading_rate_image ( CoarseSampleLocationNV+ , CoarseSampleOrderCustomNV+ , PhysicalDeviceShadingRateImageFeaturesNV+ , PhysicalDeviceShadingRateImagePropertiesNV+ , PipelineViewportCoarseSampleOrderStateCreateInfoNV+ , PipelineViewportShadingRateImageStateCreateInfoNV+ , ShadingRatePaletteNV+ , CoarseSampleOrderTypeNV+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data CoarseSampleLocationNV++instance ToCStruct CoarseSampleLocationNV+instance Show CoarseSampleLocationNV++instance FromCStruct CoarseSampleLocationNV+++data CoarseSampleOrderCustomNV++instance ToCStruct CoarseSampleOrderCustomNV+instance Show CoarseSampleOrderCustomNV++instance FromCStruct CoarseSampleOrderCustomNV+++data PhysicalDeviceShadingRateImageFeaturesNV++instance ToCStruct PhysicalDeviceShadingRateImageFeaturesNV+instance Show PhysicalDeviceShadingRateImageFeaturesNV++instance FromCStruct PhysicalDeviceShadingRateImageFeaturesNV+++data PhysicalDeviceShadingRateImagePropertiesNV++instance ToCStruct PhysicalDeviceShadingRateImagePropertiesNV+instance Show PhysicalDeviceShadingRateImagePropertiesNV++instance FromCStruct PhysicalDeviceShadingRateImagePropertiesNV+++data PipelineViewportCoarseSampleOrderStateCreateInfoNV++instance ToCStruct PipelineViewportCoarseSampleOrderStateCreateInfoNV+instance Show PipelineViewportCoarseSampleOrderStateCreateInfoNV++instance FromCStruct PipelineViewportCoarseSampleOrderStateCreateInfoNV+++data PipelineViewportShadingRateImageStateCreateInfoNV++instance ToCStruct PipelineViewportShadingRateImageStateCreateInfoNV+instance Show PipelineViewportShadingRateImageStateCreateInfoNV++instance FromCStruct PipelineViewportShadingRateImageStateCreateInfoNV+++data ShadingRatePaletteNV++instance ToCStruct ShadingRatePaletteNV+instance Show ShadingRatePaletteNV++instance FromCStruct ShadingRatePaletteNV+++data CoarseSampleOrderTypeNV+
src/Graphics/Vulkan/Extensions/VK_NV_viewport_array2.hs view
@@ -1,24 +1,22 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}--module Graphics.Vulkan.Extensions.VK_NV_viewport_array2- ( pattern VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION- , pattern VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME- ) where+module Graphics.Vulkan.Extensions.VK_NV_viewport_array2 ( NV_VIEWPORT_ARRAY2_SPEC_VERSION+ , pattern NV_VIEWPORT_ARRAY2_SPEC_VERSION+ , NV_VIEWPORT_ARRAY2_EXTENSION_NAME+ , pattern NV_VIEWPORT_ARRAY2_EXTENSION_NAME+ ) where -import Data.String- ( IsString- )+import Data.String (IsString) +type NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 +-- No documentation found for TopLevel "VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION"+pattern NV_VIEWPORT_ARRAY2_SPEC_VERSION :: forall a . Integral a => a+pattern NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 +type NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" --- No documentation found for TopLevel "VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION"-pattern VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION :: Integral a => a-pattern VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 -- No documentation found for TopLevel "VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME"-pattern VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2"+pattern NV_VIEWPORT_ARRAY2_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2"+
src/Graphics/Vulkan/Extensions/VK_NV_viewport_swizzle.hs view
@@ -1,276 +1,288 @@-{-# language Strict #-} {-# language CPP #-}-{-# language GeneralizedNewtypeDeriving #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DuplicateRecordFields #-}+module Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle ( ViewportSwizzleNV(..)+ , PipelineViewportSwizzleStateCreateInfoNV(..)+ , PipelineViewportSwizzleStateCreateFlagsNV(..)+ , ViewportCoordinateSwizzleNV( VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV+ , VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV+ , VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV+ , VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV+ , VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV+ , VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV+ , VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV+ , VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV+ , ..+ )+ , NV_VIEWPORT_SWIZZLE_SPEC_VERSION+ , pattern NV_VIEWPORT_SWIZZLE_SPEC_VERSION+ , NV_VIEWPORT_SWIZZLE_EXTENSION_NAME+ , pattern NV_VIEWPORT_SWIZZLE_EXTENSION_NAME+ ) where -module Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle- ( VkViewportCoordinateSwizzleNV(..)- , pattern VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV- , pattern VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV- , pattern VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV- , pattern VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV- , pattern VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV- , pattern VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV- , pattern VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV- , pattern VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV- , VkPipelineViewportSwizzleStateCreateFlagsNV(..)- , pattern VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV- , pattern VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION- , pattern VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME- , VkViewportSwizzleNV(..)- , VkPipelineViewportSwizzleStateCreateInfoNV(..)- ) where+import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import GHC.Read (choose)+import GHC.Read (expectP)+import GHC.Read (parens)+import GHC.Show (showParen)+import GHC.Show (showString)+import GHC.Show (showsPrec)+import Numeric (showHex)+import Text.ParserCombinators.ReadPrec ((+++))+import Text.ParserCombinators.ReadPrec (prec)+import Text.ParserCombinators.ReadPrec (step)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.Bits (Bits)+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 Data.Int (Int32)+import Foreign.Ptr (Ptr)+import GHC.Read (Read(readPrec))+import Data.Word (Word32)+import Text.Read.Lex (Lexeme(Ident))+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.BaseType (Flags)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero)+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV))+-- | VkViewportSwizzleNV - Structure specifying a viewport swizzle+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'PipelineViewportSwizzleStateCreateInfoNV',+-- 'ViewportCoordinateSwizzleNV'+data ViewportSwizzleNV = ViewportSwizzleNV+ { -- | @x@ /must/ be a valid 'ViewportCoordinateSwizzleNV' value+ x :: ViewportCoordinateSwizzleNV+ , -- | @y@ /must/ be a valid 'ViewportCoordinateSwizzleNV' value+ y :: ViewportCoordinateSwizzleNV+ , -- | @z@ /must/ be a valid 'ViewportCoordinateSwizzleNV' value+ z :: ViewportCoordinateSwizzleNV+ , -- | @w@ /must/ be a valid 'ViewportCoordinateSwizzleNV' value+ w :: ViewportCoordinateSwizzleNV+ }+ deriving (Typeable)+deriving instance Show ViewportSwizzleNV -import Data.Bits- ( Bits- , FiniteBits- )-import Data.Int- ( Int32- )-import Data.String- ( IsString- )-import Data.Word- ( Word32- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )-import GHC.Read- ( choose- , expectP- )-import Text.ParserCombinators.ReadPrec- ( (+++)- , prec- , step- )-import Text.Read- ( Read(..)- , parens- )-import Text.Read.Lex- ( Lexeme(Ident)- )+instance ToCStruct ViewportSwizzleNV where+ withCStruct x f = allocaBytesAligned 16 4 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p ViewportSwizzleNV{..} f = do+ poke ((p `plusPtr` 0 :: Ptr ViewportCoordinateSwizzleNV)) (x)+ poke ((p `plusPtr` 4 :: Ptr ViewportCoordinateSwizzleNV)) (y)+ poke ((p `plusPtr` 8 :: Ptr ViewportCoordinateSwizzleNV)) (z)+ poke ((p `plusPtr` 12 :: Ptr ViewportCoordinateSwizzleNV)) (w)+ f+ cStructSize = 16+ cStructAlignment = 4+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr ViewportCoordinateSwizzleNV)) (zero)+ poke ((p `plusPtr` 4 :: Ptr ViewportCoordinateSwizzleNV)) (zero)+ poke ((p `plusPtr` 8 :: Ptr ViewportCoordinateSwizzleNV)) (zero)+ poke ((p `plusPtr` 12 :: Ptr ViewportCoordinateSwizzleNV)) (zero)+ f +instance FromCStruct ViewportSwizzleNV where+ peekCStruct p = do+ x <- peek @ViewportCoordinateSwizzleNV ((p `plusPtr` 0 :: Ptr ViewportCoordinateSwizzleNV))+ y <- peek @ViewportCoordinateSwizzleNV ((p `plusPtr` 4 :: Ptr ViewportCoordinateSwizzleNV))+ z <- peek @ViewportCoordinateSwizzleNV ((p `plusPtr` 8 :: Ptr ViewportCoordinateSwizzleNV))+ w <- peek @ViewportCoordinateSwizzleNV ((p `plusPtr` 12 :: Ptr ViewportCoordinateSwizzleNV))+ pure $ ViewportSwizzleNV+ x y z w -import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- , VkFlags- )+instance Storable ViewportSwizzleNV where+ sizeOf ~_ = 16+ alignment ~_ = 4+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ()) +instance Zero ViewportSwizzleNV where+ zero = ViewportSwizzleNV+ zero+ zero+ zero+ zero --- ** VkViewportCoordinateSwizzleNV --- | VkViewportCoordinateSwizzleNV - Specify how a viewport coordinate is--- swizzled------ = Description+-- | VkPipelineViewportSwizzleStateCreateInfoNV - Structure specifying+-- swizzle applied to primitive clip coordinates ----- These values are described in detail in [Viewport--- Swizzle](https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#vertexpostproc-viewport-swizzle).+-- == Valid Usage (Implicit) -- -- = See Also ----- 'VkViewportSwizzleNV'-newtype VkViewportCoordinateSwizzleNV = VkViewportCoordinateSwizzleNV Int32- deriving (Eq, Ord, Storable)+-- 'PipelineViewportSwizzleStateCreateFlagsNV',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'ViewportSwizzleNV'+data PipelineViewportSwizzleStateCreateInfoNV = PipelineViewportSwizzleStateCreateInfoNV+ { -- | 'Graphics.Vulkan.Core10.BaseType.Flags' /must/ be @0@+ flags :: PipelineViewportSwizzleStateCreateFlagsNV+ , -- | @pViewportSwizzles@ /must/ be a valid pointer to an array of+ -- @viewportCount@ valid 'ViewportSwizzleNV' structures+ viewportSwizzles :: Vector ViewportSwizzleNV+ }+ deriving (Typeable)+deriving instance Show PipelineViewportSwizzleStateCreateInfoNV -instance Show VkViewportCoordinateSwizzleNV where- showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV"- showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV"- showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV"- showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV"- showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV"- showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV"- showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV"- showsPrec _ VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = showString "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV"- showsPrec p (VkViewportCoordinateSwizzleNV x) = showParen (p >= 11) (showString "VkViewportCoordinateSwizzleNV " . showsPrec 11 x)+instance ToCStruct PipelineViewportSwizzleStateCreateInfoNV where+ withCStruct x f = allocaBytesAligned 32 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p PipelineViewportSwizzleStateCreateInfoNV{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr PipelineViewportSwizzleStateCreateFlagsNV)) (flags)+ lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (viewportSwizzles)) :: Word32))+ pPViewportSwizzles' <- ContT $ allocaBytesAligned @ViewportSwizzleNV ((Data.Vector.length (viewportSwizzles)) * 16) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPViewportSwizzles' `plusPtr` (16 * (i)) :: Ptr ViewportSwizzleNV) (e) . ($ ())) (viewportSwizzles)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ViewportSwizzleNV))) (pPViewportSwizzles')+ lift $ f+ cStructSize = 32+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPViewportSwizzles' <- ContT $ allocaBytesAligned @ViewportSwizzleNV ((Data.Vector.length (mempty)) * 16) 4+ Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPViewportSwizzles' `plusPtr` (16 * (i)) :: Ptr ViewportSwizzleNV) (e) . ($ ())) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr ViewportSwizzleNV))) (pPViewportSwizzles')+ lift $ f -instance Read VkViewportCoordinateSwizzleNV where- readPrec = parens ( choose [ ("VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV", pure VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV)- , ("VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV", pure VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV)- , ("VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV", pure VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV)- , ("VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV", pure VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV)- , ("VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV", pure VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV)- , ("VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV", pure VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV)- , ("VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV", pure VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV)- , ("VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV", pure VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV)- ] +++- prec 10 (do- expectP (Ident "VkViewportCoordinateSwizzleNV")- v <- step readPrec- pure (VkViewportCoordinateSwizzleNV v)- )- )+instance FromCStruct PipelineViewportSwizzleStateCreateInfoNV where+ peekCStruct p = do+ flags <- peek @PipelineViewportSwizzleStateCreateFlagsNV ((p `plusPtr` 16 :: Ptr PipelineViewportSwizzleStateCreateFlagsNV))+ viewportCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))+ pViewportSwizzles <- peek @(Ptr ViewportSwizzleNV) ((p `plusPtr` 24 :: Ptr (Ptr ViewportSwizzleNV)))+ pViewportSwizzles' <- generateM (fromIntegral viewportCount) (\i -> peekCStruct @ViewportSwizzleNV ((pViewportSwizzles `advancePtrBytes` (16 * (i)) :: Ptr ViewportSwizzleNV)))+ pure $ PipelineViewportSwizzleStateCreateInfoNV+ flags pViewportSwizzles' --- No documentation found for Nested "VkViewportCoordinateSwizzleNV" "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV"-pattern VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV :: VkViewportCoordinateSwizzleNV-pattern VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = VkViewportCoordinateSwizzleNV 0+instance Zero PipelineViewportSwizzleStateCreateInfoNV where+ zero = PipelineViewportSwizzleStateCreateInfoNV+ zero+ mempty --- No documentation found for Nested "VkViewportCoordinateSwizzleNV" "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV"-pattern VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV :: VkViewportCoordinateSwizzleNV-pattern VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = VkViewportCoordinateSwizzleNV 1 --- No documentation found for Nested "VkViewportCoordinateSwizzleNV" "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV"-pattern VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV :: VkViewportCoordinateSwizzleNV-pattern VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = VkViewportCoordinateSwizzleNV 2---- No documentation found for Nested "VkViewportCoordinateSwizzleNV" "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV"-pattern VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV :: VkViewportCoordinateSwizzleNV-pattern VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = VkViewportCoordinateSwizzleNV 3---- No documentation found for Nested "VkViewportCoordinateSwizzleNV" "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV"-pattern VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV :: VkViewportCoordinateSwizzleNV-pattern VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = VkViewportCoordinateSwizzleNV 4---- No documentation found for Nested "VkViewportCoordinateSwizzleNV" "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV"-pattern VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV :: VkViewportCoordinateSwizzleNV-pattern VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = VkViewportCoordinateSwizzleNV 5---- No documentation found for Nested "VkViewportCoordinateSwizzleNV" "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV"-pattern VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV :: VkViewportCoordinateSwizzleNV-pattern VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = VkViewportCoordinateSwizzleNV 6---- No documentation found for Nested "VkViewportCoordinateSwizzleNV" "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV"-pattern VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV :: VkViewportCoordinateSwizzleNV-pattern VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = VkViewportCoordinateSwizzleNV 7--- ** VkPipelineViewportSwizzleStateCreateFlagsNV- -- | VkPipelineViewportSwizzleStateCreateFlagsNV - Reserved for future use -- -- = Description ----- @VkPipelineViewportSwizzleStateCreateFlagsNV@ is a bitmask type for+-- 'PipelineViewportSwizzleStateCreateFlagsNV' is a bitmask type for -- setting a mask, but is currently reserved for future use. -- -- = See Also ----- 'VkPipelineViewportSwizzleStateCreateInfoNV'-newtype VkPipelineViewportSwizzleStateCreateFlagsNV = VkPipelineViewportSwizzleStateCreateFlagsNV VkFlags- deriving (Eq, Ord, Storable, Bits, FiniteBits)+-- 'PipelineViewportSwizzleStateCreateInfoNV'+newtype PipelineViewportSwizzleStateCreateFlagsNV = PipelineViewportSwizzleStateCreateFlagsNV Flags+ deriving newtype (Eq, Ord, Storable, Zero, Bits) -instance Show VkPipelineViewportSwizzleStateCreateFlagsNV where- - showsPrec p (VkPipelineViewportSwizzleStateCreateFlagsNV x) = showParen (p >= 11) (showString "VkPipelineViewportSwizzleStateCreateFlagsNV " . showsPrec 11 x) -instance Read VkPipelineViewportSwizzleStateCreateFlagsNV where- readPrec = parens ( choose [ - ] +++- prec 10 (do- expectP (Ident "VkPipelineViewportSwizzleStateCreateFlagsNV")- v <- step readPrec- pure (VkPipelineViewportSwizzleStateCreateFlagsNV v)- )- ) +instance Show PipelineViewportSwizzleStateCreateFlagsNV where+ showsPrec p = \case+ PipelineViewportSwizzleStateCreateFlagsNV x -> showParen (p >= 11) (showString "PipelineViewportSwizzleStateCreateFlagsNV 0x" . showHex x) --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV"-pattern VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV :: VkStructureType-pattern VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = VkStructureType 1000098000--- No documentation found for TopLevel "VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION"-pattern VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION :: Integral a => a-pattern VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME"-pattern VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle"--- | VkViewportSwizzleNV - Structure specifying a viewport swizzle------ == Valid Usage (Implicit)------ - @x@ /must/ be a valid 'VkViewportCoordinateSwizzleNV' value------ - @y@ /must/ be a valid 'VkViewportCoordinateSwizzleNV' value------ - @z@ /must/ be a valid 'VkViewportCoordinateSwizzleNV' value------ - @w@ /must/ be a valid 'VkViewportCoordinateSwizzleNV' value------ = See Also------ 'VkPipelineViewportSwizzleStateCreateInfoNV',--- 'VkViewportCoordinateSwizzleNV'-data VkViewportSwizzleNV = VkViewportSwizzleNV- { -- | @x@ is a 'VkViewportCoordinateSwizzleNV' value specifying the swizzle- -- operation to apply to the x component of the primitive- vkX :: VkViewportCoordinateSwizzleNV- , -- | @y@ is a 'VkViewportCoordinateSwizzleNV' value specifying the swizzle- -- operation to apply to the y component of the primitive- vkY :: VkViewportCoordinateSwizzleNV- , -- | @z@ is a 'VkViewportCoordinateSwizzleNV' value specifying the swizzle- -- operation to apply to the z component of the primitive- vkZ :: VkViewportCoordinateSwizzleNV- , -- | @w@ is a 'VkViewportCoordinateSwizzleNV' value specifying the swizzle- -- operation to apply to the w component of the primitive- vkW :: VkViewportCoordinateSwizzleNV- }- deriving (Eq, Show)+instance Read PipelineViewportSwizzleStateCreateFlagsNV where+ readPrec = parens (choose []+ ++++ prec 10 (do+ expectP (Ident "PipelineViewportSwizzleStateCreateFlagsNV")+ v <- step readPrec+ pure (PipelineViewportSwizzleStateCreateFlagsNV v))) -instance Storable VkViewportSwizzleNV where- sizeOf ~_ = 16- alignment ~_ = 4- peek ptr = VkViewportSwizzleNV <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 4)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 12)- poke ptr poked = poke (ptr `plusPtr` 0) (vkX (poked :: VkViewportSwizzleNV))- *> poke (ptr `plusPtr` 4) (vkY (poked :: VkViewportSwizzleNV))- *> poke (ptr `plusPtr` 8) (vkZ (poked :: VkViewportSwizzleNV))- *> poke (ptr `plusPtr` 12) (vkW (poked :: VkViewportSwizzleNV))--- | VkPipelineViewportSwizzleStateCreateInfoNV - Structure specifying--- swizzle applied to primitive clip coordinates------ == Valid Usage------ - @viewportCount@ /must/ match the @viewportCount@ set in--- @VkPipelineViewportStateCreateInfo@------ == Valid Usage (Implicit)------ - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV@++-- | VkViewportCoordinateSwizzleNV - Specify how a viewport coordinate is+-- swizzled ----- - @flags@ /must/ be @0@+-- = Description ----- - @viewportCount@ /must/ be greater than @0@+-- These values are described in detail in+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-viewport-swizzle Viewport Swizzle>. -- -- = See Also ----- 'VkPipelineViewportSwizzleStateCreateFlagsNV',--- 'Graphics.Vulkan.Core10.Core.VkStructureType', 'VkViewportSwizzleNV'-data VkPipelineViewportSwizzleStateCreateInfoNV = VkPipelineViewportSwizzleStateCreateInfoNV- { -- | @sType@ is the type of this structure.- vkSType :: VkStructureType- , -- | @pNext@ is @NULL@ or a pointer to an extension-specific structure.- vkPNext :: Ptr ()- , -- | @flags@ is reserved for future use.- vkFlags :: VkPipelineViewportSwizzleStateCreateFlagsNV- , -- | @viewportCount@ is the number of viewport swizzles used by the pipeline.- vkViewportCount :: Word32- , -- | @pViewportSwizzles@ is a pointer to an array of 'VkViewportSwizzleNV'- -- structures, defining the viewport swizzles.- vkPViewportSwizzles :: Ptr VkViewportSwizzleNV- }- deriving (Eq, Show)+-- 'ViewportSwizzleNV'+newtype ViewportCoordinateSwizzleNV = ViewportCoordinateSwizzleNV Int32+ deriving newtype (Eq, Ord, Storable, Zero) -instance Storable VkPipelineViewportSwizzleStateCreateInfoNV where- sizeOf ~_ = 32- alignment ~_ = 8- peek ptr = VkPipelineViewportSwizzleStateCreateInfoNV <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 20)- <*> peek (ptr `plusPtr` 24)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkPipelineViewportSwizzleStateCreateInfoNV))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkPipelineViewportSwizzleStateCreateInfoNV))- *> poke (ptr `plusPtr` 16) (vkFlags (poked :: VkPipelineViewportSwizzleStateCreateInfoNV))- *> poke (ptr `plusPtr` 20) (vkViewportCount (poked :: VkPipelineViewportSwizzleStateCreateInfoNV))- *> poke (ptr `plusPtr` 24) (vkPViewportSwizzles (poked :: VkPipelineViewportSwizzleStateCreateInfoNV))+-- No documentation found for Nested "VkViewportCoordinateSwizzleNV" "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV"+pattern VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = ViewportCoordinateSwizzleNV 0+-- No documentation found for Nested "VkViewportCoordinateSwizzleNV" "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV"+pattern VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = ViewportCoordinateSwizzleNV 1+-- No documentation found for Nested "VkViewportCoordinateSwizzleNV" "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV"+pattern VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = ViewportCoordinateSwizzleNV 2+-- No documentation found for Nested "VkViewportCoordinateSwizzleNV" "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV"+pattern VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = ViewportCoordinateSwizzleNV 3+-- No documentation found for Nested "VkViewportCoordinateSwizzleNV" "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV"+pattern VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = ViewportCoordinateSwizzleNV 4+-- No documentation found for Nested "VkViewportCoordinateSwizzleNV" "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV"+pattern VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = ViewportCoordinateSwizzleNV 5+-- No documentation found for Nested "VkViewportCoordinateSwizzleNV" "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV"+pattern VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = ViewportCoordinateSwizzleNV 6+-- No documentation found for Nested "VkViewportCoordinateSwizzleNV" "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV"+pattern VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = ViewportCoordinateSwizzleNV 7+{-# complete VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,+ VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV,+ VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV,+ VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV,+ VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV,+ VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV,+ VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV,+ VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV :: ViewportCoordinateSwizzleNV #-}++instance Show ViewportCoordinateSwizzleNV where+ showsPrec p = \case+ VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV -> showString "VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV"+ VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV -> showString "VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV"+ VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV -> showString "VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV"+ VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV -> showString "VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV"+ VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV -> showString "VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV"+ VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV -> showString "VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV"+ VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV -> showString "VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV"+ VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV -> showString "VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV"+ ViewportCoordinateSwizzleNV x -> showParen (p >= 11) (showString "ViewportCoordinateSwizzleNV " . showsPrec 11 x)++instance Read ViewportCoordinateSwizzleNV where+ readPrec = parens (choose [("VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV", pure VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV)+ , ("VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV", pure VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV)+ , ("VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV", pure VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV)+ , ("VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV", pure VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV)+ , ("VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV", pure VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV)+ , ("VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV", pure VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV)+ , ("VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV", pure VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV)+ , ("VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV", pure VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV)]+ ++++ prec 10 (do+ expectP (Ident "ViewportCoordinateSwizzleNV")+ v <- step readPrec+ pure (ViewportCoordinateSwizzleNV v)))+++type NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION"+pattern NV_VIEWPORT_SWIZZLE_SPEC_VERSION :: forall a . Integral a => a+pattern NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1+++type NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle"++-- No documentation found for TopLevel "VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME"+pattern NV_VIEWPORT_SWIZZLE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle"+
+ src/Graphics/Vulkan/Extensions/VK_NV_viewport_swizzle.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle ( PipelineViewportSwizzleStateCreateInfoNV+ , ViewportSwizzleNV+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data PipelineViewportSwizzleStateCreateInfoNV++instance ToCStruct PipelineViewportSwizzleStateCreateInfoNV+instance Show PipelineViewportSwizzleStateCreateInfoNV++instance FromCStruct PipelineViewportSwizzleStateCreateInfoNV+++data ViewportSwizzleNV++instance ToCStruct ViewportSwizzleNV+instance Show ViewportSwizzleNV++instance FromCStruct ViewportSwizzleNV+
src/Graphics/Vulkan/Extensions/VK_NV_win32_keyed_mutex.hs view
@@ -1,60 +1,53 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PatternSynonyms #-}-{-# language OverloadedStrings #-}-{-# language DuplicateRecordFields #-}--module Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex- ( pattern VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV- , pattern VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION- , pattern VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME- , VkWin32KeyedMutexAcquireReleaseInfoNV(..)- ) where--import Data.String- ( IsString- )-import Data.Word- ( Word32- , Word64- )-import Foreign.Ptr- ( Ptr- , plusPtr- )-import Foreign.Storable- ( Storable- , Storable(..)- )---import Graphics.Vulkan.Core10.Core- ( VkStructureType(..)- )-import Graphics.Vulkan.Core10.Memory- ( VkDeviceMemory- )-+module Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex ( Win32KeyedMutexAcquireReleaseInfoNV(..)+ , NV_WIN32_KEYED_MUTEX_SPEC_VERSION+ , pattern NV_WIN32_KEYED_MUTEX_SPEC_VERSION+ , NV_WIN32_KEYED_MUTEX_EXTENSION_NAME+ , pattern NV_WIN32_KEYED_MUTEX_EXTENSION_NAME+ ) where --- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"-pattern VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV :: VkStructureType-pattern VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = VkStructureType 1000058000--- No documentation found for TopLevel "VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION"-pattern VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION :: Integral a => a-pattern VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION = 1--- No documentation found for TopLevel "VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME"-pattern VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME :: (Eq a ,IsString a) => a-pattern VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_NV_win32_keyed_mutex"+import Control.Monad (unless)+import Foreign.Marshal.Alloc (allocaBytesAligned)+import GHC.IO (throwIO)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+import Data.Vector (generateM)+import qualified Data.Vector (imapM_)+import qualified Data.Vector (length)+import Data.String (IsString)+import Data.Typeable (Typeable)+import Foreign.Storable (Storable(peek))+import Foreign.Storable (Storable(poke))+import GHC.IO.Exception (IOErrorType(..))+import GHC.IO.Exception (IOException(..))+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Word (Word64)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Data.Vector (Vector)+import Graphics.Vulkan.CStruct.Utils (advancePtrBytes)+import Graphics.Vulkan.Core10.Handles (DeviceMemory)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV)) -- | VkWin32KeyedMutexAcquireReleaseInfoNV - use Windows keyex mutex -- mechanism to synchronize work -- -- == Valid Usage (Implicit) -- -- - @sType@ /must/ be--- @VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV@+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV' -- -- - If @acquireCount@ is not @0@, @pAcquireSyncs@ /must/ be a valid--- pointer to an array of @acquireCount@ valid @VkDeviceMemory@ handles+-- pointer to an array of @acquireCount@ valid+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' handles -- -- - If @acquireCount@ is not @0@, @pAcquireKeys@ /must/ be a valid -- pointer to an array of @acquireCount@ @uint64_t@ values@@ -63,70 +56,138 @@ -- be a valid pointer to an array of @acquireCount@ @uint32_t@ values -- -- - If @releaseCount@ is not @0@, @pReleaseSyncs@ /must/ be a valid--- pointer to an array of @releaseCount@ valid @VkDeviceMemory@ handles+-- pointer to an array of @releaseCount@ valid+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' handles -- -- - If @releaseCount@ is not @0@, @pReleaseKeys@ /must/ be a valid -- pointer to an array of @releaseCount@ @uint64_t@ values -- -- - Both of the elements of @pAcquireSyncs@, and the elements of--- @pReleaseSyncs@ that are valid handles /must/ have been created,--- allocated, or retrieved from the same @VkDevice@+-- @pReleaseSyncs@ that are valid handles of non-ignored parameters+-- /must/ have been created, allocated, or retrieved from the same+-- 'Graphics.Vulkan.Core10.Handles.Device' -- -- = See Also ----- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory',--- 'Graphics.Vulkan.Core10.Core.VkStructureType'-data VkWin32KeyedMutexAcquireReleaseInfoNV = VkWin32KeyedMutexAcquireReleaseInfoNV- { -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoNV" "sType"- vkSType :: VkStructureType- , -- No documentation found for Nested "VkWin32KeyedMutexAcquireReleaseInfoNV" "pNext"- vkPNext :: Ptr ()- , -- | @acquireCount@ is the number of entries in the @pAcquireSyncs@,- -- @pAcquireKeys@, and @pAcquireTimeoutMilliseconds@ arrays.- vkAcquireCount :: Word32- , -- | @pAcquireSyncs@ is a pointer to an array of- -- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory' objects which were- -- imported from Direct3D 11 resources.- vkPAcquireSyncs :: Ptr VkDeviceMemory+-- 'Graphics.Vulkan.Core10.Handles.DeviceMemory',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType'+data Win32KeyedMutexAcquireReleaseInfoNV = Win32KeyedMutexAcquireReleaseInfoNV+ { -- | @pAcquireSyncs@ is a pointer to an array of+ -- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' objects which were+ -- imported from Direct3D 11 resources.+ acquireSyncs :: Vector DeviceMemory , -- | @pAcquireKeys@ is a pointer to an array of mutex key values to wait for- -- prior to beginning the submitted work. Entries refer to the keyed mutex- -- associated with the corresponding entries in @pAcquireSyncs@.- vkPAcquireKeys :: Ptr Word64- , -- | @pAcquireTimeoutMilliseconds@ is an array of timeout values, in- -- millisecond units, for each acquire specified in @pAcquireKeys@.- vkPAcquireTimeoutMilliseconds :: Ptr Word32- , -- | @releaseCount@ is the number of entries in the @pReleaseSyncs@ and- -- @pReleaseKeys@ arrays.- vkReleaseCount :: Word32+ -- prior to beginning the submitted work. Entries refer to the keyed mutex+ -- associated with the corresponding entries in @pAcquireSyncs@.+ acquireKeys :: Vector Word64+ , -- | @pAcquireTimeoutMilliseconds@ is a pointer to an array of timeout+ -- values, in millisecond units, for each acquire specified in+ -- @pAcquireKeys@.+ acquireTimeoutMilliseconds :: Vector Word32 , -- | @pReleaseSyncs@ is a pointer to an array of- -- 'Graphics.Vulkan.Core10.Memory.VkDeviceMemory' objects which were- -- imported from Direct3D 11 resources.- vkPReleaseSyncs :: Ptr VkDeviceMemory+ -- 'Graphics.Vulkan.Core10.Handles.DeviceMemory' objects which were+ -- imported from Direct3D 11 resources.+ releaseSyncs :: Vector DeviceMemory , -- | @pReleaseKeys@ is a pointer to an array of mutex key values to set when- -- the submitted work has completed. Entries refer to the keyed mutex- -- associated with the corresponding entries in @pReleaseSyncs@.- vkPReleaseKeys :: Ptr Word64+ -- the submitted work has completed. Entries refer to the keyed mutex+ -- associated with the corresponding entries in @pReleaseSyncs@.+ releaseKeys :: Vector Word64 }- deriving (Eq, Show)+ deriving (Typeable)+deriving instance Show Win32KeyedMutexAcquireReleaseInfoNV -instance Storable VkWin32KeyedMutexAcquireReleaseInfoNV where- sizeOf ~_ = 72- alignment ~_ = 8- peek ptr = VkWin32KeyedMutexAcquireReleaseInfoNV <$> peek (ptr `plusPtr` 0)- <*> peek (ptr `plusPtr` 8)- <*> peek (ptr `plusPtr` 16)- <*> peek (ptr `plusPtr` 24)- <*> peek (ptr `plusPtr` 32)- <*> peek (ptr `plusPtr` 40)- <*> peek (ptr `plusPtr` 48)- <*> peek (ptr `plusPtr` 56)- <*> peek (ptr `plusPtr` 64)- poke ptr poked = poke (ptr `plusPtr` 0) (vkSType (poked :: VkWin32KeyedMutexAcquireReleaseInfoNV))- *> poke (ptr `plusPtr` 8) (vkPNext (poked :: VkWin32KeyedMutexAcquireReleaseInfoNV))- *> poke (ptr `plusPtr` 16) (vkAcquireCount (poked :: VkWin32KeyedMutexAcquireReleaseInfoNV))- *> poke (ptr `plusPtr` 24) (vkPAcquireSyncs (poked :: VkWin32KeyedMutexAcquireReleaseInfoNV))- *> poke (ptr `plusPtr` 32) (vkPAcquireKeys (poked :: VkWin32KeyedMutexAcquireReleaseInfoNV))- *> poke (ptr `plusPtr` 40) (vkPAcquireTimeoutMilliseconds (poked :: VkWin32KeyedMutexAcquireReleaseInfoNV))- *> poke (ptr `plusPtr` 48) (vkReleaseCount (poked :: VkWin32KeyedMutexAcquireReleaseInfoNV))- *> poke (ptr `plusPtr` 56) (vkPReleaseSyncs (poked :: VkWin32KeyedMutexAcquireReleaseInfoNV))- *> poke (ptr `plusPtr` 64) (vkPReleaseKeys (poked :: VkWin32KeyedMutexAcquireReleaseInfoNV))+instance ToCStruct Win32KeyedMutexAcquireReleaseInfoNV where+ withCStruct x f = allocaBytesAligned 72 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p Win32KeyedMutexAcquireReleaseInfoNV{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ let pAcquireSyncsLength = Data.Vector.length $ (acquireSyncs)+ let pAcquireKeysLength = Data.Vector.length $ (acquireKeys)+ lift $ unless (pAcquireKeysLength == pAcquireSyncsLength) $+ throwIO $ IOError Nothing InvalidArgument "" "pAcquireKeys and pAcquireSyncs must have the same length" Nothing Nothing+ let pAcquireTimeoutMillisecondsLength = Data.Vector.length $ (acquireTimeoutMilliseconds)+ lift $ unless (pAcquireTimeoutMillisecondsLength == pAcquireSyncsLength) $+ throwIO $ IOError Nothing InvalidArgument "" "pAcquireTimeoutMilliseconds and pAcquireSyncs must have the same length" Nothing Nothing+ lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral pAcquireSyncsLength :: Word32))+ pPAcquireSyncs' <- ContT $ allocaBytesAligned @DeviceMemory ((Data.Vector.length (acquireSyncs)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPAcquireSyncs' `plusPtr` (8 * (i)) :: Ptr DeviceMemory) (e)) (acquireSyncs)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DeviceMemory))) (pPAcquireSyncs')+ pPAcquireKeys' <- ContT $ allocaBytesAligned @Word64 ((Data.Vector.length (acquireKeys)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPAcquireKeys' `plusPtr` (8 * (i)) :: Ptr Word64) (e)) (acquireKeys)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Word64))) (pPAcquireKeys')+ pPAcquireTimeoutMilliseconds' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (acquireTimeoutMilliseconds)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPAcquireTimeoutMilliseconds' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (acquireTimeoutMilliseconds)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Word32))) (pPAcquireTimeoutMilliseconds')+ let pReleaseSyncsLength = Data.Vector.length $ (releaseSyncs)+ let pReleaseKeysLength = Data.Vector.length $ (releaseKeys)+ lift $ unless (pReleaseKeysLength == pReleaseSyncsLength) $+ throwIO $ IOError Nothing InvalidArgument "" "pReleaseKeys and pReleaseSyncs must have the same length" Nothing Nothing+ lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral pReleaseSyncsLength :: Word32))+ pPReleaseSyncs' <- ContT $ allocaBytesAligned @DeviceMemory ((Data.Vector.length (releaseSyncs)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPReleaseSyncs' `plusPtr` (8 * (i)) :: Ptr DeviceMemory) (e)) (releaseSyncs)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr DeviceMemory))) (pPReleaseSyncs')+ pPReleaseKeys' <- ContT $ allocaBytesAligned @Word64 ((Data.Vector.length (releaseKeys)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPReleaseKeys' `plusPtr` (8 * (i)) :: Ptr Word64) (e)) (releaseKeys)+ lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr Word64))) (pPReleaseKeys')+ lift $ f+ cStructSize = 72+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ pPAcquireSyncs' <- ContT $ allocaBytesAligned @DeviceMemory ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPAcquireSyncs' `plusPtr` (8 * (i)) :: Ptr DeviceMemory) (e)) (mempty)+ lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr DeviceMemory))) (pPAcquireSyncs')+ pPAcquireKeys' <- ContT $ allocaBytesAligned @Word64 ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPAcquireKeys' `plusPtr` (8 * (i)) :: Ptr Word64) (e)) (mempty)+ lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Word64))) (pPAcquireKeys')+ pPAcquireTimeoutMilliseconds' <- ContT $ allocaBytesAligned @Word32 ((Data.Vector.length (mempty)) * 4) 4+ lift $ Data.Vector.imapM_ (\i e -> poke (pPAcquireTimeoutMilliseconds' `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (mempty)+ lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr Word32))) (pPAcquireTimeoutMilliseconds')+ pPReleaseSyncs' <- ContT $ allocaBytesAligned @DeviceMemory ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPReleaseSyncs' `plusPtr` (8 * (i)) :: Ptr DeviceMemory) (e)) (mempty)+ lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr DeviceMemory))) (pPReleaseSyncs')+ pPReleaseKeys' <- ContT $ allocaBytesAligned @Word64 ((Data.Vector.length (mempty)) * 8) 8+ lift $ Data.Vector.imapM_ (\i e -> poke (pPReleaseKeys' `plusPtr` (8 * (i)) :: Ptr Word64) (e)) (mempty)+ lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr Word64))) (pPReleaseKeys')+ lift $ f++instance FromCStruct Win32KeyedMutexAcquireReleaseInfoNV where+ peekCStruct p = do+ acquireCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))+ pAcquireSyncs <- peek @(Ptr DeviceMemory) ((p `plusPtr` 24 :: Ptr (Ptr DeviceMemory)))+ pAcquireSyncs' <- generateM (fromIntegral acquireCount) (\i -> peek @DeviceMemory ((pAcquireSyncs `advancePtrBytes` (8 * (i)) :: Ptr DeviceMemory)))+ pAcquireKeys <- peek @(Ptr Word64) ((p `plusPtr` 32 :: Ptr (Ptr Word64)))+ pAcquireKeys' <- generateM (fromIntegral acquireCount) (\i -> peek @Word64 ((pAcquireKeys `advancePtrBytes` (8 * (i)) :: Ptr Word64)))+ pAcquireTimeoutMilliseconds <- peek @(Ptr Word32) ((p `plusPtr` 40 :: Ptr (Ptr Word32)))+ pAcquireTimeoutMilliseconds' <- generateM (fromIntegral acquireCount) (\i -> peek @Word32 ((pAcquireTimeoutMilliseconds `advancePtrBytes` (4 * (i)) :: Ptr Word32)))+ releaseCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))+ pReleaseSyncs <- peek @(Ptr DeviceMemory) ((p `plusPtr` 56 :: Ptr (Ptr DeviceMemory)))+ pReleaseSyncs' <- generateM (fromIntegral releaseCount) (\i -> peek @DeviceMemory ((pReleaseSyncs `advancePtrBytes` (8 * (i)) :: Ptr DeviceMemory)))+ pReleaseKeys <- peek @(Ptr Word64) ((p `plusPtr` 64 :: Ptr (Ptr Word64)))+ pReleaseKeys' <- generateM (fromIntegral releaseCount) (\i -> peek @Word64 ((pReleaseKeys `advancePtrBytes` (8 * (i)) :: Ptr Word64)))+ pure $ Win32KeyedMutexAcquireReleaseInfoNV+ pAcquireSyncs' pAcquireKeys' pAcquireTimeoutMilliseconds' pReleaseSyncs' pReleaseKeys'++instance Zero Win32KeyedMutexAcquireReleaseInfoNV where+ zero = Win32KeyedMutexAcquireReleaseInfoNV+ mempty+ mempty+ mempty+ mempty+ mempty+++type NV_WIN32_KEYED_MUTEX_SPEC_VERSION = 2++-- No documentation found for TopLevel "VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION"+pattern NV_WIN32_KEYED_MUTEX_SPEC_VERSION :: forall a . Integral a => a+pattern NV_WIN32_KEYED_MUTEX_SPEC_VERSION = 2+++type NV_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_NV_win32_keyed_mutex"++-- No documentation found for TopLevel "VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME"+pattern NV_WIN32_KEYED_MUTEX_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern NV_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_NV_win32_keyed_mutex"+
+ src/Graphics/Vulkan/Extensions/VK_NV_win32_keyed_mutex.hs-boot view
@@ -0,0 +1,13 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex (Win32KeyedMutexAcquireReleaseInfoNV) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data Win32KeyedMutexAcquireReleaseInfoNV++instance ToCStruct Win32KeyedMutexAcquireReleaseInfoNV+instance Show Win32KeyedMutexAcquireReleaseInfoNV++instance FromCStruct Win32KeyedMutexAcquireReleaseInfoNV+
+ src/Graphics/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs view
@@ -0,0 +1,174 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform ( RenderPassTransformBeginInfoQCOM(..)+ , CommandBufferInheritanceRenderPassTransformInfoQCOM(..)+ , QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION+ , pattern QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION+ , QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME+ , pattern QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME+ , SurfaceTransformFlagBitsKHR(..)+ , SurfaceTransformFlagsKHR+ ) where++import Foreign.Marshal.Alloc (allocaBytesAligned)+import Foreign.Ptr (nullPtr)+import Foreign.Ptr (plusPtr)+import Control.Monad.Trans.Class (lift)+import Control.Monad.Trans.Cont (evalContT)+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 Foreign.Ptr (Ptr)+import Data.Kind (Type)+import Control.Monad.Trans.Cont (ContT(..))+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (FromCStruct(..))+import Graphics.Vulkan.Core10.CommandBufferBuilding (Rect2D)+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType)+import Graphics.Vulkan.Extensions.VK_KHR_display (SurfaceTransformFlagBitsKHR)+import Graphics.Vulkan.CStruct (ToCStruct)+import Graphics.Vulkan.CStruct (ToCStruct(..))+import Graphics.Vulkan.Zero (Zero(..))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM))+import Graphics.Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM))+import Graphics.Vulkan.Extensions.VK_KHR_display (SurfaceTransformFlagBitsKHR(..))+import Graphics.Vulkan.Extensions.VK_KHR_display (SurfaceTransformFlagsKHR)+-- | VkRenderPassTransformBeginInfoQCOM - Structure describing transform+-- parameters of a render pass instance+--+-- == Valid Usage+--+-- - @transform@ /must/ be VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,+-- VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,+-- VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR, or+-- VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR.+--+-- - The renderpass must have been created with+-- 'Graphics.Vulkan.Core10.Pass.RenderPassCreateInfo'::'Graphics.Vulkan.Core10.BaseType.Flags'+-- containing VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM.+--+-- == Valid Usage (Implicit)+--+-- - @sType@ /must/ be+-- 'Graphics.Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM'+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.SurfaceTransformFlagBitsKHR'+data RenderPassTransformBeginInfoQCOM = RenderPassTransformBeginInfoQCOM+ { -- | @transform@ is a VkSurfaceTransformFlagBitsKHR value describing the+ -- transform to be applied applied to rasterization.+ transform :: SurfaceTransformFlagBitsKHR }+ deriving (Typeable)+deriving instance Show RenderPassTransformBeginInfoQCOM++instance ToCStruct RenderPassTransformBeginInfoQCOM where+ withCStruct x f = allocaBytesAligned 24 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p RenderPassTransformBeginInfoQCOM{..} f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr SurfaceTransformFlagBitsKHR)) (transform)+ f+ cStructSize = 24+ cStructAlignment = 8+ pokeZeroCStruct p f = do+ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM)+ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ poke ((p `plusPtr` 16 :: Ptr SurfaceTransformFlagBitsKHR)) (zero)+ f++instance FromCStruct RenderPassTransformBeginInfoQCOM where+ peekCStruct p = do+ transform <- peek @SurfaceTransformFlagBitsKHR ((p `plusPtr` 16 :: Ptr SurfaceTransformFlagBitsKHR))+ pure $ RenderPassTransformBeginInfoQCOM+ transform++instance Storable RenderPassTransformBeginInfoQCOM where+ sizeOf ~_ = 24+ alignment ~_ = 8+ peek = peekCStruct+ poke ptr poked = pokeCStruct ptr poked (pure ())++instance Zero RenderPassTransformBeginInfoQCOM where+ zero = RenderPassTransformBeginInfoQCOM+ zero+++-- | VkCommandBufferInheritanceRenderPassTransformInfoQCOM - Structure+-- describing transformed render pass parameters command buffer+--+-- = Description+--+-- When the secondary is recorded to execute within a render pass instance+-- using 'Graphics.Vulkan.Core10.CommandBufferBuilding.cmdExecuteCommands',+-- the render pass transform parameters of the secondary command buffer+-- /must/ be consistent with the render pass transform parameters specified+-- for the render pass instance. In particular, the @transform@ and+-- @renderArea@ for command buffer /must/ be identical to the @transform@+-- and @renderArea@ of the render pass instance.+--+-- == Valid Usage (Implicit)+--+-- = See Also+--+-- 'Graphics.Vulkan.Core10.CommandBufferBuilding.Rect2D',+-- 'Graphics.Vulkan.Core10.Enums.StructureType.StructureType',+-- 'Graphics.Vulkan.Extensions.VK_KHR_display.SurfaceTransformFlagBitsKHR'+data CommandBufferInheritanceRenderPassTransformInfoQCOM = CommandBufferInheritanceRenderPassTransformInfoQCOM+ { -- | @transform@ /must/ be VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,+ -- VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,+ -- VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR, or+ -- VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR.+ transform :: SurfaceTransformFlagBitsKHR+ , -- | @renderArea@ is the render area that is affected by the command buffer.+ renderArea :: Rect2D+ }+ deriving (Typeable)+deriving instance Show CommandBufferInheritanceRenderPassTransformInfoQCOM++instance ToCStruct CommandBufferInheritanceRenderPassTransformInfoQCOM where+ withCStruct x f = allocaBytesAligned 40 8 $ \p -> pokeCStruct p x (f p)+ pokeCStruct p CommandBufferInheritanceRenderPassTransformInfoQCOM{..} f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr SurfaceTransformFlagBitsKHR)) (transform)+ ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr Rect2D)) (renderArea) . ($ ())+ lift $ f+ cStructSize = 40+ cStructAlignment = 8+ pokeZeroCStruct p f = evalContT $ do+ lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM)+ lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)+ lift $ poke ((p `plusPtr` 16 :: Ptr SurfaceTransformFlagBitsKHR)) (zero)+ ContT $ pokeCStruct ((p `plusPtr` 20 :: Ptr Rect2D)) (zero) . ($ ())+ lift $ f++instance FromCStruct CommandBufferInheritanceRenderPassTransformInfoQCOM where+ peekCStruct p = do+ transform <- peek @SurfaceTransformFlagBitsKHR ((p `plusPtr` 16 :: Ptr SurfaceTransformFlagBitsKHR))+ renderArea <- peekCStruct @Rect2D ((p `plusPtr` 20 :: Ptr Rect2D))+ pure $ CommandBufferInheritanceRenderPassTransformInfoQCOM+ transform renderArea++instance Zero CommandBufferInheritanceRenderPassTransformInfoQCOM where+ zero = CommandBufferInheritanceRenderPassTransformInfoQCOM+ zero+ zero+++type QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1++-- No documentation found for TopLevel "VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION"+pattern QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION :: forall a . Integral a => a+pattern QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1+++type QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform"++-- No documentation found for TopLevel "VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME"+pattern QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a+pattern QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform"+
+ src/Graphics/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs-boot view
@@ -0,0 +1,23 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform ( CommandBufferInheritanceRenderPassTransformInfoQCOM+ , RenderPassTransformBeginInfoQCOM+ ) where++import Data.Kind (Type)+import Graphics.Vulkan.CStruct (FromCStruct)+import Graphics.Vulkan.CStruct (ToCStruct)+data CommandBufferInheritanceRenderPassTransformInfoQCOM++instance ToCStruct CommandBufferInheritanceRenderPassTransformInfoQCOM+instance Show CommandBufferInheritanceRenderPassTransformInfoQCOM++instance FromCStruct CommandBufferInheritanceRenderPassTransformInfoQCOM+++data RenderPassTransformBeginInfoQCOM++instance ToCStruct RenderPassTransformBeginInfoQCOM+instance Show RenderPassTransformBeginInfoQCOM++instance FromCStruct RenderPassTransformBeginInfoQCOM+
+ src/Graphics/Vulkan/Extensions/WSITypes.hs view
@@ -0,0 +1,95 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.WSITypes ( HINSTANCE+ , HWND+ , HMONITOR+ , HANDLE+ , DWORD+ , LPCWSTR+ , Display+ , VisualID+ , Window+ , RROutput+ , Xcb_visualid_t+ , Xcb_window_t+ , Zx_handle_t+ , GgpStreamDescriptor+ , GgpFrameToken+ , SECURITY_ATTRIBUTES+ , Xcb_connection_t+ , Wl_display+ , Wl_surface+ , CAMetalLayer+ , AHardwareBuffer+ , ANativeWindow+ ) where++import Foreign.C.Types (CWchar)+import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Word (Word64)++type HINSTANCE = Ptr ()+++type HWND = Ptr ()+++type HMONITOR = Ptr ()+++type HANDLE = Ptr ()+++type DWORD = Word32+++type LPCWSTR = Ptr CWchar+++type Display = Ptr ()+++type VisualID = Word64+++type Window = Word64+++type RROutput = Word64+++type Xcb_visualid_t = Word32+++type Xcb_window_t = Word32+++type Zx_handle_t = Word32+++type GgpStreamDescriptor = Word32+++type GgpFrameToken = Word32+++data SECURITY_ATTRIBUTES+++data Xcb_connection_t+++data Wl_display+++data Wl_surface+++data CAMetalLayer+++data AHardwareBuffer+++data ANativeWindow+
+ src/Graphics/Vulkan/Extensions/WSITypes.hs-boot view
@@ -0,0 +1,38 @@+{-# language CPP #-}+module Graphics.Vulkan.Extensions.WSITypes ( AHardwareBuffer+ , Display+ , HANDLE+ , RROutput+ , VisualID+ , Wl_display+ , Xcb_connection_t+ , Xcb_visualid_t+ ) where++import Foreign.Ptr (Ptr)+import Data.Word (Word32)+import Data.Word (Word64)++data AHardwareBuffer+++type Display = Ptr ()+++type HANDLE = Ptr ()+++type RROutput = Word64+++type VisualID = Word64+++data Wl_display+++data Xcb_connection_t+++type Xcb_visualid_t = Word32+
src/Graphics/Vulkan/NamedType.hs view
@@ -1,17 +1,8 @@-{-# language Strict #-} {-# language CPP #-}-{-# language PolyKinds #-}-{-# language TypeOperators #-}--module Graphics.Vulkan.NamedType- ( (:::)- ) where----+module Graphics.Vulkan.NamedType ((:::)) where -- | Annotate a type with a name type (name :: k) ::: a = a+
+ src/Graphics/Vulkan/Version.hs view
@@ -0,0 +1,37 @@+{-# language CPP #-}+module Graphics.Vulkan.Version ( pattern HEADER_VERSION+ , pattern HEADER_VERSION_COMPLETE+ , pattern MAKE_VERSION+ , _VERSION_MAJOR+ , _VERSION_MINOR+ , _VERSION_PATCH+ ) where++import Data.Bits ((.&.))+import Data.Bits ((.|.))+import Data.Bits (shiftL)+import Data.Bits (shiftR)+import Data.Word (Word32)++pattern HEADER_VERSION :: Word32+pattern HEADER_VERSION = 134+++pattern HEADER_VERSION_COMPLETE :: Word32+pattern HEADER_VERSION_COMPLETE = MAKE_VERSION 1 2 134+++pattern MAKE_VERSION :: Word32 -> Word32 -> Word32 -> Word32+pattern MAKE_VERSION major minor patch <-+ (\v -> (_VERSION_MAJOR v, _VERSION_MINOR v, _VERSION_PATCH v) -> (major, minor, patch))+ where MAKE_VERSION major minor patch = major `shiftL` 22 .|. minor `shiftL` 12 .|. patch++_VERSION_MAJOR :: Word32 -> Word32+_VERSION_MAJOR v = v `shiftR` 22++_VERSION_MINOR :: Word32 -> Word32+_VERSION_MINOR v = v `shiftR` 12 .&. 0x3ff++_VERSION_PATCH :: Word32 -> Word32+_VERSION_PATCH v = v .&. 0xfff+
+ src/Graphics/Vulkan/Zero.hs view
@@ -0,0 +1,87 @@+{-# language CPP #-}+module Graphics.Vulkan.Zero (Zero(..)) where++import GHC.Ptr (nullFunPtr)+import Foreign.Ptr (nullPtr)+import qualified Data.Vector.Storable.Sized (replicate)+import Foreign.C.Types (CChar)+import Foreign.C.Types (CFloat)+import Foreign.C.Types (CInt)+import Foreign.C.Types (CSize)+import Foreign.Storable (Storable)+import Data.Int (Int16)+import Data.Int (Int32)+import Data.Int (Int64)+import Data.Int (Int8)+import Foreign.Ptr (FunPtr)+import Foreign.Ptr (Ptr)+import GHC.TypeNats (KnownNat)+import Data.Word (Word16)+import Data.Word (Word32)+import Data.Word (Word64)+import Data.Word (Word8)+import qualified Data.Vector.Storable.Sized (Vector)++-- | A class for initializing things with all zero data+--+-- Any instance should satisfy the following law:+--+-- @ new zero = calloc @ or @ with zero = withZeroCStruct @+--+-- i.e. Marshaling @zero@ to memory yeilds only zero-valued bytes, except+-- for structs which require a "type" tag+--+class Zero a where+ zero :: a++instance (KnownNat n, Storable a, Zero a) => Zero (Data.Vector.Storable.Sized.Vector n a) where+ zero = Data.Vector.Storable.Sized.replicate zero++instance Zero Bool where+ zero = False++instance Zero (FunPtr a) where+ zero = nullFunPtr++instance Zero (Ptr a) where+ zero = nullPtr++instance Zero Int8 where+ zero = 0++instance Zero Int16 where+ zero = 0++instance Zero Int32 where+ zero = 0++instance Zero Int64 where+ zero = 0++instance Zero Word8 where+ zero = 0++instance Zero Word16 where+ zero = 0++instance Zero Word32 where+ zero = 0++instance Zero Word64 where+ zero = 0++instance Zero Float where+ zero = 0++instance Zero CFloat where+ zero = 0++instance Zero CChar where+ zero = 0++instance Zero CSize where+ zero = 0++instance Zero CInt where+ zero = 0+
vulkan.cabal view
@@ -1,314 +1,520 @@--- This file is generated by the 'generate' program in Write.Cabal--- Any changes made here will be overwritten when 'generate' is run--- again.+cabal-version: 1.12++-- This file has been generated from package.yaml by hpack version 0.33.0.+--+-- see: https://github.com/sol/hpack+--+-- hash: 114c0fde74e474e875021865600ff7eb6f54ffb28ef52a9fd385840b8e68d414+ name: vulkan-version: 2.1.0.0+version: 3.0.0.0 synopsis: Bindings to the Vulkan graphics API.-description: Please see readme.md-homepage: http://github.com/expipiplus1/vulkan#readme+homepage: https://github.com/expipiplus1/vulkan#readme+bug-reports: https://github.com/expipiplus1/vulkan/issues license: BSD3 license-file: LICENSE-author: Joe Hermaszewski-maintainer: live.long.and.prosper@monoid.al-copyright: 2018 Joe Hermaszewski+maintainer: Joe Hermaszewski <live.long.and.prosper@monoid.al> category: Graphics build-type: Simple-extra-source-files: readme.md,- changelog.md-cabal-version: >=1.10+extra-source-files:+ readme.md+ changelog.md+ default.nix+ examples/sdl-triangle/shader.frag+ examples/sdl-triangle/shader.vert -flag xlib- description:- Enable xlib specific extensions- -- These are on by default, if lazy-loading or manual dynamic loading- -- is used then it shouldn't be a problem exposing these.- default: True-flag xlib_xrandr- description:- Enable xlib_xrandr specific extensions- -- These are on by default, if lazy-loading or manual dynamic loading- -- is used then it shouldn't be a problem exposing these.- default: True-flag xcb- description:- Enable xcb specific extensions- -- These are on by default, if lazy-loading or manual dynamic loading- -- is used then it shouldn't be a problem exposing these.- default: True-flag wayland- description:- Enable wayland specific extensions- -- These are on by default, if lazy-loading or manual dynamic loading- -- is used then it shouldn't be a problem exposing these.- default: True-flag mir- description:- Enable mir specific extensions- -- These are on by default, if lazy-loading or manual dynamic loading- -- is used then it shouldn't be a problem exposing these.- default: True-flag android- description:- Enable android specific extensions- -- These are on by default, if lazy-loading or manual dynamic loading- -- is used then it shouldn't be a problem exposing these.- default: True-flag win32- description:- Enable win32 specific extensions- -- These are on by default, if lazy-loading or manual dynamic loading- -- is used then it shouldn't be a problem exposing these.- default: True-flag vi- description:- Enable vi specific extensions- -- These are on by default, if lazy-loading or manual dynamic loading- -- is used then it shouldn't be a problem exposing these.- default: True-flag ios- description:- Enable ios specific extensions- -- These are on by default, if lazy-loading or manual dynamic loading- -- is used then it shouldn't be a problem exposing these.- default: True-flag macos- description:- Enable macos specific extensions- -- These are on by default, if lazy-loading or manual dynamic loading- -- is used then it shouldn't be a problem exposing these.- default: True+source-repository head+ type: git+ location: https://github.com/expipiplus1/vulkan +flag build-examples+ description: Build example executables+ manual: True+ default: False+ flag safe-foreign-calls- description:- Do not mark foreign imports as 'unsafe'. This means that- callbacks from Vulkan to Haskell will work. If you are using- these then make sure this flag is enabled.- default: False+ description: Do not mark foreign imports as 'unsafe'. This means that callbacks from Vulkan to Haskell will work. If you are using these then make sure this flag is enabled.+ manual: True+ default: True library- hs-source-dirs: src- -- We need to use cpphs, as regular cpp ruins latex math with lines- -- ending in backslashes- ghc-options: -Wall -pgmPcpphs -optP--cpp- build-depends: cpphs- exposed-modules: Graphics.Vulkan.NamedType- , Graphics.Vulkan.Core10.Core- , Graphics.Vulkan.Core10.Version- , Graphics.Vulkan.Core10.Constants- , Graphics.Vulkan.Core10.DeviceInitialization- , Graphics.Vulkan.Core10.Device- , Graphics.Vulkan.Core10.ExtensionDiscovery- , Graphics.Vulkan.Core10.LayerDiscovery- , Graphics.Vulkan.Core10.Queue- , Graphics.Vulkan.Core10.Memory- , Graphics.Vulkan.Core10.MemoryManagement- , Graphics.Vulkan.Core10.SparseResourceMemoryManagement- , Graphics.Vulkan.Core10.Fence- , Graphics.Vulkan.Core10.QueueSemaphore- , Graphics.Vulkan.Core10.Event- , Graphics.Vulkan.Core10.Query- , Graphics.Vulkan.Core10.Buffer- , Graphics.Vulkan.Core10.BufferView- , Graphics.Vulkan.Core10.Image- , Graphics.Vulkan.Core10.ImageView- , Graphics.Vulkan.Core10.Shader- , Graphics.Vulkan.Core10.PipelineCache- , Graphics.Vulkan.Core10.Pipeline- , Graphics.Vulkan.Core10.PipelineLayout- , Graphics.Vulkan.Core10.Sampler- , Graphics.Vulkan.Core10.DescriptorSet- , Graphics.Vulkan.Core10.Pass- , Graphics.Vulkan.Core10.CommandPool- , Graphics.Vulkan.Core10.CommandBuffer- , Graphics.Vulkan.Core10.CommandBufferBuilding- , Graphics.Vulkan.Core11.DeviceInitialization- , Graphics.Vulkan.Core11.Promoted_From_VK_KHR_subgroup- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_bind_memory2- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_16bit_storage- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_dedicated_allocation- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_and_VK_KHR_bind_memory2- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_device_group_creation- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_memory_requirements2- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_get_physical_device_properties2- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance1- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance2- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_multiview- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_variable_pointers- , Graphics.Vulkan.Core11.Promoted_From_VK_KHR_protected_memory- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_sampler_ycbcr_conversion- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_descriptor_update_template- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory_capabilities- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_memory- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence_capabilities- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_fence- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_external_semaphore_capabilities- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_maintenance3- , Graphics.Vulkan.Core11.Promoted_from_VK_KHR_shader_draw_parameters- , Graphics.Vulkan.Extensions.VK_KHR_surface- , Graphics.Vulkan.Extensions.VK_KHR_swapchain- , Graphics.Vulkan.Extensions.VK_KHR_display- , Graphics.Vulkan.Extensions.VK_KHR_display_swapchain- , Graphics.Vulkan.Extensions.VK_EXT_debug_report- , Graphics.Vulkan.Extensions.VK_NV_glsl_shader- , Graphics.Vulkan.Extensions.VK_EXT_depth_range_unrestricted- , Graphics.Vulkan.Extensions.VK_KHR_sampler_mirror_clamp_to_edge- , Graphics.Vulkan.Extensions.VK_IMG_filter_cubic- , Graphics.Vulkan.Extensions.VK_AMD_rasterization_order- , Graphics.Vulkan.Extensions.VK_AMD_shader_trinary_minmax- , Graphics.Vulkan.Extensions.VK_AMD_shader_explicit_vertex_parameter- , Graphics.Vulkan.Extensions.VK_EXT_debug_marker- , Graphics.Vulkan.Extensions.VK_AMD_gcn_shader- , Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation- , Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count- , Graphics.Vulkan.Extensions.VK_AMD_negative_viewport_height- , Graphics.Vulkan.Extensions.VK_AMD_gpu_shader_half_float- , Graphics.Vulkan.Extensions.VK_AMD_shader_ballot- , Graphics.Vulkan.Extensions.VK_AMD_texture_gather_bias_lod- , Graphics.Vulkan.Extensions.VK_AMD_shader_info- , Graphics.Vulkan.Extensions.VK_AMD_shader_image_load_store_lod- , Graphics.Vulkan.Extensions.VK_KHR_multiview- , Graphics.Vulkan.Extensions.VK_IMG_format_pvrtc- , Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities- , Graphics.Vulkan.Extensions.VK_NV_external_memory- , Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2- , Graphics.Vulkan.Extensions.VK_KHR_device_group- , Graphics.Vulkan.Extensions.VK_EXT_validation_flags- , Graphics.Vulkan.Extensions.VK_KHR_shader_draw_parameters- , Graphics.Vulkan.Extensions.VK_EXT_shader_subgroup_ballot- , Graphics.Vulkan.Extensions.VK_EXT_shader_subgroup_vote- , Graphics.Vulkan.Extensions.VK_KHR_maintenance1- , Graphics.Vulkan.Extensions.VK_KHR_device_group_creation- , Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities- , Graphics.Vulkan.Extensions.VK_KHR_external_memory- , Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd- , Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_capabilities- , Graphics.Vulkan.Extensions.VK_KHR_external_semaphore- , Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd- , Graphics.Vulkan.Extensions.VK_KHR_push_descriptor- , Graphics.Vulkan.Extensions.VK_KHR_16bit_storage- , Graphics.Vulkan.Extensions.VK_KHR_incremental_present- , Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template- , Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands- , Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling- , Graphics.Vulkan.Extensions.VK_EXT_direct_mode_display- , Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter- , Graphics.Vulkan.Extensions.VK_EXT_display_control- , Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing- , Graphics.Vulkan.Extensions.VK_NV_sample_mask_override_coverage- , Graphics.Vulkan.Extensions.VK_NV_geometry_shader_passthrough- , Graphics.Vulkan.Extensions.VK_NV_viewport_array2- , Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes- , Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle- , Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles- , Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization- , Graphics.Vulkan.Extensions.VK_EXT_swapchain_colorspace- , Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata- , Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image- , Graphics.Vulkan.Extensions.VK_KHR_external_fence_capabilities- , Graphics.Vulkan.Extensions.VK_KHR_external_fence- , Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd- , Graphics.Vulkan.Extensions.VK_KHR_maintenance2- , Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2- , Graphics.Vulkan.Extensions.VK_KHR_variable_pointers- , Graphics.Vulkan.Extensions.VK_EXT_external_memory_dma_buf- , Graphics.Vulkan.Extensions.VK_EXT_queue_family_foreign- , Graphics.Vulkan.Extensions.VK_KHR_dedicated_allocation- , Graphics.Vulkan.Extensions.VK_EXT_debug_utils- , Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax- , Graphics.Vulkan.Extensions.VK_KHR_storage_buffer_storage_class- , Graphics.Vulkan.Extensions.VK_AMD_gpu_shader_int16- , Graphics.Vulkan.Extensions.VK_AMD_mixed_attachment_samples- , Graphics.Vulkan.Extensions.VK_AMD_shader_fragment_mask- , Graphics.Vulkan.Extensions.VK_EXT_shader_stencil_export- , Graphics.Vulkan.Extensions.VK_EXT_sample_locations- , Graphics.Vulkan.Extensions.VK_KHR_relaxed_block_layout- , Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2- , Graphics.Vulkan.Extensions.VK_KHR_image_format_list- , Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced- , Graphics.Vulkan.Extensions.VK_NV_fragment_coverage_to_color- , Graphics.Vulkan.Extensions.VK_NV_framebuffer_mixed_samples- , Graphics.Vulkan.Extensions.VK_NV_fill_rectangle- , Graphics.Vulkan.Extensions.VK_EXT_post_depth_coverage- , Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion- , Graphics.Vulkan.Extensions.VK_KHR_bind_memory2- , Graphics.Vulkan.Extensions.VK_EXT_validation_cache- , Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing- , Graphics.Vulkan.Extensions.VK_EXT_shader_viewport_index_layer- , Graphics.Vulkan.Extensions.VK_KHR_maintenance3- , Graphics.Vulkan.Extensions.VK_EXT_global_priority- , Graphics.Vulkan.Extensions.VK_EXT_external_memory_host- , Graphics.Vulkan.Extensions.VK_AMD_buffer_marker- , Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties- , Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor- , Graphics.Vulkan.Extensions.VK_NV_shader_subgroup_partitioned- , Graphics.Vulkan.Dynamic- , Graphics.Vulkan- , Graphics.Vulkan.Core10- , Graphics.Vulkan.Core11- , Graphics.Vulkan.Extensions-+ hs-source-dirs:+ src+ default-extensions: AllowAmbiguousTypes CPP DataKinds DefaultSignatures DeriveAnyClass DerivingStrategies DuplicateRecordFields FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs LambdaCase MagicHash NoMonomorphismRestriction OverloadedStrings PartialTypeSignatures PatternSynonyms PolyKinds QuantifiedConstraints RankNTypes RecordWildCards RoleAnnotations ScopedTypeVariables StandaloneDeriving Strict TypeApplications TypeFamilyDependencies TypeOperators TypeSynonymInstances UndecidableInstances ViewPatterns+ ghc-options: -Wall -Wno-unticked-promoted-constructors -Wno-missing-pattern-synonym-signatures -Wno-unused-imports -Wno-missing-signatures -Wno-partial-type-signatures+ build-depends:+ base <4.14+ , bytestring+ , transformers+ , vector+ , vector-sized+ if os(windows)+ extra-libraries:+ vulkan-1+ else+ extra-libraries:+ vulkan if flag(safe-foreign-calls) cpp-options: -DSAFE_FOREIGN_CALLS-- if flag(android)- cpp-options: -DVK_USE_PLATFORM_ANDROID_KHR- exposed-modules: Graphics.Vulkan.Extensions.VK_KHR_android_surface- , Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer- - if flag(ios)- cpp-options: -DVK_USE_PLATFORM_IOS_MVK- exposed-modules: Graphics.Vulkan.Extensions.VK_MVK_ios_surface- - if flag(macos)- cpp-options: -DVK_USE_PLATFORM_MACOS_MVK- exposed-modules: Graphics.Vulkan.Extensions.VK_MVK_macos_surface- - if flag(mir)- cpp-options: -DVK_USE_PLATFORM_MIR_KHR- exposed-modules: Graphics.Vulkan.Extensions.VK_KHR_mir_surface- - if flag(vi)- cpp-options: -DVK_USE_PLATFORM_VI_NN- exposed-modules: Graphics.Vulkan.Extensions.VK_NN_vi_surface- - if flag(wayland)- cpp-options: -DVK_USE_PLATFORM_WAYLAND_KHR- exposed-modules: Graphics.Vulkan.Extensions.VK_KHR_wayland_surface- - if flag(win32)- cpp-options: -DVK_USE_PLATFORM_WIN32_KHR- exposed-modules: Graphics.Vulkan.Extensions.VK_KHR_win32_surface- , Graphics.Vulkan.Extensions.VK_NV_external_memory_win32- , Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex- , Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32- , Graphics.Vulkan.Extensions.VK_KHR_win32_keyed_mutex- , Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32- , Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32- - if flag(xcb)- cpp-options: -DVK_USE_PLATFORM_XCB_KHR- exposed-modules: Graphics.Vulkan.Extensions.VK_KHR_xcb_surface- - if flag(xlib)- cpp-options: -DVK_USE_PLATFORM_XLIB_KHR- exposed-modules: Graphics.Vulkan.Extensions.VK_KHR_xlib_surface- - if flag(xlib_xrandr)- cpp-options: -DVK_USE_PLATFORM_XLIB_XRANDR_EXT- exposed-modules: Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display- -- build-depends: base >= 4.9 && < 5- , vector-sized >= 0.1 && < 1.1- default-language: Haskell2010+ exposed-modules:+ Graphics.Vulkan+ Graphics.Vulkan.Core10+ Graphics.Vulkan.Core10.AllocationCallbacks+ Graphics.Vulkan.Core10.APIConstants+ Graphics.Vulkan.Core10.BaseType+ Graphics.Vulkan.Core10.Buffer+ Graphics.Vulkan.Core10.BufferView+ Graphics.Vulkan.Core10.CommandBuffer+ Graphics.Vulkan.Core10.CommandBufferBuilding+ Graphics.Vulkan.Core10.CommandPool+ Graphics.Vulkan.Core10.DescriptorSet+ Graphics.Vulkan.Core10.Device+ Graphics.Vulkan.Core10.DeviceInitialization+ Graphics.Vulkan.Core10.Enums+ Graphics.Vulkan.Core10.Enums.AccessFlagBits+ Graphics.Vulkan.Core10.Enums.AttachmentDescriptionFlagBits+ Graphics.Vulkan.Core10.Enums.AttachmentLoadOp+ Graphics.Vulkan.Core10.Enums.AttachmentStoreOp+ Graphics.Vulkan.Core10.Enums.BlendFactor+ Graphics.Vulkan.Core10.Enums.BlendOp+ Graphics.Vulkan.Core10.Enums.BorderColor+ Graphics.Vulkan.Core10.Enums.BufferCreateFlagBits+ Graphics.Vulkan.Core10.Enums.BufferUsageFlagBits+ Graphics.Vulkan.Core10.Enums.BufferViewCreateFlags+ Graphics.Vulkan.Core10.Enums.ColorComponentFlagBits+ Graphics.Vulkan.Core10.Enums.CommandBufferLevel+ Graphics.Vulkan.Core10.Enums.CommandBufferResetFlagBits+ Graphics.Vulkan.Core10.Enums.CommandBufferUsageFlagBits+ Graphics.Vulkan.Core10.Enums.CommandPoolCreateFlagBits+ Graphics.Vulkan.Core10.Enums.CommandPoolResetFlagBits+ Graphics.Vulkan.Core10.Enums.CompareOp+ Graphics.Vulkan.Core10.Enums.ComponentSwizzle+ Graphics.Vulkan.Core10.Enums.CullModeFlagBits+ Graphics.Vulkan.Core10.Enums.DependencyFlagBits+ Graphics.Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits+ Graphics.Vulkan.Core10.Enums.DescriptorPoolResetFlags+ Graphics.Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits+ Graphics.Vulkan.Core10.Enums.DescriptorType+ Graphics.Vulkan.Core10.Enums.DeviceCreateFlags+ Graphics.Vulkan.Core10.Enums.DeviceQueueCreateFlagBits+ Graphics.Vulkan.Core10.Enums.DynamicState+ Graphics.Vulkan.Core10.Enums.EventCreateFlags+ Graphics.Vulkan.Core10.Enums.FenceCreateFlagBits+ Graphics.Vulkan.Core10.Enums.Filter+ Graphics.Vulkan.Core10.Enums.Format+ Graphics.Vulkan.Core10.Enums.FormatFeatureFlagBits+ Graphics.Vulkan.Core10.Enums.FramebufferCreateFlagBits+ Graphics.Vulkan.Core10.Enums.FrontFace+ Graphics.Vulkan.Core10.Enums.ImageAspectFlagBits+ Graphics.Vulkan.Core10.Enums.ImageCreateFlagBits+ Graphics.Vulkan.Core10.Enums.ImageLayout+ Graphics.Vulkan.Core10.Enums.ImageTiling+ Graphics.Vulkan.Core10.Enums.ImageType+ Graphics.Vulkan.Core10.Enums.ImageUsageFlagBits+ Graphics.Vulkan.Core10.Enums.ImageViewCreateFlagBits+ Graphics.Vulkan.Core10.Enums.ImageViewType+ Graphics.Vulkan.Core10.Enums.IndexType+ Graphics.Vulkan.Core10.Enums.InstanceCreateFlags+ Graphics.Vulkan.Core10.Enums.InternalAllocationType+ Graphics.Vulkan.Core10.Enums.LogicOp+ Graphics.Vulkan.Core10.Enums.MemoryHeapFlagBits+ Graphics.Vulkan.Core10.Enums.MemoryMapFlags+ Graphics.Vulkan.Core10.Enums.MemoryPropertyFlagBits+ Graphics.Vulkan.Core10.Enums.ObjectType+ Graphics.Vulkan.Core10.Enums.PhysicalDeviceType+ Graphics.Vulkan.Core10.Enums.PipelineBindPoint+ Graphics.Vulkan.Core10.Enums.PipelineCacheCreateFlags+ Graphics.Vulkan.Core10.Enums.PipelineCacheHeaderVersion+ Graphics.Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlags+ Graphics.Vulkan.Core10.Enums.PipelineCreateFlagBits+ Graphics.Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlags+ Graphics.Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags+ Graphics.Vulkan.Core10.Enums.PipelineInputAssemblyStateCreateFlags+ Graphics.Vulkan.Core10.Enums.PipelineLayoutCreateFlags+ Graphics.Vulkan.Core10.Enums.PipelineMultisampleStateCreateFlags+ Graphics.Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags+ Graphics.Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits+ Graphics.Vulkan.Core10.Enums.PipelineStageFlagBits+ Graphics.Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags+ Graphics.Vulkan.Core10.Enums.PipelineVertexInputStateCreateFlags+ Graphics.Vulkan.Core10.Enums.PipelineViewportStateCreateFlags+ Graphics.Vulkan.Core10.Enums.PolygonMode+ Graphics.Vulkan.Core10.Enums.PrimitiveTopology+ Graphics.Vulkan.Core10.Enums.QueryControlFlagBits+ Graphics.Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits+ Graphics.Vulkan.Core10.Enums.QueryPoolCreateFlags+ Graphics.Vulkan.Core10.Enums.QueryResultFlagBits+ Graphics.Vulkan.Core10.Enums.QueryType+ Graphics.Vulkan.Core10.Enums.QueueFlagBits+ Graphics.Vulkan.Core10.Enums.RenderPassCreateFlagBits+ Graphics.Vulkan.Core10.Enums.Result+ Graphics.Vulkan.Core10.Enums.SampleCountFlagBits+ Graphics.Vulkan.Core10.Enums.SamplerAddressMode+ Graphics.Vulkan.Core10.Enums.SamplerCreateFlagBits+ Graphics.Vulkan.Core10.Enums.SamplerMipmapMode+ Graphics.Vulkan.Core10.Enums.SemaphoreCreateFlags+ Graphics.Vulkan.Core10.Enums.ShaderModuleCreateFlagBits+ Graphics.Vulkan.Core10.Enums.ShaderStageFlagBits+ Graphics.Vulkan.Core10.Enums.SharingMode+ Graphics.Vulkan.Core10.Enums.SparseImageFormatFlagBits+ Graphics.Vulkan.Core10.Enums.SparseMemoryBindFlagBits+ Graphics.Vulkan.Core10.Enums.StencilFaceFlagBits+ Graphics.Vulkan.Core10.Enums.StencilOp+ Graphics.Vulkan.Core10.Enums.StructureType+ Graphics.Vulkan.Core10.Enums.SubpassContents+ Graphics.Vulkan.Core10.Enums.SubpassDescriptionFlagBits+ Graphics.Vulkan.Core10.Enums.SystemAllocationScope+ Graphics.Vulkan.Core10.Enums.VendorId+ Graphics.Vulkan.Core10.Enums.VertexInputRate+ Graphics.Vulkan.Core10.Event+ Graphics.Vulkan.Core10.ExtensionDiscovery+ Graphics.Vulkan.Core10.Fence+ Graphics.Vulkan.Core10.FuncPointers+ Graphics.Vulkan.Core10.Handles+ Graphics.Vulkan.Core10.Image+ Graphics.Vulkan.Core10.ImageView+ Graphics.Vulkan.Core10.LayerDiscovery+ Graphics.Vulkan.Core10.Memory+ Graphics.Vulkan.Core10.MemoryManagement+ Graphics.Vulkan.Core10.OtherTypes+ Graphics.Vulkan.Core10.Pass+ Graphics.Vulkan.Core10.Pipeline+ Graphics.Vulkan.Core10.PipelineCache+ Graphics.Vulkan.Core10.PipelineLayout+ Graphics.Vulkan.Core10.Query+ Graphics.Vulkan.Core10.Queue+ Graphics.Vulkan.Core10.QueueSemaphore+ Graphics.Vulkan.Core10.Sampler+ Graphics.Vulkan.Core10.Shader+ Graphics.Vulkan.Core10.SharedTypes+ Graphics.Vulkan.Core10.SparseResourceMemoryManagement+ Graphics.Vulkan.Core11+ Graphics.Vulkan.Core11.DeviceInitialization+ Graphics.Vulkan.Core11.Enums+ Graphics.Vulkan.Core11.Enums.ChromaLocation+ Graphics.Vulkan.Core11.Enums.CommandPoolTrimFlags+ Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateCreateFlags+ Graphics.Vulkan.Core11.Enums.DescriptorUpdateTemplateType+ Graphics.Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits+ Graphics.Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits+ Graphics.Vulkan.Core11.Enums.ExternalMemoryFeatureFlagBits+ Graphics.Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits+ Graphics.Vulkan.Core11.Enums.ExternalSemaphoreFeatureFlagBits+ Graphics.Vulkan.Core11.Enums.ExternalSemaphoreHandleTypeFlagBits+ Graphics.Vulkan.Core11.Enums.FenceImportFlagBits+ Graphics.Vulkan.Core11.Enums.MemoryAllocateFlagBits+ Graphics.Vulkan.Core11.Enums.PeerMemoryFeatureFlagBits+ Graphics.Vulkan.Core11.Enums.PointClippingBehavior+ Graphics.Vulkan.Core11.Enums.SamplerYcbcrModelConversion+ Graphics.Vulkan.Core11.Enums.SamplerYcbcrRange+ Graphics.Vulkan.Core11.Enums.SemaphoreImportFlagBits+ Graphics.Vulkan.Core11.Enums.SubgroupFeatureFlagBits+ Graphics.Vulkan.Core11.Enums.TessellationDomainOrigin+ Graphics.Vulkan.Core11.Handles+ Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory+ Graphics.Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_device_groupAndVK_KHR_bind_memory2+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance1+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance2+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_maintenance3+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_multiview+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters+ Graphics.Vulkan.Core11.Promoted_From_VK_KHR_variable_pointers+ Graphics.Vulkan.Core12+ Graphics.Vulkan.Core12.Enums+ Graphics.Vulkan.Core12.Enums.DescriptorBindingFlagBits+ Graphics.Vulkan.Core12.Enums.DriverId+ Graphics.Vulkan.Core12.Enums.ResolveModeFlagBits+ Graphics.Vulkan.Core12.Enums.SamplerReductionMode+ Graphics.Vulkan.Core12.Enums.SemaphoreType+ Graphics.Vulkan.Core12.Enums.SemaphoreWaitFlagBits+ Graphics.Vulkan.Core12.Enums.ShaderFloatControlsIndependence+ Graphics.Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing+ Graphics.Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset+ Graphics.Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax+ Graphics.Vulkan.Core12.Promoted_From_VK_EXT_scalar_block_layout+ Graphics.Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage+ Graphics.Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage+ Graphics.Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address+ Graphics.Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2+ Graphics.Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve+ Graphics.Vulkan.Core12.Promoted_From_VK_KHR_draw_indirect_count+ Graphics.Vulkan.Core12.Promoted_From_VK_KHR_driver_properties+ Graphics.Vulkan.Core12.Promoted_From_VK_KHR_image_format_list+ Graphics.Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer+ Graphics.Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts+ Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64+ Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8+ Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_float_controls+ Graphics.Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types+ Graphics.Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore+ Graphics.Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout+ Graphics.Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model+ Graphics.Vulkan.CStruct+ Graphics.Vulkan.CStruct.Extends+ Graphics.Vulkan.CStruct.Utils+ Graphics.Vulkan.Dynamic+ Graphics.Vulkan.Exception+ Graphics.Vulkan.Extensions+ Graphics.Vulkan.Extensions.Handles+ Graphics.Vulkan.Extensions.VK_AMD_buffer_marker+ Graphics.Vulkan.Extensions.VK_AMD_device_coherent_memory+ Graphics.Vulkan.Extensions.VK_AMD_display_native_hdr+ Graphics.Vulkan.Extensions.VK_AMD_draw_indirect_count+ Graphics.Vulkan.Extensions.VK_AMD_gcn_shader+ Graphics.Vulkan.Extensions.VK_AMD_gpu_shader_half_float+ Graphics.Vulkan.Extensions.VK_AMD_gpu_shader_int16+ Graphics.Vulkan.Extensions.VK_AMD_memory_overallocation_behavior+ Graphics.Vulkan.Extensions.VK_AMD_mixed_attachment_samples+ Graphics.Vulkan.Extensions.VK_AMD_negative_viewport_height+ Graphics.Vulkan.Extensions.VK_AMD_pipeline_compiler_control+ Graphics.Vulkan.Extensions.VK_AMD_rasterization_order+ Graphics.Vulkan.Extensions.VK_AMD_shader_ballot+ Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties+ Graphics.Vulkan.Extensions.VK_AMD_shader_core_properties2+ Graphics.Vulkan.Extensions.VK_AMD_shader_explicit_vertex_parameter+ Graphics.Vulkan.Extensions.VK_AMD_shader_fragment_mask+ Graphics.Vulkan.Extensions.VK_AMD_shader_image_load_store_lod+ Graphics.Vulkan.Extensions.VK_AMD_shader_info+ Graphics.Vulkan.Extensions.VK_AMD_shader_trinary_minmax+ Graphics.Vulkan.Extensions.VK_AMD_texture_gather_bias_lod+ Graphics.Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer+ Graphics.Vulkan.Extensions.VK_EXT_acquire_xlib_display+ Graphics.Vulkan.Extensions.VK_EXT_astc_decode_mode+ Graphics.Vulkan.Extensions.VK_EXT_blend_operation_advanced+ Graphics.Vulkan.Extensions.VK_EXT_buffer_device_address+ Graphics.Vulkan.Extensions.VK_EXT_calibrated_timestamps+ Graphics.Vulkan.Extensions.VK_EXT_conditional_rendering+ Graphics.Vulkan.Extensions.VK_EXT_conservative_rasterization+ Graphics.Vulkan.Extensions.VK_EXT_debug_marker+ Graphics.Vulkan.Extensions.VK_EXT_debug_report+ Graphics.Vulkan.Extensions.VK_EXT_debug_utils+ Graphics.Vulkan.Extensions.VK_EXT_depth_clip_enable+ Graphics.Vulkan.Extensions.VK_EXT_depth_range_unrestricted+ Graphics.Vulkan.Extensions.VK_EXT_descriptor_indexing+ Graphics.Vulkan.Extensions.VK_EXT_direct_mode_display+ Graphics.Vulkan.Extensions.VK_EXT_discard_rectangles+ Graphics.Vulkan.Extensions.VK_EXT_display_control+ Graphics.Vulkan.Extensions.VK_EXT_display_surface_counter+ Graphics.Vulkan.Extensions.VK_EXT_external_memory_dma_buf+ Graphics.Vulkan.Extensions.VK_EXT_external_memory_host+ Graphics.Vulkan.Extensions.VK_EXT_filter_cubic+ Graphics.Vulkan.Extensions.VK_EXT_fragment_density_map+ Graphics.Vulkan.Extensions.VK_EXT_fragment_shader_interlock+ Graphics.Vulkan.Extensions.VK_EXT_full_screen_exclusive+ Graphics.Vulkan.Extensions.VK_EXT_global_priority+ Graphics.Vulkan.Extensions.VK_EXT_hdr_metadata+ Graphics.Vulkan.Extensions.VK_EXT_headless_surface+ Graphics.Vulkan.Extensions.VK_EXT_host_query_reset+ Graphics.Vulkan.Extensions.VK_EXT_image_drm_format_modifier+ Graphics.Vulkan.Extensions.VK_EXT_index_type_uint8+ Graphics.Vulkan.Extensions.VK_EXT_inline_uniform_block+ Graphics.Vulkan.Extensions.VK_EXT_line_rasterization+ Graphics.Vulkan.Extensions.VK_EXT_memory_budget+ Graphics.Vulkan.Extensions.VK_EXT_memory_priority+ Graphics.Vulkan.Extensions.VK_EXT_metal_surface+ Graphics.Vulkan.Extensions.VK_EXT_pci_bus_info+ Graphics.Vulkan.Extensions.VK_EXT_pipeline_creation_feedback+ Graphics.Vulkan.Extensions.VK_EXT_post_depth_coverage+ Graphics.Vulkan.Extensions.VK_EXT_queue_family_foreign+ Graphics.Vulkan.Extensions.VK_EXT_sample_locations+ Graphics.Vulkan.Extensions.VK_EXT_sampler_filter_minmax+ Graphics.Vulkan.Extensions.VK_EXT_scalar_block_layout+ Graphics.Vulkan.Extensions.VK_EXT_separate_stencil_usage+ Graphics.Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation+ Graphics.Vulkan.Extensions.VK_EXT_shader_stencil_export+ Graphics.Vulkan.Extensions.VK_EXT_shader_subgroup_ballot+ Graphics.Vulkan.Extensions.VK_EXT_shader_subgroup_vote+ Graphics.Vulkan.Extensions.VK_EXT_shader_viewport_index_layer+ Graphics.Vulkan.Extensions.VK_EXT_subgroup_size_control+ Graphics.Vulkan.Extensions.VK_EXT_swapchain_colorspace+ Graphics.Vulkan.Extensions.VK_EXT_texel_buffer_alignment+ Graphics.Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr+ Graphics.Vulkan.Extensions.VK_EXT_tooling_info+ Graphics.Vulkan.Extensions.VK_EXT_transform_feedback+ Graphics.Vulkan.Extensions.VK_EXT_validation_cache+ Graphics.Vulkan.Extensions.VK_EXT_validation_features+ Graphics.Vulkan.Extensions.VK_EXT_validation_flags+ Graphics.Vulkan.Extensions.VK_EXT_vertex_attribute_divisor+ Graphics.Vulkan.Extensions.VK_EXT_ycbcr_image_arrays+ Graphics.Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface+ Graphics.Vulkan.Extensions.VK_GGP_frame_token+ Graphics.Vulkan.Extensions.VK_GGP_stream_descriptor_surface+ Graphics.Vulkan.Extensions.VK_GOOGLE_decorate_string+ Graphics.Vulkan.Extensions.VK_GOOGLE_display_timing+ Graphics.Vulkan.Extensions.VK_GOOGLE_hlsl_functionality1+ Graphics.Vulkan.Extensions.VK_GOOGLE_user_type+ Graphics.Vulkan.Extensions.VK_IMG_filter_cubic+ Graphics.Vulkan.Extensions.VK_IMG_format_pvrtc+ Graphics.Vulkan.Extensions.VK_INTEL_performance_query+ Graphics.Vulkan.Extensions.VK_INTEL_shader_integer_functions2+ Graphics.Vulkan.Extensions.VK_KHR_16bit_storage+ Graphics.Vulkan.Extensions.VK_KHR_8bit_storage+ Graphics.Vulkan.Extensions.VK_KHR_android_surface+ Graphics.Vulkan.Extensions.VK_KHR_bind_memory2+ Graphics.Vulkan.Extensions.VK_KHR_buffer_device_address+ Graphics.Vulkan.Extensions.VK_KHR_create_renderpass2+ Graphics.Vulkan.Extensions.VK_KHR_dedicated_allocation+ Graphics.Vulkan.Extensions.VK_KHR_depth_stencil_resolve+ Graphics.Vulkan.Extensions.VK_KHR_descriptor_update_template+ Graphics.Vulkan.Extensions.VK_KHR_device_group+ Graphics.Vulkan.Extensions.VK_KHR_device_group_creation+ Graphics.Vulkan.Extensions.VK_KHR_display+ Graphics.Vulkan.Extensions.VK_KHR_display_swapchain+ Graphics.Vulkan.Extensions.VK_KHR_draw_indirect_count+ Graphics.Vulkan.Extensions.VK_KHR_driver_properties+ Graphics.Vulkan.Extensions.VK_KHR_external_fence+ Graphics.Vulkan.Extensions.VK_KHR_external_fence_capabilities+ Graphics.Vulkan.Extensions.VK_KHR_external_fence_fd+ Graphics.Vulkan.Extensions.VK_KHR_external_fence_win32+ Graphics.Vulkan.Extensions.VK_KHR_external_memory+ Graphics.Vulkan.Extensions.VK_KHR_external_memory_capabilities+ Graphics.Vulkan.Extensions.VK_KHR_external_memory_fd+ Graphics.Vulkan.Extensions.VK_KHR_external_memory_win32+ Graphics.Vulkan.Extensions.VK_KHR_external_semaphore+ Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_capabilities+ Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_fd+ Graphics.Vulkan.Extensions.VK_KHR_external_semaphore_win32+ Graphics.Vulkan.Extensions.VK_KHR_get_display_properties2+ Graphics.Vulkan.Extensions.VK_KHR_get_memory_requirements2+ Graphics.Vulkan.Extensions.VK_KHR_get_physical_device_properties2+ Graphics.Vulkan.Extensions.VK_KHR_get_surface_capabilities2+ Graphics.Vulkan.Extensions.VK_KHR_image_format_list+ Graphics.Vulkan.Extensions.VK_KHR_imageless_framebuffer+ Graphics.Vulkan.Extensions.VK_KHR_incremental_present+ Graphics.Vulkan.Extensions.VK_KHR_maintenance1+ Graphics.Vulkan.Extensions.VK_KHR_maintenance2+ Graphics.Vulkan.Extensions.VK_KHR_maintenance3+ Graphics.Vulkan.Extensions.VK_KHR_multiview+ Graphics.Vulkan.Extensions.VK_KHR_performance_query+ Graphics.Vulkan.Extensions.VK_KHR_pipeline_executable_properties+ Graphics.Vulkan.Extensions.VK_KHR_push_descriptor+ Graphics.Vulkan.Extensions.VK_KHR_relaxed_block_layout+ Graphics.Vulkan.Extensions.VK_KHR_sampler_mirror_clamp_to_edge+ Graphics.Vulkan.Extensions.VK_KHR_sampler_ycbcr_conversion+ Graphics.Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts+ Graphics.Vulkan.Extensions.VK_KHR_shader_atomic_int64+ Graphics.Vulkan.Extensions.VK_KHR_shader_clock+ Graphics.Vulkan.Extensions.VK_KHR_shader_draw_parameters+ Graphics.Vulkan.Extensions.VK_KHR_shader_float16_int8+ Graphics.Vulkan.Extensions.VK_KHR_shader_float_controls+ Graphics.Vulkan.Extensions.VK_KHR_shader_non_semantic_info+ Graphics.Vulkan.Extensions.VK_KHR_shader_subgroup_extended_types+ Graphics.Vulkan.Extensions.VK_KHR_shared_presentable_image+ Graphics.Vulkan.Extensions.VK_KHR_spirv_1_4+ Graphics.Vulkan.Extensions.VK_KHR_storage_buffer_storage_class+ Graphics.Vulkan.Extensions.VK_KHR_surface+ Graphics.Vulkan.Extensions.VK_KHR_surface_protected_capabilities+ Graphics.Vulkan.Extensions.VK_KHR_swapchain+ Graphics.Vulkan.Extensions.VK_KHR_swapchain_mutable_format+ Graphics.Vulkan.Extensions.VK_KHR_timeline_semaphore+ Graphics.Vulkan.Extensions.VK_KHR_uniform_buffer_standard_layout+ Graphics.Vulkan.Extensions.VK_KHR_variable_pointers+ Graphics.Vulkan.Extensions.VK_KHR_vulkan_memory_model+ Graphics.Vulkan.Extensions.VK_KHR_wayland_surface+ Graphics.Vulkan.Extensions.VK_KHR_win32_keyed_mutex+ Graphics.Vulkan.Extensions.VK_KHR_win32_surface+ Graphics.Vulkan.Extensions.VK_KHR_xcb_surface+ Graphics.Vulkan.Extensions.VK_KHR_xlib_surface+ Graphics.Vulkan.Extensions.VK_MVK_ios_surface+ Graphics.Vulkan.Extensions.VK_MVK_macos_surface+ Graphics.Vulkan.Extensions.VK_NN_vi_surface+ Graphics.Vulkan.Extensions.VK_NV_clip_space_w_scaling+ Graphics.Vulkan.Extensions.VK_NV_compute_shader_derivatives+ Graphics.Vulkan.Extensions.VK_NV_cooperative_matrix+ Graphics.Vulkan.Extensions.VK_NV_corner_sampled_image+ Graphics.Vulkan.Extensions.VK_NV_coverage_reduction_mode+ Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation+ Graphics.Vulkan.Extensions.VK_NV_dedicated_allocation_image_aliasing+ Graphics.Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints+ Graphics.Vulkan.Extensions.VK_NV_external_memory+ Graphics.Vulkan.Extensions.VK_NV_external_memory_capabilities+ Graphics.Vulkan.Extensions.VK_NV_external_memory_win32+ Graphics.Vulkan.Extensions.VK_NV_fill_rectangle+ Graphics.Vulkan.Extensions.VK_NV_fragment_coverage_to_color+ Graphics.Vulkan.Extensions.VK_NV_fragment_shader_barycentric+ Graphics.Vulkan.Extensions.VK_NV_framebuffer_mixed_samples+ Graphics.Vulkan.Extensions.VK_NV_geometry_shader_passthrough+ Graphics.Vulkan.Extensions.VK_NV_glsl_shader+ Graphics.Vulkan.Extensions.VK_NV_mesh_shader+ Graphics.Vulkan.Extensions.VK_NV_ray_tracing+ Graphics.Vulkan.Extensions.VK_NV_representative_fragment_test+ Graphics.Vulkan.Extensions.VK_NV_sample_mask_override_coverage+ Graphics.Vulkan.Extensions.VK_NV_scissor_exclusive+ Graphics.Vulkan.Extensions.VK_NV_shader_image_footprint+ Graphics.Vulkan.Extensions.VK_NV_shader_sm_builtins+ Graphics.Vulkan.Extensions.VK_NV_shader_subgroup_partitioned+ Graphics.Vulkan.Extensions.VK_NV_shading_rate_image+ Graphics.Vulkan.Extensions.VK_NV_viewport_array2+ Graphics.Vulkan.Extensions.VK_NV_viewport_swizzle+ Graphics.Vulkan.Extensions.VK_NV_win32_keyed_mutex+ Graphics.Vulkan.Extensions.VK_NVX_device_generated_commands+ Graphics.Vulkan.Extensions.VK_NVX_image_view_handle+ Graphics.Vulkan.Extensions.VK_NVX_multiview_per_view_attributes+ Graphics.Vulkan.Extensions.VK_QCOM_render_pass_transform+ Graphics.Vulkan.Extensions.WSITypes+ Graphics.Vulkan.NamedType+ Graphics.Vulkan.Version+ Graphics.Vulkan.Zero+ other-modules:+ Paths_vulkan+ default-language: Haskell2010 - if os(windows)- extra-libraries: vulkan-1+executable info+ main-is: Main.hs+ other-modules:+ Paths_vulkan+ hs-source-dirs:+ examples/info+ default-extensions: AllowAmbiguousTypes CPP DataKinds DefaultSignatures DeriveAnyClass DerivingStrategies DuplicateRecordFields FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs LambdaCase MagicHash NoMonomorphismRestriction OverloadedStrings PartialTypeSignatures PatternSynonyms PolyKinds QuantifiedConstraints RankNTypes RecordWildCards RoleAnnotations ScopedTypeVariables StandaloneDeriving Strict TypeApplications TypeFamilyDependencies TypeOperators TypeSynonymInstances UndecidableInstances ViewPatterns+ if flag(build-examples)+ build-depends:+ base <4.14+ , pretty-simple+ , vulkan+ buildable: True else- extra-libraries: vulkan+ buildable: False+ default-language: Haskell2010 -source-repository head- type: git- location: https://github.com/expipiplus1/vulkan+executable sdl-triangle+ main-is: Main.hs+ other-modules:+ Paths_vulkan+ hs-source-dirs:+ examples/sdl-triangle+ default-extensions: AllowAmbiguousTypes CPP DataKinds DefaultSignatures DeriveAnyClass DerivingStrategies DuplicateRecordFields FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs LambdaCase MagicHash NoMonomorphismRestriction OverloadedStrings PartialTypeSignatures PatternSynonyms PolyKinds QuantifiedConstraints RankNTypes RecordWildCards RoleAnnotations ScopedTypeVariables StandaloneDeriving Strict TypeApplications TypeFamilyDependencies TypeOperators TypeSynonymInstances UndecidableInstances ViewPatterns+ c-sources:+ examples/sdl-triangle/DebugCallback.c+ if flag(build-examples)+ build-depends:+ base <4.14+ , bytestring+ , extra+ , managed+ , pretty-show+ , say+ , sdl2+ , text+ , transformers+ , vector+ , vulkan+ buildable: True+ else+ buildable: False+ default-language: Haskell2010